* [CHD-3636] [Mail/Relay] Relayed messages are now always sent to workers using Cerb as the 'From:' address.  Previously, the original sender was spoofed, and this could cause problems with threading (in the worker's email reader) and mail server authentication.  It was also confusing to many workers who believed that customers were emailing them directly.  By default, the sender information is now included in the '##' template at the top of the message.  Existing relay actions on Virtual Attendant behaviors will need to reproduce this manually by using a placeholder for the sender.
* [CHD-3744] [Web-API/Tickets] The 'is_waiting' field on ticket records can now be updated and filtered through the Web-API.
[Code Cleanup]
* [CHD-3752] [Mail/HTML] Fixed an issue with external image links in HTML replies where the Markdown URL was being stripped out of the message stored by Cerb.  These are properly converted to plaintext URLs now.
* [CHD-3693] [Mail/HTML] When a worker has the "Always switch to HTML mode" setting enabled, this will now also apply to the compose popup.
* [CHD-3749] [Custom Fields/Links/VAs/Worklists] Virtual Attendant behaviors, snippets, and worklist exports can now use all of the placeholders from record link custom fields.  Previously these labels were not displayed due to issues with infinite recursion.  This feature be used in many ways; for instance: tasks can have a record link custom field for a precursor task; time tracking entries can have a record link custom field to a client organization for billing responsibility; organizations can have a record link custom field to a parent org; etc.  Record link custom fields are similar to the 'Links' tab on profiles, except they formalize a link between two records and provide usable placeholders for the linked record as if they came from native fields on that record.  A time tracking record that links to an org can reference any of that org's fields and custom fields.  Record links are only provided to two levels (to prevent clutter in labels), but custom behaviors can be run by a Virtual Attendant on a linked record to access its deeper record link custom fields.
[Code Cleanup/Subtotals] Subtotals are now indexed by their unique key (e.g. record id) rather than the label.  This makes it easier to use the contents procedurally (e.g. adding filters via API, or associating a label with a specific record).  This doesn't affect how subtotals work in the UI.
* [Web-API/Usability] When performing a search from the Web-API, a 'show_meta' option is now available.  This defaults to true, which displays the labels and types for each field in the results.  When false, this information is omitted, which is useful for saving bandwidth on subsequent search result pages, or when the requested field information is already known.
* [Web-API/Calendars] Fixed an issue when loading calendar custom fields through the Web-API.
* [Platform/Plugins] The DevblocksPlatform::strAlphaNum() convenience function now takes an optional argument for the text to replace invalid characters with.  By default this is blank, which just removes invalid character.  Using '_' instead will replace non-alphanumerics with underscores.  This is particularly convenient when the passed string is in a known format, like dot-notation (e.g. plugin.extension.name).
[API/Code Cleanup] Modified REST controller getContext() and search() method signatures to support arbitrary options.
* [CHD-3741] [Web-API/Subtotals/Search] It is now possible to retrieve subtotals when searching records through the Web-API.  This greatly improves integration with external monitoring, reporting, and dashboards.  For instance, open tickets can be searched and subtotaled by group/bucket, which makes it easy to chart these values over time.  Worker reply performance can also be charted through subtotals in the same way.  Subtotals can be retrieved with the search results, and multiple subtotal sets can be retrieved in a single request.
* [Web-API/Performance] Improved performance in the Web-API by loading a full page of records from the database in a single query.  Previously, each record's placeholder dictionary was being loaded individually.

* [Web-API/Usability] Implemented a 'show_meta' option for search requests in the Web-API.  This toggles the inclusion of placeholder label and type information as 'records_meta'.  For instance, a client can cache meta information after the first page of results, and save bandwidth on subsequent requests by not including the redundant meta again.  This option defaults to enabled.

* [Web-API/Usability] Implemented a 'show_results' option for search requests in the Web-API.  This toggles the inclusion of records in the response, which is useful with the new subtotals feature if record data is not desired as well.  This option defaults to enabled.
* [Web-API] Fixed an issue with searching attachments in the Web-API.
* [Web-API/Addresses] Implemented the ability to update and filter by the 'is_defunct' field on address records in the Web-API.
* [Web-API/Messages] Implemented the ability to update and filter by the 'is_broadcast', 'is_outgoing', and 'worker_id' fields on message records in the Web-API.
* [Web-API/Notifications] Implemented the ability to search notification records in the Web-API.
6.7.2-dev checkpoint
[Code Cleanup/Contexts] Added a context for 'attachment link', and moved both attachment contexts to proper Context_* classes.
* [Web-API/Attachments] When searching for attachment links using the Web-API, attachment filters can now be used: guid, display_name, mime_type, sha1_hash, size, storage_extension, storage_key, storage_profile_id, and updated.

* [Web-API/Attachments] When displaying attachment links using the Web-API, attachment placeholders can now be expanded.  Previously this just displayed the attachment link information and required additional requests to load full details.