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>