terminal.js and terminal_input.js:  Fixed the bug where input was still going to the terminal if other elements were active (e.g. form input fields).
terminal.js and terminal_input.js:  Added some enhancements to the code that detects which terminal is active and sets the cursor to indicate the state.
term_ww.js:  Fixed the bug where links that were already linkified would get re-linified messing them up (was happening to PDFs).
terminal.py:  Fixed a bug where carriage returns would incorrectly apply a newline.
SSH Plugin:  In ssh_connect.py I commented out the lines that auto-assign the username based on the $GO_USER and $USER environment variables so that users will be prompted for their username if not given in the URL.  This allows users to save bookmarks that contain no username so they may change it on-the-fly each time the bookmark is used.
utils.py:  Fixed a bug where older versions of cached files were not being cleaned up properly.
utils.py:  Fixed a bug where get_settings() would run into troubles with strings containing two forward slashes (//).
auth.py:  Fixed a bug where in certain (really obscure) situations applicable_policies() could return incorrect results due to same-name attributes far down the tree.
gateone.py:  Added some error checking when reading in settings on startup.
gateone.py:  Updated to require Tornado 3.0.
gateone.py:  Numerous Tornado 3.0 fixes.
gateone.py:  Separated the code that generates a new 10server.conf into its own function, generate_server_conf()
gateone.py:  Moved the combine_js and combine_css logic into separate functions inside utils.py.  combine_javascript() and combine_css().
app_terminal.py:  Fixed a bug in kill_session() where it just plain wasn't working.  This should close issue #231
utils.py:  Modified memoize() to make it directly Python3 compatible.
terminal.py:  Added a max_scrollback attribute to Terminal that can be set after it is instantiated.
gateone.js:  Added a (small) new module:  GateOne.i18n.  It provides functions for providing localized translations of strings in JavaScript.  It works in conjunction with the changes made to gateone.py (see below).
gateone.py:  Added some new functions related to localization that utilize the new i18n module:  ApplicationWebSocket.send_js_translation() and ApplicationWebSocket.set_locale().  The former sends a JSON-encoded translation dict to the client and the latter sets the user's locale (GUI preference to set this is forthcoming).
onoff.py:  Changed how trigger() calls functions.  It no longer passes in 'self' by default since that can cause issues if you don't do things just the right way.  It makes more sense for GOApplications to just use self.trigger(), self.ws.trigger(), and utils.bind() as needed.  It's one of those situations where it was trying to be smarter than it should be.  It will still fall back to the old method if necessary but it will display a warning message to be more explicit about binding 'self'.
SSH Plugin:  Modified the two initialize() functions so they're wrapped in bind() to work with the change to onoff.py.
utils.py:  Fixed a bug that was preventing options_to_settings() from working with Tornado 3.0.  This should close issue #235
Translations:  Added machine-translated Portuguese translation.  If it works out I'll add more.
Translations:  Started wrapping JavaScript strings in GateOne.i18n.gettext().
gateone.py:  Fixed a typo related to the file_watcher.
gateone.py:  Fixed a syntax error bug that I somehow missed in the last commit.
terminal.js:  Added the ability to work around Chrome's forced keystroke overrides of Ctrl-[0-9] by holding down the shift key.  So if you want to send Ctrl-2 (^@) in Chrome just send Ctrl-Shift-2 instead and it should work.
SSH Plugin (ssh.js):  Fixed a bug where autoConnectURL was getting set to null.  Looks like it was due to a bad copy & paste at some point.
Docs:  Updated the PHP API authentication example to work on both 32-bit and 64-bit systems.
terminal_input.js:  Modified GateOne.Terminal.Input.capture() and GateOne.Terminal.Input.disableCapture() to use addEventListener and removeEventListener instead of things like onmousedown, onpaste, etc.
terminal.js:  Moved the logic that creates the screen+scrollback elements from GateOne.Terminal.termUpdateFromWorker() to GateOne.Terminal.newTerminal().  This should fix the bug where sometimes the bottom of a terminal was behind the playback controls.  Sounds like a counter-intuitive fix because it was a real pain to figure that's what was causing the problem!
terminal.js:  Moved the logic that creates the pastearea from GateOne.Terminal.newTerminal() into its own function:  GateOne.Terminal.newPastearea().  Also cleaned up newTerminal() a bit.
utils.py:  A minor fix for Python 3 compatibility in the valid_hostname() function.
utils.py:  Another minor fix for Python 3 compatibility in the get_or_cache() function.
setup.py:  Added some automatic 2to3 conversion for the termio, terminal, and onoff modules.
gateone.py:  Fixed a couple of bugs related to missing variables in certain locations when running Gate One for the first time.
app_terminal.py:  Fixed the warning message that would appear from OnOffMixin when executing optional escape sequence handlers.
chatdemo.py:  Fixed a bug where you'd get a TypeError in Python 3 trying to create an authentication signature.
accept_certificate.html:  Instead of closing the window it now redirects the user back to the page they came from immediately after loading.
gateone.js:  Changed how GateOne.Net.sslError() handles the situation where Gate One is embedded into another web page and the user has yet to accept the server's SSL certificate.  It will now display a message where the user can click to be redirected to the accept_certificate.html page.
Updated copyright date.
terminal.js:  Added GateOne.Terminal.clearScrollback(term); it just empties the scrollback buffer in memory, localStorage, and in the DOM all at once.  This should resolve issue #241 (https://github.com/liftoff/GateOne/issues/241).
terminal.js:  Added GateOne.Terminal.clearScreen(term); it does exactly what you'd think it does.  This change is also related to issue #241.
terminal.py:  Fixed a bug where the CALLBACK_RESET callbacks were not getting called by Terminal.reset().
terminal/__init__.py:  Modified to use relative import (i.e. '.terminal') since it makes the most sense (terminal.py is in the same directory).
termio/__init__.py:  Modified to use relative import.  Just like above.
gopam.py:  Fixed some issues with Python 3 support.
setup.py:  Now removes termio.pyc and terminal.pyc in addition to the .py files.
setup.py:  Now removes the old location of onoff.py and onoff.pyc
utils.py:  Fixed a bug in drop_privleges() where it would throw a TypeError exception if not given a supl_groups keyword argument.  This would never occur with Gate One since it always passes at least one supplemental group (e.g. 'tty') but it was a bug nonetheless.
gateone.py:  Fixed a bug where you would get an exception converting old server.conf files if the "origins" setting was just "*".
gateone.py:  Fixed a bug where you'd get KeyError exception if you didn't have an 'ssl_auth' setting present in your 10server.conf.  Ditto for 'ca_certs' and 'disable_ssl'.
gateone.py:  Fixed a bug where ApplicationWebSocket.render_style() would throw a TypeError exception when running under Python 3.  It was due to the fact that os.
gateone.py:  From now on when a user is authenticated a log message will be displayed indicating as such.
terminal.py:  Added a new exception:  InvalidParameters.  It gets raised by Terminal() if it is given an invalid value for rows, cols, em_dimensions, and if the given temppath does not exist.  It may be raised for other things in the future (if appropriate).
app_terminal.py:  TerminalApplication.new_terminal() will fall back to using 24x80 for rows/cols if given invalid values.
gateone.js:  Removed unused/unnecessary GateOne.Storage.requiredFiles array.