<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<link rel="stylesheet" href="../stylesheet.css" type="text/css">
</HEAD>

<BODY>
<h1>Release Notes</h1>
<br>
<b>NOTE:</b> The mechanism and format used to persist settings in Chainsaw is subject to change during this alpha phase.  If you are experiencing problems displaying events in Chainsaw, please delete everything in the $user.dir/.chainsaw directory.
<br>
<h1>1.99.99</h2>
<h2>02 March 2006</h2>
<ul>
<li>Fixed distribution mechanism so that DB and JMS receiver stuff can also be supported in Webstart mode.</li>
</ul>
<h2>25 February 2006</h2>
<ul>
<li>Added a GUI option for VFSLogFilePatternReceiver, enabled by setting the 'promptForUserInfo' param to true.</li>
<li>Added support for creating LogFileXMLReceivers from the receiver pane.</li>
<li>Added VFSLogFilePatternReceiver, LogFileXMLReceiver examples to sample receiver config (available from Welcome tab).</li>
</ul>
<h2>24 February 2006</h2>
<ul>
<li>Added ZeroConf plugin, allowing simple point-n-click connection to detected appenders.  See the <B>ZeroConf</B> tab inside
Chainsaw.</li>
</ul>
<h2>20 February 2006</h2>
<ul>
<li>Using a different file name to load and save global settings (from chainsaw.xml to chainsaw.settings.xml).  <b>NOTE:</b>Users will need to re-apply their application-wide settings or copy chainsaw.xml to chainsaw.settings.xml.</li>
</ul>
<h2>09 February 2006</h2>
<ul>
<li>Receiver help files were missing from the distribution. </li>
</ul>
<h2>06 February 2006</h2>
<ul>
<li>Save/load of custom event columns now supported, as well as column order.</li>
</ul>
<h2>2 February 2006/h2>
<ul>
<li>Revamped build system for easier maintenance and deployment of builds. Fixed issues with Commons VFS and Webstart.</li>
</ul>
<h2>21 November 2005</h2>
<ul>
<li>Added Mac OS X integration, and used jarbundler to create a Chainsaw.app bundle for a native OS X distribution of Chainsaw.</li>
</ul>

<h2>15 November 2005</h2>
<ul>
<li>Added MRU list to File Open area, but only for log4j files at the moment while we work out some kinks.
This MRU list is persited as XML in the .chainsaw directory as mru.xml, so it'll remember again on startup.</li>
</ul>
<h2>22 February 2005</h2>
<ul>
<li>It's been so long since the last build it's a bit hard to remember exactly what has changed, but 
the most significant change has been how log4j and chainsaw gets build, with the addition of the UGLI
interfaces.  log4j is now bundled in a set of smaller jars.</li>
<li>Standalone distribution now includes a basic chainsaw.sh for you Unix folk (I have a Mac now, I have no excuse
not to provide this, be on the look out for a Mac OS X bundle version soon - Paul)</li>
</ul>
<h2>7 December 2004</h2>
<ul>
<li>Changed the default order of columns in Chainsaw to first display ID, level, logger, message and exception</li>
<li>Added default level expressions (example: LEVEL == DEBUG) to the 'refine focus' combobox</li>
<li>Modified Chainsaw initialization logic to load Chainsaw-specified config when specified.  <b>NOTE:</b> Chainsaw will load configurations from BOTH the log4j.configuration system property and Chainsaw's automatic configuration URL if the two are specified</li>
<li>Corrected date pattern format bug (was displaying minutes where it should be displaying months in the detail panel)</li>
</ul>

<h2>5 December 2004</h2>
<ul>
<li>Added CustomSQLDBReceiver example to log4j-receiver-sample config file, Javadoc help menu and receiver panel.</li>
<li><b>NOTE:</b> CustomSQLDBReceiver cannot yet be created through Chainsaw's receiver panel.  It must be created through an XML configuration file.</li>
<li>Improved Chainsaw logging framework initialization logic to ensure receivers are started only after Chainsaw can process the events</li>
</ul>

<h2>1 December 2004</h2>
<ul>
<li>TRACE level now fully supported in Chainsaw</li>
</ul>

<h2>30 November 2004</h2>
<ul>
<li>Internal events are now tagged with application and hostname properties so they route by default to a 'chainsaw-log' tab</li>
<li>Adding TRACE level support to Chainsaw - not yet complete</li>
<li>Improved event routing code</li>
<li>Added LogFilePatternReceiver section to example receiver configuration (available from Welcome tab)</li>
</ul>

<h2>10 September 2004</h2>
<ul>
<li>Modified file, line, method and class checks in tablemodel to avoid null pointers</li>
<li>Added PRE tags around message to display multiline messages correctly in detail/tooltips</li>
<li>LogFilePatternReceiver is now more accurate when checking exception lines</li>
<li>LogFilePatternReceiver now escapes # characters by default in the pattern so that regular expression matching succeeds</li>
<li>LogFilePatternReceiver matches now work with empty strings (.* instead of .+)</li>
<li>Build now provides debug information for Chainsaw classes</li>
</ul>

<h2>9 September 2004</h2>
<ul>
<li>Rewrote LogFilePatternReceiver to add support for multi-line messages and improved parsing logic.  To use this receiver you must now have the ORO library in your classpath (ORO is included in the WebStart version).</li>
</ul>

<h2>2 September 2004</h2>
<ul>
<li>Added Drag & Drop (rudimentary) support to Chainsaw.   You can drag any File to Chainsaw's 
  Tabbed Pane area and it will try to load it.  If there are no events in the file, not a lot happens...</li>
  
<li> Fixed a condition where loading an XML configuration file did not properly use the 
  correct classloader</li>
  
<li> Changed the way the Tabbed Pane functionality works, new tabs are added at the end and
  the new tab is not made active.</li>
</ul>

<h2>20 August 2004</h2>
<ul>
<li>Added DBReceiver to list of known Receivers, although not sure if it'll work</li>
</ul>

<h2>4 August 2004</h2>
<ul>
<li>Fixed Bug 30443 - When opening an XML file, if you hit cancel, Chainsaw opened the file anyway</li>
<li>Fixed Bug 30444 - NPE when trying to open an XML file where one or more events may be spread over a large (>100) number of lines.</li>
</ul>

<h2>31 July 2004</h2>
<ul>
<li>Corrected 'clear refine focus' bug.</li>
<li>Corrected bug that prevented color rules from being created.</li>
</ul>

<h2>28 July 2004</h2>
<ul>
<li>Corrected row selection and detail pane synchronization bugs related selection of nodes in the logger tree and docking/undocking.</li>
<li>Dock now re-selects the docked tab.</li>
</ul>

<h2>26 July 2004</h2>
<ul>
<li>Tab settings file names are now URL encoded.  In order to preserve the usefulness of existing settings files, if the URL-encoded files don't exist, Chainsaw will attempt to load the tab's non-URL-encoded files.</li>
<li>Changed 'scroll to bottom' icon.</li>
</ul>

<h2>25 July 2004</h2>
<ul>
<li>Updated LogFilePatternReceiver to rely on a URL for the file location instead of a file name (<b>fileName</b> param replaced with <b>fileURL</b>)</li>
<li>Added editor support for primitive boolean properties in PluginPropertyEditorPanel (setting the 'tailing' parameter to 'true' on a LogFilePatternReceiver from inside Chainsaw now works)</li>
<li>Updated width and label of 'automatic configuration' app preference to explicitly show it is a URL</li>
<li>Updated height of app preferences frame to show all fields completely</li>
<li>Widened data rate field in status bar</li>
</ul>

<h2>24 July 2004</h2>
<ul>
 <li>Added scroll to bottom menu item, toolbar and ctrl-b accelerator.</li>
</ul>

<h2>22 July 2004</h2>
<ul>
 <li>Corrected 'show all hidden' bug when undocked panels exist.</li>
 <li>Corrected throwable popup not displaying when undocked.</li>
 <li>Undocked logger tree toggle toolbar button now an icon and stays in sync with logger tree visibility state.</li>
</ul>

<h2>21 July 2004</h2>
<ul>
 <li>Added support for shortcutting MSG ~= expressions by using a single word or a single-quote delimited phrase as the expression (see tutorial for more information).</li>
 <li>Applied patch from Stephen Pain which modifies the FileSaveAction so that only the currently viewable (or filtered) events
 are saved in the file.</li>
</ul>

<h2>9 July 2004</h2>
<ul>
 <li>XML decoders now set additional event properties (hostName, application) when they aren't provided in the XML.</li>
</ul>

<h2>8 July 2004</h2>
<ul>
 <li>Corrected a bug in LogFilePatternReceiver that prevented the processing of log files with delimited PROP entries.  Thanks to Pranav Vora for reporting this.</li>
 <li>Modified the event detail layout to escape XML characters in the message.  Thanks to Olivier Bedelet for reporting this one.</li>
</ul>

<h2>1 July 2004</h2>
<ul>
 <li>Selecting a node in the logger tree panel now colorizes the selected node and all child nodes. Disabled when 'focus on' is active or when the 'Root Logger' is selected.  Thanks to Eric Rath for the suggestion.</li>
</ul>

<h2>24 June 2004</h2>
<ul>
 <li>Minor change to 'scroll to bottom' behavior to ensure context menu always matched expected behavior (scroll to bottom wouldn't stay selected in some cases).</li>
</ul>

<h2>21 June 2004</h2>
<ul>
 <li>Modified 'scroll to bottom' behavior:  Selecting the 'scroll to bottom' context menu now selects the bottom row.  Select any row other than the bottom row to deactivate scroll to bottom.</li>
</ul>

<h2>19 June 2004</h2>
<ul>
 <li>Expression rule enhancement:  Added support for evaluating the Timestamp field using the pattern 'yyyy/MM/dd HH:mm:ss' (ticks required).  Milliseconds are ignored (rounded down) during the evaluation of events.  This is true for inequality and equality evaluations.</li>
 <li>Expression rule enhancement:  Level equality evaluations are now case-insensitive.</li>
</ul>

<h2>17 June 2004</h2>
<ul>
 <li>Added application preference to authorize Chainsaw to have a null SecurityManager, which is required under Java Web Start
 so that classes loaded under the non-Web Start ClassLoader can access resources.</li>
 <li>Plugins loaded under Chainsaw now use this Custom classloader</li>
</ul>

<h2>9 June 2004</h2>
<ul>
 <li>Re-build to include the missing JMSReceiver class that got left off... Oooops.</li>
 <li>Applied patch from Stephen Pain to modify the JMSReceiver so that it can be started correctly when it requires a jndi.properties file.
 This patch added a jndiPath property to allow the user to specify the path to the jndi.properties file.</li>
</ul>

<h2>7 June 2004</h2>
<ul>
 <li>Added filterExpression parameter to LogFilePatternReceiver.  If set, only events which match the expression are processed by the receiver.  Thanks to Jim Prewett for suggesting this feature.</li>
</ul>

<h2>6 June 2004</h2>
<ul>
 <li>Modified responsiveness logic used to throttle event processing.  FASTEST setting now performs a yield instead of a wait.</li>
</ul>

<h2>28 May 2004</h2>
<ul>
 <li>Updated LogFilePatternReceiver to correctly process events without exceptions.</li>
</ul>

<h2>27 May 2004</h2>
<ul>
 <li>Fixed 'scroll to bottom' no longer scrolling if log panel's events were cleared.  Thanks to Steven Kearns for finding this.</li>
 <li>Modified shutdown of UDPReceiver - closing socket earlier and notifying threads in order to shut down gracefully.</li>
</ul>

<h2>26 May 2004</h2>
<ul>
 <li>Added the JMSReceiver to the bundled distribution of 'known' receivers.  This will require you to have it's
 dependencies in your System classpath for it to work.</li>
</ul>

<h2>25 May 2004</h2>
<ul>
 <li>Fixed a bug in the SocketNode class that prevented listeners of being notified when the Socket dies.  Unfortunately one
 of the listeners is usually the Receiver, and it then does not know that it should periodically
 try to reconnect again!</li>
 <li>Fixed a bug in the Receivers tree panel where restarting a set of receivers would duplicate them visually.  The plugins where stopped and started, but duplicate tree nodes where being added.  Thanks to Stephen Pain for
 pointing it out. (we 'knew' about it, but we had forgotten...)</li>
 <li>Added a "Restart" action to restart an individual Receiver.</li>
 </li>Tweaked the action buttons available within the Receive toolbar to the more commonly used ones, Play/Pause still available
 from popup menu</li>
</ul>

<h2>23 May 2004</h2>
<ul>
 <li>Ongoing work to improve xml decoder.  Can now display a progress bar when processing files.</li>
</ul>

<h2>21 May 2004</h2>
<ul>
 <li>Corrected a bug in XML decoders which caused a Swing exception when rendering the exception column - discovered by Stephen Pain.</li>
<li>Events loaded from an XML-formatted file are now processed like other events (throttled based on responsiveness setting and conforming to cyclic buffer limits) - discovered by Stephen Pain.</li>
<li>Changed how 'scroll to bottom' is activated and deactivated.  Now, scrolling occurs only if 'scroll to bottom' is selected in the context menu AND the last row is selected.  To deactivate scrolling, select a row other than last row.  To re-activate scrolling, press ctrl-end to select the last row.  (Scrolling is bypassed in two cases: a find is active, or when the bottom row is not selected as described above.)  Scrolling enhancement suggested by Hani.</li>
<li>Removed jdk1.4-specific code - Chainsaw can now be ran on JDK1.3 or greater</li>
<li>Updated XML decoders to handle the processing of large files in a way that prevents out of memory errors.  The conversion of xml to events will use as much processor as possible and may take some time to finish prior to loading events in the application (no visual feedback that the conversion process is ongoing) - discovered by Stephen Pain.</li>
</ul>

<h2>20 May 2004</h2>
<ul>
 <li>Corrected a bug in the XML decoders which prevented XML-formatted events from being processed - discovered by Stephen Pain.</li>
</ul>

<h2>18 May 2004</h2>
<ul>
 <li>Tidied up the Logger Tree Panel's hidden logger functionality.  It's now managed by a popup dialog, freeing up space for the Logger tree itself.</li>
</ul>

<h2>18 May 2004</h2>
<ul>
 <li>Properly included some base JavaDoc into the chainsaw jar, so that it can be accessed via Java Web Start</li>
</ul>

<h2>16 May 2004</h2>
<ul>
 <li>Added 'cyclic buffer size' as an application property</li>
 <li>Changing between tabs now updates detail panel accordingly</li>
</ul>

<h2>13 May 2004</h2>
<ul>
 <li>The first version we decided we needed to have some release notes in... :)
 <li>Fix for LoggingEvent class - connecting Chainsaw v2 to a remote log4j1.2.x  caused a NullPointerException
</ul>
</body></html>