Download Latest Version snarl 5.0.0.zip (13.3 MB)
Email in envelope

Get an email when there's a new version of Snarl

Home / Snarl / Current Beta
Name Modified Size InfoDownloads / Week
Parent folder
readme.txt 2015-01-22 111.1 kB
Snarl-3.1-beta-5-setup.exe 2014-02-15 9.9 MB
Snarl-3.1-beta-4-setup.exe 2014-02-14 9.9 MB
Snarl-3.1-beta-3a-setup.exe 2014-01-20 9.9 MB
Snarl-3.1-beta-2-setup.exe 2014-01-10 9.8 MB
Snarl-3.1-beta-1-setup.exe 2013-05-25 8.5 MB
Snarl-3.0-beta-2-setup.exe 2012-08-30 8.3 MB
Snarl-3.0-beta-1-setup.exe 2012-07-27 8.3 MB
Snarl-2.6-alpha-4-setup.exe 2012-04-12 8.3 MB
Snarl-2.6-alpha-3-setup.exe 2012-03-05 8.6 MB
Snarl-2.6-alpha-2-setup.exe 2012-02-21 8.6 MB
Snarl-2.6-alpha-1-setup.exe 2012-02-10 8.6 MB
Snarl-2.5.1-beta-2-setup.exe 2012-01-25 8.7 MB
Snarl-2.5.1-beta-1-setup.exe 2012-01-04 8.4 MB
Snarl-2.5-beta3-setup.exe 2011-11-25 8.3 MB
Snarl-2.5-beta2-setup.exe 2011-11-11 8.3 MB
Snarl-2.5-beta1-setup.exe 2011-08-26 8.2 MB
Snarl-2.4.1b3-setup.exe 2011-05-26 11.0 MB
Snarl-2.4.1b2-setup.exe 2011-05-07 11.0 MB
Snarl-2.4.1b1-setup.exe 2011-05-05 11.0 MB
Snarl-2.4rc1-setup.exe 2011-03-26 10.5 MB
Snarl-2.4b4-setup.exe 2011-02-13 10.1 MB
Snarl-2.4b3-setup.exe 2011-01-30 10.0 MB
Snarl-2.4b2-setup.exe 2010-12-08 9.3 MB
Snarl-2.4b1-setup.exe 2010-11-12 9.3 MB
Totals: 25 Items   222.8 MB 0
	Refrenced Libraries
	-------------------

	icon_resource.dll
	libmgraphics2d4.dll
	libmmenu20.dll
	snarl_extensions.tlb
	style_engine.tlb
	melon.tlb
	r4base.tlb
	misc2_resource.dll
	msscript.ocx
	*msxml3.dll
	*olelib.tlb
	storage_kit.dll
	web_resource.dll

	* Not used by Snarl, possibly used by other addons


	To Do
	-----

	- Had to stop old menu from working - needs recoding to use BMenu

	- Take notice of new "ignore_no_log" global setting.

	- Add "Make non-interactive" to notification menu. 				[DONE]

	- New "scheduled" argument for [Notify]						[DONE]

	- Application registration updates

	- replace/update/merge-uid							[DONE]

	- notificationroster.close, setattribute

	- notificationroster.hide / wasmissed

	- notificationroster.addtohistory / closemultiple

	- tnotification.replay / settitle / settext / set...


	To Note
	-------

	From V46 onwards, merged notifications do not get a CRLF inserted between the old and new text.

	New style flag S_STYLE_NO_RULE_PREFIX allows for cosmetic changes to how rules which use the style
	are displayed (specifically the "Send to" or "Display with" prefix is not added).

	Style engines can now supply style names using "<Name>'='<Action>" in style_info->Name.  If <Action>
	is supplied, this is used in any rules which use the style as its action.  This allows for more
	descriptive rules while not breaking any backwards compatability.  A style's action is displayed in
	the style's information page, but only if one is supplied.

	Extensions can now support BHandler if they want to act as destinations for "Tell", however this is
	all under heavy development.

	New "source" argument for [Notify] can be used to describe the application sending the notification



	Milestones
	----------

	M01 - Remove dependency on Prefs Kit			High		Completed	22 Dec 2014
	M02 - Implement web-based admin console			High		Completed
	M03 - Remove dependency on storage kit			Medium		Not started
	M04 - Remove dependency on openmenu.library		Medium		Completed	 1 Dec 2014
	M05 - Tray icon and any settings request opens console	High		Completed	 1 Dec 2014
	M06 - Remove dependency on nitro.library		Medium		Completed	 4 Jan 2015
	M07 - Implement new transport model			High		Completed	17 Nov 2014
	M08 - Implement new forwarding model			High		Completed	18 Nov 2014
	M09 - Properly support GNTP				Medium		On track
	M10 - Define SNP 4.0					Low		On track
	M11 - Allow sending of remote quit signals		Low		Not started
	M12 - Allow sending of remote about requests		Low		Not started
	M13 - Define rule model					High		Completed	 8 Nov 2014
	M14 - Implement display/redirect-based rules		High		Completed	12 Nov 2014
	M15 - Implement content augmentation rules		Medium		On track
	M16 - Replicate basic event settings in admin console	High		Completed	 8 Nov 2014
	M17 - Replicate content injection in admin console	High		Not started
	M18 - Replicate extension functionality in console	High		Completed	23 Nov 2014
	M19 - Replicate style engine functionality in console	High		Completed	23 Nov 2014
	M20 - Replicate display/redirect functionality		High		Completed	22 Nov 2014
	M21 - Implement new subscription model			High		Completed	22 Nov 2014
	M22 - Replicate subscriber functionality		High		Not started
	M23 - Rework Prowl redirect to be web-based		High		Completed	18 Dec 2014
	M24 - Rework NMA redirect to be web-based		Medium		Not started
	M25 - Rework Toasty redirect to be web-based		Low		Not started
	M26 - Rework Prowl redirect to support schemes		High		Completed	18 Dec 2014
	M27 - Rework NMA redirect to support schemes		Medium		Not started
	M28 - Rework Toasty redirect to support schemes		Low		Not started
	M29 - Rework Clock+ extension to support crontab	High		On track
	M30 - Rework Clock+ extension to be web based		High		Completed	23 Dec 2014
	M31 - Replace T_NOTIFICATION_INFO struct with object	High		Completed	 5 Jan 2015



	Snarl Change Log
	----------------

	- Released as Beta 3.  (46.24)

	- Added content matching capability to rules.  (46.24)

	- Behind-the-scenes rule configuration changed.  Each rule has its own configuration file
	  in etc/rules/ now.  (46.24)

	- Rule destination selection page layout improved slightly.  (46.24)

	- Default style now has a setting to enable/disable shading (also toggles etched and
	  plain separator).  (46.24)

	- RunFile style settings now has a combo for the "type" parameter. (46.24)

	- Schemes weren't refreshed when selecting a new rule destination.  Now fixed.  (46.24)

	- [Notify] command now supports "nocachedicon".  If this is set to "1" and a URL-based
	  icon is supplied, Snarl will always download the icon, irrespective of whether it's
	  in the cache or not.  (46.23)

	- Notification Forward menu now only lists those Forwards which are connected.  (46.23)

	- Split Applications web console page into applications and computers.  (46.23)

	- Quite a change to the way forwarded notifications are handled.  As of R4.0, Snarl
	  ignores any registration commands included in an SNP 3.0 forward and instead registers
	  the sending computer as an application.  Subsequent forwards use this same registration.
	  (46.23)

	- Added Missed page to web console.  (46.23)

	- Do Not Disturb mode is now honoured.  As before, notifications with a priority of 1 (High)
	  or higher will still be displayed.  (46.23)

	- Re-implemented history and added History page to web console.  (46.23)

	- Display preview image is now saved to APPDATA rather than PROGRAMFILES as the latter
	  doesn't work reliably under Windows 7.  (46.23)

	- Can now snooze notifications from the notification system menu.  Notifications are
	  snoozed for 5 minutes and are then redisplayed.  Snoozed notifications are given a new
	  flag (SNARL_NOTIFICATION_WAS_SNOOZED) which causes a new HUD icon to be displayed.  The
	  sending application is sent a SNARL_NOTIFY_SNOOZED when the notification is snoozed.
	  (46.21)

	- Notification HUD now displays the sender IP address for forwarded notifications.  (46.21)

	- Forwarding via SNP 3.0 no longer sends an application registration as this causes more
	  complexity when handling the incoming notification.  Instead, Grampf will catch it and
	  display it as an unregistered remote notification.  (46.21)

	- Global setting "show_timestamp" is now "1" by default. (46.21)

	- Snarl now registers a second application ("Grampf") which is used to handle unsolicited
	  notifications.  That is, those from applications which have not registered.  (46.21)

	- Improved icon layout in Applications page, per-application page, and per-extension page.
	  (46.21)

	- Forwarders wouldn't auto-reconnect after being connected, then being disconnected.  Now
	  fixed.  (46.21)

	- Released as R4.0 Beta 2.  (46.20)

	- Unnamed subscriptions couldn't be selected in the Network page.  Now fixed.  (46.20)

	- Add subscription link was broken.  Now fixed.  (46.20)

	- Added configuration setting "allow_admin_server_on_all".  If "1" will bind the HTTP admin
	  server to all local interfaces; otherwise just to localhost.  (46.20)

	- Major milestone: dependence on T_NOTIFICATION_INFO struct now removed.  (46.20)

	- If a notification has a priority of 2 or higher and no icon is supplied, the new !system-
	  urgent icon is used.  (46.20)

	- Default display now supports different colours for each priority.  (46.20)

	- Major milestone: dependence on Nitro and exec.library now removed.  Early startup now checks
	  for the remaining required libraries, resources and kits in a more robust way.  (46.20)

	- Startup-sequence processing removed.  (46.20)

	- When a remote socket closes any applications registered by it are automatically unregistered
	  if their keep-alive flag is not set.  (46.20)

	- T_SNARL_APP structure now made private and enclosed within TApp.  Lots of other application
	  registration functions improved and/or tidied.  (46.20)

	- Drag/drop facility removed from the About Snarl window.  (46.20)

	- Notification forwarding now implemented.  (46.20)

	- Major milestone: redirection now relies solely on the new TNotification2 object introduced
	  in Beta 1.  (46.20)

	- Could attempt to edit default rule via web admin.  Now blocked.  (46.20)

	- Default style if no config is now the internal (i.e. "Default") style.  (46.20)

	- In some cases, Snarl would think it had an admin file when it didn't; now fixed.  (46.20)

	- Redirect submenu would sometimes show blank scheme entries.  Now fixed.  (46.20)

	- Redirection was broken in Beta 1.  Now fixed.  (46.20)

	- Released as R4.0 Beta 1.  (46.19)

	- Notifications with a priority > 1 are now forced sticky.  (46.19)

	- Created new TNotification2 object which will replace T_NOTIFICATION_INFO.  (46.19)

	- Styles can now supply a friendly name in style_info->Name by setting it to "Name=
	  FriendlyName".  This allows styles to retain the same internal name but to supply a
	  more meaningful one which is display in the rule action part.  (46.19)

	- Styles can now supply a new flag S_STYLE_NO_RULE_PREFIX which just means, instead
	  of prefixing a rule with "Display with" or "Send to", Snarl simply displays the
	  scheme name.  This is purely cosmetic but improves the readability of certain styles
	  for example "Send to {Run File :: Blink Red}" becomes simply "{Blink Red}".  (46.19)

	- Milestone achieved.  No longer requires openmenulite.library.  (46.15)

	- Milestone achieved.  Tray icon/Settings... now launches web admin interface.  (46.15)

	- Droid style now works with fonts which don't have a regular typeface.

	- Now R4.0.  (46.2)


	- Released as 3.1 Beta 3.  (45.25)

	- Minor restructuring of the Event prefs sub pages.  (45.23)

	- Fixed copyright.  (45.22)

	- Added "FORWARD" identifier to SNP 3.0 header and incoming FORWARD packets are now
	  given the SN_NF_FORWARD flag.  (45.21)

	- Fixed two bugs which were causing issues with notification forwarding when using
	  SNP 3.0.  (45.19)

	- Released as 3.1 Beta 2.  (45.18)

	- Registered extensions are now included in the Snarl Apps menu.  Selecting an entry
	  from the menu will cause the extension's settings panel (if it has one) to be
	  displayed.  (45.17)

	- Notify command now accepts "event" arument in place of "class".  (45.17)

	- Added "events-add", "events-del" and "events-clear" commands.  (45.17)

	- Snarl now always writes to snarl_log.txt; the setting simply indicates whether that's
	  all it does.  (45.17)

	- Display preview image is now created in %TEMP%\snarl.style.<name>.<scheme>.prvw.  (45.16)

	- Application Roster now provides a global DefaultAppIcon() and BannedAppIcon() rather than
	  loading them each time.  (45.15)

	- Several icons are now passed as objects to Prefs Kit rather than by filename.  (45.14)

	- Notification actions button moved to bottom right corner.  (45.12)

	- Notification callback button text changed.  (45.11)

	- Action menu icons are now cached at startup.  (45.11)

	- Notification HUD layout cosmetic improvements.  (45.9)

	- Cosmetic tweaks to some HUD content.  (45.3)

	- Now using menu.library 2.0 to create the tray menu.  This means we can have icons
	  in menus again and, finally, have proper Missed Notifications and Snarl Apps sub-
	  menus.  (45.2)

	- Bumped to V45.  (45.1)

	- Now Release 3.1.  (44.93)

	- Added non-UI "feedback_on_mouseover" setting.  If set to "1" will slightly
	  darken non-click-through notifications while the mouse pointer is over
	  them.  (44.92)

	- Updated copyright information.  (44.89)

	- Notifications->Layout->Drop Shadow slider now correctly configures itself
	  when the panel is opened.  (44.89)

	- Fixed bug which would crash Snarl if a drop shadow size of zero was selected.
	  (44.89)

	- Released as 3.0.1.  (44.88)

	- Manually revised version to show included missing libmmenu2.0 in installer.  (44.88)

	- Released as 3.0.  (44.87)

	- Moved Presence Overrides, Content Customisation and Redaction settings into
	  sub-panel which can be accessed from the Event->[Advanced] page.  (44.82)

	- Now sends a SNARL_CALLBACK_CLOSED signal when notifications are closed
	  using either the "Close All" or "Close All from <App>" menu options.  (44.79)

	- Revised default style.  (44.78)


	- Bug identified in uLoadICO() which possibly (but not definitively) causes
	  a crash when loading a 128x128x32 icon.  Code has been put in place to
	  abort the load if either the width or height of the retrieved icon is
	  greater than 127 pixels.  'no_icon.png' is used instead.  (44.67)

	- Revised per-event redirection back to being on a per-event basis.  (44.58)

	- Redirects no longer appear in [Gateway] page.  (44.58)

	- Released as 3.0 Beta 2.  (44.56)

	- Fixed bug which was causing the wrong NOTIFY signal to be sent back via
	  the Win32 transport.  (44.56)

	- Added full API request functionality to the JSON handler and updated
	  Snarl.js accordingly.  To access the new functionality, use the following
	  syntax: {"action":2,"payload":<<REQ>>}, where <<REQ>> is the unabridged
	  Snarl API request.  To use the new functionality from the .js file, use
	  Snarl.dorequest(<<REQ>>).  (44.55)

	- Fixed icon parsing issue with GNTP applications which use a resource
	  identifier for their application icon.  (44.55)

	- Renamed and released as R3.0 Beta 1.  (44.54)

	- Class list in the Class Configuration panel wasn't updating when classes
	  for the selected application were changed.  Now fixed.  (44.54)

	- New panel icons.  (44.53)

	- Reworked Prefs panel content.  (44.53)

	- Reworked Class Configuration panel sub tab layout.  (44.53)

	- Released as 2.6 Alpha 4.  (44.52)

	- Reinstated sending a SNARL_NOTIFY_INVOKED even when no dynamic callback
	  provided to ensure backward compatability is maintained.  (44.52)

	- Can now provide "log=0" in arguments passed to <AddClass> to prevent any
	  notifications generated using the class from being logged.  (44.51)

	- "Use Same Settings For All Classes?" toggle button wasn't setting itself
	  correctly when the classes panel opened.  Now fixed.  (44.51)

	- GNTP handler now supports two custom headers: "X-Response-Redacted: <bool>"
	  which, if True, excludes details about the machine and software versions in
	  use from the response; "X-Notification-Duration: <secs>" which indicates the
	  number of seconds the notification should be displayed for.  Credit to
	  Viscount for suggesting these.  (44.51)

	- SNP2 response handler now returns human readable status code in capitals.
	  Credit to Viscount for identifying the bug.  (44.51)

	- App-Cache folder moved under %APPDATA% (thanks to Dithersky for suggesting
	  this).  (44.49)

	- Fixed crash that would happen under certain circumstances when processing a
	  remotely downloaded image file.  (44.49)

	- Can now stop failed extensions using the UI.  (44.45)

	- Addressed a number of serious memory leaks to do with passing icons to the
	  Prefs Kit by filename rather than by an exising object.  Credit to Pako
	  for taking the time to debug this.  (44.45)

	- Full-screen detection wasn't excluding minimised application windows which
	  could lead to a false-positive detection under certain circumstances - now
	  fixed.  (44.43)

	- Removing items from the Notification Centre wasn't actually removing them from
	  the missed list - now fixed.  (44.43)

	- Released as 2.6 Alpha 3.  (44.33)

	- "Redirectors" are now known simply as "Redirects".  (44.33)

	- Correctly update all lists and combos when the available styles change.  (44.33)

	- Changed command-line arg "-r" (request) to "-p|--parse" (parse).  (44.33)

	- Fixed bug which was preventing redirects from being permanently removed in some
	  situations.  Credit to Pako for spotting this.  (44.33)

	- Re-enabled support for legacy SNARL_LOAD_EXTENSION and SNARL_UNLOAD_EXTENSION
	  commands as snarlm.exe still issues these.  (44.33)

	- Improved support for legacy SNARL_LOAD_STYLE_ENGINE and SNARL_UNLOAD_STYLE_ENGINE
	  commands as snarlm.exe still issues these.  (44.33)

	- Now correctly installs zipped runnable styles (.RSZ files) if they're passed as
	  part of a command line.  (44.33)

	- Added "mark as read" indicator to NC items.  Clicking the indicator will remove
	  the item from the NC without replaying it.  (44.31)

	- Can now configure extensions even if they're in a FAILED state.  (44.31)

	- Changed lots of system notifications to use the Welcome Message / Others class.
	  (44.31)

	- Growl UDP registrations now use the remote host IP address rather than the
	  host name.  (44.31)

	- Added extra debug output to Growl UDP packet parsing.  (44.31)

	- Notification Centre: can now close it by clicking the "X" button in the top
	  right corner.  (44.29)

	- Notification Centre: double-clicking a header expands/collapses the items
	  within it; double-clicking an item replays it and removes it from the NC.
	  (44.29)

	- Notification Centre: clicking the "X" button in a header removes all the items
	  within the header.  (44.29)

	- Notification Centre: automatically closes when the last item is removed.  (44.29)

	- "Quit Snarl" menu item is now at the bottom of the menu.  (44.29)

	- Class configuration panel can now be displayed on its own (that is, without
	  the main panel being around).  This is used by the "Notification Settings..."
	  option in the notification menu.  (44.29)

	- Can now configure Notification Centre colours.  (44.29)

	- Released as 2.6 Alpha 2.  (44.28)

	- Added Notification Centre.  (44.27)

	- Shift-clicking a notification closes all notifications; Ctrl+Shift-clicking
	  closes only those notifications from the same app.  (44.26)

	- The label of the default callback button can now be customised using "callback-
	  label=foo" in the {notify} request.  (44.26)

	- New notification model.  Actions gadget is larger and appears in the top left
	  corner.  If the notification has a callback, this is now displayed as a button
	  in the bottom right of the notification.  Clicking the notification body simply
	  closes (SNARL_EVENT_CLOSED) the notification.  (44.26)

	- Non-interactive notifications now fade to 25% opacity and fade faster.  (44.25)

	- Added new global "Ignore mouse and other inputs" option.  (44.25)

	- Style and Extension configuration panels are no longer displayed modal.  (44.25)

	- Applications can no longer be automatically banned.  Instead, uCheckDOS()
	  now counts up how many notifications the application currently has visible
	  and drops further notifications while this number is ten or more.  (44.25)

	- Fixed a number of bugs to do with subscriptions and forwarding via SNP.  (44.25)

	- Released as 2.6 Alpha 1.  (44.24)

	- New "Block further notifications" option in notificaton menu.  If selected,
	  disables the class which generated the notification.  (44.24)

	- Added per-class setting which prevents notifications from being programmatically
	  hidden (closed).  (44.24)

	- Added per-class notification text redaction.  (44.24)

	- Styles can now provide customised Close and Actions gadgets.  These should be
	  named "close.png" and "actions.png" respectively and should be located in a
	  "gadgets" sub folder within the style's own folder.  (44.24)

	- SNP Subscriptions implemented.  (44.23)

	- When an extension is enabled (loaded), Snarl now checks to see if its release
	  number has changed and displays a notification if it has.  (44.21)

	- Added per-class background tint option which is sent to the destination style
	  as "background-tint=<rgba32>".  Note that styles must support this value for
	  it to work.  (44.14)

	- Can now load, unload and configure extensions using the command line.  (44.10)

	- Bumped to V44.  (44.1)

	- Notification scaling re-implemented (was removed a while back).  (43.80)

	- Completely revised [Redirect] page in class configuration panel.  (43.80)

	- New Good and Bad icons.  (43.80)

	- Minor cosmetic changes to [Style Engines] tab content.   (43.80)

	- Removed [AddOns]->[Displays] tab.  (43.80)

	- Moved style engines configuration panel into new [AddOns]->[Style Engines]
	  tab  (43.80)

	- Draws gear wheel emblem on notification if the default callback is set.
	  (43.80)

	- "Quit" button on [Applications] page now works for registrations created by
	  extensions.  (43.80)

	- Can now display an extension's configuration settings without the need for
	  Snarl's GUI to be open.  (43.80)

	- Can now launch an extension's configuration settings from the [Apps] page
	  by selecting it as per a regular application.  (43.80)

	- Renamed "Options..." to "Actions..." in [Missed] and [Displayed] subtabs.
	  (43.80)

	- Reworked Class Configuration panel page content to make it more logical.
	  Fundamentally, the [Behaviour] and [Advanced] pages have had their content
	  switched and some more commonly used options have been moved into the
	  [Appearance] page.  (43.80)

	- Improved way command-line arguments are processed.  (43.80)

	- Released as 2.5.1 Beta 2.  (43.73)

	- Added "Options..." button to [Missed] and [Displayed] subtabs.  (43.73)

	- Fixed bug which sometimes prevented the "Copy to Clipboard" menu item from
	  working.  (43.73)

	- Added option on [General] page to enable/disable the close notification key
	  combo.  (43.73)

	- Minor cosmetic changes to scheme preview notification and Snarl Apps pop-up
	  window.  (43.72)

	- Added an undocumented S_STYLE_REDIRECT_TO_SCREEN (0x1000) flag which a
	  redirect style can use to indicate it generates on-screen content.  Snarl
	  doesn't generate a "A notification using <style> was created" notification
	  for styles which implement this value.  (43.72)

	- Minor cosmetic changes to the [Presence] sub-pages.  (43.72)

	- Removed non-functional "Install Extension..." button from the [Extensions]
	  page.  (43.72)

	- Renamed "Snarl Daemons" menu entry to "Snarl Specific Apps".  (43.72)

	- Added undocumented "away" and "back" commands to SOS.  These set and clear a
	  new SN_PF_AWAY_SOS flag which is used purely for testing the user presence
	  code.  (43.71)

	- Holding down 'E' while starting Snarl prevents all extensions from starting;
	  'D' enables debug mode and 'S' prevents startup-sequence files from being
	  launched.  Holding down either CTRL key no longer enables debug mode.  (43.71)

	- Snarl now launches links from USERDIR/startup-sequence and ALLUSERDIR/startup-
	  sequence on startup.  These are SSL2 links which follow are standard INI file
	  format.  See the end of this document for more information.  Thanks to Arioch
	  for suggesting this.  (43.71)

	- Reworded inaccurate text on [Extensions] page.  (43.71)

	- Added "keep-alive" to {register} command.  Default is zero.  Setting to "1"
	  ensures the application is not removed during garbage collection if the creator
	  has disappeared (useful for scripts and command prompt-launched stuff).  (43.71)

	- Snarl now runs a garbage collection every 10 seconds looking for applications
	  whose process is no longer running.  Any orphans are then gracefully
	  unregistered.  (43.71)

	- Now looks in user folder for style engine links *after* loading links from
	  INSTDIR\styles.  (43.71)

	- Released as 2.5.1 Beta 1.  (43.65)

	- New "sensitivity" argument added to {notify} command.  Defined values are as
	  follows: 0 - Normal; 16 - Personal; 32 - Private; 48 - Confidential.  Note
	  that Snarl simply passes the value on.  (43.62)

	- Removed the "include_host_name_when_forwarding" option.  Styles now need to
	  include the computer name themselves.  (43.62)

	- Can now send "recipient=/S" in {notify} request.  Snarl will compare the value
	  against the logged-on user's username and will discard any which don't match.
	  (43.61)

	- Double-clicking the tray icon when there are missed notifications now opens
	  the missed notifications panel.  (43.60)

	- Fixed bug which caused all notification classes to default to "log always".  (43.60)

	- Extensions and style engines are now stored (and loaded from) INSTDIR/extensions/
	  and INSTDIR/styles/ respectively.  (43.59)

	- User-specific data folders are now created during start-up.  (43.58)

	- Applications which register via TCP/IP on the local computer no longer get
	  treated as remote applications.  Specifically: there's no "... on <ip>" text
	  and the registration notification say "Application registered".  (43.57)

	- Fixed bug which broke SNP2.  Credit to the G+ Notifier guys for spotting this.
	  (43.55)

	- Added new "BlockUnknownApps" admin setting.  If this is enabled ("1"), only
	  applications which have existing .class files will be allowed to register with
	  Snarl.  (43.53)

	- Fixed a bug introduced in R2.4.2 which meant that if no notification title or
	  text is supplied for {notify} you'll always receive an ERROR_ARG_MISSING, even
	  if the notification class has a default title or text.  Credit to Pako for
	  spotting this.  (43.53)

	- Changed the way missed notifications are counted.  (43.52)

	- Extension icon loader now uses same code as notification icon loader.  (43.52)

	- Better parsing of icon paths so filenames which contain commas should no longer
	  be misunderstood as resource indicies.  Credit to Toke for this.  (43.52)

	- System info notification now displays local IP addresses and screen resolution.
	  (43.52)

	- Fixed bug which caused the class default sound to play even if a notification
	  provided its own specific sound.  Credit to Pako for spotting this.  (43.52)

	- Released as Snarl 2.5.  (43.51)

	- Released as Snarl 2.5 Beta 3.  (43.51)

	- Released as Snarl 2.5 Beta 2.  (43.50)

	- Fixed bug to do with class default timeout.  Credit to Pako for this.  (43.50)

	- Fixed bug which caused notification_info->title to be empty if S_STYLE_IS_
	  WINDOWLESS is specified but neither of S_STYLE_V42_CONTENT nor S_STYLE_WANT_
	  APP_NAME are and "Include host name when forwarding" is disabled.  Credit to
	  Pako for spotting this.  (43.35)

	- Style Engines can now support their own configuration interfaces.  To do this,
	  the style engine should respond to a call to IStyleEngine.StyleAt() where the
	  index provided is zero by setting style_info->flags to S_STYLE_IS_CONFIGURABLE.
	  Snarl will then call IStyleEngine.GetConfigWindow() with StyleName set to
	  ".global".  At this time, the engine should provide its own UI and return zero.
	  Returning a non-zero value is not permitted and will break in future releases
	  of Snarl. (43.34)

	- "Remove Selected" in the missed/history lists now correctly removes the
	  selected items.  (43.34)

	- External apps can now query Snarl's state using the new snGetSystemFlags()
	  API.  This currently returns the debug state, user away state and user busy
	  state in the new SNARL_SYSTEM_FLAGS enum.  (43.33)

	- Snarl now notifies on style drag-drop.  (43.32)

	- Notification details menu now includes the source computer in the application
	  name.  (43.32)

	- Improvements to forwarding code.  (43.32)

	- "Log to history" is now a 3-state control with the ability for the app to
	  suggest what should be done if the user allows it.  The app can do this by
	  supplying "log=0" within the <notify> command to prevent the notification
	  from being logged, otherwise it gets logged.  (43.31)

	- Snarl no longer creates an empty file when an invalid icon path is
	  provided.  (43.31)

	- Notifications can now be replayed even while DnD mode is enabled.  (43.31)

	- Changed "Missed Notifications..." menu item to a menu parent which will
	  open a submenu of (at most) the last 10 missed notifications.  Selecting
	  an entry from the menu will reply the notification.  (43.31)

	- Added GNTP flash policy support.  (43.30)

	- Added "Restory Factory Settings" button to [Advanced] page (suggested
	  by Shawn) which currently renames "config41.snarl", "styledefaults.conf"
	  and anything with the extension of ".class" to "xxx.backup", launches
	  the new DelayLoad app, and quits Snarl.  (43.29)

	- Added priority background, title and text colours to default style
	  settings.  (43.21)

	- Pass-Thru implemented.  This only applies when the user is Active (that
	  is, when they're neither Away nor Busy).  (43.21)

	- Moved [Pass-Thru] from [Display] into [Presence->Active].  (43.21)

	- Command-line parser now supports .runz and .webforward files which are
	  copied/extracted accordingly.  (43.20)

	- Can now drag-and-drop .runz (zipped runnable styles) and .webforward
	  files onto the Preferences panel.  Snarl will copy/extract accordingly
	  and re-load styles.  (43.20)

	- Added "never_ban" setting to the per-application config - if this
	  is set to 1 the application will never be banned by Snarl.  (43.20)

	- Improved way Missed and History lists are managed.  (43.20)

	- History and Missed lists now limited to 1,000 items.  (43.19)

	- NOTIFY will now register and the application if "app-sig" and "app-
	  title" are both supplied.  It will also add the required class if
	  "class-id" and "class-name" are supplied.  (43.18)

	- Listen for JSON and SNP/GNTP now enabled by default.  (43.15)

	- Now listens on Port 5233 as well.  (43.15)

	- Moved Missed Notifications into [History] page under new "Missed"
	  tab.  Suggested by Shawn.  (43.14)

	- Added support for scripted callbacks.  (43.8)

	- Extensions can now provide resource-based icons in extension_info->
	  iconpath.  For this to work, the path must contain the path to the
	  resource file, a comma, and the index of the icon to use - e.g.
	  "shell32.dll,34".  The path need not be absolute, so long as Windows
	  can figure it out.  (43.6)

	- Only !icons are now sent verbatim; cached icons are sent phat-encoded
	  just like other filesystem ones.  (43.2)

	- Content is now crafted by the subcriber roster before being passed to
	  the individual subscribers.  (43.2)

	- Behind-the-scenes forwarding improved significantly.  (43.2)

	- Can now selectively enable and disable individual forwarders and
	  subscribers via the [Network] page.  (43.2)

	- "Has action" emblem is now drawn if the notification has a static click
	  callback.  (43.2)

	- Style defaults "width" is now a slider control.  (43.2)

	- Released as R2.5 Beta 1.  (43.1)

	- Bumped to V43.  (43.1)

	-  (42.176)

	- Remote applications are now determined at registration time only and
	  an application is only considered remote if it's IP address is not one
	  assigned to the local computer.  (42.171)

	- SNP 2.0 notifications now include SNP_VERSION in the header.  (42.171)

	- Priority and Sticky emblems are now drawn only on mouseover.  Remote
	  app emblem is no longer drawn.  (42.171)

	- Notifications created by password-protected applications have the
	  application's name in the HUD drawn in a different colour.  (42.171)

	- Fixed bug whereby sounds provided in a <notify> request were not being
	  played.  Thanks to Danny Tuppeny for spotting this.  (42.171)

	- SNP 2.0 requests are now treated as V42 calls.  (42.171)

	- If a notification has a UID, the SNP 2.0 response now contains this
	  rather than the notification's token.  (42.171)

	- Added simplistic multi-monitor support such that the user can now select
	  which screen notifications are displayed on.  (42.169)

	- Cosmetic enhancements to Missed Notifications panel.  (42.168)

	- Minor cosmetic enhancements made to [History] list content.  (42.166)

	- Downloaded icons are now squared-up when they're saved to avoid issues
	  when displaying them in the [History] list.  (42.166)

	- Notification content is pre-processed to avoid confusing the Prefs Kit
	  list box.  (42.166)

	- Tray icon now dims when Snarl is stopped.  (42.165)

	- Removed the Snarl Apps tray submenu and replaced it with a "Snarl
	  Daemons" item.  Selecting this causes a small selector window to open
	  which contains all the apps that have registered as being Snarl-
	  enabled (pre-V43) or Snarl Daemons (V43 on).  Clicking anywhere other
	  than on an item in the window causes the window to disappear; clicking
	  on an item in the window will cause Snarl to run the selected app's
	  configuration tool (if it has one) or to receive a SNARLAPP_ACTIVATED
	  (V43 on) or SNARLAPP_DO_PREFS (pre-V43) notification if it has opted to
	  receive callbacks.  (42.165)

	- The tray icon now turns yellow when Snarl enters away mode.  (42.162)

	- Removed "app-flags" argument from <register> and replaced it with "app-
	  daemon".  Setting this to "1" indicates the application is a daemon
	  rather than GUI-based and thus Snarl should include it in the "Apps"
	  tray submenu.  The application should support both SNARLAPP_DO_PREFS
	  and SNARLAPP_DO_ABOUT and *must* support the new SNARLAPP_ACTIVATED and
	  SNARLAPP_QUIT_REQUESTED events.  SNARLAPP_ACTIVATED is posted whenever
	  the user selects the app's entry in the tray menu; SNARLAPP_QUIT_
	  REQUESTED is sent when the user clicks the (new) "Quit" toolbar button
	  in the [Apps] page.  Note these events are simply posted to the app;
	  Snarl is not interested in receiving a response to them.  (42.154)

	- Wasn't returning ERROR_NOT_RUNNING under V42 when stopped.  Now fixed.
	  Credit to JonusC for spotting this.  (42.152)

	- Added new [History] page.  (42.151)

	- Locally registered SNP3 applications which use the new "app-flags"
	  parameter can now receive two new callbacks - SNARL_NOTIFY_APP_DO_ABOUT
	  and SNARL_NOTIFY_APP_DO_PREFS - which indicate the app should display
	  information or its configuration panel respectively.  (42.150)

	- FindNotification() now sets lasterror to ARG_MISSING if neither a token
	  or UID is specified.  (42.150)

	- Improved <addaction> command stability error-checking.  (42.150)

	- "Make sticky" menu item now properly sets the notification as sticky.
	  (42.150)

	- Added "app-flags" argument to <register> command.  This can be used in
	  place of the unintuitive "flags" parameter.  Current supported values are
	  "prefs" and "about".  (42.150)

	- Icons can now be specified using the file:// protocol.  Credit to Shawn
	  McTear for the suggestion.  (42.150)

	- Applications can now provide "hint" when registering.  This is displayed
	  whenever the "Details..." button in [Apps] is clicked.  (42.150)

	- Applications can now provide "config-tool" when registering.  This should
	  contain the path to an executable that will be launched by Snarl when
	  either the "Settings..." button in [Apps] is clicked, or when the entry
	  in the tray "Apps" sub-menu is selected.  (42.150)

	- Improved scheme preview notification content.  (42.150)

	- Improvements and bug fixes to the default style.  (42.150)

	- Added new [Display/Defaults] sub page.  This uses values stored in /etc/
	  styledefaults.conf to control the internal style ("Default").  External
	  styles can (and *should*) also offer the user the option of using these
	  defaults.  (42.150)

	- When unregistering an application via the [Apps] page, Snarl will now
	  prompt the user if they want to delete the persistent settings associated
	  with the app.  (42.150)

	- Notification generated by the [Apps] page "Details..." button now uses
	  a UID to prevent multiple copies appearing.  (42.150)

	- <Register> now supports "app-title" (preferred over "title").  Credit to
	  Shawn McTear for the suggestion.  (42.150)

	- Default away mode setting is now "Log As Missed".  (42.150)

	- Low priority notification logic changed.  Now each registered application
	  can have a single low priority notification on-screen (as opposed to a
	  single global notification).  Credit to Patrick von Reth.  (42.150)

	- Remote icons are now saved using GUIDs rather than calculated file
	  names.  They are also managed in a cache controlled by the notification
	  roster to allow for faster access to recurring URLs.  A new button -
	  "Empty Icon Cache" - has been added to [Advanced/General] which will
	  forcabily clear the icon cache, although the cache is emptied whenever
	  the notification roster is closed.  Credit to Sven for identifying the
	  original bug which led to this feature.  (42.150)

	- Bug that stopped notification content from updating when using a V42
	  style fixed.  (42.149)

	- Can now assign custom actions on a class-by-class basis.  (42.149)

	- Bug in misc.resource (and misc2.resource) BPackedData causing problems
	  with notifications fixed temporarily (will need fixing in both resources).
	  This showed itself in a number of GNTP applications so credit to Skip
	  and Pieter for raising it.  (42.147)

	- <addclass> now returns ARG_MISSING if neither a token or app-sig is
	  provided and NOT_REGISTERED if no applications have been registered.
	  Credit to Shawn McTeer.  (42.146)

	- SNP3 response now includes Snarl sub-version number in "x-daemon"
	  header whenever appropriate.  (42.146)

	- SNP2 and SNP1 responses now include current supported SNP version.
	  (42.146)

	- Bugs in SNP2 handling code fixed.  Credit to Shawn McTeer.  (42.146)

	- GNTP handling code now removes whitespace as per clarification from GNTP
	  authors.  (42.145)

	- Renamed "Shadowing" to "Pass-Thru" in preferences panel.  (42.144)

	- Restored sound settings into [Behaviour] sub page.  (42.144)

	- Created new [Pass-Thru] display sub page.  (42.144)

	- Revised SNP3.0 response specification and added callback support.  (42.137)

	- Support for phat64 icons added to apps, classes and notifications (create
	  and update).  (42.135)

	- SNP3.0 FORWARD response reworked and icon sending added.  If the icon is
	  a URL or !icon then it's simply added to the response as "icon: <url|!>";
	  if the icon is a path to an image then it's encoded in a slightly modified
	  version of Base64 (CRLF's are replaced with #'s) and added to the response
	  as "icon-phat64: <data>".  We use "icon-phat64:" as the encoding used is
	  *different* to that used in SNP2.  (42.134)

	- Applications can now be registered without providing a signature so long
	  as a title is specified.  For reference the signature will be created with
	  the title converted to lowercase, any spaces replaced with underscores and
	  prefixed with "application/x-".  (42.132)

	- Apps which are remotely registered now get "remote_app.png" as their icon
	  if no other icon is specified.  (42.131)

	- Added further SNP3 request parsing.  (42.131)

	- Added placeholder SNP3 request parsing.  (42.130)

	- API version is now correctly stored in notification info for V42 and V41
	  requests (it remains zero for pre-V41).  It's also displayed in the
	  notification's "Details" sub-menu.  (42.130)

	- [Shadowing] content moved into [Behaviour].  (42.130)

	- [Federation] renamed to [Sounds] and sound controls moved into it.  (42.130)

	- Can now manually block apps via the [Apps] page.  (42.130)

	- Released as 2.4.2 DR2  (42.128)

	- Line overflow trimming wasn't working for V42 styles, now fixed.  (42.126)

	- Split [Advanced] page into [General], [Security] and [Debug] tabs.  [Debug]
	  tab is only shown if debug mode is enabled.  (42.126)

	- Debug mode is now always enabled for alpha and DR releases.  (42.126)

	- Added "Revoke Block" button to apps page.  (42.125)

	- Added option to prevent the default callback of a notification being set
	  to a URL.  (42.123)

	- Added basic DoS protection.  (42.123)

	- Resolved memory leak caused by notifications which would end up off-screen
	  not being properly disposed of.  (42.123)

	- API requests which do not specify a PID in wParam are now blocked.  (42.123)

	- Debug mode is now always enabled for beta releases.  (42.122)

	- The 'Actions' indicator icon is now displayed if a notification has a
	  default callback.  (42.122)

	- Applications can now specify a URL-based application icon when registering.
	  The icon will be initiated as an asynchronous download and will be cached
	  in the new /etc/icons/app-cache folder.  The icon is not deleted, thus
	  subsequent registrations will pick it up.  (42.122)

	- Added an option to automatically detect if the notification text is a
	  URL (specifically - begins with "http(s)://") and set the default call-
	  back to it if it does (and no default callback already specified).  (42.122)

	- Added option to only allow password-protected applications to register.
	  (42.122)

	- Fixed bug in [Display|Appearance] subpage which cause Snarl to crash when
	  opening its preferences under certain conditions.  (42.121)

	- Fixed a bug which meant Notifications would be shadowed twice if a remote
	  icon was used.  (42.110)

	- Extension exclude list wasn't being updated.  Now fixed.  (42.108)

	- Fixed bug in notification roster which meant shadowed notifications would
	  appears twice when a remote icon was specified.  (42.107)

	- Major improvements to Run File 2.0 style.  Schemes now have a configurable
	  name which is stored in the .runfile configuration file.  The file's name
	  is not configurable via the UI and thus provides a constant for the
	  scheme.  Type 1 schemes are now known as "simple", with type 2 and 3
	  schemes as "complex" and "unabridged" respectively.  Type 3 schemes now
	  utilise the template parameter which is passed prefixed to the notification
	  content.  The link to the user guide and the hint text has been moved into
	  the new scheme management panel and schemes are now created and edited via
	  this panel.  (42.106)

	- Actions indicator is now drawn when actions widget is visible.  (42.106)

	- Renamed emblem and widget icons.  (42.106)

	- Can now select notification HUD icons via [Display] page.  Dario's
	  "Greyscale" theme is included with Snarl.  (42.106)

	- Added new per-app "block_if_foreground" setting which will discard the
	  notification if the appropriate setting is enabled and the application
	  which is creating it is the foreground app.  This only works for
	  applications registered via the Win32 API.  (42.106)

	- Added new "Applications must register before creating Notifications?"
	  setting to [Advanced] page.  (42.106)

	- Bumped Run File style to 2.0 and changes the way it saves the scheme
	  info.  (42.106)

	- Added "Hide All Notifications" main (tray) menu option.  (42.106)

	- Added "-restart", "-unload" and "-load" command-line arguments.  These
	  respectively restart, unload and load a style or extension based on
	  the classid (including .qualifier) of the item in question.  (42.105)

	- Previously, if a managed style didn't provide suitable content for
	  a notification, Snarl would not display the notification.  This has
	  now been fixed, with Snarl using the built-in style.  (42.102)

	- Extension management significantly improved in a similar way to style
	  engine management.  (42.102)

	- Style engine management significantly improved.  All registered style
	  engines are now displayed in the Styles/Advanced... panel and can be
	  enabled or disabled on an engine by engine basis.  (42.102)

	- Now registers system keys Win+Esc and Win+Ctrl+Esc which close the
	  most recent notification and all notifications respectively.  (42.102)

	- Fixed bug in SNP2 socket handling code which was causing requests to
	  be mistakenly handled as GNTP.  (42.102)

	- Tidied up GNTP and SNP socket binding code.  We now use the wildcard
	  IP address (0.0.0.0) rather than enumerating all local addresses.
	  (42.102)

	- Released as R2.4.1.  (42.101)

	- Released as R2.4.1 b3.  (42.101)

	- Headers beginning with "Data-" in a GNTP notification request are
	  now stored and included in any subsequent CALLBACK response.  (42.101)

	- Fixed bug in GNTP notification parsing code which wasn't saving
	  embedded icons out.  (42.101)

	- Snarl will now check for a new beta release on startup if config
	  entry "auto_beta_update" is set to "1".  There is currently no
	  GUI setting for this, hence the config file must be edited manually.
	  (42.101)

	- If no icon is provided by an application, Snarl will now attempt to
	  use the first icon in the application's executable.  This only
	  applies to applications which register using the Win32 messaging
	  subsystem and who provide their PID in wParam when sending the
	  WM_COPYDATA message.  (42.100)

	- Released as R2.4.1 b2.  (42.99)

	- Fixed bug which was allowing multiple low-priority notifications to
	  appear when using a password.  (42.99)

	- !icons are now displayed correctly in the application list.  (42.99)

	- Fixed bug in GNTP socket callback response content.  (42.99)

	- Class configuration panel [Forwarding] page renamed to [Shadowing].
	  (42.99)

	- Implemented GNTP socket callbacks.  (42.99)

	- Missed Notifications panel now displays !icons correctly.  (42.99)

	- Notifications can now request a particular style by using the new
	  "style=<style>/<scheme>" argument within <notify>.  This is only
	  a request however; it's not guaranteed to be honoured.  (42.99)  

	- Released as R2.4.1 b1.  (42.98)

	- Further improvements to the missed notifications panel.  (42.98)

	- GNTP notifications will now attempt to use the class icon and then
	  application icon (in that order) if no notification icon is
	  provided.  (42.96)

	- GNTP handling code largely rewritten to be more robust.  (42.96)

	- Bug associated with adding actions to a notification in the wait
	  queue fixed.  (42.89)

	- GrowlNet applications running locally are no longer mistakenly
	  identified as remote apps.  (42.88)

	- Legacy API functions are now treated as just that, and receive
	  legacy support accordingly.  At the moment this simply resolves
	  itself as to whether the sending app is notified of right- and
	  middle-button click events.  (42.87)

	- Fixed a number of issues to do with notification updating when
	  V42 styles are used.  (42.86)

	- Added configurable option to allow legacy support of right-
	  and middle-button clicks.  (42.83)

	- <Notify> now supports "class" keyword to identify the class to
	  use.  "id" is still supported of course.  (42.81)

	- GNTP applications running locally are no longer mistakenly
	  identified as remote apps.  (42.80)

	- Possible fix for GNTP UTF8 bug.  (42.79)

	- Fixed a number of bugs in the GNTP icon handling code.  (42.72)

	- SNP 1.0 error handling is now more robust.  (42.67)

	- Missed notifications panel reworked and improved.  (42.66)

	- Significant reworking to the notification roster.  (42.66)

	- Right-clicking a notification now pops open the notification's
	  context menu if no custom menu is defined.  This means that
	  the SNARL_CALLBACK_R_CLICK event, deprecated as of R2.4, is no
	  longer sent.  (42.65)

	- Released as R2.4.  (42.62)

	- Snarl no longer mistakes the Windows 7 Flip (Win+TAB) window as
	  a full screen app.  (42.62) 

	- Fixed issue with the Missed Notifications notification (sic)
	  appearing even when no notifications had been missed.  (42.61)

	- Added "Recreate Tray Icon" button to [Advanced] page while will
	  ask Snarl to put its icon back into the system tray if it should
	  disappear for some arcane reason.  Note that the icon will only
	  be created if admin and user preference settings allow it.  (42.60)

	- Improved the way the preferences panel is displayed.  (42.60)

	- Moved TDebugPage code into frmAbout.NewDoPrefs().  (42.60)

	- Fixed a number of bugs to do with string processing which would
	  manifest if a request of more than 32767 bytes was sent to
	  Snarl.  (42.59)

	- Default style is now selected in the [Styles] page.  (42.59)

	- R2.4 Beta 4.  (42.58)

	- NotificationRoster.Update() now supports "callback", "reply-to",
	  "reply", "icon", "icon-base64" and "uid" args for both on-screen
	  and missed notifications.  On-screen notifications can also have
	  their duration modified via the "timeout" arg.  (42.58)

	- NotificationRoster.Update() will now update missed notification
	  content, if it's still in the missed list.  (42.58)

	- Timestamp content displayed in notification during mouse-over is
	  now relative.  Values can be "Just now" (less than a minute ago),
	  "x min(s) ago" or "x hour(s) ago".  If the notification was created
	  24 or more hours ago, the date and time is displayed.  (42.58)

	- If the "uid" arg is used in <Notify> and a notification with the
	  uid is still visible or is in the missed list, then the existing
	  notification is updated with the provided content.  (42.56)

	- Removed support for "replace-uid", "update-uid", and "merge-uid"
	  from <Notify> for now while the specifics of these are better
	  developed.  (42.56)

	- App's name is now drawn in bottom-right corner of notification while
	  mouse pointer is over the notification.  (42.56)

	- Added new [SetMode] request.  Currently this only supports a single
	  argument ("Busy") which can be used to set Snarl's busy (DND) mode
	  from an external source.  In order to do this, the application must
	  be registered with Snarl and must supply its signature ("app-sig")
	  or token ("token") and password ("password") if necessary.  (42.56)

	- Added new SNARL_ERROR_INVALID_ARG (108) error.  (42.56)

	- Added "trash", "mycomputer" and "nethood" actions to !system command
	  (42.56)

	- Fixed bug processing embedded actions in <Notify>.  (42.55)

	- <RemClass> and <ClearClasses> requests now accepts app-sig parameter.
	  (42.53)

	- Fixed bug in TNotificationRoster.Add() whereby delayed notifications
	  didn't have the BPackedData "Args" parameter included.  (42.51)

	- Corrected some issues with Base64 decode routine.  (42.51)

	- Added Base64-encoded icon support to <AddClass>.  (42.51)

	- Added support for Base64-encoded icon data within <Notify>.  Parameter
	  name is "icon-base64" and encoded data should be terminated with
	  percent characters, not equals signs.  (42.48)

	- Fixed bugs around the title/app name logic in the notification
	  forwarding code.  (42.47)

	- Bumped back to Beta 4.  (42.47)

	- Added option to include the computer name in the title of forwarded
	  notifications.  (42.47)

	- Minor layout alterations to some prefs pages.  (42.46)

	- Fixed bug in Notification Roster to do with styles and the 
	  S_STYLE_WANT_APP_NAME flag whereby notifications would sometimes
	  end up with the title and application name set twice.  (42.43)

	- Added "Forward" option to the Away and Busy action buttons.  (42.43)

	- Split presence settings out into new [Presence] page.  (42.43)

	- Clarified wording in the snDoRequest() helper explaination.  (42.43)

	- Split the [Appearance & Layout] sub-page into separate [Appearance]
	  and [Layout] pages.  (42.43)

	- Added basic style pass-through functionality although this will
	  most likely remain private/undocumented until V43.  (42.43)

	- Minor cosmetic changes to [General] page.  (42.43)

	- Included missing "schemes.conf" in Smooth style folder.  (42.43)

	- Minor cosmetic changes to [Network] page.  (42.43)

	- DND extension folder removed.  (42.43)

	- Default style is now Corporate/Standard.  (42.43)

	- Copyright bumped to 2011.  (42.43)

	- Rebranded as Beta 3.  (42.42)

	- Slight improvement to missed notification checking logic.  (42.42)

	- Renamed "Do Nothing" presence action to "Discard".  (42.41)

	- Converted Run File style to V42 and added support for any notification
	  elements prefixed with "data-" and "value-" which are passed to the
	  target file as further arguments.  (42.40)

	- Added support for "&&" and "==" pairs in notification elements which are
	  translated into single "&" and "=" respectively.  This is the preferred
	  way for notifications to include "&" and "=" characters.  (42.40)

	- Snarl Welcome Message notification class renamed to SNARL_CLASS_GENERAL
	  and extended to cover other notifications such as the "update available"
	  and "missed notifications" ones.  (42.40)

	- SNARL_USER_AWAY and SNARL_USER_BACK are now sent to all registered
	  applications when the user's presence switches to and from Away mode.
	  (42.40)

	- Added [Set Away when Screensaver] option as Windows NT systems don't
	  actually lock the computer until input is detected while the screensaver
	  is running.  (42.40)

	- Full-screen app detection now sets/clears DND mode rather than away
	  mode.  User-enabled DND is now a flag as well.  May still re-add an API
	  to allow external apps to set and clear DND status.  (42.40)

	- A successful re-registration now updates the application's icon, reply-
	  to window and reply messages if any of these are provided.  (42.40)

	- Added priority emblem which is drawn over any high priority
	  notifications.  (42.40)

	- Improvements to the scheme preview code.  (42.40)

	- Removed ununsed internal E_DEFAULT_DURATION constant.  (42.40)

	- Merged the [General] and [Advanced] page content into the main form,
	  doing away with the two class objects.  (42.40)

	- Fixed a number of cosmetic bugs in the scheme preview code.  (42.40)

	- Changes made to Away and Busy (DnD) logic.  Now only the user can enable
	  and disable Do Not Disturb mode (via the tray icon menu).  Similarly, Away
	  mode can only be set programmatically in response to certain system events.
	  (42.40)

	- Removed support for private E_SET_DONOTDISTURB external API, making
	  the DND extension redundant.  (42.40)

	- Moved full-screen app and computer lock/unlock detection into Snarl,
	  effectively doing away with the DND extension.  (42.40)

	- We now use the "no_icon" icon when applications without icons register
	  and unregister.  (42.39)

	- Fixed a number of bugs and glitches within the notification drawing
	  and fading code.  (42.38)

	- Click-through notifications were grabbing the keyboard focus on mouse-
	  over.  Now fixed.  (42.38)

	- GNTP and GrowlNet priorities are now passed through unchanged allowing
	  V42 styles to handle different priorities.  (As an aside, although
	  the only official Snarl priorities are -1, 0 and +1, the unofficial
	  position is that the priority should be treated as signed byte, thus
	  allowing for priorities ranging from -128 to +127).  (42.38)

	- Added code to handle restoring the tray icon after an Explorer
	  crash.  (42.38)

	- Improved distinction between sticky and away functionality.  When
	  sticky notifications are enabled, *all* notifications are sticky,
	  regardless of priority.  When away mode is enabled, only high
	  priority notifications are made sticky.  (42.38)

	- Re-instated idle timer and associated user-definable delay setting.
	  This now enables away mode when the delay is reached with no user
	  activity in between.  (42.38)

	- Released as R2.4 DR7.  (42.37)

	- Improved way notification forwarding is managed.  Notifications
	  may now be forwarded based on one or more of the following 
	  conditions being met: away, busy or any other time.  (42.36)

	- Prefs icons changed to use Faenza set.  (42.35)

	- Split class configuration [Extras] page into [Forwarding] and
	  [Advanced] pages.  (42.35)

	- Added emblem which identifies sticky notifications.  (42.35)

	- Reworked the way actions are managed.  Most significant advantage
	  is that actions can now be stored (and accessed) for missed
	  notifications.  (42.35)

	- API return value changes mean we can no longer use the result-plus-
	  last-error model so <IsVisible> now returns SNARL_SUCCESS if the
	  requested notification is still on-screen and a new (V42 only)
	  <WasMissed> action will return SNARL_SUCCESS if the notification
	  was placed in the missed list.  (42.35)

	- <Notify> action "replace" and "update" args renamed to "replace-
	  uid" and "update-uid" respectively and now expect a notification
	  UID rather than a token.  (42.35)

	- All V42 Windows API functions now signal an error in the return
	  value of snDoAction().  The return value can be one of three
	  possibilities: zero (success), +ve (success and a usable number),
	  or -ve (an error).  The actual error can be determined by
	  checking ABS(return_value) against the error list.  "lasterror"
	  is thus no longer a recognised action under V42.  (42.35)

	- Added new "uid" argument to <Notify> which can be used to uniquely
	  identify a notification on a per-app basis.  (42.34)

	- Internal T_NOTIFICATION struct used by Notification Roster stream-
	  lined.  (42.34)

	- Private SNARL_COUNT_NOTIFICATIONS command removed.  (42.34)

	- Can now include zero or more "action=<label>,<command>" arguments
	  in a <Notify> request.  (42.34)

	- Win32 action and menu dynamic callbacks now send the command (with
	  the "@" prefix removed) cast as an Int16.  (42.34)

	- Notification right-click menu item selection now works with SNP-
	  generated notificatons (it is still deprecated however).  (42.34)

	- <Register>, <Unregister>, <AddClass> and <Notify> now all use "app-
	  sig" as the application signature argument.  <Register> still accepts
	  "id" for backwards compatibility reasons.  (42.32)

	- <AddClass> now accepts an application signature as an alternative
	  to an application token.  Use "app=<sig>".  (42.31)

	- Reverted the "Missed Notifications" notification back to using the
	  default callback rather than an action to open the missed list.
	  (42.31)

	- Application signature must not contain spaces (a "missing arg"
	  error will result if it does).  GrowlNet register command ammended
	  to replace spaces with underscores.  (42.30)

	- <Unregister> action now accepts an "id" argument which should be
	  the signature of the application to unregister.  Likewise, <Notify>
	  now accepts an "app" argument as in lieu of an application token.
	  (42.27)

	- Minor bug fixes and code tweaks.  (42.26)

	- Notification actions must now have a command.  Attempting to add
	  an action with no command now fails.  If a command begins with '@'
	  it is sent back to the app which added it either verbatim (for SNP)
	  or using the item index (win32).  (42.23)

	- Refinements to notification callbacks.  Right-clicking and middle-
	  clicking are now deprecated although the Win32 API still sends the
	  appropriate message to ensure backwards-compatibility with older
	  applications.  The "auto dismiss" flag introduced during the early
	  V42 development phase has been removed.  (42.22)

	- Removed V41 include.  (42.22)

	- Added rudimentary support for some GNTP functionality (specifically
	  application registration and notification creation.  (42.22)

	- Removed dependency on legacy include file and moved remaining legacy
	  constants into new "deprecated" module.  These will be retained for
	  as long as we support the 1.x API.  (42.21)

	- New VB5/VB6 V42 include file which now uses the Mk.3 Win32 low-level
	  transport.  (42.21)

	- Implemented new Mk.3 low-level transport (see separate notes) and
	  removed temporary SNARL42_PARSE command.  (42.21)

	- Application re-registration now requires the password supplied when
	  the application was first registered.  (42.21)

	- About page now checks existence of the Calibri font and reverts to
	  Tahoma.  (42.21)

	- Rebranded "Default Ack" and "Acknowledge" to "Callback".  (42.21)

	- Clicking the "Details" button on the Apps page will, for those apps
	  which don't provide their own information, generate a notification
	  with basic information about the application.  (42.21)

	- Released as R2.4 DR6.  (42.20)

	- Snarl now performs URL decoding on any incoming SNP2.0 and Win32
	  packets.  Outgoing notifications (e.g. via the forwarding subsystem)
	  are now URL-encoded as well.  (42.20) 

	- Notification forwarding completely reworked to use SNP2.0 (so, at
	  present, forwarding to computers not running Snarl 2.4 is broken) and
	  removed the reliance on the deprecated Snarl Network Bridge library.
	  (42.20)

	- If a notification is successfully merged, LastError is now set to
	  WAS_MERGED to indicate this.  (42.20)

	- Updated credits.  (42.20)

	- Added sn42Send() which takes two parameters: "Action" and "Args".
	  "Action" is the SNP2.0 action to perform; "Args" contains SNP2.0-
	  formatted arguments.  (42.20)

	- Tidied up VB6 include file.  (42.20)

	- The "secure" emblem is now only drawn on the registration notification,
	  not subsequent notifications.  (42.20)

	- Further work done on consolidating the SNP2.0 and Win32 api's.  (42.20)

	- Implemented simplistic sending of icon data over SNP using a modified
	  form of Base64 encoding.  (42.20)

	- Unregistering and updating a password-protected application now fails if
	  the correct password is not supplied.  (42.20)

	- SNP2.0-created notifications now receive replies to the remote port when
	  a notification times out, etc.  (42.19)

	- Added password support for applications.  If a password is supplied by an
	  application during registration, the same password must be used whenever
	  a new notification is created.  (42.18)

	- Added a new emblem which appears in any notifications generated by
	  remote applications.  (42.18)

	- Added support for incoming Growl UDP notifications on port 9887 (same as 
	  SNP).  Growl applications can register, add notification types (classes)
	  and create notifications.  (42.18)

	- Implemented native SNP2.0 support.  (42.18)

	- If a notification has actions an indicator icon is now drawn in the
	  bottom right corner.  (42.17)

	- If we can't actually display a notification (usually down to lack of free
	  screen space) we now set lasterror to ERROR_COULD_NOT_DISPLAY and either
	  add it to the missed list (for notifications with a normal or high
	  priority) or discard it (for notifications with a low priority).  (42.17)

	- Garbage collection (only available on XP or higher) option added to
	  debug page.  (42.17)

	- When DnD is in effect, notifications which end up being logged in the
	  missed list are now allocated a unique token and LastError is set to
	  ERROR_DO_NOT_DISTURB to indicate it was missed.  This allows applications
	  to (a) take alternative action and (b) continue to manage the
	  notification (e.g. by adding actions to it).  If a notification is not
	  added to the missed list during DnD, LastError is still set to ERROR_DO_
	  NOT_DISTURB but this time a zero token is returned.  (42.16)

	- Fixed bug in notification handling logic when DnD is in effect.  (42.16)

	- JSON notifications were not being displayed even if listening for them
	  was enabled, now fixed.  (42.15)

	- Missed notifications are now listed in reverse order (i.e. most recent
	  first) in the panel.  (42.13)

	- Better missed notification handling.  Snarl tray icon now changes to
	  indicate missed notifications.  Double-clicking the icon at this time
	  will open the missed notifications panel rather than the preferences
	  panel.  The icon (and double-click feature) reset to normal as soon
	  as the panel is displayed.  (42.12)

	- Fixed bug which prevented the Missed Notifications notification from
	  appearing under certain circumstances.  The notification now has a
	  single "Missed Notifications..." action and uses the AUTO_DISMISS
	  flag.  (42.4)

	- R2.4 Beta 2.  (42.3)

	- Fixed private internal style preview function to work with V42
	  styles.  (42.3)

	- Application Registered notifications now support actions.  (42.2)

	- sn42AddAction() now supports a "command" parameter.  If an item with
	  a command is selected by the user, Snarl processes this in the same
	  way it does an Ack command.  (42.1)

	- Bumped to V42.  (42.1)

	- Added sn42ClearActions() which removes all defined actions from a
	  notification.  (41.83)

	- Notification scaling is now applied to the close and actions buttons.
	  (41.82)

	- Added new actions feature.  This comprises of a new API function - 
	  sn42AddAction() - which requires a valid notification token and a new
	  notification message parameter - SNARL_NOTIFICATION_ACTION (38) - which
	  is sent from Snarl.  (41.81)

	- Extension's page, "Details..." button now removes previous notification
	  before displaying new one.  (41.81)

	- Fixed spurious escape codes appearing in some Snarl-generated
	  notifications.  (41.80)

	- Low-priority notifications are no longer queued; any existing on-
	  screen low-priority notification is removed before the new one is
	  displayed.  (41.80)

	- When merging notifications the timeout of the merged notification is
	  used, not the sum of what's left and the merged notification.  (41.80)

	- Application Registered notification text changed yet again (still only
	  applies on first register) and right-click menu (always applied) added
	  to provide access to both the notification settings in Snarl's panel
	  and - if the app has one - the app's GUI.  (41.78)

	- Added support for MP3 sounds.  (41.78)

	- The "Notification Settings..." menu item now selects the notification's
	  class as well as the application.  (41.78)

	- Notifications created without a "timeout" token were getting 0 (sticky)
	  applied to them.  Now fixed such that they receive the system default
	  timeout instead.  (41.78)

	- Application Registered notification is now slightly different on first
	  registration compared to subsequent registrations.  On first registration
	  *only*, clicking the notificaton will launch the class configuration
	  panel for the application.  The text that appears in the notification is
	  slightly different as well.  (41.77)

	- New notification flag - SNARL41_NOTIFICATION_AUTO_DISMISS - which causes
	  the notification to be automatically closed if the user right- or middle-
	  clicks it.  If the notification has a right-click menu assigned it will
	  be closed after the user has selected an item from the menu (or cancelled
	  the menu).  Note that the relevant notification messages are still sent
	  by Snarl if this flag is specified.  (41.77)

	- R2.4 Beta 1.  (41.75)

	- Fixed bug in g_MakeValidPath() which was clobbering '\' characters and
	  therefore trashing any passed paths.  (41.75)

	- Bug in icon handling code meant that "special" icons (e.g. those extracted
	  from resources or specified by an HICON) would only apply the first time
	  a notification was displayed.  Now fixed.  (41.73)

	- We now broadcast two new messages - SNARL_BROADCAST_STARTED and 
	  SNARL_BROADCAST_STOPPED - when Snarl is started and stopped respectively.
	  (41.71)

	- Custom sounds now working.  (41.69)

	- uMakePreviewName() wasn't stripping out invalid filesystem characters
	  (/ \ < > etc) - now fixed.  (41.58)

	- Added support for new S_STYLE_V41_CONTENT flag.  This is handled in
	  CSnarlWindow.uUpdateStyleContent() which, if the flag is set, sends
	  the calling application's name in the notification's title and the
	  unabridged notification content (packed data format) as the text.  (41.58)

	- Added basic notification merging.  (41.57)

	- Added "Check Now" button to General page which will kick off a forced
	  update check.  In this case only, Snarl will notify if the user is
	  running the current general release.  (41.56)

	- Number of missed notifications (if there are any) is now displayed in the
	  tray tooltip and in the Missed Notifications... menu item.  (41.55)

	- Clicking the "<appliction> registered" notification will now launch the
	  application's class configuration panel.  (41.54)

	- Notification scaling implemented.  This is a bit rudimentary as it's only
	  applied to the incoming notification content and not to the final displayed
	  notification (the upshot being that the close and timestamp gadgets are not
	  scaled).  Also worthy of note is that scaling will most likely break (or
	  seriously upset) styles which position and/or size the notification
	  themseleves.  (41.53)

	- Added a further escape sequence ("\+") which can be used in either the title
	  or text of a notification, however it only applies to updated notifications.
	  The sequence is replaced with the current notification text so, for example,
	  "\+\nHello world!" would append a CRLF and "Hello World!" to the existing
	  notification's content.  (41.53)

	- Basic line overflow implemented.  This simply breaks the incoming title and
	  text on each CRLF pair and counts the resulting "lines".  If the number of
	  lines is greater than the specified overflow amount (max of 12 lines) then
	  the second line is replaced with an ellipsis and only the last n-2 lines
	  are displayed.  (41.52)

	- Extensions not set to start up were not being released correctly.  Now fixed.
	  (41.52)

	- R2.31.  (41.51)

	- We now do COM garbage collection after loading extensions from a folder.  (41.50)

	- Built as R2.31 beta 1.  (41.49)

	- Notification close button is now sized according to the smaller of the close
	  bitmap itself and the notification height.  (41.47)

	- EmptyWorkingSet() is now called whenever the system information notification
	  is displayed and also after 5 minutes if no notifications have been created
	  in that time.  (41.47)

	- R2.31 d4.  (41.45)

	- Bug fixes and more code tidying up within the notification roster.  (41.39)

	- Extension exclude file internal object changed although this should be
	  completely transparent to everything.  (41.39)

	- Snarl's config path is now registered as a global atom and the atom is
	  stored as a window property.  This is so apps, style engines and extensions
	  can use it to store their settings in a sysadmin-friendly manner.  (41.39)

	- Extension roster's 'exclude' file now obeys the variable Snarl config folder
	  location.  (41.39)

	- 'Duplicates' cycle button replaced with 'Prevent Spam' toggle switch.
	  (41.39)

	- Juggled class configuration panel content around again.  (41.39)

	- Added per-class option to not have notification logged as missed while
	  Do Not Disturb is enabled.  (41.39)

	- Added user-definable acknowledge feature.  (41.39)

	- Released as R2.31d2.  (41.38)

	- Revised system admin functionality.  (41.38)

	- Released as R2.31 b1 (should have been d1).  (41.37)

	- Added system adminstration functionality.  (41.37)

	- Missed Notifications "Acknowledge" button should now function as
	  expected.  (41.37)

	- Consolidated a couple of internal notification data types (specifically
	  G_NOTIFICATION_CONTENT and T_NOTIFICATION_INFO).  (41.37)

	- sn41Update() was corrupting notification content.  Now fixed.  (41.36)

	- Fixed broken "run on logon" option.  (41.35)

	- Extension details notification now suppresses version number for
	  extensions with version and revision of zero.  (41.35)

	- Released as R2.3.  (41.34)

	- Added new status code SNARL41_ERROR_NOTIFICATION_NOT_FOUND'.  (41.32)

	- sn41Update() renamed to sn41EZUpdate() and a new sn41Update() added which
	  mirrors sn41Notify().  (41.32)

	- sn41AddClass() now sets LastError to CLASS_ALREADY_EXISTS if the class being
	  added has already been defined.  [Toke]  (41.32)

	- Removed graphics test code and associated prompting.  (41.32)

	- Removed RC branding.  (41.32)

	- Fixed bugs in preferences hotkey code.  [Toke]  (41.32)

	- Melon release number (rather than the exec.library version) is now displayed
	  in the system information notification.  (41.31)

	- Missed notifications are now checked (and notification displayed) on a
	  manual DnD enable/disable.  (41.31)

	- Notifications with remotely hosted icons now have the icon displayed in
	  the Missed Notifications panel.  (41.31)

	- More minor interface improvements to the Missed Notification panel.  (41.31)

	- Icons in the Missed Notifications panel now have their aspect ratio
	  preserved.  (41.31)

	- Missed Notifications panel now displays sending app and class used for the
	  notification.  (41.29)

	- Missed Notifications panel now displays the notification timestamp's
	  seconds.  (41.29)

	- Removed idle timeout controls from panel and idle checking code.  This will
	  be moved into the DnD extension.  (41.28)

	- Added functionality to system DnD functions such that if notifications arrive
	  while DnD is enabled, when DnD is finally disabled Snarl will display a
	  notification detailing the number of missed notifications.  (41.27)

	- Further improvements to the way sn41Update() works.  (41.26)

	- sn41Update() didn't send timeout value.  Now fixed.  [Toke] (41.25)

	- Renamed sn41RemClass() and sn41RemAllClasses() to sn41RemoveClass() and
	  sn41RemoveAllClasses() respectively.  Added sn41Notify() although this
	  is still to be documented and approved.  [Toke] (41.25)

	- Removed redundant "Launch App Manager" button from Advanced page. [psy]
	  Fixed bugs in - and tidied up - Debug page.  (41.24)

	- Released as R2.3 RC1.  (41.23)

	- Changed the way the SNARL_LAUNCHED and SNARL_QUIT broadcast messages are
	  sent (PostMessage() is now used over SendMessageTimeout()) and the point
	  when the initial SNARL_LAUNCHED is sent.   Most importantly, broadcasts
	  are *no longer sent* when Snarl is stopped or started (but remains running)
	  however each application that has registered a window handle and reply
	  message will still receive a SNARL_LAUNCHED and SNARL_QUIT notification.
	  (41.23)

	- Notification "Details" menu now includes the name of the notification
	  class and a "<App> Settings..." option which will open Snarl's Preferences
	  Panel (if it's not already open) and select the application from the
	  registered apps list.  (41.20)

	- Fixed bug that was preventing some icons from being downloaded via a
	  URL.  (41.19)

	- Notification fade in/out speed increased (ought to be made configurable)
	  and info notification formatting changed slightly.  (41.18)

	- sn41AddClass() now supports the ability for applications to add classes
	  that are disabled by default.  (41.17)

	- SNARL_GLOBAL_MSG broadcast message now sends the system version
	  number in lParam.  (41.16)

	- Snarl Apps without a GUI are now ghosted in the Snarl Apps menu.  (41.15)

	- Registered applications which have no icon are now given a default icon
	  in the prefs panel.  (41.12)

	- Settings should now persist.  (41.11)

	- Added support for .ico files and for the extraction of icons from
	  resource files.  To extract an icon from a resource file, append
	  a comma and then the icon's resource identifier (or index) to
	  the icon path.  In all cases, Snarl will attempt to extract the
	  largest, most colourful version of the icon contained within the
	  file.  (41.8)

	- Bumped to V41.  (41.1)

	- Notification forwarding ("Copy To") implemented.  (40.55)

	- TMainWindow also accepts WM_CLOSE as an alternative to MSG_QUIT.
	  (40.55)

	- MSG_QUIT and MSG_PREFS were incorrectly being handled by frmAbout as
	  opposed to TMainWindow.  Now fixed.  (40.55)

	- Renamed to R2.3 Beta 1  (40.54)

	- Any notifications left on-screen when Snarl is stopped (or restarted)
	  are now removed.  [SF FR 2935808]  (40.54)

	- Fixed bug where fuzzy notifications timed out even while fuzzy
	  (i.e. mouse pointer over them).  (40.54)

	- Added 'Details' submenu to notification menu.  Currently displays
	  timestamp and sending application name.  (40.54)

	- Added optional display of timestamp while mouse pointer is over
	  plugin.  [SF FR 3000019]  (40.54)

	- Prefs Panel "Display" sub pages reorganised.  (40.54)

	- Idle timeout cycle button added to "General" page.  [SF FR 2935822]
	  (40.54)

	- Class Panel sub pages reorganised.  "View only" mode is
	  now simply known as "ignore mouse and other input" and toggle button
	  in the panel now works.  (40.54)

	- Can now install new/existing Style Engines from the Style Engine
	  Panel.  (40.54)

	- sz41EzNotify() now accepts a "Value" entry (encoded as 'value' in
	  the packed string).  The concept is that it should be free-form
	  and can encapsulate the format of the value along with it - the
	  obvious example of this is a value of '45%' which would be displayed
	  by the various meter styles.  Other value types can be used and
	  defined on a case-by-case basis.  (40.53)

	- Fixed bug in the apps preferences page which was causing the wrong
	  application to be selected from the list.  (40.51)

	- Notifications (theorectially) now fade out twice as fast as they
	  fade in.  (40.51)

	- Added "IP forwarder" default style.  (40.49)

	- Fixed auto update check (same bug as for the remote icon download
	  code).  (40.49)

	- Released as 2.1A2.  (40.48)

	- Fixed two major bugs in the remote icon / delayed notification
	  handling code which in some cases caused Snarl to get stuck in
	  an infinate loop downloading the same icon.  Thanks - as
	  always - to Sven to both spotting and debugging the problem.
	  (40.48)

	- Fixed bug that meant Snarl would create JSON and SNP listeners
	  even if the appropriate setting was disabled.  Spotted by
	  Patrick Von Reth.  (40.48)

	- Notification menu now displays the creating app's name in
	  the "Close all from this app" item.  (40.46)

	- Removed the new "Snarl Apps" menu item and replaced it with
	  a new toolbar in the Apps Page.  The toolbar has two options -
	  "Details" and "Settings..." which send the registered application
	  a SNARL_SHOW_ABOUT and SNARL_SHOW_PREFS message respectively.
	  The buttons are ghosted based on the flags and application
	  specifies during registration.  Aside from neatening up access to
	  applications, this now means that applications with GUIs can
	  still be configured from Snarl as they used to be.  (40.42)

	- Fixed bug in App Roster which meant some applications weren't
	  registering correctly.  (40.42)

	- APP_SUB_VER changed to 3.  (40.42)

	- Only priority notifications are now forceably made sticky if
	  away mode is enabled.  (40.42)

	- Changed "Enabled" toolbar button on Extensions page to "Details"
	  which generates a notification showing more information about
	  the selected extension.  (40.41)

	- Fixed (again) the way extensions are loaded up and initialised.
	  new TExtension.SetTo() function is called one time only for
	  each potential extension and succeeds if the extension appears
	  to be valid and retrieves information from the extension.
	  TExtension.SetEnabled() can now assume the extension is valid.
	  (40.41) 

	- Lemon3 logging is now only enabled if debug mode is enabled.
	  (40.41)

	- Released as R2.3 Alpha 1.  (40.

	- Applications can now specify a timeout of -1 (unclear if this
	  was previously documented) which indicates that the Snarl global
	  default timeout should be used.  (40.25)

	- Applications using the V41 API can now specify a priority for
	  a notification.  This can be -1 (low), 0 (normal) or 1 (high).
	  At this time Snarl does not differ in how it handles low or
	  normal notifications, although this will change in the future.
	  The class settings panel has been changed to allow the user to
	  over-ride the priority setting for any class.  (40.25)

	- Many improvements to the underlying application, class and
	  notification handling code - provides a much more structured
	  approach.  (40.25)

	- Class configuration mini-panel re-designed to have two - Basic
	  and Advanced - pages.  (40.25)

	- Global and per class settings completely re-written from scratch.
	  Each app now has it's own configuration file which contains the
	  registered classes.  (40.25)

	- Increased V41 API support.  (40.25)

	- Added new "Copy content to Clipboard" option to notification
	  menu.  [FR2935816/dragonmage]  (40.24)

	- IStyleInstance::Pulse() is now called while the notification
	  is fading out.  (40.20)

	- Style/Scheme preview image is now automatically refreshed when
	  the style's configuration window is closed.  (40.24)

	- Bumped to R2.3a1.  (40.20)

	- Includes final misc.resource and revised Prefs Kit.  (40.19)

	- If debug mode is enabled then all extensions are disabled
	  irrespective of their inclusion within .exclude.  The 
	  .exclude file is never written in debug mode.  (40.19)

	- Improved extension handling.  Enabling/disabling an extension
	  simply moves the extension out of/in to .exclude.  Disabled
	  extensions have their icon greyed; enabled extensions which
	  fail to start have their icon replaced with a warning one.
	  (40.19)

	- Debug mode can now be enabled by holding down either CTRL key.
	  (40.19)

	- Added full-screen app detection (code from now redundant
	  DoNotDisturb extension).  (40.16)

	- Added basics for away mode detection.  (40.16)

	- \n's in the notification title or text elements are now
	  translated into CR/LFs.  Note this happens after logging so
	  the original \n's are preserved.  (40.16)

	- MakeFuzzy() routine within CSnarlWindow now uses asynchronous
	  fading (uSetTargetAlpha()) - improves responsiveness.  (40.16)

	- Released as R2.21.  (40.15)

	- Style Engines can now be loaded manually even if they're not
	  already known to Snarl.  (40.12)

	- Added 'icon' element to 'add_class' SNP action.  Specifying
	  an icon here allows it to be used for subsequent notifications
	  created with that class.  (40.11)

	- SNP protocol now takes a single Chr(13) as the terminating
	  value rather than a Chr(13)/Chr(10) pair.  (40.11)

	- Cosmetic improvements to iPhoney bar look.  (40.11)

	- Added 'icon' element to SNP1.1 'notification' action.  This
	  supports local and remote icons in the same way the API
	  does.  (40.10)

	- Stopped error dialog box appearing when unloadable style
	  detected.  (40.9)

	- SNP1.1 now reports notification token in success response
	  as SNP1.1/0/OK/nnn where 'nnn' is the token number in
	  decimal.  SNP1.1 notifications (3xx) also report the token
	  number in the same way.  (40.8)

	- Fixed bug in SNP 'notification' action handling which
	  would cause it to fail if a timeout value wasn't specified.
	  (40.8)

	- SNP bumped to 1.1.  Fully compatible with 1.0 requests,
	  it just now supports forwarding notification events back
	  to the remote application.  Notification values start at
	  302 (effectively the API notification value plus 270).
	  (40.8)

	- The icon path for notifications can now reference an
	  image located on a web server.  Currently only the http://
	  and https:// protocols are supported.  (40.7)

	- Excluded extensions were being ignored by the Extension
	  Roster during startup - now fixed.  (40.7)

	- Kill message from stop.exe wasn't properly killing the
	  Snarl process - now fixed.  (40.6)

	- Released as Snarl R2.2.  (40.5)

	- We're no longer a Beta so panel is suppressed.  (40.4)

	- Auto-update was indirectly using a SERVERXMLHTTP40 object
	  to do its stuff.  Bizarrely, this isn't supported under
	  Windows 7 (apparently being replaced with SERVERXMLHTTP60
	  instead) so we now use a SERVERXMLHTTP30 instead.  (40.4)

	- Added new S_STYLE_WANT_APP_NAME flag to Style type library.
	  If a Style specifies this option, Snarl will prefix the
	  sending application's name to the notification title.
	  Styles can then extract this information and use it
	  accordingly.  (40.2)

	- Fixed a couple of nasty bugs to do with trying to preview
	  windowless notifications.  (40.2)

	- Auto-update feature now has on/off button in preferences.
	  (40.2)

	- Removed network sending stuff.  (40.1)

	- Simplified auto update feature.  Now we simply check for
	  an update on startup and, if one is available, we show a
	  notification to that effect.  (40.1)

	- Finally bumped to V40. (40.1)

	- Dropshadow size is now configurable.  (39.86)

	- Default style is now iPhoney/Standard.  (39.86)

	- Tidied up the two "Display" sub pages.  (39.86)

	- "Use the same settings for all classes" option now takes
	  effect.  (39.86)

	- Added "Beta Usage" pop-up panel.  This appears on each
	  launch until the user acknowledges it.  This is only for
	  use in Beta releases; it won't appear in dev or finals.
	  (39.85)

	- Added auto-scheme preview (suggested by XXXXXXX) such that
	  if the appropriate <scheme>.preview image doesn't exist
	  Snarl will dynamically create one.  The dynamic image is
	  called <scheme>.prvw and is re-created each time (which
	  might slightly affect performance).  (39.84)

	- Can now unload and reload style engines.  The load ability
	  only applies to 'known' engines (that is, engines which
	  Snarl loaded up when it first launched).  (39.80)

	- Change log lost
	- ...
	- Change log lost

	- Renamed SNP return codes from SNB_xxx to SNP_xxx.  (39.39)

	- Released as R2.1 Beta 3.  (39.38)

	- 

	- Toggling the "Use same settings for each class" swtich now
	  selects the first class (<All> or <Other>) and then disables
	  or enables the classes listbox.  (39.29)

	- Style Config button renamed to 'Configure Style' and now
	  calls the Style Engine's ConfigRequested() hook.  (39.28)

	- New 'Show notification on first registration only' toggle
	  button added to General page.  Not fully implemented yet.
	  (39.26)

	- New 'Advanced' page with App Manager and Reload Styles buttons
	  moved into it as General page was starting to get full.  (39.26)

	- Styles page now has 'Configure' button back in although this
	  isn't implemented as yet.  (39.26)

	- New Prefs Kit d0 fancytoolbar used in Styles and About pages
	  to replace to multiple buttons.  (39.26)

	- Various bits of hocus pocus and other related magik.  (39.26)

	- Snarl now adds a "Local Anonymous Notifications" class which
	  snShowMessage() notifications are now channeled through.  This
	  makes it easier for the user to block them if required.  (39.22)

	- Two new private functions added - snPrivateOpenStyleRoster()
	  and snPrivateCloseStyleRoster() - which wrap the new E_MANAGE_
	  STYLE_ROSTER command described below.  (39.20)

	- Two new WM_SNARL_MANAGE commands added.  "E_MISC_CMDS" is just
	  that; a placeholder for miscellaneous stuff.  Only one sub-
	  command is currently defined - #1 - which enables the "sticky
	  notifications" option.   "E_MANAGE_STYLE_ROSTER" allows for
	  external control of the style roster with two sub-commands: #1
	  opens the roster and #2 closes it.  Some cosmetic improvements
	  have been made to the Styles page to cater for it being open
	  when these commands are received.  (39.20)

	- WM_SNARL_MANAGE constants are now named although are _still
	  private for the moment_.  This is important as these most likely
	  *will* change shortly.  (39.20)

	- Added new SNARL_COUNT_NOTIFICATIONS private command.  This is
	  due for documentation in the V40 release.  (39.12)

	- Changed URL that opens when the "Snarl Forums" button is clicked.
	  (39.11)

	- Styles page: Schemes listbox item height changed to 24px and
	  scheme icons now displayed.  (39.9)

	- Added a fix to the EZ style image loading code which gets round
	  the bug in graphics.library which locks an image file.  (39.8)

	- Apps page: apps drop-down list is now refreshed if an application
	  registers/unregisters while the panel is open.  (39.7)

	- Apps page: checking/unchecking a class had no effect.  Now fixed.
	  (39.7)

	- Released as Beta 1.  (39.6)

	- Apps page: added new 'Advanced' subpage with a single cycle
	  button which can be used to override per-class notification
	  suppression settings.  (39.6)

	- Extensions page: Ticking/unticking an extension causes the list
	  to be refreshed but doing so messed up the selected item.  Now
	  fixed.  (39.6)

	- Extensions page: Ticking/unticking an extension didn't update
	  the apps list in the Apps page.  Now fixed.  (39.6)

	- Schemes can now supply an icon that is displayed in any scheme-
	  related drop-down boxes.  (39.6)

	- Bumped to V39.  (39.1)

	- Incorporated V39 api into standard include.  (38.156)

	- Fixed hotkey bug - no longer registers CTRL on its own if
	  option is turned off (spotted by Sven).  (38.152)

	- Default style/scheme is now set in the 'Styles' page (Display
	  tabs adjust accordingly).  (38.152)

	- Fixed bug with default start positions if the relevant packed
	  data entry doesn't exist.  (38.150)

	- Added button to launch App Manager from General Page.  (38.150)

	- Can now redefine hotkey!  Only the keycode can be specified;
	  Snarl creates both hotkeys using the same keycode.  Of note
	  is that the creation function only fails if the Prefs hotkey
	  cannot be created.  (38.149)

	- Snarl now sends a SNARL_NOTIFICATION_CLOSED to the reply
	  window if the user clicks on a notification's close gadget.
	  [Specially requested by Sven].  (38.148)

	- 'About' page improved.  (38.147)

	- Minor tweaks to Preferences Panel content.  Snarl now
	  uses large icon (128x128px) when it registers itself.
	  (38.146)

	- Can now specify per-class notification position. :) Wasn't
	  that hard to add after all... (38.145)

	- Built-in styles reworked as 'Classic' style engine and
	  significantly tidied up (reduced class count again).
	  (38.144)

	- Slight re-juggling of the 'Display' tab in the Preferences
	  Panel.  Default notification position is now in the 'Class
	  Defaults' sub-page although it currently *still* applies
	  globally (but it does leave the door open for per-class
	  postion setting).  (38.144)

	- Toggle buttons on 'General' page were setting the correct
	  switches but weren't writing the config file out - now
	  fixed.  [Found by Sven].  (38.144)

	- Significant rewrite of entire style management system.
	  Style Packs are now known as Style Engines and Styles
	  themselves (in a programming sense) are now known as
	  Style Instances.  A new type library has been created
	  which covers this and should be used in lieu of the now
	  deprecated snarl.tlb.   In addition to a much cleaner
	  code layout, a number of internal objects have been
	  replaced with structs (UDTs) and the StyleRoster has had
	  a full makeover which has added a bunch of useful helper
	  functions (and removed all the useless ones).   Styles
	  can now specify a preview image which gets displayed
	  in the 'Styles' tab of the Preferences Panel.  The preview
	  images must be in the Style's path and should be called
	  either '<scheme>.preview' or 'style.preview' with the
	  former being chosen over the latter if it exists.  This
	  means styles can provide a preview image per-scheme or
	  simply one for all schemes.  (38.143)

	- T_ACTION_SHOW_NOTIFICATION icon uses a different icon if
	  the specified application was registered with Snarl.
	  (38.143)

	- Network protocol firming up.  We now support application
	  registrations and revocations, as well as (minimal) class
	  additions.  (38.143)

	- Some internal code-saving done with new TApp.Show() and
	  TAlert.Show() functions.  TAlert.Show() decodes the passed
	  parameters in relation to the class it represents (it also
	  figures out duplication suppression).  TApp.Show() simply
	  calls TAlert.Show() after figuring out whether it needs to
	  provide it's hWndReply and uReplyMsg values.  (38.143)

	- New V39 'friendly' class names now show up in Prefs Panel
	  (38.140).

	- Now processes new /etc/startup-script file (unless the
	  user blocks it by holding down either CTRL key during
	  startup).   This file is managed by the new Snarl App
	  Manager using the -add and -remove command line options.
	  (38.139)

	- Changes to the way mouse button clicks are handled by a
	  notification had screwed things up a bit in that mouse
	  capture wasn't released until *after* a notification had
	  disappeared.  Now fixed.  (38.138)

	- New WM_MANAGE_SNARL token - SNARL_RELOAD_CONFIG (9) tells
	  Snarl it's config file has been updated and should be
	  reloaded.  Note that this is for future implementation and
	  should not be used at the moment.  (38.137)

	- Released as R2.1b1.  (38.136)

	- Added new E_SNARL_CLASS_DELAY_DUPLICATES class flag (new
	  API only).  If specified, Snarl will suppress duplicate
	  notifications that happen within a specified quantum.  The
	  quantum is configurable (although not via the GUI) and
	  defaults to 2000ms with a minimum setting of 500ms.
	  (38.135)

	- 'About' page now loads up read-me.  (38.135)

	- 'Styles' page no longer has a margin.  (38.135)

	- 'Listen for incoming Snarl notifications' checkbox was
	  permanently greyed out.  Now fixed.  (38.135)

	- Removed all references/code relating to Brian's Vortex
	  framework.  (38.135)

	- Added new SNARL_NOTIFICATION_MIDDLE_BUTTON notification,
	  sent (surprisingly) when the user clicks the middle mouse
	  button on a notification.  Note that the notification is
	  *not* removed after sending the message; it's down to the
	  calling app to handle it appropriately.  (38.133)

	- Added support for right-click menu on a notification.  To
	  enable a menu, send Snarl a SNARL_CHANGE_ATTRIBUTES with
	  SNARL_ATTRIBUTE menu as the menu to change and the Id of
	  a previously created notifcation.  The value parameter
	  defines the menu content in a <item>#?<id>|... format.
	  Separators can be added by including a blank item (i.e. ||)
	  in the value parameter.  To specify an item is greyed out
	  use -1 as the <id> value.  Submenus are not currently
	  supported.  All this is private and will be documented in
	  V39.  (38.132)

	- Notifications displayed using a class are now suppressed
	  (not displayed) if the title and text are identical to the
	  previously displayed notification for that class.  (38.132)

	- New internal NotificationRoster object has meant a lot of
	  global module code could be moved into a class.  Means nothing
	  on the outside, but things are slightly neater internally.
	  (38.132)

	- Added JSON handling code.  Still rather rudimentary at the
	  moment but incoming JSON packets sent to the local host (i.e.
	  127.0.0.1) should now be recognised and displayed.  (38.132)

	- Slight (but significant) interface change to notifications:
	  now Snarl ignores a mouse button release if it's either over
	  a different client area than when it was pressed or outside
	  the notification altogether.  (38.131)

	- Holding down CTRL while right-clicking a notification close
	  gadget now adds an extra 'Capture Notification' option to
	  the menu.  Selecting this will save a PNG capture of the
	  notification (without the close gadget) to the desktop.
	  (38.130)

	- Added version info and copyright (as URL) to About page.
	  (38.129)

	- snPrivateAddClass() can now have an optional description.  If
	  one is specified, this is used in the 'Registered Classes'
	  list in Snarl Preferences.  (38.128)

	- snPrivateShowNotification() and snPrivateSetClassDefault() now
	  use the calling app's PID.  Also, snPrivateShowNotification()
	  now no longer requires the Title and Text parameters.  (38.127)

	- SNARL_UNREGISTER_APP now refreshes the app list if Snarl's
	  preferences panel is open.  (38.125)

	- Lots more work done to private functions. snPrivateRegisterApp()
	  now has its own dedicated command - SNARL_REGISTER_APP - and,
	  importantly, the order of the passed parameters has changed.  It
	  must also pass the Pid of the registering app to Snarl - without
	  this the call will fail.  snPrivateUnregisterApp() has also been
	  changed: it too has it's own command - SNARL_UNREGISTER_APP - and
	  now no longer needs any parameters, instead the api must pass
	  the calling app's Pid which Snarl uses to find the app and
	  unregister it.  This now means that *one application can only
	  register once with Snarl* which makes a lot more sense really.
	  (38.124)

	- Made some other changes to private constants and functions.
	  (38.119)

	- snPrivateRegisterConfig2() renamed to snPrivateRegisterApp(),
	  snSetAlertClassDefault() renamed to snPrivateSetClassDefault()
	  and snPrivateRegisterAlert() replaced with snPrivateAddClass().
	  Told you not you use them, nerrr.  Also added new
	  snPrivateUnregisterApp() although this is simply a renaming of
	  snRevokeConfigWindow() - it doesn't even qualify for a new
	  command message. (38.118)

	- We now take note of a class default timeout when displaying
	  a notification.  (38.118)

	- Fixed bug in EZ Style which was incrementally offsetting text
	  to the right each time a notification was updated.  (38.118)

	- Built-in styles version number changed to m.n (as opposed to
	  v.r) to follow that of EZ Styles.  Author is now returned as
	  'full phat products'.  (38.117)

	- Fixed bug with built-in styles always returning Halon instead
	  of the requested one.  (38.117)

	- Released as R2.06.  (38.113)

	- Added missing Glass Schemes and renamed Bubblegum schemes
	  to match previous ones.  (38.113)

	- EZ Style now trims title text to fit to a single line.  (38.113)

	- Style preview text changed slightly.  (38.113)

	- If the font specified in an EZ Style doesn't exist, we now
	  default to using Tahoma.  The point size specified is still
	  honoured however.  (38.112)

	- Implemented 'EZ Styles' - text-based config files which allow
	  for styles with multiple schemes.  Functionality is fairly
	  good considering the basic limitations and the 'Glass' and
	  'Bubble Gum' styles have been completely replaced with EZ
	  Styles.  (38.111)

	- 'Cancel' button on prefs panel is now 'Close' instead.  (38.111)

	- Added two new private functions - SNARL_LOAD_EXTENSION and
	  SNARL_UNLOAD_EXTENSION - which load and unload an individual
	  extension respectively.  SNARL_LOAD_EXTENSION expects the full
	  path to the extension's folder; SNARL_UNLOAD_EXTENSION expects
	  the extnension's short name (i.e. the name of the extension's
	  enclosing folder).  These functions  will be documented in the
	  fullness of time but they are not considered to be for general
	  use.  (38.110)

	- Fixed bug in Extension Roster which would send a SNARL_EXT_QUIT
	  to an extension even if it was disabled.  In most cases this bug
	  went unnoticed but disabling the SnarlClock extension would cause
	  Snarl to crash on exit.  (38.103)

	- Released as R2.05.  (38.102)

	- Fixed stupid bug which caused Snarl to crash when Save button in
	  Preferences was clicked.  (38.102)

	- Released as R2.04.  (38.101)

	- Snarl was ignoring a WM_CLOSE sent to it.  Now fixed.  (Thanks to
	  Toke Noer for spotting that one).  (38.100)

	- Can now define an 'ACK string' which Snarl will attempt to execute
	  when a notification is left-clicked (ACK'd).  This can be set on
	  a per-alert class basis (using snSetAlertClassDefault()) or once
	  a notification has been displayed using new snChangeMessage()
	  [SNARL_UPDATE_ELEMENT] private function.  All of this is currently
	  *private* and is due for documentation in V39.  If a notification has
	  an ACK string assigned to it, Snarl will simply call the Windows
	  ShellExecute() function with the contents of the string as the <File>
	  parameter - this allows for non-files (e.g. URLs) to be used.  If
	  a notification has a valid reply window and message this is still
	  sent after the ACK string has been processed.  (38.94)

	- Added new snSetAlertClassDefault() [SNARL_SET_ALERT_CLASS_DEFAULT]
	  private function which allows the caller to set specific defaults
	  for a previously registered alert class.  Currently supported
	  defaults are the notification title, timeout, icon and sound.  These
	  are used by both snShowMessageEx() and snShowMessageExByApp() if
	  any of the corresponding values passed are blank.  The timeout
	  default is not actually implemented as yet.  (38.84)

	- If the Vortex framework is available we automatically (for now)
	  start listening for notifications.  We support notification types
	  (classes under Snarl) which are registered automatically.  Snarl
	  uses two local icons - remote_app.png for the app's entry in
	  the list and remote.png in the Snarl itself.  (38.83)

	- Network tab now appears if Brian's Vortex framework is
	  accessible.  (38.83)

	- Right-clicking the close gadget of a notification now pops up
	  a context menu which allows the user to close the specific
	  notification, all notifications created by the same app, or
	  all notfifications.  This replicates the CTRL/SHIFT-CLICK
	  functionality already in place.  (38.82)

	- Renamed "Applications" tab to "Apps".  (38.82)

	- Added new "Display" preferences tab and moved parts of the
	  "General" tab content into it.  Also added new font smoothing
	  options which can be utilised by styles if required.  Options
	  are (MelonType [0], None [1], Anti-aliasing [2], ClearType [3],
	  or Windows Default [4]).  The MelonType setting can also
	  utilise a 'Contrast' percentage value.  (38.82) 

	- Added new "Themes" preferences tab and moved all the "Display
	  Options" content into it.  (38.82)

	- Added snShowMessageExByApp() which uses new SNARL_EX_SHOW_BY_APP
	  command.  This is currently *private* and scheduled to be formally
	  documented in V39.  This command allows applications to display
	  extended notifications without having to provide a valid HWND,
	  instead the application's name is used to identify the app.  This
	  can be useful for languages or applications which do not provide
	  easy access to an HWND but the obvious limitation is that Snarl
	  cannot send left or right click notifications back to the app.
	  (38.81)

	- Released as R2.0.  (38.79)

	- Default style/scheme is now "Glass/Smoke".  (38.70)

	- Made some small but significant changes to Snarl's startup code -
	  specifically around when it broadcasts its SNARL_LAUNCHED and
	  SNARL_QUIT messages.  Hopefully this should now stop some special-
	  case weirdness where notifications are displayed before the style
	  roster (and, indeed, Snarl itself) are fully up and running.  (38.69)

	- Fixed bug which meant that for both SNARL_REGISTER_CONFIG_WINDOW and
	  SNARL_REGISTER_CONFIG_WINDOW_2 the applications list *wasn't* being
	  updated if either of these calls succeeded (they return an M_RESULT
	  not a BOOL).  (38.66)

	- Moved (and renamed) the two Style interfaces into a separate tlb and
	  removed the now redundant interfaces from within the app itself.
	  The new type library will be installed and registered by the RC2
	  installer.  (38.65)

	- Built-in style pack now looks for %app_data%\Snarl\Styles\.bubblegum
	  which, if found, is used to configure the "BubbleGum" style.  This
	  configuration is on a per-style (as opposed to per-scheme) basis so
	  changes apply no matter which scheme is selected.  Note that this
	  is really only intended to demonstrate functionality; no .bubblegum
	  is created if it doesn't exist (although you can use the melon
	  Configuration File Creator tool to create one).  (38.64)

	- Released as RC1 (38.63)

	- Added snPrivateRegisterConfig2().  This extends snRegisterConfig2()
	  by allowing a large icon (ideally 256x256 pixels) to be specified
	  as well as the small icon for the registering app.  If a large icon
	  is specified, Snarl will attempt to use this in the registration and
	  unregistration alerts it displays.  Note that this function is
	  currently private and is due for documentation in V39.  For now it
	  should only be used under direct guidance from application developers.
	  (38.62)

	- Added compiler constant EXCL_PUBLIC which will exclude public
	  features of mSnarlPrivate_i when both includes are referenced.
	  As mSnarlPrivate_i and mSnarl_i are not really compatible the
	  only time this really only applies to the Snarl code itself.  (38.61)

	- Tidied up includes.  Moved commented-out Unicode support into new
	  mSnarlUnicode_i.bas include file.  Created new mSnarlPrivate_i.bas
	  include file which contains as yet unofficial functions.  (38.61)

	- Added snPrivateRegisterAlert() which uses SNARLSTRUCT->LngData2 to
	  specify additional flags for the alert.  The only flag currently
	  defined is SNARL_ALERT_DISABLED which registers the alert as
	  disabled.  Note that this function is currently private and is
	  due for documentation in V39.  For now it should only be used
	  under direct guidance from application developers.  (38.60)

	- =====

	- Removed references to "default_opacity" and "default_dye_colour" as
	  these are no longer used.  (It's up to the style to determine how
	  it looks now).  All Snarl's are displayed at maximum opacity (255)
	  in order to make the fading rountines simpler.  Styles can still
	  generate transulcent Snarls by simply drawing their content
	  accordingly.  (38.18) 

	- =====

	- Version bumped to V38.  (38.1)

	- Version, etc. changed to R1.6 final.  (37.85)

	- Released as RC-2.  (37.84)

	- SNARL_UPDATE and not specifying anything in IconPath would kill any
	  existing icon.  Now fixed.  (37.84)

	- SNARL_IS_VISIBLE now returns False once the notification starts fading
	  out, not once it's finally disappeared.  Suggested by Sam Listopad (37.80)

	- SNARL_UPDATE now resets the timeout value to what it was when the
	  notification was first displayed.  Suggested by Sam Listopad. (37.80)

	- New icons for the Preferences panel.  (37.78)

	- We now return M_NOT_IMPLEMENTED for invalid standard command values.
	  Oops.  (37.78)

	- About box revised slightly.  (37.78)

	- Application Registered/Unregistered notifications are no longer shown
	  for Extensions.  (37.76)

	- Snarl now registers itself and creates three alerts: Welcome Message,
	  Application Registered and Application Unregistered.  Should be fairly
	  self explanatory.  (37.74)

	- More debug output added.  (37.70)

	- Released as RC-1.  (37.61)

	- VB version of include file reworked to resolve bugs with the new UTF8
	  conversion functions  (basically, under VB, characters such as £ (UK
	  Pound Sterling symbol) and € (Euro currency symbol) were being lost.
	  (37.61)

	- Sound notifications improved slightly.  Also, system sounds can now
	  be played by prefixing the sound name (e.g. 'MailBeep') with a '+'
	  symbol.  (37.61)

	- Extension manager now sends HWND_SNARL in the hWnd parameter of the
	  WndProc() hook so that extensions can distinguish between messages
	  from the Extension manager and those from a window.  Note that
	  HWND_SNARL is *not* a genuine window handle; extensions which require
	  a handle to the Snarl Dispatcher should use snGetSnarlWindow().  (37.59)

	- Alerts list improved slightly.  Now, when clicking a checkbox, only the
	  icon is updated rather than the whole list content.  (37.59)

	- Various snxxx() functions weren returning True/False instead of an error
	  number.  Fixed.  (37.57)

	- snIsVisible() handling was broken, now fixed.  (37.57)

	- Added support for new snUpdateTimeout().  (37.57)

	- g_UnloadExtensions() now frees up extension dlls correctly.  This means
	  installers should be able to install over existing extensions.  (37.51)

	- g_GetExtensions() now checks a new file called 'excluded' in the extensions
	  folder.  Names of extensions that appear in this file are not loaded.  The
	  file is a standard melon config file (except it has no extension) with a
	  single [exclude] section.  (37.37)







	To Do

	- V41 API

		- sn41AddClass() should return unique token				DONE

		- sn41Notify() should use class token or zero to create
		  an anonymous notification						DONE

		- KeyLock extension

		- Dead Man's Handle extension

		- Clock 2.5

		- netvold

		- apptd



	- Meter Styles

					Settings	Factory	
					Panel		Settings	Schemes		Meter
				-----------------------------------------------------------------
		- Just Black
		- iPhoney		OK		OK		OK		OK
		- Minimal		OK		OK		OK		OK
		- Sony
			- Icon pos not implemented, icon show not implemented
			- PS3 black gradient needs improving

		- Metro			OK		OK		OK		OK
		- Smooth		OK		OK		OK		OK

		- (1) - doesn't restore text colour correctly
		- (2) - doesn't display meter percent

	- Extensions - V40 extensions don't display name correctly



Event				DnD	Sticky
-------------------------------------------------------------------------
full-screen app in f/ground	SET	n/a
computer locked			SET	SET		either/or
screensaver started		SET	SET		either/or
idle				SET	SET		either/or

Set DnD if:
	full-screen app in f/ground
	computer locked
	screensaver starts (how to detect is s/s stopped?)
	idle

During g_RemDNDLock()...
	- check if zero (i.e. DND disabled)
	- if missed count > 0 then show "while you were away/there were <n> notifications"
	- clicking notification displays missed notification window


SSL2 File Format
----------------

An SSL2 file is a standard text file which follows the INI file format.  It doesn't include [section] blocks however.  Defined entries are:

target=<path to launch> REQUIRED
args=<command line parameters>
pwd=<working directory>
show=<normal|maximised|minimised>



Source: readme.txt, updated 2015-01-22