==============================
Review Board 1.5 Release Notes
==============================

**Release date**: September 30, 2010


New User Features
=================

Update Notifications
--------------------

Review Board will now tell you when the review request or diff you're looking
at has been updated. Periodically, it will check the status of the review
request and tell you when something has changed or someone has reviewed it.
This makes it easier to keep a watch on things without having to reload the
page.


Improved Auto-Complete
----------------------

Auto-complete of the reviewers lists has been greatly improved. Aside from
auto-complete of usernames and group names, which was available in 1.0,
you can now auto-complete full names (matching either first or last name) or
full group display names. This makes it easier to add reviewers without having
to know their IDs.

The full names or display names are now shown in the auto-complete results
along with the IDs.


Upload Screenshots by Drag-and-Drop
-----------------------------------

On modern HTML 5-capable browsers, such as Firefox 3.6 and Google Chrome,
you can now upload screenshots by dragging them from your file manager into
the review request page. When dragging over the page, a box will appear
showing where to drop the screenshots. They will then upload without having
to refresh the page.

You can drag and drop multiple screenshots at once, saving time.

Along with this, uploading a screenshot through the original Upload Screenshot
dialog now adds it to the page without reloading.


Whitespace Control in the Diff Viewer
-------------------------------------

The diff viewer now includes two new options for controlling whitespace
display.

The new :guilabel:`Show Whitespace Changes`/:guilabel:`Hide Whitespace Changes`
toggle in the diff viewer controls whether changes that consist of only
whitespace modifications (such as changing indentation of a line, or removing
trailing whitespace) will be shown. This can help cut down the review time
of large diffs that contain many lines of whitespace-only changes.

The new :guilabel:`Show Extra Whitespace`/:guilabel:`Hide Extra Whitespace`
toggle in the diff viewer will control whether or not the extra whitespace
indicators (the big red blocks) are shown.


Move Detection in the Diff Viewer
---------------------------------

The diff viewer now indicates when a block of code has moved from one
location to another. Previously, if code had moved, the diff viewer would
only show inserts and deletes, leaving it unclear as to whether code was
changed during the move. Now, these regions contain special tags on the
side that indicate where the line was moved to. Clicking on these tags
will jump to the source or destination for that particular line, briefly
highlighting the line.


Function and Class Headers in the Diff Viewer
---------------------------------------------

The diff viewer will now show function or class information for collapsed
regions. These are also shown in the parts of the diff commented on in the
review request page and HTML e-mails.

The functions/classes shown are the closest ones found to the collapsed
region, and as much may not be exactly where the code in the region lives,
but should serve as a good guide as to where the code is in the file.

Support for function/class headers exists for C, C++, C#, Objective-C,
Java, JavaScript, Perl, PHP, Python, and Ruby files.


Image Review without Diffs
--------------------------

As more companies use Review Board, we've seen an increasing demand in
using it just for image review. We've removed the restriction that
a review request must have an associated diff. Users can choose to upload
a diff label, or just keep it diff-free.

Furthermore, users can now set their repository to
:guilabel:`(None - Graphics Only)` when creating a review request, which
makes it clear that the review request will be used for image review. In
this mode, the review request can never have a diff uploaded.


Better E-Mails
--------------

HTML E-Mails
~~~~~~~~~~~~

Review Board now sends HTML e-mails with more information than the old
e-mails could contain.

The review request e-mails look similar to the review request page and will
show any thumbnails for screenshots on the review request and link to any
associated bugs.

The review e-mails show the fragment of the diff or screenshots that has been
commented on.

E-mail clients that have HTML e-mails turned off will show the original
text-only e-mails.


Filtering
~~~~~~~~~

E-mails now have ``X-ReviewBoard-URL`` and ``X-ReviewRequest-URL`` headers,
which can be used for filtering e-mails more intelligently.
``X-ReviewBoard-URL`` contains the URL of the Review Board server, and
``X-ReviewRequest-URL`` contains the URL to the review request referenced
in the e-mail.


iPhone and iPad Support
-----------------------

We now support code review using the iPhone and iPad through the main
Review Board web UI. You can bookmark Review Board to your home screen
with a nice clean icon and use Review Board like you would on the computer.

This is not the same as the old iPhone UI. This is the standard Review Board
UI, fully usable on the iPhone and iPad.


New Dashboard Columns
---------------------

New optional "Branch" and "Bugs" columns have been added to the Dashboard.

The "Branch" column is sortable and displays the branch specified in the
review request.

The Bugs column is a comma-separated list of bugs referenced in the
review request. This column is not sortable.


Password Reset
--------------

Users who lose their passwords can now reset them by following the link
on the login screen. An e-mail will be sent to their account with
instructions on resetting the password.


New Administration Features
===========================

Python 2.7 Compatibility
------------------------

Review Board can now be installed on systems running Python 2.7.


PyLucene 3.x Compatibility
--------------------------

Review Board now supports PyLucene 3.x, the latest generation of PyLucene,
which is provided by most major Linux distributions. Support for 2.x still
remains.


Easier Repository Configuration
-------------------------------

It's now easier to set up a repository, particularly against various hosting
services. A new configuration page now gives administrators the option of
choosing between Bitbucket_, GitHub_, `Google Code`_, or SourceForge_. It will
request information needed to identify your account on the repository, and
then handle the repository path and other settings.

Similarly, the bug tracker can now be set to one of several supported bug
trackers, including BitBucket_, Bugzilla_, `Google Code`_, Redmine_,
SourceForge_ or Trac_.


.. _Bitbucket: http://bitbucket.org/
.. _Bugzilla: http://www.bugzilla.org/
.. _GitHub: http://github.com/
.. _`Google Code`: http://code.google.com/hosting/
.. _SourceForge: http://www.sourceforge.net/
.. _Redmine: http://www.redmine.org/
.. _Trac: http://trac.edgewall.org/


Hiding Old Repositories
-----------------------

Repositories that are no longer in use can now be hidden from users by
unchecking :guilabel:`Show this repository` on the repository's configuration
page.


Per-Repository Default Reviewers
--------------------------------

The Default Reviewers support has been enhanced to allow a Default Reviewer
to be applied to one or more specific repositories. The configuration page
has also been revamped for better usability and error checking.


Server Log
----------

A Server Log page has been added for viewing the Review Board log file.
The log can be sorted and filtered, and lines are color-coded based on
severity.

You can get to the new page by clicking :guilabel:`Server Log` on the
Administration Dashboard.


Amazon S3 Storage
-----------------

Large installations can now use `Amazon S3`_ for storing uploaded screenshots.
This is especially useful for Review Board instances hosted on
`Amazon EC2`_, but can be used in any installation to offload the screenshots.

In the future, this will be used for storing other types of data besides
screenshots.


reCAPTCHA Support for Registration
----------------------------------

Review Board servers that are open to the public can have issues with
spambots creating new accounts. Review Board can now use the
reCAPTCHA_ service to help guard against spam accounts.

By signing up at the reCAPTCHA_ site, you will receive keys you can
specify in the new Authentication Settings page in the administration UI
to enable a captcha. Captchas are easy to solve by humans, but harder for
programs to solve, and should work well as a deterrent.


WSGI Support
------------

rb-site can now generate a WSGI installation for Review Board. This is
a more modern replacement for mod_python, which won't be available in
future versions of Apache.


Custom Management Commands
--------------------------

Review Board today provides a few management commands, invoked by
running :samp:`rb-site manage {/path/to/site} {commandname}`. These
were limited to the commands we bundled, but now administrators can
write custom commands that they can invoke, which have access to the
Review Board database and other internals. This can be useful for
automation scripts.

To make use of this, see the `Django custom django-admin commands`_
documentation and place the scripts in the :file:`{sitedir}/commands`
directory. You will need to create this directory if
it does not exist.

.. _`Django custom django-admin commands`:
   http://docs.djangoproject.com/en/dev/howto/custom-management-commands/


Batch Operations
----------------

The administration UI can be used to quickly close or reopen multiple
review requests at once.

For other types of data in the database, the administration UI supports
deleting multiple entries at once, though this should be used with caution
as it can cause irreversible data loss.


Better Validation
-----------------

Many pages in the administration UI offer better validation, preventing
problems with configuration.


X.509 Certificate Support
-------------------------

Review Board now supports authenticating using X.509 certificates. This
is useful in environments with a Public Key Infrastructure set up.


Usability Improvements
======================

Update Diff Improvements
------------------------

The previous base diff path (for Subversion and CVS repositories) is now
remembered and used the next time you update the diff.


Tooltips in the Dashboard
-------------------------

Tooltips have been added for the Starred, Ship It, Comments and Updated
images. This helps to describe the purpose of these icons for users who
are unfamiliar with them.


Comment Improvements
--------------------

* Added a resize grip to the comment dialog in the diff viewer and screenshot
  page. This provides a larger area to click to quickly resize the comment
  box.

* Comment flags in the diff viewer now cover the entire range of lines that
  the comment refers to, making it more obvious at a glance.

* Comment flags in the diff viewer no longer overwrap the line numbers.


Administration UI Improvements
------------------------------

* The User Permissions list in the administration UI are now vertically
  stacked, making it possible to see the full permission names instead of
  only part of the permission names.

* The organization of forms in the database browser in the administration
  UI has greatly improved.

  The fields that should generally not be modified (such as internal state)
  have moved to sections that are collapsed by default. The other fields have
  been better organized.

  Some fields that used to load hundreds or thousands of entries for selecting
  one object now just display the ID of the entry which, when clicked, allow
  for browsing for the new entry. There's usually no reason to change these
  fields, but this change reduces the complexity of the site and the time
  spent loading the pages.

  Many of the lists of entries are now searchable, filterable, and have better
  default sorting.


API Changes
===========

A new web API has been added, which replaces the old API provided in
Review Board 1.0.x.

The new API is much like the old one, but is cleaner, more browseable
(as opposed to having to know and hard-code all the URLs in the client)
and makes extensive use of existing HTTP methods and error codes. The API
lives in ``/api/``.

The old REST API is deprecated, but won't go away in this release.

The new features included with this API are:

* A more consistent interface. Creation of objects are always done by a
  HTTP POST to a list of resources. Updating is done by a HTTP PUT to an
  object resource. Deleting is done by a HTTP DELETE to an object
  resource.
* Authentication is now done exclusively by using HTTP Basic Auth.
* Lists of review requests or other objects are now paginated to reduce
  load on the client and the server.
* Review requests can be filtered by multiple types of criteria, such as
  lists of reviewers, the repository, and more.
* Every resource in the API now points to child resources and other related
  resources by way of hyperlinks in the resulting payload. This makes the
  entire API resource tree browseable by any client.
* Supports JSON and XML output, based on the HTTP Accept header's value
  in the request. This may be expanded for new types in the future.

The new API is documented on the :ref:`webapiguide`.


New Repository Support
======================

Remote Git Support
------------------

Remote Git repositories can now be added. Previously, Review Board required
a local, always up-to-date clone of the Git repository. Now we support
downloading files from a repository through a Git web front-end. This
requires something like Gitosis_, cgit_, or gitweb_ on the server. See
the :ref:`administration-guide` for more information on how to set this up.

.. _Gitosis: http://swik.net/gitosis
.. _cgit: http://hjemli.net/git/cgit/about/
.. _gitweb: https://git.wiki.kernel.org/index.php/Gitweb


Subversion Repositories over HTTPS
----------------------------------

Up until now, only HTTP Subversion repositories could be used with
Review Board. We now support Subversion repositories that use HTTPS. When
adding/saving such a repository, the HTTPS certificate will be checked and
may be displayed to the administrator for confirmation.

This requires some changes to the site directory, permissions, and possibly
the web server's configuration file. See the instructions after
upgrading your site when you use :command:`rb-site`.


Repositories over SSH
---------------------

Repositories that are accessed over an SSH connection are now supported. When
adding the repository, Review Board will ask you to confirm the server's
identity and will then store it for future access.

This works with Bazaar, CVS, Git, Mercurial, and Subversion.


Perforce Improvements
---------------------

Pending changes on Perforce servers now have a "(pending)" indicator next to
the change number.


Mercurial Improvements
----------------------

Added Mercurial support for ``--git`` formatted patches.


Changes since 1.5 RC 2
======================

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

* Added support for linkifying text (such as bug numbers and URLs) in reviews.
  Patch by Laurent Nicolas.

* Add a toggle on the diff viewer for showing or hiding trailing or extra
  whitespace. Patch by Laurent Nicolas.

* Added support for Clear Case directory changes in the diff viewer. Patch
  by Jan Koprowski.


Bugs Fixed
----------

* Fixed a possible security bug in LDAP where an empty password could be
  accepted during login. Patch by Corey Hickey.

* Attempting to review a review request with a "Graphics only" repository
  setting would break. (:bug:`1828`)

* Links in the HTML review e-mails were missing the server domain, and
  were as a result broken.

* Syntax highlighting for files on Clear Case was broken. Patch by
  Jan Koprowski. (:bug:`1590`)

* Patches on Mercurial mqueues would sometimes report missing files due to
  not having version information for some files. Those files are now marked
  with a version of "Unknown". Patch by Eduardo Felipe Castegnaro.

* New files in a Git change would trigger an error when performing SHA1
  validation.

* Screenshots smaller than the thumbnail width on the review request page
  would have a smaller clickable area. Clicking on parts of the thumbnail
  box outside of the image would do nothing, instead of opening the screenshot
  as it should have.

* Uploading a screenshot while on a screenshot page would cause a JavaScript
  error upon completion.


Contributors
============

* Alex Harvey
* Brett Simmers
* Christian Hammond
* Chris Clark
* Chris Trimble
* Dan Buch
* David Trowbridge
* Eduardo Felipe Castegnaro
* Helder Ribeiro
* Jacob Farkas
* Jan Koprowski
* Kay Röpke
* Laurent Nicolas
* Markus Knittig
* Mike Conley
* Nathan Auch
* Nathan Heijermans
* Nikolai Prokoschenko
* Phil Orwig
* Ryan Oblak
* Simon Morley


.. _`Amazon S3`: https://s3.amazonaws.com/
.. _`Amazon EC2`: http://aws.amazon.com/ec2/
.. _`reCAPTCHA`: http://www.recaptcha.net/
