Release notes for Gerrit 2.0.3
==============================

Gerrit 2.0.3 is now available in the usual location:

link:http://code.google.com/p/gerrit/downloads/list[http://code.google.com/p/gerrit/downloads/list]

I would like to express a big thank you to Brad Larson for diving into
Gerrit and coming up with the implementation for  "Add reviewer to an
existing change".  This has been an open issue in the bug tracker for a
while, and its finally closed thanks to his work.

New Features
------------

* GERRIT-37  Add additional reviewers to an existing change
* Display old and new image line numbers in unified diff
* Make 'c', 'r' in a patch view open a new comment editor
* Allow up/down arrow keys to scroll the page in patch view
* Use a Java applet to help users load public SSH keys

Bug Fixes
---------

* GERRIT-72  Make review comments standout more from the surrounding text
* GERRIT-7   Restart the merge queue when Gerrit starts up
* Fix message threading for comment replies
* Fix unified diff view to support creating a comment
* Fix line numbers for new post-image comments in unified diff
* Don't store SSH keys we know to be invalid
* Bust out of an iframe if Gerrit is embedded in one
+
The last item is a security fix.  It prevents Gerrit from being loaded
inside of an iframe, which is a potential security flaw if some evil outer
page used CSS tricks to show only a portion of a particular part of the
Gerrit UI.  Such a display might be able to convince a user they are
clicking on one thing, while doing something else entirely.

Other Changes
-------------

* Restore -SNAPSHOT suffix after 2.0.2
* Add a document describing Gerrit's high level design
* Rename the gerrit artifact to be gerrit-$version.war
* Ensure our SSHD always disables compression
* Make the magic refs/heads/ constant available in GWT
* Move Account to PersonIdent code to ChangeUtil for reuse
* GERRIT-20  Add a Branches tab to the project admin screen
* Add a link to our project homepage in the documentation
* Add documentation on all of the software licenses
* Add a link to the Android Open Source Project workflow a...
* Fix a minor language typo in project setup documentation
* Abstract the account name hint into AddMemberBox
* Fix vertical-align: center to be middle
* Fixed some minor documentation typos
* Actually return failure to clients if new change creatio...
* Log any failures while creating patch set refs
* Update approvals table when adding reviewer.
* Include "a=commit" in direct gitweb commit links
* Add a loading message, link to the project, before the U...
* Fix detach assertion error caused by loading messing bei...
* Allow callers of AddMemberBox to control the button text
* Cleanup the ApprovalTable formatting for adding a review...
* Display the text "invalid key" instead of a red X icon i...
* Add a clear button to make it easier to replace the key
* Make Gerrit.getVersion public for other code to use
* Allow embedded applets to be cached indefinitely by prox...
* gerrit 2.0.3