Summary of changes from January 26, 2018 to February 2, 2018.
| Codebase | Repository | {icon lock} | HEAD | Activity |
|----------|------------|--|------|----------|
| Phabricator | rP | | rP032f5b2294 | 33 commits |
| Arcanist | rARC | | rARC2e023322 | 0 commits |
| libphutil | rPHU | | rPHUcc343d0 | 4 commits |
| Instances (SAAS) | rSAAS | {icon lock} | rSAAS301336d | 0 commits |
| Services (SAAS) | rSERVICES | {icon lock} | rSERVICESedd96db | 0 commits |
| Core (SAAS) | rCORE | {icon lock} | rCOREdbd0d3f | 1 commit |
- These changes were promoted to `stable`.
General
=======
**Data Exporters**: Maniphest has been upgraded to the common data export workflow and the old {nav Export to Excel} button is now in the upper right menu under {nav Use Results > Export Data}.
Exporting data from Maniphest now produces a more complete set of data including the author, points, and some custom fields.
Old export format extensions (which subclass `ManiphestExcelFormat`) are no longer supported. In cases where these extensions were used to add additional fields, they may no longer be necessary, or it may be possible to reimplement them much more simply by subclassing `PhabricatorExportEngineExtension`. `ExportEngine` extensions can now add fields rather than needing to define an entire export pipeline. See `PhabricatorLiskExportEngineExtension` for an example.
**Edge Compaction**: Edge transactions are now represented more compactly. For the overwhelming majority of installs this will imperceptibly decrease storage requirements going forward with no other observable effects.
Previously, edge transactions were represented in an inefficient way. This had the greatest effect if your data or use cases involved writing a very large number of edges to a small number of objects, which is rare.
This is unlikely to happen under normal use by regular human users, but could happen if you import a repository where many commits mention other commits, or you use scripts to create lots of relationships between objects, or tag objects with thousands of projects, or do something similarly unusual. In these cases the storage requirements could compound explosively.
You can estimate how much storage is used by edge transactions by running `bin/storage probe` and looking at the `*_transaction` tables. Their combined size is an upper bound on potential waste.
These tables usually store a moderate amount of data, but are not normally among the largest tables in the databases. If `bin/storage probe` reports that any of your transaction tables are very large, you may be affected by the inefficient edge storage format. (You can double check this by looking at the data in the table and seeing if most of it is enormous blobs of highly redundant edge data.)
Edges can be compacted retroactively with `bin/garbage compact-edges`. Most installs will not need to do this. After compaction finishes, run `bin/storage optimize` to reclaim any recovered disk space.
See T13051 for some more details.
Security
========
**Remote Addresses**: The policy behavior for who can see remote addresses (client IP addresses) has been simplified.
Remote addresses are stored in user activity logs, pull logs, and push logs. Previously, administrators could see addresses in activity logs, while users who could edit the corresponding repository could see activity in pull and push logs.
This generally produced reasonable results but wasn't especially obvious or intuitive, and occasionally caused confusion or clashed with other organizational policies around handling this information. It also implied some implementation complexity.
The new policy rule is: **only administrators can see remote addresses**. This is now the behavior for activity logs, pull logs, and push logs.
There is one exception to this rule: in {nav Settings > Activity Logs}, which shows activity logs for your account, you can see addresses if: your account took the action; or the action was taken by an unauthenticated user and affected your account (usually, login). This allows users to review their own account logs for suspicious activity.
**CSV Execution**: We knew about this before we implemented CSV export so this doesn't fix anything, but see T12800 to understand why some cells in CSV exports are mangled.
Migrations
==========
- //No migrations in this period.//
Upgrading / Compatibility
=========================
- Old custom task exporters which subclass `ManiphestExcelFormat` are no longer supported. See above for details.
Data Exporters
==============
- Added an Excel exporter.
- CSV, Text, and Excel exporters now have header rows.
- Exporters no longer fails to find a suitable storage engine when exporting a file larger than 8MB.
- The export dialog now remembers the format you used last time.
- Exports affecting more than 1,000 rows are now processed in the background.
- Added a `bin/bulk export` tool for debugging exports.
- [{icon tint, color=sky}] User activity logs now support export.
- [{icon tint, color=sky}] Push logs now support export.
- Fixed an issue where queries using URI query parameters (`/?author=...`) ignored the parameters when filtering the export result set.
Minor
=====
- [{icon tint, color=sky}] `FileFinder` now uses literal semantics for `withName()` and `withSuffix()` across platforms. The new `withNameGlob()` supports glob semantics.
- [{icon tint, color=sky}] Really, seriously, definitely probably fixed a bug with Herald not using the acting viewer to retrieve commit data when executed from the test console.
- [{icon tint, color=sky}] Transactions with no available actions (for example, only inline comments) no longer show the dropdown caret.
- Fixed a PHP7.2 issue with `count(null)` in `PHUIInfoView`.
- Added date range filtering to activity logs, pull logs, and push logs.
- Push logs are now more human readable.
- [{icon tint, color=sky}] "Assign to" should now work properly in the bulk editor.
- Fixed an issue with comment actions that affect numeric fields like "Points" in Maniphest.
- `maniphest.edit` should now accept `null` to unassign a task, as suggested by the documentation.
- GitLFS over SSH no longer fatals on a bad `getUser()` call.
- [{icon tint, color=sky}] Commits and revisions may now `Reverts <commit|revision>` one another, and reverting or reverted changes are shown more clearly in the timeline.
//The [{icon tint, color=sky}] icon indicates a change backed by support mana.//