Release Notes for Perforce Swarm Version 2014.2 Introduction Perforce Swarm (hereafter referred to as "Swarm") enables collaboration and code review for teams using Perforce that will help your teams ship quality software faster. This document lists all user-visible changes to Perforce Swarm for Release 2014.2. Perforce numbers releases YYYY.R/CCCCC, e.g. 2014.2/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. --------------------------------------------------------------------------- Documentation Swarm Release 2014.2 documentation is included in the distribution under the "public/docs" folder and can be accessed from within the Swarm from the "Help" menu on the toolbar once logged in. Additionally, the documentation is available online: * http://www.perforce.com/perforce/doc.current/manuals/swarm Supported Client Browsers Swarm supports the following client web browsers and versions: * Apple Safari 5.1+ * Google Chrome 33+ (stable channel) * Microsoft Internet Explorer 9+ * Mozilla Firefox 28+ 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. Installation and Supported Platforms Please see the separate "install" file, a peer to this file. Upgrading from Prior Versions Please see the separate "upgrade" file, a peer to this file. License Please see the separate "license" file, a peer to this file. Known Limitations Access Control When a user adds an inline comment on code, the context, (an excerpt of the code), is saved in a Perforce key that can be read by any user with review access. If using Swarm against a production Perforce instance, it should be scoped to areas where all users have read access by configuring protections for the Swarm user to exclude private areas of the depot. Perforce servers at version 2013.1/659207 or higher have a configuration setting to require admin access to read keys. To enable this, issue the command 'p4 configure set dm.keys.hide=2' to limit access to keys. Installation Swarm must be installed to the root of a domain. We recommend creating a virtual host dedicated to Swarm. LibreOffice LibreOffice may become unresponsive, requiring the manual removal of /tmp/OSL_PIPE_* to restore preview functionality. Due to issues with LibreOffice's "headless" mode on the Mac platform, Swarm cannot display DOC, PPT, XLS and RTF file formats if it is installed on the Mac platform. Task Stream Reviews Pre-commit reviews in a task stream are not yet supported. Trigger script for Windows We include a trigger script for both Linux/Mac and Windows; however, the Windows variant currently lacks support for the 'enforce' (enforce that submits are tied to an approved Swarm review) and 'strict' (ensure the content of submits matches the content of their associated approved Swarm review) trigger types. Trigger table entries with '%quote%' not supported on 2010.2 The Swarm trigger scripts (found in p4-bin/scripts) document the trigger table entries to add, making use of '%quote%' to surround the pathname to the script; however, '%quote%' is not supported on 2010.2 Perforce Servers (they are harmless though). If you're running 2010.2, ensure there are no spaces in the path to the trigger script. Upgraded Third Party Software The following included Perforce software was changed with this release: * P4PHP 2013.1/644389 (2013.1/685046 API) -> 2013.1/644389 (2013.1/821990 API) The following included third party software was changed with this release: * jQuery 1.9.1 -> 1.11.0 * JSRender 1.0pre -> 1.0.0beta * Zend Framework 2.1.4 -> 2.2.6 -------------------------------------------------------------------------- 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 (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 ' 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 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. -------------------------------------------------------------------------- Credits Perforce Swarm, from the fleet fingers of Petr Havlik, Nellie LeMonier, Stewart Lord, DJ Mountney, Geoff Nicol, Jessica Weber, Marc Wensauer, and Allan Yu. END