Commits on Oct 9, 2012
  1. 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.  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.  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.
    committed Oct 9, 2012
Commits on Oct 8, 2012
  1. Major changes: Terminal() now supports turning on/off 'a…

    …utowrap 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.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.  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-'.
    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.
    committed Oct 8, 2012
Commits on Oct 5, 2012
  1. Convenience Plugin: Added registerSyslogConvenience() to the convenie…

    …nces. 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).
    committed Oct 5, 2012
  2. Added support for ESC+Z terminal type reporting.  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).  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.  Fixed a bug where Terminal.reset() wasn't properly resetting the current charset back to the G0 default.  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.
    committed Oct 5, 2012
Commits on Oct 4, 2012
  1. gateone.js: Made a few adjustments here and there to fix ⌘-v pasting …

    …on Macs. ⌘-c didn't need any adjustments.
    committed Oct 4, 2012

    …ng 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.
    committed Oct 4, 2012
Commits on Oct 2, 2012
  1. gateone.js: Fixed a bug where the "monitor for activity" and "monitor…

    … for inactivity" checkboxes would stay checked even if the terminal you were viewing didn't have the feature enabled. it will now stay in synch with whatever terminal you're currently viewing.
    Documentation:  The most minor of wording changes.
    committed Oct 2, 2012
Commits on Oct 1, 2012
  1. gateone.js: When resizing terminals the screen will be adjusted upwar…

    …ds to hide the scollback buffer just like it does when a new terminal is created (or when the page is reloaded).
    Playback Plugin:  Removed the logic that moves the terminal screen upwards to account for the playback controls since the aforementioned change to gateone.js now takes GateOne.prefs.rowAdjust into account.
    gateone.js:  Fixed the bug where the terminal screen would become empty if you increased the size of your browser window.  Added the beginnings of printing support.  I have more code to add from a separate branch but am still working out some implementation details.
    committed Oct 1, 2012
Commits on Sep 30, 2012
  1. gateone.js: A bit of code cleanup after last night's commit.

    gatoene.js:  Made it so you don't have to double-click as fast in order to highlight words.  Removed the extra .replace('\r\n', '\n') from Terminal.capture_image() since it was preventing PNG images from being displayed.
    committed Sep 30, 2012
Commits on Sep 29, 2012
  1. gateone.js: Fixed double-click-to-highlight. Apparently I broke it in…

    … the last commit.
    gateone.js:  Added a really blatant message that gets displayed when Firefox refuses to act properly when a user tries to highlight text in a terminal.  Hopefully people will vote for the bug so it will get fixed: <--I tried everything possible to work around this bug while retaining the ability to paste text into a terminal.  Temporarily setting contentEditable *would* have worked if Firefox allowed access to the contents of the the clipboard when an onpaste event fires (but nooo...).  Keeping the location of the pastearea hidden until the user right-clicked on a terminal would have worked too but the very same bug that prevents highlighting text also prevents THAT method from working.  Even with the current (broken) state I think it is better than having a pop-up text entry field where the user can paste information.  Any and all input on this is appreciated.
    committed Sep 29, 2012
Commits on Sep 28, 2012
  1. Merge pull request #149 from Boboss74/patch-3 fix bug about get list of enable plugins
    committed Sep 28, 2012
  2. fix bug about get list of enable plugins

    The old way to get the list kept break-lines.
    Boboss74 committed Sep 28, 2012
  3. Init scripts: Changed the default start runlevels to be just "3 4 5" …

    …instead of "2 3 4 5" since runlevel 2 is not supposed to have networking.
    gateone.js:  Made some changes to the way the grid works in order to work around the Chrome/Chromium bug that scrolls text uncontrollably whenever you click on an element that has a 'translate()' effect applied that moves it down the page.  The bad news is that the new logic is stupidly complicated for what it does.  The good news is that it successfully works around the bug (which has been open for over a year:
    gateone.js:  To simplify the new grid logic a bit I added a new fuction:  GateOne.Visual.resetGrid().  It just sets the grid to its default state with the currently-selected terminal being what's visible on the page with all terminals visible but with a CSS3 transform applied that moves them out of sight.  Also added this function to the documentation.
    gateone.js:  Added GateOne.Visual.disableTransitions() and GateOne.Visual.enableTransitions().  They'll turn on or off CSS3 transitions for the given element by adding or removing the 'noanimate' class.  These two functions have been added to the documentation.
    Themes:  Added a .noanimate class.
    Playback Plugin:  The playback button should be working properly again.
    committed Sep 28, 2012
Commits on Sep 27, 2012
  1. Fixed a bug where log metadata was getting written twice a…

    …t the start of logs.  Fixed a bug in get_or_update_metadata() where you could get a MemoryError exception when acting upon very large log files.  This function will now finalize logs by reading them a little bit at a time, writing the updated log to a temp file, and finally overwriting the original log with the temp one via shutil.move().  This should be much more reliable and safer than the old way.  Fixed a bug where the rows and columns weren't getting set properly in log metadata.  Fixed a bug where if UTF-8-decoded unicode was passed to Terminal.write() it could raise a UnicodeDecodeError exception if special checks were enabled.  Now it will re-encode the text to ensure it doesn't barf futher on in the function.  The output in such situations won't be pretty but at least the terminal will continue running smoothly.  Changed the JPEG regex slightly in order to make it more reliable.  Added a new function:  get_frames().  It is a generator that iterates over all the frames inside of a .golog file.  It reads the file in chunks in order to conserve memory.  Fixed a bug where you could get a MemoryError exception when trying to play back very large log files.  Both playback_log() and flatten_log() are using the aforementioned get_frames() generator to solve this problem.  Changed flatten_log() so that it takes a file-like object as a second argument.  This object will be written to progressively as the log is read instead of reading the entire log into memory and returning the whole thing as one big string.  When pressing Ctrl-C to kill a running log playback it will now exit gracefully instead of printing a confusing KeyboardInterrupt traceback error message.  Polish!
    Logging Plugin:  Updated to be able to use the new way of using flatten_log().
    committed Sep 27, 2012
Commits on Sep 26, 2012
  1. gateone.js: Removed an extra/unnecessary embedded mode check from ter…

    gateone.js:  Fixed a bug where the position of terminals could get wonky if you resize the browser window while screen updates are occurring very rapidly (e.g. top with a .1s refresh rate).
    gateone.js:  From now on when you copy text to the clipboard all formatting will be removed (your selection will be converted to plaintext).
    committed Sep 26, 2012
Commits on Sep 24, 2012
  1. gateone.js: A quick fix for termUpdateFromWorker() where it wasn't ca…

    …lling updateTermCallbacks.
    committed Sep 24, 2012
  2. Fixed a bug where the wrong init script was being installed…

    … on Red Hat and Gentoo systems.
    INSTALL.txt:  Added instructions on how to make Gate One start at boot on Debian/Ubuntu, Red Hat/CentOS, and Gentoo.
    gateone.js:  Fixed a bug where if you clicked on a toolbar icon more than once while a panel was still being drawn/hidden it could get stuck in a state where it would hide the panel every time you tried to toggle it open.
    SSH Plugin:  Fixed a bug in ssh.js where execRemoteCmd() wasn't calling errorback functions when the WebSocket was disconnected.
    SSH Plugin:  When opening a sub-channel fails, execute_command() will now attempt to send a message to the client indicating as such (as opposed to just silently failing).
    SSH Plugin:  Added a little check to open_sub_channel() to ensure that the user's session directory exists before it tries to look inside it for an existing control socket.  This situation could happen if you restarted Gate One and a client tried to execRemoteCmd() before they had completed the authentication process (which creates their session dir).
    committed Sep 24, 2012
  3. Fixed a bug in _spanify_screen() and _spanify_scrollback…

    …() where the logic that tries to reset certain text renditions was catching a ValueError when it should've been catching a KeyError.
    gateone.js:  Moved the logic that writes the scrollback buffer to the DOM to be next to the logic that writes the scrollback buffer to localStorage (just a little organization).
    committed Sep 24, 2012
  4. gateone.js: Changed logInfo() to logDebug() in enableScrollback. No n…

    …eed to fill up the console with unnecessary messages.
    committed Sep 24, 2012
Commits on Sep 22, 2012
  1. Changed it around a bit to be more explicit and reliable.

    Removed the .kate-swp file that accidentally made it into the repo (in gateone/tests/chat).
    Added *.kate-swp to .gitignore to ensure that doesn't happen again.
    setup.cfg:  Changed the package release version from 2 to 1.
    setup.cfg:  Changed doc_files to point to the HTML docs instead of just the README.rst.  So when building RPMs you should get the docs put in the right place (usually /usr/share/doc/gateone-<version>/)
    committed Sep 22, 2012
  2. Added a whole bunch of init scripts to properly daemonize Gate One on…

    … each of the following platforms: Debian/Ubuntu, Gentoo, and Red Hat/CentOS. These should be automatically installed when you run 'python install' and automatically included with the appropriate paths when you create .deb or .rpm packages.
    Added an INSTALL.txt
    Removed MANIFEST and created a  It's better this way.
    Setup configuration:  Removed the tornado dependency from the setup scripts since these dependencies wind up in the .rpm and .deb packages but it is recommended that users install tornado using pip.  If the user forgets Gate One will display a helpful message about this in the logs and refuse to start.
    Documentation:  Rebuilt the docs and added a few things to the release notes.
    committed Sep 22, 2012
  3. gateone.js: Fixed a bug where the scrollback buffer wasn't being writ…

    …ten to the DOM properly in many situations. This required some (minor) changes to go_process.js and its interaction with updateTerminalAction. The whole process of updating the scrollback buffer should be more efficient now.  Changed the default behavior of how the SSL key and certificate are generated:  It will now be assumed that these files are meant to be generated in the GATEONE_DIR if they are unchanged from defaults.  This change will ensure that Gate One will store the generated key and certificates in GATEONE_DIR even if you start it for the first time from outside of that directory (e.g. from an init script).  Changed the default for the 'auth' option from None to "none" (using a string now).  This should be less confusing and more reliable.  Fixed a bug where if you changed the cookie_secret with auth="none" it could result in pre-authenticated browsers being unable to authenticate.  When dtach=True, call a screen resize event two seconds after a dtached terminal is reattached.  This should fix the problem of terminals not having the correct number of $ROWS and $COLUMNS after Gate One is stoped & started.  It also fixes the problem of terminals being completely empty (black screen) after resuming dtached terminals.  The call to resize() inside of Multiplex.spawn() has been changed to occur after a short timeout (2 seconds).  This seems to be very effective at ensuring that $ROWS and $COLUMNS are set correctly after a new terminal is created.  An optional *path* keyword argument has been added to gen_self_signed_ssl(), gen_self_signed_openssl(), and gen_self_signed_pyopenssl().
    Documentation:  Added info about the new plugins.conf feature to the Release Notes.  Formal documentation on that will have to wait until after 1.1.
    Playback Plugin:  Fixed a (minor) client-side infinite loop that could occur when a terminal gets closed before the playback controls were added.
    committed Sep 22, 2012
Commits on Sep 20, 2012
  1. gateone.js: Minor change to fix WebSocket detection in Safari.

    Removed the plugins.conf that was included with the last pull request
    (users should make their own).
    committed Sep 20, 2012
  2. Merge pull request #146 from cloud9ers/master

    Configuration to allow loading specific plugins only
    committed Sep 20, 2012
  3. Modified code to check for a plugins.conf file, if it exists and cont…

    …ains data, Gateone will load only the mentioned plugins.
    else it will just load all plugins as usual
    tabdulradi committed Sep 20, 2012
Commits on Sep 19, 2012
  1. gateone.js: Removed a duplicate WebSocket check and made changes to t…

    …he other one to make it more reliable.
    Documentation:  Added a new Release Notes section in preparation for the coming 1.1 release.
    committed Sep 19, 2012
Commits on Sep 18, 2012
  1. Merge pull request #144 from Boboss74/patch-2

    ssh.js: fix wrong var used.
    committed Sep 18, 2012
  2. ssh.js: fix wrong var used.

    Boboss74 committed Sep 18, 2012
  3. Fixed a bug in Terminal.insert_characters() where it was…

    … calling pop() on the second dimension of the screen instead of the first.
    committed Sep 18, 2012
  4. Added a new function: unicode_counter(). It is just like…

    … pua_counter() except it generates incrementing unicode characters starting at unichr(1000) in order to provide a larger namespace. It turns out that on narrow builds of Python the 156-character namespace of pua_counter() isn't enough to make it through the full spectrum of text renditions in without going all wonky. Terminal.renditions_counter is now using unicode_counter() instead of pua_counter(). NOTE: pua_counter() only has the aforementioned problem on narrow builds of Python where the total number of possible Unicode characters is limited. Also note that on narrow builds of Python there will still be a limit of 156 images on the screen at the same time since pua_counter() still makes sense for that purpose.  Related to the above, the default value for renditions has been changed from unichr(SPECIAL) to unichr(1000) everywhere.  Fixed a bug in Terminal.insert_characters() where what it does wasn't anything remotely close to what it is supposed to do.  Apparently so few programs utilize this obscure vt100 function that no one has noticed until now.  Fixed a bug in Terminal.clear_line_from_cursor_left() where it wasn't setting renditions properly; often resulting in an IndexError inside of Terminal.write() with certain programs (e.g. midnight commander).  Fixed a bug in spanify_screen() and spanify_scrollback() where it was losing the current character rendition when continuing to the next line.
    Themes:  Lots of text rendition cleanup.  Things that didn't look quite right before (like 'reversed' text with varying colors) should now look perfect.
    committed Sep 18, 2012