* [CHD-3821] [Time Tracking/Comments] Fixed an issue where time tracking entries that contained a percent sign (%) in the notes wouldn't be added as comments on the linked record.
* [CHD-3818] [Workspaces/Dashboards/Usability] When a workspace dashboard tab is empty, a different helper message is now shown to workers who don't have edit privileges.  Previously, the helper message instructed everyone how to add content, even if they couldn't.
* [CHD-3819] [Workspaces/Usability] When a workspace page is blank, a helper message is now shown to workers who lack edit privileges.  Previously, a helper message was only shown on the '+' tab to workers who could add new content, and everyone else was shown a confusingly blank page.
Merge branch '6.7.8' into 6.8
* [CHD-3825] [Virtual Attendants/Create Ticket] Fixed an issue in Virtual Attendant behaviors that use the 'Create ticket' action.  Custom fields and record links were being set *after* the new outgoing message was sent, so any other behaviors watching for new messages weren't able to use those custom field values and links to make decisions.  For instance, if a macro created a new ticket and linked it to the running Virtual Attendant, a 'New message on a group convo' event wasn't aware of the link because it ran before the link was set.  This now works as expected, and custom fields and links are set before the outgoing message is sent.
* [Scheduler/Import] Fixed some PHP warnings in the 'Background Importer' scheduler job when import XML files don't contain the optional 'attachments' or 'comments' tags.
[Code Cleanup]
* [Code Cleanup/Notifications] Fixed a PHP warning in notifications when an invalid query was executed.  For instance: "WHERE id IN ()".
* [Web-API/Search/Tickets] Fixed an issue where Web-API searches for tickets and groups could become cached with outdated group permissions.
6.7.8-checkpoint
Merged branch '6.7.8' into 6.8
* [Virtual Attendants/HTTP Requests/Simulator] Fixed an issue where any provided custom headers on the Virtual Attendant 'Execute HTTP Request' action weren't being sent when using the simulator.  The headers were sent properly otherwise.  This made testing and debugging these behaviors unnecessarily complicated.
* [Virtual Attendants/XML] In Virtual Attendant scripts, the xml_decode($text, $namespaces) function can now accept an array of namespaces as the second argument.  This array should have prefixes as the keys and namespace URLs as the values (e.g. "weather":"http://ws.cdyne.com/WeatherWS/").  This enables XPath to be used on more complex XML responses, like those returned by SOAP.
* [Virtual Attendants/XML] In Virtual Attendant scripts, a new xml_xpath_ns($xml, $prefix, $namespace) function can register a new namespace prefix on an existing $xml object returned by xml_decode().  This enables XPath to be used on more complex XML responses, like those returned by SOAP.
6.7.8-checkpoint
Merge branch '6.7.8' into 6.8
* [CHD-3833] [Support Center/History] Fixed an issue in the Support Center where the ticket history may not show the full results when multiple accounts are sharing their history and have recipients in common on the same tickets.  The database was returning duplicate tickets in these situations, which Cerb was condensing to only distinct records.  If the number of distinct results was fewer than the page limit then no additional pages were shown.
Merge branch '6.7.8' into 6.8
* [CHD-3834] [Platform/Requirements] Cerb now provides a more useful error message when the required 'mysqli' PHP extension isn't enabled.  Previously, since 6.7.0, a blank white screen was being displayed with no additional information.  The installation guides cover installing the extension but they aren't always followed (e.g. there isn't an official FreeBSD guide).
* [CHD-3830] [Reports/Localization] When running reports, the worker's current timezone is now used at the database-level.  Previously, timestamps were being converted into the worker's timezone, but any relative functions in database queries (like DATE_FORMAT) were using the server's timezone.  This led to report data being shifted by the worker's timezone offset.