Major Enhancements

#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 Enhancements

#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.

Bug Fixes

#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 '/...').