diff --git a/index.md b/index.md
index 4f36332..15c355a 100644
--- a/index.md
+++ b/index.md
@@ -66,7 +66,7 @@
                 <div class="panel-body">
                     <h4>Download</h4>
                     <p>Our latest release is:<br>
-                    <b><a href="https://www.gerritcodereview.com/releases/2.15.md">2.15.2</a></b>
+                    <b><a href="2.15.md">2.15.2</a></b>
                     </p>
                     <a href="https://gerrit-releases.storage.googleapis.com/gerrit-2.15.2.war" class="btn btn-primary">Download</a>
                 </div>
diff --git a/pages/site/releases/2.12.md b/pages/site/releases/2.12.md
index 6a9f7c8..b73f742 100644
--- a/pages/site/releases/2.12.md
+++ b/pages/site/releases/2.12.md
@@ -3,7 +3,7 @@
 permalink: 2.12.html
 hide_sidebar: true
 hide_navtoggle: true
-toc: false
+toc: true
 ---
 
 Download: **[2.12.7](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.7.war)**
@@ -24,8 +24,6 @@
 | [2.12.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.1/index.html)
 | [2.12](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/index.html)
 
-[TOC]
-
 ## Release Highlights
 
 * New change submission workflows: 'Submit Whole Topic' and 'Submitted Together'.
@@ -606,7 +604,7 @@
 
 ## Bugfix Releases
 
-### 2.12.8 {#2.12.8}
+### 2.12.8
 
 * [Issue 5759](https://bugs.chromium.org/p/gerrit/issues/detail?id=5759):
   Fix `intopic:` search with regular expression.
@@ -628,7 +626,7 @@
 
 * Update `commit-msg` hook to Add `Change-Id` line after `Depends-On:` footer.
 
-### 2.12.7 {#2.12.7}
+### 2.12.7
 
 * [Issue 4930](https://bugs.chromium.org/p/gerrit/issues/detail?id=4930)
 Allow submit of merge commit of a branch that is not a change.
@@ -649,7 +647,7 @@
   only when choosing to clone without the commit hook. Now the URL is the
   same in both cases.
 
-### 2.12.6 {#2.12.6}
+### 2.12.6
 
 * [Issue 4158](https://bugs.chromium.org/p/gerrit/issues/detail?id=4158):
 Notice merged commits even if they appear on a different branch.
@@ -670,7 +668,7 @@
 
 * Prevent double closing of repository when merging changes.
 
-### 2.12.5 {#2.12.5}
+### 2.12.5
 
 * New preference to enable line wrapping in diff screen and inline editor.
 
@@ -715,7 +713,7 @@
   It was possible that changes could be updated in the time between the query
   results being returned and the change being abandoned.
 
-### 2.12.4 {#2.12.4}
+### 2.12.4
 
 * [Issue 4400](https://bugs.chromium.org/p/gerrit/issues/detail?id=4400):
 Fix `AlreadyClosedException` in Lucene index.
@@ -789,7 +787,7 @@
 * [Issue 4036](https://bugs.chromium.org/p/gerrit/issues/detail?id=4036):
 Fix hanging query when using `is:watched` without authentication.
 
-### 2.12.3 {#2.12.3}
+### 2.12.3
 
 * Fix SSL security issue in the SMTP email relay.
 
@@ -852,7 +850,7 @@
 * Show an error message when trying to add a non-existent group to an ACL.
 
 
-### 2.12.2 {#2.12.2}
+### 2.12.2
 
 * Upgrade Apache commons-collections to version 3.2.2.
 
@@ -879,7 +877,7 @@
 Fix internal server error when submitting a change with 'Rebase If Necessary'
 strategy.
 
-### 2.12.1 {#2.12.1}
+### 2.12.1
 
 #### General
 
diff --git a/pages/site/releases/2.13.md b/pages/site/releases/2.13.md
index 7643037..97d6048 100644
--- a/pages/site/releases/2.13.md
+++ b/pages/site/releases/2.13.md
@@ -3,7 +3,7 @@
 permalink: 2.13.html
 hide_sidebar: true
 hide_navtoggle: true
-toc: false
+toc: true
 ---
 
 Download: **[2.13.9](https://gerrit-releases.storage.googleapis.com/gerrit-2.13.9.war)**
@@ -28,8 +28,6 @@
 | [2.13.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.1/index.html)
 | [2.13](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/index.html)
 
-[TOC]
-
 ## Release Highlights
 
 * Suport for multiple database backends for "reviewed" flags (from 2.13.8)
@@ -500,7 +498,7 @@
 
 ## Bugfix Releases
 
-### 2.13.9 {#2.13.9}
+### 2.13.9
 
 * [Issue 6176](https://bugs.chromium.org/p/gerrit/issues/detail?id=6176):
 Fix internal server error when old patch set is not found.
@@ -548,7 +546,7 @@
   The metrics `reviewer_suggestion/query_accounts` and `reviewer_suggestion/query_groups`
   record the latency of querying accounts and groups for reviewer suggestion.
 
-### 2.13.8 {#2.13.8}
+### 2.13.8
 
 * Improvements in "reviewed" flags cache
 
@@ -591,7 +589,7 @@
   Similar to the existing `change indexed` extension point, this allows plugins
   to be notified when an account has been indexed.
 
-### 2.13.7 {#2.13.7}
+### 2.13.7
 
 * Prevent circular module dependency when running in external container.
 
@@ -673,7 +671,7 @@
   inconsistency in memory due to temporary lack of system resources during
   read, which caused transient "file not found" errors.
 
-### 2.13.6 {#2.13.6}
+### 2.13.6
 
 * Allow Git LFS to authenticate via SSH.
 
@@ -746,7 +744,7 @@
 
     * Fix ordering of projects in submodule update.
 
-### 2.13.5 {#2.13.5}
+### 2.13.5 
 
 * [Issue 5200](https://bugs.chromium.org/p/gerrit/issues/detail?id=5200):
 Ensure that indexes are closed properly on shutdown.
@@ -784,7 +782,7 @@
   The generated Gitweb URL contained an invalid 'p' character, and did
   not require authentication for projects not visible to anonymous users.
 
-### 2.13.4 {#2.13.4}
+### 2.13.4
 
 * [Issue 5090](https://bugs.chromium.org/p/gerrit/issues/detail?id=5090):
 Fix overwriting of another user's account external Id.
@@ -818,7 +816,7 @@
   The new endpoint is useful to manually reindex a single account that has
   become stale in the index.
 
-### 2.13.3 {#2.13.3}
+### 2.13.3
 
 * [Issue 4633](https://bugs.chromium.org/p/gerrit/issues/detail?id=4633):
 Filter out unrelated projects when getting project watches from index.
@@ -878,7 +876,7 @@
 * Export prolog runtime in plugin API.
 
 
-### 2.13.2 {#2.13.2}
+### 2.13.2
 
 * Allow to delete caches if not empty when initializing site during upgrade.
 
diff --git a/pages/site/releases/2.14.md b/pages/site/releases/2.14.md
index 3714aeb..dff5e1c 100644
--- a/pages/site/releases/2.14.md
+++ b/pages/site/releases/2.14.md
@@ -3,7 +3,7 @@
 permalink: 2.14.html
 hide_sidebar: true
 hide_navtoggle: true
-toc: false
+toc: true
 ---
 
 Download: **[2.14.3](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.3.war)**
@@ -16,8 +16,6 @@
 | [2.14.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/index.html)
 | [2.14](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/index.html)
 
-[TOC]
-
 ## Release Highlights
 
 * Changes can be assigned to specific users
@@ -288,7 +286,7 @@
 
 ## Bugfix Releases
 
-### 2.14.3 {#2.14.3}
+### 2.14.3
 
 * [Issue 6853](https://bugs.chromium.org/p/gerrit/issues/detail?id=6853):
 Only attempt to parse `polygerrit` URL parameter on `GET` requests.
@@ -361,7 +359,7 @@
 
     * Add `:` to autocompleted predicates in search bar.
 
-### 2.14.2 {#2.14.2}
+### 2.14.2
 
 * [Issue 6472](https://bugs.chromium.org/p/gerrit/issues/detail?id=6472):
 Fix online reindexing for plugin-dependent rules.
@@ -485,7 +483,7 @@
     * [Issue 6693](https://bugs.chromium.org/p/gerrit/issues/detail?id=6693):
       Fix back button behavior for hash redirects.
 
-### 2.14.1 {#2.14.1}
+### 2.14.1
 
 * Add support for Git LFS locking.
 
diff --git a/pages/site/releases/2.15.md b/pages/site/releases/2.15.md
index 6a7a5ae..eb6d208 100644
--- a/pages/site/releases/2.15.md
+++ b/pages/site/releases/2.15.md
@@ -1,14 +1,36 @@
 ---
-title: "Gerrit 2.15 Release (In Development)"
+title: "Gerrit 2.15 Release"
 permalink: 2.15.html
 hide_sidebar: true
 hide_navtoggle: true
-toc: false
+toc: true
 ---
 
+Download: **[2.15.2](https://www.gerrit-releases.storage.googleapis.com/gerrit-2.15.2.war)**
+| [2.15.1](https://www.gerrit-releases.storage.googleapis.com/gerrit-2.15.1.war)
+| [2.15](https://www.gerrit-releases.storage.googleapis.com/gerrit-2.15.war)
+
+Documentation: **[2.15.2](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15.2/index.html)**
+| [2.15.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15.1/index.html)
+| [2.15](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/index.html)
+
 ## Release Highlights
 
-* New change workflows
+* New change workflows for changes not yet ready for full review (formerly
+  Drafts).
+
+* The new PolyGerrit UI is mature enough for most uses.
+
+* Account data is stored in
+  [NoteDb](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/config-accounts.html).
+
+* NoteDb for change metadata is considered stable, and new sites use it by
+  default.
+
+* NoteDb migration for change metadata is available.
+
+* Made several improvements and additions to the documentation to help users
+  find the information they need.
 
 ## Important Notes
 
@@ -19,45 +41,679 @@
 ``` sh
   java -jar gerrit.war init -d site_path
 ```
+### Support for draft changes removed
+
+Support for draft changes and draft patch sets has been completely removed.
+
+In most cases, the new Work-In-Progress workflow is a suitable replacement.
+Note that in the Draft workflow, an individual patch set can be a Draft.
+However, in both the new Work-In-Progress and Private workflows, WIP and Private
+apply to the whole change, not an individual patch set.
+
+When upgrading from an earlier version, draft changes are migrated.
+This applies to all draft changes, or changes with draft patch sets
+(even if the highest patch set is not a draft), as follows:
+
+1. The "Draft" flag is removed from all patch sets.
+1. If the change has been merged or abandoned, no further action is taken.
+1. Otherwise, the change is moved to one of
+    * Work-In-Progress change (this is the default)
+    * Private change
+
+The upgrade process prompts (once) for what Drafts should be migrated to;
+either WIP (default) or Private.
+
+The migration means that some draft patch sets, which were previously hidden,
+might now be visible to some users who could not previously view them.
+
+Change owners can make them private again using the "Mark Private" option
+in the UI, or using the REST API.
+
+### Votes no longer changed retroactively due to permissions
+
+Historically, Gerrit would retroactively change votes on a label when
+permissions for the voting user changed. For example, if a user voted
+Code-Review+2, but then later lost permission to vote +2 (for example, was
+removed from a Maintainers group), all CR+2 votes by that user on open changes
+would suddenly appear as CR+1. In 2.15, this retroactive behavior no longer
+applies: the CR+2 votes remain CR+2, even if permissions were changed.
+
+This new behavior makes label permissions more consistent with other
+permissions: usually, permission changes don't apply retroactively (you can't
+un-submit a change), and the permission is only checked at the time an action is
+performed. It also fixes some technical issues and improves performance of
+reindexing changes.
+
+### Release Signatures
+
+Starting in the 2.14.x bugfix series, all release JARs and documentations are
+signed by the [Gerrit
+maintainers](https://www.gerritcodereview.com/releases/public-keys.md). This
+policy will continue for all future releases.
+
+### New URL Scheme
+
+By default, all Gerrit URLs generated and used by the UI include not just the
+change number but the project name as well.
+
+* `https://gerrit.mycompany.com/1234` becomes
+  `https://gerrit.mycompany.com/c/some/project/+/1234`
+* `https://gerrit.mycompany.com/#/c/1234` becomes
+  `https://gerrit.mycompany.com/#/c/some/project/+/1234`
+* `https://gerrit.mycompany.com/changes/1234` becomes
+  `https://gerrit.mycompany.com/some%2Fproject~1234`
+
+In addition to providing more context to humans reading the URL, this new
+scheme improves performance under NoteDb, and paves the way for load balancing
+a multi-master installation with repository affinity.
+
+Old URLs will continue to be supported, and simply redirect to the new URLs.
+
+### NoteDb for Accounts
+
+Almost all account data is now stored in
+[NoteDb](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/config-accounts.html).
+The account data is migrated automatically during the upgrade process by running
+`gerrit.war init`.
+
+The only account data not stored in NoteDb proper are the groups (remain in
+ReviewDb) and the reviewed flags which were moved to an external database
+(AccountPatchReviewDb) since [2.13](2.13.md).
+
+For Gerrit slaves the
+[branches that contain the account data](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/config-accounts.html#replication)
+must be replicated.
+
+### NoteDb for Changes
+
+With this release, the new Gerrit storage backend,
+[NoteDb](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/note-db.html),
+is officially supported for storing change metadata and is the default storage
+backend for new installations.
+
+For existing sites, migration to the new backend may be done either offline or
+online in a running server.
+
+Support for ReviewDb will be removed in Gerrit 3.0. Gerrit 3.0 will only
+support offline migration; to run an online migration, you must use the 2.15.x
+series.
+
+### Daemon User Setup
+
+The setup documentation now recommends setting up a user named `gerrit` instead
+of `gerrit2`. This username can be anything; the choice of name doesn't affect
+any functionality. However, some example commands in the documentation may
+refer to the new `gerrit` user, so admins might need to tweak them to refer to
+`gerrit2` instead.
+
+### Strict validation on labels
+
+In 2.15, posting a review including a vote on any labels that does not exist or is
+outside of the permitted range based on the ACLs will now always result in a
+failure of the entire operation. Previously, if the "strict labels" option was set
+to disabled in the review input, votes to any invalid labels would be silently
+ignored. This option has now been removed from the [REST API's ReviewInput](#rest-api)
+as well as the [SSH review command](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/cmd-review.html).
+
+CI systems that rely on the non-strict behaviour of earlier Gerrit versions may
+require additional configuration to avoid casting votes to labels which are
+invalid for the change.
+
+Following [feedback on the 2.15 release](https://groups.google.com/forum/?hl=en#!topic/repo-discuss/nMZo3HMgJSY)
+a new configuration option `change.strictLabels` was introduced in [2.15.2](#2.15.2)
+to allow the new strict functionality to be optionally enabled. By default it is
+disabled to maintain backwards compatibility with previous release.
 
 ## New Features
 
+### PolyGerrit UI
+
+* Implement admin interface (projects, groups and plugins).
+
+* Refreshed UI based on material design.
+
+* Add hashtag support.
+
+* Add support to show uploader on change screen.
+
+* Lots of bug fixes.
+
 ### New Workflows
 
-#### Private Changes
+#### Draft, Private, Work-In-Progress
 
-Changes can be
-[marked as private](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#private-changes),
-meaning they are only visible to the owner, reviewers, and users with the
-["View Private Changes"](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/access-control.html#category_view_private_changes)
-permission.
+The draft change feature has been removed, and replaced with two separate
+features:
 
-#### Ignore and Mute Changes
+* [Private
+  changes](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#private-changes)
+are visible only to the owner and reviewers.
+* [Work-in-progress
+  changes](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#wip)
+do not generate notifications.
 
-Changes can be
-[ignored or muted](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#ignore)
+#### Ignore Changes, Mark Reviewed
+
+Changes can be [ignored, or
+marked as reviewed](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#ignore),
 to reduce email notifications and keep dashboards cleaner.
 
-#### Work-In-Progress
+#### Explicitly Record Reverted Changes
 
-Changes can be switched between "work in progress" and "ready to review".
+When a change is reverted via the "Revert" button, this fact is recorded in the
+change metadata of the newly-created revert change, not just in the commit
+message as in the past. A new search operator `revertof:` allows for searching
+for reverts of a given change.
+
+#### Delete Inline Comments
+
+Individual inline comments can be deleted after the fact by site
+administrators.
+
+#### CCs Users By Email
+
+Users may be CCed on changes by entering their email address, even if they have
+not registered an account on the Gerrit server.
+
+This feature is only available when using NoteDb.
+
+#### Publish Comments on Push
+
+When pushing new patch sets on a change or a series of changes, users can
+configure Gerrit to automatically [publish any pending draft
+comments](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#publish-comments-on-push)
+they have on those changes, avoiding the need to click through the web UI to
+publish all comments.
+
+#### Mark Changes Due to Rebase
+
+When diffing two patch sets of the same change that have different parents,
+some differences between the patch sets may be due to the rebase, instead of
+changes between the patch set and its base. These differences are now
+highlighted in the UI (PolyGerrit only), and are not counted towards the size
+of diffs.
+
+#### Improved Push Error Messages
+
+When a push fails because the user does not have the required permission, the generic message
+`(prohibited by Gerrit)` has been replaced with a detailed message describing
+the exact permissions required.
+
+### Documentation updates
+
+With this release, we have updated several sections of the documentation to
+make it easier for users to find the information they need. These updates
+include:
+
+* New [Quickstart guide](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/linux-quickstart.html)
+  to install Gerrit on Linux
+* New [About Gerrit](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/index.html#_about_gerrit)
+  section that helps to introduce users to Gerrit
+* New [Concepts](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/index.html#_concepts)
+  section to explain Gerrit-specific concepts.
+
+We have also made changes to improve navigation throughout the
+documentation.
+
+### REST API
+
+#### Projects
+
+* [ProjectInfo](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-projects.html#project-info)
+  now contains label configuration information.
+
+#### Changes
+
+* [Mark Private](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#mark-private)
+
+* [Unmark Private](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#unmark-private)
+
+* [Ignore](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#ignore)
+
+* [Unignore](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#unignore)
+
+* [Mark as Reviewed](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#mark-as-reviewed)
+
+* [Mark as Unreviewed](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#mark-as-unreviewed)
+
+* [ChangeInfo](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#change-info)
+  now records the change that this change was a revert of.
+
+* [Get Pure Revert](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#get-pure-revert)
+
+* [Delete Comment](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#delete-comment)
+
+* [Apply Fix](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#apply-fix)
+
+* [ChangeInfo](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#change-info)
+  now contains the submitter, for merged changes.
+
+* [ReviewInput](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#review-input)
+  no longer offers the `strict_labels` option. It will behave as enabled with
+  earlier versions of Gerrit. The entire operation will now fail if any of the
+  labels used are not within the user's permitted range based on ACLs or if the
+  label is not configured for the project/branch.
+
+#### Groups
+
+* [GroupInfo](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-groups.html#group-info)
+  now contains a `created_on` field.
+
+#### Config
+
+* [Check Consistency](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-config.html#check-consistency)
 
 ### API
 
+* New Java API for accessing plugins.
+
+* New Java API for accessing custom project dashboards.
+
+* New `getGroups` method in account API to get a user's group memberships.
+
+* New `ChangeReportFormatter` extension point for customizing the report output
+  from `git push`.
+
 * Instances of [IdString](https://gerrit.googlesource.com/gerrit/+/stable-2.15/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/restapi/IdString.java)
   used to return true when `equals` was given a String instance equal to the
   IdString's URL-encoded value. This violates
   [symmetry](https://en.wikipedia.org/wiki/Equivalence_relation#Definition), so
   this behavior was removed: IdStrings now never compare equal to Strings.
 
-### REST API
+### Replication plugin
 
-#### Changes
+* It is now possible to replicate directly to another Gerrit instance.
 
-* [Mark Private](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#mark-private)
+  Is is possible to enable replication to different Gerrit instance by using
+  `gerrit+ssh://` as the protocol name followed by the hostname of another
+  Gerrit server.
 
-* [Unmark Private](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#unmark-private)
+### Hooks plugin
 
-## Bugfixes
+* Username parameters are added to hook invocations.
+
+  When an account parameter is passed to a hook, it gets formatted as
+  `Name (Email)` or just `Name` when the account does not have an email
+  address. If the account's name is not set, the name is "Anonymous
+  Coward". From this information it is not easy for a hook to get the
+  account's username.
+
+  All hooks that take an account parameter now automatically also get a
+  corresponding username parameter. For example if the hooks takes the
+  parameter `--change-owner Name (Email)` it will automatically also get
+  the parameter `--change-owner-username username`
 
 ## Dependency Updates
+
+* Update Apache Commons Codec to 1.10
+
+* Update Apache Commons Compress to 1.13
+
+* Update Apache Commons Validator to 1.6
+
+* Update Apache Mina SSHD to 1.6.0
+
+* Update AutoValue to 1.4.1
+
+* Update Blame Cache to 0.2-5
+
+* Update Bouncy Castle to 1.57
+
+* Update Dropwizard to 3.2.4
+
+* Update Gitiles Blame to 0.2-4
+
+* Update GWT to 2.8.1
+
+* Update Jetty to 9.3.18.v20170406
+
+* Update JGit to 4.9.0.201710071750-r
+
+* Update Joda-Time to 2.9.9
+
+* Update juniversalchardet to 2.0.0
+
+* Update Lucene to 5.5.4
+
+* Update Pegdown to 1.6.0
+
+* Update Polymer to 1.11.0
+
+* Update Soy to 2017-04-23
+
+## Bugfix Releases
+
+### 2.15.3 *(in development)*
+
+* [Issue 8915](https://bugs.chromium.org/p/gerrit/issues/detail?id=8915):
+Fix file handle leak when running GC.
+
+  Upgrade JGit to 4.9.2.201712150930-r.15-g5fe8e31d4 which includes a
+  [fix](https://git.eclipse.org/r/124285) to prevent the file handle
+  leak.
+
+* [Issue 6094](https://bugs.chromium.org/p/gerrit/issues/detail?id=6094)
+and [Issue 9112](https://bugs.chromium.org/p/gerrit/issues/detail?id=9112):
+Add support for Elasticsearch versions 5 and 6.
+
+  Support is added for Elasticsearch versions 5.6 (tested with versions 5.6.9
+  and 5.6.10), 6.2 (tested with version 6.2.4) and 6.3.0.
+
+  Version 2.4 is still supported (tested with version 2.4.6).
+
+  Instead of using the 'Jest' client to communicate with Elasticsearch, the
+  Elasticsearch low level API is now used.
+
+  Support for Elasticsearch is still considered experimental, and is not
+  recommended for production use.
+
+* [Issue 9245](https://bugs.chromium.org/p/gerrit/issues/detail?id=9245):
+Return the correct information in JSON response after moving a change.
+
+  When moving a change by the REST API, the JSON response contained the
+  branch name of the original destination rather than the new destination.
+
+* Fix internal error when moving a change to a branch that does not have a label.
+
+  If a change had a score on a label that was only configured on the
+  original branch, moving to a destination branch that did not have the
+  label caused an internal error.
+
+* Fix internal error when moving a change without specifying the destination.
+
+  Omitting the destination branch in the input caused an internal error.
+
+* Fix internal error when deleting a comment without providing input.
+
+  The input is optional on the [Delete Comment](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#delete-comment)
+  REST endpoint, but calling it without input resulted in an internal error.
+
+* Fix internal error when rebuilding Note DB and a change is missing from Review DB.
+
+* Fix omission of 'branch' values when saving project config.
+
+  The 'branch' values were omitted when saving the config, resulting in them
+  being lost.
+
+* [Issue 9195](https://bugs.chromium.org/p/gerrit/issues/detail?id=9195):
+Strip comment lines out of commit message when creating change.
+
+  When a change was created from the UI (or via the 'Create Change' REST
+  API), and the commit message consisted of only a subject beginning with
+  a hash character (`#`), the change was created with a zero Change-Id.
+
+  This was because lines beginning with `#` are considered to be comments,
+  and are stripped from the commit message by JGit before computing the
+  Change-Id for the commit.
+
+  Before attempting to create the change, Gerrit now strips out any comment
+  lines from the commit message and returns an error if this results in
+  the commit message being empty.
+
+* Fix internal server error when generating email sender name for
+non-existing account.
+
+* Sanitize values of `user.name` and `user.email` from `gerrit.config`.
+
+  The `user.name` and `user.email` settings were being read as-is, which
+  would allow them to be configured with values that may interfere with
+  standard email name/address parsing.
+
+* Fix the default text in the 'Password' field on the 'HTTP Password' screen.
+
+  The default text said "(click 'generate' to revoke an old password)" but the
+  label of the button is actually "Generate Password".
+
+* Add reporting of work queue related metrics.
+
+  Metrics are reported for core work queues. For work queues created by plugins,
+  metrics are not reported.
+
+### 2.15.2
+
+* [Issue 8861](https://bugs.chromium.org/p/gerrit/issues/detail?id=8861):
+Fix generation of change numbers to prevent duplicates.
+
+  When migration to NoteDb was aborted, and then started again later,
+  generated change numbers overlapped with change numbers created in
+  ReviewDb in the meantime.
+
+* [Issue 8931](https://bugs.chromium.org/p/gerrit/issues/detail?id=8931):
+Pass the project name to 'change indexed' event listeners.
+
+  When NoteDb is enabled, the change information is stored in the project's
+  git repository. Without the project name, plugins were not able to retrieve
+  the change information.
+
+* [Issue 8742](https://bugs.chromium.org/p/gerrit/issues/detail?id=8742):
+Fix infinite loop in intraline diff loader.
+
+  A regression introduced in 2.15.1 caused excessive CPU usage when loading
+  intraline diffs.
+
+* [Issue 8697](https://bugs.chromium.org/p/gerrit/issues/detail?id=8697):
+Restore the ability to ignore invalid review labels.
+
+  In 2.15 the `strict_labels` attribute was removed from the review input
+  entity, and Gerrit no longer silently ignores invalid label scores. This
+  caused breakage in CI systems that submit reviews post-merge and don't
+  have different configurations for if the change is already merged or not.
+  For example the Gerrit Trigger Plugin was broken, as
+  [discussed on the Gerrit mailing list](https://groups.google.com/forum/?hl=en#!topic/repo-discuss/nMZo3HMgJSY).
+
+  A new configuration [`change.strictLabels`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.15.2/config-gerrit.html#change.strict_labels)
+  is introduced. When enabled, Gerrit will reject invalid labels, otherwise
+  will silently ignore them. By default it is disabled, for backwards
+  compatibility with previous releases.
+
+* [Issue 8728](https://bugs.chromium.org/p/gerrit/issues/detail?id=8728):
+Allow percent encoding in patch set titles.
+
+* [Issue 8850](https://bugs.chromium.org/p/gerrit/issues/detail?id=8850):
+Fix `reviewerin:` search results when user is added as CC.
+
+  The `reviewerin:` search should only return users that were added as a
+  reviewer, but was also including users that were added as CC.
+
+* [Issue 8817](https://bugs.chromium.org/p/gerrit/issues/detail?id=8817):
+Fix internal server error when listing projects and a repository is not available.
+
+  The new permission backend was throwing an error when a repository could
+  not be found. Now it is simply omitted from the project list.
+
+* [Issue 8643](https://bugs.chromium.org/p/gerrit/issues/detail?id=8643):
+Properly display the status of "Work in Progress" changes.
+
+  When a change was submittable (i.e. had all the necessary labels) but
+  was still in the "Work in Progress" state, its status was displayed as
+  "Merge Conflict" in the change list and the change screen in the GWT UI.
+
+* [Issue 8936](https://bugs.chromium.org/p/gerrit/issues/detail?id=8936):
+Add missing 'Hashtags' label on the change screen in the GWT UI.
+
+* [Issue 8916](https://bugs.chromium.org/p/gerrit/issues/detail?id=8916):
+Allow ownerin predicate to be evaluated by the index.
+
+* Fix double creation of SSH command execution queues.
+
+* Fix timestamp for submodule updates.
+
+  When a submodule was updated by subscription, the same commit timestamp
+  was always used due to the server identity being cached.
+
+* Allow to include username in servlet response header.
+
+  By setting `http.addUserAsResponseHeader`, the servlet response includes
+  a 'User' header that contains the name of the logged in user, enabling
+  reverse proxies to log the name of the user that issued the http request.
+
+* Fix user permission checks in APIs when invoked via the GerritApi.
+
+  Actions were incorrectly being denied because the user validation
+  was comparing user object instances rather than the account ID that
+  they represented.
+
+* Allow to replace the default H2 persistent cache with a custom implementation.
+
+  The default H2 persistent cache can be replaced by a module that implements
+  the `CacheImpl` interface.
+
+  An implementation is provided for postgresql.
+
+* Various logging improvements.
+
+* Hooks plugin
+
+  * [Issue 9015](https://bugs.chromium.org/p/gerrit/issues/detail?id=9015):
+  Add a `submit` hook
+
+    The `submit` hook is invoked synchronously when a change is submitted. If
+    it returns a non-zero exit status, a `MergeValidationException` is thrown
+    and the submit is prevented.
+
+    This adds back the ability to block submit by a hook which was removed in
+    version 2.14 due to the reworking of the `ref-update` hook behavior.
+
+  * Fix repeated instantiation of the `ref-update` and `commit-received` hooks.
+
+    The hooks were not singletons, which caused new instances to be created
+    on every invocation.
+
+  * Wrap account ID in quotes when passing as hook argument.
+
+  * Improve logging to make it easier to track down hook execution problems.
+
+    When a hook exits with an error status (i.e. non-zero), or times out, an error
+    is now emitted to the log. Previously there was no log on timeout, and the exit
+    status was only logged at debug level.
+
+    The configured hooks path and resolved path for hook files is logged at info
+    level.
+
+    When a hook file does not exist, a message is logged at debug level.
+
+  * Improve documentation
+
+    * Expand and improve documentation related to debugging hooks.
+
+    * Restructure the hooks page to separate synchronous and asynchronous hooks, and
+    add a table of contents.
+
+* Polygerrit fixes:
+
+  * [Issue 8655](https://bugs.chromium.org/p/gerrit/issues/detail?id=8655):
+  Clear suggestions on autocomplete input change.
+
+  * [Issue 8237](https://bugs.chromium.org/p/gerrit/issues/detail?id=8237):
+  Link account chips to owner search rather than user dashboard.
+
+  * [Issue 8375](https://bugs.chromium.org/p/gerrit/issues/detail?id=8375):
+  Add reset button to my menu in settings.
+
+  * [Issue 7815](https://bugs.chromium.org/p/gerrit/issues/detail?id=7815):
+  Don't curse over files with up/down keys.
+
+  * [Issue 8722](https://bugs.chromium.org/p/gerrit/issues/detail?id=8722):
+  Limit assignee suggestion to users that can see the change.
+
+    This was fixed for the GWT UI in [2.15.1](#2.15.1).
+
+  * [Issue 8940](https://bugs.chromium.org/p/gerrit/issues/detail?id=8940):
+  Fix loading change edit on change screen.
+
+  * [Issue 4552](https://bugs.chromium.org/p/gerrit/issues/detail?id=4552):
+    Allow some sections of the change list to overflow
+
+  * Add a link to group page in groups section of settings.
+
+  * Make sure plugins are not double counted.
+
+* Elasticsearch fixes
+
+  * [Issue 8523](https://bugs.chromium.org/p/gerrit/issues/detail?id=8523):
+  Fix configuration of elasticsearch during site initialization.
+
+    When the site was initialized with Elasticsearch as the secondary index,
+    the `elasticsearch.prefix` was not set, and Elasticsearch server-specific
+    settings were not correctly set under `elasticsearch.name.protocol`, etc.
+
+  * [Issue 8527](https://bugs.chromium.org/p/gerrit/issues/detail?id=8527):
+  Improve documentation of `index.maxLimit` for Elasticsearch.
+
+    When using Elasticsearch, `index.maxLimit` should not exceed the value
+    of `index.max_result_window` configured on the Elasticsearch server.
+
+  * [Issue 8553](https://bugs.chromium.org/p/gerrit/issues/detail?id=8553):
+  Fix reindexing of an already initialized site with Elasticsearch.
+
+  * [Issue 8690](https://bugs.chromium.org/p/gerrit/issues/detail?id=8690):
+  Allow to use the `index start` and `index activate` ssh commands with Elasticsearch.
+
+  * [Issue 8525](https://bugs.chromium.org/p/gerrit/issues/detail?id=8525):
+  Fix setting of changed lines in the change info.
+
+  * [Issue 8588](https://bugs.chromium.org/p/gerrit/issues/detail?id=8588):
+  Fix setting the star icon status in the change info.
+
+  * [Issue 8806](https://bugs.chromium.org/p/gerrit/issues/detail?id=8806):
+  Fix online reindex to new index version.
+
+  * Change default Elasticsearch prefix to `gerrit_`.
+
+### 2.15.1
+
+* [Issue 8677](https://bugs.chromium.org/p/gerrit/issues/detail?id=8677):
+Fix internal error when sending raw input to PUT and POST REST endpoints. In
+particular, this caused errors when using the plugin manager to update or
+install plugins.
+
+* [Issue 5181](https://bugs.chromium.org/p/gerrit/issues/detail?id=5181):
+Limit assignee suggestion to users that can see the change.
+
+* [Issue 6112](https://bugs.chromium.org/p/gerrit/issues/detail?id=6112):
+Add support for "Included In" in the polygerrit change screen.
+
+* [Issue 6583](https://bugs.chromium.org/p/gerrit/issues/detail?id=6583):
+Fix false negatives for edits due to rebase.
+
+* [Issue 8574](https://bugs.chromium.org/p/gerrit/issues/detail?id=8574):
+Fix refesh of polygerrit change list with "Shift + R".
+
+* [Issue 8703](https://bugs.chromium.org/p/gerrit/issues/detail?id=8703):
+Fix false warning in server log when creating a new project.
+
+* [Issue 8252](https://bugs.chromium.org/p/gerrit/issues/detail?id=8252):
+Improve error message in polygerrit when adding a group member to a group that
+does not exist or is not viewable for the current user.
+
+* Allow admins to toggle the WIP flag on all changes.
+
+* Fix internal server error when group UUID cannot be resolved when getting audit log.
+
+* Display group UUID in group audit log if group name is missing.
+
+  The group name can be missing if there is no group backend that handles the
+  group. This can happen for example if a plugin that handled the group was
+  removed.
+
+* Fix removal of email/password on external ID update.
+
+* Replication plugin:
+
+    * Fix creation of missing repository.
+
+      When replicating to a destination where the repository does not exist,
+      updating the `HEAD` reference failed because the passed reference name was
+      not absolute.
+
+    * Add documentation of how to exclude repositories from replication.
+
+    * Fix logging of new project creation and project deletion.
+
+      The "created" and "deleted" logs were emitted even when the operation
+      failed.
+
+* Allow graceful rolling restarts
+
+  Set a graceful stop timeout for allowing Jetty to wait for incoming requests
+  to be completed before shutting down its sockets.
diff --git a/pages/site/releases/2.16.md b/pages/site/releases/2.16.md
new file mode 100644
index 0000000..144c0dc
--- /dev/null
+++ b/pages/site/releases/2.16.md
@@ -0,0 +1,165 @@
+---
+title: "Gerrit 2.16 Release (In Development)"
+permalink: 2.16.html
+hide_sidebar: true
+hide_navtoggle: true
+toc: true
+---
+
+## Release Highlights
+
+* GWT UI is deprecated
+
+* PolyGerrit is now the default UI
+
+* Experimental Dark Mode in PolyGerrit.
+
+* Inline editing support in PolyGerrit UI.
+
+* Redesigned UI for PolyGerrit based on material.
+
+## Important Notes
+
+### Schema Changes
+
+This release contains schema changes. To upgrade:
+
+``` sh
+  java -jar gerrit.war init -d site_path
+```
+
+### Reindex for new projects index and changed group index
+
+Gerrit 2.16 introduces a new secondary index for projects. The initial version
+of this index must be created by running the offline reindex before starting
+Gerrit:
+
+``` sh
+  java -jar gerrit.war reindex --index projects -d site_path
+```
+
+The group index got two new fields upon which Gerrit 2.16 depends. For this
+reason, the following command to offline reindex the group index must be
+executed as well:
+
+``` sh
+  java -jar gerrit.war reindex --index groups -d site_path
+```
+
+The offline reindex for groups should also be run on Gerrit slave hosts.
+
+Note that it is not necessary to reindex the changes and accounts indexes
+offline. These will automatically be reindexed by the online reindexer after
+starting Gerrit.
+
+### Support for GWT UI is deprecated
+
+From 2.16 GWT UI is deprecated and will be removed in a future version.
+
+### Support for Velocity templates removed
+
+In [version 2.14](2.14.md) support for Soy templates was added. For backwards
+compatibility, support for Velocity templates (VTL) was kept.
+
+In version 2.16 support for VTL is completely removed. Site administrators must
+replace any Velocity templates (`.vm` files in `$site/etc/mail/`) with the equivalent
+Soy templates before upgrading to this version.
+
+### Push to refs/changes is deprecated
+
+The possibility to push to `refs/changes` is now disabled by default.  It is
+still possible to enable it in the gerrit config by setting
+[receive.allowPushToRefsChanges](https://gerrit-documentation.storage.googleapis.com/Documentation/2.16/config-gerrit.html#receive.allowPushToRefsChanges)
+to true.
+
+### DELETE requests with bodies are no longer recommended
+
+Some proxies, which are not under client control, prohibit DELETE requests with
+bodies. DELETE requests with bodies could work on a first attempt, but could
+fail afterwards because a server they have no control over was updated. In this
+case, client users could be in trouble if they were not notified.
+
+Therefore, we have decided to no longer recommend sending DELETE requests with
+bodies. They will continue to work in this release but should be considered as
+deprecated and will be removed in the next release.
+
+## New Features
+
+### REST API
+
+## ACL Changes
+
+### ACLs: refs/for/ namespace is now deprecated
+
+The `refs/for` namespace is no longer used when evaluating access rights.
+
+#### Background
+Removing the `refs/for` support in the ACLs intends to solve the following
+issues:
+
+* Vast majority of permissions are defined on "real" branches. Forcing users to
+define a small subset of the permissions on `refs/for/*` hinders readability and
+the understanding of the applied ACLs.
+
+* For people using `refs/publish/` to upload reviews, it is confusing to force
+Project Owners to set the push rules on `refs/for/` to allow creation of
+changes.
+
+* Having `refs/for/` in the ACL UI makes it impossible to look at one single
+ACL section and acknowledge with certainty which rules will be in effect for
+that ref.
+
+#### Changes
+
+* Instead of defining push on `refs/for/*` a new `Create Review` permission is
+introduced. Like other permissions, it should be defined on `refs/heads/*` (or
+`refs/*`).
+
+* A new `Submit on Push` option for the `Submit` permission, which will enable
+the %submit push parameter and remove the need to specify `Submit` on
+`refs/for/*`.
+
+* `Add Patch Set` will work the same way, but should be specified on
+`refs/heads/*` (just like the new `Create Review` permission).
+
+* `Push Merges` will work the same way, but should be specified on
+`refs/heads/*` instead of `refs/for/*`.
+
+
+#### Migration
+
+Any permission that could previously be applied to `refs/for` will
+automatically be migrated to the new permission upon loading the ACLs.
+
+Note: The configuration is not automatically resaved, so the next time the
+user edits the ACLs from the UI, the migrated ACLs will be shown and possibly
+saved if the user chose to do so.
+
+## Dependency Updates
+
+* Update Brics Automaton to 1.12-1
+
+* Update commons-lang3 to 3.6
+
+* Update Dropwizard metrics-core to 3.2.5
+
+* Update elasticsearch to 2.4.6
+
+* Update greenmail to 1.5.5
+
+* Update gson to 2.8.2
+
+* Update javax.mail to 1.6.0
+
+* Update protobuf-java to 3.4.0
+
+* Update soy to 2017-08-08
+
+* Update tukaani-xz to 1.6
+
+* Remove dependency on Velocity
+
+## Plugin API changes
+
+* The class `com.google.gerrit.server.api.accounts.AccountExternalIdCreator` was
+  moved to `com.google.gerrit.server.account.AccountExternalIdCreator`.
diff --git a/pages/site/releases/README.md b/pages/site/releases/README.md
index a88723b..ad5a408 100644
--- a/pages/site/releases/README.md
+++ b/pages/site/releases/README.md
@@ -14,17 +14,23 @@
 (.war files and API artifacts, version 2.9 and later).
 
 Artifacts deployed to Maven Central are signed with the maintainer's key.
-Please refer to the [list of maintainers' keys](public-keys.html).
+Please refer to the [list of maintainers' keys](/public-keys.html).
 
-Latest release: **[2.15](/releases/2.15.md)**.
+Latest release: **[2.15](/2.15.md)**.
 
 ## 2.16 *(In development)*
 
+* GWT UI is deprecated
+
+* PolyGerrit is now the default UI.
+
+* Experimental Dark Mode in PolyGerrit.
+
 * Inline editing support in PolyGerrit UI.
 
 * Redesigned UI for PolyGerrit based on material.
 
-[Release notes for Gerrit 2.16](/releases/2.16.md)
+[Release notes for Gerrit 2.16](/2.16.md)
 
 ## 2.15
 
@@ -43,7 +49,7 @@
 * Made several improvements and additions to the documentation to help users
   find the information they need.
 
-[Release notes for Gerrit 2.15](/releases/2.15.md)
+[Release notes for Gerrit 2.15](/2.15.md)
 
 
 ## 2.14
@@ -62,7 +68,7 @@
 
 * Secondary index with Elastic Search (experimental)
 
-[Release notes for Gerrit 2.14](/releases/2.14.html)
+[Release notes for Gerrit 2.14](/2.14.html)
 
 ## 2.13
 
@@ -74,7 +80,7 @@
 
 * Access control for git submodule subscriptions
 
-[Release notes for Gerrit 2.13](/releases/2.13.html).
+[Release notes for Gerrit 2.13](/2.13.html).
 
 ## 2.12
 
@@ -82,7 +88,7 @@
 
 * Support for GPG Keys and signed pushes.
 
-[Release notes for Gerrit 2.12](/releases/2.12.html).
+[Release notes for Gerrit 2.12](/2.12.html).
 
 ## Older Releases
 
