Release Notes for
                                Helix Swarm

                              Version 2024.4

Introduction

    Helix Swarm (hereafter referred to as "Swarm") enables collaboration
    and code review for teams using Helix Core that will help your teams ship
    quality software faster.

    This document lists all user-visible changes to Helix Swarm for
    Release 2024.4.

    Perforce numbers releases YYYY.R/CCCCC, for example, 2024.4/123456. YYYY is the
    year; R is the release of that year; CCCCC is the bug fix change level.
    Each bug fix in these release notes is marked by its change number.
    Any release includes (1) all bug fixes of all previous releases and (2)
    all bug fixes of the current release up to the bug fix change level.

    The most up to date version of these release notes can be found here:

    * http://www.perforce.com/perforce/doc.current/user/swarm_relnotes.txt

    Please send all feedback to support@perforce.com.

--------------------------------------------------------------------------

Important Platform End-of-Life Notice

    Swarm no longer provides an OVA.

    Dropped support for PHP 7.* as of 2024.3

    Dropped support for the below Operating Systems:
        - CentOS 7 and 8
        - Ubuntu 16 and 18
        - RHEL 7
        - Amazon Linux 2

    As of 2024.3, Swarm has discontinued support for PHP 7.* shifting its focus to PHP 8.x,
    which addresses significant security issues and potentially improves Swarm's performance.
    This reflects our dedication to retiring platforms that have reached End-of-Life (EOL).
    Upon upgrading Helix Swarm, consider migrating to PHP version 8.x.
    
    Swarm will drop support for PHP 8.0 in 2024.5 release. 
    This is part of our commitment to move away from using versions of platforms that have 
    reached End-of-Life (EOL).

--------------------------------------------------------------------------

Important Notes

    We are deprecating APIs older than v9, with a plan to remove them
    from Swarm following the 2022.2 release. We recommend that anything that
    uses the Swarm APIs is updated to use at least v9 by then. This
    includes Helix Core Visual Client (P4V) 2021.3 or older as it uses v9
    of the Helix Swarm API.

    v9 is the latest complete set of APIs. The v11 APIs are not yet complete,
    and might undergo refinement in the upcoming releases.

    Review Page

         You can switch back to the Classic view seamlessly using the classic view toggle.

    Task Stream Reviews

        Pre-commit reviews in a task stream are not supported.
--------------------------------------------------------------------------

Upgrading from earlier versions

    In the Swarm 2024.3 release, Redis binary has been upgraded to version 7.2.4. As a result 
    of this upgrade, the kernel and glibc requirements have automatically changed from 
    version 2.6 to 3.10. If you need to run Redis under kernel version 2.6, you can do either
    of the following:

    - Compile Redis from sources on the target host meeting the target kernel.

    - Or use your own older Redis installation.
    
    Please see the upgrade section of the documentation:
    https://www.perforce.com/manuals/v24.4/swarm/Content/Swarm/chapter-setup-upgrade.html

--------------------------------------------------------------------------

Platform Notes

    Swarm supports the following client web browsers at the latest stable
    browser version:

    * Apple Safari
    * Google Chrome
    * Microsoft Edge
    * Mozilla Firefox

    We recommend the use of the latest stable version of the browsers
    listed above for the best experience when using Swarm.

    Other web browsers might also work, including prior, development or
    beta builds of the above web browsers, but are not officially
    supported.

    Swarm requires that JavaScript and cookies are enabled in the web
    browser.

--------------------------------------------------------------------------

Supported Platforms

    Linux (x86_64)
        Ubuntu 20.04, 22.04 and 24.04
        Rocky Linux 8 and 9
        RHEL 8 and 9

    The above platforms are tested and subject to regression testing on a frequent basis.
    Errors or bugs discovered in these platforms are prioritized for correction.
    Any platform not listed above is not actively tested by Perforce.
    Swarm may run on other platforms that are not actively tested.

--------------------------------------------------------------------------

Installation

    We recommend installing Swarm using packages. This takes away all the
    complication of installing all the required packages and software used
    by Swarm.

    Please see the installation section of the documentation:
    https://www.perforce.com/manuals/v24.4/swarm/Content/Swarm/chapter.setup.html


    Support for Ubuntu 16.04 has been dropped from release 21.1 onwards and
    support for CentOS 7 has been dropped from 2024.3.

--------------------------------------------------------------------------

Upgrading from Swarm 2019.1 and earlier

    Swarm 2019.2 introduced a Redis in-memory cache to improve performance and
    reduce the load on the Helix Core server. This replaces the file-based cache
    that was previously used by Swarm.

    On Swarm systems with a large number of users, groups, and projects, the
    initial population of this cache can take some time. If you have a large
    Swarm system you should read through the Redis section of the documentation:

    https://www.perforce.com/manuals/v24.4/swarm/Content/Swarm/admin.redis.html

--------------------------------------------------------------------------

Technology Preview features:

    Features offered in Technology Preview are experimental and not
    guaranteed to always work as expected. If you have feedback and
    functionality suggestions, email techpreview@perforce.com.

--------------------------------------------------------------------------

Interoperating With Previous Releases

   Swarm is tested against all supported Helix Core Server at the time of release.
   We test new releases of Swarm against the versions of Helix Core that are under
   standard maintenance at the time of the release.

   https://www.perforce.com/manuals/v24.4/swarm/Content/Swarm/setup.dependencies.html#Helix_Core_Server_requirements

--------------------------------------------------------------------------

Documentation

    Swarm Release 2024.4 documentation is included in the distribution
    under the "public/docs" folder. To access it locally, edit the URL to point
    to the docs directory on your local system. The documentation can be accessed from
    within Swarm from the "Help" icon in the toolbar when you are logged in.

    Additionally, the documentation is available online:

    * http://www.perforce.com/manuals/v24.4/swarm

--------------------------------------------------------------------------

License

    Please see the separate "license" file, a peer to this file, or:
    https://www.perforce.com/perforce/r24.4/user/swarm_license.txt
--------------------------------------------------------------------------
Bugs fixed in 2024.4 Patch 1
    #2699910 (Bug #124141)
        Fixing the hard coded expiry date for the classic page switch
        cookie.

--------------------------------------------------------------------------
Major new functionality in 2024.4

    #2637040 (Bug #121474)
        Restrict users from editing project-level workflows if they do not
        have access to any branch paths when the 'permission_check'
        configurable is set to true.

    #2628051 (Bug #121465)
        Helix Swarm users that do not have access to a branch path are not
        allowed to delete it when the 'permission_check' configurable is set
        to true.

    #2628027 (Bug #121361)
        Added activity logs regarding the clean-up of deleted user across
        projects, groups, test definition, workflow, user profile.

    #2627430 (Bug #118853)
        When a user is deleted from the Helix Core Server, Helix Swarm now
        automatically removes the deleted user from the project followers
        list. 

    #2627397, #2625222, #2625190, #2624719 (Bug #121498)
        When a user is deleted from the Helix Core Server, Helix Swarm now
        appends the suffix 'deleted' to their username. This assists in
        identifying deleted users in Helix Swarm.

    #2626488 (Bug #121358)
        Added an API endpoint 'Check for user deletion or add user for
        deletion in Swarm' for administrators to verify the successful
        cleanup of a deleted user across the system components such as
        workflow, test definition, projects, groups, and user profile.

    #2626163 (Bug #118852)
        When a user is deleted from the Helix Core Server, Helix Swarm now
        automatically removes the deleted user from the projects associated
        branch default reviewers list. 

    #2625594 (Bug #118851)
        When a user is deleted from the Helix Core Server, Helix Swarm now
        automatically removes the deleted user from the projects associated
        branch moderators list. 

    #2625155 (Bug #121298)
        Helix Swarm now supports using Slack integration through a proxy
        server.

    #2624163 (Bug #118630)
        When a user is deleted from the Helix Core Server, Swarm now
        automatically removes the deleted user from the groups. 

    #2623338, #2623906, #2627430 (Bug #118628)
        When a user is deleted from the Helix Core Server, Swarm now
        automatically removes the deleted user from the user profile.

    #2623183 (Bug #121461)
        Added syntax highlighting support for the Haxe programming language.

    #2622632, #2623605, #2623763, #2624362, #2624418 (Bug #118631)
        When a user is deleted from the Helix Core Server, Swarm now
        automatically removes the deleted user from the projects. 

    #2621690 (Bug #118645)
        When a user is deleted from the Helix Core Server, Swarm now
        automatically removes the deleted user from the workflows.

    #2621594, #2621554 (Bug #118644)
        When a user is deleted from the Helix Core Server, Swarm now
        automatically removes the deleted user from the test definitions.

    #2616745, #2619728, #2620154 (Bug #118709)
        Extended the existing filter or validator functionality of the branch
        path to validate the branch path if the 'permission_check'
        configurable is set to true, and then perform the permission check of
        the branch paths.

    #2614959 (Bug #118708)
        Added a new 'permission_check' configurable to allow users to enable
        or disable branch path permission checks.

--------------------------------------------------------------------------
Minor new functionality in 2024.4

    #2640887 (Bug #120350)
        The PHP memory limit of the Docker container is now set to 2
        gigabytes (GB).

    #2631006 (Bug #121160)
        We can link automatically to reviews using the format
        'review-<review-id>'.

    #2630996 (Bug #121509)
        Fixed returning errors when the user doesn't have permissions within
        the protections table.

    #2623716, #2615231 (Bug #120686)
        Added a new configurable 'cookie_samesite' to prevent the web browser
        from sending the cookie in cross-site requests.

    #2620991, #2620259, #2619198, #2616697 (Bug #120614)
        Added a new content_security_policy configurable in the
        SWARM_ROOT/data/config.php file with a default value to enhance
        security, which can be customized as needed.

    #2620259, #2617744 (Bug #120616)
        Added new security configurables to the SWARM_ROOT/data/config.php
        file, including headers for X-XSS-Protection, X-Content-Type-Options,
        Referrer-Policy, Strict-Transport-Security, Subresource-Integrity,
        Content-Security-Policy, and Permissions-Policy, which can be
        customized as needed.

    #2615008 (Bug #120617)
        Implemented a security enhancement to disable autocomplete for
        password fields in web forms by setting the autocomplete attribute to
        "off," preventing browsers from storing passwords.

--------------------------------------------------------------------------
Bugs fixed in 2024.4

    #2642372 (Bug #122059)
        Updated documentation to clarify that when using on-prem with PAT,
        the user field must be left blank.

    #2642370 (Bug #121986)
        Fixed an issue where the Swarm reviews api/v11/reviews API endpoint
        in the Helix Swarm Guide incorrectly listed "committed" as a valid
        state.

    #2640859 (Bug #121574)
        Added instructions to the Helix Swarm guide for the required steps to
        be completed when HTTPS is implemented.

    #2637759 (Bug #121966)
        Updated the upgrade instructions in the Helix Swarm Guide for Ubuntu
        20.04 system as it requires the installation of PHP 8.* before
        upgrading Swarm.

    #2636136, #2636074 (Bug #121584)
        Updated the release notes and Helix Swarm Guide to indicate that the
        Helix Swarm 2024.3 release upgrades the Redis binary, implicitly
        changing kernel and glibc requirements from 2.6 to 3.10.

    #2635642 (Bug #121737)
        Enhanced the Helix Swarm Guide by including examples for Depot
        permission, Private Project, and TestRun API.

    #2632750 (Bug #121448)
        The Helix Swarm guide now includes details about the API to rerun a
        specific test in Helix Swarm.

    #2630996, #2625094 (Bug #121319)
        Helix Swarm now automatically creates new Helix Core server users
        upon login if they exist in LDAP, provided the
        'auth.ldap.userautocreate' setting is enabled in the Helix Core
        server configuration.

    #2628507, #2628507 (Bug #121632)
        Fixed an issue where notifications were not being sent immediately
        when notification_delay_time configurable was set to 0.

    #2628422, #2625137 (Bug #121486)
        When you rename a file, edit it, and request a review, now only the
        edited content is highlighted in the diff panel. 

    #2623384, #2623225 (Bug #120684)
        Fixed an issue where clicking the expand arrow navigated to the
        Participant tab instead of expanding the branch definition if the
        Depot paths in the Branch definition contained a blank line when
        adding a new branch.

    #2621333 (Bug #121291)
        Fixed an issue where, when a branch had the 'Inherit from project'
        setting for a workflow, Helix Swarm incorrectly ignored the project
        level setting. This issue occurred only when the 'Inherit from
        project' option for the workflow was selected manually.

    #2621333 (Bug #120118)
        Fixed an issue where an edited file was bypassing the workflow rules.

    #2620766, #2620368, #2620155, #2590461 (Bug #115024)
        Fixed an issue where Helix Swarm incorrectly ignored user settings
        when the username was in mixed case within a group. 

    #2619161 (Bug #112018)
        Fixed an authorization issue that was preventing Helix Core Server
        users from creating reviews in Helix Swarm, eliminating the need for
        workarounds and improving the review workflow.

    #2617719 (Bug #120688)
        In the Helix Swarm guide, added details about how to hide Apache
        version and Operating System (OS) details from HTTP headers and
        server-generated pages. This includes steps for viewing current
        server information, modifying Apache configuration, and restarting
        the server to improve security by obscuring system details.

    #2617699 (Bug #120613)
        In the Helix Swarm guide, added that when using HTTPS, Port 80 should
        be disabled to prevent exposure to unencrypted HTTP traffic and
        associated security risks.

    #2521356, #2514766 (Bug #119648)
        Fixed an issue where the long changelist descriptions in the default
        review page were being clipped.

--------------------------------------------------------------------------
Bugs fixed in 2024.3 Patch 2

    #2628162, #2628035, #2628034, #2628033 (Bug #121663)
        Removed the French translations included by mistake. They are
        gibberish for internal testing only.

--------------------------------------------------------------------------
Bugs fixed in 2024.3 Patch 1

    #2620766, #2620368, #2620155, #2590461 (Bug #108392)
        Fixed an issue where notifications were not sent for private projects
        with mixed-case usernames if the Helix Core Server was
        case-insensitive.

--------------------------------------------------------------------------
Major new functionality in 2024.3

    #2609563 (Bug #120352)
        Added support for PHP 8.3.

    #2603194, #2599201 (Bug #120247)
        When a user clicks outside of a comment box, it will now close
        instead of staying open.

    #2600507, #2600454 (Bug #120687)
        Upgraded some NPM libraries to ensure that Swarm is using the latest
        version of all libraries.

    #2599318, #2596988, #2596454 (Bug #117622)
        Upgraded Laminas to support PHP 8.2 due to a header bug in older
        version of Laminas.

    #2596454 (Bug #120097)
        Swarm now uses the latest Laminas version, which requires a minimum
        PHP 8.0.

    #2585658 (Bug #111023)
        For Jira on-premises, added support to login using a Personal Access
        Token (PAT)

    #2582551 (Bug #120094)
        Swarm has dropped support for PHP 7.X.

--------------------------------------------------------------------------
Minor new functionality in 2024.3

    #2603824, #2598050 (Bug #120556)
        Fixed an issue where the new SSO integration login page prevented
        logins with a mixed-case username.

    #2603623, #2603636, #2603648, #2603654, #2603664, #2603668, #2603684,
    #2603718, #2603734, #2603742, #2603754, #2603758, #2603858, #2603949,
    #2604366, #2604509, #2604912, #2605885, #2605922, #2606192 (Bug #120412)
        Added support for Ubuntu 24.04.

    #2597502, #2597403, #2597403, #2597137, #2597137 (Bug #120665)
        Upgraded jQuery from version 3.2.1 to 3.5.1 to resolve any Common
        Vulnerabilities and Exposures (CVE). 

    #2587627 (Bug #118193)
        You can now exempt users from linking their changes to a Jira issue.

    #2582446, #2578000 (Bug #116985)
        Upgraded the Redis binary shipped with Swarm to version 7.2.4.

    #2582440 (Bug #120029)
        The syntax highlighter on the review page now supports GoLang.

--------------------------------------------------------------------------
Bugs fixed in 2024.3

    #2604917 (Bug #118427)
        An error was displayed in the Swarm UI when the max_size configurable
        was set to a low value. This occurred because the file content was
        truncated, and the diffing library used by Swarm did not receive
        enough data. This issue has been resolved.

    #2599964 (Bug #119670)
        Fixed an issue where the Swarm update project API endpoint would
        disable both toggle switches in the Participants tab, affecting which
        actions would send a notification.

    #2599958 (Bug #110072)
        Fixed an issue where the workflow rule of auto approve review based
        on minimum vote count approved reviews even when
        disable_approve_when_tasks_open parameter was set to true.

    #2599945 (Bug #120218)
        Fixed an issue where the user had to select Alt+T twice to open a
        file in a new tab.

    #2598589 (Bug #120449)
        Fixed an issue where reviewers weren't receiving email notifications
        for post-commit reviews created by a workflow.

    #2594767 (Bug #119117)
        Fixed an issue where a reviewer received an incorrect link for the
        edited reviewers in the Swarm notification email.

    #2594749 (Bug #117581)
        Swarm now ignores multiple matches of "#review" in a changelist
        description if a #review with a changelist number is detected.

    #2591172 (Bug #119645)
        The Helix Swarm Guide now includes more details about how to set up
        Slack notifications from Swarm to private channels. 

    #2590777 (Bug #118548)
        Fixed an issue where the review page would flicker.

    #2590461 (Bug #108392)
        Fixed an issue where notifications were not sent for private projects
        with mixed-case usernames if the Helix Core Server was
        case-sensitive.

    #2590217 (Bug #120260)
        Fixed an issue where a changelist description containing a markdown
        hyperlink to a Jira issue with no spaces between the brackets and the
        string would result in Swarm not adding a web link to the Jira issue.

    #2587746 (Bug #119916)
        Updated the Helix Swarm Guide to include details about the
        resultOrder parameter in the reviews API endpoint.

    #2587075 (Bug #119629)
        The Helix Swarm Guide now includes more details about how the Slack
        integration uses the project ID instead of the project name.

    #2585036 (Bug #117251)
        Fixed an issue where Swarm did not display the file diff when the
        review page was opened from the Activity page.

--------------------------------------------------------------------------
Minor new functionality in 2024.2

    #2579948 (Bug #119930)
        The Swarm documentation set will now point to external manual pages.
        This is part of our effort to correct and update the Swarm
        documentation quicker without causing a full product release. 

    #2579937, #2579944 (Bug #119956)
        My dashboard now displays a maximum of 25 reviews instead of the
        default 1000. This is part of our effort to improve performance of
        the dashboard page.

    #2579187 (Bug #119952)
        Upgraded all Swarm node modules to latest patched version of
        libraries.

    #2575467 (Bug #113669)
        Added keyboard shortcut ALT + C to show or hide inline file comments.

    #2575467 (Bug #113668)
        Added keyboard shortcut Shift + Alt + F to expand the Diff view to
        full screen or collapse the Diff view.

    #2575467 (Bug #113667)
        Added keyboard shortcut Alt + D to show or hide whitespace diffs for
        all files in a review.

    #2575467 (Bug #113666)
        Added keyboard shortcut Alt + W  to show or hide whitespace and tab
        characters for all text files in a review.

    #2575467 (Bug #113665)
        Added keyboard shortcut Alt + L to show diffs in-line or
        side-by-side.

    #2575467 (Bug #113664)
        Added keyboard shortcut Alt + T to open file in a new tab.

    #2575467 (Bug #113662)
        Added keyboard shortcut Alt + R to mark a file as read.

    #2575467 (Bug #113661)
        Added a shortcut dialog that displays a list of all the keyboard
        shortcuts for Swarm. Use keyboard shortcut Alt + H to open the
        shortcut dialog.

--------------------------------------------------------------------------
Bugs fixed in 2024.2

    #2579381 (Bug #119991)
        In the Helix Swarm Guide, improved the description of "afterUpdated"
        parameter for GET /api/v11/reviews API endpoint.

    #2578335 (Bug #119871)
        The file list in the review page was not displayed correctly. This is
        now fixed.

    #2578221, #2576730 (Bug #119888)
        Swarm now uses the maximum value when fetching moderators records on
        the dashboard. This improves the performance of the dashboard.

--------------------------------------------------------------------------
Minor new functionality in 2024.1

    #2571045, #2568831, #2568605, #2567690, #2567631, #2564949, #2564912,
    #2564911, #2561085, #2560054, #2560033, #2559561, #2559303, #2557294,
    #2555221, #2554739, #2554713, #2553609, #2553607, #2552611, #2552611,
    #2550649 (Bug #113873)
        Swarm now supports the Helix Authentication Service (HAS). This
        feature improves the Swarm login process for customers using a Single
        Sign-On (SSO) provider.

    #2558169, #2556449 (Bug #119339)
        Updated the P4PHP version bundled with Swarm to the latest P4PHP
        version 2023.2.

--------------------------------------------------------------------------
Bugs fixed in 2024.1

    #2565435 (Bug #119550)
        Updated the Helix Swarm Guide to include details about the Perforce
        package key for Ubuntu 22.04.

    #2560327 (Bug #119222)
        The performance of My dashboard page has been improved when loading
        the page.

    #2558616 (Bug #119250)
        The show more context button showing incorrect numbers is now fixed.

    #2554495 (Bug #118213)
        Updated the "Configuration overview" topic of the Helix Swarm Guide
        with the correct tick marks for boolean values.

    #2552655 (Bug #118241)
        Updated the "Review cleanup" topic of the Helix Swarm Guide to fix
        any ambiguous phrases. 

    #2551682 (Bug #119118)
        Performance of the Manage reviewers dialog when handling large sets
        of users and groups is improved.

    #2551514 (Bug #119175)
        Performance of the review page has been improved when handling large
        number of groups.

    #2546184 (Bug #118652)
        Added a new topic called "State change restrictions without
        moderation" to the Helix Swarm Guide outlining the behaviour of
        changing the state of any review associated with a project that has
        no moderation.

    #2546181 (Bug #118094)
        Updated the "Uninstall Swarm" topic of the Helix Swarm Guide to
        include the correct information about the Swarm properties. 

    #2543715 (Bug #118093)
        Updated the "Uninstall Swarm" topic of the Helix Swarm Guide to
        include additional details for a web server uninstall.

--------------------------------------------------------------------------
Minor new functionality in 2023.4 Patch 1

    #2543783 (Bug #118933)
         Updated the P4PHP version bundled with Swarm to the latest P4PHP
        version 2022.2.

--------------------------------------------------------------------------
Bugs fixed in 2023.4 Patch 1

    #2544201 (Bug #119071)
        Fixed an issue with the error output when a review fails to create.

--------------------------------------------------------------------------
Major new functionality in 2023.4

    #2527463, #2516090 (Bug #115918)
        In the default review page, introduced the ability to expand or
        collapse all files in a review using an option in the Diff actions
        button. This feature allows for seamless navigation by expanding all
        files at once and collapsing them when necessary.

    #2514766, #2514766 (Bug #113649)
        In the default review page, the review description is now limited to
        allow users to focus more on the review files. If the review
        description size exceeds the 25% of the page, then only the initial
        part of the review description is displayed. Use the Expand
        description button to view the full review description.

    #2508519, #2509653 (Bug #117674)
        In the Information panel of the default review page introduced a new
        Blocking Commit section for pre-commit reviews. If a review has been
        approved but not committed and a new requirement is added to the
        review, then it is displayed in the Blocking Commit section.  

    #2505554, #2499797 (Bug #117495)
        In the default review page, the Blocking Approval section is no
        longer displayed for a review in the approved state.

    #2505503, #2505502 (Bug #117356)
        The Swarm Review page (preview) has now become the default review
        page. The old review page is now referred to as the classic review
        page.

    #2502299, #2500506 (Bug #115974)
        When opening the default review page for the first time, the file
        list panel and the information panel are hidden to maximize the
        screen size for viewing the code.

    #2411577, #2410180, #2408208 (Bug #109209)
        In the default review page, a new "Show full context" button is added
        to the File content panel header. This feature simplifies the code
        review process by allowing users to expand all diff chunks within a
        file without having to navigate through individual differences. 

--------------------------------------------------------------------------
Minor new functionality in 2023.4

    #2523728, #2523728 (Bug #117533)
        In the default review page, for a truncated file, we disable the show
        full context button due to performance issues of viewing large diffs.

    #2523464 (Bug #117933)
        In the default review page, when a file is truncated, a message is
        displayed in the File diff panel.

    #2516113 (Bug #117728)
        In the default review page, when reviewing large files, the File
        content panel header is always displayed for the file that is
        currently open for review.

    #2515432 (Bug #117716)
        In the default review page, images of type SVG were being rendered as
        XML files.

    #2514759 (Bug #117229)
        In the default review page, improved the Tasks dialog to show
        tool-tips for the task related icons.

    #2513013, #2513010 (Bug #117795)
        The Swarm log file has been improved and includes more information to
        help trace events. Each request contains the URI (Uniform Resource
        Identifier), PID (Process ID), worker ID (only for a worker), task
        details, IP address of the remote host, and originating IP address of
        a client (if a request is forwarded).

    #2500658 (Bug #116663)
        The validation for the Replace review participants v11 API endpoint
        has been improved to ensure that no bad or missing data is accepted.

    #2493726 (Bug #116228)
        Swarm 2023.4 release is tested with and supports the latest stable
        RHEL 9 release 9.2.

--------------------------------------------------------------------------
Bugs fixed in 2023.4

    #2525506, #2525506 (Bug #114649)
        Running the Docker container section of the Helix Swarm Guide is
        improved to specify that if a user wants to run Swarm on a different
        port than the default port 80 then it must be updated in the
        SWARM_HOST parameter.

    #2524730, #2524724, #2524722, #2524722, #2522093 (Bug #117874)
        When the the review which is approved first and committed later,
        there will be no repeated extra activity and the notification of the
        same review approval now, The issue of user getting the same
        notification twice is resolved.

    #2518424 (Bug #117839)
        Updated the Docker setup scripts to use Ubuntu 22.04 version and
        default to PHP 8.1 version.

    #2516934 (Bug #117796)
        In the default review page, when a user scrolled away from an open
        comment in a file they were auto-scrolled back to the open comment.
        This is now fixed.

    #2508535 (Bug #117850)
        Some API endpoints would fail if payload was sent with invalid JSON
        within the POST requests. This is now fixed.

    #2503072, #2503072 (Bug #117666)
        The Helix Swarm Guide is updated to include more details about the
        parameters required when adding a test. 

    #2503013, #2503023 (Bug #117425)
        Improved the Install and configure Swarm on CentOS/RHEL section of
        the Helix Swarm Guide. The Swarm Guide now has install instructions
        on separate pages for each operating system.

    #2496223 (Bug #117226)
        In the Helix Swarm Guide, added information about the Helix
        Authentication Service (HAS) versions supported by Swarm.

    #2495762 (Bug #116851)
        The Helix Swarm Guide is updated to clearly state that a group owner
        is not a member of their group and that they can be added as a member
        of a group.

    #2492517 (Bug #117221)
        Upgraded the Swarm Docker image operating system to Ubuntu 22.04 to
        resolve the Apache HTTPD vulnerabilities.

    #2488910 (Bug #116793)
        Fixed an issue where the review route would loop due to only
        detecting reviews within the default review page routing logic.

--------------------------------------------------------------------------
Minor new functionality in 2023.3 Patch 1

    #2544272 (Bug #119074)
         Updated the P4PHP version bundled with Swarm to the latest P4PHP
        version 2022.2.

--------------------------------------------------------------------------
Bugs fixed in 2023.3 Patch 1

    #2544907, #2521418 (Bug #118216)
        Swarm project patch v9 endpoint was mistakenly taken out.

--------------------------------------------------------------------------
Major new functionality in 2023.3

    #2463816 (Bug #116353)
        Swarm is now able to manage reviews with large changelists. The
        review page (preview) uses lazy loading and only shows the files that
        the user has expanded to view. 

--------------------------------------------------------------------------
Minor new functionality in 2023.3

    #2482628 (Bug #115333)
        Added a new configurable in the Swarm Helix Core Server Extensions
        global configuration to allow users to set the file path containing
        CA certificates for validating the Swarm Helix Core Server's
        certificate.

    #2480668 (Bug #116830)
        You can now add a Thumbs Up emoji to like a comment.

    #2480391 (Bug #116677)
        When using the v11 create a review API endpoint, you can now add
        reviewers, requiredReviewers, and reviewerGroup details. These
        parameters affect the output of participants and participantsData
        parameters of the review data.

    #2476229, #2474853, #2474853 (Bug #115648)
        Swarm email notifications now contain the complete test URL to enable
        users to directly navigate to the tests.

    #2470206, #2470105 (Bug #115571)
        The Swarm review page (preview) now shows the total number of
        file-level comments.

    #2470177 (Bug #116355)
        Introducing two new v11 comments API endpoints that enable you to add
        and remove a thumbs up emoji to a review comment.

    #2468256 (Bug #112804)
        Added a scrollbar to the file list in the Swarm review page (preview)
        to allow users to see the full list of files.

    #2467492 (Bug #116158)
        For a review that is already approved, the Change Review to Commit
        dialog now shows the correct button to commit a review.

    #2465872 (Bug #114350)
        Added a new v11 API endpoint that enables you to create a review.

    #2465259, #2465111 (Bug #115108)
        Added a new configurable that enables you to configure Swarm linkify
        to open a URL in the same tab or a new tab.

--------------------------------------------------------------------------
Bugs fixed in 2023.3

    #2482509 (Bug #117184)
        Swarm release notes is updated in reference to the Bug #111151 and
        Bug #112673 to reflect Swarm’s correct Helix Core Server Extensions
        script (swarm-extctl.sh).

    #2480723, #2477977 (Bug #116565)
        In the review page (preview), the @mention was adding a trailing
        character when clicking the user name resulting in an invalid URL.

    #2480413, #2475783, #2475783 (Bug #115601)
        Swarm incorrectly reported the manual tests as running even though
        they were not triggered to start. 

    #2479453, #2479453 (Bug #116730)
        In the Swarm guide, the v9 Projects API endpoint example response
        code had incorrect branches data. This is now fixed.

    #2478276 (Bug #116448)
        Swarm was not handling groups correctly when calling the Dashboard
        API. This resulted in the Dashboard page to display a 500 internal
        error.

    #2476579 (Bug #116937)
        The Swarm guide now specifies in the Jira integration section that
        the Jira Cloud user can be an email address.  

    #2475788 (Bug #116515)
        When a user following a project was deleted from the Helix Core
        Server, sometimes the user was not deleted from the followers list.
        This is now fixed. 

    #2461336 (Bug #116091)
        The Slack integration documentation in the Swarm guide now uses a
        single type of brackets to keep the document simple and consistent.

    #2461290, #2461257 (Bug #116163)
        Adding a file-level comment would sometimes add an unrelated code
        block. 

    #2456616 (Bug #116252)
        The Swarm guide now clearly states where the rpl.forward.login
        parameter should be set for the P4V Authentication

    #2449476 (Bug #115891)
        Improved the handling of non-standard ASCII characters.

    #2426784 (Bug #116035)
        Improved the handling of reviews that have a mix of pre-commit and
        post-commit changelists.

--------------------------------------------------------------------------
Minor new functionality in 2023.2 Patch 2

    #2548992 (Bug #119126)
        Updated the P4PHP version bundled with Swarm to the latest P4PHP
        version 2022.2.

--------------------------------------------------------------------------
Bugs fixed in 2023.2 Patch 2

    #2547239, #2544907, #2521418 (Bug #118216)
        Swarm project patch v9 endpoint was mistakenly taken out.

--------------------------------------------------------------------------
Bugs fixed in 2023.2 Patch 1

    #2462536 (Bug #116383)
        Removed a rewrite rule in the Apache configuration that was 
        causing performance issues for web browsers using the en-US
        locale.

--------------------------------------------------------------------------
Major new functionality in 2023.2

    #2424434, #2424791, #2425926, #2426746, #2426784 (Bug #109680)
        In the Review page (preview), you can now view multiple files at once
        under File stack. You can expand files one-by-one and keep the
        previous file in view.

    #2413090, #2414217, #2414230, #2415241 (Bug #110953)
        Swarm now supports P4PHP 8.0, 8.1, and 8.2.

--------------------------------------------------------------------------
Minor new functionality in 2023.2

    #2450545 (Bug #113389)
        Added a new v11 Reviews API endpoint for archiving inactive reviews.
        This API allows you to archive inactive reviews since a specific
        date.

    #2449393 (Bug #115220)
        The locale files for language code en-US do not exist. Swarm
        now redirects to the default language code en. This helps remove the
        404 errors that were being displayed.

    #2429155 (Bug #114854)
        In the Review page (preview), the File list header is now available
        on the full screen Diff view. This enables users to easily exit full
        screen mode.

    #2425583, #2423551 (Bug #98772)
        Improved the Swarm HTML email to render markdown as we render
        it within the web pages.

    #2423550 (Bug #115157)
        Jira linkify on the legacy page now opens in a new tab instead of
        opening in the current Swarm tab.

    #2423375 (Bug #115130)
        The Review page (preview) now supports ActionScript, Powershell, and
        Batch file syntax highlighting.

    #2423197, #2423197 (Bug #115032)
        Swarm can now post notifications to Slack for a restricted
        changelist using the bypass_restricted_changelist configurable. The
        default value is false. To allow Swarm to post restricted information
        to your Slack workspace change the default value to true.

    #2416352 (Bug #114429)
        The total number of read files has been moved to the File list header
        from the File content panel header.

    #2414480, #2415207, #2415219, #2415243, #2415634, #2415641, #2415676,
    #2415717, #2415728, #2415775, #2416336 (Bug #114428)
        In the Review page (preview), the new Diff actions menu enables you
        to setup your Diff view before you browse through the files within
        your review.

--------------------------------------------------------------------------
Bugs fixed in 2023.2

    #2440992 (Bug #114803)
        Sometimes a comment block with the highlighted red text would hide
        behind the scrollbar. This is now fixed. The highlighted red text now
        wraps around ensuring that the user can see the full comment.

    #2428100 (Bug #115169)
        Swarm is moving to a new UI written in React. Users with custom
        modules that modify the UI might find their custom modules no longer
        work. We recommend that you contact us through the Perforce Support
        portal. This will help us to understand your custom module and see if
        we can productize the feature to enhance the Swarm offering.

    #2428035, #2428035 (Bug #115277)
        The Maximum files limit section of the Swarm Guide has been
        updated to clear up any ambiguous information.

    #2420340 (Bug #114534)
        In the Review page (preview), when the view whitespace option was
        selected, the whitespace and tab characters in a diff view were not
        spaced correctly. The alignment is now fixed, and the tab space
        defaults to four spaces.

    #2419743, #2419743 (Bug #114560)
        The Swarm documentation has been updated to include more
        information about the enableStrict setting of the Swarm Helix Core
        Server extension.

    #2416373, #2416373 (Bug #114441)
        In the Review page (preview), the review version selector dropdown
        menu was not truncating a long user name.

--------------------------------------------------------------------------
Major new functionality in 2023.1

    #2406939, #2406921, #2405935, #2405908, #2405260, #2405259, #2403467,
    #2403325 (Bug #105331)
        A new config "max_files" is added to reviews section in the
        SWARM_ROOT/data/config.php file. This allows Swarm
        administrators to set the maximum file number limit for a review. If
        a request exceeds the maximum file number then a review is not
        created or updated. We recommend that the user should not set the
        "max_files" to a low number as this will allow commits to bypass
        workflow and moderators blocking approval. This feature is useful for
        large commits like branching or merging of large changelists that are
        too big to be reviewed. By default, "max_files" config is set to 0.

    #2390841, #2390274 (Bug #90878, #95465, #104510)
        Introducing the new Blocking Approval panel in the Swarm Review page
        (preview) to show what needs to be addressed before a review can be
        approved. This panel displays a summary of all the pending actions
        that could be preventing a review from moving from its current state
        to Approved state. This panel provides details about any pending
        moderator votes, individual required votes, group required votes, or
        if a test is failing that needs to pass before the review can be
        transitioned into Approve state. Depending on the config, this panel
        can also display if any pending comment tasks are blocking the
        review.

        This feature is implemented to give a single place to quickly view
        why a user is unable to transition a review to Approved state. When
        we present the list of states, we assume you would have up voted the
        review with your state change. This allows Swarm to check that you
        have fulfilled all review requirements to transition the review to
        Approved or another state.

--------------------------------------------------------------------------
Minor new functionality in 2023.1

    #2412320, #2411572, #2409411 (Bug #84775)
        You can now undelete a project that was previously deleted using the
        /api/v11/projects/{{PROJECTID}}/undelete endpoint.

    #2412168, #2412133, #2412133, #2408850 (Bug #111477)
        Added the ability to set the bypass exclusive locking option as part
        of the Swarm install so that user does not end up with a broken
        review.

    #2408590, #2406966 (Bug #114052)
        In Swarm, when a user created a review with a retained default
        reviewer that was later deleted, there was no way to remove the
        retained default reviewer from the reviewers list. This is now fixed
        and if a user or group is deleted from the Helix Core Server, Helix
        Swarm does not include them into the review as a participant.

--------------------------------------------------------------------------
Bugs fixed in 2023.1

    #2410871 (Bug #114456)
        The Swarm log file would report the Jira pass/token if there was an
        error. The Jira pass/token has now been removed from the Swarm log
        and is not exposed to systems reading the log file.

    #2410340, #2410340 (Bug #112522)
        The Swarm documentation now includes the correct custom module
        listener directory.

    #2410268 (Bug #114233)
        Updated the Swarm documentation to specify that the Helix Core
        Server client P4V version 2021.3 or older does not work with Helix
        Swarm 2022.3 or newer versions. You must upgrade the Helix Core
        Server client P4V to work with Swarm.

    #2409833 (Bug #114290)
        The Swarm documentation now specifies that when upgrading from
        Swarm 2022.2 the default value of emulate_ip_protections is
        set to false.

    #2409429, #2408675, #2408675 (Bug #111812)
        The "tasksOnly" field for the v11 api endpoint for comments is now
        included and only returns comments that have a task on them.

    #2406966, #2388892 (Bug #112309)
        When trying to join, leave, or edit participants of a review that had
        an author or participant that was deleted in the Helix Core Server,
        Swarm would reject the change or action. This is now resolved by
        checking the participants of the review and removing any deleted user
        or groups before validating the request and saving it to the
        database.

        So now if a user was a required reviewer and has been deleted, next
        time someone joins, leaves, or edits participants of a review, the
        deleted user that was required will not be present on this review
        anymore.

    #2403227 (Bug #114124)
        When a review spanned across two projects of which one project is a
        public project and the other one is a private project, the tests
        associated with the public project were being ignored.

    #2403196 (Bug #114248)
        When using the /api/v11/change/<ID>/files endpoint, Swarm was
        using the admin connection to fetch the list of files for a
        changelist. This is now fixed and Swarm uses the users
        connection to make the request.

    #2402720, #2400343 (Bug #114131)
        If a Swarm project had a branch with Minimum up vote set, it
        was not possible to remove this.

    #2394595 (Bug #114039)
        Swarm was not picking up some translation files automatically.
        This is now fixed by adding a release version as a query parameter to
        these requests so that it invalidates the old requests.

    #2391508 (Bug #113720)
        After upgrading Swarm, in some instances a “Linear layout”
        button appears. This occurred because the Swarm legacy code was
        picking up config changes and presenting old cache JavaScript code.
        This is now fixed by adding a release version as a query parameter so
        the users get the latest files every time. 

    #2388443 (Bug #112708)
        An extra / was being inserted when the server side extension called
        the /queue/add endpoint in Swarm.

    #2386655 (Bug #113653)
        In the Project Settings page, the alignment of some buttons in the
        accordions was misplaced. 

    #2385104, #2385099, #2383170 (Bug #113647)
        When deleting a project, the warning message showed an extra dot at
        the end.

--------------------------------------------------------------------------
Bugs fixed in 2022.3 Patch 1

    #2396329 (Bug #114074)
        In the review page preview, performing actions like voting, state
        change, or author change caused private projects to be removed if the
        user performing the action did not have permission to view them. This
        resulted in reviews being able to commit without previous private
        project workflow rules applied.

--------------------------------------------------------------------------
Major new functionality in 2022.3

    #2374791 (Bug #112421)
        Swarm no longer supports the legacy front-end URL /project/add
        endpoint used to create a project. Creating a project with automation
        must now use the new project APIs. 

    #2371844 (Bug #111617)
        Swarm no longer supports API versions older than v9.

    #2357865, #2243726 (Bug #100229)
        You can now expand the diff view to fill the entire screen,
        minimising all other components on the page. This allows better use
        of screen space when reviewing code.

    #2330721 (Bug #111932)
        The Swarm project settings page is redesigned to provide better
        usability to our users.

--------------------------------------------------------------------------
Minor new functionality in 2022.3

    #2363756, #2358237 (Bug #112860)
        Obliterating a review in a multiple-Helix Core Server instance system
        did not redirect to the correct page.

    #2362364 (Bug #112701)
        The project Settings page is now visible to everyone who can view
        that project.

    #2358878, #2358859, #2358684 (Bug #108488)
        The Try It Out option has been added to the review actions button in
        the Swarm review preview page.

    #2355484 (Bug #112531)
        Non-members of a project can now view most of the settings for a
        project in read-only mode. This helps non-members to get a clear view
        of the current members of a project and which depot paths the project
        covers.

    #2355184, #2321269, #2321269 (Bug #109526)
        The state of the file list on the review page is now remembered on a
        page refresh.

    #2354112, #2353466, #2350384 (Bug #112286)
        Improved the error message displayed when trying to vote on an out of
        date review.

    #2348137 (Bug #108387)
        There is now an option to update the pending changelist when a review
        description is updated.

    #2347059 (Bug #112177)
        The Swarm reviews transitions API endpoint is updated to return
        information on what is blocking a review.

    #2345302 (Bug #111356)
        Adding new v11 APIs for managing the updating of project details.

    #2345128 (Bug #111468)
        Added a new API to allow notifications for a review to be disabled.

    #2344919 (Bug #109610)
        The add change dialog on a review page now filters out invalid
        changelists.

    #2342752, #2340002 (Bug #109499)
        You can now change the state of your voting requirement on a review.

    #2338318 (Bug #111438)
        A new PATCH endpoint has been added to the v11 project API. This
        allows part of the project meta data to be updated, without having to
        pass the full data set.

    #2338198 (Bug #107165)
        You can now disable notifications for a review in the Swarm review
        preview page.

    #2333690 (Bug #111353)
        Adding a new project now uses an updated UI.

    #2330291 (Bug #111737)
        Added a new delete endpoint for the v11 project API. This API deletes
        a project.

    #2329085 (Bug #111930)
        Added a new followers API endpoint for the v11 project API. This API
        updates the followers of a project.

    #2323899, #2327881, #2330804 (Bug #111815)
        Added a new branch API endpoint for the v11 project API. This API
        modifies the project branches.

    #2322149 (Bug #94422)
        Commit of a review is disabled if there are no files in the review.

    #2308396, #2315709, #2316052, #2316946, #2318126, #2322783 (Bug #111346)
        Project API endpoints have been migrated to v11.

--------------------------------------------------------------------------
Bugs fixed in 2022.3

    Bug #74482
        Adding comments to a review no longer resets the keyboard navigation.

    Bug #109379
        The reviewers group list was not showing a loading indicator while
        loading the list of groups.

    Bug #108443
        When a user was @mentioned in the review description then a
        notification email was not being sent to them.

    Bug #104679
        Toggling the ignore whitespace option on the review page no longer
        causes the diff in the inline comments to vanish.

    Bug #103607
        The Swarm review preview page would sometimes miss out lines from the
        top of the diff. 

    #2373535, #2370223, #2356805 (Bug #112383)
        The Swarm workflows API was not allowing super users to view all
        workflows.

    #2369436, #2358536, #2358536 (Bug #112905)
        Editing a review description to have no content seemed to work on the
        front end, though it silently failed on the back end. The review
        description  no longer allows an empty description.

    #2366644 (Bug #109761)
        Multiple comment icons were being displayed on the same line in the
        inline diff view.

    #2359334, #2358650 (Bug #112524)
        When a user updates a review description and sets the
        "updateOriginalChangelist" parameter to false, this would still
        update the original changelist description.

    #2358506, #2357880 (Bug #112855)
        A long review description without any space resulted in the
        description to overflow the display. 

    #2357432, #2352371 (Bug #112260)
        Deleted files were displayed on all versions of a review.

    #2356724, #2356218 (Bug #112744)
        Obliterating a review now redirects the user to the list of reviews
        instead of showing a loading page.

    #2356194, #2356084 (Bug #112285)
        Swarm no longer allows the users to change the state of a review if
        the user's information is out-of-date.

    #2354174, #2354164 (Bug #112392)
        In the Swarm review preview page, it was not possible for a user to
        make their own vote required or optional unless they had permission
        to edit the reviewers.

    #2352533 (Bug #112673)
        The swarm-extctl.sh script was not picking up the correct p4port and
        p4user when running a ping command.

    #2345292 (Bug #112033)
        Swarm project names were not displayed with the correct case on the
        project page header.

    #2342707 (Bug #112136)
        Message notifications to Slack have been updated to include missing
        text.

    #2338844 (Bug #112258)
        Retained default reviewers could not be removed from a review, even
        if the project settings were later changed to no longer require that
        reviewer.

    #2338838 (Bug #105667)
        Diff blocks in a commit were sometimes obscured when navigating with
        'p' and 'n' keys.

    #2338068 (Bug #112077)
        When a project member approved and committed a review, the correct
        activity message was not being created.

    #2337089, #2337089, #2335869 (Bug #108455)
        The review complexity was being calculated twice when a review was
        created.

    #2336907 (Bug #111355)
        The behaviour when trying to vote up an out of date review has been
        fixed. The user is now warned that the page is out of date.

    #2336200 (Bug #111279)
        A task menu on a comment is no longer displayed if it is empty.

    #2335918 (Bug #110283)
        Zip archives were not being properly updated in a multi-Helix Core
        Server instance environment.

    #2335896 (Bug #111715)
        The Swarm review preview page was missing the 'on behalf of' text in
        the activity feed.

    #2334413 (Bug #73705)
        Shortcut keys for moving backwards and forwards through a diff no
        longer reset to the top or bottom of the page if the view is
        currently in the middle of the diff.

    #2332588 (Bug #102224)
        Some components in the Swarm review preview page were not being
        refreshed when a review was committed.

    #2330242 (Bug #111427)
        We now check to ensure that a client workspace has not been deleted
        before trying to use it.

--------------------------------------------------------------------------
Major new functionality in 2022.2

    #2332687 (Bug #111230)
        You can now run Swarm using a Docker container in a production
        environment.

    #2320021, #2320031, #2320043, #2320186, #2320190, #2320470, #2320689,
    #2320868, #2320905, #2322867, #2323335, #2323383 (Bug #111246)
        Swarm now includes Slack integration as a core part of the
        product. Threaded notification messages will now be sent to Slack
        when events occur on reviews. Notifications can be sent to different
        Slack channels according to the project they are associated with.

    #2305590 (Bug #111195)
        You can now configure Swarm with specific settings for each
        instance of a multi-Helix Core Server. The top level config.php file
        defines the connection details for the instances, and any default
        configuration settings. The specific config.php files can be added
        within each server directory which will override configuration set at
        the top level.

--------------------------------------------------------------------------
Minor new functionality in 2022.2

    Bug #102560
        Keyboard shortcuts to navigate diffs no longer cycle around a file
        when the beginning or end of the file is reached.

    Bug #102229
        We now display the revision of a file when it is added to a commit.

    #2322785 (Bug #111666)
        The file controls were wrapped to the next line for a narrow page.
        This is now fixed and the file controls now appear on the same line. 

    #2314514 (Bug #111167)
        Keyboard navigation has been added for moving around within a review,
        allowing users to move quickly between diffs within a file.

    #2307972 (Bug #111151)
        You can now manage your Swarm's, Helix Core Server extension with
        the swarm-extctl.sh script. Commands to enable, disable, install,
        and delete the script are available, along with options to manage
        its configuration.

--------------------------------------------------------------------------
Bugs fixed in 2022.2

    Bug #104287
        When navigating between diffs within a review, it was possible to get
        in a state where a diff wasn't visible. This is now fixed.

    #2335081 (Bug #112049)
        The test run UUID was being displayed in the data retrieved through
        the API when it should only display in the first call to execute a
        test. The UUID is now removed from all data returned by the APIs.

    #2334579 (Bug #109250)
        The comment count was not always correctly taking the number of
        archived comments into account.

    #2327375, #2327036 (Bug #111940)
        The handler for the shelve delete event in the extension was not
        correctly expanding some characters in filenames. This is now fixed.

    #2327046 (Bug #111788)
        When a review was rejected the vote down state was not updated on the
        page. This is now fixed.

    #2327000 (Bug #111831)
        The v11 review API to allow someone to join or leave a review,
        allowed anyone to be added or removed from the review. This is now
        limited to affect the current user only.

    #2314393 (Bug #109475)
        Sometimes Swarm displayed a version 0 in the comment header
        description at the top of the review page.

    #2310930 (Bug #107287)
        The wording of in-page notifications when voting on a review has been
        improved.

    #2306610 (Bug #111254)
        In the review page, a comment that consisted of a long line of text
        with no spaces would break the page layout. This is now fixed.

    #2306541 (Bug #111189)
        In the review page, if you added a comment and switched tabs without
        saving your changes, any changes to the comment were lost. This is
        now fixed.

    #2306407 (Bug #111255)
        In the review page, renaming an image file was resulting in a failure
        to load the image. This is now fixed.

    #2306407 (Bug #111180)
        In the review page, the diff footer would sometimes erroneously
        report that there were more lines to be displayed. This is now fixed.

    #2306368 (Bug #111239)
        When a comment reply was archived, the 'mark as read' button was
        still available. This is now fixed. 

    #2306368 (Bug #111207)
        Children of archived comments were not being displayed. This is now
        fixed.

    #2306317 (Bug #111145)
        Pressing alt+n or alt+p too quickly would sometimes cause unexpected
        behaviour when navigating through the file list. This is now fixed.

    #2306259 (Bug #111153)
        The task menu on the review page would sometimes hide behind other
        elements on the page. This is now fixed.

--------------------------------------------------------------------------
Major new functionality in 2022.1 Patch 4

    Bug #109012
        The "p4 groups" call checks if a group exists on the Helix Core
        Server. This was causing a high lock contention. The "p4 groups" call
        is now optimized to reduce server load.

--------------------------------------------------------------------------
Minor new functionality in 2022.1 Patch 4

    #2311397 (Bug #110908)
        When there are a large number of groups, the index size of the
        activity feed can become excessive. A new option enables you to
        reduce the index size by no longer tracking certain activities in the
        activity feed.

--------------------------------------------------------------------------
Major new functionality in 2022.1 Patch 3

    #2301077 (Bug #108485)
        The links to JIRA issues are now correctly linkifyed from the review
        page.

    #2295479 (Bug #109396)
        In the review page, you can now view side-by-side diffs for PDF and
        Office files.

--------------------------------------------------------------------------
Minor new functionality in 2022.1 Patch 3

    Bug #106657
        The default setting of the emulate_ip_protections configurable in the
        SWARM_ROOT/data/config.php file is now set to false. With modern
        Helix Core Servers, this is no longer required as it can cause
        inferior performance in environments with complicated protection
        tables. However, if required you can set the emulate_ip_protections
        configuration item to true.

    #2302988 (Bug #111046)
        The WebLinks section in JIRA is updated when a submitted change
        description is edited.

    #2299242, #2297695 (Bug #110664)
        You can now mark a comment as read with a single click.

    #2298002 (Bug #110959)
        In the review page, when you add a job to the review, the list of
        Perforce jobs is filtered by the project that the review belongs to.

    #2292020, #2291343, #2291343, #2291326 (Bug #108675)
        In the review page, you can now re-calculate the project membership
        from the Refresh Projects option in the Review actions button.

    #2291997, #2293332, #2296169, #2296945 (Bug #100292)
        You can now send all comment notifications immediately from the
        review page.

--------------------------------------------------------------------------
Bugs fixed in 2022.1 Patch 3

    Bug #111162
        Jira links are now visible on the preview review page.

    Bug #110716
        Links to users with double quotes in their user name are now created
        correctly.

    #2304998, #2304998 (Bug #106422)
        The log data for a Helix Core Server instance in a Multi-P4D system
        was some times written to the wrong log file. This has now been
        fixed.

    #2302416 (Bug #111146)
        Attachment thumbnails are now displayed correctly for all Helix Core
        Server instances in a Multi-P4D system. 

    #2301873 (Bug #110624)
        The prevent_login configurable in the SWARM_ROOT/data/config.php file
        now works correctly for mixed case user names.

    #2301737, #2297907 (Bug #109027)
        When the display_fullname configurable is set to true in the
        SWARM_ROOT/data/config.php file, the collapsed icons no longer
        display the user names incorrectly.

    #2300265, #2300249 (Bug #111101)
        The Time Display information about how long ago events happened is
        now correctly translated in non-English locales.

    #2299020 (Bug #110129)
        When using the Safari web browser, the list of files remains
        collapsed when navigating between files in the review page.

    #2296208 (Bug #110924)
        Private projects that were visible to non-project members in the
        review summary has been fixed. 

--------------------------------------------------------------------------
Major new functionality in 2022.1 Patch 2

    #2292671, #2292656, #2292568, #2292074 (Bug #110646)
        The diff colours used in the review page have been changed to make
        the text more readable. Previously, the combination of diff colours
        and syntax highlighting was causing readability problems.

    #2285869, #2284645, #2279851 (Bug #109253)
        You can now open a file in a new window from the new review page.

    #2284127 (Bug #108390)
        You can now view image files on the new review page. A slider on the
        image enables you to move between the old and new version of the
        image.

    #2281887 (Bug #100302)
        You can now mark all comments as unread on the new review page.

    #2281887 (Bug #100300)
        You can now mark all comments as read on the new review page.

--------------------------------------------------------------------------
Minor new functionality in 2022.1 Patch 2

    Bug #102077
        Added an API to mark a file in a review as read.

    #2288369 (Bug #110740)
        TCL syntax highlighting is now supported.

    #2287571, #2285193 (Bug #108429)
        Configuration options for which users are included in @mention drop
        downs on the new review page are now being honored.

    #2287449 (Bug #109679)
        You can now resize the file list width on the review page by dragging
        the panel divider.

    #2286957, #2286664 (Bug #110622)
        Support has been added for displaying vsdx, dotx and odt files.

    #2281978 (Bug #110532)
        There is now an API endpoint to mark all comments as read or unread
        on a review.

--------------------------------------------------------------------------
Bugs fixed in 2022.1 Patch 2

    #2290191 (Bug #110575)
        File level comments were being attached to the wrong version of the
        review.

    #2289591 (Bug #109891)
        When updating the task state of a comment, an email is sent to say
        that a comment has been added, rather than that the task state has
        been changed.

    #2288366, #2288366 (Bug #110761)
        The new task list was causing an error if trying to filter on an
        empty list.

    #2287769 (Bug #110751)
        The Jenkins configuration was trying to guess if a URL was remote or
        relative, and was too specific in its checking. This resulted in some
        remote URLs being interpreted as relative. The check now assumes
        anything that has a protocol prefix is a remote URL.

    #2287373 (Bug #110684)
        Long user and group names were breaking the Information panel on the
        right side of the review page by forcing the addition of scroll bars.
        Long names are now truncated in the display.

    #2287042 (Bug #110729)
        The Swarm server-side extension was not always honoring the value of
        the ignoreErrors flag, and was sometimes blocking server events if
        Swarm was unavailable when it shouldn't.

    #2287024 (Bug #110286)
        Activity links were not going to the right instance in a multi-p4d
        environment.

    #2286663, #2286663 (Bug #110644)
        Backslash characters (\) in usernames were being written as
        forward-slash characters (/) when generating the URL from the
        required reviewers list on the review page.

    #2286336, #2285916, #2285916 (Bug #110687)
        The use of double quotes in user names was causing problems with the
        rendering of review pages.

    #2285356, #2285332, #2283544, #2283407 (Bug #110576)
        The complexity calculation for reviews was incorrectly calculating
        the value for the previous version of the review for reviews with
        multiple versions.

    #2285191, #2281478 (Bug #110557)
        If a moderator approved a review, and the review's state was later
        changed back to 'Needs Review', then the moderator wouldn't be able
        to approve the review again.

    #2284101 (Bug #109859)
        The icons on test runs have been updated to make their function more
        obvious.

    #2283329, #2283329, #2282860 (Bug #110533)
        The mark file as read option wasn't being persisted after a page was
        reloaded. Marking files as read is now remembered.

    #2281456 (Bug #109262)
        The comment count on a review wasn't including replies to comments on
        the description.

    #2279530 (Bug #109255)
        You could edit archived comments. This does not make sense and has
        been fixed. 

--------------------------------------------------------------------------
Major new functionality in 2022.1 Patch 1

    #2275474 (Bug #109717)
        On the review page, attachments are displayed as thumbnails for
        supported filetypes. This makes it easier to see what the attachments
        are without opening them. 

    #2273132, #2271667 (Bug #109718)
        On the review page, it is now possible to delete an attachment when
        the comment is being edited.

    #2272804, #2269811 (Bug #109740)
        On the review page, you can now add attachments to comments. Files
        can be dragged onto a comment while it is open for edit. 

    #2268773, #2266663 (Bug #109714)
        On the review page, comment attachments are displayed as icons. This
        enables multiple attachments to be displayed concisely.

    #2263189 (Bug #108538)
        Swarm validates the current user's ticket with the Helix Server
        whenever a new request comes from the client. This results in a large
        number of "login -s" calls. Because a web page can make multiple API
        requests, this can result in many login calls for a single page. This
        ticket information is now cached by default by Swarm for a period of
        10 seconds. This cuts down on the number of "login -s" calls made.
        Swarm has a new configurable that controls the cache time: session
        => user_login_status_cache 

--------------------------------------------------------------------------
Minor new functionality in 2022.1 Patch 1

    Bug #109184
        On the review page, you can now remove jobs from a review.

    Bug #104655
        On the review page, you can now add a comment that just has an
        attachment. You do not need to have any text in your comment. 

    #2279079, #2276796, #2276796 (Bug #108998)
        On the review page, a link to a comment from an activity entry or an
        email now takes you directly to the comment. 

    #2278142 (Bug #109558)
        On the review page, you can now access some of the right-hand menu
        functionality when the menu is collapsed.

    #2276759, #2276759 (Bug #110185)
        On Swarm installation, the configuration script now automatically
        creates a .swarm depot for storing attachments if the user requests
        it. Protections are also automatically set on the depot to secure it.

    #2275618, #2276202, #2276712, #2276820, #2277124 (Bug #110003)
        On the review page, comment attachment thumbnails are created for
        non-image files. For example, PDF files.

    #2272418, #2272419, #2272868, #2273037, #2274695 (Bug #109723)
        On the review page, Swarm now creates thumbnails for images attached
        to review comments.

    #2271473, #2270878, #2270677 (Bug #109720)
        On the review page, we have added an option to download comment
        attachments.

    #2270544, #2273465, #2274499 (Bug #109713)
        A new GET endpoint has been added to the API to fetch a comment
        attachment thumbnail.

    #2266010, #2266013, #2266022, #2266393, #2266472, #2267252, #2268246 (Bug
    #109721)
        On the review page, when an attachment is added to a comment, a
        low-quality 'blur' of the attachment is created which can be
        displayed quickly on the review page.

    #2263907, #2264346, #2264470, #2265335 (Bug #109711)
        A new POST endpoint has been added to the API to upload comment
        attachment content. 

    #2262482, #2263023, #2263839 (Bug #109712)
        A new GET endpoint has been added to the API to fetch the content of
        a comment attachment.

    #2260470, #2259640, #2259099, #2259034 (Bug #109724)
        A new GET endpoint has been added to the API to fetch information on
        comment attachments. 

--------------------------------------------------------------------------
Bugs fixed in 2022.1 Patch 1

    Bug #95581
        On the review page, comment attachments can now be added to inline
        and file-level comments.

    Bug #110528
        Fixed problem where the user's avatar icon would disappear if the
        user had been deleted.

    Bug #104635
        If a comment is edited, attachments are no longer being erroneously
        removed.

    #2280752 (Bug #110512)
        The libreoffice executable was not being correctly found on RHEL 8,
        so display of office documents was not functioning correctly.

    #2280707, #2280707, #2278688 (Bug #110367)
        If there were multiple replies to a comment, the later ones could not
        be marked as a task.

    #2279551 (Bug #109944)
        Quick URLs for a specific review version were not working correctly.

    #2279509 (Bug #110497)
        The PHP version check would always report an error since it was
        looking for the wrong version string.

    #2279079, #2276796 (Bug #110296)
        Linking to comments was not working correctly on the review page.
        Improvements have been made to how we create and follow links to
        comments on a review.

    #2279056 (Bug #110051)
        If a review was updated by another user whilst the review page was
        open, switching versions could end up showing files for the wrong
        version of the review.

    #2276713, #2276541 (Bug #109864)
        On the review page, test results were not displayed correctly for
        iterating tests.

    #2274680 (Bug #110279)
        The php-fpm service on RHEL/CentOS was being referenced by the wrong
        name so it wasn't being restarted correctly on install.

    #2273634 (Bug #110266)
        The shelvedel trigger was not correctly ignoring deletes performed by
        Swarm itself in a multi-P4D environment.

    #2272228, #2269776 (Bug #110033)
        On the review page, filenames containing % characters could be
        displayed incorrectly.

    #2272176 (Bug #110034)
        On the review page, the tooltip for the filename is now
        left-justified against the file list on the review.

    #2271699, #2269634 (Bug #109628)
        On the review page, the state changes in the Change state menu have
        been updated to use the correct tense. 

    #2270004 (Bug #110060)
        The count of changed files was incorrect on a review when an
        integration was performed.

    #2268709, #2268709 (Bug #109691)
        On the review page, error messages were not being cleared when the
        edit reviewers dialog was closed and reopened.

    #2268208 (Bug #110079)
        Links for review tasks on multi-P4D environment have been fixed. 

    #2265602 (Bug #109964)
        Previously, any changes to the Redis configuration would be
        overwritten by the packages when swarm was upgraded. The redis
        configuration file is now marked properly as a configuration file.

    #2264300 (Bug #109836)
        On the review page, the scrollbar was obscuring the last file in the
        file list.

--------------------------------------------------------------------------
Major new functionality in 2022.1

    Bug #94544
        Added support for Amazon Linux 2.

    #2240369 (Bug #109271)
        There is a new switch on the review page that allows a user to toggle
        between the original view of the page and a preview of the new page.
        The preview does not yet have feature parity with the original page
        but has some new features not previously available.

    #2183047 (Bug #101689)
        The post-installation configuration script now has the option to
        install extensions when configuring Swarm.

--------------------------------------------------------------------------
Minor new functionality in 2022.1

    Bug #97839, #97838
        The display of the current review status has been made clearer by the
        use of color, icons, and their placement on the review page.

    Bug #97838
        We have added an icon and text above the description on the review
        page to label the review as pre-commit or post-commit.

    Bug #94590
        We are making the avatar less important in the display of activity
        and reviews, ensuring that the user's name is also clearly visible.

    Bug #94483
        Button toggle states on the review pages are now clearer.

    Bug #90547
        Code snippets in comments are now syntax highlighted.

    Bug #87906
        Comments now move as the code lines above them are changed.

    Bug #86589
        All comments on a file are now also displayed beneath the file. This
        means they can all be viewed in one place, even if the line they are
        attached to no longer exists.

    Bug #78183
        Swarm now expands lines of code around comments to avoid missing
        comments.

    Bug #72207
        Comments not close to a diff change are now shown properly.

    Bug #107328
        Added an API to create a reply to a comment.

    Bug #105689
        Long diff lines are now wrapped, so horizontal scrolling is no longer
        required.

    Bug #105568
        The default avatar in the new UI has changed from an image to the
        first letter of the user's name.

    Bug #102397
        The current review state is now shown separately from the new "Change
        state" button. The new "Change state" button is used to set the state
        of the review. This makes changing the review state more intuitive. 

    #2239747, #2240379, #2240865 (Bug #100320)
        The list of review tasks is now displayed in the new review
        information panel on the right side of the review page.

    #2239661, #2240380, #2241001, #2241006 (Bug #109229)
        There is a new dialog for displaying and editing the reviewers on a
        review. This makes it easier to view and edit the users, with a
        clearer indication of their required status.

    #2238199 (Bug #109125)
        Improvements have been made to how we track line changes when
        displaying comments. A comment will now be moved to account for
        deletions or insertions in the lines above it within a review.

    #2235950, #2236153, #2236312, #2236533, #2237950, #2238244, #2238250,
    #2238327, #2238799, #2240276 (Bug #107316)
        There is a new dialog for adding jobs to a review.

    #2229433 (Bug #108911)
        The version of Redis shipped as part of the Swarm package has been
        updated to 6.2.

    #2222717 (Bug #108587, #105260, #90061)
        An inline comment in a diff that isn't near any changed lines of code
        is now displayed properly on the review page.

    #2214676 (Bug #77665)
        The configuration script no longer forces you to set an email host
        during installation. If no host is set, Swarm will use local email
        configuration (such as Sendmail) instead of routing via an external
        server.

    #2204114 (Bug #108197)
        Hostname configuration in the trigger configuration should not have
        trailing slashes. We now automatically remove them if they are
        present.

    #2201566 (Bug #92474)
        Added support for syntax highlighting of VHDL files in the review
        page.

    #2196930 (Bug #107034)
        Added an API to mark comments as read or unread.

    #2196904, #2198663, #2201612, #2201768 (Bug #105417)
        Added an API to mark files as read and unread in a review.

    #2196813, #2198234, #2201528 (Bug #105418)
        Added a new API to send all outstanding notifications for a review.

    #2196186, #2201859, #2202373 (Bug #108071)
        Have added an API endpoint to get the read/unread status of files in
        a review.

    #2195895, #2196621, #2196874 (Bug #107036)
        Added an API to archive and unarchive comments.

    #2193408, #2193477, #2194314, #2195662 (Bug #106750)
        The review description now supports GitHub flavored Markdown format.

    #2188739 (Bug #100313)
        Reviewers and their votes are now displayed in the new review
        information panel on the right side of the review page. This makes
        the voting status for individuals and groups much clearer. 

    #2185029 (Bug #99425)
        Swarm now supports syntax highlighting for a variety of languages on
        the new review page.

    #2182309, #2182847, #2182943, #2184340, #2186275 (Bug #107864)
        Added an API endpoint to get information on a group.

    #2163585, #2164408, #2164825, #2164944, #2166112, #2168198, #2170047 (Bug
    #107445)
        Added an API to fetch list of files associated with a change. 

    #2142050, #2143512, #2146405, #2150823, #2153354 (Bug #105439)
        A new v11 API for getting the list of activity events has been added.

    #2137008 (Bug #106311)
        A new GET API for comments has been added, making it consistent with
        the rest of our new API framework.

    #2132879, #2133446, #2137152, #2137153 (Bug #101919)
        A new API endpoint has been added to allow comments to be edited.

    #2131132, #2133475, #2135726, #2135842, #2137793, #2138106, #2138700,
    #2139117, #2139293 (Bug #101918)
        A new POST API for comments has been added which allows comments to
        be created.

    #2124696, #2124792, #2125097, #2125473, #2126335, #2127276, #2127304,
    #2127308, #2127389, #2127398, #2127464, #2127492, #2127542, #2127547,
    #2128110 (Bug #106500)
        v10 APIs have been uplifted to support v11.

--------------------------------------------------------------------------
Bugs fixed in 2022.1

    Bug #97705
        The visibility of toggle button states has been improved.

    Bug #96892
        If a review has an error on submit, the error message no longer
        obscures the actual state of the review.

    Bug #92783
        Comments added when changing the status of a review are now
        automatically added to the current page.

    Bug #92768
        If an individual is only a member of a review via a group, they are
        no longer shown under the list of individual members.

    Bug #91817
        Markdown changes have improved how single backtick marks are handled.

    Bug #90061
        Comments on a review that are not close to a diff section are now
        correctly displayed.

    Bug #69443
        There were problems with the horizontal scroll bar not being visible
        in the diff view. This has been resolved by wrapping long lines
        rather than requiring the use of a scroll bar.

    Bug #62810, #90061
        The position of Inline comments on diffs are now moved to track
        changes in lines above the comment.

    Bug #108400
        Non-ASCII characters are less likely to break the review display on
        non-Unicode servers.

    Bug #108353
        Display of hypertext links in markdown has been improved.

    Bug #106262
        Spaces in URLs in markdown text were breaking links.

    Bug #105788
        The first lines of a diff are no longer scrolled out of view when the
        diff is opened.

    Bug #105262
        Fixed the list of possible review transitions shown after a review
        has failed to submit. Previously, invalid transitions were being
        shown when a review was in an error state.

    Bug #105260
        Comments added to a review which were not near to changed lines were
        not being displayed by default. This has now been fixed.

    Bug #105207
        Problems with horizontal scrolling in the diff view resolved by
        wrapping long lines instead.

    Bug #104560
        The right end of lines in a review were being hidden off the page due
        to the use of multiple scrollbars. This has been resolved.

    Bug #104306
        Block quote syntax in comments was not always working properly. The
        markdown engine has been changed and this is no longer a problem.

    Bug #104195
        URL content in review comments were sometimes displaying badly if the
        content matched an emoji sequence. This has been resolved.

    Bug #102965
        Markdown in comments for links with multiple words in the link text
        is now displayed correctly.

    Bug #102727
        Unusual characters in comments were causing problems in the activity
        feed. Handling of these characters has been improved.

    Bug #102629
        Display of HTML characters in comments has been improved.

    Bug #100971
        The review description no longer incorrectly encodes ";" in URLs.

    Bug #100192
        Fixed the display of special characters in markdown for inline code
        blocks.

    #2258078, #2254437 (Bug #106946)
        It was not possible to remove a deleted user from the list of
        reviewers if the deleted user had already voted for the review.

    #2256447, #2256447 (Bug #109768)
        The Swarm configuration script was overwriting the Apache site
        configuration file whenever it was run. It now takes a copy of any
        previous site configuration files in case custom changes had been
        made.

    #2252660 (Bug #109657)
        Sometimes the project cache would not be fully populated.

    #2231707, #2228884 (Bug #108995)
        Fixed bug where upvotes from users with non-lowercase usernames
        weren't being counted towards votes on a review on a case insensitive
        server.

    #2195825 (Bug #103610)
        Support for tables in markdown has been improved.

    #2189436 (Bug #107915)
        Fixed bug when getting a diff for a stream spec that predated recent
        server changes.

    #2171559 (Bug #107625)
        Fixed issue with the zip utility not being found on some RHEL
        systems.

    #2157869, #2157869 (Bug #106993)
        We have removed old unsupported versions of p4php from the
        distributions.

    #1510874 (Bug #89680)
        Links that contained parenthesis were not displaying correctly in the
        markdown used in comments. The markdown engine has been updated, and
        this has been fixed.

--------------------------------------------------------------------------
Bugs fixed in 2021.2 Patch 5

    #2211823 (Bug #108650)
        When logging users in using SSO, email addresses were being compared
        using a case sensitive match. They should be case insensitive. This
        has now been fixed.

--------------------------------------------------------------------------
Bugs fixed in 2021.2 Patch 4

    #2192270 (Bug #106587)
        When a test is re-run, or an OnDemand test is run, the {projectNames}
        and {branchName} fields are not populated if they are used in the
        request. With this fix, OnDemand tests and tests that are re-run will
        have the {projectNames} and {branchName} fields populated if they are
        used in the request.

--------------------------------------------------------------------------
Bugs fixed in 2021.2 Patch 3

    #2181115 (Bug #107777)
        There was a small timing hole immediately after a review was created
        where it was possible to approve the review before projects and
        workflows were attached to it. This allowed the workflow validation
        rules to be skipped. New reviews now cannot be approved until they
        have finished being processed.

--------------------------------------------------------------------------
Bugs fixed in 2021.2 Patch 2

    Bug #107564
        A combination of Apache alias and virtual-host configuration together
        with base-url configuration in Swarm could prevent some options on
        the navigation bar from being displayed.

    #2167029 (Bug #107187)
        If a review was updated whilst tests for the review were still being
        started, then it was possible for test data to go missing from the
        review. This was unlikely to happen unless the tests were taking a
        long time to start.

    #2166123, #2165784 (Bug #107371)
        If a client browser was using a locale for which there weren't
        localisation files, then the request for the files would be forwarded
        to P4D to check for any matching groups, users, jobs etc. This was
        causing a performance hit, so now any requests for locale files are
        forced to be served only from the file system.

--------------------------------------------------------------------------
Bugs fixed in 2021.2 Patch 1

    Bug #107049
        Left click on the test results on the review page were not being
        processed correctly, you had to middle/right click (open in new page)
        to open a link to the test results.

    Bug #105221
        Some non-ASCII/non-UTF8 characters from a non-unicode P4D server
        could break the review page. An extra pass is now performed to
        convert characters to UTF-8.

    #2151183, #2150323 (Bug #107103)
        If there are a large number of groups and subgroups, performance 
        could be poor because Swarm was trying to perform the group 
        membership calculations itself. This was an attempt to reduce the
        number of calls to P4D. However, P4D does this significantly
        quicker, so these operations have been moved back to P4D.


--------------------------------------------------------------------------
Major new functionality in 2021.2

    #2120931 (Bug #97170)
        A new #wip keyword has been added to Swarm which, when added to a
        shelved changelist description, prevents any review associated with
        that changelist from being updated. This allows changes to be shelved
        without creating a new review version each time. Remove the #wip
        keyword and update the shelf to update the review. The keyword can be
        changed or disabled.

    #2120605 (Bug #105234)
        There is now an option on a test definition that allows a single test
        to be run multiple times against a review if that review spans
        multiple projects or branches. The test iterates over the list of
        applicable projects and branches, running a new instance of the test
        for each one.

    #2114081, #2115533 (Bug #105236)
        When a test is added to a workflow, it is now possible to define that
        test to block approvals. This means that the test must pass
        successfully before any reviews in that workflow can be approved.

    #2107739, #2108116, #2108177, #2109121, #2110505, #2110863, #2111436,
    #2112361, #2114040 (Bug #105235, #70247, #66541)
        You can now configure a test to be "On Demand". These tests are not
        run automatically but are added to the review and a user can start
        them manually. They are for optional or heavyweight tests that don't
        need to be run every time a review is updated. This also allows any
        test to be re-run manually without having to update the review.

--------------------------------------------------------------------------
Minor new functionality in 2021.2

    #2120033, #2120033 (Bug #106288)
        In the case of a misconfiguration in Swarm, the error page has been
        updated with a list of the more common problems that can cause Swarm
        to fail to start.

    #2115015, #2115385 (Bug #105826)
        Within a workflow, it is now possible to define a test to block a
        review from being approved until the test has passed successfully.

--------------------------------------------------------------------------
Bugs fixed in 2021.2

    #2133363 (Bug #106608)
        Fixed problems caused by a workflows when a submit is performed
        against an edge server. The workflow pre-submit triggers were unable
        to locate content in a changelist if that changelist was on an edge
        server, even if changelists had been promoted.

    #2130461 (Bug #106658)
        In IE 11, double cancel buttons would sometimes be displayed in drop
        down boxes on the dashboard and review pages.

    #2129520, #2123864 (Bug #106303, #106596, #106583, #106561)
        Fixed problem with legacy javascript content not being properly
        removed when browser forward button was used.

    #2128388 (Bug #106643)
        On some browsers the logo on the main navigation bar would appear as
        corrupt. This has been fixed.

    #2127425, #2127418, #2127404 (Bug #106624)
        Buttons to add or cancel a test definition in a Swarm workflow were
        missing from the workflow page on IE11.

    #2125491, #2121688 (Bug #106293)
        There were errors in the way that email notifications were sent out
        after tests had completed, causing too many emails to be sent. Now
        emails should only be sent on test failure, or on first success after
        failure.

    #2114315 (Bug #105478)
        The new review GET API did not support the ability to define which
        fields were returned in the response. This has now been updated.

    #2113640 (Bug #106069)
        Notifications were blocking the main menu, preventing it from being
        clicked on. The notifications have now been reduced in size.

--------------------------------------------------------------------------
Major new functionality in 2021.1

    #2084993, #2086477, #2090297 (Bug #105055)
        A new option has been added to the SSO support to allow a user to
        choose whether they use SSO or not. This allows a mix of SSO and
        non-SSO users in the system. Previously, if SSO was enabled then all
        users would be immediately redirected to the IdP.

    #2076187 (Bug #105324)
        The Swarm OVA has been upgraded to Ubuntu 20.04, and the mechanism
        used to build the OVA has been changed to make it easier to upgrade
        it in future.

    #2075386 (Bug #105230)
        When a changelist spans multiple streams across imports, and the
        client is on an edge server, Swarm could miss files that were in the
        review.  Swarm now works out the full list of files from all the
        clients.

    #2073559 (Bug #105289)
        The dashboard page has been updated to the new UI style that is being
        used by Swarm. This includes the addition of review Complexity data
        and vote/comment data to the dashboard.

    #2067012, #2067012, #2067011 (Bug #104589)
        The activity feed has been given its own top level position in the
        main navigation bar. It was previously a sub-tab on the dashboard.

    #2062046, #2062755, #2076284, #2079138, #2079738 (Bug #99976)
        The search component has been updated to take advantage of the new
        API calls provided by P4Search, and to fit in better with the new
        page style.

--------------------------------------------------------------------------
Minor new functionality in 2021.1

    Bug #90758
        The project filter on the dashboard should provide a text search of
        the filters, just like the filter on the reviews list page.

    Bug #104088
        P4PHP has been updated to support threading, which means parallel
        sync behaviour within Swarm should be improved.

    #2108393, #2108393 (Bug #106036)
        We have changed the HTTP headers so that if IE is being run in
        compatibility mode then Swarm will be correctly identified as a site
        that should be interpreted in Edge mode.

    #2104842 (Bug #105965)
        The unzip library is now included in the OVA so that the Download ZIP
        functionality will be enabled by default on the OVA installation of
        Swarm.

    #2095055, #2094995 (Bug #105649)
        The text search bar on the reviews list page has been changed to be
        dependent on the tab ('open' or 'closed') selection. This allows each
        tab to have its own search criteria.

    #2093118, #2093121 (Bug #104599)
        It is now possible to select and filter on multiple projects at a
        time on the reviews list and dashboard pages.

    #2087613 (Bug #105632)
        Compression of Javascript content has been enabled in the Apache
        configuration provided with Swarm. This can greatly reduce the time
        to load Swarm pages across a network

    #2083199, #2076857 (Bug #104440)
        Jira integration now supports a second URL which is only used for API
        calls. This allows links which users use to have one URL, and for API
        calls that update Jira tickets to use a second URL. If the API URL is
        not configured, then the normal user URL is used instead.

    #2082964, #2087280, #2088063 (Bug #105374)
        The Swarm OVA has been updated with some minor improvements to aid in
        usability and make it easier to investigate connectivity problems.

    #2081764, #2081764 (Bug #105323)
        Sometimes workers would fail on start, and the job would be put back
        into the queue to be retried. The logging error when this happens has
        been changed to a WARN from an ERROR.

    #2078673 (Bug #104576)
        The swarm package installations now provide a configuration in
        /etc/logrotate.d which by default will rotate the Swarm logs daily
        and keep them for 14 days. This configuration can be changed if
        desired.

    #2078497, #2078578, #2078656, #2078839, #2079480, #2080939, #2080940,
    #2080979 (Bug #105348)
        The list of filters for the dashboard has been updated to bring them
        in line with what is now available on the reviews list page. This
        includes the addition of a text search filter.

    #2076931, #2076931 (Bug #105349)
        A new "My Dashboard" menu option has been added to the navigation bar
        to make the user's dashboard easier to find.

    #2074431 (Bug #105232)
        Have added descriptive titles to all the web pages in Swarm which
        were missing a title.

    #2073424, #2077499 (Bug #104588)
        Created a new v10 version of the dashboard API to support the new
        dashboard page.

    #2070182, #2069402, #2068796 (Bug #104641)
        The project filter on the reviews list page will now search on both
        project names and project ids. Previously it was only searching on
        the name of the project. This may make a difference if the project
        has been renamed since creation.

    #2067982 (Bug #94656)
        There is now a facility to recalculate which projects a review
        belongs to. This has always been done whenever a review is updated,
        but if a new project is created after the review, updating all old
        reviews could be problematic. There is an option on the review page
        to recalculate the project membership for the current review, and
        also an API endpoint so that it can be scripted for many reviews.

    #2065487 (Bug #103173)
        It is now possible to receive email notifications for spec changes by
        use of the 'honor_p4_reviews' option.

    #2065300 (Bug #104913)
        The version of Redis packaged with Swarm has been upgraded to 6.0.10.

    #2064071, #2071638 (Bug #104377)
        Added a new v10 API endpoint for retrieving a list of users.

    #2063657 (Bug #104360)
        Documented how to strip the @mention from a review description using
        the existing configuration options.

    #2062767 (Bug #104986)
        The Swarm configuration script which is run on first install was
        saving the Swarm password in clear text if the P4D security setting
        was lower than 3.

    #2062303, #2062514 (Bug #104961)
        Cleaned up Javascript console errors which were being caused by the
        interaction between the React code and legacy javascript. This would
        sometimes show up as oddness in how pages were displayed.

--------------------------------------------------------------------------
Bugs fixed in 2021.1

    Bug #105095
        If the reviews list page was opened after viewing the dashboard page,
        an extra API request was being made to the server. This has been
        removed.

    #2112510 (Bug #106088)
        Fixed bug where strict workflow rules would not always catch changes
        when multiple files were being submitted.

    #2108395 (Bug #105985)
        Fixed type issues in the workflow API where the id was sometimes an
        int and sometimes a string, leading to incorrect equality
        comparisons.

    #2107693 (Bug #106011)
        Fixing the inconsistently cropping in email subject line.

    #2106862 (Bug #106005)
        Fix bug where the Log in text on the login dialog gets split between
        two lines on IE once text was entered into the fields.

    #2105024, #2102441 (Bug #105865)
        When using a Windows P4D server if the case of a userid in a group
        differs from the case of the actual user id, then emails were not
        being sent to that user. This has been fixed.

    #2100958 (Bug #105288)
        Newline characters at the end of a changelist description could
        sometimes cause an extra event record to be created within Swarm.
        Newlines are now trimmed from the end to prevent this.

    #2098230 (Bug #105825)
        When trying to repeat a search in the global search bar, the search
        would not be run a second time. This has been fixed.

    #2090949 (Bug #105641)
        Usernames with a slash ("/") in them were causing problems due to the
        URL not correctly handling them. Support for slash in usernames has
        now been improved, and the Apache configuration has been updated to
        include the "AllowEncodedSlashes NoDecode" option. The Apache site
        config file will not be automatically upgraded when Swarm is updated,
        so if you need this option you will need to copy it manually from the
        new perforce-swarm-site.conf file in /opt/perforce/etc

    #2088853 (Bug #105463)
        Reviews could be displayed in the wrong date order on the reviews
        list, depending on the order in which various links and buttons were
        clicked. This has been fixed.

    #2087743, #2084660 (Bug #105543)
        The logout_url was no longer working with the new login dialog. This
        has been fixed.

    #2086861 (Bug #105618)
        When Swarm initially loads the user can see either a blank page or a
        page header/menu bar with blank content while the javascript bundles
        load and initialise. There should be a visual indication that the
        application is loading.

    #2084943 (Bug #105506)
        If a user had a backslash "\" in their username, then errors would be
        raised when clicking on their profile due to the way that the URL was
        being escaped. We now allow backslashes and slashes to be escaped in
        the URLs.

    #2083726 (Bug #105479)
        The UserAPI was validating each user multiple times and also failed
        to cope with a user who has been deleted. These issues have been
        resolved.

    #2083561 (Bug #105368)
        Not all page headers were using internationalisation text.

    #2083323 (Bug #103653)
        Searching for UTF-8 content against a Helix Search server was not
        returning any results. This has been fixed.

    #2082084, #2077756 (Bug #104621)
        Under some circumstances a test result would simply show a failed
        result without actually re-running a test. This has been fixed.

    #2080908 (Bug #105475)
        Previously the /review URL would just show a bank page, whereas other
        similar URLs (/project, /group) would give a 404. The /review page
        has been updated to be consistent with other pages.

    #2076067 (Bug #105386)
        If a review mentions users who have since been deleted, Swarm would
        give a 400 error. We now cope with this situation by allowing users
        that don't exist in the user list.

    #2074365 (Bug #105350)
        We have re-enabled the rendering of 3D models by default in Swarm.

    #2073457 (Bug #105098)
        In small browser windows the review description was sometimes being
        cut off on the reviews list page without providing a "..." expander
        option. This has  now been fixed.

    #2069928 (Bug #105073)
        Fix to the padding on the reviews list page when it is opened after
        viewing a different page.

    #2067866 (Bug #105181)
        Fixed bug where the "I have commented on" filter on the reviews list
        page would not always show the full list of reviews due to a mismatch
        in type comparisons.

    #2062072 (Bug #103683)
        The updated time of the review was being shown twice on the reviews
        list - once in the column if the 'Updated' sorting was selected, and
        once in the review description. If reviews are sorted by 'Updated'
        time, we now hide the time in the description.

    #2061211 (Bug #103512)
        Notifications were still being sent when silenceNotifications was
        enabled when adding a comment via the API. This has been fixed, and
        the silenceNotifications flag is now correctly honoured.

    #2061146 (Bug #104455)
        Updated the v10 reviews API endpoint to allow a list of fields to be
        specified, to limit the amount of data returned.

    #2060257 (Bug #104972)
        Removed unwanted selection borders around some elements of the login
        dialog.

--------------------------------------------------------------------------
Minor new functionality in 2020.2 Patch 1

    #2061611 (Bug #104737)
        Improvements to how the reviews list is displayed when sorting by
        activity date when there are a very large number of reviews modified
        on a single day.

    #2059484 (Bug #104922)
        Added option to always run project tests even if nothing has changed.

    #2058472 (Bug #104413)
        Once the reviews list has run out of results to show, it now displays
        a 'nothing more to display' message at the bottom of the list.

    #2057747, #2057747 (Bug #99329)
        If p4search was enabled, then file search would still perform an
        inefficient search against P4D even though this was no longer
        required.

    #2056823, #2056823, #2053938 (Bug #104640)
        The role filter on the reviews list page was only searching on the
        user's full name. It now searches on both the full name and user id.

    #2055656 (Bug #104887)
        When there were a large number of users, the processing of the Swarm
        queue could be slow. Have improved the performance of the user
        processing in these situations.

    #2055607 (Bug #104858)
        We have changed the text of the "I have not voted on" reviews list
        filter to make it clear that it only applies to reviews that you are
        participating in.

--------------------------------------------------------------------------
Bugs fixed in 2020.2 Patch 1

    Bug #99401
        Fixed display of chevrons in reviews.

    #2064474 (Bug #105038)
        Some of the CSS styling on the global dashboard had been broken by
        some of the new styles introduced in 20.2.

    #2060336 (Bug #105006)
        Setting a filter directly from the URL would sometimes result in
        incorrect values being set on the reviews list.

    #2059951, #2059414 (Bug #104720)
        When a reviews list text filter had no text in it, the clear icon was
        still appearing even though it is not needed.

    #2059694 (Bug #104974)
        When the search filter was used on the reviews list page, the
        'loading' message never went away even if there were no more results
        to fetch.

    #2059207, #2059207 (Bug #103414)
        Fixed an issue where some non-ASCII characters would not be shown at
        all in a diff view for non-UTF-8 content.

    #2059152 (Bug #104924)
        When bookmarking the reviews list page, though the content of the
        search field was recorded, it was not re-populated when the bookmark
        is used.

    #2056590 (Bug #104867)
        The configure-swarm script would store the plain text password in
        Swarm's config.php if the P4D server had a security level of 4.

    #2056045, #2054532 (Bug #104581)
        Added a clear icon to the review search field. This allows the
        current content of the field to be easily cleared.

    #2056038, #2051298 (Bug #98820)
        If a Job Id was a pure numeric (1234 rather than job1234), then
        attaching them to reviews would cause commit of the review to hang
        due to validation checks failing.

    #2055269 (Bug #104894)
        Fixed intermittent error on the reviews page that would appear in the
        console log.

--------------------------------------------------------------------------
Major new functionality in 2020.2

    Bug #102978
        We have added Linux packages to support installation of Swarm on
        Ubuntu 20.04. This includes support for PHP 7.4 on this platform.

    Bug #102977
        We have added Linux packages to support installation of Swarm on RHEL
        8. Swarm now depends on the Remi PHP repository, allowing the use of
        PHP 7.4 on this platform with the standard Apache server.

    Bug #102976
        We have added Linux packages to support installation of Swarm on
        CentOS 8. Swarm now depends on the Remi PHP repository, allowing the
        use of PHP 7.4 on this platform with the standard Apache server.

    #2007047 (Bug #103181)
        The reviews list page has been updated to take advantage of the new
        Javascript framework, providing a more modern look and feel. Extra
        information has been added to the page, in a clearer format, to
        enable choices to be made about which reviews need to be worked on.


        This is part of our work to move  all of Swarm to the new framework
        over the coming releases.

    #1990244, #1993528, #1999257 (Bug #103043)
        We now display an estimate of the complexity of a review on the
        reviews list page, to allow reviewers to see which reviews are most
        likely to be simple, and which complicated. The complexity is based
        on the number of lines changed across all the files in the review.

--------------------------------------------------------------------------
Minor new functionality in 2020.2

    Bug #96005
        We have added the ability to see usernames on the reviews list page
        without needing to wait for hover text from an avatar.

    Bug #92918
        There are problems on CentOS with different versions of PHP. Swarm
        has been updated to make use of the Remi PHP packages, which should
        provide a more consistent experience.

    Bug #87695
        We are moving to displaying full user names rather than just user ids
        on the new reviews list page. This change will be applied to all
        pages as they are updated over the coming releases.

    #2050841 (Bug #104800)
        The default 'page size' of results returned in the reviews page has
        been changed from 50 to 15. This reduces the time before initial data
        is returned to the user on large systems.

    #2045520, #2044073 (Bug #104485)
        The Role filter on the reviews page has been updated to now include a
        "Reviews I'm an individual reviewer of", which will list all reviews
        that a user has been directly added to, as opposed to those they've
        been added to by being a member of a group.

    #2042375, #2040681 (Bug #104115)
        If Swarm is unable to start properly, the error page now recommends
        checking any SELinux settings since these are a common source of
        problems.

    #2027613, #2024020, #2024020 (Bug #103757)
        It is now possible to retrieve a workflow using the API by providing
        its name rather than only by its id.

    #2012218, #1999922, #1999663 (Bug #100037)
        We have upgraded CentOS and RHEL packages to use the Remi package
        repository for PHP 7.4. This allows all our supported CentOS and RHEL
        releases to be using the same version of PHP.

    #1990065, #1996234, #1996329 (Bug #103101)
        A v10 version of the reviews API has been added to support the new
        reviews list page. This follows the same structure as the existing
        v10 APIs, and is a replacement for the old v9 reviews API.

    #1984569, #1984589, #1985386 (Bug #102949)
        When a review is created or updated, we now calculate a complexity
        value which is stored against the review. This is based on the number
        of lines changed in the files, and provides an indication of how
        complicated the review might be.

--------------------------------------------------------------------------
Bugs fixed in 2020.2

    Bug #104607
        The reviews list page shows a count of the number of reviews in the
        open and closed tabs. This is possibly an over estimate of the number
        to display. Swarm now updates this number as the user scrolls down
        the page as more information becomes available, so the number can
        change to something more accurate.

    #2050437 (Bug #104771)
        Users who are members of a group were not being counted when checking
        minimum votes were needed for approval. Members added to a project
        via a group should now count towards votes.

    #2048113, #2048113 (Bug #104710)
        The menu navigation bar was fetching information on private projects
        that it shouldn't be able to see. Private projects that a user does
        not have permission to see are no longer be returned to the client by
        the navigation APIs.

    #2046648, #2044745 (Bug #104582)
        When expanding a multi-depth stream spec in a review, Swarm would
        return a '500 internal server' error. This has been fixed.

    #2041954 (Bug #104477)
        The help button on the login page was missing a message translation.
        This has now been fixed.

    #2038602, #2036927, #2036927 (Bug #103649)
        Added 'branchName' back into the documentation for test parameters,
        since it is required by Jenkins. It was always present, just not
        listed in the documentation.

    #2038241 (Bug #104288)
        New Javascript UI was not honouring the translator->locale option in
        the config.php.

    #2037180, #2037180 (Bug #104416)
        Private projects with numeric user ids would cause warning messages
        to be output into the logs. This has now been resolved.

    #2034440 (Bug #103939)
        Private projects were not being properly listed on case insensitive
        servers. This has now been resolved.

    #2027650 (Bug #103977)
        When the CentOS/RHEL packages were updated to use the SCL version of
        PHP, the ImageMagick dependency had been moved from the optional
        package to the core package. It has now been moved back to make
        things consistent with the Ubuntu packages.

    #2024431 (Bug #103877)
        On CentOS during package upgrade, the Swarm package shutdown the
        Redis server when the old package is removed. This happens last in
        the sequence, so Redis would then need to be manually restarted. The
        Redis server is now only shutdown on uninstall, not on upgrade.

    #1990682 (Bug #102938)
        If the login fields were pre-filled by a browser, then the Login
        button would be greyed out, requiring two clicks to activate it. This
        has now been fixed.

    #1988355, #1985176 (Bug #101523)
        If Swarm was running without HTTPS behind a proxy which was using
        HTTPS, then avatar requests would incorrectly use HTTP rather than
        HTTPS. This has now been resolved.

    #1986420, #1984303, #1984303 (Bug #98769)
        When a ZIP file is downloaded from a case insensitive P4D server that
        is running on Linux, some pathnames could produce errors. A check is
        now made for the case sensitivity setting of the server and the
        correct string operations performed.

    #1984579, #1984579 (Bug #102866)
        Text columns on the system info page sometimes overlap in small
        browser windows. This has been resolved.

--------------------------------------------------------------------------
Bugs fixed in 2020.1 Patch 4

    #2028501 (Bug #104118)
        If there were invalid characters in a job description, then Swarm
        would fail to return those jobs when requested to by the API. The job
        content is now passed through our UTF-8 filter to cope with invalid
        characters.

    #2028485, #2027037 (Bug #104166)
        The Dashboard incorrectly lists reviews from a project if the user is
        a moderator on any branch in the project.

--------------------------------------------------------------------------
Bugs fixed in 2020.1 Patch 3

    Bug #103793
        Resolved some performance issues when workflow was disabled. Swarm
        was checking for workflows every time it checked a project path,
        rather than once at the start and dropping out early.

    #2021749 (Bug #103991)
        When 'Log in' is clicked when Swarm is using a P4D instance that has
        sso_enabled => true the Swarm log in is displayed instead of the user
        being redirected to the IDP.

    #2021739 (Bug #103963)
        If a review belongs to multiple branches, then we display each branch
        for that review, as a link to the project. This means we can have
        many links to the same location. On complicated reviews spanning
        dozens or hundreds of branches, this consumes screen space, is slow
        to render and doesn't add much benefit.


        With this fix a single link will be created for each project with the
        branches as part of the link text

    #2019121, #2018709 (Bug #103928)
        When Swarm checks to see if content has changed in a review, if that
        content had RCS text then the checks could produce a false positive.
        We now perform a second (slower) diff2 check if a ktext file is
        determined to be different.

    #2017620 (Bug #103890)
        If a large number (thousands) of projects are configured to sync with
        Jira, the PHP regexp matching was failing. The project list is now
        broken down into smaller chunks and each chunk is processed
        individually to get around the PHP limitation.

    #2017537, #2017537, #2011844 (Bug #103701)
        The check to see whether a test should be re-run on the submit of a
        review was incorrectly flagging the review as having changed since
        the previous test run. This has been fixed.

    #2017186 (Bug #103892)
        Fixed bug where the login logo would not appear if a baseUrl was
        configured, and the default Apache DocumentRoot was not pointing at
        the Swarm directory.

    #2016747 (Bug #103845)
        When baseUrl is configured, errors were being displayed in the Swarm
        logs. This has now been resolved.

    #2016724 (Bug #103712)
        With a Windows P4D server in case insensitivity mode, Swarm was not
        correctly comparing user names for user membership tests. This has
        now been resolved.

    #2015542 (Bug #103792)
        If a review belongs to multiple branches, then a workflow rule check
        can be carried out multiple times for the same project and branch
        combinations. On complicated reviews spanning dozens or hundreds of
        branches, this can lead to unnecessary calls that slow down display
        of pages.

    #2014926 (Bug #103775)
        When baseUrl and Apache's DocumentRoot are configured, some of the
        Swarm icons were broken. This has been resolved.

--------------------------------------------------------------------------
Minor new functionality in 2020.1 Patch 2

    #1995433, #1990714, #1990714 (Bug #103203)
        When deciding whether a test needs to be run on submit, we check to
        see if any content in the review has been changed. In order to
        improve performance on large systems with complicated reviews, the
        scope of the diff has been tightened and unnecessary data is no
        longer being retrieved from the server.

--------------------------------------------------------------------------
Bugs fixed in 2020.1 Patch 2

    #1997601, #1997601 (Bug #103287)
        Links in comments would be incorrectly escaped if they were longer
        than 256 characters. There is a maximum length limit for which we
        consider when looking for URLs, and this has been increased to 1024
        characters.

    #1996785 (Bug #103374)
        When base_url was set in the configuration, a null would be shown in
        place of the server id. This has now been fixed.

    #1996127 (Bug #103361)
        The default timeout for http calls has been increased from 5 seconds
        to 10 seconds. Sometimes tests would fail with a default of 5 seconds
        if Jenkins was slow to respond.

    #1991513 (Bug #103271)
        It was not possible to login if a base_url had been set in Swarm.
        This has now been fixed.

--------------------------------------------------------------------------
Bugs fixed in 2020.1.1

    Bug #103114
        There were problems with package dependencies on some RPM based 
        distributions, in particular dependencies for the ImageMagick 
        library. ImageMagick is now not installed by default, but see the 
        documentation on how to enable it on platforms where it is supported.

    Bug #102966
        If using multi-p4d, then the verification option for the Redis 
        server would hang. This has now been fixed.

--------------------------------------------------------------------------
Major new functionality in 2020.1

    #1966171, #1965117 (Bug #102344)
        Test Definitions which are associated with a workflow are now
        displayed on the workflow's configuration page. This is also true for
        the global workflow.

    #1965117 (Bug #102367)
        It is now possible to associate a test definition with a workflow, so
        that the test will be executed when reviews affected by that workflow
        are updated.

    #1963290, #1963245 (Bug #102187)
        When a review is submitted, any test definitions that are applied to
        a workflow as 'OnSubmit' will be executed. These are executed after
        the review has been submitted, and will be executed even if the
        content of the review has not changed.

    #1963189, #1960593 (Bug #102120)
        Added the ability to edit Test Definitions within the UI.

    #1963189, #1960593 (Bug #102119)
        It is now possible to create a new Test Definition in Swarm within
        the UI. Test Definitions can be added to a workflow which defines how
        they are executed.

    #1962497, #1962561, #1962580, #1963083, #1963245, #1963290 (Bug #102185)
        Any test definitions that have been added to a workflow as 'OnUpdate'
        will be executed whenever the content of a review is updated.  These
        tests will not be run on a submit unless the content of the review
        has changed between the last successful test run and the submit.

    #1961233 (Bug #102117)
        Added a page which displays a list of all the Test Definitions that
        can be viewed and used by the user.

    #1956746, #1955154 (Bug #102162)
        It is now possible to configure the global workflow configurations
        from within the UI of Swarm, rather than editing the config.php. Who
        has permission to do this can be controlled by the workflow itself.

    #1956498, #1955275 (Bug #102160)
        The global workflow settings are now displayed on the workflows page
        within Swarm, where it will be possible to edit them through the UI.
        Any configuration in config.php will be automatically migrated.

    #1954764, #1953985 (Bug #102058)
        Any global tests which are defined in config.php will be migrated to
        key data the first time that they are used. This brings them under
        the control of the UI, and after this point the definitions in
        config.php will no longer be referenced.

    #1947289 (Bug #70408)
        Added the ability to edit a text file directly from the file page
        within Swarm. This is currently a technical preview feature.

    #1938617, #1920608 (Bug #101354)
        Allow the inline editing of text files to be disabled or enabled from
        the configuration file. System owners who do not want users to have
        this feature can disable it system wide.

    #1935827, #1928649 (Bug #101532)
        Added a file API to support the updating the content of files
        directly from within Swarm.

--------------------------------------------------------------------------
Minor new functionality in 2020.1

    Bug #97672
        It is now possible to pass more information to CI systems when a test
        is run, such as the status and version of the review.
    
    Bug #102310
        Added an option to specify XML content type when executing a test.
        Previously only JSON and URL encoded were allowed.

    #1973686, #1965117 (Bug #102368)
        Added the ability to modify the tests definitions which are
        associated with a workflow.

    #1972872, #1967353 (Bug #99591)
        We now display the state of any Redis verification to admin users,
        and allow them to run a new verification immediately.

    #1969720, #1970158 (Bug #102404)
        An automatic process has been put in to perform a validation of index
        data for projects and workflows when they are saved. This will repair
        any invalid index data which may have been caused by bug #102353

    #1968482, #1967442 (Bug #102503)
        Create an activity event when a test definition is updated.

    #1967419, #1966767 (Bug #102369)
        Added ability to remove test definitions from a workflow.

    #1964728, #1963995 (Bug #102179)
        Swarm now logs an activity event when a workflow is deleted.

    #1959604, #1958970 (Bug #102142)
        We have reduced the number of notifications sent out for test result
        updates, so users are only notified on important changes to state.

    #1958008 (Bug #102252)
        Workflows definitions now include the list of tests that are
        associated with them, along with any rules for those tests.

    #1952998, #1952996, #1952996 (Bug #101120)
        application.config.php has been added to the list of configuration
        files in the rpm and deb packages, so that it is not overwritten when
        Swarm is upgraded. This allows the config caching to be disabled
        without it being overwritten each time.

    #1947904 (Bug #102063)
        Updated package to include the latest 19.2 versions of P4PHP
        libraries.

    #1944027, #1944248, #1944331, #1944675, #1945460, #1947784, #1947972,
    #1948679, #1949443 (Bug #101945)
        The Workflow API has been upgraded to v10, to make use of the new
        standardised json format that Swarm is moving to. The v9 API will be
        marked as deprecated at some point in the future, before being
        removed completely.

    #1942691, #1944655 (Bug #101929)
        The first time that Workflow data is requested after an upgrade to
        20.1, the system will automatically migrate any configuration in
        config.php to key data.

    #1942651, #1942720, #1942895, #1942971, #1944276, #1947173 (Bug #101953)
        The default workflow configuration in config.php has now been defined
        as a Global Workflow object in key data.

--------------------------------------------------------------------------
Bugs fixed in 2020.1

    Bug #102780
        Now that menu items use SVG icons, there is a new way to customise
        those icons. See
        https://www.perforce.com/manuals/swarm/Content/Swarm/extending.clients.html

    #1976932 (Bug #102819)
        Improve performance when working out review transitions by not
        fetching information on all the groups in the system.

    #1974100 (Bug #102778)
        Swarm was handing mixed case user names incorrectly on case
        insensitive servers. This has now been fixed.

    #1970284 (Bug #102666)
        There was a bug where if a branch was added to a project, then it
        wasn't possible to add a workflow to that branch until the Project
        had been saved and re-edited. This has now been fixed.

    #1965705 (Bug #102533)
        Swarm now uses PHP 7.2 on CentOS 7. This fixes a problem where a
        required PHP library was not available natively on CentOS 7 for PHP
        7.1, which forced us to use a CentOS 6 version of the library which
        sometimes caused errors.

    #1962431 (Bug #102501)
        The format of the data returned by the reviews/<review_id>/testruns
        API endpoint has been corrected so that it fits the format of the
        other APIs.

    #1959613, #1950017 (Bug #101931)
        Fixed bug where a workflow would pick up the current excluded users
        list when it was created. This could have unexpected behaviour if the
        list was changed later, especially since excluded users on individual
        workflows isn't supported in the front end but would be applied on
        the server.

    #1957437 (Bug #102353)
        Fixed a bug where index values were not being removed from indexed
        key data. If an indexed value on a key is changed, the index is
        updated to include the new value, but not to remove the old value, so
        the key will still be found when searching for old values. This
        caused an efficiency problem where more workflows than necessary were
        returned when pre-filtering them, though functional behaviour was
        still correct.

    #1953953, #1953953 (Bug #102085)
        When setting the name of a workflow, if it had spaces in it then the
        duplicate name check was not functionality correctly. This has been
        fixed.

    #1951989, #1951989 (Bug #102045)
        If an automated test failed to communicate with the CI system, then
        an error would be displayed in the test results, along with the URL.
        If this URL contained authentication tokens, then they would be
        displayed to all users. Swarm now strips out anything other than the
        basic hostname and path before displaying the URL.

    #1949333 (Bug #101968)
        Deleting files from a shelf when specifying an absolute file path
        rather than a depot path would incorrectly prepend the cwd to the
        path when processing the shelvedel trigger event. This has now been
        fixed.

    #1942722 (Bug #101782)
        We would sometimes report that a running test was failed in the
        activity and notification email. This has now been fixed.

    #1936411 (Bug #101225)
        Swarm was being over eager in its escaping of URLs in test calls when
        using JSON encoding. We have reduced the amount of escaping so that
        it is JSON safe in these cases.

    #1928698 (Bug #101326)
        Fix problem when removing files from a review whilst in the root of a
        Windows file system. The trailing backslash on c:\ was escaping the
        closing quote on command line arguments to the trigger. Also resolved
        an issue that was causing infinite recursion of the trigger script on
        Windows if any argument had a space in it.

    #1928697, #1928697 (Bug #101626)
        For large shelvedel operations, with a long list of filenames, data
        from the trigger was being truncated at 1024 bytes. The limit has now
        been removed so that a shelvedel argument list should now only be
        limited by the operating system.

    #1922395 (Bug #101448)
        A change has been made to fetch user data from Redis rather than P4D,
        which will reduce excessive load on the server for busy systems.

--------------------------------------------------------------------------
Minor new functionality in 2019.3 Patch 2

    #1908924, #1908924 (Bug #100656)
        Improved visibility of button state. Previously it was quite hard to
        tell what state a button was in because the color change was small.
        This mostly affects buttons on the review page.

    #1908879 (Bug #100826)
        The depot path shown at the top of the 'Files' page used to have
        spaces inserted into it between path elements. If it was copied and
        then pasted into the command line it would not be valid. These spaces
        have been removed from the underlying text, so when copied the depot
        path is valid. 

    #1908826 (Bug #100619)
        The redis-cli-swarm binary has been added to the path when installing
        from packages, to make it easier for administrators to access the
        Redis server from the command line.

    #1906480 (Bug #101027)
        The 'non_utf8_encodings' configurable in the translator array is now
        documented, see
        https://www.perforce.com/manuals/swarm/Content/Swarm/admin.locale.html.
        Previously it was undocumented.

    #1897025 (Bug #100850)
        The curl utility has been added to the Swarm OVA packages by default,
        so that it is available for administration and support use in an
        environment that doesn't have access to the public internet.

--------------------------------------------------------------------------
Bugs fixed in 2019.3 Patch 2

    #1912733 (Bug #101199)
        The emulate_ip_protections configurable can now be set for each P4D
        instance in a multi-P4D setup.

    #1912410, #1912206 (Bug #101101)
        It is now possible to define the proxy_mode for each individual P4D
        in a multi-P4D setup. Previously, all connections had to have the
        same setting. By default this is true, which means the IP address of
        the user is considered when resolving protection table restrictions
        in P4D. Setting this to false means that P4D will only consider the
        IP of the Swarm server in the protections table.

    #1911508, #1911459, #1908672 (Bug #92625)
        Fixed a bug when marking up URLs in comments and other text. If there
        was an '&' in the URL then it would be displayed as '&amp;' instead
        of being displayed as a simple '&'.

    #1911444 (Bug #100844)
        Fixed a bug where project names with UTF-8 characters stopped the
        'Test in progress' icon being displayed.

    #1908316 (Bug #101069)
        Fixed a bug where a very long list of Jira projects caused the PHP
        limit on RegEx size to be exceeded. The project list is now split
        into sections before generating the RegEx to prevent the size from
        being exceeded.

    #1908239, #1906930 (Bug #100913)
        Fixed bug where a period (.) followed by an upper case character in
        the depot name prevented the branch path from being recognised.

    #1907358 (Bug #100843)
        Fixed bug where Unicode characters in the branch path of a main
        branch would prevent the overview tab being displayed for a project.

    #1907277 (Bug #100972)
        Fixed a bug where filtering projects with UTF-8 characters on the
        dashboard did not work.

    #1902045, #1893605 (Bug #100631)
        The package removal script was not properly checking which version of
        PHP to clean up on Ubuntu. We now check for the PHP version before
        trying to remove the Perforce PHP module.

    #1897363, #1896897 (Bug #100811)
        If a group had associated key data, for example, because
        notifications had been configured against it, then only admin users
        would be able to modify or delete the group.

    #1893621 (Bug #95670)
        Fix problem with comments not being displayed in reviews even though
        they were displayed in the project activity. 

--------------------------------------------------------------------------
Bugs fixed in 2019.3 Patch 1

    #1885227, #1884757 (Bug #100496)
        Fix issue where usernames with mixed case on a case-insensitive
        server were always being converted to lower case. After upgrading,
        you will need to flush your user cache by either making sure that
        Redis has been restarted or if your Redis cache is being persisted to
        disk then you will need to clear your user cache directly. See the
        documentation on deleting the user cache here:
        https://www.perforce.com/manuals/swarm/Content/Swarm/swarm-apidoc_endpoint_config_cache.html#Redis_cache_delete

--------------------------------------------------------------------------
Major new functionality in 2019.3

    #1854311 (Bug #97139)
        Added new API endpoints (v10) for managing automated tests within
        Swarm. Allows extra information to be passed back to test results for
        a review, and for an external system to attach their own test
        results to an existing review.

    #1849256, #1850356, #1850672, #1850711 (Bug #97140)
        Allow a review version to display the results of multiple tests that
        have been executed on the code changes, for when a code change causes
        tests to be run from both multiple projects and system wide global
        tests. A history of test results can now be viewed on each version
        of a review, to see which revisions failed or passed the tests.

    #1847306, #1847410, #1847480, #1847507, #1847785, #1848038, #1848118,
    #1849387 (Bug #97797)
        Added new system wide configuration options to define global CI tests
        that will run when any review is created anywhere in the system,
        regardless of whether it is part of a project.

--------------------------------------------------------------------------
Minor new functionality in 2019.3

    Bug #97840
        Provide a history of test jobs for each version of a review with a
        link and a pass/fail status for each one.

    Bug #91045
        Add an ability to link test status to a version of  a review. 

    #1862167, #1861501 (Bug #99945)
        Add support for extra parameters in web hooks to test systems when a
        test is executed. You can now reference a review's status and
        changelist description.

    #1860032 (Bug #99268)
        Swarm now allows a configurable HTTP timeout to be specified when
        invoking test URLs to an external system such as Jenkins.

    #1858307 (Bug #89120)
        Test results are displayed for each version of a review, so that a
        record of successes and failures for older versions remain visible.

    #1858294 (Bug #99282)
        Global tests are executed whenever a review is created anywhere in
        the depot, regardless of which project (if any) that a review belongs
        to.

    #1845665 (Bug #94115)
        Add ability to auto-create users when logging in to Swarm, if
        auto-create is enabled on the P4D server and the user exists in LDAP.
        This is to handle situations where the user exists in LDAP but hasn't
        been synced to the P4D server yet. The user will now be synced when
        the login is attempted.

    #1844645, #1842780 (Bug #96549)
        Fix UTF-8 characters in mail headers which were causing Office365 to
        reject Swarm emails.

--------------------------------------------------------------------------
Bugs fixed in 2019.3

    #1868080 (Bug #100087)
        Swarm 19.2 cannot handle (:@{}()) characters in data such as user and
        group names, and throws 500 errors on the reviews page. This is due to 
        the serialisation at the Redis backend. Error handling in this area is 
        now improved, and a workaround provided in situations where use of 
        these characters can't be avoided.

    #1862763 (Bug #100021)
        When Swarm is upgraded from the packages, the configuration cache is
        not updated so we get 404 errors when trying to access new (uncached)
        modules. Package upgrades now clear the config cache. The config
        cache is automatically rebuilt when Swarm restarts. 

    #1844992 (Bug #99567)
        Fixed issue where if a review was updated in a browser page, if the
        review diffs were accessed in an another browser page they would
        result in 404 errors. This was because the links were stale. 

    #1843214 (Bug #99351)
        If Redis has been restarted and is still loading its dataset from a
        file, then Swarm would give a 500 error message. Have improved error
        detection so that Swarm provides a friendly message that it is
        starting up.

--------------------------------------------------------------------------
Major new functionality in 2019.2

    #1838181 (Bug #99449)
        Performance improvements for the 'Projects' page when dealing with
        a project data set with a large number of branches and paths

    #1834789, #1838131 (Bugs #99335, #99461)
        New event listeners that detect if the Redis cache is in need of
        verification and update.

    #1830208 (Bug #99330)
        Enabling workflow triggers by default, and removing reference to
        them as technical preview.

    #1826865 (Bug #99083)
        Adding Support for Stream spec changes within a review.

    #1823119, #1831052 (Bugs #98258, #99116)
        Included a config option that allows Admins to setup a list of
        users and groups that will be ignored by workflow rules. Any
        user or group defined within this will not be gated by workflow
        rules. Example of alice bob and eve being ignored would be:

        'workflow' => [
          'workflow_rules' => [
            'user_exclusions' => [
              'rule' => ['alice', 'bob', 'eve'],
              'mode' => 'policy'
            ],
          ]
        ]

        If you want to have all members of the managers group exempt you
        would define that within the group_exclusions section:

        'workflow' => [
          'workflow_rules' => [
            'group_exclusions' => [
              'rule' => [managers'],
              'mode' => 'policy'
            ]
          ]
        ]

    #1785857 (Bug #97934)
        Swarm now connects to a Redis server to store a local cache.

    #1780587 (Bug #95203)
        Added the ability to blacklist groups like you can with users.
        This allows you to do a regex pattern.

    #1777990 (Bug #97591)
        Including a compiled version of Redis server and cli within swarm.
        This helps ensure that the version of Redis that is used is the
        same as we have verified and tested against.

Minor new functionality in 2019.2

    #1834020 (Bug #99308)
        New API endpoint to trigger the Redis cache verification process.
        Just calling '/api/v9/verify' will trigger the verify to start. If
        you append a context of "user, group, project or workflow" it will
        only trigger for that context. If Swarm finds differences between
        the data it holds in its cache and the data in the Perforce
        Server, it will update the cache.

    #1832149 (Bug #99334)
        Config settings to support cache integrity checking. By default
        this is set to '03:00' and will trigger a verify daily at 3 am.
        This takes input of 24 hour clock or number of seconds.

    #1826202 (Bug #94779)
        You can now use regular expressions in the mainline branch
        identification configurable. The project overview markdown file
        no longer needs to be in the mainline branch of the project.

        This allows you to set a standard php regex pattern that matches
        your preferred mainline. For example if you don't use the default
        'main', 'mainline', 'trunk' or 'master' but have branches like
        'Secret-code-main' or 'library-main' you could add a regex like
        '.*-main' This would match both of these branches and use library
        readme if it had one. By default we do an exact match on your
        string within the mainlines config first. Using the two previous
        branch names and adding 'secret-code-main' to the mainlines config
        then we would find the readme from that branch. As we put an ^
        (caret) at the begin of every string and an $ (dollar sign) at the
        end. This means you get the freedom to write any regex pattern you
        wish.

        Be aware we do not remove the four default entries, your new
        mainline patterns are appended not replacements. The first branch
        (alphabetical by Branch Name) that is found with a readme will be
        used.

    #1826076 (Bug #98885)
        Config option added to allow you to change the location Swarm puts
        the links under in Jira. By default Jira puts links within the
        "links to" section if you have setup Jira to work with Swarm.

    #1823924 (Bug #98224)
        Swarm will now put an activity feed entry into Project Activty if
        you are creating or updating a project. This is to help track who
        is changing the project settings.

    #1816178 (Bug #98676)
        The new blacklist config is now respecting group and users
        blacklist by default.

    #1810331 (Bug #94767)
        Adding the ability to allow members of a Project to view the
        project settings page even if they are not allowed to edit
        them.

        This allows members to see who the required reviewers, default
        reviewers and moderator are for a given project or branch.

        To enable this feature edit the config to this:

        'projects' => [
           'allow_view_settings' => true
        ],

        By default we hide the deploy and test settings from members.
        Owner and Admins can still see and change them.

    #1808334 (Bug #98802)
        Implemented a new API that allows you to clear the redis cache.
        If you provide a context of "user, group, project or workflow"
        Swarm will clear the cache for each of them. If you do not
        provide a context it will clear all of them.

    #1789762 (Bugs #98139, #98447)
        Update the ui to provide a running icon on the review list, to use
        an svg icon and to make the button neutral in colour

    #1787850 (Bug #94745)
        Added the ability for Authors of a review to sync their review
        description back to the associated changelist. Only available if
        you are editing the description of a pre-commit review and you are
        the original author of the changelist that created the review.

    #1786907 (Bug #90633)
        Swarm reports a more meaningful message when a user tries to
        access a private project that the user is not a member or
        moderator of.

    #1780656 (Bugs #98158, #98159)
        We now cache the config.php file, this is for performance
        purposes. This does mean that if you tweak the config.php you will
        need to clear the cache using the new API that clears the config
        cache. This is a "DELETE" method only endpoint.

            <swarmhost>/api/v9/cache

    #1762882 (Bug #97857)
        A few enhancement to help with logging.

        - Updating the public/queue.php file to work with multiple P4Ds to
        log the add task.

        - Adding logging into queue manager to output the queue status
         when we shutdown an event.

        - Adding a log entire into Swarm log when we add a task to the
         queue list.

Bugs fixed in 2019.2

    #1839357 (Bug #99495)
        Fixed the review approval logic that should have prevented
        approval if someone votes the review down.

    #1830503 (Bug #98232)
        Handle the case of a user not being present on a pass/fail test
        callback URL

    #1830175 (Bug #99185)
        Swarm 2019.1 mails not sent if headers contain non-ascii: Invalid
        header value detected errors

    #1829765 (Bug #99126)
        An email should be sent for 'A committed change comment is
        created'

    #1809271 (Bug #86472)
        Spaces in protections and clicking to download a zip generates a
        500 error and throws InvalidArgumentException error.

    #1782802 (Bug #97330)
        Swarm log, report if notification emails are not sent due to
        restricted change

    #1776907 (Bug #98049)
        Catch the exception about project or group name being too long
        from spec depot.

        Dropping max bytes down to 950 as this ensures we don't hit the
        identify error we were getting.

--------------------------------------------------------------------------
Bugs fixed in 2019.1 Patch 1

    #1829459 (Bug #99283)
        Always render comment markdown in safe mode, to prevent xss

    #1826690 (Bug #99198)
        Fixed a non-blocking operation that was causing the group cache to
        become locked.  

    #1826282 (Bug #99082)
        Swarm cache file for Jira project wasn't being created or updated.

        Fixed the issue where if the Jira project cache hadn't been
        created we wouldn't link to change, commits, jobs or reviews.

--------------------------------------------------------------------------
Major new functionality in 2019.1
     #1769492 (Bug #91389)
        Add a 'Markdown' view option in the Files section of Swarm that
        obeys the 'markdown' configuration settings. This will enable
        files to have an additional Markdown view in the 'Files' section of
        Swarm.

     #1747980 (Bug #97027)
        Upgrade Zend Framework to latest and improve our internal setup
        to support PHP 7.0 and greater.

Minor new functionality in 2019.1
     #1771944 (Bug #94210)
        Archiving/Unarchiving comments now puts events into the activity
        stream.

    #1770668 (Bug #85252)
        Putting a 'started' status on tests to highlight that a test has
        been fired off and then show this on the review as a blue spinner
        icon.

    #1770625 (Bug #72068)
        Making the activity feeds follow the display_fullname logic. If
        enabled show full name if not enabled show only the ID.

    #1770603 (Bug #97932)
        Review page, display prominently which revision is being viewed
        and total number of revisions.

    #1764671 (Bug #91997)
        Making the html email contain the markdown rendered version of a
        comment instead of pure text.

    #1762929 (Bug #91391)
        Add more markdown file extensions for project overview

    #1762088 (Bug #91440)
        Upgrading the Parsedown to 1.7

    #1746372 (Bug #97282)
        Add an api/session endpoint for create/get/delete of session data.

Bugs fixed in 2019.1

    #1773031 (Bug #79931)
        Jira issue ID's will not linkify unless surrounded by whitespace
        See comments on Jira card for implementation notes

    #1771954 (Bug #95392)
        Add activity for when a workflow is created or updated.

    #1770828 (Bug #97821)
        Large refactoring of the event listener order and priority level.
        For more information on this please do reference the documentation.

    #1770225 (Bugs #93752, #95148)
        Ensure we credit the user that has changed the description in the
        history tab.

    #1770062 (Bug #97936)
        Fix issues with mixing Emoji's and markdown.

    #1768841 (Bugs #93983, #93984)
        Creating a project or group with a name over 950 characters causes
        a 500 error on the page.

    #1764615 (Bug #97935)
        Fixing a typo in our Emoji for disappointed

    #1764161 (Bug #97915)
        Configuration to support markdown and raw view for files/project
        readme.

    #1762063 (Bug #93208)
        Fix issue where error messages coming back from Jira are causing
        json encode errors in the logging process.

    #1760510 (Bug #91088)
        Fixing swarm diff issue when filetype has been changed between
        revision.

        If the file type was set to utf8 and then shelved for review and
        then in the next revision changed the filetype to text swarm won't
        have displayed the content change if any. It will now use the diff2
        option of '-t' which force context diff even if filetype are
        different.

    #1745267 (Bug #97342)
        Re-instate the 'groups' stored on a review

    #1745119 (Bug #97327)
        Fix emoji's for multi p4d

    #1745078 (Bug #97256)
        Adding the OBJLoader.js to allow Obj files to be rendered.

    #1744877 (Bug #97271)
        Added support for @mention of unicode user names.

    #1740186 (Bug #97239)
        Add sso_enabled to Server definition in react

    #1739272 (Bug #96994)
        Putting a loading icon onto each of the instances.

        If you login to a server and hit reload the turning arrows will
        appear till it has checked the connection and helps prevent being
        able to double connect.

    #1739259 (Bug #97228)
        Missing subproject with parent activity can fail to show projects
        page

    #1733247 (Bug #97108)
        Prevent server list overlap when error message is shown

    #1733196 (Bug #97073)
        Global dashboard keyword search should include review id

    #1732755 (Bugs #97070, #97071)
        Better support for Okta as an SSO test instance, handle
        require_login=true

    #1729542 (Bugs #96992, #97032)
        Correctly filter dashboards by instance, using a class rather than
        excluding servers as the latter results in a re-mount when
        reinstated. Use blank strings rather than un-i18n for empty
        filters, the net effect of the un-i18n strings was that the filters
        were never being not applied, but the filtered list contained the
        correct data.

    #1728925, #1729010 (Bugs #96473, #96517)
        Server side changes to support SAML

    #1728877 (Bug #97047)
        Update the iconset and correct missing usage thereof.

--------------------------------------------------------------------------
Bugs fixed in 2018.3 Patch 1

    #1746000 (Bug #97332)
        Fixing the data attribute selector to allow multi P4D to have
        different CSS or JS run against.

    #1745600 (Bug #97223)
        Adding a login form to the global dashboard top navigation bar.

    #1740955 (Bug 97129)
        Additional feature with the new SSO login, if you require a
        custom logout URL you can now define this for Swarm. By default
        this is set to null and is ignored. To set your own please use
        the following:

        'environment' => array(
            'logout_url'   => <http[s]://your/redirect/logout/url>,
        ),

    #1738681 (Bug 96359)
        Introduced a new config to allow the ability to show full names
        instead of user IDs. This is a config under 'users', by default
        is disabled. To enable, add the following to your config:

        'users' => array(
            'display_fullname' => true,
        ),

        This is used on page such as Settings pages, Commit pages and
        the Edit reviews dialog.

    #1738259 (Bug #97228)
        Added some logic around the project data to ensure we can
        display project when they are missing.

--------------------------------------------------------------------------
Major new functionality in 2018.3
    #1710576 (Bug #96470)
        If your Helix Core Server is configured for SAML SSO, Swarm now
        supports Single Sign-On (SSO) using Security Assertion Markup
        Language (SAML).

    #1710560 (Bug #96366)
        You can now connect a single Swarm server instance to
        multiple-Helix Server instances.

        If Swarm is connected to more than one Helix Core Server instance,
        your Global Dashboard displays a list of reviews that you may need
        to act on for each of the Helix Server instances connected to
        Swarm.

Minor new functionality in 2018.3
    #1714885 (Bug #96373)
        Display the Queue info status in the System info page, this is the
        same information that is displayed by the /queue/status page
        request.

        Added a new endpoint of /queue/future that allows you to see what
        future tasks are left to process. This is also displayed in the
        Queue info tab to enable better debugging of queue workers.

    #1714765, 1725435  (Bugs #96582, #96922)
        Updating the compiled latest patched P4PHP against 2018.2 API. Also
        requiring an upgrade to the P4PHP if you manually install the PHP
        extension.

    #1707219 (Bug #89892)
        Your dashboard now displays a Refresh button when new content is
        available for your dashboard.

Bugs fixed in 2018.3

    #1704671 (Bug #91070)
        Fix the download zip of a review that contains files in multiple
        folders.

    #1701752 (Bug #96339)
        Removing the default maximum fetch value and setting it to 0

    #1701133 (Bugs #95933, #96157)
        Fixed an issue where review revision would be false. Swarm is now
        able to handle these values and display the review revision
        correctly.

--------------------------------------------------------------------------
Major new functionality in 2018.2

    #1685903 #1687010 #1693690 (Bugs #95811, #95968, #95984, #96172)
        Prevent default reviewers being removed from reviews associated
        with projects, and branches with Retain default reviewers enabled

    #1684341 (Bugs #81136, #91070, #95771)
        Allow exclusionary mapping in Project branches.

        Removing the overlay client spec for branch views. Zip for reviews
        has been improved, the zip archive no longer flattens the folder
        structure.

        The project branch view was built using the "+" overlay sign. This
        means that the client view would look strange when browsing to
        http://Swarm-host/project/PROJECT/files/BRANCH/ Removing the +
        notation from the client means that you will get extra folder
        structure if the common path is higher or lower than the first
        branch path.

  #1669829 (Bug #95426)
        If you create a review with multiple branches with different
        moderators, we have introduced a configuration option that allows
        you to choose if any moderator can approve or if you require a
        moderator from each branch to approve.

        By default it is set to "any" which means if any moderator from
        any branch on a review approves the review it will be approved.
        If you use the option of "each" this means that a moderator from
        each branch needs to have approved the review before the review
        will move to approved state.

    #1659857 (Bug #72443)
        Implemented a way for Authors or Admins to Obliterate a review
        from Swarm. An obliterated review cannot be reinstated. By
        default, obliterate is disabled for authors. This is to prevent
        authors obliterating reviews by mistake.

        To enable this feature for authors you must enable the the option
        in the reviews section of config.php:

             "allow_author_obliterate"  => true

        This allows authors to obliterate their own reviews.

        WARNING: There is no way to recover these obliterated reviews
        if this is used.

    #1654107 (Bugs #93924, #94453)
        Make projects as an item in the top menu with a separate page.

Tech preview in 2018.2

    Technology Preview features are currently unsupported, might not be
    functionally complete, and are not suitable for deployment in
    production. Technology preview features are subject to change and
    may be removed before they become fully supported features.

    These features are provided to the customer to solicit interest and
    feedback, with the goal of full support in future releases. Customers
    are encouraged to provide feedback and functionality suggestions for
    Technology Preview features before they become fully supported.

    Implementing Workflow rules for a project or branch. This has
    introduced lots of different ways to restrict the way in which a
    review or commit is processed.

    New trigger entries have been implemented to deal with these
    workflows and must be enabled to allow workflow to work correctly.

    By default this new feature has been turned off. To enable this
    feature you need to enable:

        'workflow' => array(
            'enabled' => true,
        ),

    Then you will also need to include the three new trigger lines:

        swarm.enforce, swarm.strict and swarm.shelvesub

    You can get the correct output for these by running the trigger
    example output:

        perl <SWARM-DIR>/p4-bin/scripts/swarm-trigger.pl -o

    You can include the "-c" flag and the conf file location. This
    will give you examples of the trigger lines.

    If you previously used the enforce or strict triggers you will
    need to comment these out to use workflow triggers.

Minor new functionality in 2018.2

    #1695162 (Bug #96183)
        Introduce a short term cache for project data to improve
        performance.

    #1692714 (Bug #96151)
        Added configurable for the trigger timeout, on both HTTP::Tiny
        and curl.

        Added configurable to control what happens on either a timeout,
        or a missing Swarm server. Admin has the option to ignore such
        errors so they don't prevent a commit if they are taking too
        long, or if Swarm is down.

        New trigger options are:

           TIMEOUT=30
           IGNORE_TIMEOUT=0
           IGNORE_NOSERVER=0

        Also updated the errors returned when unusual events happen, to
        hopefully simplify and clarify.

     #1689661, #1691533 (Bug #95939)
        Adding the logic to the transition method to check if the minimum
        number of up votes have been met.

    #1688912 (Bug #95954)
        Disable the voting requirements menu when a sticky minimum is set
        to required and an existing review minimum of 1 is increased to
        required.

    #1667459 (Bug #94705)
        API endpoint to support voting

    #1657916 (Bug #94615)
        Adding a new API endpoint to allow you to fetch a list of users
        and their details. Ability to limit by a list of users or limit
        the fields that are returned.

    #1687349 (Bugs #95942, #95943)
        Adding the UI and the filter for minimum up vote work

Bugs fixed in 2018.2

    #1698992 (Bug #96241)
        Remove unnecessary 1201 search

    #1698600 (Bug #95711)
        Last moderator has the option to approve the review without voting.

    #1697033 (Bug #95048)
        Ensuring the Overview tab is shown on all pages within the project
        view if a readme.md is present. An individual review page will not
        show the project toolbar if the review spans multiple projects.

    #1696896 (Bug #95466)
        Ensuring the upgrade path doesn't throw an error if the review
        hasn't been defined. This normally happens if the upgrade is rerun.

    #1696314 (Bug #95509)
        Added Alt text for home and help icons in the toolbar.

    #1695676 (Bug #95993)
        Removing the need to run 2012 key search from the users page.

    #1695184 (Bug #95640)
        Improve handling of moderation on the dashboard by only showing
        reviews that the moderator can action.

    #1693692 (Bug #95554)
        Reload the reviews page on login

    #1693667 (Bug #96195)
        Fixing API docs bug with broken table due to use of pipe in
        parameter description.

    #1692748 (Bug #96165)
        Change the getAffectedByChange from using the handler to using a
        foreach as this seems to improve performance.

        Additional performance improvements are:
        - Keeping a hash of all the maps we are using for branches
        - Keeping a hash of all paths being used.

        Both of these are improvements to help us not issue additional
        calls we don't need to.

    #1692723 (Bug #95701)
        If the digest is missing for a ktext file, skip comparison. This
        occurs if a file has been deleted as part of this changelist, so
        we don't need to do a digest comparison.

    #1692721 (Bugs #95969, #96181)
        Default retained reviewers are kept on the review when an update
        to a review is done or reviewers are modified.

    #1692055 (Bug #96164)
        Optimise Project isInvolved to avoid unnecessary calls

    #1691973 (Bug #96146)
        Project fetch by ids should not clone the entire cache before
        filtering

    #1691357, #1691981 (Bug #96145)
        Filter by ids should not modify the cached iterator

    #1691251, #1692094 (Bug #95727)
        Use p4 counters instead of the cache for getting individual
        projects. This is a performance improvement in 2 scenarios where
        there are a high number of projects: 1) Project save will not need
        to wait for the cache to reload prior to the page refresh 2) Where
        we get data for individual projects the cache file will not need
        to be loaded into memory


    #1687016 (Bug #95981)
        Use array_keys/array_flip instead of array_unique on change/review
        job list. This avoids having gaps in the array passed to
        change->setJobs, which in turn prevents a core dump on save.

    #1686998 (Bug #95857)
        Enforce that branch name is provided in the UI

    #1686467 (Bug #95940)
        Adding the new MinimumUpVotes to Project model.

    #1685923 (Bug #95813)
        Prevent UI elements from reducing the minimum voting requirements
        for reviewers(user&groups) that are sticky(i.e. have a
        minimumRequired value)

    #1684941, #1685656 (Bug #95792)
        Optimisation of the calls to find which projects are affected
        by a given changelist.

    #1684315 (Bug #95810)
        UI for default reviewer retention

    #1683848 (Bugs #95814, #95844)
        Add default reviewer retention property to project and branch
        models.

    #1683367 (Bug #95737)
        Home page performance has been improved.

    #1679236 (Bug #95617)
        Do not send batched email notifications for comments if all the
        comments have been closed

    #1675488 (Bug #95543)
        Prevent a review becoming approved or committed when there are
        still moderator approvals needed, remove approve from moderators
        who have approved already

    #1674364 (Bug #95618)
        Validate stream query parameter passed to activity call

    #1673664 (Bug #95427)
        Take account of new moderator approval rules

    #1673065, #1673377 ,#1691958 (Bug #95287)
        Prevent unwanted mail notifications when the role on a project
        cannot be determined

    #1671988 (Bug #95504)
        prepend link with fully qualified base

    #1671950 (Bug #95204)
        Update a review's branch membership on content change

    #1671363 (Bug #95236)
        Putting in some locking to help prevent the review listener
        from taking control of the review before the commit has
        finished processing the task.

    #1670024, #1671954 (Bug #95425, #95428)
        Support the approvals field in the Review model; allows
        get/set/approve. This is to help with the multi branch
        moderator approval feature.

    #1669912 (Bug #95511)
        Project review branch filter search box shows "Project" not
        "Branch" with no search term entered

    #1664399 (Bug #95037)
        Creating a new endpoint that allows you to see the next transition
        state.

        /api/v9/review/{id}/transitions

        { isValid: true, transitions: { needsReview: "Needs Review" } }

    #1663905, #1666401 (Bug #95209)
        Fixing the double line ending when expander is used.

    #1663853 (Bug #95235, #95269)
        Projects page add button should be privileged and have the correct
        link

    #1663667, #1666444 (Bug #95238)
        Fixing the dashboard dropdown to contain the correct data to
        display the project name rather than the project ID.

    #1662517 (Bug #95207)
        Adding %quote% tag around shelve-delete trigger.

    #1656048 (Bug #88953)
        Removing the old add activity endpoint and moving it to API only.
        Allow non-admin users to create their own events

    #1655197 (Bug #94135)
        Silence notifications when specified

    #1654199 (Bug #95056)
        Delayed comment notifications were always seen as comment edits

    #1654149 (Bug #93971)
        Fixing the username and email wrapping problem on the user page.

    #1653515 (Bug #93743)
        Fixing the Group vote icon when the review is updated and the
        vote becomes stale. This is now reflected in the review page.

    #1652700 (Bug #94626)
        A description comment should indicate that it was made on a
        description

    #1652689 (Bug #94206)
        Changing the wording on the history tab when a user replies to a
        comment. It used to read "5 days ago bob commented on review
        23456801" after this change it will read "5 days ago bob replied
        to a comment on review 23456801"

    #1651426 (Bug #94507)
        Removing the likes from a comment when the content of the comment
        has been edited.

    #1644280 (Bug #94815)
        Don't remove the inReplyTo header from an email if this is the
        first email in a thread. This header shouldn't be needed in the
        first email, but removing it seems to cause problems for
        Thunderbird, in that it fails to thread correctly if it's missing.

--------------------------------------------------------------------------
Bugs fixed in 2018.1 Patch 2

    #1699267 (Bug #96277)
        Diff is not shown after garbled characters.

    #1691958 (Bug #95287)
        Prevent unwanted mail notifications when role on a project cannot
        be determined.

    #1688445 (Bug #096053)
        If the Operating system does not have HTTP::Tiny installed for perl, 
        the Swarm trigger falls back to using Curl instead. The payload
        that was generated for the shelvedel, wasn't being attached to the
        curl request.

--------------------------------------------------------------------------
Bugs fixed in 2018.1 Patch 1

    #1659947 (Bug #95186)
        Fixing the Timestamp display time.
        Timestamp was displaying the wrong time and date on the review
        revision selectors.

    #1657813 (Bug #95127)
        Fixing the show more lines button at the bottom of a file.

        Instead of showing a few extra lines, it was mistakenly showing
        all of the lines to the end of the file.

    #1656932, #1657772 (Bug #95108)
        Fixing swarm-trigger.pl which was not handling extra parameters
        being passed to it. Also put some extra checks around the
        processing of the shelvedel event to ensure we do not empty a
        review by mistake.

    #1656897 (Bug #95056)
        Delayed comment notifications are always identified as comment 
        edits even if all comments are new.

        Fixed to only be identified as edits if there are any edited 
        comments.

    #1650837 (Bug #95016)
        Comments have lost their width restriction on rendering

--------------------------------------------------------------------------
Major new functionality in 2018.1

    #1635329, #1635613 (Bug #91807)
        Enhancing the delay comment email feature.

        By default the delay tick box is being removed and all comments
        will be delayed by 30 minutes/ 1800 seconds. If you want the
        comment emails to go out without any delay time, you can set the
        new config option to 0 and this will send notification immediately
        as comment is posted. Each time a comment is added or edited the
        delay time will be reset to 30 minutes. Once the last comment is
        add or edit and 30 minutes has passed Swarm will automatically send
        all delayed comments out in one email batch.

    #1623050 (Bug #89713)
        The review revision slider bar has been changed into two drop downs
        to allow users to select the two revisions they would like to
        compare. We have also introduced the additional options of being
        able to select the base revision of the review to diff against or
        the head revision of the review. Head was added to allow users to
        see if their review needs resolving.

    #1620890 (Bug #94101)
        Updating trigger to cope with the shelve-delete case. Adds a number
        of new arguments to the trigger script, since we have to pass CWD,
        CLIENTNAME, USERNAME and list of file arguments to the trigger now.

        Process the file arguments to ensure they are all beneath the same
        root. This requires checking for and removing any .. parts of the
        path, and changing the CWD to account for this.

        Some file arguments may be depot paths, and they will be passed to
        Swarm as depot paths. There could potentially (though unlikely) be
        a mix of local filenames and depot paths.

        Adding the following prerequisites to the triggers: Ubuntu:
        libjson-perl CentOS: perl-JSON Windows: Already included as part of
        Strawberry Perl.

        Perl CPAN module: JSON

    #1619070 (Bug #94103)
        The event listener for the delete shelf trigger. This will handle
        the event and remove file(s) from a review depending on if we are
        able to.

    #1614852 (Bug #94102)
        Adding the config option to enable shelf deletion detection. By
        default the trigger will be turned off with an empty states array.
        If you want to be able to delete files from specific review states
        add the state(s) you want to include in the states array. Valid
        review states are:'needsReview','needsRevision','rejected',
        'approved' We don't recommend that you add the approved:commit and
        archived states to the lists. The reason for this is that when you
        want to tidy up your own pending changelist you might mistakenly
        update the review with the deletion of all the files in the review.

    #1612156 (Bug #92266)
        Adding the ability to use the second factor authentication in P4D
        server within Swarm.

    #1604122 (Bug #64898)
        Adding threaded comments to Swarm.

        You can now create a threaded comment to a depth of 4. The thread
        depth can be increased or decreased at a system level.

Minor new functionality in 2018.1

    #1640585 (Bug #93964)
        Adding check for the server version to the trigger script. If the
        server version is too old, or not patched, then the shelvedel part
        of the trigger is not supported. To do this, we need to parse a
        %serverVersion% argument to the trigger, so that we can check the
        major and patch level.

        We have an array of patch levels for the versions we support.
        Anything older than 2016.1 is rejected, and anything newer than
        2018.1 will be automatically accepted. For versions in between we
        need to check the patch level (changelist number) for that version.

    #1639013 (Bug #91986)
        Allow user to choose if they see dates in Timeago format or
        Timestamp.

        This is selectable in the user’s settings page. By default we
        keep it as Timeago. If admins want to have timestamp as the default
        this can be done in the config.php file.

    #1638416 (Bug #94592)
        Spawn a child process on Windows because fork() is not available.

        Because Windows does not have a fork() it is necessary to spawn a
        child process to simulate what fork() would have done. To achieve
        this, a new undocumented option (-z) has been added, and the code
        skips past the fork call if -z was passed. The -z is added when the
        script is being run on Windows and is about to invoke fork().
        Instead of fork(), Win32::Process::Create() is called, launching
        perl.exe, passing the script and its options (and -z) as arguments.

    #1638315 (Bug #94753)
        Making the pop up text for mark comment/file read/unread clearer.

    #1637379 (Bug #94138)
        Add the action that caused the email to be sent to the mail header.
        This will help people filter emails based on the action that
        caused the email.

    #1636747 (Bug #94692)
        Adding a post and notify button to each of the comment boxes to
        allow users to send their comments immediately.

    #1635642 (Bug #94885)
        Added the ability to mark all comments as read.

        There are now two new buttons on the top bar of the review that
        allow you to mark all the comments within this review as read or
        unread.

    #1634173 (Bug #87696)
        Enhanced the file expanders used to show more context.

        You can now show 10 lines above or below current diff with two
        separate buttons, you can show all of the content between two diffs
        with a another button. Added the ability to show all lines to the
        top of file and to the bottom of file using two separate button.
        This allows users to control how much of the file they want to see.

    #1633429 (Bug #66560)
        Added the ability to mark a comment as read.

        This is very similar to how mark a file as read works and it just
        greys the comment out and limits the amount of space it uses while
        viewing the files within the review.

    #1631768 (Bug #94215)
        Removed the project sidebar opacity on member count.

        Swarm was making the members count on the sidebar on the home page
        fade out and when you get to large numbers of projects you almost
        could not read the member count.

    #1631061 (Bug #94478)
        Introducing a new configurable at the system level to change how
        many lines the "show more context" buttons can display.

        We default to 10 as this seems to be an acceptable number of lines
        to understand the context of the change.

    #1630870 (Bug #72451)
        Support added to allow users to comment on change and review
        descriptions.

    #1626174 (Bug #84866)
        The review history page now includes the version the activity
        happened against. This gives you a clear view of what happened on
        each revision of the review.

    #1623437 (Bug #94284)
        Adding the ability to add a pending changelist to a pre or post
        commit review.

    #1623067 (Bug #94329)
        Sort owners and members on the Group settings page

    #1621863 (Bug #77332)
        Adding the ability to clearly see if a review is post commit or pre
        commit review type. Displaying this by using the same icons as P4V
        uses for pending and committed.

    #1620929, #1621914 (Bug #88951)
        Project edit page should show members etc in alphabetical order.

    #1617842 (Bug #94058)
        Lift all api controllers to support v9

    #1617796 (Bug #68470)
        Front end work to show the ability to add a new changelist as
        append or replace.

    #1617441 (Bug #93962)
        Support append and replace within the changelist description in the
        same way we support #review.

        To append the files within your changelist to existing review you
        add #append-XXXX. This will add your files to that review.

        To replace the files within the review with your current files you
        can add #replace-XXXXX. This will replace all the files within that
        review with your files in your changelist.

    #1615959 (Bug #93959)
        Add support for a new parameter, mode=[append|replace] , to the
        /api/v9/reviews/:id/changes endpoint

    #1613704, #1613740 (Bugs #61441, #94007, #94008)
        UI for user review preferences and their application to changes and
        reviews

    #1613258 (Bug #67406)
        Make "My Projects" the default on the dashboard page.

        For authenticated users, who have not yet set their default
        projects view (my vs all), default to "my" projects rather than
        "all".

    #1613254 (Bug #94007)
        Allow diff/review preferences to be stored against a user

    #1610131 (Bug #93403)
        When you save a group/project you now remain on the settings page
        for them. This allows user to verify what they saved is what they
        wanted changed.

    #1605657 (Bug #87242)
        Prevent approval for a review with outstanding tasks (configurable
        to keep the old behaviour by default)

    #1604157, #1604159 (Bug #93423)
        Adding the ability to link back to P4 jobs when using JIRA.

        If you would like to be able to link your JIRA cards to P4 Jobs
        then this is possible by turning on “link_to_jobs” and also
        having P4DTG enabled.

    #1603058 (Bug #93314)
        Some work to get same functionality out of Swarm that p4review2 had
        that notified people if they had //depot/jobs in their review spec
        it would send them an email about it.

    #1602144 (Bug #92742)
        'My projects' to include projects that I own

    #1601014 (Bug #92626)
        Work to make the hover over user userid show full name.

    #1600771 (Bug #93578)
        Better support of charsets

Bugs fixed in 2018.1

    #1643364 (Bug #94581)
        p4 protects -m should not run for every comment

    #1642759 (Bug #94516)
        Eliminate unnecessary p4 search (1202) commands for project lists

    #1642187 (Bug #94803)
        Fixing an issue when the setting for “display_change_email” is
        disabled could result in an error about no email templates.

    #1639957, #1643301 (Bug #94674)
        Adding some loading status to the transition dialog to help user
        know that Swarm is still processing the work in the background.
        This helps prevent closing of the transition dialog when approve
        and commit happens and leaving swarm review in a "committing..."
        state.

    #1638383 (Bug #94508)
        Enhancing the email notifications for private projects.

        If the private project has unticked the send all members and
        moderators and email on review creation, then we ensure we do not
        include them.

    #1635695 (Bug #93926)
        Fixing an javascript error you could get when inputting text into
        reviews page search boxes.

    #1631631 (Bug #94502)
        Swarm was not sending emails out to reviewers of the review when
        the review was committed outside of Swarm.

    #1631630 (Bug #94170)
        Fixed an issue when you added a filename into a project branch
        mapping it could cause Swarm to not display the project.


    #1625385, #1626126 (Bug #94217)
        Fixed an issue were if you were to edit a group notification you
        would get an error about must have owner. This was fixed for older
        version of PHP that works differently.

    #1622116 (Bug #94327)
        The apple ⌘ key was mistakenly being escaped and showing html
        encoding in the shortcut dialog

    #1621915, #1623987 (Bug #92244)
        Treat inline `code` the same as block ```code``` in linkify.

        Otherwise, comments with `<` or other HTML entities are escaped and
        become &lt; in the rendered text.

    #1619592 (Bug #90815)
        Trim _ and * from words in linkify code to handle markdown better.

        When encountering something like _word @user_ the linkify code
        would not recognize the @user and would produce unexpected results
        (link would be HTML escaped and it had the wrong reference). This
        change strips underscores and asterisks from the word to better
        recognize the @mention. The drawback is that users and groups
        cannot have trailing _ and * and still be referenced correctly.

    #1617772 (Bug #94140)
        Remove the 'Check all' from user preferences

    #1617736 (Bug #)
        Updating the compiled latest patched p4php against 2016.2 API

    #1617547 (Bug #93623)
        Special case _url config values and do not lowercase their values.

        The customer states that when the avatars URL values are retrieved
        from the config, they are lower cased. This is problematic. However,
        it seems that Swarm wants to lowercase values for easy comparison.
        As such, special case any config value whose path ends with _url.

    #1615266 (Bug #90604)
        Avoid URI limits in reviews request for users with many projects.

        The reviews page was sending every project identifier that the user
        was a part of on the URL, and exceeding the default Apache
        LimitRequestLine value. This change replaces that filter-value with
        a new "projects-for-user" along with a user ID, which the reviews
        controller then replaces with the actual project IDs. This avoids
        any drastic changes to the code.

    #1612538 (Bug #)
        Fixing the mistakenly logging users out when closing any modal
        dialog. Also noticed the success.png wasn't been found when in
        partial mode so resolved this.

    #1604561 (Bug #93687)
        Fix email notifications for opt_in users that have no role

    #1604163 (Bug #93753)
        Tooltip adjustments to show id and full name

    #1604100 (Bug #93491)
        Adjust the wrapping for id/description columns in dashboard.

    #1603741 (Bugs #93764, #93788)
        Improved the display of group names that are long. They now wrap to
        allow display of the other information on the page.

    #1602047 (Bug #90443)
        Do not show moderator role on the dashboard if the review cannot
        be approved yet.

    #1600772 (Bug #91741)
        When calling projects API with option fields readme should only
        return when listed

    #1600757 (Bug #93620)
        User name tooltip to be consistent

    #1596793 (Bug #90087)
        Improved the scrolling of review transition dialog, when you have
        lots of different job status.

    #1597534 (Bug #89230)
        Fixing Inline comments not breaking when lines are very long

--------------------------------------------------------------------------
Bugs fixed in 2017.4 Patch 2

    #1622027 (Bug #94142)
        Fixed the scenario when a user is added as a reviewer but is not a
        member or follower of the project, the user will not receive the
        commit email. The user will now receive an email.

    #1621905 (Bug #94371)
        Updated the P4PHP binary included with Swarm to fix an issue in
        the API. Users without a password were rejected because crypto
        exchange expects a token. Users without a password can now log in
        to Swarm.

    #1621582 (Bug #94228)
        Improved handling of comments with no revision number. Now when
		you click on a comment without a revision number the latest
		revision of the review is opened.

--------------------------------------------------------------------------
Bugs fixed in 2017.4 Patch 1

    #1607458, #1608076 (Bugs #93764, #93806, #93928)
        Improve long Group/Project name wrapping for Microsoft browsers.

    #1606326 (Bugs #93863, #93901, #93905)
        Fixes to the JavaScript to better support Microsoft browsers.
        - Unable to make a default reviewer a required reviewer via the
          branch drop-down setting dialog on Internet Explorer.
        - No drop-down dialog appears when '+Add Branch' button in project
          settings page is clicked on Internet Explorer.
        - 'Map' is undefined JavaScript error on Internet Explorer 10.

    #1605687 (Bug #93687)
        A non-member of a project does not receive email notifications
        when a review spec is setup and honor_p4_reviews is true

    #1605669, #1609142, #1610151 (Bug #93846)
        Projects with a member project can fail notifications

--------------------------------------------------------------------------
Major new functionality in 2017.4

    #1590566 (Bug #92193)
        Add support for default reviewers at the branch and project level.

	#1587857 (Bug #92780)
        Adding the ability to @@mention a group auto adds them to the
        review participants list. If you @@* it adds the group as require
        all. If you @@! it adds the group as require one.

Minor new functionality in 2017.4

    #1595196, #1595203 (Bugs #93504, #93506)
        API endpoint to get a list of default reviewers for a given 
		changelist ID

    #1594153 (Bug #90292)
        Provide a configurable to enable swarm to support more encoding
        types.

    #1593079 (Bug #93415)
        Add an api endpoint to provide projects affected by a changelist

    #1592102 (Bug #92839)
        Show dashboard role as reviewer if user is in a quorum group that
        has met criteria

	#1592081 (Bug #92596)
        Prevent use of moderators-groups as a project in the API

    #1591817 (Bug #93350)
        Give the author change block a right margin, used the same value as
        tasks so that the spacing will be the same with change review author
        disabled

	#1591640 (Bug #93062)
        Create an API for changes including default reviewers

    #1591638 (Bugs #92195, #92196)
        Project API request to include default reviewers for version 8

    #1590126 (Bug #92991)
        Adding the ability to remove all followers from your own user page
        or another user's page if you are admin or super.

    #1589583 (Bug #93325)
        Project display name should be shown in auto-suggest

    #1588528 (Bugs #92402, #93239)
        "Show More Context" row no longer appears at the end of the file 1.
        Re-instated the 'Show more' bar 2. Improved the messaging when
        diffs are truncated

    #1584512 (Bug #89741)
        Configurable for test disable on approve and commit

Bugs fixed in 2017.4

    #1595827 (Bug #93554)
        Fixing performance issue with projects fetching readme and searching
        too deep down the depot tree structure.

    #1595336 (Bug #91034)
        Fixing the issue when swarm is running against a Windows P4D server
        the unzip can fail due to camel case protections.

    #1594753 (Bug #93508)
        Dashboard performance improvements. Modified a few of the dashboard
        queries to make them more efficient and improve loading speed.

    #1593203 (Bug #93389)
        Improved the Upgrade of swarm key data to not update the review
        last updated date when issuing the upgrade endpoint.

    #1592554 (Bug #92922)
        Prevent linkify parsing off the end of code blocks and ignoring
        subsequent @mentions

    #1592082, #1593106 (Bug #93412)
        Wrap items in the project sidebar rather than let them overflow the
        dashboard. Applied the existing .force-wrap class to the sidebar
        project attributes

    #1591346 (Bug #92570)
        Don't offer the current group in the members dropdown

    #1589558 (Bug #92781)
        Putting Display name onto Groups and projects.

    #1589542 (Bug #93327)
        Observations on Show more Context fixes

    #1587990 (Bug #93312)
        Fix to remove the $this->p4 from the closure and pass the
        connection in instead.

    #1587727 (Bug #93096)
        Fixing an issue where the change will return an event of mail with
        no template. This meant it was causing an ERR about no valid
        template.

    #1584513 (Bug #93059)
        Reduce the amount of calls to fetch the timezone of the connected
        P4D, now cache the timezone to help reduce performance impact.

--------------------------------------------------------------------------
Major new functionality in 2017.3

    #1576709 (Bugs #92887, #92890)
        Expand projects into groups then groups into members when the group
        is not using a mailing list.

    #1574656 (Bug #92805)
        Removing the users avatars from the review page if they are a
        member of a group which is a participant on a review.

    #1573690 (Bug #92461)
        Now only show group avatars in project sidebar instead of exploding
        the group out into individuals.

    #1573175, #1574693 (Bug #92650)
        Update the api version docs to v7 and allow anonymous /api/version.

    #1570712 (Bug #92203)
        UI for group notification settings.

    #1569595 (Bug #92681)
        Make approve and commit take account of groups.

    #1569358 (Bugs #92635, #92720)
        When the current logged in user is a part of the review due to
        being a member of a group that is a reviewer, their menu items will
        be shown differently.

        Currently they will be shown the menu items of: Vote Up, Vote Down,
        and Join Review.

        The reason they get "join review" is due to them as individuals not
        being a participant until they cast their vote.

        If they click the "Join review" button their menu items become:
        Vote Up, Vote Down, Disable Notification, and Leave Review.
        
        Disable Notifications will prevent them from getting notifications
        sent directly to them for this review, though they will still get
        notifications sent to a group mailing list (if there is one defined).
        
        Leaving the review will clear any of their votes and remove them as
        a direct participant. However, they will still be a member of the
        review via the group.

    #1569194 (Bug #92206)
        Allow group_notification_settings to be saved in group metadata.

    #1569165 (Bug #92205)
        Update notification settings to work with groups.

    #1567846 (Bug #92190)
        Added groups to be included in the @mention list and only show
        groups if you start typing @@

    #1567844 (Bug #91173)
        Mentioning a group in a review description using @@(*|!) will link 
        to that group and add it as a participant.

        @@ = add the group as a reviewer @@* = add the group as all
        required reviewers @@! = add the group as one required reviewer.

    #1567037 (Bugs #92229, #92230)
        Improved the dashboard to now include actions you as an individual
        have to take due to being apart of a group.

    #1563741 (Bugs #92149, #92179)
        Ability to view groups as reviewers from the API request. Each
        group will be prefixed with 'swarm-group-'GroupID. The GroupID is
        the perforce group name.

    #1563243 (Bug #92198)
        Groups can now be viewed on the review page alongside the
        individual’s reviewers that have been added. The group reviewer
        has a menu to show all the direct and subgroup members. Users also
        have the ability to change the group role on the review from
        optional, Require One or Require All. The group avatar will show
        the correct vote state based on the members of that group.

    #1561671, #1563195 (Bug #92201)
        Groups can now be added as reviewers to a review.

    #1557483 (Bug #92493)
        Groups now have the ability to use an avatar in the same way users
        can.

    #1553115 (Bugs #92207, #92247)
        Added the ability to change the email address in the group settings
        page.

    #1552877 (Bug #92208)
        Added the ability to add a group email address via the API.

    #1548638 (Bug #72452)
        Configurable added to set the default sort order on the reviews
        page. This can be set to 'updated' or 'created', to list reviews
        by most recently activity first, or by most recent created date
        first.

    #1546810 (Bug #91718)
        Changing the roles filter of review search, so user can filter
        reviews according to whether I am "just an Author", "a Participant
        but not an author", or "a Participant or Author".

Minor new functionality in 2017.3

    #1573194 (Bug #92809)
        Dynamically manage the overflowing and scrolling of the edit
        reviewers modal; so that autosuggest never disappears but lots of
        reviewers still allows scrolling to the form buttons.

    #1571516 (Bug #92586)
        Autocomplete allows * or ! before the username or group in at
        mentions.

    #1569931 (Bugs #92511, #92594)
        Adding additional global notification settings.
        - review_opened_issue
        - review_required_vote
        - review_optional_vote

        These can only be set at a global level.

    #1566967 (Bug #92633)
        Removing the bell icons from the groups page.

    #1560222 (Bug #90023)
        Better distinction between users and groups by showing a title
        above each grouping.

    #1557324 (Bugs #90018, #92491)
        Enhanced the user page to show the user's email address on the
        sidebar.

    #1553022 (Bugs #91719, #92429)
        Add additional Notifications for Global and User:

        - I am the moderator of a review, and files in the review are
        updated.
        - I am the author of a review, and the review is committed.
        - I have changed the state of a review (should default to false).
        - I am the author of a review, and tests on the review have
          completed (tests have passed, or tests have failed).

    #1552908 (Bug #91999)
        The progress bar for the reviews page has been improved.

    #1551363, #1551811 (Bugs #92180, #92181)
        Update the API doc to include the moderators-groups as a field in
        the branches.

    #1549768 (Bugs #92172, #92174)
        Allow groups to be added as modertators in a project moderator
        branch.

    #1543562 (Bug #70512)
        Allow a deleted project to be undeleted with a curl request

    #1543281 (Bugs #86639, #92285)
        Add X-Swarm-Review-Id/Author headers to allow emails to be
        filtered and set utf-8 encoding.

Bugs fixed in 2017.3

    #1556959 (Bug #92529)
        Added some validation to ensure that project members where not
        being added to the notification list when a review was updated.

    #1553867 (Bug #92448)
        Added some handling around the reviews page fetching more records
        then it required to load the page.

    #1552791 (Bug #92432)
        Put some handlers in place to deal with unexpected character
        encoding that swarm did not handle. If Swarm does not understand
        the encoding will convert the character into ? to allow the show
        more button to continue to work

    #1550088 (Bug #92444)
        Fixed the review State Filters that was not working in IE11

    #1548609 (Bug #91969)
        Users interested in a project did not always get commit emails if
        opt_in_review_path is set

    #1542425 (Bug #92019)
        Fix to resolve the reviews not updating. The issue is due to
        workspaces having files in pending changelist when it should have
        been cleaned up.

--------------------------------------------------------------------------
Bugs fixed in 2017.2 Patch 2

    #1549954 (Bug #92444)
        Review state filters in the Reviews page on Swarm/2017.1
        and Swarm/2017.2 show a console error with MS IE11.

    #1550085 (Bug #92285)
        Re-instate MIME encoding of email headers removed
        after Swarm 2016.1.

--------------------------------------------------------------------------
Bugs fixed in 2017.2 Patch 1

    #1539964 (Bug #92340)
        Fixed an undeclared property which was failing when accessing 
		users fullname against no unicode enabled servers.

--------------------------------------------------------------------------
Major new functionality in 2017.2

    #1532256 (Bug #92061)
        Fix issues with display of limited diffs.

    #1529588, #1529647, #1533980 (Bugs #90654, #91642, #91650, #91769)
        Improve the user experience when reviewing large files. Two new
        configurables have been created to allow admins to tune and
        improve the page load time.

        Size of the file in bytes displayed in the browsing
        'files' array(
            'max_size'  => 1024 * 1024,
        ),

        Number of diffs shown before file is truncated
        'diffs' => array(
            'max_diffs' => 1500,       // maximum number of diff lines
                                       // without manual user override
        ),


    #1524707 (Bug #91782)
        Improve performance for the Vote up and down filter. This means
        the request only fetches reviews which the logged in user is a
        participant of. This helps limit the amount of data we have to
        process on post filter.

    #1524597 (Bug #91756)
        Introduce a new configurable to limit the number of files to be
        displayed.

        This configurable controls if 'Expand all' is available for
        reviews by specifying a file limit over which the option will not
        be available. 0 signifies always on.
        'reviews' => array(
            'expand_all_file_limit' => 10,
        ),

    #1523805 (Bug #91798)
        Zend have a built in cache class which helps improve load time of
        pages. We have configured Swarm to use the cache class loader.

    #1521677, #1524714, #1525522 (Bugs #91673, #91695, #91755, #91780, #91781,
    #91782, #91811)
        Removing the resetting of the FETCH_MAXIMUM which was causing us to
        fetch all the reviews and hit memory limits. This does cause the
        reviews page to do lots of Ajax calls to try and fill the page up
        if you have fewer reviews for X filter.

    #1520113, #1520876 (Bug #90952)
        Implementing the 'I have not voted' filter for reviews. This is to
        allow the user to get a list of reviews they are participating in
        and have not yet voted or their vote has gone stale.


Minor new functionality in 2017.2

    #1523878, #1524740, #1524624, #1533964 (Bugs #91833,#91834, #91835,
    #92130, #92145)
        Re-branding of product updated.

    #1531205 (Bug #91930)
        The comments filter now includes the author as a participant when
        fetching reviews.

    #1529997 (Bug #89066)
        Allow longer time to download a file - configurable value default
        to 30 minutes same as archive

        'files' => array(
           'download_timeout' => 1800, // Time allowed before download of a
                                       // non archive file will error default
                                       // 30 minutes (must be in seconds)
        ),

    #1528515, #1528516 (Bugs #87586, #89689, #90701, #90702, #91286, #91953,
    #92053)
        Removing the need for curl/wget in the swarm trigger script. This
        should simplify configuration and installation, especially on
        Windows.

        VERIFY_SSL - Defaults to 1, if 0 then will not verify SSL
        certificates, allowing self-signed certs to be used on a web
        server.

        Also now outputs the error reason if there is a non-200 response
        from the server, and checks to ensure that no content has been
        returned even if there is a 200 response. Since the Swarm endpoints
        don't return any content from a trigger call, if we see content
        then possibly we're not configured to talk to the correct web
        server.

    #1528166 (Bug #91240)
        Introduced a review cleanup script as example of how to tidy up
        reviews that may have many pending changelists associated with them.
        This can be found in the API section of the documentation.

    #1520123 (Bug #90855)
        Moving the activity stream to its own page if a readme.md is
        present or not disabled.

    #1520087, #1521604 (Bug #91627)
        Added feature to check if group tab is disabled. If it is disabled
        we remove groups from the search box.

    #1519006 (Bug #91670)
        Ensuring that shelved changes in Swarm only show the @mention users
        based on the mentions mode that has been set.

    #1519005 (Bug #91598)
        Upgrading Jquery to 3.2.1

    #1517927 (Bugs #91395, #91432, #91433, #91434)
        Making sure the mention mode for pages like reviews/changes and
        jobs have taken effect.

Bugs fixed in 2017.2

    #1533627 (Bug #79136)
        Fixing bug with trigger SSL verification, and making sure a ping
        command outputs any errors to the console.

    #1532234 (Bug #91857)
        Fix to make the state buttons on the reviews page sticky.

    #1532216 (Bug #91962)
        Corrected the display of file history where in some edge case
        integrations were being left off or displayed incorrectly.

    #1531115 (Bug #91839)
        Email threading not working correctly for outlook users. Corrected
        the threadIndex and added additional debug output.

        Also added new configurable to allow the threadIndex to be turn off
        or on.

        'mail' => array(
            'index-conversations' => true,
        ),

        Some mail application and servers can deal with the indexing
        themselves.

    #1530952, #1531161 (Bug #91866)
        When using the delay email (batching) it wasn't taking the
        configuration option 'notify_self'. This meant that the Author wasn't
        being added to the recipients list.

    #1530881, #1530904 (Bug #92033)
        Upgraded Zend to 2.2.10 due to PHP 5.3.3 compatibility limits.

    #1530040, #1532193 (Bugs #92002, #92003, #92004)
        Fixes for cleanup API return values both with and without the
        reopen parameter.

    #1530007 (Bugs #91417, #91612, #92141, #92159)
        Comments mentions and project owners/members search should use user
        full name.

    #1529630 (Bug #89986)
        Improved the frequent calls to the groups command, which now uses a
        local cache to help speed the request up. This also helps lower the
        number of Perforce commands Swarm issues.

    #1529623 (Bug #91913)
        If a review author has been deleted we don't log this as an error when
        getting the review.

    #1529616 (Bug #91860)
        Fix review index storage when a review commit fails. If a review is
        approved:committed and it fails (perhaps due to resolution needed)
        the review state index remains at approved. This is because the
        indexes get updated before the commit runs. If the commit fails we
        should roll back to the previous state so the index value and the
        review agree.

    #1529602, #1529923 (Bug #91783)
        Fix the global search functionality that wasn't able to fetch data
        from the cache.

    #1526033 (Bug #91742)
        Fixed the mail module that would exit without warning if the Perforce
        user was deleted.

    #1523803 (Bug #91640)
        Fixed Unicode character issues searching full name.

    #1518979 (Bug #91549)
        Add some defensive code to cope with user clone errors.

--------------------------------------------------------------------------
Bugs fixed in 2017.1 Patch 2

    #1516348 (Bug #91548)
        Dashboard incorrectly showing user as Moderator.
        
    #1516683 (Bug #91510)
        URL to documentation from pending changelist dialog is not
        correct if Swarm is running on non-default URL root.
        
    #1517575 (Bug #91613, #91592)
        Comment boxes at the bottom of files are not visible, making it
        difficult to add comments in this situation.

--------------------------------------------------------------------------
Bugs fixed in 2017.1 Patch 1

    #1514634 (Bug #91503)
        Fix to documentation for the new notifications configuration.

--------------------------------------------------------------------------
Major new functionality in 2017.1

    #1507398 (Bugs #91013, #91014)
        Added User settings UI page for email notifications.

    #1504132 (Bug #90741)
        Adding new functionality that allows the automation of cleaning
        up user's pending changelist, if settings are enabled.

    #1502499, #1503697, #1504157 (Bug #89906)
        Added support for Global notification configuration.

    #1499167 (Bug #90426)
        Implemented the support to display Readme.md file for Projects.

    #1496945, #1508873 (Bug #86498, #90885)
        Added support for Markdown in comments. Markdown in comments is
        limited to syntax which doesn't break the flow of the page.

    #1493811, #1496152, #1496156 (Bug #90559, #90562, #90671, #90672)
        Additional review filters have been added to allow users to
        filter their reviews list based on: If they have commented on a
        review and if they have voted on a review.

    #1488307 (Bug #89886)
		Implemented Action Dashboard on home page to allow user to see
		what reviews require their action.

    #1485432, #1485462, #1489449 (Bug #86758)
        Added support for PHP7 in P4PHP and Swarm.

    #1481965 (Bug #89025)
        Adding functionality to change the author of a review.

        To enable this feature you need to change this to true.

        'allow_author_change' => false,

Minor new functionality in 2017.1

    #1510372 (Bug #91320)
        Added ability to disable and limit what markdown is rendered.

        Settings will be:
        
        'projects' => array(
           'readme_mode' => 'restricted' // Modes, "disabled", "restricted",
                                         // "unrestricted"
        );

        Disabled = means now markdown rendered at all. Restricted = Will
        render default markdown but not html elements Unrestricted = Will
        render everything it can in the file with no restrictions.

    #1508474 (Bug #90730)
        Remove old legacy trigger scripts.

    #1507806 (Bugs #90584, #90759)
        Configurable project sort order for 'All projects' on the home page

    #1507137 (Bug #90795)
        Changed the Reviews page a little to allow it to display a reviews
        with lots of reviwers on it. Also made it so the actionable buttons
        like Tasks, Author change and Reviewers buttons go onto a new line
        once a screen size is too small.

    #1503645, #1503754, #1503714 (Bug #91012)
        Implemented user notification settings storage

    #1499644 (Bug #90703)
        Adding the ability to cleanup the users pending changelist related
        to a review when committing the reviews.

    #1496624 (Bug #90637)
        Remove the fullname of users from the buttons when added to project
        so they don't look like the name is being truncated.

    #1496523 (Bug #90388)
        Changes to email headers.

        This change changes how email headers are constructed for reviews.
        Previously we were assigning random timestamps to emails coming out
        of reviews, this resulted in users not being able to filter the
        email notifications coming out of Swarm.

        Main principle is - all messages should have proper Message-ID and
        In-Reply-To headers - if this is a new review then the email should
        only have a Message-ID. All messages coming out of a review should
        have the header of In-Reply-To pointing to the message-ID of the
        first email in the chain (new review being requested). All comments
        to the review itself should be accumulated under one thread, all
        comments to a specific line in a file in a specific version should
        have their separate thread. All other messages - actions taken on
        the review - should have a distinguishable value ie.
        "action-voted_up" and a timestamp to avoid confusion between
        messages.

        The part after "@" sign should be configurable and default to
        'swarm'.

    #1492280, #1498080 (Bug #88949)
        Enhance Swarm RESTful API to allow retrieving a list of inactive
        reviews and archiving the inactive reviews in bulk.

    #1492207 (Bug #87136)
        Autosuggest dropdown with users for @mentions in comments.

        Added jquery plugin to enable user dropdown in comments on
        files/reviews/jobs with new configuration options: 'mentions' =>
        array( 	'mode' - either global(default)/projects/disabled
        	'usersBlacklist' - array of user id's that should not appear on
        the dropdown

        It uses a two-fold approach - if we have enabledAll - all comment
        boxes in all pages in Swarm - the data is fetched from js with an
        ajax call and then passed down to the plugin. If we have
        enabledInProjects only comment boxes in reviews that are part of a
        project will have a list of users that are either a participant on
        that review or a member of a project.

        By default the dropdown is disabled.

    #1490507 (Bug #90062)
        Review Participants API endpoint

        This endpoint will enable listing, adding, removing, and updating
        participants on reviews.

        It will also allow the API caller to define required participants
        and place votes.

    #1488227, #1489225 (Bug #89362)
        Review page project filtering enhancement to maintain consistency.
        Added an input field on the projects filter.

    #1486271, #1490338 (Bug #89614)
        Updated P4PHP to 2016.2 release which contains a fix for not
        requiring login -a.

	#1485328 (Bug #89885)
        Action Review API to support action Dashboard


    #1480084, #1487008 (Bug #72450)
        Add option to sync change/review descriptions.

        If "sync_descriptions" was enabled and we have updated a change
        description on a changelist all previous changelists would have
        their description changed.

    #1479671, #1486253 (Bug #87275)
         Only show groups tab for super users.

    #1479414, #1486693 (Bugs #74561, #80804)
        Modify the message behaviour on commit failure.

        Previously we were discarding all messages coming out of p4 and
        passing down the first line of the message.

        Modify the behaviour to pass the whole message except the last line
        for jQuery to render. If message will have more than two lines use
        the extender to hide the additional output. It will pass down
        anything coming out of Perforce - so it will also pass any
        user-defined messages - like messages coming out of triggers - to
        the frontend.

    #1478138 (Bug #85037)
        Override expander to allow any part of the table cell containing
        the shortened description to be clicked.

    #1477010 (Bug #63571)
        Implemented a global 'ignore whitespace' button that toggles
        ignore off/on. Initially whitespace is not ignored - when you click
        the global button all files that were not ignoring whitespace and
        changed to ignore whitespace Similarly when you toggle the global
        button off all files ignoring whitespace are switched to not ignore
        whitespace

Bugs fixed in 2017.1

    #1510345 (Bug #76755)
        Fixed abstract API controller when the implementing controllers
        simply return null instead of a json model.

    #1510048 (Bug #90177)
        Fixed an issue to allow users the ability to unlink jobs from a review.

    #1509403 (Bug #91047)
        Swarm PATCH API endpoints - cannot unset array based parameters

    #1508938 (Bug #91015)
        Differentiate mail instance name when in a multi server environment

    #1507768 (Bug #91100)
        Tweaked the cache reader to handle failures from fetching all
        users better and improved performance.

    #1506970 (Bug #90564)
        Increased the API version to V6 for all the new API endpoints.

    #1503190 (Bug #90941)
        Handle if dm.keys.hide is set and fetch review data as the user
        running Swarm and validate the normal permissions with the user
        requesting the zip.

    #1500863 (Bug #90690)
        The Swarm home page was giving a bad link for RSS feeds. Fixed the
        javascript that handled this.

    #1500020 (Bug #90785)
        Enhanced the archive API endpoint to allow Super user to change the
        transition of the review state using the Bulk review archive API
        endpoint.

    #1499188 (Bug #90783)
        Improved the date validation for inactive search as well as archive.

    #1497510 (Bugs #90717, #90733, #90735)
        It introduces a configuration option to restrict the number of
        action items on the dashboard (defaulting to 1000).


    #1496055 (Bugs #90560, #90586)
        Improved the review description formatting to break at new lines.

    #1494480, #1497544 (Bug #90307)
        If your P4 admin is mis-configured or its ticket has expired,
        will result in the user now getting a meaningful error message.

    #1493869 (Bug #89988)
        Bookmark reviews filter.

        As we cannot reliably do the same thing for all browsers a decision
        has been made to include a button on the reviews page to save the
        url - this button should have a tooltip informing users of an
        option of saving the current filters by using the browsers built-in
        function to create bookmarks.



    #1492312 (Bug #87180)
        Fixing temporary file creation while handling ktext files.

        Trigger script was creating a file and trying to run a p4 print
        against an open file - which would understandably fail. The message
        returned was not helpful to the customer at all.

        Changed it so instead of creating a file it creates a filename that
        later is used with the print command - should fix the problem and
        it should now be possible to recalculate digests for unexploded
        ktext files.

    #1492205 (Bug #90376)
        Fixing the issue where the project typeahead would auto close when
        clicking inside the input. This was due to the multiPicker checking
        if authenticated first then dropping out instead of preventing the
        closure of the input box first. This has only been introduced
        because no multipicker was accessible unless logged in.

    #1491907 (Bug #90380)
        If you have navigated to a private project and decided to logout,
        you will now be redirected to the home page instead of a 403 error.

    #1491863 (Bug #90217, #90218)
        Make the global whitespace buttons stick between pages.

    #1490000 (Bug #89983)
        Filter reviews by participant role only Filter reviews by
        participant role only On the 'Reviews' page selecting "I'm a
        participant" should not also return all the views I authored

    #1489999 (Bug #80507)
        We should attempt to line break long descriptions to prevent the
        whole description from appearing in bold.

    #1487039 (Bug #90243)
        This change prevents the user from adding a non-committed change to
        a review from the 'Add commit...', 'Already committed...' dialogs.

    #1484420 (Bug #89829)
        Defensive code for trigger script to ensure argument are defined.

    #1483093, #1490001 (Bug #89908)
        Perforce admin users should not see all projects Perforce super
        users should see all projects Perforce admin users should not see
        all projects; they should be subject to permissions when it comes
        to project filtering

    #1481962 (Bug #80366)
        Close our confirm popover when clicked outside.

        Before, the only way to close the popover was by clicking on the
        'Cancel' button inside it. This could be problematic when the DOM
        structure changes as it could cause the popover being visually
        detached from the element.

    #1481527, #1482019, #1483208 (Bug #89801)
        PHP 7.0-compatible .htaccess and build.xml files

    #1480955 (Bug #89891)
        Make sure if someone updates a review, they get properly credited
        for the work.

        Previously if user 'foo' created a review, all updates to that
        review would be credited to that user. This should make sure anyone
        who at any point updates the review with a new shelf, is credited
        for the work, instead of the review author.

    #1480702 (Bug #88630)
        Show a better error for invalid group name created via the API

    #1480070 (Bug #89622)
        Allow owners to delete a project without needing to be a member

    #1479660 (Bug #65237)
        Make branch id in sync with branch name

    #1474448 (Bug #89662)
        Fixed a bug where review version slider was always rendered in
        scrolling mode if review page was loaded with 'Files' tab not
        active.

--------------------------------------------------------------------------
Major new functionality in 2016.3

    #1467868, #1471434 (Bug #87694)
        Implemented horizontal scrollbar for the review version slider.

        The scrollbar appears if the number of revisions is so high that the
        distance between revision nodes would be smaller than 30 pixels.

        Along with the scrollbar Swarm also shows left/right buttons beside
        the scrollbar to visually indicate that there are more revisions on
        the plot that cannot all fit in the visible scroll area.

    #1467839, #1471273 (Bug #87137)
        Users can opt-out from receiving notifications from a specific
        review without leaving the review itself. The user receives
        notification if someone @mentions them again, but otherwise all
        activity notifications are disabled.

    #1464475, #1467862 (Bug #76662, #89337)
        Added a new Tasks dialog for Reviews, filterable by reporter and task
        states (Open, Addressed, Verified).

    #1462877, #1468505, #1469467 (Bug #89076, #89487)
        Swarm Comments API:

        - New filters when listing comments:
            - ignoreArchived (boolean)
            - tasksOnly  (boolean)
            - taskStates (array of strings: comment, open, addressed, verified)
        - Results can be limited to specific review versions using the new
          context[version] filter when listing review topics.

        The API version has been bumped to V5 to accommodate these changes.

    #1460511, #1461108, #1466651, #1467799, #1467866, #1468376, #1471350
    (Bugs #67282, #89145, #89146, #89209, #89242, #89384, #89492)
        Added a button to download the contents of Reviews and Commits
        as .zip archives.

    #1458591 (Bug #87390)
        Added an option to view only comments attached to the current
        review version.

    #1452353, #1453328, #1464507 (Bugs #86857, #88891)
        Added feature to filter reviews by a specified user.

Minor new functionality in 2016.3

    #1467904, #1471347 (Bug #89151)
        When a project is converted from Public to Private, followers are
        removed to prevent them from accessing the project and receiving
        project notifications. A warning to this effect is displayed when a
        project has existing followers and the 'Private' checkbox is checked.

    #1464600 (Bug #87260)
        Add a config option to control the default "ignore whitespace"
        setting for file diffs.

        $config['diffs']['ignore_whitespace_default'] can now be set to true
        or false to control this behaviour.

    #1464415 (Bug #79156)
        Add hyperlink for review on Commits page.

    #1462721 (Bug #78162)
        Configuration option ('mail' -> 'notify_self') allowing users to
        receive emails for their own comments.

    #1462538 (Bug #89067)
        Include a call to cleanFiles() in updateFromChange() - this should
        help Swarm keep better track of its managed workspaces.

    #1459119 (Bugs #70655, #88082)
        Update user profile pages to display more information about project
        membership.

    #1453538, #1467872, #1467881 (Bug #67131, #89340, #89371)
        Added the ability to display line endings (CR, LF, and CR+LF) along
        with other whitespace characters.

    #1462197, #1467459 (Bug #72504)
        Adding a 'My Projects' entry to the project filter drop-down based
        on customer request.


Bugs fixed in 2016.3

    #1471099 (Bug #89514)
        The "Edit Reviewers" dialog now requests a fresh list of reviewers
        from the server when it opens.

    #1470023 (Bug #89544)
        Eliminated some PHP notices and warnings when Swarm is processing
        review commits.

    #1467769, #1467783 (Bugs #77869, #79019, #85255)
        Improvements to Swarm's handling of case-insensitive P4D instances.

        - Fixed a problem where on a case insensitive server you can end up
          with duplicate reviewers.

        - Fixed a bug where a user could approve their own review
          on a case insensitive server.

    #1467529 (Bug #70431)
        Leave files expanded when switching between review versions.

    #1466334 (Bug #88952)
        Tweaked searching in reviews queue to include records with literal
        ID match in results.

    #1464587, #1465462, #1467647 (Bug #85143)
        Swarm now treats users and groups containing '/' with more care.

    #1464505 (Bug #71838)
        Project followers count shown in the tooltip on the home page is now
        more accurate.

    #1455427 (Bug #87983)
        CSS update to help make it easier to scroll certain files in
        diff views.

    #1455374 (Bugs #88652, #88724)
        Migrate threejs from r64 to the most recent version r81.

    #1452571 (Bug #87759)
        Updated Review listener to lock processing the review task via our
        advisory record lock.

        This should eliminate a race condition where 2 processes (2
        different workers) are trying to process the same review task,
        which can for example happen when a review is requested from P4V.

    #1452069 (Bugs #84131, #86502)
        Activity stream on the user's Profile page now works with usernames
        containing "\", such as "foo\bar".

    #1449548 (Bug #88141)
        Improve load time of Changes page.

--------------------------------------------------------------------------
Major new functionality in 2016.2

    #1438253
        New features in Swarm API V4:

        - Private Projects support
        - Support for File-Level and Line-Level Inline Comments

    #1437756, #1438482, #1441898, #1444540, #1444540 (Bugs #87883, #88471,
    #88548)
        The Swarm Comments API now supports making file-level and
        line-level inline comments on changes and reviews.

        By specifying the new parameters "context[rightLine]" and
        "context[file]", API clients can now add line-level comments in
        Swarm reviews and changes. Specifying only "context[file]" will
        add a file-level comment.

        The parameter "context[version]" can also attach the comment to a
        specific review version (otherwise it defaults to the latest
        version). To apply the comment to the left side of the diff, use
        "context[leftLine]" instead of "context[rightLine]".

        Swarm attempts to build the "context[content]" value itself, but
        you can optionally provide the five lines of diff output for the
        line-level comment yourself. This is used in the Swarm UI to
        detect if the code has been modified since the comment was placed,
        and will render the "old" code as a preview on the comment.

    #1436048, #1437222, #1437569, #1437686, #1437750, #1437752, #1438054,
    #1438237, #1439324, #1440324, #1440706, #1444542 (Bugs #87098, #87729,
    #87730, #87930, #87994, #88029, #88132, #88360, #88402, #88418, #88523)
        Swarm now supports the concept of "Private Projects". These are
        projects that are only visible to Administrators, Super users,
        Project Owners, Project Members, and Project Branch Moderators.

        The underlying files are still visible in P4D, unless protections
        are put in place to hide the files from non-project-members.

        Private projects can be visually distinguished from regular ones
        by the "Closed Eye" icon that denotes limited visibility.

        Swarm attempts to hide the reviews, changes, activity, and comments
        attributed to Private Projects in various places, such as the list
        of changes on jobs, and the comments API.

        If reviews, changes, activity, or comments are related to both a
        private project and a public project, they are visible to users
        as though they belonged only to the public project.

        Reviews with no projects attached are assumed to be public.

        Change pages do not show request/view review buttons if the change
        is associated to a review that is not accessible by the current
        user, or if the resulting review would not be visible to the user.

        Private Projects cannot have "Followers". Setting a public project
        to private will conceal the existing unused followers list. Setting
        it back to public will re-enable the followers.

        Email notifications are modified for private projects. Links to
        private projects are filtered out of change-commit and review
        email notifiactions.

        Important: When setting boolean values in the API (such as the new
        "private" flag for private projects), form-encoded requests require
        using "0" or "1" instead of "false" or "true". The string "false"
        is considered non-zero and is implicitly (and confusingly)
        converted to a "true" value.

Minor new functionality in 2016.2

    #1440162 (Bug #87991)
        Group name validation now performs more thorough server-side
        validation.

    #1438479, 1439663, #1439742 (Bugs #88400, #88536)
        Extended sanity check in index.php to allow validation of Swarm
        configuration file.

        This should produce nicer errors if values for these options look
        invalid.

        At the moment, this handles 2 cases:
        - show error if config.php doesn't return array
        - show error if short_links are mis-configured
          (i.e. ensure that [environment][external_url] is set if
          [short_links][external_url] is set).

    #1438069 (Bug #87622)
        Added [short_links][external_url] option to allow specifying custom
        scheme and/or port for generating short links.

        This setting is only honoured if [environment][external_url] is
        also specified, otherwise Swarm might not be able to resolve the
        short links to correct URLs.

    #1439046 (Bug #88287)
        Change the placeholder of 'key=value' to 'property=value' in
        project edit page.


Bugs fixed in 2016.2

    #1446331 (Bug #88629)
        ThreeJS fixes for Base URL support when rendering 3D models.

    #1438201 (Bug #88438)
        Minor UI tweak on groups overview page to not show a tooltip with
        'You are not a member' on users count badge for anonymous users
        (they are always non-members).

    #1437684 (Bug #87644)
        Comments API: Fixing an internal server error when listing comments
        on an invalid topic.

    #1437356 (Bug #87210)
        Group descriptions are now properly shown in global search.

    #1437317 (Bug #87851)
        New warning popover on project save shown when we detect that
        the user might not be able to edit the project after save.

        Additionally, project form buttons are disabled when the popover is
        shown.

    #1434985 (Bug #88326)
        Fixed a bug where adding job(s) for changes may not have worked if
        Swarm is running under a Base URL configuration.

--------------------------------------------------------------------------

Major new functionality in 2016.1

    #1349976, #1354369, #1359795, #1363946, #1365396, #1369116, #1371461,
    #1372479, #1372656, #1372707, #1373228, #1374179, #1374273, #1375065,
    #1375073, #1375075, #1375228, #1375498, #1375504, #1375648, #1375649,
    #1375718, #1376051, #1376062, #1377591, #1378119, #1378785, #1378791,
    #1379330, #1383350, #1385018, #1385382 (Bugs #84966, #84967, #84968,
    #84969, #84971, #84974, #84975, #84976, #84977, #84978, #84979,
    #84981, #84982, #84983, #84984, #85311, #85602, #85914, #86004,
    #86059, #86121, #86131, #86232, #86263, #86274, #86372, #86449)
        Added support for managing user groups in Swarm.

        You can now view, list, search, add, edit and delete groups.
        Each group can have notifications enabled so that members
        of the group get emails anytime another member of the group
        creates a review or commits a change.

        When viewing a group you may see activity performed by any member
        of the group and reviews created by any member of the group.

        When listing groups, groups that you own or are a member of
        appear first, groups with notifications enabled appear second
        and lastly, groups are ordered by name.

    #1334616, #1334641, #1334707, #1334746, #1336388, #1336866, #1363026,
    #1365608, #1368601, #1380898 (Bugs #84462, #85188, #85402, #85411)
        Users can like comments. At the bottom of each comment Swarm now
        displays the number of likes and a heart icon. The icon can be
        clicked to 'like' the comment.

        When a comment is liked, Swarm records the activity and sends an
        email notification to the author of the comment.

    #1325760, #1330654, #1338383, #1349339, #1353543, #1353982, #1354643,
    #1356548, #1356781, #1359595, #1363405, #1374135, #1374751, #1374758,
    #1375435, #1375931, #1377876, #1378137, #1379283, #1383321, #1383679,
    #1385021, #1385190 (Bugs #76774, #84359, #84458, #84852, #85003,
    #85010, #85129, #85307, #85391, #85492, #85537, #85570, #85620,
    #86060, #86119, #86225, #86350)
        Added version 2 of the RESTful API (ie. /api/v2/).

        Version 2 adds the following functionality: list activity, list
        groups, fetch a group, create a group, update a group, delete a
        group, fetch a project, create a project, update a project,
        delete a project, transition a review and commit a review.

Minor new functionality in 2016.1 Service Pack 1 (since 2016.1.1/1400199)

    #1429617 (Bug #87938)
        Administrators may now set $config['environment']['external_url'].

        This setting allows generated URLs to point to a custom Swarm host,
        including a specific schema and port number, in case Swarm is being
        run in a complex environment.

        Example: 'external_url' => 'https://swarm.example.com:8443'

    #1416420 (Bug #87634)
        Increasing Swarm API version to "v3" because of new functionality.

    #1412045, #1417249, #1427139 (Bugs #79296, #86783, #87913, #88054)
        Comments API added which allows users to list, create, and
        edit comments through the Swarm API.

        This also enables flagging comments as tasks and archiving of
        comments.

        In addition to the comment "body", the parameter "topic" is
        required when creating a comment, and should look like this:

        - For changes:  changes/1234
        - For reviews:  reviews/1234
        - For jobs:     jobs/job001234

        Comment attachments, votes, likes, and file- and line-level comments
        are not supported in this initial version.

    #1417855 (Bug #86453)
        Show the group id below name on "Groups" listing page if they
        differ.

    #1417297, #1429100, #1427946, #1429616, #1430908, #1434985 (Bugs #85030,
    #87887, #88128, #87622, #88326)
        Make Swarm behave more consistently when using a BaseURL
        configuration.

        Under the 'environment' configuration key, a new 'base_url'
        key allows you to define which directory Swarm lives in. Some
        web server configuration changes are necessary to ensure that
        Swarm is actually reachable at the defined Base URL.

        Additionally, for calls to $.ajax() that do not need explicit
        baseURL logic, a new option has been added to the prefilter.
        You can specify 'skipBaseUrl: true' to avoid double-encoding
        of URLs.

    #1400125 (Bugs #86718, #86719)
        Added 'worker.loop' event fired periodically during the worker
        lifetime cycle (before the task event).

Minor new functionality in 2016.1

    #1382157 (Bug #84535)
        Improved performance for the Swarm blame button. Using a 20,000
        line test file, this change reduces the rendering time from
        ~60s to ~2s in Firefox and Chrome. Internet Explorer 10 improves
        from ~730s to ~8s.

    #1380885 (Bug #86341)
        Swarm now requires users to be logged in by default.
        To restore the previous behavior edit config.php and set
        array('security' => array('require_login' => false))

    #1379290 (Bug #84420)
        Added a "My Reviews" dropdown button to the Reviews page. This
        allows reviews to be filtered by those that you authored or those
        that you are participating in.

    #1374066 (Bug #86011)
        Added an option to disable Swarm's auto-registration of the
        P4.Swarm.URL property. The new option can be set in config.php:
        array('p4' => array('auto_register_url' => false))

    #1372999 (Bug #81339)
        The X-Frame-Options header is now configurable. This header
        controls when Swarm can be embedded in frames. To disable the
        header edit config.php and set:
        array('security' => array('x_frame_options' => false))

    #1368888, #1372690 (Bugs #85380, #85542, #86050)
        Improved performance with large numbers of users or groups.
        Testing with 10000 users and a comment thread with 100 comments,
        page load times were reduced from 7s to 250ms.

    #1361367 (Bug #86519)
        Updated language files for JA, KO and ZH.

    #1356521 (Bug #85314)
        Renamed config options for adding projects to be more consistent
        with other options. Existing settings are still honored.
        The 'security -> add_project_admin_only' option becomes
        'projects -> add_admin_only'. The 'security -> add_project_groups'
        becomes 'projects -> add_groups_only'.

    #1351847, #1352325, #1352326, #1356409 (Bug #81285)
        Updated the precompiled P4PHP binaries that come with Swarm to
        use P4API 2015.2/1340214.

    #1323467 (Bug #77725)
        To assist with troubleshooting email configuration problems Swarm
        now logs successful emails at the DEBUG log level.

    #1321796 (Bug #84384)
        Updated the project toolbar to look more modern.

Bugs fixed in 2016.1 Service Pack 1 (since 2016.1.1/1400199)

    #1433837 (Bug #88290)
        Project Add action now explicitly passes P4Admin to the blank
        project object.

        This fixes a rare situation where the browser could wait
        indefinitely when trying to load the Add Project form.

    #1427904 (Bug #87793)
        Search now works for SSL-enabled Perforce servers.

        The P4TRUST path in search.php is now set to the trust file
        under the data directory. This will work provided that Swarm
        has already auto-trusted the server and generated this file.

    #1427343 (Bug #77474)
        Fixed scaling issue when diffing images in specific versions of
        Firefox and IE.

    #1427066 (Bug #84960)
        Deleted projects are no longer shown in search results.

    #1425846 (Bug #88069)
        Fixed Projects API bug that accidentally erased member lists
        when editing a project and a list of members was not provided.

    #1418164, #1424799 (Bugs #87821, #87869)
        Fixed Groups API to ignore Swarm-managed project groups.

        Groups that begin with "swarm-project-" are managed by Swarm and
        should only be modified using the Projects API.

    #1417924 (Bugs #86836, #87590, #87591, #87617)
        Refreshing configure-swarm.sh to provide a better user experience.

        Also fixes the way configure-swarm.sh generates cronjobs so that
        they work better with Base URL configurations.

    #1417831 (Bug #84762)
        Removing oversized attachments is now possible. Previously there
        was a small problem with the way error state was detected that
        prevented clicking the "X" icon.

    #1416134 (Bug #85907)
        Searching by keywords fixed for values such as usernames that
        happened to contain a dot.

    #1414580 (Bug #85256)
        Improved validation of branches in project configuration. Swarm
        now produces a human-friendly error if the path contains null
        directories ('//depot/main//branch') or relative paths ('.' and
        '..').

    #1413309 (Bug #87640)
        Small fix for an anonymous function in the Emojify filter. Its
        syntax is now compatible with older versions of PHP.

    #1408661 (Bug #86458)
        Unknown fields passed to PATCH methods in the Swarm API are now
        silently ignored.

    #1400199 (Bug #86950)
        Older versions of the 'zip' command do not support the long flag
        '--symlinks', so Swarm now uses the shorter '-y' flag when
        archiving files for download.

Bugs fixed in 2016.1 Patch 1 (since 2016.1/1386839)

    #1399779 (Bug #87077)
        Fixed an XSS vulnerability where labels in search results were
        not being escaped correctly.

    #1398683, #1398909, #1399266, #1399692, #1400199 (Bugs #86663,
    #86950, #87024)
        Fixed multiple vulnerabilities involving symlinks. The system now
        refuses to preview, archive or delete the target of symlinks.
        Previously, symlinks could be abused to disclose data or remove
        files on the Swarm server that the user does not have permission
        to access.

        Note: The archive feature now requires the 'zip' command.
        Support for PHP's 'zip' extension has been removed. If the 'zip'
        command cannot be found, the archive button will not appear.

    #1394659 (Bug #86805)
        Fixed an XSS vulnerability where HTML in project descriptions was
        not being escaped correctly on the home page.

Bugs fixed in 2016.1

    #1380942, #1381570, #1384005 (Bug #85965)
        Fixed a bug that could produce two reviews for a single change
        under certain conditions. If a review was created using both the
        '#review' keyword and via the P4V integration, there was a race
        condition that could result in two reviews being created.

        Now Swarm temporarily locks each change before starting a new
        review. These locks are Swarm specific and only limit the creation
        of reviews.

    #1372509 (Bug #85872)
        Fixed a minor issue where double-clicking on project settings
        checkboxes could cause the checkbox to become out of sync with
        the form.

    #1365277 (Bug #84965)
        Fixed a bug where links to users in search results did not work
        for usernames that contained backslashes.

    #1359574 (Bugs #80107, #85454)
        Fixed a bug where ZIP downloads did not work on pending files.

    #1359011 (Bug #85423)
        Fixed a problem where URLs with no TLD were not linkified.
        Swarm no longer requires a TLD in the hostname to linkify a URL.

    #1355979 (Bug #81600)
        Reduced the severity of Basic Authentication failures to 'debug'.
        This should reduce noise in the log file.

    #1352055 (Bug #76075)
        Fixed an issue where the buttons on an archived comment could
        become hard to click if the window was too narrow.

    #1350832, #1351299 (Bug #85191)
        Fixed a bug where the user dropdown menu could be partially
        hidden behind the header on some pages.

    #1350733 (Bug #85176)
        Fixed a bug where the branch moderators tooltip on the project
        settings page did not correctly list moderators.

    #1349386 (Bug #84995)
        Fixed a 500 error that could occur when viewing a user's shelved
        changes if 'dm.keys.hide' was set and the current user was not an
        administrator.

    #1338808 (Bug #84906)
        Fixed a bug that caused the jobs search to throw an exception for
        queries that start with '^' (not).

    #1327917 (Bug #84622)
        Fixed a problem where the test status of a review was not updated
        if the tests were re-run without making any changes to the review.

    #1327209, #1327378 (Bug #84629)
        Fixed a problem that could occur with existing cache files when
        upgrading Swarm. We now verify that the schema in the cached
        objects matches the current schema.

    #1318968, #1330724 (Bug #84650)
        Fixed a bug where the common path was not being displayed for
        shelved changes.

--------------------------------------------------------------------------

Major new functionality in 2015.4

    #1308891, #1308998, #1309707, #1310199 (Bug #63187)
        Users can now add groups as project members. All members of these
        groups (or any of their subgroups) become members of the project.
        Any changes to these groups are automatically reflected in the
        project. This is designed to ease user management.

    #1308890 (Bug #71597)
        You can now diff arbitrary versions of a review. Previously you
        were limited to comparing consecutive versions of a review. The
        version slider can be pulled apart to span a range of versions.
        If you grab the connector then both version markers will move in
        lockstep.

    #1307207, #1308095 (Bug #78222)
        Added packages for RHEL/CentOS 7 and Ubuntu 14.04.

    #1265420, #1308568, #1309189 (Bug #66264)
        The user's profile page now has a tab for shelved changes.
        This makes it easier to request reviews of shelved changes
        or to see the review status of changes that are in progress.

Minor new functionality in 2015.4

    #1309162, #1309659, #1309729 (Bug #77809)
        Introduced a button to show whitespace characters (space and tab)
        in diff output. When enabled these characters appear as muted dots
        and arrows respectively.

    #1255119 (Bug #84195)
        Added support for previewing the Keynote, Pages and Numbers
        document formats via the LibreOffice module.

Bugs fixed in 2015.4 Patch 1 (since 2015.4/1317923)

    #1326721 (Bug #84612)
        Fixed a regression where projects could not be added on Perforce
        Servers older than 2012.1.

    #1326575 (Bug #70714)
        Fixed a problem affecting edge/commit server deployments. If Swarm
        was configured to talk directly to an edge server, reviews created
        by that instance of Swarm could not be updated. This is because
        the change was being bound to the edge server. Now, edge server
        instances forward review creation to the commit server instance.

    #1322454 (Bug #84108)
        Fixed a bug where the user picker could list groups for fields
        that do not allow groups to be selected (e.g. Project Owners).

Bugs fixed in 2015.4

    #1316264 (Bug #84197)
        Fixed a bug in the Perl trigger where posting to Swarm could
        fail on Windows Perforce Servers. This would only occur when
        wget was installed but curl was not.

    #1307838 (Bug #83660)
        Fixed a bug where links in RSS feeds did not work in some feed
        readers. RSS feeds now use the fully qualified Swarm URL.

    #1306055 (Bug #83608)
        Fixed a bug introduced by the 'edit_branches_admin_only'
        option. When enabled, this feature unintentionally restricted
        editing of projects to administrators.

    #1265682 (Bug #83602)
        Fixed a bug in the Perl trigger script where the strict check
        erroneously prevented committing a review in some cases.
        Specifically: reviews with a single file marked for delete and
        reviews with moved files.

    #1265015 (Bug #83589)
        Fixed an issue where Swarm did not recognize the new utf8 file
        type as text and therefore failed to render diffs and previews.

    #1262908 (Bug #77369)
        Fixed a bug where +l files were silently dropped from reviews.
        Note this fix requires Perforce Server version 2014.2 or newer
        with the filetype.bypasslock server configurable enabled.

    #1261960 (Bug #83277)
        Fixed a performance problem that could occur if the .git-fusion
        depot contained changes with more than 10k files.

    #1255309 (Bug #84196)
        Adjusted the styling of text file previews so that the page
        does not shift around when syntax highlighting large files.

--------------------------------------------------------------------------

Major new functionality in 2015.3

    #1241320 (Bug #66921)
        Enhanced the Perl trigger to run under Windows. There is now a
        single trigger script for all supported server platforms.

    #1239352 (Bug #70542)
        Introduced a search box that looks for projects, users and files.

        A search input now appears in the top-right of the toolbar and
        searches as you type. Results are grouped by type. It looks for
        projects, users and files that match your keywords. Project and
        user searches use Swarm's cache. File searches use 'p4 fstat'
        and P4 Search (if it is installed).

    #1230860, #1240881 (Bug #64899)
    	Email notifications for review comments can now be delayed and sent
        in a single batch email later. The add comment form now has a
        'Delay Notification' checkbox. When a new comment is posted with
        this box checked, the email notification is delayed until a comment
        is posted with the box unchecked.

Minor new functionality in 2015.3

    #1241441 (Bug #79003)
        Added a PHP 5.6 build of P4PHP. All P4PHP builds have now been
        updated to use P4API 2015.1/1240625

    #1241268 (Bug #81066)
        Updated to the new hex-shaped Swarm logo.

    #1237763, #1239247 (Bug #77648)
        The 'My Reviews' button now filters reviews to show only those
        authored by the current user.

        Added a new author filter to the list reviews API endpoint
        (GET /api/v1.2/reviews). This bumps the version for all endpoints
        to v1.2.

    #1231387, #1231395 (Bug #78004)
        The project sidebar now displays owners and moderators.

    #1229476, #1230017, #1230262, #1230490 (Bug #80185)
        The test status tooltip now shows when the results were reported.
        Internally, Swarm now tracks the start time and average running
        duration for automated tests.

    #1219887 (Bug #80322)
        Improved handling of multiple or out-of-order test results.
        Previously the last result would win. Now results for old versions
        are rejected and we preserve the results of the first failure
        if we receive multiple results for a given version of a review.

    #1215329 (Bug #81449)
        We now show a hard-disk icon for depots when browsing the root of
        a server (previously depots were represented with a folder icon).

    #1214788 (Bug #81450)
        Moved the logout link to the bottom of the user dropdown menu.

Bugs fixed in 2015.3

    #1241158, #1247062 (Bug #81061)
        Fixed a bug where sub-groups that reference parent groups caused
        infinite recursion and exhausted all memory.

    #1240050 (Bug #81042)
        Fixed a bug where the Perl trigger script could emit a 'Use of
        uninitialized value' error when the config file was not specified.

    #1235955, #1236887 (Bug #80784)
        Fix a bug where file downloads were not always streamed resulting
        in excessive memory consumption. This was due to output being
        double buffered in some cases. We now clear all output buffers
        when streaming output.

    #1231393 (Bug #81458)
        Fixed a bug where the number of moderators was not being displayed
        next to each branch on the project edit form.

    #1230829 (Bug #80351)
        Fixed a 404 that could occur when marking a file as read when
        diffing two versions of a review if the file was previously shelved
        and had since been removed from the review.

    #1230827 (Bug #80538)
        Fixed an illegal offset warning that could occur when diffing two
        versions of a review. This would happen if a file that existed in
        the earlier shelved version of the review was removed in the later
        version.

    #1228298 (Bug #80404)
        Fixed a regression bug where the follow project link did not work.

    #1225869 (Bug #80501)
        Fixed a layout issue that occurred if the text input for inline
        comments was resized horizontally. Now the text input can only
        be resized vertically.

    #1220502, #1220960, #1222664 (Bug #77401)
        Fixed problems that affected the extensibility of the Linkify
        filter. The last word variable is now updated and passed
        correctly to Linkify callbacks.

    #1216034, #1235980, #1241414 (Bug #80348)
        Pending comments are now preserved when comments are refreshed
        while editing a comment or adding a comment from the comments tab.

--------------------------------------------------------------------------

Major new functionality in 2015.2

    #1071421, #1203684, #1204593, #1206600, #1207516, #1207537 (Bug #64896)
        Comments are now editable. If you are logged in as the user that
        authored a comment, you will now see an 'Edit' link in the comment
        footer. Clicking this link presents an in-place edit form that
        allows modification of the comment body and attachments.

    #1206282, #1207388 (Bugs #79595, #79596)
        Added localizations for Simplified Chinese and Korean.

        Incoming JA, KO, and ZH-CN localizations from AlphaCRC, along with
        changes to the assembleLocaleData.php script to process the new
        languages.

    #1100113, #1205196, #1206305, #1206658, #1331177 (Bugs #70714, #79174)
        Added support for multi-site deployments. Swarm is now compatible
        with edge and commit servers. Use of the new Perl-based trigger
        is required.

    #1099584, #1101368 (Bugs #75355, #75653, #76342, #77572)
        Added a new version of the Swarm trigger implemented in Perl.
        The usage of this trigger is compatible with the existing bash
        trigger. The new version of the trigger adds support for edge
        servers and fixes a bug with the strict enforcement mode and ktext
        files.

Minor new functionality in 2015.2

    #1212292 (Bug #80033)
        Updated the Swarm trigger package to use the new Perl trigger.

    #1207511 (Bug #79934)
        Changed the subject for change submit email notifications from
        'Change @54321' to 'Commit @54321'.

    #1206503, #1207071 (Bug #78167)
        IP protections emulation now includes proxy rules. Previously,
        proxy rules were not taken into account. Now, we treat Swarm
        as an intermediary and apply proxy rules according to the end
        user's IP address.

    #1206494 (Bug #78996)
        Added an option to limit configuration of project branches to
        admin users. With the projects > edit_branches_admin_only option
        set to true, only admins are able to configure branches.

    #1205521, #1205762 (Bug #72454)
        We now list jobs and changed files in review email notifications.

    #1204727, #1207016 (Bugs #78995, #78996)
        Added an option to limit editing project names to admin users.
        With the projects > edit_name_admin_only option set to true, only
        admins are able to rename projects.

    #1202977 (Bug #79396)
        Added an option to the Swarm trigger to skip the enforce and strict
        checks if the change only contains files of the specified type(s).
        File types to skip can be specified via the EXEMPT_EXTENSIONS
        config option.

    #1202975 (Bug #79609)
        Moderators now receive email notification for commits and reviews
        against branches they moderate even if they are not members of the
        affected projects.

    #1198459, #1198806, #1206279 (Bug #79295)
        Refreshed the login page. Added a nice background image of some
        fine folks having coffee and doing important creative work.

    #1197879, #1197890, #1198475 (Bug #66465)
        Moved the project edit button to the project toolbar and renamed it
        to 'Settings'. Tweaked the project form to render with the project
        toolbar and sidebar when editing.

    #1171636 (Bug #70542)
        Swarm now generates host-unlocked tickets on login. This is needed
        to integrate with other Perforce services like p4-search.

    #1171629 (Bug #79944)
        Tweaked line hash handling (ie. #l123) to position the targeted
        line 1/4 of the way down the page. Previously it was positioned
        100px down the page which often felt too high.

    #1149485 (Bug #78994)
        Added an option to the Swarm trigger to skip the enforce and strict
        checks if the change contains more than a given number of files.
        The number of files can be specified via the new EXEMPT_FILE_COUNT
        config option.

    #1126994, #1144472, #1206760 (Bug #79386)
        Fixed a performance problem that could occur with large numbers
        of users, groups and projects. With 5000 users, 5000 groups and
        500 projects load times for the project listing have been reduced
        by >20x.

    #1099546, #1100888, #1101371, #1101414 (Bug #79315)
        Simplified the email notification template. The revised template
        eliminates the grey border and reduces margins.

    #1072284, #1197886 (Bug #79214)
        Renamed the 'History' tab and 'History' links to 'Commits'.

    #1071674, #1073354 (Bug #79203)
        Comment counts now reflect the number of open (non-archived)
        comments. Hovering over the number of comments shows the number
        of archived comments. Previously we only showed the total number
        of comments for a given topic.

    #1069597 (Bug #79182)
        Improved the visibility of 'more context' rows. We now render a
        horizontal grey line help delineate diff chunks.

    #1068547, #1209330 (Bug #73003)
        Updated rules for review transitions to optionally deny authors
        approving their own reviews. If the reviews > disable_self_approve
        option is true, then authors are not able to approve their own
        reviews (even if they are also moderators).

    #1067114 (Bug #76362)
        Imagick module now converts ".tif" files. Previously, only the
        ".tiff" extension was recognized.

Bugs fixed in 2015.2

    #1214397 (Bug #80087)
        Fixed a problem where Swarm could continuously reload a review if
        it had unexpected commit-status data (due to a race condition).

    #1208398 (Bug #76535)
        Fixed a bug where OVA setup script did not work with SSL enabled
        Perforce servers.

    #1207465 (Bug #79269)
        Fixed a bug where our handling of Emojis was not compatible with
        newer versions of Gemoji.

    #1207464 (Bug #79856)
        Fixed a bug where some of our 'infinitely scrolling' lists were not
        loading more items. At some zoom levels Chrome reported a lower
        than expected scroll position. This caused our code to conclude the
        user had not reached the bottom of the page. Now we consider the
        user to have scrolled to the bottom if they are within a couple of
        pixels.

    #1206727 (Bug #79800)
        Fixed a bug where attempting to archive a specific version of a
        file resulted in a 500 error.

    #1205188 (Bug #79945)
        Fixed an issue where the project save button could be erroneously
        enabled if a project name is entered and user data has not yet
        loaded (despite having no project members).

    #1152722, #1205188 (Bug #79945)
        Fixed a bug where the project save button could be enabled when
        it should be disabled. Specifically, this could occur when the
        list of users had not yet loaded, or while waiting to redirect
        to a newly created or updated project page.

    #1066846 (Bugs #74987, #76629)
        Fixed a bug where file and directory names could be missing
        characters if they contained non-ascii bytes and the web-server
        was using to a non-UTF-8 locale.

        We now detect the available system locales and explicitly select
        one that supports UTF-8.

    #1065005 (Bug #78165)
        Fixed a bug where notification emails were not threading properly
        in Microsoft Outlook. Outlook uses a non-standard 'Thread-Index'
        header to group 'conversations' and Swarm was not sending this
        header.

--------------------------------------------------------------------------

Major new functionality in 2015.1

    #1024336, #1027042, #1035289, #1035631, #1039648 (Bug #66715)
        Added support for localization. User-facing strings now run
        through a translation component that supports string replacement,
        escapement and pluralization. The default and fallback locales can
        be set in the configuration file. The user's locale is detected
        from the browser's HTTP_ACCEPT_LANGUAGE header automatically
        (this behavior can be disabled).

        Both the web browser and the web server support translation.
        The same methods are available in each environment and behave
        in the same way. The same messages are available in both
        contexts and whichever locale is configured or detected on
        the server will be selected in the browser.

    #993239, #1003694, #1029826, #1034069, #1038235 (Bug #71596)
        Files and folders can now be downloaded as ZIP archives.
        Any depot path can be archived, however, it must not be larger
        than the archives => 'max_input_size' setting. The default value
        for this setting is 512 MB.

        Archives are built in the background and a progress bar is
        presented to the user as files are synced and compressed.
        Each archive is cached for 12 hours (by default) before being
        erased. This ensures that subsequent requests to download the
        same archive go quickly.

        The archives => 'archive_timeout' setting controls how long
        a process can spend building a ZIP archive (default is 30m).

    #1034946, #1035427, #1039713 (Bugs #66965, #77519)
        We now limit the number of files displayed in a changelist.
        Previously if you viewed a particularly large change (many
        thousands of files) Swarm might run out of memory. Now limit
        the number of files displayed to 1000 (by default). This can be
        adjusted via the p4 => 'max_changelist_files' setting.

        If the P4D server is 2014.1+ the number of files will be limited
        in Perforce. Otherwise they will be limited in Swarm. In the
        latter case, Swarm can still run out of memory on large changes.
        However, the threshold has been raised because the list of files
        is trimmed fairly early.

Minor new functionality in 2015.1

    #1038843 (Bug #77610)
        Enhanced JIRA integration to better find references to issues
        when they are surrounded by punctuation. Specifically, Swarm
        now detects JIRA issues that are wrapped in round brackets '()'
        and curly braces '{}'.

    #1033167 (Bug #78159)
        Improved the XHProf module to automatically clean-up old report
        files. Previously if XHProf was enabled, the number of log files
        would continue to grow over time. Due to their large size these
        files could end up consuming a significant amount of disk space.

        Note: XHProf is a profiler developed by Facebook.

    #1011531 (Bug #77468)
        Added a reviews => 'commit_timeout' setting to provide control
        over how long processes can spend submitting files to Perforce.
        By default this is set to 30 minutes.

    #1006502 (Bug #67720)
        We now detect errors connecting to Perforce and report them as 503
        (service unavailable). This should assist in debugging p4 port,
        user and password problems.

    #1003872, #1005554 (Bug #78347)
        Minor visual refresh. User avatars now appear rounded. Rows in
        tables no longer appear with alternating background colors.
        These changes are purely aesthetic.

    #1001768, #1006500 (Bug #77277)
        Added a notice to the top of the home page if there are no
        workers running. This should assist in debugging a common server
        configuration problem.

    #991098 (Bug #76671)
        Improved the rules governing review state transitions. Authors
        are now permitted to approve or reject their own reviews if they
        are branch moderators.

Bugs fixed in 2015.1

    #1039199 (Bug #74656)
        Fixed an issue where version 1.1 of the web-services API added
        a new required reviewers field and erroneously made it available
        to version 1.0 of the API. We no longer accept required reviewers
        on v1.0.

    #1035544, #1035560 (Bug #66917)
        Fixed an issue that can cause a commit to be partially processed.
        In some cases if a user unshelved files in a review and one or
        more of those files had pending resolves, Swarm would be unable to
        remove files from the review and would abort processing the commit.

        If the server version is 2014.2+, we now use the -f flag to ensure
        that we are able to remove shelved files. Additionally, we ignore
        the error that will occur if this situation arises on an older
        version of P4D.

    #1033935 (Bug #78332)
        The blame button is now disabled for files that have no content.
        Previously an error would occur if blame was used on an empty file.

    #1022486 (Bug #76571)
        Fixed javascript error occurring when switching to History tab
        while viewing a file in Swarm.

    #1022324 (Bug #77803)
        Removed legacy rewrite rules for adding tasks to the queue.

        These rules were left there temporarily for backwards
        compatibility. Currently, the tasks are added to the queue via
        posting to http://<swarm-host>/queue/add/<swarm-token> that has a
        separate rewrite rule.

    #1019647 (Bug #77678)
        Fixed a bug where the swarm-trigger's optional 'strict' and
        'enforce' modes did not work against a unicode enabled server.

    #1016421 (Bug #71596)
        Fixed an issue where progress bar status text was not legible until
        the bar was at least as wide as the text. Now the text appears in
        black over the background and white over the finished portion of
        the progress bar.

    #1011943 (Bug #78436)
        Fixed a performance regression where the projects sidebar could
        take a long time to load. This was most prominent when there was
        a bad link between Swarm and the Perforce server. In some cases,
        the projects sidebar now loads 8x faster.

    #1006678 (Bug #77394)
        Improved validation of branches in project configuration.
        Previously the server would accept branches that had no paths
        defined. Now the server-side validation matches the client-side
        validation and such branches produce an error.

    #1003822 (Bug #78437)
        Attempting to access the '/view' or '/download' URIs for a folder
        (not a file) now produces a 404 response.

    #997596, 1015136 (Bug #77206)
        Minor aesthetic fixes. Adjusted the position of popover and tooltip
        arrows when the browser's view is magnified. Improved the contrast
        of keyboard shortcut hints.

--------------------------------------------------------------------------

Major new functionality in 2014.4

    #982485 (Bug #76736)
        Swarm is now distributed under a BSD-style two-clause license.

    #965185 (Bug #76239)
        Performance has been significantly improved for sites with a
        large number of protections entries. This should be particularly
        noticeable when browsing files.

    #905488, #962547 (Bug #73830)
        Added options to disable sending emails to all project members for
        commits and new review requests. The project edit page now has two
        checkboxes that can control project notification emails.

Minor new functionality in 2014.4

    #986364 (Bug #76961)
        Added 'apiVersions' to the output of the 'version' endpoint. This
        field includes a list of all of the api versions supported by the
        instance of Swarm (e.g. 1, 1.1).

    #970399 (Bug #70284)
        It is now possible to limit the range of changes shown on the
        history tab to a specific range using change numbers, dates,
        labels, etc.

    #968015 (Bug #66742)
        Project creation can be limited to only users under specific
        group(s) by setting 'add_project_groups' under the 'security'
        config. This feature is disabled by default.

    #967909 (Bug #76291)
        Swarm can now be configured to leave reviews in an approved state
        even if they are updated with modified files. By default, reviews
        will still revert to 'needs review' when they are updated with
        modified files. To have reviews stay approved even when modified
        files are added set 'unapprove_modified' to false under the
        'reviews' configuration.

    #965024 (Bug #74656)
        It is now possible to specify required reviewers when creating
        reviews via the API.

Bugs fixed in 2014.4 Patch 1 (since 2014.4/988814)

    #1000792 (Bug #77218)
        Fixed an issue where the workers could stop running if upgrading
        from 2014.2 via RPM packages.

    #991899, #992629 (Bug #77048)
        Fixed an issue where the RPM packages could erroneously disable
        the Perforce PHP extension on upgrade.

    #990382 (Bug #76971)
        Fixed an issue where the RPM packages did not require the DOM
        or mbstring extensions needed for RSS feeds and multi-byte strings.

Bugs fixed in 2014.4

    #986536 (Bug #76569)
        Fixed a problem where buttons did not always disable properly when
        submitted. This only affected some browsers and appeared to be
        caused by a race condition between the click and blur events.

    #985713 (Bug #76963)
        Fixed an issue with our icon sprites. Previously when scaling up
        your browser view, some icons would erroneously show pixels from
        adjacent icons. Now the sprites have generous spacing to avoid this
        issue.

    #972442 (Bug #76382)
        Fixed an issue where the submit button on the "Add a Commit" and
        "Already Committed" dialogs could erroneously stay disabled
        after a change had been selected.

    #968046, #969029 (Bug #74760)
        When emulating IP protections, enabled by default, Swarm will
        now correctly treat protection entries as as case-insensitive
        when dealing with a case-insensitive Perforce server.

    #968037 (Bug #75488)
        Fixed an issue where @mentioned and @*mentioned users were not
        added as reviewers when creating a review using the API.

    #967896, #967998 (Bug #73701)
        Fixed an issue where committing to a streams depot via the Swarm
        web interface could erroneously report 'No files to submit'.

    #950565 (Bug #72392)
        Fixed an issue where LibreOffice could become unresponsive.
        Generating doc previews should now be significantly more reliable.

    #939315 (Bug #74463)
        When a 'strict' or 'enforce' Swarm trigger fails due to bad
        credentials, include the active P4PORT setting in the error message
        to help diagnose problems more easily.

    #933049, #933477 (Bug #74860)
        Updating an approved review with unchanged ktext files will no
        longer cause it to erroneously revert to the needs review state.
        Note, this fix only works when operating against a 2012.2 or
        newer Perforce server.

    #898943 (Bug #72908)
        Fixed an issue where the horizontal scrollbar could disappear if
        a collapsed file toggled between side-by-side and inline diff.

    #897986 (Bug #66554)
        Fixed an issue where logging in to comment on the left hand side
        of a side-by-side diff would collapse the comment row.

--------------------------------------------------------------------------

Major new functionality in 2014.3 Patch 2 (since 2014.3/958056)

    #967594 (Bug #75006)
        Swarm is now free of charge for all Perforce users.
        A Swarm license file is no longer required for operation.

Major new functionality in 2014.3

    #890602 (Bug #66725)
        Added the option to show 10 more lines of context on diffs by
        clicking on the blank row that separates the diffs.

    #889932 (Bug #73703)
        When a review is updated with modified files, existing votes will
        now be marked as 'stale'. Stale votes will be shown with a faded
        icon and will not count towards up-votes or down-votes.

    #889492 (Bug #63260)
        It is now possible to mark files in reviews as 'read'. To mark a
        file as read, click the 'eye' button on the far right of the
        file header. The read flag is remembered independently for each
        user along with the version and file digest information. If the
        contents of the file change, the 'read' flag automatically clears.
        This feature can be helpful when reviewing lots of files.

    #884641, #887942, #889744, #890743 (Bug #63263)
        Swarm now supports treating comments as light-weight tasks. Tasks
        can be marked as 'addressed' and may optionally be 'verified'.

    #877136 (Bug #73157)
        If a change has been associated to a review, Swarm will always
        update the review when files are shelved or the change is
        committed.

        Previously, if the #review-123 or [review-123] style keyword
        wasn't present, the review would not have been updated.

    #854977, #863042, #873042, #875837, #876579, #889563 (Bug #70664)
        Swarm now has an API that exposes and documents various tasks
        that were previously difficult to accomplish.

        The API supports listing reviews, retrieving information about an
        individual review, creating a review from an existing pending or
        submitted change, adding a change to a review (making it the new
        Head revision of that review), listing projects, and creating new
        entries in the Activity list.

        Authentication is handled using standard HTTP Basic Auth, with
        either a password or a ticket. Note that passwords will not work
        in higher-security configurations, so a ticket may be required.

Minor new functionality in 2014.3 Patch 1 (since 2014.3/896879)

    #957494 (Bug #74292)
        Added support for optional POST params when configuring automated
        tests on a project. Data can be specified in either get=param
        style or as {"json" : "values"}

Minor new functionality in 2014.3

    #886023 (Bug #73067)
        Comment attachments will now be cached by the browser for 12 hours.
        This will decrease jumpiness when rendering attached images.

    #882741 (Bug #73058)
        The Swarm cron script now supports starting workers on SSL-enabled
        Swarm hosts that utilize a self-signed certificate.

    #879274 (Bugs #62048, #69646, #71743, #72202)
        The Reviews page now updates the URL to reflect search terms. This
        allows users to bookmark or share searches and ensures the search
        results are shown correctly when navigating browsers history.

    #878436 (Bug #73357)
        Swarm will now linkify occurrences of "changelist <#>" in comments
        and changelist descriptions.

    #878206, #878814, #879346, #879579 (Bug #72736)
        The Swarm OVA is now built using Swarm packages. This allows the
        user to more easily upgrade Swarm.

    #875126 (Bug #66253)
        The jobs page now updates the URL to reflect search terms. This
        allows users to bookmark or share searches and ensures the search
        results are shown correctly when navigating browsers history.

    #871859 (Bug #66355)
        Dropdown menus in Swarm can now be operated via the keyboard.

    #870337, #870357 (Bugs #70905, #71325, #72767)
        Several enhancements have been made to the Swarm JIRA module. JIRA
        Swarm links now include a snippet of the change/review description.
        Additionally, editing a submitted change description or
        adding/removing jobs on a change or review will update JIRA Swarm
        links.  Note, old links are not automatically updated to include
        descriptions.

    #862937, #870621 (Bug #69205)
        Swarm now has a default tab-size of 4 in Chrome, Firefox and
        Safari.  Internet Explorer does not support tab-size and will
        still display a tab width of 8.

    #860398 (Bug #66357)
        Added a 'system' avatar for activity not associated with a
        particular user (for example when tests pass or fail).

    #860346 (Bug #73032)
        Swarm now allows changes by specific users to be ignored from the
        perspective of starting and updating reviews. This is enabled by
        specifying 'ignored_users' under the 'reviews' config.

    #860321 (Bug #73057)
        Mainlines are now listed first under the Review queue's branch
        filter.

    #855740 (Bug #67654)
        Added support for rendering SVG images in file preview, file diffs
        and comment attachments.

    #853423 (Bug #72412)
        The #review keyword is now more forgiving of nearby punctuation.

    #848771 (Bug #72359)
        Swarm now automatically reverts review state back to 'Needs Review'
        when approved reviews are updated with modified files.

    #846902 (Bug #72448)
        Added a swarm of bees that fly around your cursor on the error
        page.  As you move your mouse more bees surround your cursor. Over
        time, if you hold your mouse still, the bees go away.

    #842916, #851529 (Bug #72559)
        We now do a case insensitive lookup for @mentioned jobs.

    #842660 (Bug #73720)
        Basic Auth is now a supported means of authentication. This means
        that actions which previously required 2 steps (performing a login,
        writing the resulting cookie to a cookie jar, and then performing
        the actual action) can now be streamlined into a single request.

        The username must match a valid perforce user with permissions to
        perform the action, and the password can be a valid ticket or the
        user's password.

        Note: Some p4d security levels only allow the use of tickets in
        this context.

    #840855 (Bug #72696)
        Upgraded jQuery to 1.11.1 and added the jQuery sourcemap.

    #839881 (Bug #72704)
        Adjusted the sorting of files and directories when browsing to put
        hidden (e.g. '.foo') files and directories last.

    #836802 (Bug #72385)
        For inline comments, the row will now collapse when the last open
        comment is archived.

Bugs fixed in 2014.3 Patch 2 (since 2014.3/958056)

    #967444 (Bug #73582)
        Fixed an issue where the Debian packages could fail to properly
        install the Perforce PHP extension. The Debian packages now work
        correctly on Ubuntu 13.10, 14.04, 14.10.

Bugs fixed in 2014.3

    #893456 (Bug #73882)
        Fixed an issue where URL-encoded characters could erroneously show
        up in filenames under the activity feed or comments tab.

    #892728 (Bug #73833)
        Logging in with the incorrect cAsE user id on a case insensitive
        p4d will no longer prevent transitioning and approving reviews.

    #892681 (Bug #73832)
        Fixed an issue where using characters like % and # in your filename
        would cause errors when trying to show full context.

    #892564 (Bug #73824)
        Fixed an issue where placeholder text in IE erroneously acted as
        default values for new inline comments under sideways diff mode.

    #892532 (Bug #73826)
        Fixed an issue where the comments could overlay code lines if the
        comment was wide enough to wrap and diff scrollbars were showing.

    #891999 (Bug #73759)
        Swarm will display a warning if thread-safe PHP is detected. This
        is because P4PHP is does not support threaded operation.

    #891941 (Bug #71531)
        Ensure all emails are set to use UTF-8 encoding so extended
        characters display properly.

    #890428 (Bug #71549)
        Attempting to commit a review with out of date files no longer logs
        an exception. An error is still shown to the user in the Swarm UI.

    #890422 (Bug #72918)
        If Swarm encounters a task file it cannot delete; it will no
        longer process it and will abort the worker. This will prevent
        endlessly reprocessing the task.

    #890342, #892319 (Bug #73718)
        The windows trigger script now wraps the path to curl in quotes
        allowing curl.exe to be under a path with spaces.

    #888871 (Bug #73599)
        Fixed an issue where using the context menu to paste content
        into the comment form would fail to enable the post button.

    #887895 (Bug #71805)
        Adding a new comment will no longer show files that were attached
        to a previously posted comment.

    #886698 (Bug #73581)
        Performance improvements for rendering larger files in IE.
        Performance was increased by about 30% for the rendering of the
        side-by-side Diff mode. For files with more than 1000 lines this
        can still be very slow, we plan to continue making improvements.

    #880741 (Bug #65586)
        Introduced tab history tracking for IE9. Previously IE9 would load
        the correct tabs for urls with tab ids but would not insert tab
        ids when navigating tabs in Swarm.

    #879459 (Bug #67480)
        ARIA labels have been added to the filter buttons on the Reviews
        Queue in order to expose their meaning to screen readers.

    #877109 (Bug #73296)
        Swarm will no longer enter an endless loop when the 'swarm' group
        references recursive sub-groups.

    #873881 (Bug #73084)
        Fixed an issue where users would sometimes be required to login to
        comment despite having recently logged in.

    #863379 (Bug #66712)
        Swarm will no longer fail to update reviews when the Swarm admin
        user has changed.

    #861147 (Bug #73037)
        The json output for projects no longer leaks automated test and
        deploy settings. These values can include sensitive data such as
        auth tokens.

    #860313, #861755 (Bug #73056)
        Improved handling of empty descriptions in commit and review email
        notifications. We no longer append a trailing '-' to the subject
        and we no longer output an empty description block in the body.

    #855747 (Bug #72716)
        Fixed a bug where selecting the already active project/branch
        filter would erroneously clear the filter.

    #860349 (Bug #61897)
        We now prevent service and operator type users from logging in.

    #851970 (Bug #72825)
        Fixed an issue where Swarm was generating 'Unknown command' errors
        on Perforce Server's using structured logs. Instead of running a
        null command, we now run 'help' to avoid the error. Further, we
        only test the connection if it appears necessary which should
        provide a minor performance boost.

    #849546 (Bug #72860)
        Following an inline comment link to a file open for 'add' no longer
        produces a JavaScript error.

    #848957 (Bug #72845)
        The trigger script will now fallback to curl if wget returns an
        exit code of 126 or higher. Previously we only fellback for 127.

    #842648 (Bug #72680)
        We now correctly detect files of type 'import' as being adds.

    #842413 (Bug #72707)
        Reviews now only reference projects/branches impacted by the
        current version.

    #841620 (Bug #70219)
        Invalid/non-existent jobs added to a change no longer result in a
        HTTP-500 error.

    #841606 (Bug #71843)
        Uploading a directory now results in an error message, not an
        unreadable white bar.

    #836796 (Bug #72523)
        IE11 is no longer erroneously detected as being Firefox by Swarm's
        generic error handling code.

    #836814 (Bug #72435)
        Modal dialogs now display on top of tooltips, previously they could
        erroneously overlap the dialog.

--------------------------------------------------------------------------

Major new functionality in 2014.2

    #825537, #825687 (Bug #72144)
        Reviews can now optionally have required reviewers. A review cannot
        be approved until all required reviewers have up-voted the review.

        To aid in managing reviewers and defining who is required, a new
        'Edit Reviewers' dialog has been added. The review author, perforce
        admins and perforce super users are always able to edit reviewers.

        Additionally, the following individuals may edit reviewers:
        - If the review is moderated, the moderators
        - If the review is part of a project, but not moderated, all
          project members
        - If the review is not part of a project, any authenticated user

        Lastly, individuals may now leave a review, make their vote
        required or make their vote optional by clicking their own avatar
        under the reviewers listing. This is in addition to the existing
        options to join, vote-up and vote-down.

    #823254, #825263 (Bugs #67052, #67054)
        Branches can now optionally have moderators. If moderators are
        defined, only those users are allowed to 'approve' or 'reject'
        reviews under the branch.

        When a review is associated with a moderated branch:
        - Only moderators can approve or reject the review; they can also
          perform all other transitions.
        - Authors can move between needs-review/needs-revision/archived and
          can attach commits; they cannot approve or reject review (even if
          they are a moderator)
        - Members can move between needs-review/needs-revision and can
          attach commits; they cannot approve/reject or archive.
        - Users that are not project members, moderators or the author
          cannot perform any transitions.

        Note, for the author and project members, if the review is not
        presently in one of their permitted states (e.g.: it is rejected)
        they cannot transition it.

    #805100, #805438 (Bug #66173)
        By default, reviews that are committed via the Swarm web UI will
        now be credited to the review author. Activity and email
        notifications will include both the committer and review author's
        details. This is a configuration option which defaults to true.

    #804532, #820256 (Bug #67053)
        A project can now optionally specify one or more owners. When a
        project has owners, only the owners (as well as admin or super
        level users) can edit the project.

    #796111, #796324, #804292, #803304 (Bug #69605)
        Comment boxes now support file attachments via drag-and-drop
        upload. To enable this feature create a "//.swarm" depot or set the
        depot storage base path to a location Swarm can write to.

Minor new functionality in 2014.2

    #834780 (Bug #72549)
        Updated the P4PHP binaries to be built with a patched P4API that
        does not reference the Heartbleed-vulnerable OpenSSL version.

    #825849 (Bug #66469)
        The Swarm favicon is now larger.

    #824751 (Bug #72388)
        Fixed a bug where trigger tokens were not protected from non-super
        users that requested JSON formatted '/about' output.

    #820025 (Bug #71330)
        Multiple Swarm instances can now safely operate on the same machine
        where the address only varies by port, even if SERVER_PORT is
        misreporting.

    #811552, #814057, #814086 (Bug #67051)
        Project creation can be limited to admin users by setting
        'add_project_admin_only' under the 'security' config. This feature
        is disabled by default.

    #810137, #812142 (Bug #66408)
        Ensured the horizontal scroll bar is always visible when viewing a
        change or review diff.

    #805410, #805415, #805458 (Bug #72039)
        Upgraded Zend Framework from 2.1.4 to 2.2.6 for a number of fixes
        and enhancements.

    #805070 (Bug #72042)
        Enhanced the queue status to report future-tasks separately.

    #801759 (Bug #71598)
        Added support for GitHub style line links (e.g.: '#L123') and
        highlighting of linked line; additionally, if you specify a range
        of lines (e.g.: '#10-20'), Swarm will highlight all of the lines in
        the range.

    #800253 (Bug #71712)
        Improved the configuration error message to alert the user if the
        data directory is unwriteable, or no php.ini is found.

    #797479, #799428, #800567, #801819 (Bugs #71679, #71718)
        Added a new URL shortening feature. This adds a small 'bookmark'
        button to the file browser page. Clicking the button generates a
        short URL and displays it in a small popover dialog that the user
        can easily copy from. A short link like this will redirect the user
        to a (presumably) much longer address. Also added support for a
        dedicated short-link hostname; this is a domain to use for short
        links to make them even shorter. Short links are handy for email,
        chat, etc.

    #796834, #803372 (Bugs #71521, #71738)
        Enhanced the trigger script to operate with in-place edits, or
        externalized configuration (implicit and explicit via -c config).
        This is helpful so that configuration can be more easily separated
        from the script itself.

    #791347 (Bug #71159)
        Expose a configuration setting to allow suppressing the Reply-To:
        email header field. This is helpful when you don't want to expose
        Perforce user email addresses in email notifications.

    #790928 (Bug #71396)
        When copying lines of text from a review or changes page, line
        numbers in diff no longer end up in your clipboard. All supported
        browsers still display the line numbers. IE still copies the line
        numbers if you multi-select lines.

    #790472 (Bug #71366)
        Remove the border styles from the diff table to provide a cleaner
        look, and also reduce visual glitches to table borders.

    #789318 (Bug #71717)
        Swarm now compresses JSON sent to the browser for better
        performance.

    #789217, #789221 (Bug #66706)
        Upgraded jQuery from 1.9.1 to 1.11.1 for performance improvements.

    #787961 (Bug #70991)
        Workers will effectively restart if Swarm detects the config.php
        file has been changed. This helps prevent the long running workers
        from using stale config.php settings.

    #782170, 794566 (Bugs #71160, #71327)
        Improved the performance of the home page, particularly when there
        are large numbers of projects or activity events.

    #781997 (Bug #70687)
        Display a tip at the bottom of review and change pages indicating
        the user can use the N and P keys to move between the changes.

    #781805 (Bug #71393)
        Upgraded JSRender from 1.0pre to 1.0.0beta.

Bugs fixed in 2014.2 Patch 2 (since 2014.2/841040)

    #853220 (Bug #72903)
        Administrators can now disable system info along with the related log
        and php info pages by setting 'disable_system_info' to true under the
        'security' config. By default, system info is still accessible to
        authenticated admin or super level users.

    #853054, #853496, #853533 (Bug #72881)
        The CSRF token is now passed as a POST param not a GET param. This
        should reduce the risk of exposure in logs, referrers, etc.

    #846204, #853041 (Bug #72805)
        Fixed a local XSS vulnerability in error messages when posting
        forms in Swarm.

Bugs fixed in 2014.2 Patch 1 (since 2014.2/835154)

    #840956 (Bug #72712)
        Made the details about changes to reviewers (e.g. 'Added user as a
        required reviewer') easier to distinguish from the description of
        the review in email notifications.

    #840731 (Bug #72698)
        Adjusted edit reviewers activity to clearly report when users are
        added. Previously we just stated 'Made user a required reviewer';
        it was unclear if they were being added or edited.

    #839300 (Bug #72658)
        When upgrading Swarm, browsers would sometimes hold onto outdated
        CSS and JavaScript potentially resulting in errors. Links to the
        minified CSS/JS now include the Swarm patch number to avoid this.

    #838036, #838043, #838150 (Bug #61429)
        Added CSRF protection to all mutative actions. For authenticated
        users, requests that are not a GET (e.g. POST, DELETE, PATCH, etc.)
        must now include a valid _csrf token. Actions which are
        'login_exempt' or 'csrf_exempt' do not require the token to be
        passed.

    #835869 (Bug #72611)
        Fixed an issue where Swarm was not setting the 'Remember me' cookie
        with the secure flag when appropriate.

    #835868 (Bugs #72548, #72568)
        Swarm can now be used in deployments where a proxy/balancer handles
        encryption and forwards plain HTTP traffic on to the Swarm server.
        When 'https_strict' is enabled, we now always send the HSTS header
        and we always flag cookies as secure only. Additionally, we now
        allow the administrator to disable the HTTPS redirect for HTTP
        clients by setting 'https_strict_redirect' to false under the
        'security' config.

    #835821 (Bug #72565)
        We now only start a session when needed (e.g. anonymous users don't
        get a session until they try to login). We also attempt to clear
        the session cookie on logout or session expiration.

    #835815, #835866 (Bug #72678)
        The diff endpoint will now produce a 404 error when attempting to
        diff a non-existent file. Previously a 500 error was produced.

    #835789 (Bug #72566)
        Swarm now supports specifying a session lifetime. If the session is
        not accessed for the specified duration, the user will be logged
        out.  By default the duration is 30 days but can be adjusted by
        setting the 'gc_maxlifetime' under the 'session' config. This
        feature will apply when using the default file based session
        storage. Other storage backends are presently unverified.

    #835577 (Bug #72564)
        Swarm no longer sends two Set-Cookie headers for the SWARM session
        ID on login. There is no functional change, this is just an
        aesthetic improvement to the response.

    #835554 (Bug #72571)
        Fixed an issue where toggling the 'Remember me' checkbox on login
        did not correctly adjust the session lifetime.

Bugs fixed in 2014.2

    #833850 (Bug #72510)
        Fixed an issue on Safari 5.1 where comment user avatars were not
        being sized correctly.

    #833609 (Bug #72505)
        Fixed an issue to ensure commits via Swarm keep the restricted or
        public type of the authoritative shelf.

    #827517 (Bug #72362)
        Fixed an issue where it was not possible to @mention a user that
        contained a backslash (such as an AD domain user).

    #826264 (Bug #72378)
        Fixed an issue with the job dialog automatically refreshing when
        attempting to select a row.

    #821123 (Bug #72390)
        Fixed a race-condition where automated tests for a review could
        fail if the pending review was committed before the tests ran.

    #821027 (Bug #72248)
        Fixed an issue where you could not change the review status of a
        review that was somehow stuck. Now, such a review can be
        transitioned to Needs Review, Needs Revision or Archive to clear
        the status.

    #820630 (Bug #72225)
        Fixed an issue in Firefox where the archive comment tooltips would
        get orphaned.

    #820120 (Bug #72391)
        Fixed an issue where the reviews queue would reload when the search
        input loses focus, even if the search value had not changed.

    #820005 (Bug #71764)
        Fixed an issue where Safari 5.1.x would throw a JavaScript error
        when navigating files using the back or forward buttons.

    #819959 (Bug #71459)
        Fixed a bug where protection table entries with spaces caused
        errors.

    #819822 (Bug #72224)
        Fixed an issue where no error message was displayed for
        browser-to-Swarm network errors.

    #814092, #824517 (Bug #64793)
        Fixed an issue where timezones were incorrect when Swarm was
        connected to a Windows p4d server.

    #813797 (Bug #72064)
        Fixed an issue where modal cancel buttons were being marked as
        ARIA-hidden.

    #809521 (Bug #71986)
        Fixed an issue with the 3D model viewer where it was looking at
        0,0,0 instead of the center of the model.

    #804290 (Bug #71851)
        Fixed a bug where the reviews page would issue excessive XHR
        requests, impairing browsing performance.

    #800358, #801075 (Bug #72003)
        Adjusted avatar styles to only show the default avatars when the
        user's Gravatar has finished loading. This prevents a momentary
        flash of the default avatar that could sometimes occur if Gravatar
        was slow.

    #799622 (Bug #71367)
        Swarm now normalizes the hostname specified in the config file to
        properly handle schemes and non-standards ports.

    #799558 (Bug #71680)
        Swarm no longer prevents the browser from handling control/command
        clicks in the Swarm File Browser.

    #794840 (Bugs #70317, #70295)
        Fixed several small issues with the file browser. Previously the
        handling of what controls were shown on different tabs was spread
        out and inconsistent. We also previously missed detecting all the
        cases where the tab had changed.

    #792725 (Bug #65644)
        Fixed an issue on IE9 where the archived comments area would toggle
        twice the first time it was clicked, so you would need to click
        again.

    #792034 (Bug #71138)
        Fixed an issue where certain special characters, like '@', '#', and
        '%' were escaped in email depot paths.

    #790454 (Bug #70231)
        Fixed an issue where linking to an archived comment did not expand
        the collapsed archive area to scroll to the comment.

    #790437 (Bug #71372)
        Enhance the N/P keydown listener to only handle one keydown per
        keypress. This should prevent issues with the focus moving further
        than expected.

--------------------------------------------------------------------------

Major new functionality in 2014.1

    #774422, #775409 (Bug #70659)
        Swarm now renders 3D model files (.STL, .OBJ or .DAE) in the file
        browser and diff. The viewer will attempt to pull in referenced
        resources, including MTL files, in the model objects, but will only
        be able to display textures if they are web-safe images (e.g.: .PSD
        textures will not render). If using a modern browser, and hardware
        acceleration is available, the viewer should run smoothly. If using
        a modern browser, and there is no hardware acceleration available,
        the viewer will run without WebGL, and may be slow; we don't
        auto-rotate in this case to reduce CPU utilization. If you are not
        using a modern browser, you will just receive a 'viewer not
        supported' message.

    #772465 (Bug #68885)
        Git users may now perform pre-commit reviews using Swarm, via
        Perforce Git Fusion. To start a pre-commit review, simply push to
        /reviews/master/new, where 'master' is the target branch. More
        details on usage are available in the Swarm documentation.

    #767962, #775774, #776148 (Bug #66723)
        Restricted changes are filtered from the UI if the user does not
        have permission to view them.

Minor new functionality in 2014.1

    #775670 (Bug #65494)
        Swarm checks for the existence of the config.php file and if not
        present, displays a suitable error to the user.

    #775412 (Bug #68201)
        RTF files, although text, will now be rendered through the
        LibreOffice module if present.

    #772469 (Bug #70803)
        The strict and enforce trigger types can now be scoped to just
        changes in a review using the -r flag. This allows unreviewed
        changes to proceed, but changes in a review must be approved.

    #771462 (Bug #70758)
        When calling automated tests for a review, Swarm now lists only
        branches impacted by the current change in the {branch} and
        {branchName} keywords.

    #770126 (Bug #70798)
        The amount of time and memory that worker processes use is now
        constrained. Previously, a worker could use an unlimited amount of
        memory and run for ever (no limits). Now, the limits for a worker
        can be set in the config file and default to 1GB and 30min
        respectively. The 30min timeout is reset for each task. No task
        can spend more than 30min of CPU time.

    #765295 (Bug #70583)
        For a project's branches listed on the project page, the mainline
        branches are displayed first, and the remaining are now sorted
        alphabetically.

    #762726, #763003, #770626, #773997 (Bugs #70611, #70612, #70613)
        Further reduced memory consumption in the processing of users and
        groups. For example, with 10,000 users and over 1,000 groups, Swarm
        previously used ~140MB of memory when populating the caches and
        ~120MB when reading from the caches; with these changes, memory
        usage drops to ~35MB and ~12MB respectively.

Bugs fixed in 2014.1

    #777472 (Bug #70940)
        Fixed an issue where improper permissions on the token directory
        would result in an infinite loop.

    #774788 (Bug #70842)
        Fixed an issue in Chrome when viewing a large image retrieved from
        cache would cause the page to continually refresh.

    #773886 (Bug #70813)
        Fixed display issues in IE with the filename bar on a review page.

    #772345 (Bug #70774)
        Improved the scrolling performance in Chrome on Review pages by
        manually instructing the browser which areas to repaint when
        scrolling a file.

    #769901 (Bug #70797)
        Fixed an issue where filenames with special characters were
        improperly displayed in a comment tagline.

    #769859 (Bug #69623)
        Fixed an IE11 performance issue when viewing the Reviews page.

    #766082 (Bug #70599)
        Fixed an issue when browsing project files would cause a HTTP 500
        error if one of the project's branch definitions contained a path
        ending with a slash (as opposed to '/...').

--------------------------------------------------------------------------

Major new functionality in 2013.3

    #749961, #750778, #751112 (Bug #69119)
        Swarm now allows participants to vote up or down on a review. The
        reviews page replaces the participants columns with an up/down
        votes column.

    #730156, #747698, #748957 (Bug #69279)
        Swarm can now emulate IP-based Perforce protections. Swarm will
        check the user's IP address and use it to apply any necessary
        restrictions, such as when browsing files, viewing file content,
        viewing & adding comments on files.

    #724625 (Bug #60905)
        Added ability to comment at the file-level on reviews and changes.
        Files in changes and reviews will now have a footer to display and
        add comments similar to the existing inline comment interface.

Minor new functionality in 2013.3

    #751165 (Bugs #68207, #69624)
        Eliminated redundant commit activity and email notification. This
        would occur when a change linked to a review was committed. Now,
        the commit is reported only once.

    #751085 (Bug #69749)
        Old invalidated cache files are now cleared out periodically.

    #750074 (Bug #70114)
        Swarm will log warnings when Perforce commands take longer than a
        prescribed time. By default, the print, submit, sync, shelve, and
        unshelve commands' threshold is 10 seconds; for all others, it is 3
        seconds.

    #749100 (Bug #70023)
        Swarm will perform XHProf profiling if the 'xhprof' PHP extension
        is present and requests take longer than a prescribed time (by
        default, 3 seconds). Data collected will be placed in the
        data/xhprof directory.

    #748526 (Bug #70110)
        When browsing a project's branches, mainlines now appear first and
        are bolded as they are the most frequently accessed codelines.

    #747404 (Bug #70017)
        The Swarm distribution now includes P4PHP binaries for PHP 5.5.

    #745637 (Bug #69980)
        Commit email notifications now include a link to their associated
        review.

    #734207, #751251 (Bug #69487)
        Swarm can now display deleted files and folders when browsing
        files.

    #732930 (Bug #69636)
        Added support for hashtag (more formally known as "octothorpe"!)
        style review keywords; e.g. #review or #review-1234. Note the
        keyword is only honoured if it is preceeded and followed by either
        whitespace or EOL/SOL. Unlike the square-bracket convention
        [review], the hashtag style review keyword can appear anywhere in
        the description, not just at the beginning or end.

    #728989 (Bug #60909)
        Users can now comment on jobs in Swarm under the new 'Comments' tab
        on the job page. When there is a new comment, Swarm will send an
        email notification to users listed in 'user' fields in the job,
        @mentioned in the job description and users of associated changes.

    #728163 (Bug #69542)
        Avoid session locking to improve performance when making multiple
        simulatenous requests. This should improve the ability to browse in
        other tabs while file previews are being converted/transferred.

    #723845 (Bug #64834)
        Added a system information page (/info), accessible to users with
        admin privileges. The page displays Perforce Server information,
        PHP info, and the Swarm log, which can be downloaded.

    #722080 (Bug #69406)
        Enhanced the 'jobs' route to automatically prepend 'job0...' if the
        given ID is numeric and doesn't exactly match an existing job. For
        example, /jobs/12345 will resolve to /jobs/job012345.

    #721850 (Bug #69380)
        Added a new 'disable_commit' option under the 'reviews' section in
        the configuration. Enabling this option will remove the "Approve
        and Commit" and "Commit" options from the Swarm web interface.
        External commits via traditional Perforce clients will still be
        possible. This setting is false by default.

    #720456 (Bug #69290)
        If a user adds themselves as a review participant, Swarm will no
        longer email the new participant, though all other participants
        will still be notified.

    #719792, #719938 (Bug #69245)
        Added icons next to changes listed on the jobs page to indicate
        their type (review, commit, pending).

    #718564 (Bug #69206)
        Added new 'http_client_options' configuration. This allows
        administrators to specify HTTP communication options (particularly
        useful for HTTPS related options) either globally, or host-
        specific.

    #716765 (Bug #65289)
        Improved HTTPS support via a 'strict_https' option. When enabled,
        viewing an HTTP link will include a meta-refresh to the HTTPS
        version, a strict transport security header will be included for
        all HTTPS requests (pinning the browser to HTTPS for 30 days), all
        qualified URLs will use HTTPS for the scheme, and cookies on HTTPS
        connections will be flagged HTTPS-only

    #716542 (Bug #66938)
        Updated the Jobs page to allow selecting and re-ordering columns
        representing job fields.

        Columns can now be selected via the 'Select Columns' drop-down
        button located beside the search box.  Users can select columns to
        show in the table below by checking them in the drop-down (showing
        all available fields, where the selected ones are always located at
        the top of the list).

        Selected columns can also be re-ordered, either by dragging them
        into desired spot in the drop-down or in the table header.

    #714786, #715519, #715658, #719803, #720491 (Bugs #69093, #69647)
        Swarm has a new design that is cleaner and brighter with fewer
        borders. The projects sidebar has been moved to the left-hand side
        of the home page. This fixes an issue loading activity on mobile
        devices. Events in the activity table are now color-coded (with a
        thin vertical line on the far-right edge) to indicate the type of
        activity.

    #714421 (Bug #69090)
        Enhanced our emojify filter to make use of Gemoji images if they
        are installed under public/vendor/gemoji. Gemoji provides support
        for more emojis and works on more browsers and platforms than the
        unicode codepoints we normally use. For more information about
        Gemoji, see https://github.com/github/gemoji.

    #713201 (Bug #68815)
        Introduced 'use_bcc' configuration item under 'mail' to address
        recipients of changelist notifications via the BCC field instead of
        the TO field. See the Email configuration section under
        Administration of the documentation.

Bugs fixed in 2013.3 patch 1 (since 2013.3/759531)

    #762450 (Bug #70489)
        Fixed an issue with the automated test and deployment integrations
        where the branch ID was passed but documented as the branch name.
        We now provide both the ID and name for branches and projects, and
        the documentation has been corrected.

    #762417 (Bug #70490)
        Addressed a browser performance problem involving collapsed files
        on review and changes pages.

    #761990, #762232 (Bug #70467)
        Improved the efficiency of processing Perforce groups to reduce
        memory consumption. For example, with thousands of users and
        groups, memory consumption is reduced by approximately 80%.

    #761155 (Bug #70461)
        Fixed the queue location when using the SWARM_DATA_PATH override.

Bugs fixed in 2013.3

    #757302 (Bug #69995)
        Fixed a bug where multibyte UTF-8 sequences in user ID's could lead
        to HTTP 500 errors.

    #755964 (Bug #70225)
        Fixed the activity display for a user whose ID contains a period.

    #751230 (Bug #69672)
        Fixed erroneous 'approved' email when committing a review from
        Swarm where the review was already approved.

    #751219 (Bug #69696)
        Fixed an issue where including an invalid change number when adding
        a commit to a review would throw an exception instead of returning
        a nicely formatted error.

    #751195 (Bug #65646)
        Fixed an issue where the 'Commit' button in the Commit Review
        dialog became prematurely enabled.

    #751100 (Bug #69666)
        Fixed an issue where some errors were not being displayed when
        failing to commit a review from Swarm.

    #751043 (Bug #67471)
        Fixed an issue where a long description of a history entry would
        not be collapsed.

    #751013 (Bug #68809)
        Fixed an issue where a change description that contained a line
        with only a period as its content would cause email notifications
        to be truncated at that point.

    #747494 (Bug #69651)
        When showing historic context lines on comments, the old context
        will now only be shown once when it applies to multiple sequential
        comments.

    #747607 (Bug #70022)
        Swarm now properly disconnects from the mail server after sending
        an email. Previously, a timeout error could occur if a worker
        processed multiple email related tasks.

    #746579 (Bug #65666)
        Swarm no longer throws an HTTP 500 error when an invalid depot is
        entered within the change select dialog.

    #745635 (Bug #69981)
        When editing a review description, mentioning a user (via @user)
        will now actually add that user as a review participant.

    #745911 (Bug #69204)
        On the history tab, searching for a user with invalid characters
        will no longer generate an error.

    #743323 (Bug #69928)
        Previews of office type documents no longer silently fail on CentOS
        and Red Hat Enterprise Linux.

    #736065 (Bug #69737)
        Work around a Chrome bug where clearing out the password field on a
        long page would freeze the browser. See http://crbug.com/180868 for
        details.

    #736112 (Bug #69743)
        Fixed a race condition that could cause the commit status to become
        erroneously stuck at 'unshelving...'.

    #732093 (Bug #66240)
        Fixed a bug where login would fail against a case-insensistive
        Perforce server if the username did not match case exactly.

    #719604 (Bug #69248)
        Fixed a bug where Unicode or UTF-16 text files were not displaying
        properly in Swarm; Perforce converts them to UTF-8 and Swarm now
        flags them as such.

    #716735 (Bug #69129)
        Fixed a bug where the wrong timestamp would be shown in the
        activity feed for certain timezones (e.g. AEST).

    #712670 (Bug #68949)
        Fixed a minor bug where the user could erroneously select a header
        row in the 'Select Job' dialog.

--------------------------------------------------------------------------

Major new functionality in 2013.2

    #680316, #681228, #691940 (Bugs #66717, #65503)
        Code reviews are now versioned. A historic copy of proposed work is
        maintained when the review is updated. This allows users to see
        each incremental change made to a review, as well as diff between
        adjacent versions to the review using the new Review Timeline.

    #679062 (Bug #66799)
        Several notable enhancements to the JIRA module. When a change is
        submitted or a review is created/updated, we find any associated
        JIRA issues, via associated jobs or callouts in the description,
        and ensure the JIRA issues link back to the review or change in
        Swarm. Further, the JIRA project list is now fetched automatically
        so you no longer need to hard-code it in the config.php.

    #676580 (Bugs #60923, #67538)
        Added support for committing streams-based reviews in Swarm. With
        this change, it is now possible use Streams-based projects.

    #668325, #680003 (Bugs #67216, 67653)
        Added support for viewing office type documents, such as Word,
        PowerPoint, Excel, Visio and rich text file formats. LibreOffice
        must be installed on the Swarm web server to take advantage of this
        feature. The Swarm OVA comes with the necessary LibreOffice
        components installed to enable this feature.

    #667587 (Bug #66586)
        Added support for previewing BMP, EPS, PSD, TGA, and TIFF formats.
        The ImageMagick PHP extension must be installed and enabled on the
        Swarm web server to take advantage of this feature. The Swarm OVA
        comes with this extension to enable this feature.

    #667207, #677868, #688353 (Bugs #64759, #65017, #67979)
        Swarm reviews and changes now provide a richer jobs integration.
        Users can add or remove job associations for changes and reviews.
        Swarm now allows job selection in the 'Commit Review' dialog,
        similar to P4V. Also, if jobs are present when updating a reviews
        files the jobs will be added to the review.

Minor new functionality in 2013.2

    #695725 (Bug #60941)
        Users with permissions to edit projects can now also delete them
        via a new 'Delete' button in the 'Edit Project' page (confirmation
        is required via the tooltip).

    #695350 (Bug #68256)
        The default diff mode is now side-by-side; your last used diff mode
        will be remembered so this change primarily affects new users.

    #692127 (Bug #68153)
        Swarm now includes Linux variants of P4PHP that are built with
        glibc 2.3.3 to support older distributions, such as Red Hat
        Enterprise Linux 5.9. See the INSTALL.txt for more information.

    #689920 (Bug #68028)
        Swarm's session name now defaults to 'SWARM' for web servers
        running on port 80 or 443. For Swarm instances running on any other
        port, the session name defaults to SWARM-1234 where 1234 is the
        port number in use. This allow running several Swarm instances on a
        single server differentiating them by port and session name.

    #689744 (Bug #66724)
        Revised icons for added, deleted and edited files. These icons are
        colorful with larger +, - and pencil symbols. They should make it
        easier to distinguish between the various actions.

    #689613 (Bug #67755)
        Swarm can now be configured to use a custom avatar URL pattern
        allowing administrators to provide their own avatar server or
        disable custom avatars altogether. By default, custom avatars
        continue to come from Gravatar.

    #688945 (Bug #68046)
        Added a goto route for full or partial Git Fusion SHA1 commits that
        will redirect to the corresponding changelist. e.g.:
        http://myswarmhost/42697a7a79

    #680508 (Bug #62181)
        Swarm now anchors the file toolbar to the top of the window on
        changes/review pages so it stays in view while you are scrolling
        through a file.

    #675826 (Bug #67413)
        Added support for emoji shorthand (e.g. :smile:); see
        http://www.emoji-cheat-sheet.com for the full list.

    #672699 (Bug #66610)
        Users can now filter the history tab by user when browsing.

    #672363 (Bug #63199)
        Added a apple-touch-icon for iOS (and apparently Android) devices.
        Just one size (144x144) for simplicity.

    #671993 (Bug #67389)
        Restyled the error pages to incorporate our new mascot Bizzy
        Heisenbug and be more scalable/responsive.

    #669938, #693013 (Bugs #66534, #68206)
        Swarm no longer emails the user who commented or performed a review
        state change. Other interested parties are still emailed.
        Additionally, editing a review's description no longer generates an
        email.

    #666778 (Bug #67154)
        Added a new 'prevent_login' configurable to specify a list of
        Perforce users that are not allowed to log in to Swarm.

    #665482 (Bug #67108)
        We now collapse multiple occurrences of certain characters (e.g.:
        ASCII lines) in the subject lines of change notification emails.

    #664426 (Bug #67065)
        Added hooks for previewing non-web-safe file fomats. A custom
        module is required to add support for other formats. In the
        module's bootstrap method you can grab the format manager and add a
        new handler. See the Imagick or LibreOffice modules for example
        usage.

    #664389 (Bug #65015)
        Added a 'My Reviews' filter to the review queue to show only
        reviews the current user is participating in.

    #661459 (Bug #66679)
        Improve configuration error page displayed if PHP-specific
        misconfigurations are detected (such as an unsupported PHP version,
        or missing PHP extensions). All detected misconfigurations are now
        shown in a list. Also, the path to all php ini files is shown to
        ease administration.

    #660436, #669261 (Bug #66573)
        Email notifications from Swarm now include additional email
        headers, 'X-Swarm-Host' and 'X-Swarm-Version'.

    #657062 (Bugs #66598, #66599)
        We now show the text of comments and the description of file
        updates on the review history tab.

    #656605 (Bug #66931)
        Added the ability to set the DATA_PATH via environment variable,
        SWARM_DATA_PATH. This can facilitate hosting multiple Swarm
        instances using a single Swarm installation.

Bugs fixed in 2013.2

    #704590 (Bug #68710)
        Queueing tasks will no longer log a PHP warning in the Apache error
        log when multiple tasks are added in the same millisecond.

    #703451 (Bug #68531)
        Fixed an issue where Swarm would display a 404 error if attempting
        to access the Apache info or status modules' handler paths. Swarm
        now detects if those modules are enabled, and if so, allows access
        to their paths.

    #696121 (Bug #67233)
        Fixed an issue when using Safari where PDF documents would be cut
        off strangely at the bottom of the window.

    #696076 (Bug #68041)
        Fixed an issue when using Internet Explorer where hitting enter in
        a text field would erroneously trigger nearby buttons.

    #691483, #692576 (Bug #68129)
        Swarm no longer "linkifies" deleted user IDs when showing the author
        of a change, comment, activity, etc.

    #689915 (Bug #68056)
        Fixed a bug where URLs using IP addresses were not being linkified.

    #689661 (Bug #68044)
        Fixed issue where Swarm would fail if the 'json' or 'session' PHP
        extensions were not installed; Swarm now checks for the presence of
        these extensions.

    #688137 (Bug #68043)
        Fixed .htaccess rules to allow viewing of documentation when PHP is
        not installed.

    #686394 (Bug #67908)
        Fixed an issue where older systems (e.g.: RHEL/CentOS) would not
        recognize a form of regular expression named capture groups; Swarm
        now uses a more backwards-compatible form.

    #686358 (Bug #67905)
        Fixed an issue where older systems (e.g.: RHEL/CentOS) would fail
        to fetch activity or reviews due to unexpectedly treating the ID as
        a float instead of an integer.

    #685439 (Bug #66446)
        Fixed an issue where the initial activity import could result in
        out of order activity records.

    #684802 (Bug #67816)
        Fixed an issue where token-based auth (alone) wouldn't work for
        deploy and automated test integration if require_login was enabled.

    #681666 (Bug #67720)
        Fixed an issue where it was possible to get an unexpected connect
        exception when accessing Swarm with a partially expired session.

    #681586 (Bug #67507)
        When logging warnings and errors, we no longer include context.
        Large values and excessive escapement made context useless.

    #680229 (Bug #67669)
        Fixed a race-condition where committing through Swarm could fail if
        the change was renumbered upon submit.

    #680188 (Bug #67652)
        Fixed display issues exposed in Firefox when navigating files.

    #679223 (Bug #67616)
        Fixed validation of group names. The rules we were enforcing in
        Swarm did not match the rules enforced by the server.

    #678458 (Bug #67592)
        Fixed a bug that prevented the minified consolidated web assets
        from being included in the distribution.

    #676317 (Bug #67445)
        Fixed an issue where the Comments 'Archive' and 'Restore' buttons
        weren't labelled for screen readers.

    #673297 (Bug #67431)
        Fixed a bug where Swarm only matched the first keyword and stopped.
        If someone used the [review] keyword at the start and end of their
        description this would have left one behind.

    #671254 (Bug #67342)
        Fixed a bug where commenting above a padding line caused a comment
        indicator to appear on the padding line.

    #671092 (Bug #67126)
        Added roles and ARIA labels to fix an issue where the All Projects/
        My Projects dropdown was undiscoverable by NVDA, and where the Add
        Project Link wasn't being described at all by NVDA.

    #669528 (Bug #67262)
        Fixed a bug where the display of ignored whitespace on context
        lines in Swarm was inconsistent with p4 diff/P4Merge if you used
        the 'Show Full Context' feature.

    #668045 (Bug #67214)
        Improved handling of purged files in diff. We no longer attempt to
        show or diff purged files.

    #668043 (Bug #67162)
        Fixed a bug where searching within Help was not working.

    #667916 (Bug #67195)
        Improved Approve & Commit error handling to ensure the attempted
        change is deleted on failure.

    #667915 (Bug #67106)
        Fixed an issue where the pdf preview area was very small on Firefox
        and Internet Explorer.

    #667770 (Bug #67185)
        Fixed an endless loop that could occur when Swarm attempted to
        obtain a client to use from its client pool if file permissions
        were invalid.

    #667226 (Bug #67166)
        Fixed an issue in Swarm Jobs Search where it would still reload
        your query on search blur even after you had just loaded the query
        using the enter key.

    #666601 (Bugs #65684, #67055)
        Fixed an issue where using the back button on a Job page would take
        you back to search page with the previous search filled into the
        field, but not properly filtered in the results.

    #665678 (Bug #67210)
        Fixed a bug where a changelist description that had a numbered list
        item could be linkified if the previous line ended with "change".

    #657378 (Bug #66826)
        Fixed a bug where avatar selection was not consistent when using
        the Suhosin version of PHP. This is because srand() is disabled for
        security reasons.

--------------------------------------------------------------------------

Major new functionality in 2013.1

    #647347 (Bug #66023)
        Replaced the grab/release review feature with multiple reviewers.
        It is no longer possible to grab or release a review. Instead,
        anyone other than the auther who participates in a review (e.g.
        comments on, changes the status of, pushes code to, etc.) becomes a
        'reviewer'. Swarm now displays a row of reviewer avatars beneath
        the description of a review. The avatars are preceeded by the text
        'Reviewers' and are aligned right. Users can click to add
        themselves to a review.

        On the reviews queue, the 'Reviewer' column has been removed and a
        new 'Reviewers' column has been added. The reviewers column shows a
        count of reviewers and, when hovered, lists the names of all
        reviewers in a tooltip. Similarly, the assigned/unassigned filter
        has been replaced with a has-reviewers/no-reviewers filter.

    #647277, #647325 (Bug #65934)
        Swarm now requires a license to run against a licensed Perforce
        server. Without a Swarm license, Swarm's functionality is not
        restricted in any way, however a license violation notification
        appears for every page.

        Swarm does not require a license to run against an unlicensed
        Perforce server.

        If Swarm is licensed for fewer users than the Perforce server, only
        members of the 'swarm' group, or a sub-group, are allowed to login
        to Swarm. If a non-member attempts to login and the swarm group is
        not already at capacity, an attempt will be made to automatically
        add them to the group so long as: security => disable_autojoin
        hasn't been set to true (by default it is false).

        Auto-join is not available on Perforce Server versions prior to
        2012.1. In that case it is akin to auto-join being disabled and
        Swarm will handle the login failure gracefully.

        Contact sales@perforce.com to purchase a license or start a free
        trial.

    #645705, #646629, #647327 (Bugs #63686, 65936)
        Swarm now has additional trigger types for review enforcement and
        strict content checking. The '-t enforce' type enforces that
        submits are associated to an approved review. The '-t strict' type
        goes further and ensures that the content being submitted matches
        the content of its approved review. Using '-g <group>' with either
        allows an exempt user group that isn't subject to the check. See
        the documentation on triggers for further information.

    #645011, #645217 (Bugs #60966, #63100)
        Swarm can optionally act as a review daemon, emailing notifications
        about changes to paths that users have expressed interest in via
        reviews entries in their user form; see the documentation on email
        notifications.

Minor new functionality in 2013.1

    #652213 (Bug #66450)
        Swarm pages now include meta information that inform Internet
        Explorer to always use the latest document standards when
        rendering. This prevents users from accidentally running Swarm in
        Compatibility Mode, which is not supported.

    #650691 (Bug #65055)
        Swarm now supports additional browser versions: Apple Safari 5.1+
        and Microsoft Internet Explorer 9.

    #648677 (Bug #66005)
        Added logic to automatically upgrade review records anytime they
        are saved. This is necessary to accommodate changes made to review
        records since 2013.1.BETA/629891.

    #648653
        Added .ico files to the list of 'viewable' (browser-safe) image
        file types.

    #648129, #648274 (Bug #66473)
        The Swarm virtual appliance (OVA) is now based on Ubuntu 12.04.2
        LTS. Connections to SSL-enabled Perforce Servers is now possible.
        The supplied config.php file contains more default entries to make
        customization easier (logging level, notifications to honor P4
        reviews). PHP upgraded to 5.4.15 and is now available in the path.

    #648004 (Bug #66467)
        Swarm now supports a facility for automated deployment for code
        reviews. When configured, a 'Try it out' button will appear on code
        reviews so that reviewers can run the code with minimal effort.
        This facility works very much like the automated tests integration.
        You can optionally specify a 'deploy' url and can pass it
        paramaters such as {change}, {status}, {review}, {project},
        {branch}, {success} and {fail}.

        Everytime a code review is started or its files updated, the deploy
        url will be called. If the build works, your deploy script simply
        requests the {success} address and includes a 'url' get or post
        parameter. If the build fails, your deploy script can optionally
        request the {fail} address. Including a failure url parameter is
        optional but supported.

    #647030 (Bug #66255)
        Changed the title for the personal activity stream from 'Activity'
        to 'Followed Activity'.

    #646877
        Removed the 'Re:' prefix from comment email subjects. They were
        interferring with threading in Gmail.

    #646335 (Bug #66376)
        For Perforce activity initiated from Swarm, the Perforce Server log
        now correctly shows the client as Swarm instead of P4PHP.

    #645421 (Bug #66365)
        Users can now associate additional submitted changes to an existing
        review.

    #645245 (Bug #65597)
        Update the included P4PHP binaries from 2013.1/617119 to the latest
        patched version (2013.1/644389), which includes a crash fix.

    #642465
        Added two links to the committed change on the review page. One
        link is in the byline: '... committed 2 days ago in 54321' (the
        change number is a link). The second link is left of the
        add/edit/delete file count. Previously Swarm showed the change
        number in this location, but it was not a link.

    #640209 (Bug #65894)
        From the Reviews page, Users can click the review state icon to go
        to the review detail page.

    #640072 (Bug #65935)
        Swarm can now properly operate behind a forwarding Perforce
        replica.

    #639765
        The Swarm trigger now tries to use 'wget' first, then 'curl', as
        'wget' is more common. Also modified added the -o flag for
        displaying its trigger table entries.

    #639202, #639414, #639415, #639426, #647014, #647348 (Bug #65937)
        JavaScript performance improvments were made to fix issues around
        logging in and commenting when having many files expanded.

        On a change with 20,000 lines of code, Chrome was taking 140
        seconds to log in; now it takes under a second to log in or
        comment. The expand all on that change was taking around 20 seconds
        in Chrome, but now takes about 3 seconds.

    #637198
        Renamed comment 'close/reopen' to 'archive/restore'.

    #636834 (Bug #64168)
        A notice is displayed if there is no activity to display.

    #636826 (Bug #66031)
        Swarm now allows ticket based login for end-users.

    #636565
        Users @mentioned in change descriptions or comments were not
        previously notified.

    #634561
        Don't send email notification for passing tests unless they were
        previously failing.

    #634313 (Bug #65893)
        Searching on the review page is now case-insensitive.

    #633930
        Swarm now shows the 'committed' icon for reviews that are both
        approved and committed. This is just one more visual clue that the
        review you are looking at is committed.

    #630853 (Bug #65040)
        Swarm now has a new logo; ooh, ahh.

    #620870 (Bug #65042)
        Improve the layout for editing a Swarm project.

Bugs fixed since 2013.1/667767

    #674403 (Bug #67464)
        Fixed a bug where invalid email addresses could prevent valid
        email addresses from receiving messages.

    #673093 (Bug #67415)
        If the change spec was missing the 'Type' field, viewing changes
        was not possible. Swarm is now tolerant of Type not being present.

    #673030 (Bug #67381)
        Fixed a race condition when grabbing tasks out of the queue; in
        some cases, two workers could grab the same task. This manifested
        as unlink warnings in the Swarm log file.

    #672407, #674413 (Bug #67397)
        If custom triggers send output to stdout or stderr, it could cause
        Swarm to malfunction when processing Perforce forms. Swarm is now
        more tolerant of noisy triggers.

    #672230 (Bug #67274)
        If the Perforce Server was restarted during the lifetime of a Swarm
        worker (e.g. a p4d restart), the worker's connection would become
        unusable causing it to throw away tasks. The workers now attempt to
        auto-reconnect to Peforce and they will only process tasks if they
        have a valid connection.

    #671840 (Bug #67299)
        Updated the license validator to handle any command exception; this
        fixes an error that could occur at login on 2010.2 Servers.

    #671322 (Bug #67354)
        Fixed a bug where Swarm's defense against ClickJacking attacks was
        not properly enabled.

    #671321 (Bug #67350)
        Fixed an XSS vulnerability in branch name rendering.

    #670131 (Bug #67309)
        Fixed a bug where users were not being emailed notifications for
        submitted changes against projects they followed (but were not
        members of).

Bugs fixed since 2013.1/652715

    #667718 (Bug #67180)
        Noisy change triggers could prevent Swarm from capturing the number
        of newly created changelists. Swarm now skips over trigger output.

    #667713, #667741 (Bug #67179)
        Certain empty fields in jobs (such as 'user') could cause a 500
        internal server error. Swarm now checks for empty values before
        performing additional processing on special job fields.

    #665389 (Bug #67021)
        Swarm did not show or diff the contents of Unicode or UTF16 files.
        These file types are now treated as text and safe to show or diff.

    #664119 (Bug #67045)
        Swarm's enforce trigger (designed to prevent un-approved submits)
        would occassionally reject an approved submit because of a subtle
        inconsistency in how Swarm was writing review records.

    #662273 (Bug #66963)
        Login and other operations that checked a user's group membership
        could fail with a 500 internal server error if the Perforce Server
        contained any groups with a null id (ultimately due to Perforce
        Server Bug #37630).

    #661073 (Bug #66703)
        The reviews page could issue an excessive number of XHR requests
        against the Swarm server when loading more reviews. Fixed the logic
        that throttles these requests.

    #660074 (Bug #66886)
        Fixed an issue where Swarm could produce a 500 internal server
        error when connecting to a SSL enabled Perforce Server for the
        first time.

Bugs fixed in 2013.1

    #652570 (Bugs #64063, #65566, #65711)
        Dates and times of committed changes and created/updated jobs shown
        on various Swarm pages (Change, Changes, Job, Jobs, Review) were
        incorrect if the user's client machine was in a different timezone
        than Swarm and/or the Perforce server.

    #652515 (Bug #65637)
        IE10 failed to load a single file change if your page first loaded
        with a tab other than Files, such as Comments or History.

    #651899 (Bug #66551)
        The undocumented activity delete action would not function when
        using the -m <max> argument.

    #651855 (Bug #66540)
        If require_login was enabled, console actions would not function.

    #651312 (Bug #66593)
        Web-safe images were not being properly displayed if their filename
        extension was in upper case.

    #647388 (Bug #65304)
        Branches with multiple paths did not map correctly into the
        project's file's branch folder.

    #647380 (Bugs #65525, #65555)
        Filtering the activity or the review queue too quickly would result
        in the toggled filter buttons being out of sync with the actual
        filtered content.

    #647349 (Bug #65831)
        Searching for jobs using an invalid field would cause an HTTP-500
        error.

    #646245 (Bug #65581)
        Logging in would always redirect you to the homepage instead of
        refreshing the current page if the config.php setting
        require_login=true was set.

    #645363 (Bug #65053)
        The changes pages would show up blank when navigating to them using
        your back/forward buttons in your browser.

    #645356
        Made the 'already committed' change selector dialog work even if
        the current change has no base path defined. Previously, if there
        was no base path Swarm would report a 500 error.

    #645338
        Fixed an issue where the review state menu was inoperable if a
        commit was underway. This was happening because Swarm polls for
        commit-status every second and rebuilds the menu. Now, Swarm only
        rebuilds the menu if there is new data.

    #645255 (Bug #65051)
        Avatars' height could be slow to render; Swarm now makes avatars
        take up their proper space before they are loaded.

    #642636 (Bug #65052)
        Browsing history against a remote depot incorrectly would report
        'no matching changes'; Swarm now correctly reports that change
        details are not available.

    #640153 (Bug #64605)
        Email notifications would show occasional signs of corruption.

    #638212 (Bug #66076)
        Invalid UTF-8 characters in a Perforce user name could prevent the
        add/edit project functionality from working correctly; Swarm now
        filters out invalid UTF-8 characters.

    #637913 (Bug #66053)
        Swarm would not warn if the P4PHP extension was missing or not
        loaded; it now displays a message with a link to the documentation
        on how to configure it.

    #637871 (Bug #66073)
        Authentication triggers that outputted additional text could
        prevent Swarm from processing the login correctly; Swarm is now
        more tolerant of "noisy" authentication triggers.

    #637643 (Bugs #65236, #65474, #65491)
        Empty paths, embedded wildcards or non-existent depots in a
        project's branch definition would cause an error at the project's
        files page; these scenarios are now guarded against during entry.

    #636855 (Bug #66021)
        Swarm would duplicate activity if activity occurred after its
        triggers were provisioned, but before any workers were provisioned.

    #636427 (Bug #65632)
         If the user's ticket expired, an error to be shown the first time
         a page was shown after session expiration.

    #635184 (Bug #65978)
        Browsing files for a project produced 404 errors due to malformed
        URLs in certain environments.

    #634443 (Bug #64376)
        Collapsing comments in inline mode wouldn't work correctly in
        certain scenarios.

    #633171 (Bug #65558)
        Under certain circumstances with user auto-creation, new users
        could not log in, due to the user form-commit trigger not firing;
        Swarm now handles this situation properly.

    #632803 (Bug #65567)
        Swarm would incorrectly display a caret on the review state button
        if you weren't logged in.

    #632794 (Bug #65833)
        The blame button would dissapear when using the view or download
        button in the file browser.

    #631059 (Bug #65790)
        Plain text files were inappropriately syntax-highlighted.

    #630180 (Bug #65549)
        Line numbers could be duplicated in browse files view after
        revisiting the page.

--------------------------------------------------------------------------

Major new functionality in 2013.1 Beta

    #623534 (Bug #63691)
        If 'require_login' is enabled, anonymous users can only access the
        login screen.

    #621958, #622013 (Bug #60937)
        Files and history of a project can be browsed directly from the
        project overview page.

    #619149, #622680 (Bug #65003)
        Perforce commands are issued as the authenticated user wherever
        possible.

Minor new functionality in 2013.1 Beta

    #625175 (Bug #65033)
        User can click the tests result icon on a review to open the
        results URL passed back from the automated tests.

    #624174 (Bug #65032)
        If a valid user id is @mentioned it will now be included on emails
        and, if in a review, added as a review participant.

    #624156 (Bug #65002)
        Authentication tokens are now required for the trigger script to
        queue events to Swarm.

    #624051 (Bug #65013)
        Users can edit the review description.

    #623812, #624003 (Bug #60925)
        Only project members, admins or supers can edit a project.

    #622008 (Bug #65034)
        An icon representing the automated tests status is now displayed on
        the review page.

    #621443 (Bug #65041)
        Jobs affecting a project can be accessed directly from the project
        overview page.

    #619330 (Bugs #65012, #64455)
        Improve the review byline and avatar to reflect the author and
        affected projects.

    #619083, #624718 (Bug #64995)
        Users can see all the committed changes associated with a review.

    #618709, #619502 (Bug #63914)
        Users can close/dismiss comments.

Bugs fixed since Beta 2013.1/627815

    #629873 (Bug #65689)
        If running a 2012.1 or newer Perforce Server, add project could
        fail with a HTTP 500 response.

Bugs fixed in 2013.1 Beta

    #625383 (Bug #65228)
        When a user enters a malformed or unsupported P4 username, it can
        generate an HTTP-500 error.

    #623461 (Bug #63734)
        Swarm attempted to display non-web-safe images, such as psd files;
        restrict display of images to gif, jpg, png, & bmp.

    #620292 (Bug #65069)
        Reviews that were created upon submit by including the [review]
        keyword did not show in either the opened or closed tabs after
        being approved.

    #618290 (Bug #64976)
        Swarm OVA has PHP timezone hard-coded to America/Los Angeles. This
        causes Swarm to show the incorrect time for events if the OVA runs
        in a different time zone.

    #618219, #624007 (Bug #64760)
        The Blame button would sometimes result in an HTTP-404 or an
        HTTP-500 error.

--------------------------------------------------------------------------

Minor new functionality since Beta Preview 2013.1/614107

    #617359, #617382, #617383 (Bug #64837)
        Improving the already committed dialog. It will now load more
        changes when scrolled, allows filtering by user and allows changing
        the 'path' being filtered.

    #616871 (Bug #64919)
        If you follow a user, their activity now appears in your
        personalized activity stream.

    #616687 (Bug #64913)
        A monospaced font is now used for input for the description when
        selecting 'approve and commit' or 'commit' on a review.

Bugs fixed since Beta Preview 2013.1/614107

    #617444 (Bug #64888)
        Selecting Approve and Commit on a review failed to clear the Swarm
        managed shelved change.

    #616978 (Bug #64940)
        The 'open file' button on changes and reviews lacked a tooltip.

    #616305 (Bug #64895)
        The example config.php file contained a syntax error.

    #616258 (Bug #64941)
        The unassigned filter on the reviews page did not work.

    #614938 (Bug #62155)
        Unassociated jobs could be shown on a change/review if they had a
        matching component e.g. 'foo-bar' when only 'foo' is present.

--------------------------------------------------------------------------

END