diff --git a/_releases/1.2.0.md b/_releases/1.2.0.md
new file mode 100644
index 0000000..72cb9e4
--- /dev/null
+++ b/_releases/1.2.0.md
@@ -0,0 +1,411 @@
+---
+
+released: false
+title: 1.2.0
+date: 2020-06-24 02:31:09 -0700
+summary: >
+    Support for SAML 2.0, Wake-on-LAN, and easy switching between active
+    connections, numerous fixes for RDP, improvements to TOTP, database
+    support, and behavior on iOS devices.
+
+artifact-root: "https://dist.apache.org/repos/dist/dev/"
+checksum-root: "https://dist.apache.org/repos/dist/dev/"
+download-path: "guacamole/1.2.0-RC1/"
+checksum-suffixes:
+    "PGP"     : ".asc"
+    "SHA-256" : ".sha256"
+
+source-dist:
+    - "source/guacamole-client-1.2.0.tar.gz"
+    - "source/guacamole-server-1.2.0.tar.gz"
+
+binary-dist:
+    - "binary/guacamole-1.2.0.war"
+    - "binary/guacamole-auth-cas-1.2.0.tar.gz"
+    - "binary/guacamole-auth-duo-1.2.0.tar.gz"
+    - "binary/guacamole-auth-header-1.2.0.tar.gz"
+    - "binary/guacamole-auth-jdbc-1.2.0.tar.gz"
+    - "binary/guacamole-auth-ldap-1.2.0.tar.gz"
+    - "binary/guacamole-auth-openid-1.2.0.tar.gz"
+    - "binary/guacamole-auth-quickconnect-1.2.0.tar.gz"
+    - "binary/guacamole-auth-saml-1.2.0.tar.gz"
+    - "binary/guacamole-auth-totp-1.2.0.tar.gz"
+
+documentation:
+    "Manual"              : "/doc/1.2.0/gug"
+    "guacamole-common"    : "/doc/1.2.0/guacamole-common"
+    "guacamole-common-js" : "/doc/1.2.0/guacamole-common-js"
+    "guacamole-ext"       : "/doc/1.2.0/guacamole-ext"
+    "libguac"             : "/doc/1.2.0/libguac"
+
+---
+
+The 1.2.0 release features support for SAML 2.0, Wake-on-LAN, and a new
+interface for easily switching between multiple active connections. The general
+behavior of the login interface has also been improved, as has the flexibility
+of the TOTP support, which may now be used even with user accounts that do not
+yet exist in the database.
+
+**The 1.2.0 release is compatible with older 1.x components.** You should
+upgrade older components to 1.2.0 when possible, however things should continue
+to work correctly in the interim:
+
+* Extensions written for older 1.x releases can be used by 1.2.0.
+* Components written for the version of the Guacamole protocol used by older
+  1.x releases can be used with components of the 1.2.0 release.
+
+
+New features and improvements
+-----------------------------
+
+### Single sign-on with SAML 2.0
+
+Similar to existing support for CAS and OpenID Connect, Guacamole now provides
+support for SAML 2.0, allowing any identity provider implementing this standard
+to function as a source of identity.
+
+Note that this new extension only deals with determining the identity of users
+that have authenticated via SAML (and redirecting unauthenticated users to the
+configured identity provider so that they may authenticate). The details of the
+connections available to each user must be provided via another extension, such
+as the [database authentication](/doc/1.2.0/gug/jdbc-auth.html).
+
+ * [GUACAMOLE-103](https://issues.apache.org/jira/browse/GUACAMOLE-103) - SAML 2.0 support for user authentication
+
+### Wake-on-LAN
+
+Automatically activating machines using Wake-on-LAN is now supported for VNC,
+RDP, SSH, and telnet connections. Additional connection parameters are
+available which define how the Wake-on-LAN "Magic Packet" should be broadcast.
+If enabled on a connection, the "Magic Packet" will be sent before attempting
+to connect, signaling the desired machine to power up.
+
+ * [GUACAMOLE-513](https://issues.apache.org/jira/browse/GUACAMOLE-513) - Wake on LAN integration
+
+### Easy switching between multiple connections
+
+Users with access to multiple connections may now select from those connections
+within the Guacamole menu while already using another connection. The
+connection name that is displayed at the top of the Guacamole menu functions as
+a drop-down menu from which any accessible connection may be selected.
+
+Once multiple connections are running, connections that are running in the
+background appear as thumbnails in a collapsible panel on the lower-right
+corner of the screen. These thumbnails update in real-time, and clicking on a
+thumbnail will switch to that connection without disconnecting.
+
+ * [GUACAMOLE-723](https://issues.apache.org/jira/browse/GUACAMOLE-723) - Support display of multiple connections within same tab
+
+### Improved login behavior
+
+When the Guacamole login dialog is displayed, the first blank login field will
+now automatically be focused, allowing failed logins to be more easily retried.
+
+In deployments where the login process may be lengthy, such as when dependent
+on a response from a relatively slow database or LDAP server, the login form
+will now disable itself and fade out to indicate that the form has been
+submitted and the login attempt is being processed.
+
+ * [GUACAMOLE-302](https://issues.apache.org/jira/browse/GUACAMOLE-302) - Refocus relevant in-progress login fields after auth failure
+ * [GUACAMOLE-742](https://issues.apache.org/jira/browse/GUACAMOLE-742) - Display feedback while waiting for login
+
+### Using TOTP with non-database user accounts
+
+Guacamole's TOTP support can now be used alongside extensions like LDAP, so
+long as a database is also configured. The former caveat that TOTP users must
+have "Change own password" permission within the database no longer applies,
+and Guacamole's various supported databases can now be configured to
+automatically create user accounts for users that have successfully
+authenticated.
+
+ * [GUACAMOLE-708](https://issues.apache.org/jira/browse/GUACAMOLE-708) - Allow database storage of arbitrary attributes for non-database users
+
+### VNC support for usernames
+
+Guacamole now supports username/password authentication for VNC in addition to
+the standard password-only authentication. VNC servers that require a username
+in addition to a password should now be accessible using Guacamole.
+
+ * [GUACAMOLE-514](https://issues.apache.org/jira/browse/GUACAMOLE-514) - Implement additional authentication methods for VNC
+
+### Granular control of clipboard and file transfer
+
+Copy and paste can now be individually disabled by the administrator on a
+per-connection basis, allowing data transfer through the clipboard to be
+tightly restricted.
+
+File transfer has always been disabled unless explicitly enabled, however this
+support can now be enabled while also disabling download or upload, allowing
+file transfer to be restricted to a single direction.
+
+ * [GUACAMOLE-381](https://issues.apache.org/jira/browse/GUACAMOLE-381) - Allow clipboard access to be disabled
+ * [GUACAMOLE-474](https://issues.apache.org/jira/browse/GUACAMOLE-474) - Allow file upload and download to be enabled separately
+
+### Improved control of LDAP group object structure
+
+Guacamole's LDAP support now allows configuration of the type of groups used to
+dictate access. While Guacamole previously assumed use of the `groupOfNames`
+object class and its `member` attribute, other object classes like `posixGroup`
+may now be used, and their corresponding member attributes may be defined.
+
+ * [GUACAMOLE-300](https://issues.apache.org/jira/browse/GUACAMOLE-300) - Support posixGroup in LDAP Authentication and Group-based Session Admission
+
+### `guacenc` support for MPEG-4 containers
+
+The optional `guacenc` utility that is part of guacamole-server will now
+produce video within MPEG-4 container files, not just raw, containerless MPEG-4
+video streams.
+
+ * [GUACAMOLE-465](https://issues.apache.org/jira/browse/GUACAMOLE-465) - Guacenc should support libavformat
+
+### Support for SSL/TLS database connections
+
+For MySQL and PostgreSQL servers that require SSL/TLS connections, Guacamole
+now provides options to configure this. Additional properties within
+`guacamole.properties` may be specified to allow/require use of SSL, as well as
+to configure the level of certificate validation.
+
+ * [GUACAMOLE-728](https://issues.apache.org/jira/browse/GUACAMOLE-728) - Docker image unable to connect to MySQL8 docker: Public Key Retrieval Not Allowed
+
+### Support for the MariaDB JDBC driver
+
+While MySQL and MariaDB share a common origin and are generally compatible,
+their corresponding JDBC drivers have diverged, and Guacamole's MySQL/MariaDB
+support previously assumed that the MySQL driver would be used.
+
+Guacamole now supports the MariaDB version of "Connector/J" in addition to the
+MySQL version.
+
+ * [GUACAMOLE-852](https://issues.apache.org/jira/browse/GUACAMOLE-852) - Support MariaDB JDBC Driver
+
+### Support for SQL Server instance names
+
+SQL Server supports deploying multiple instances on the same server, with each
+additional instance identified by its own unique name. If using SQL Server, and
+your deployment uses named instances, the name of the instance containing the
+Guacamole database can now be specified using the `sqlserver-instance`
+property.
+
+ * [GUACAMOLE-583](https://issues.apache.org/jira/browse/GUACAMOLE-583) - SQL Instance Strings
+
+Internationalization
+--------------------
+
+### Czech and Japanese translations of the web interface
+
+The web interface of Guacamole has been translated into Czech and Japanese.
+These languages will now be automatically selected if accessing Guacamole
+from a browser where either is set as the preferred language, and can be
+[manually selected](/doc/gug/using-guacamole.html#display-language) within
+Guacamole's preferences.
+
+ * [GUACAMOLE-821](https://issues.apache.org/jira/browse/GUACAMOLE-821) - Add Japanese translation
+ * [GUACAMOLE-781](https://issues.apache.org/jira/browse/GUACAMOLE-781) - Add Czech translation
+
+### Belgian French, Hungarian, and Latin American keymaps for RDP
+
+Keymaps have been added to better support RDP servers which use the
+Belgian French, Hungarian, or Latin American keyboard layouts. As always, bear
+in mind that [the client side of Guacamole is independent of keyboard
+layout](/faq/#does-guacamole-support-my-keyboard-layout). Additional keyboard
+layouts for RDP are mainly of benefit if:
+
+1. Your RDP server does not support Unicode events.
+2. Your RDP server is set to a keyboard layout which is not the default (US English).
+
+If your RDP server is set to US English and supports Unicode events, it should
+not be necessary to select a specific layout. The user's local keyboard should
+simply work, regardless of whether it matches the layout of the RDP server.
+
+ * [GUACAMOLE-625](https://issues.apache.org/jira/browse/GUACAMOLE-625) - Add Spanish Latam keyboard support
+ * [GUACAMOLE-837](https://issues.apache.org/jira/browse/GUACAMOLE-837) - Add RDP keymap for Hungarian keyboard layout
+ * [GUACAMOLE-901](https://issues.apache.org/jira/browse/GUACAMOLE-901) - Keyboard layout for Belgian French
+
+### Updates to the French translation of the web interface
+
+The existing French translation has been updated to take into account recent
+changes to the web interface, adding French translations for portions of text
+which previously would have been displayed in English as a fallback.
+
+ * [GUACAMOLE-759](https://issues.apache.org/jira/browse/GUACAMOLE-759) - update translation fr.json for guacamole-client
+
+Bug fixes
+---------
+
+### Regressions due to FreeRDP 2.0.0 migration
+
+Several regressions were identified following the Apache Guacamole 1.1.0
+release which were due to [the massive migration from FreeRDP 1.x to FreeRDP
+2.0.0](../1.1.0/#migration-to-freerdp-200) and primarily affected use of
+RemoteApp, Hyper-V, and VirtualBox. These regressions have now been fixed, and
+RDP connections involving these technologies should work as expected.
+
+ * [GUACAMOLE-947](https://issues.apache.org/jira/browse/GUACAMOLE-947) - Clipboard error message when connected to the RDP server
+ * [GUACAMOLE-952](https://issues.apache.org/jira/browse/GUACAMOLE-952) - Preconnection PDU support no longer works following migration to FreeRDP 2.0.0
+ * [GUACAMOLE-962](https://issues.apache.org/jira/browse/GUACAMOLE-962) - Cannot connect to VirtualBox RDP following migration to FreeRDP 2.0.0
+ * [GUACAMOLE-978](https://issues.apache.org/jira/browse/GUACAMOLE-978) - RemoteApp session to Windows Server 2016 closes after roughly 2-3 minutes
+ * [GUACAMOLE-979](https://issues.apache.org/jira/browse/GUACAMOLE-979) - RDP settings strings may be double-freed
+ * [GUACAMOLE-1053](https://issues.apache.org/jira/browse/GUACAMOLE-1053) - guacd segfaults when user actively presses keys at RDP disconnect time
+ * [GUACAMOLE-1076](https://issues.apache.org/jira/browse/GUACAMOLE-1076) - Another copy of RemoteApp is launched in case of session reconnect
+
+### Audio input behavior
+
+Following changes to the JavaScript API exposed by browsers for accessing audio
+input streams, support for audio input within Guacamole ceased to function
+correctly. This was due to:
+
+ * A change in the return type of the `navigator.mediaDevices.getUserMedia()` function
+ * Changes in Chrome's autoplay policy
+
+Both causes have been addressed, and audio input should now function correctly.
+
+ * [GUACAMOLE-732](https://issues.apache.org/jira/browse/GUACAMOLE-732) - navigator.mediaDevices.getUserMedia() returns a promises
+ * [GUACAMOLE-905](https://issues.apache.org/jira/browse/GUACAMOLE-905) - Audio input broken on Chrome
+
+### iPad and iOS 13 support
+
+Users of iOS and iPadOS mobile devices reported erratic behavior of the
+Guacamole interface following a system update, ultimately resulting in
+inability to interact with remote desktops using touch mouse emulation. These
+issues were determined to be due to changes in iOS Safari's handling of the
+browser viewport, and have been corrected by updating Guacamole's interface to
+be independent of the aspects that changed.
+
+ * [GUACAMOLE-810](https://issues.apache.org/jira/browse/GUACAMOLE-810) - Ipad screen jumps upwards while user focuses on Text Input.
+ * [GUACAMOLE-883](https://issues.apache.org/jira/browse/GUACAMOLE-883) - Touch mouse emulation no longer works as of iOS 13
+
+### Login screen behavior on Firefox
+
+When logging into Guacamole using Firefox, the "Enter" key could become
+effectively stuck if used to submit the login form. This was due to the lack of
+a corresponding `keyup` event for the key used to submit the form. This issue
+has been corrected such that any tracked keyboard state will not be maintained
+when Guacamole navigates between any of its pages.
+
+ * [GUACAMOLE-817](https://issues.apache.org/jira/browse/GUACAMOLE-817) - "Enter" key may repeat following login with Firefox
+
+### RDP keyboard behavior
+
+Guacamole's RDP support relies on dynamic keymap translation to ensure that
+keyboard behavior is always dictated by the user's own keyboard layout, not the
+keyboard layout of the RDP server. This translation did not function correctly
+when Shift and Caps Lock were combined, as the remote state of Caps Lock was
+not properly tracked.
+
+This has been corrected, and Guacamole will now automatically take Caps Lock
+into account when determining whether additional modifiers need to be pressed
+(and whether any pressed modifiers need to be released).
+
+The German keymap has also been corrected to include a definition for the
+non-dead tilde key.
+
+ * [GUACAMOLE-518](https://issues.apache.org/jira/browse/GUACAMOLE-518) - Shift incorrectly sent for uppercase letters while Caps Lock is active
+ * [GUACAMOLE-859](https://issues.apache.org/jira/browse/GUACAMOLE-859) - Incorrect Caps Lock keysym sent to Windows via RDP
+ * [GUACAMOLE-917](https://issues.apache.org/jira/browse/GUACAMOLE-917) - Key mapping for German keyboards: ~ does not work
+
+### VNC support for TLS
+
+While Guacamole will automatically use TLS for VNC servers that require it, the
+proper locking callbacks required for multithreaded use of TLS were not set,
+resulting in unstable behavior. These callbacks are now correctly specified,
+and connections to VNC servers requiring TLS should function correctly.
+
+Beware that these callbacks are only supported in newer versions of
+libvncclient. If the version of libvncclient installed lacks support for these
+callbacks, a warning will be displayed when building guacamole-server noting
+that TLS may not work correctly:
+
+    checking for rfbClient.LockWriteToTLS... no
+    checking for rfbClient.UnlockWriteToTLS... no
+    configure: WARNING:
+          --------------------------------------------
+           This version of libvncclient lacks support
+           for TLS locking.  VNC connections that use
+           TLS may experience instability as documented
+           in GUACAMOLE-414
+
+ * [GUACAMOLE-414](https://issues.apache.org/jira/browse/GUACAMOLE-414) - Certain VNC servers result in disconnection due to TLS errors
+
+### Rendering of balancing groups
+
+Guacamole is intended to render empty balancing groups as if they were
+connections, keeping the balancing nature of those groups opaque to
+non-administrative users. A regression in the 0.9.10-incubating release broke
+this behavior, causing empty balancing groups to render as any empty
+non-balancing group would. This has been corrected, and empty balancing groups
+should now appear identical to normal connections.
+
+ * [GUACAMOLE-823](https://issues.apache.org/jira/browse/GUACAMOLE-823) - Empty balancing group does not render as connection
+
+### SQL Server connection history query
+
+A bug in the query used by Guacamole's SQL Server support caused searches
+against the connection history to fail, instead producing the following error
+in the logs:
+
+    com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'username'.
+
+The error in the relevant SQL query has been corrected, and searches against
+the connection history should now work as expected.
+
+ * [GUACAMOLE-870](https://issues.apache.org/jira/browse/GUACAMOLE-870) - Connection history query fails against SQL Server
+
+### OpenID redirection loop
+
+In certain cases, Guacamole's OpenID support would redirect the user back to
+their IDP in a loop, despite the OpenID support being correctly configured and
+the IDP behaving correctly. This was due to incorrect handling of the
+`id_token` parameter within the URL, causing Guacamole to behave as if the
+`id_token` were not present at all. This handling has been corrected, and users
+should not encounter a redirect loop if OpenID is correctly configured.
+
+ * [GUACAMOLE-805](https://issues.apache.org/jira/browse/GUACAMOLE-805) - OpenID authentication may redirect to IDP in a loop
+
+### RADIUS challenge rendering
+
+A bug in Guacamole's RADIUS support resulted in the `Reply-Message =` portion
+of the RADIUS challenge being presented to the user as if it were part of the
+actual challenge message. This has been fixed. Only the challenge message
+itself should now be displayed.
+
+ * [GUACAMOLE-769](https://issues.apache.org/jira/browse/GUACAMOLE-769) - Parse RADIUS Challenge Message Correctly
+
+### RADIUS support for MS-CHAPv1 and MS-CHAPv2
+
+Guacamole's RADIUS support was intended to support for MS-CHAPv1 and MS-CHAPv2
+authentication protocols, however this would fail if the JVM in use lacked
+support for the MD4 digest algorithm:
+
+    No such RADIUS algorithm: MD4 MessageDigest not available
+
+An implementation of MD4 is now bundled with the RADIUS support, and both
+MS-CHAPv1 and MS-CHAPv2 should work as expected.
+
+ * [GUACAMOLE-774](https://issues.apache.org/jira/browse/GUACAMOLE-774) - RADIUS support for MS-CHAPv1 and MS-CHAPv2 fails
+
+Miscellaneous fixes/improvements
+--------------------------------
+
+ * [GUACAMOLE-678](https://issues.apache.org/jira/browse/GUACAMOLE-678) - And new UriGuacamoleProperty
+ * [GUACAMOLE-684](https://issues.apache.org/jira/browse/GUACAMOLE-684) - Insufficient Credentials Should Take Precedence over Invalid Credentials
+ * [GUACAMOLE-734](https://issues.apache.org/jira/browse/GUACAMOLE-734) - Update logback-classic version
+ * [GUACAMOLE-736](https://issues.apache.org/jira/browse/GUACAMOLE-736) - guacamole-auth-cas build fails against JDK 11
+ * [GUACAMOLE-740](https://issues.apache.org/jira/browse/GUACAMOLE-740) - Spanish translation contains hard-coded version number
+ * [GUACAMOLE-741](https://issues.apache.org/jira/browse/GUACAMOLE-741) - Spanish translation duplicates "APP.NAME" string
+ * [GUACAMOLE-749](https://issues.apache.org/jira/browse/GUACAMOLE-749) - Filter affects only the first level of the connection permission editor tree
+ * [GUACAMOLE-764](https://issues.apache.org/jira/browse/GUACAMOLE-764) - RDPDR file read/write may be truncated to 32 bits
+ * [GUACAMOLE-772](https://issues.apache.org/jira/browse/GUACAMOLE-772) - Reducing image Docker size for Guacd
+ * [GUACAMOLE-783](https://issues.apache.org/jira/browse/GUACAMOLE-783) - REST API responses are cached in IE 11
+ * [GUACAMOLE-784](https://issues.apache.org/jira/browse/GUACAMOLE-784) - Tolerate port number within X-Forwarded-For header
+ * [GUACAMOLE-818](https://issues.apache.org/jira/browse/GUACAMOLE-818) - Missing some files in the sftp file system
+ * [GUACAMOLE-820](https://issues.apache.org/jira/browse/GUACAMOLE-820) - Filters containing IP addresses do not match connection properties/parameters
+ * [GUACAMOLE-846](https://issues.apache.org/jira/browse/GUACAMOLE-846) - tunnel.uuid not initialized if tunnel becomes UNSTABLE
+ * [GUACAMOLE-861](https://issues.apache.org/jira/browse/GUACAMOLE-861) - Drive Redirection: WINDOWS_TIME wrong calculation
+ * [GUACAMOLE-871](https://issues.apache.org/jira/browse/GUACAMOLE-871) - Support cursor visiblity flag (DECTECM) in the terminal emulator
+ * [GUACAMOLE-884](https://issues.apache.org/jira/browse/GUACAMOLE-884) - Avoid Image where possible without performance penalty
+ * [GUACAMOLE-889](https://issues.apache.org/jira/browse/GUACAMOLE-889) - Mismatching attribute names in the LDAP schema
+ * [GUACAMOLE-897](https://issues.apache.org/jira/browse/GUACAMOLE-897) - Docker support for restricting authentication to database users only
+ * [GUACAMOLE-955](https://issues.apache.org/jira/browse/GUACAMOLE-955) - Untranslated error strings from extensions must not be interpreted as HTML
+ * [GUACAMOLE-958](https://issues.apache.org/jira/browse/GUACAMOLE-958) - Race in guacd client termination
+ * [GUACAMOLE-1059](https://issues.apache.org/jira/browse/GUACAMOLE-1059) - Tolerate RDP protocol violations where possible
+
