diff --git a/BUCK b/BUCK
index 2d07758..5165efe 100644
--- a/BUCK
+++ b/BUCK
@@ -4,7 +4,7 @@
 gerrit_war(name = 'chrome',   ui = 'ui_chrome')
 gerrit_war(name = 'firefox',  ui = 'ui_firefox')
 gerrit_war(name = 'withdocs', docs = True)
-gerrit_war(name = 'release',  docs = True, context = ['//plugins:core.zip'])
+gerrit_war(name = 'release',  docs = True, context = ['//plugins:core.zip'],  visibility = ['//tools/maven:'])
 
 API_DEPS = [
   '//gerrit-extension-api:extension-api',
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index b205eed..3057035 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -53,7 +53,7 @@
 +
 Default is 10.
 +
-This setting only applies for adding reviewers in the Gerrit WebUI,
+This setting only applies for adding reviewers in the Gerrit Web UI,
 but is ignored when adding reviewers with the
 link:cmd-set-reviewers.html[set-reviewers] command.
 
@@ -776,7 +776,7 @@
 change. The number of changed lines of a change is the sum of the lines
 that were inserted and deleted in the change.
 +
-The specified value is used to visualize the change sizes in the web UI
+The specified value is used to visualize the change sizes in the Web UI
 in change tables and user dashboards.
 +
 By default 500.
@@ -2225,8 +2225,8 @@
 [[ldap.localUsernameToLowerCase]]ldap.localUsernameToLowerCase::
 +
 Converts the local username, that is used to login into the Gerrit
-WebUI, to lower case before doing the LDAP authentication. By setting
-this parameter to true, a case insensitive login to the Gerrit WebUI
+Web UI, to lower case before doing the LDAP authentication. By setting
+this parameter to true, a case insensitive login to the Gerrit Web UI
 can be achieved.
 +
 If set, it must be ensured that the local usernames for all existing
@@ -3132,7 +3132,7 @@
 
 [[user.anonymousCoward]]user.anonymousCoward::
 +
-Username that is displayed in the Gerrit WebUI and in e-mail
+Username that is displayed in the Gerrit Web UI and in e-mail
 notifications if the full name of the user is not set.
 +
 By default "Anonymous Coward" is used.
diff --git a/Documentation/dev-buck.txt b/Documentation/dev-buck.txt
index c6faac5..3d6101c 100644
--- a/Documentation/dev-buck.txt
+++ b/Documentation/dev-buck.txt
@@ -136,13 +136,13 @@
   buck-out/gen/gerrit-plugin-api/plugin-api-javadoc.jar
 ----
 
-Install {extension,plugin,gwt}-api to the local maven repository:
+Install {extension,plugin,gwt}-api and gerrit.war to the local maven repository:
 
 ----
   buck build api_install
 ----
 
-Deploy {extension,plugin,gwt}-api to the remote maven repository:
+Deploy {extension,plugin,gwt}-api and gerrit.war to the remote maven repository:
 
 ----
   buck build api_deploy
diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt
index eaf9a1d..d89f79e 100644
--- a/Documentation/dev-plugins.txt
+++ b/Documentation/dev-plugins.txt
@@ -721,7 +721,7 @@
 
 The example below shows how the parameters `plugin.helloworld.enabled`
 and `plugin.helloworld.language` are bound to be editable from the
-WebUI. For the parameter `plugin.helloworld.enabled` "Enable Greeting"
+Web UI. For the parameter `plugin.helloworld.enabled` "Enable Greeting"
 is provided as display name and the default value is set to `true`.
 For the parameter `plugin.helloworld.language` "Preferred Language"
 is provided as display name and "en" is set as default value.
@@ -1808,7 +1808,7 @@
 Compiled plugins and extensions can be deployed to a running Gerrit
 server using the link:cmd-plugin-install.html[plugin install] command.
 
-WebUI plugins distributed as  single `.js` file can be deployed
+Web UI plugins distributed as  single `.js` file can be deployed
 without the overhead of JAR packaging, for more information refer to
 link:cmd-plugin-install.html[plugin install] command.
 
diff --git a/Documentation/dev-release.txt b/Documentation/dev-release.txt
index 72247cf..9c00467 100644
--- a/Documentation/dev-release.txt
+++ b/Documentation/dev-release.txt
@@ -164,7 +164,7 @@
 * create the stable branch `stable-2.5` in the `gerrit` project
 +
 Via the link:https://gerrit-review.googlesource.com/#/admin/projects/gerrit,branches[
-Gerrit WebUI] or by push.
+Gerrit Web UI] or by push.
 
 * Push the commits done on `stable-2.5` to `refs/for/stable-2.5` and
 get them merged
diff --git a/Documentation/error-branch-not-found.txt b/Documentation/error-branch-not-found.txt
index b866a70..40e390a 100644
--- a/Documentation/error-branch-not-found.txt
+++ b/Documentation/error-branch-not-found.txt
@@ -13,14 +13,14 @@
 
 * that the branch name in the push specification is typed correctly
   (case sensitive) and
-* that the branch really exists for this project (in the Gerrit WebUI
+* that the branch really exists for this project (in the Gerrit Web UI
   go to 'Projects' > 'List' and browse your project, then click on
   'Branches' to see all existing branches).
 
 If it was your intention to create a new branch you can either
 
 * bypass code review on push as explained link:user-upload.html#bypass_review[here] or
-* create the new branch in the Gerrit WebUI before pushing (go to
+* create the new branch in the Gerrit Web UI before pushing (go to
   'Projects' > 'List' and browse your project, in the 'Branches'
   tab you can then create a new branch).
 
diff --git a/Documentation/error-change-closed.txt b/Documentation/error-change-closed.txt
index d8842c5..a239ef1 100644
--- a/Documentation/error-change-closed.txt
+++ b/Documentation/error-change-closed.txt
@@ -20,8 +20,8 @@
 
 If the change for which you wanted to upload a new patch set was
 abandoned and your new changes overcome the reasons for abandoning
-this change you may want to restore the change in the Gerrit WebUI
-(browse the abandoned change in the Gerrit WebUI and click on the
+this change you may want to restore the change in the Gerrit Web UI
+(browse the abandoned change in the Gerrit Web UI and click on the
 'Restore Change' button). Afterwards the push should succeed and a
 new patch set for this change will be created.
 
diff --git a/Documentation/error-invalid-changeid-line.txt b/Documentation/error-invalid-changeid-line.txt
index 1c6e446..9d3d2fc 100644
--- a/Documentation/error-invalid-changeid-line.txt
+++ b/Documentation/error-invalid-changeid-line.txt
@@ -7,7 +7,7 @@
 by doing a link:http://www.kernel.org/pub/software/scm/git/docs/git-log.html[git log].
 
 If it was the intention to rework a change and to push a new patch
-set, find the change in the Gerrit WebUI, copy its Change-Id line and
+set, find the change in the Gerrit Web UI, copy its Change-Id line and
 use it to correct the invalid Change-Id line in the commit message of
 the commit for which the push is failing. How to do this is explained
 link:error-push-fails-due-to-commit-message.html#commit_hook[here].
diff --git a/Documentation/error-missing-changeid.txt b/Documentation/error-missing-changeid.txt
index 714d65e..2a93760 100644
--- a/Documentation/error-missing-changeid.txt
+++ b/Documentation/error-missing-changeid.txt
@@ -33,7 +33,7 @@
 into the commit messages. This is explained link:error-push-fails-due-to-commit-message.html#commit_hook[here].
 
 If you want to update an existing change in Gerrit by uploading a new
-patch set you should copy its Change-Id from the Gerrit WebUI and
+patch set you should copy its Change-Id from the Gerrit Web UI and
 insert it into the commit message. How to update the commit message
 is explained link:error-push-fails-due-to-commit-message.html[here].
 
diff --git a/Documentation/error-multiple-changeid-lines.txt b/Documentation/error-multiple-changeid-lines.txt
index ca15270..0729547 100644
--- a/Documentation/error-multiple-changeid-lines.txt
+++ b/Documentation/error-multiple-changeid-lines.txt
@@ -7,7 +7,7 @@
 by doing a link:http://www.kernel.org/pub/software/scm/git/docs/git-log.html[git log].
 
 If it was the intention to rework a change and to push a new patch
-set, find the change in the Gerrit WebUI, copy its Change-Id line and
+set, find the change in the Gerrit Web UI, copy its Change-Id line and
 use the copied Change-Id line instead of the existing Change-Id lines
 in the commit message of the commit for which the push is failing.
 How to do this is explained link:error-push-fails-due-to-commit-message.html#commit_hook[here].
diff --git a/Documentation/error-no-new-changes.txt b/Documentation/error-no-new-changes.txt
index 2103543..7bfbfe1 100644
--- a/Documentation/error-no-new-changes.txt
+++ b/Documentation/error-no-new-changes.txt
@@ -19,7 +19,7 @@
 If you are sure you are pushing the correct commit and you are still
 getting the "no new changes" error unexpectedly you can take the
 commit ID and search for the corresponding change in Gerrit. To do
-this simply paste the commit ID in the Gerrit WebUI into the search
+this simply paste the commit ID in the Gerrit Web UI into the search
 field. Details about how to search in Gerrit are explained link:user-search.html[here].
 
 Please note that each commit can really be pushed only once. This
@@ -35,7 +35,7 @@
 . if a commit was pushed directly to a branch (without going through
   code review) you cannot push this commit once again for code
   review (please note that in this case searching by the commit ID
-  in the Gerrit WebUI will not find any change)
+  in the Gerrit Web UI will not find any change)
 
 If you need to re-push a commit you may rewrite this commit by
 link:http://www.kernel.org/pub/software/scm/git/docs/git-commit.html[amending] it or doing an interactive link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[git rebase]. By rewriting the
diff --git a/Documentation/error-permission-denied.txt b/Documentation/error-permission-denied.txt
index f60f9b2..574818d 100644
--- a/Documentation/error-permission-denied.txt
+++ b/Documentation/error-permission-denied.txt
@@ -11,9 +11,9 @@
 
 . Verify that you are using the correct username for the SSH command
   and that it is typed correctly (case sensitive). You can look up
-  your username in the Gerrit WebUI under 'Settings' -> 'Profile'.
+  your username in the Gerrit Web UI under 'Settings' -> 'Profile'.
 . Verify that you have uploaded your public SSH key for your Gerrit
-  account. To do this go in the Gerrit WebUI to 'Settings' ->
+  account. To do this go in the Gerrit Web UI to 'Settings' ->
   'SSH Public Keys' and check that your public SSH key is there. If
   your public SSH key is not there you have to upload it.
 . Verify that you are using the correct private SSH key. To find out
diff --git a/Documentation/error-project-not-found.txt b/Documentation/error-project-not-found.txt
index 5b58a15..f9422e6 100644
--- a/Documentation/error-project-not-found.txt
+++ b/Documentation/error-project-not-found.txt
@@ -13,7 +13,7 @@
 . Verify that the project name specified as git repository in the
   push command is typed correctly (case sensitive).
 . Verify that you are pushing to the correct Gerrit server.
-. Go in the Gerrit WebUI to 'Projects' > 'List' and check that the
+. Go in the Gerrit Web UI to 'Projects' > 'List' and check that the
   project is listed. If the project is not listed the project either
   does not exist or you don't have
   link:access-control.html#category_read['Read'] access for it. This
diff --git a/Documentation/intro-project-owner.txt b/Documentation/intro-project-owner.txt
index 23e7e0b..de8fb29 100644
--- a/Documentation/intro-project-owner.txt
+++ b/Documentation/intro-project-owner.txt
@@ -42,7 +42,7 @@
 
 To see the access rights of your project
 
-- go to the Gerrit WebUI
+- go to the Gerrit Web UI
 - click on the `Projects` > `List` menu entry
 - find your project in the project list and click on it
 - click on the `Access` menu entry
@@ -65,7 +65,7 @@
 
 If a Git browser such as GitWeb is configured for the Gerrit server you
 can find a link to the history of the `project.config` file in the
-WebUI. Otherwise you may inspect the history locally. If you have
+Web UI. Otherwise you may inspect the history locally. If you have
 cloned the repository you can do this by executing the following
 commands:
 
@@ -92,7 +92,7 @@
 project can have only a single parent project, multi-inheritance is
 not supported.
 
-Looking at the access rights of your project in the Gerrit WebUI, you
+Looking at the access rights of your project in the Gerrit Web UI, you
 only see the access rights which are defined on that project. To see
 the inherited access rights you must follow the link to the parent
 project under `Rights Inherit From`.
@@ -111,7 +111,7 @@
 of a project is only allowed for Gerrit administrators. This means you
 need to contact the administrator of your Gerrit server if you want to
 reparent your project. One way to do this is to change the parent
-project in the WebUI, save the modifications for review and get the
+project in the Web UI, save the modifications for review and get the
 change approved and merged by a Gerrit administrator.
 
 [[refs]]
@@ -141,7 +141,7 @@
 maintains its own groups internally but also supports different external
 group backends.
 
-The Gerrit internal groups can be seen in the Gerrit WebUI by clicking
+The Gerrit internal groups can be seen in the Gerrit Web UI by clicking
 on the `Groups` > `List` menu entry. By clicking on a group you can
 edit the group members (`Members` tab) and the group options
 (`General` tab).
@@ -229,7 +229,7 @@
 
 To see the options of your project
 
-- go to the Gerrit WebUI
+- go to the Gerrit Web UI
 - click on the `Projects` > `List` menu entry
 - find your project in the project list and click on it
 - click on the `General` menu entry
@@ -381,7 +381,7 @@
 
 If the link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/serviceuser[
 serviceuser] plugin is installed you can also create new service users
-in the Gerrit WebUI under `People` > `Create Service User`. For this
+in the Gerrit Web UI under `People` > `Create Service User`. For this
 the `Create Service User` global capability must be assigned.
 
 The service user must have link:access-control.html#category_read[read]
@@ -399,8 +399,8 @@
 == Branch Administration
 
 As project owner you can administrate the branches of your project in
-the Gerrit WebUI under `Projects` > `List` > <your project> >
-`Branches`. In the WebUI both link:project-setup.html#branch-creation[
+the Gerrit Web UI under `Projects` > `List` > <your project> >
+`Branches`. In the Web UI both link:project-setup.html#branch-creation[
 branch creation] and link:project-setup.html#branch-deletion[branch
 deletion] are allowed for project owners without requiring any
 additional access rights.
@@ -414,7 +414,7 @@
 == Email Notifications
 
 With Gerrit individual users control their own email subscriptions. By
-editing the link:user-notify.html#user[watched projects] in the WebUI
+editing the link:user-notify.html#user[watched projects] in the Web UI
 under `Settings` > `Watched Projects` users can decide which events to
 be informed about by email. The change notifications can be filtered by
 link:user-search.html[change search expressions].
@@ -441,7 +441,7 @@
 link:user-dashboards.html#project-dashboards[project level]. This way
 you can define a view of the changes that are relevant for your
 project and share this dashboard with all users. The project dashboards
-can be seen in the WebUI under `Projects` > `List` > <your project> >
+can be seen in the Web UI under `Projects` > `List` > <your project> >
 `Dashboards`.
 
 [[issue-tracker-integration]]
@@ -452,7 +452,7 @@
 
 - Comment Links
 +
-As described in the link#comment-links[Comment Links] section, comment
+As described in the link:#comment-links[Comment Links] section, comment
 links can be used to link IDs from commit message footers to issues in
 an issue tracker system.
 
@@ -474,7 +474,7 @@
 to Gerrit changes to the issues in the issue tracker system or to
 automatically close an issue if the corresponding change is merged.
 If installed, project owners may enable/disable the issue tracker
-integration from the Gerrit WebUI under `Projects` > `Lists` >
+integration from the Gerrit Web UI under `Projects` > `Lists` >
 <your project> > `General`.
 
 [[comment-links]]
@@ -507,19 +507,19 @@
 Normally it is not needed to explicitly assign reviewers to every
 change since the project members either link:user-notify.html#user[
 watch the project] and get notified by email or regularly check the
-list of open changes in the Gerrit WebUI. The project members then
+list of open changes in the Gerrit Web UI. The project members then
 pick the changes themselves that are interesting to them for review.
 
 If authors of changes want to have a review by a particular person
 (e.g. someone who is known to be expert in the touched code area, or a
 stakeholder for the implemented feature), they can request the review
-by adding this person in the Gerrit WebUI as a reviewer on the change.
+by adding this person in the Gerrit Web UI as a reviewer on the change.
 Gerrit will then notify this person by email about the review request.
 
 With the link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/reviewers[
 reviewers] plugin it is possible to configure default reviewers who
 will be automatically added to each change. The default reviewers can
-be configured in the Gerrit WebUI under `Projects` > `List` >
+be configured in the Gerrit Web UI under `Projects` > `List` >
 <your project> > `General` in the `reviewers Plugin` section.
 
 The link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/reviewers-by-blame[
@@ -530,7 +530,7 @@
 touched by the change, since these users should be familiar with the
 code and can most likely review the change. How many reviewers the
 plugin will add to a change at most can be configured in the Gerrit
-WebUI under `Projects` > `List` > <your project> > `General` in the
+Web UI under `Projects` > `List` > <your project> > `General` in the
 `reviewers-by-blame Plugin` section.
 
 [[download-commands]]
@@ -634,7 +634,7 @@
 [[project-creation]]
 === Project Creation
 
-New projects can be created in the Gerrit WebUI under `Projects` >
+New projects can be created in the Gerrit Web UI under `Projects` >
 `Create Project`. The `Create Project` menu entry is only available if
 you have the link:access-control.html#capability_createProject[
 Create Project] global capability assigned.
@@ -711,7 +711,7 @@
 
 If the link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/delete-project[
 delete-project] plugin is installed, projects can be deleted from the
-Gerrit WebUI under `Projects` > `List` > <project> > `General` by
+Gerrit Web UI under `Projects` > `List` > <project> > `General` by
 clicking on the `Delete` command under `Project Commands`. The `Delete`
 command is only available if you have the `Delete Projects` global
 capability assigned, or if you own the project and you have the
diff --git a/Documentation/pgm-LocalUsernamesToLowerCase.txt b/Documentation/pgm-LocalUsernamesToLowerCase.txt
index c4a0f05..09651c2 100644
--- a/Documentation/pgm-LocalUsernamesToLowerCase.txt
+++ b/Documentation/pgm-LocalUsernamesToLowerCase.txt
@@ -12,12 +12,12 @@
 == DESCRIPTION
 Converts the local username for every account to lower case. The
 local username is the username that is used to login into the Gerrit
-WebUI.
+Web UI.
 
 This task is only intended to be run if the configuration parameter
 link:config-gerrit.html#ldap.localUsernameToLowerCase[ldap.localUsernameToLowerCase]
 was set to true to achieve case insensitive LDAP login to the Gerrit
-WebUI.
+Web UI.
 
 Please be aware that the conversion of the local usernames to lower
 case can't be undone.
diff --git a/Documentation/project-setup.txt b/Documentation/project-setup.txt
index 25d455f..4b755f3 100644
--- a/Documentation/project-setup.txt
+++ b/Documentation/project-setup.txt
@@ -217,7 +217,7 @@
 new branches from the Web UI or via REST even without having the
 `Create Reference` access right.
 
-When using the WebUI, the REST endpoint or the SSH command it is only
+When using the Web UI, the REST endpoint or the SSH command it is only
 possible to create branches on commits that already exist in the
 repository.
 
diff --git a/Documentation/rest-api-projects.txt b/Documentation/rest-api-projects.txt
index 418b93c..39eabdf 100644
--- a/Documentation/rest-api-projects.txt
+++ b/Documentation/rest-api-projects.txt
@@ -1367,7 +1367,7 @@
 Subquery that applies to all sections in the dashboard. +
 Tokens such as `${project}` are not resolved.
 |`url`             ||
-The URL under which the dashboard can be opened in the Gerrit WebUI. +
+The URL under which the dashboard can be opened in the Gerrit Web UI. +
 The URL is relative to the canonical web URL. +
 Tokens in the queries such as `${project}` are resolved.
 |`default`         |not set if `false`|
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyWatchesTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyWatchesTable.java
index 6c12e99..197dcf8 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyWatchesTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyWatchesTable.java
@@ -20,7 +20,6 @@
 import com.google.gerrit.client.ui.ProjectLink;
 import com.google.gerrit.common.data.AccountProjectWatchInfo;
 import com.google.gerrit.reviewdb.client.AccountProjectWatch;
-import com.google.gerrit.reviewdb.client.Change.Status;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.user.client.ui.CheckBox;
@@ -126,7 +125,7 @@
 
   protected void populate(final int row, final AccountProjectWatchInfo info) {
     final FlowPanel fp = new FlowPanel();
-    fp.add(new ProjectLink(info.getProject().getNameKey(), Status.NEW));
+    fp.add(new ProjectLink(info.getProject().getNameKey()));
     if (info.getWatch().getFilter() != null) {
       Label filter = new Label(info.getWatch().getFilter());
       filter.setStyleName(Gerrit.RESOURCES.css().watchedProjectFilter());
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/NewChangeScreenBar.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/NewChangeScreenBar.ui.xml
index b91c08d..ad29d4d 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/NewChangeScreenBar.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/NewChangeScreenBar.ui.xml
@@ -65,7 +65,7 @@
           styleName='{style.action}'
           href='javascript:;'
           title='Switch back to the old screen'><ui:attribute name='title'/>revert
-            to the old screen</g:Anchor><span ui:field='settings'> in Settings &gt; Preferences</span>.
+            to the old screen</g:Anchor><span ui:field='settings'>&#160;in Settings &gt; Preferences</span>.
       <g:Anchor ui:field='keepNew'
           styleName='{style.action}'
           href='javascript:;'
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
index 3a65d20..1cdf30f 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
@@ -160,8 +160,7 @@
 
     table.setWidget(row, C_SUBJECT, new TableChangeLink(s, c));
     table.setWidget(row, C_OWNER, link(c.getOwner()));
-    table.setWidget(row, C_PROJECT, new ProjectLink(c.getProject().getKey(), c
-        .getStatus()));
+    table.setWidget(row, C_PROJECT, new ProjectLink(c.getProject().getKey()));
     table.setWidget(row, C_BRANCH, new BranchLink(c.getProject().getKey(), c
         .getStatus(), c.getBranch(), c.getTopic()));
     table.setText(row, C_LAST_UPDATE, shortFormat(c.getLastUpdatedOn()));
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java
index 0762628..ca9fbfd 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java
@@ -224,8 +224,7 @@
       table.setText(row, C_OWNER, "");
     }
 
-    table.setWidget(
-        row, C_PROJECT, new ProjectLink(c.project_name_key(), c.status()));
+    table.setWidget(row, C_PROJECT, new ProjectLink(c.project_name_key()));
     table.setWidget(row, C_BRANCH, new BranchLink(c.project_name_key(), c
         .status(), c.branch(), c.topic()));
     if (Gerrit.isSignedIn()
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java
index 05def9c..c5b609a 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java
@@ -14,35 +14,16 @@
 
 package com.google.gerrit.client.ui;
 
-import com.google.gerrit.client.Gerrit;
-import com.google.gerrit.client.changes.QueryScreen;
 import com.google.gerrit.common.PageLinks;
-import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.Change.Status;
 
-/** Link to the open changes of a project. */
+/** Link to the default dashboard of a project. */
 public class ProjectLink extends InlineHyperlink {
-  private Project.NameKey project;
-  private Status status;
-
-  public ProjectLink(final Project.NameKey proj, Change.Status stat) {
-    this(proj.get(), proj, stat);
+  public ProjectLink(Project.NameKey proj) {
+    this(proj.get(), proj);
   }
 
-  public ProjectLink(final String text, final Project.NameKey proj,
-      Change.Status stat) {
-    super(text, PageLinks.toChangeQuery(PageLinks.projectQuery(proj, stat)));
-    status = stat;
-    project = proj;
-  }
-
-  @Override
-  public void go() {
-    Gerrit.display(getTargetHistoryToken(), createScreen());
-  }
-
-  private Screen createScreen() {
-    return QueryScreen.forQuery(PageLinks.projectQuery(project, status));
+  public ProjectLink(String text, Project.NameKey proj) {
+    super(text, PageLinks.toProjectDefaultDashboard(proj));
   }
 }
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshDaemon.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshDaemon.java
index 11c58c8..92ab653 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshDaemon.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshDaemon.java
@@ -155,7 +155,6 @@
   private volatile IoAcceptor acceptor;
   private final Config cfg;
 
-  @SuppressWarnings("unchecked")
   @Inject
   SshDaemon(final CommandFactory commandFactory, final NoShell noShell,
       final PublickeyAuthenticator userAuth,
diff --git a/tools/build.defs b/tools/build.defs
index 4bb48ea..af39c2a 100644
--- a/tools/build.defs
+++ b/tools/build.defs
@@ -78,7 +78,7 @@
     visibility = visibility,
   )
 
-def gerrit_war(name, ui = 'ui_optdbg', context = [], docs = False):
+def gerrit_war(name, ui = 'ui_optdbg', context = [], docs = False, visibility = []):
   war(
     name = name,
     libs = LIBS + ['//gerrit-war:version'],
@@ -89,4 +89,5 @@
       '//gerrit-gwtui:' + ui + '.zip',
     ] + context,
     docs = docs,
+    visibility = visibility,
   )
diff --git a/tools/maven/BUCK b/tools/maven/BUCK
index f625b7b..b6b501e 100644
--- a/tools/maven/BUCK
+++ b/tools/maven/BUCK
@@ -22,6 +22,7 @@
     'gerrit-plugin-api': '//gerrit-plugin-api:plugin-api-javadoc',
     'gerrit-plugin-gwtui': '//gerrit-plugin-gwtui:gwtui-api-javadoc',
   },
+  war = {'gerrit-war': '//:release'},
 )
 
 python_binary(
diff --git a/tools/maven/package.defs b/tools/maven/package.defs
index 3171a31..9e5a144 100644
--- a/tools/maven/package.defs
+++ b/tools/maven/package.defs
@@ -18,11 +18,12 @@
     url = None,
     jar = {},
     src = {},
-    doc = {}):
+    doc = {},
+    war = {}):
   cmd = ['$(exe //tools/maven:mvn)', '-v', version, '-o', '$OUT']
   dep = []
 
-  for type,d in [('jar', jar), ('java-source', src), ('javadoc', doc)]:
+  for type,d in [('jar', jar), ('java-source', src), ('javadoc', doc), ('war', war)]:
     for a,t in d.iteritems():
       cmd.append('-s %s:%s:$(location %s)' % (a,type,t))
       dep.append(t)
