Change Screen - Introduction
============================

As of Gerrit 2.8 the change screen was redesigned from the ground up. The old
change screen is deprecated and will be discontinued in one of the next Gerrit
releases.

The design spirit of the new change screen is simplicity: only one patch set is
presented on the screen. The list of related changes is always visible and
optional elements are moved to pop down boxes.

This is not only a facelift. The main highlights are under the hood:

* Old style RPC calls are replaced by the REST API
* The prettify syntax highlighting library was replaced by Codemirror
* Automatic refresh of open changes
* Support to download a patch direct in browser: no local repo is needed
* JS API integration: it was never so easy to add change/revision actions to
the UI from a plugin.

This document is intended to help users to switch to the new change screen.

Further information on the topic can be found in the:
link:https://groups.google.com/forum/#!topic/repo-discuss/6Ryz9p6AzgE[
CodeScreen2 thread on the repo-discuss mailing list].

[[configuration]]
Configuration
-------------

The new change screen is deactivated by default. It can be activated system-wide
by changing the link:config-gerrit.html[gerrit.changeScreen] setting to
`CHANGE_SCREEN2`.  Users can deactivate it by setting `OLD_UI` on their user
preferences page.

[[switching-between-patch-sets]]
Switching between patch sets
----------------------------

As already mentioned above, the main difference between the old and the new
change screen is the fact that only one patch set is presented on the screen.

To switch to other patch sets for the given change, the drop down 'Revisions'
box is used on the right upper side of the change header.

Patch sets are always sorted in descending order. The option to switch between
ascending and reverse patch set sorting order is not supported on the new change
screen.

[[download-commands]]
Download commands
-----------------

The download commands are moved to the 'Download' drop down box.  Patch files
can be downloaded as base64 encoded or zipped versions.

[[quick-approve]]
Quick approve
-------------

The so called 'Quick approve' button is some times confusing. Normal users (i.e.
non-maintainers) see this as 'Verified+1' button to the right of the 'Reply'
button.

The button is not always "Verified+1". The button appears if a user has
permission to vote the max score in exactly one label that the rules have marked
as NEED.

For a maintainer with both 'Verified+1' and 'Code-Review+2' powers the button
does not appear, as both categories are still marked NEED and the maintainer has
permission to use both.  If another maintainer scores 'Code-Review+2', then the
button displays as 'Verified+1'. If a verifier scores 'Verified+1' the button
displays as 'Code-Review+2'.

It is important to note that by design, the user cannot provide a comment when
using this button, hence the name 'Quick approve'. To provide comments, the
'Reply' button should be used.

[[reply-button]]
Reply button
------------

This button corresponds to the 'Review' button the on patch set panel on the old
change screen.  The only new feature: the user can optionaly send an email
during the vote.

Key bindings: "a" to open the drop down. "ESC" to close it.


[[edit-commit-message]]
Edit commit message
-------------------

To edit the commit message use the 'Edit Message' button on the change header,
which will open a drop-down editor box.

Key bindings: "e" to open the drop down. "ESC" to close it.

[[edit-change-topic]]
Edit change topic
-----------------

To edit the topic use the edit icon to the right of the topic field.

Key bindings: "t" to open the drop down. "ESC" to close it.

[[abandon-restore]]
Abandon or Restore changes
--------------------------

When a change is abandoned or restored, a panel appears and a comment message
can be provided.

[[working-with-drafts]]
Working with draft changes and patch sets
-----------------------------------------

When a change or a patch set is a draft, then three additional buttons appear on
the action panel: 'Publish', 'Delete Revision', and 'Delete Change'. In the
'Revisions' drop down a "(DRAFT)" suffix is added to the patch set number to
indicate that the patch set is a draft.

[[draft-comments]]
Highlight draft comments
------------------------

If a patch set has draft comments that weren't published yet, then that patch
set is marked on the list in the 'Revisions' drop down list. In addition a red
"draft" prefix appears on the filenames in the file table.

[[codemirror]]
Codemirror
----------

On the user preferences page, 'Side By Side' or 'Unified Diff' view can be
configured.  Use the "/" key to start the CodeMirror search, like in vim.

Key bindings are not customizable at the moment. They may be added in the future.

Range comments are supported on Codemirror's 'Side By Side' screen.  Highlight
lines with the mouse and then click the bottom-most line number to create a
range comment for the highlighted lines.

[[reviewers]]
Reviewers
---------

Reviewer are split into two groups: Reviewers who actually voted on the change
in the 'Reviewers' field, and reviewers, who were added to the change but didn't
vote yet in the 'CC' field.

The votes per category are listed above the File list.

To add a reviewer, use the '[+]' button to the right of the 'CC' field. Typing
into the pop-up text field activates auto completion of user or group names.

To remove reviewers click on the 'x' icon in the reviewer's "chip".

Key bindings:  "c" to add a reviewer. "ESC" to close the drop down.

[[auto-refresh]]
Auto refresh of change data
---------------------------

On the new change screen polling for updates to the currently open change is
activated per default.  For example, if another user votes or comments on the
same change, then a popup window appears on the bottom right corner of the
screen to notify the user that the change was updated.

The default delay is 30 seconds.  It can be configured with the
link:config-gerrit.html[change.updateDelay] setting.

[[depends-on-needed-by]]
"Depends on" and "Needed by"
----------------------------

Dependencies and dependent changes are listed in the 'Related Changes' drop
down.

Key bindings:  "J" & "K" to navigate between the related changes. "O" to
open the currently selected related change.

[[file-table]]
File table
----------

The user can now manually toggle the 'reviewed' flag per file using the check
box to the left of the filename.

Key bindings: "j" & "k" to navigate in the file table, and "r" to toggle the
'reviewed' flag.

[[included-in]]
Included in
-----------

To see the branches a specific change was merged into and the list of the tags
a change was tagged with, use the 'Included In' drop down on the change header,
to the left of the 'Revisions' drop down.

Note that this list is only visible on merged changes.

[[missing-features]]
Missing features
----------------

Several features have not been implemented yet:

* Permalink a change
* Allow to see if a reviewer can't vote on a label
* Allow to select a reference version as base for the comparison
* Change diff view preferences

GERRIT
------
Part of link:index.html[Gerrit Code Review]
