gateone.js:  WORKED AROUND THE FIREFOX TEXT SELECTION BUG!  While testing the new text transformation function capability I inadvertently discovered a workaround.  As a result I have removed the Firefox-specific message asking folks to vote for the bug.
gateone.js:  Added a new function:  GateOne.Terminal.unregisterTextTransform().  It is just a convenience function for removing patterns from GateOne.Terminal.textTransforms.  A one-liner.
gateone.js:  Changed the way terminal titles are stored...  Instead of storing the terminal title using the 'title' attribute of the terminal container titles will now be stored in GateOne.terminals like X11Title (and everything else).  This is to prevent the annoying tooltip from popping up right at your mouse cursor location when looking at a terminal (it often gets in the way of what you're trying to read).  Note that this also required a tiny little change to the bookmarks plugin as well (since it uses the title to determine whether or not you're looking at an already-connected terminal or the SSH login prompt).
gateone.js:  If an element under the pastearea has an onclick function it will be called when that element is clicked (even though the pastearea is covering it).
gateone.js:  You may now pass a function to GateOne.Terminal.registerTextTransform() as the second argument.  This function will be called on each line of the incoming screen like so:  line = yourFunc(line).  The documentation has been updated to reflect this capability.
go_process.js:  Added the ability to use functions in addition to regular expressions to transform text.  Also, errors encountered with text transforms will now be logged with helpful messages.
Playback Plugin:  A bit of code cleanup; removed unused stuff.
New Plugin:  Convenience.  It just adds some *convenient* text transforms to GateOne.Terminal.textTransforms.  Right now it only supports the output of 'ls -l' but soon it will add conveniences for a great many things.  If a field in the output has a 'gentle' underline that means you can click on it to get more information.  I'm still playing around with the text decoration to indicate 'this is clickable' so feedback is appreciated.  I (eventually) also will be adding GUI to the preferences panel to enable/disable individual conveniences.
Logging Plugin:  Moved the humanReadableBytes() function from the Logging plugin to GateOne.Utils.
gateone.js:  Added support for Petabytes, Exabytes, Zettabytes, and Yottobytes to the humanReadableBytes() function.
gateone.js:  Fixed a minor issue where if you closed a dialog and the previously-active element was go.prevs.goDiv you would have to click on the terminal to have it start accepting keyboard input again.
gateone.js:  Modified GateOne.Visual.displayMessage() slightly:  Messages will now stay visible if the mouse cursor is over them.  This should be useful for reading long messages or copying message text.
gateone.js:  When the screen updates while viewing the scrollback buffer it will no longer automatically scroll to the bottom of the view.  If a keystroke is pressed *that* will scroll to the bottom.  This should allow one to scroll up while something is outputting lines to the terminal without having the scrolling behavior interrupt what you're looking at.
Documentation:  Added information about GateOne.Terminal.unregisterTextTransform().
Documentation:  Updated the description of GateOne.Terminal.registerTextTransform() to make note of the ability to use functions instead of the regex/string combo.
Documentation:  Added information about the new 'title' attribute that's been added to GateOne.terminals.
Documentation:  A few changes to the release notes.
CSS Themes:  Added a new class for SVGs:  svgplain.  Because of rendering issues with the close (X) icon in dialogs, widgets, and panels I had to get rid of the linear gradient.  No idea what causes it but sometimes the SVG close icon will completely disappear.  Switching to a plain fill seems to work around the problem and the difference is barely noticable.
CSS Themes:  Added a .noanimate class to the 'notice' id since it lives outside of GateOne.prefs.goDiv.
CSS Themes:  The 'notice' divs that are created by GateOne.Visual.displayMessage() now have 'float: right; clear: both' applied so their box size will be independent from whatever other messages are currently being displayed.
Text Themes:  Added a new 'clickable' class that can be used to denote text that has had an 'onclick' event assigned to it.  Very useful for text transforms.
Example Plugin:  Updated smoothie.js to the latest version.
gateone.js:  Made a few adjustments here and there to fix ⌘-v pasting on Macs.  ⌘-c didn't need any adjustments.
terminal.py:  Added support for ESC+Z terminal type reporting.
terminal.py:  Renamed Terminal._csi_device_status_report() to Terminal._csi_device_identification() and added a completely new _csi_device_status_report() method.  The reason for this is because there's a separate CSI sequence for proper DSRs (^[*n).  Technically, what I had listed as DSR before was "ident".  Both of these functions will call DSR_CALLBACK as part of their function (since what DSR_CALLBACK does will be identical for both).
terminal.py:  Modified Terminal._csi_device_identification() slightly:  The argument it takes is now optional and it support has been added for the ^[>c and ^[>0c request/response types.
terminal.py:  Fixed a bug where Terminal.reset() wasn't properly resetting the current charset back to the G0 default.
terminal.py:  Fixed a bug where ^N and ^O weren't properly switching between character sets.
go_process.js:  Changes how text transforms are handled:  Instead of processing one line at a time text transforms will be applied to the entire screen as one big multi-line string.  This should be both faster *and* enable the use of more sophisticated regular expressions that require multi-line matches (which are tough in JavaScript).
SSH Plugin:  Modified how get_cmd_output() works a bit to make it more reliable.
Convenience Plugin:  Added registerSyslogConvenience() to the conveniences.  It automatically applies some syntax highlighting to standard syslog format (autodetection\!).  So 'tail /var/log/messages' should look nice.
Text Themes:  Added some syntax highlighting colors as span options (for the Convenience Plugin).
terminal.py:  Major changes:  Terminal() now supports turning on/off 'autowrap mode'.  This means that lines that are longer than the width of the terminal will be wrapped by the browser instead of inside Terminal() *unless* autowrap mode is enabled.  The biggest impact of this change will be if you copy a long line it will now show up as *one long line* instead of a bunch of lines (hard-wrapped based on the width of the terminal).  Some intelligence was added to Terminal.carriage_return() to detect when the underlying program is expecting a hard-wrap even when autowrap is set to False.  This should get the best of both worlds (as a default).
terminal.py:  Terminal.newline() now automatically sets the cursor back to the beginning of the line (CR).  No change in behavior here since Terminal.write() did this on its own previously.
terminal.py:  Renamed Terminal._carriage_return() to Terminal.carriage_return().  Not sure why I had an underscore there originally--there's nothing special or private about it.
gateone.js:  Changed the timeout for enabling scrollback back to 500.  3500ms is too long.
gateone.js:  Modified GateOne.Terminal.termUpdateFromWorker() to only call enableScrollback() if the incoming scrollback buffer is different from the existing scrollback buffer.  This should make terminals slightly more responsive as well.  The only downside to this change is this:  If (and only if) you have lines in the current screen that are longer than the screen's width it can result in the view being scrolled up slightly when resuming from an alternate screen buffer (e.g. you're done editing a file in vim).  This is a rare enough situation and is only mildly annoying so I think it will be OK until I figure out a workaround (low priority unless someone finds it to be a real problem).
gateone.js:  Fixed a bug where if you used middle click to paste highlighted text (note: not the same as native middle-click-to-paste on Unix) it would cause the next paste to also include the previously-pasted text (a double-paste).
gateone.js:  Tweaked the logic that hides the pastearea when the mouse is over it to act in a smoother and more natural fashion.
gateone.js:  Tweaked the logic that adjusts the size of terminals when the browser window is resized.  It will now adjust the size of *all* terminals; not just the one you're looking at.  Also, it will correctly deal with the situation of lines being added then later removed (multiple re-sizes could get a little wonky before this change).
gateone.js:  The terminal will no longer scroll to the bottom when pressing a modifier key (e.g. shift).
gateone.js:  GateOne.Visual.displayMessage() has been tweaked to include a close icon (X) that will make messages go away instantly when clicked.  This was necessary since there's always a possibility that a displayed message could be huge with a long timeout.  It would be really annoying to have to avoid moving your mouse while waiting for it to go away.
Text Colors:  Added some new syntax highlighting classes that could be useful for text transforms and tweaked things a bit all-around.
CSS Themes:  Added span.screen and span.scrollback to work in conjunction with the changes to gateone.js.
CSS Themes:  Added some extra classes for the new close X icon in #noticecontainer.
Logging Plugin:  In logging.js, added support for the additional console.log() options that exist in some browsers.  e.g. console.warn() and console.error().
Convenience Plugin:  Tweaked the IPv4 regex slightly so it won't match on things like 'SomePackage-3.4.5.10.rpm'.
Convenience Plugin:  Tweaked the syslog regex to make use of the multi-line flag ('m').  This should make it more reliable.
Convenience Plugin:  Tweaked the syslog replacement string to make lines clickable...  When you click on a line it will highlight it a bit with a background color.  It could be useful or it could be annoying.  Need actual feedback to make a determination either way.
terminal.py:  From now on when you resize a terminal it will no longer reduce the width of existing lines to fit within self.cols.  Having said that, if a newline is encountered on an existing line that has a width greater than self.cols that line *will* be resized to fit.  This should allow for dynamically resizing terminal windows that contain long (browser-wrapped) lines while also allowing applications like 'top' to function properly.
gateone.js:  Tweaked things a bit related to resizing to make sure that terminals stay scrolled to the bottom.
termio.py:  Moved 'import signal' to the top of the file.  Other parts of Gate One use the signal module all the time so it isn't really a benefit to load it dynamically.
termio.py:  Added signal.SIGWINCH back to the code (uncommented it).  Testing from long ago revealed problems but the logic inside termio.Multiplex() has changed considerably since then and tests have shown it to be reliable in the current code base.
Convenience Plugin:  Clicking on rows in syslog output to highlight them should work more reliably now.
Convenience Plugin:  There are now controls in the preferences panel to enable or disable individual conveniences.
gateone.js:  A few tweaks to pastearea events to make them more reliable.
gateone.js:  Made some minor tweaks to the SVG icons to work around the browser bugs that can make them disappear when various events occur.
gateone.js:  Fixed a minor bug where terminal dimensions weren't being sent properly after saving preferences.
CSS Themes:  Added a max-height to the .panel class to ensure that a scrollbar will appear if the browser window is too small to fit a panel.
setup.py:  Modified walk_data_files() so that it will skip .pyc and .pyo files in addition to .git directories.
gateone.js:  Modified GateOne.Input.capture() to use named functions for goDiv.onmousedown and goDiv.onmouseup so they can be overridden easier by plugins.
gateone.js:  More tweaks to the code that handles copy & paste in various situations.  Sigh, the complexity of copy & paste is ridiculous!
gateone.js:  Related to copy & paste, the pastearea.onmouseover event has been changed to use onmousemove instead.  It is more efficient this way.  It has also been modified to work better with elements in the terminal screen that have the 'clickable' class.  The cursor should stay set to a pointer and 'extra special stuff' that has been assigned to such elements such as context menus will work properly.
All Plugins Static JS:  Made sure that every one of them starts and begins with a newline.  This is so they are easier to delineate (visually) when they're all combined into one big honkin' JS file (combined_js).
CSS Themes:  Added a :hover psuedoclass for the pastearea to ensure that the mouse stays looking like it is hovering over text.
hello_embedded:  MiTrivialhange to make sure it exits without throwing an exception when you press ^C.  No one likes a bad exit.
chatdemo.py:  Trivial change to make sure it exits without throwing an exception when you press ^C.  No one likes a bad exit.
gateone.py:  Added a check for the specific condition where an application embedding Gate One tries to perform API-based authentication but the Gate One server isn't configured for it.  It will now display a helpful error message instead of showing a strange AssertionError exception in the logs.
gateone.js:  Changed the length of time that message from the server are displayed to the user from 5 seconds to 10.  5 seconds isn't long enough if the user gets a specific error message.
chatdemo.py:  Changed the cookie_secret to match what it claimed to be using in the instructional messages that it prints out when you run it.
gateone.js:  Logic has been added to termUpdateFromWorker() so that it can act more intelligently in regards to keeping the terminal scrolled to the bottom of the view.
gateone.js:  Added GateOne.Utils.getCookie(*name*).  Does exactly what you'd expect.
gateone.js:  Added GateOne.Utils.setCookie(*name*, *value*, *days*).  Also does what you'd expect.
gateone.js:  Adjusted pastearea.onmousemove to better handle the situation where a link is under the cursor (it had some issues when the element under the cursor was inside of an anchor tag).
auth.py:  Added a little fix for an edge case where the user's cookie provides a valid user but the client submitted completely different 'auth' data.  This situation will no longer result in the user ending up with a new session every time they connect.
Documentation:  Added the getCookie() and setCookie() functions to the gateone.js docs.
Logging Plugin:  Removed a duplicate line.
Merge remote-tracking branch 'upstream/master'