The release below is from prior to Guacamole's acceptance into the Apache Incubator. It is not an Apache Software Foundation release, and is licensed under the MIT license.

Guacamole 0.9.7

The 0.9.7 release of Guacamole greatly simplifies the installation process for extensions and reduces the need for guacamole.properties, providing reasonable defaults where possible. Extensions can now be used to theme, brand, and translate Guacamole, not only to provide custom authentication. In addition to several bug fixes, this release also marks the first public availability of Guacamole in languages other than English, and the first official release with support for Docker.

Simplified extensions

Guacamole extensions are now entirely self-contained .jar files which can be installed simply by copying them into the GUACAMOLE_HOME/extensions directory. The auth-provider and lib-directory properties are still supported for backward compatibility, but are no longer needed. The remaining common properties, like guacd-hostname and guacd-port, now have default values and no longer need to be specified unless your configuration deviates from the defaults.

Each extension now also provides enough information for Guacamole to determine compatibility prior to loading the extension. If an extension is not compatible, and is not forcibly loaded through the legacy auth-provider property, Guacamole will refuse to load the extension and log an error describing the problem.

Theming and translation

In the past, Guacamole extensions could only be used to extend authentication. Extensions can now be used to augment Guacamole’s styling for the sake of theming or branding, or to add additional translations or on-screen keyboard layouts. Multiple extensions can be loaded at the same time by simply placing their .jar files within GUACAMOLE_HOME/extensions, though no more than one extension may provide authentication.

With this translation support in place, Guacamole has been translated into both French and Russian, and those translations have been contributed and merged into the main Guacamole codebase thanks to the generosity of Jerome Charlot and Konstantin Kozhin.

Official Docker support

Version 0.9.7 marks the first release with official support for Docker. Experimental support for Docker and Guacamole 0.9.6 was made available prior to the 0.9.7 release, and this support is now stabilized and officially documented within the Guacamole manual.

Login screen behavior

The Guacamole home screen has little use for a user that has access to only one connection. As of 0.9.7, users will be taken immediately to their connection if only one connection is available. Further, if a user visits a page within Guacamole, but is not logged in, they will no longer be redirected to a distinct login page from which logging in redirects to the home screen. Visiting a page while not logged in now simply results in the page being replaced with a login screen - no redirect occurs. Once the user logs in, the page is allowed to load normally.

Hanging VNC connections

Past versions of Guacamole suffered from occasional hanging connections when VNC was used, typically when data in the clipboard changed. The cause of this rare but annoying phenomenon has now been both explained and fixed.

iOS bluetooth keyboard

When Guacamole 0.9.6 or older is used with iOS and a bluetooth keyboard, a bug in keyboard event handling results in Guacamole only receiving each key press. Without any corresponding key release, pressed keys act permanently stuck. A workaround is now in place which addresses this problem, ensuring pressed keys are released.

Improved audio in Firefox

Although Guacamole has supported audio for quite some time, this audio support has been poor under Firefox. This is not Mozilla’s fault: Guacamole was simply using a Chrome-specific version of the Web Audio API, and thus only supported audio within Firefox using a lower-quality fallback mode. This has been fixed, and the Web Audio API is used wherever supported.

Restricting user accounts

User accounts within the database authentication can now be manually disabled or expired. A disabled account cannot be used, and attempts to login with a disabled account are rejected as if the account did not exist. If a user logs in with an expired account, they are prompted to change their password before login succeeds.

User management regression

Guacamole 0.9.6 was released with a regression that prevented non-admin users with user-creation permissions from editing the users they created. This has now been fixed.

RDP features

Support for specifying the name of the connecting RDP client is now available through an additional client-name parameter. Past releases would simply send the hostname of the guacd server to the RDP server when connecting, but Guacamole 0.9.7 allows this to be explicitly specified on a per-connection basis. Setting this value affects the CLIENTNAME environment variable of Windows RDP servers.

Support for Italian keyboards has also been added - a contribution from Denis Bernacci.

Build/browser warnings

Although guacamole-server is configured to treat warnings as errors during the build process, guacamole-client was not, resulting in several warnings going unnoticed. These warnings have been resolved, and the build process is now configured to treat all warnings as errors. Warnings which were logged by the web browser while Guacamole runs have also been fixed.

Low-level connection/tunnel issues

Several miscellaneous, low-level improvements have been made to the Guacamole HTTP tunnel and request handling structure in general. The size and complexity of functions handling tunnel requests have been reduced, and issues involving mishandling of tunnel reconnect/disconnect have been resolved. Thanks to David Dvora and Vasily Loginov for these improvements.