Most Popular
Recently Added
Recently Updated

6.6 Changelog

Release notes for Cerb 6.6

Cerb (6.6) is a major functionality update released on January 31, 2014. It contains over 70 new features and usability tweaks from community feedback.



  • [Platform/Custom Fields] Implemented configurable parameters for custom fields. The various custom fields types can now provide additional options to modify how they work. Picklist and multi-checkbox fields had a hardcoded parameter for their option list which has been converted to the new format.

  • [CHD-3582] [Custom Fields/Owners] Added a 'Send worker notifications' option to worker-based custom fields. This makes it easy to add an 'owner' field to any kind of record. More advanced workflows are also possible; for example, having two owner fields for a 'salesperson' and 'sales support'. Owners receive watcher notifications about record activity for the duration of their assignment. They don't need to explicitly watch or unwatch records.

  • [Custom Fields/Links] Implemented a new 'Record Link' custom field type. This is similar to how the Links tab works, except the custom field is formalized and the fields of the linked record will be shown in Virtual Attendant behaviors, snippets, etc. For instance, a time tracking entry could have a custom fieldset with fields for an organization and a domain. Time tracking records could then be filtered based on those links, and the related record information could be used in Virtual Attendants, worklists, and the API.

  • [Setup/Storage/Attachments] Fixed an issue where an attachment worklist with multiple links pointing to the same file resulted in missing rows.

  • [Setup/Attachments/Worklists] Attachment worklists now display the storage profile column as a name rather than an ID.

  • [CHD-3377] [Setup/Attachments/Worklists] Attachment worklists once again provide links to the records containing the files (i.e. the 'Context' column). Previously, a link was provided to the ticket but workers had to dig for the message containing the file. Now, when clicking on the permalink for an email message attachment that specific message will be expanded and focused.

  • [CHD-2971] [Mail/Reply/Usability/Keyboard] When using the keyboard to navigate the ticket reply form, using the attachments upload popup previously broke the TAB flow through the form. Now the focus is returned to the attachments (+) button after files have been uploaded.

  • [Storage/Platform/Optimization/Performance] Cerb now automatically detects when a new storage object duplicates an existing one, and an additional link will be created to the same underlying file. A file is only removed when there are zero links pointing at it (e.g. message or comment attachments). Duplicate attachment detection is implemented for incoming mail, worker replies through the UI, the worker proxy, messages imported from an ImpEx export, and files uploaded through the API. This should save a considerable amount of storage space in environments where the same attachments (e.g. PDFs, forms, ebooks) are sent by workers on a regular basis. Similarly, when the same senders include logos and other content in their signature these can be condensed into a single storage object. Currently, existing storage objects are not hashed since would be very intensive on busy systems. New duplicates will be prevented from version 6.6 onward. However, we'll be providing instructions on how to retroactively hash existing storage objects and remove redundancy (technical note: this involves providing SHA1 hashes in the attachment.storage_sha1hash database column, and redirecting attachment_link records based on that).

  • [Mail/Parser/Performance] The original_message.html attachment is now created more efficiently for new incoming messages. Previously its contents were written to a temporary file that was then read into long-term storage. Now it is saved directly from memory into storage. This improvement also made it easier to modify the contents of the HTML message to improve usability (e.g. rewriting links for inline attachments to Cerb URLs).

  • [Mail/Parser/Usability] When viewing an original_message.html attachment in the browser, inline images will now be properly displayed in the content. For instance, this is useful when customers send screenshots by embedding them in the middle of their reply. Previously, such images were included as attachments on the ticket but they weren't displayed in the HTML contents (technical note: The IMG tags still referenced the MIME content-id header). These IMG links are now rewritten to use Cerb file paths. This process works for all new messages that are received in version 6.6 or later, but it will not fix existing original_message.html attachments.

  • [Devblocks/Platform/Markdown] Added the Parsedown library to Devblocks. This is a faster, leaner, and more modern replacement for the existing PHP Markdown Extra library we've been using up to this point.

  • [Setup/Storage/S3/Usability] When testing a new S3 storage engine profile, a temporary object will be saved, read, and deleted to verify that the credentials work for all actions. Previously the contents of the bucket were listed, but this didn't verify that content could actually be stored and retrieved.

  • [Setup/Storage/S3/Usability] The S3 storage engine now supports a 'Path prefix' configuration option. Previously all content was saved starting at the top-level of a bucket. Now a single bucket can be shared between multiple instances of Cerb.

  • [Setup/Storage/S3/Security] When configuring the S3 storage engine, the secret key parameter is no longer displayed in the profile popup form. If left blank it will remain unchanged. This is far more secure than transmitting it.

  • [Storage/Performance] The storage service now has the ability to queue multiple delete operations to perform them in a single transaction. This is useful for storage engines where incremental deletes would be very expensive. For instance, S3 would generate an HTTP request per file being deleted, which could potentially be hundreds or thousands. Waiting for that many HTTP requests during cron.maint is undesirable. It is now possible for hundreds of objects to be deleted in a single request.

  • [Setup/Storage/S3/Usability] Implemented batch delete functionality in the S3 storage engine. Up to 500 objects can be deleted from S3 in a single HTTP request.

  • [CHD-2711] [Mail/Relay/Comments] When a worker is replying to a relayed message from an external email account, the #comment tag will now allow comments to span multiple lines. The comment will be terminated when it encounters a blank line or a line starting with another #tag. This was necessary because some email applications, like Gmail, force text/plain content to hard wrap on spaces before 76 characters, and quoted-printable encoding isn't used to preserve the original wrapping. The comment will still appear as a single paragraph in Cerb.

  • [CHD-2711] [Mail/Relay/Comments] A new #start comment tag is available to workers that respond to relayed messages through an external email account. This allows multiple line comments where linefeeds will be preserved. This is especially useful for chunks of formatted text like code fragments and patches. A multiple line comment is terminated with an #end tag on its own line. If a worker's mail application adds hard linefeeds to their comment content, those will be preserved in the comment created by Cerb.

  • [Mail/Parser/Localization] Cerb will now use the iconv PHP extension if it is loaded. This is capable of converting a wider range of encodings than mbstring. For instance, TIS-620 (Thai) and WIN-1258 (Vietnamese) were not properly converted to Unicode by Cerb when only using mbstring.

  • [Mail/Relay] Workers can now manually relay specific messages to external email accounts without having to set up a Virtual Attendant behavior first. The reply menu on each message contains a new 'Relay to worker email' option. Selecting the relay option displays a popup where worker email accounts can be filtered and selected. This feature is particularly useful for situations where workers may need to reply while offline, such as during transoceanic flights or cruises. A worker can relay messages from Cerb to their mobile email application, reply at their leisure, and their messages will be delivered when network access is restored. The feature is also useful when certain workers handle requests through email without logging into the Cerb interface (e.g. temps, interns, consultants). A human dispatcher can route messages to these workers on an as-needed basis.

  • [Mail/Relay/Activity Log] An Activity Log entry is now created when messages are relayed to an email account by a worker or Virtual Attendant. This notifies other workers that work may be taking place on the ticket from outside of Cerb, and it also serves to keep a better history of the actions of Virtual Attendants. Previously, there was no record on a ticket that it had been relayed unless a comment was explicitly created to say so.

  • [Mail/Activity Log/Preferences] Workers can now enable the display of Activity Log entries on the ticket timeline. This displays a mix of messages, comments, and activity log data in a single place without having to click into the 'Activity Log' tab. The option is located on the Settings page that is accessed from the menu displayed when a worker clicks on their name in the top right of the UI. Consecutive log entries will be combined in a single block, and those that take place with a similar timestamp are grouped together for readability. This option is also compatible with the 'Read all' option where the timeline is displayed expanded in 'oldest first' order rather than 'newest first'.

  • [Devblocks/Platform/jQuery] Updated jQuery dependency from 1.7.2 to 1.10.2

  • [Devblocks/Platform/jQuery] Updated jQuery UI dependency from 1.9.1 to 1.10.3

  • [Devblocks/Platform/Dependencies] Added the jQuery Caret plugin for getting and setting the cursor position in textareas.

  • [Devblocks/Platform/jqPlot] Updated jqplot dependency from 1.0.0b2 to 1.0.8

  • [Devblocks/Platform/qTip] Updated qTip dependency from 1.0.0rc3 to 2.2.0

  • [Tour/Usability] Updated and expanded the tour so it provides tips and callouts about the main functionality within Cerb. This should help onboard new workers faster.

  • [Tour/Usability] When clicking on a new 'Point of Interest' callout in tour mode, the previously viewed callout will now be closed automatically.

  • [CHD-786] [Mail/HTML] Workers can now send HTML formatted email replies from Cerb. This feature was a long time coming, as we wanted to implement it in a way that was consistent with Cerb's spirit of productivity and automation, which are heavily based on the efficient processing of large amounts of text. To facilitate this, the feature is divided into two parts: HTML templates and Markdown syntax. Multiple HTML templates (e.g. letterhead and stylesheets) can be created from the Setup->Mail->HTML page. Each group and bucket can be configured to use a specific template by default, which determines the style of their HTML replies. Templates can contain any valid HTML, although most mail apps will sanitize the messages (e.g. removing Javascript). Rather than introducing a visual HTML editor which obscures the underlying text, workers can reply with Markdown syntax to bold, italicize, link, embed images, quote, and to add headings, code blocks, and lists. Markdown is a markup language that was designed for use in email to preserve human readability. This "progressive enhancement" approach provides workers with greater flexibility in their replies without compromising efficiency. Outgoing messages in the Cerb history are still displayed as plaintext. Additionally, Virtual Attendant behaviors are capable of working with Markdown syntax much easier than with HTML directly.

  • [CHD-786] [Mail/Reply/HTML] When workers are replying to mail, an editor is now provided to assist with using Markdown formatting. By default the editor starts in plaintext mode, which behaves the same as Cerb always has (i.e. only sending text responses). In this case the toolbar only displays a single button that toggles rich text functionality. Once that button is clicked, the toolbar expands to provide: bold, italics, unordered and ordered lists, embedded images, external images, links, quotes, code blocks, and a preview option. The preview option displays the HTML version of the current reply in a popup window. It will also use the HTML template of the current group and bucket, if available. The preview window can be left open while responding, and it will update its contents every time the RETURN key is pressed.

  • [Storage/Files] Attachments can now be requested by their SHA-1 hash in a URL, in addition to the globally unique ID of any of their links. This makes it possible to refer to attachments that have been uploaded but not linked to anything yet. For instance, this is useful for implementing embedded images in mail and knowledgebase articles; those images would need to be previewed before the record (and link) is created.

  • [Platform/Usability] Popups will now open in the middle of the browser window by default. They previously opened in the top center, which made smaller popups less noticeable.

  • [Plugins/Platform] When a file is uploaded using the file chooser popup, it now provides the caller with a SHA-1 hash and internal URL, as well as the entire response object (name, size, mime type, etc). This should make the file chooser reusable in more situations; for instance, in providing embedded image functionality.

  • [Mail/Reply/HTML] Workers can now send inline images in their replies. A new 'Upload an Image' button is available in the toolbar when replying to mail with HTML formatting. This button displays the file chooser popup, which automatically generates the syntax for an embedded image once saved. The image is visible in the preview popup, and once the message is sent Cerb will automatically convert it to an embedded image for the recipient (i.e. replacing the link to Cerb with a self-contained MIME part).

  • [Mail/Search/Usability] When using Search->Ticket, the results will no longer be restricted to only a worker's own groups. The group filter is now added by default but it can be removed from the editable filters. Previously it was a required filter that couldn't be removed. This has been requested several times by organizations that want workers to see the "Access denied" listing for a ticket when searching by mask or participant, instead of having zero results shown (which leads people to believe they're doing the search wrong).

  • [Platform/Popups/Usability] Popups will now float over the same position in the browser even when the rest of the page scrolls. Previously, popups could be scrolled off the page and become lost.

  • [Mail/Peek/Usability] When viewing the peek popup for a ticket, its group and bucket are now shown as two linked dropdowns. Changing the group in the first dropdown will change the list of available buckets in the second one. Previously, the group and bucket were only visible by clicking the dropdown and looking for the (*) marker, which was cumbersome. Additionally, the previous dropdown also combined groups and buckets into a single long list which was difficult to use.

  • [Mail/Compose/Usability] When composing mail, the 'From:' option now displays the group and bucket in two linked dropdowns instead of one big list.

  • [Mail/Compose/HTML] Added HTML message support to the compose popup. The preview feature will display the template for the currently selected group and bucket.

  • [Storage/Files] The '/files' page now provides cache control headers for the content it serves. This allows a worker's browser to cache certain resources (like images) after their first retrieval so they aren't requested from the server again. This is useful now that content like embedded images in HTML messages are displayed through this page.

  • [Platform/Dependencies] Updated HTMLPurifier library from 4.5 to 4.6.

  • [Platform/Devblocks/Dependencies] Added the 'CSS to Inline Styles' library by Tijs Verkoyen. This provides an easy to way to convert CSS STYLE blocks to inline styles when sending HTML email, as many email readers filter out HEAD, BODY, and STYLE.

  • [Mail/Reply/HTML/Preferences] Added a worker preference for "Always switch to HTML mode" while replying to mail.

  • [Platform/Plugins/Popups] Plugins that use genericAjaxPopup() can now specify the 'target' option using a jQuery Position object; e.g. { my: 'top left', at: 'bottom right', of: 'selector' }.

  • [CHD-3622] [Explore/Usability] Improved the way the last accessed time is recorded for explorer sets. Previously the access timestamp only updated 20% of the time in order to reduce extraneous UPDATE database queries when someone quickly paged through the list. Now, instead, the access time is updated any time at least 30 seconds has elapsed since the last recorded access time. Additionally, the access time is now always recorded when the set is created. The prior inefficiency rarely caused problems, but it would manifest if an explorer set was created shortly before the maintenance scheduled job ran, or if the maintenance job was set to run very often instead of nightly. This could result in explorer sets being purged while they were still in use.

  • [Mail/HTML/Broadcast] Implemented HTML message support in ticket worklist broadcasts from bulk update.

  • [Mail/HTML/Broadcast] Implemented HTML message support in address worklist broadcasts from bulk update.

  • [Mail/HTML/Broadcast] Implemented HTML message support in opportunity worklist broadcasts from bulk update.

  • [Mail/Usability/HTML] When generating a plaintext part from an HTML-only message, Cerb now attempts to preserve whitespace in pre-formatted (PRE) and CODE blocks.

  • [Mail/Usability/HTML] When generating a plaintext part from an HTML-only message, Cerb now attempts to prefix nested BLOCKQUOTE content with '>'.

  • [Mail/HTML/Usability] When sending HTML mail, Cerb will generate a new plaintext part that cleans up Markdown formatting. This plaintext part is sent along with the HTML message (e.g. for mobile and automated mail readers), and it's also what's stored in the conversation history.

  • [REVERT] [Platform/Popups/Usability] Popups no longer open up in the center of the browser window by default. This was causing problems on popups that grow, since they could expand beyond the bottom of the window and constantly require being dragged into place. Popups now display at the top so they have the full browser height to grow before they show a scrollbar. When a popup is opened a position can be defined now, so popups that don't grow (like the file chooser) may still elect to show up in the center of the page.

  • [Setup/Mail/Reply-To/HTML] Reply-to addresses can now specify a default HTML template for outgoing mail. The template set on the default reply-to address is the global default. When a group doesn't have its own HTML template it will default to the one on its reply-to address.

  • [Mail/HTML/Usability] The upgrade script for 6.6 now automatically creates a default HTML template and associates it with the default reply-to address. This allows HTML replies to "just work" without any manual configuration.

  • [Virtual Attendants/Mail/HTML] The 'Send mail' action in Virtual Attendant behaviors now supports sending messages using Markdown and HTML templates.

  • [Virtual Attendants/Mail/HTML] The 'Send mail to recipients' action in Virtual Attendant behaviors now supports sending messages using Markdown and HTML templates.

  • [Mail/HTML/Reply] Workers can now optionally choose a specific HTML template when replying. If nothing is selected, the current group/bucket's default is used.

  • [Mail/HTML/Compose] Workers can now optionally choose a specific HTML template when composing a new message. If nothing is selected, the given group/bucket's default is used.

  • [Mail/HTML/Broadcast/Tickets] Workers can now optionally choose a specific HTML template when broadcasting from ticket worklists. If nothing is selected, the default for the group/bucket is used instead.

  • [Mail/HTML/Broadcast/Addresses] Workers can now optionally choose a specific HTML template when broadcasting from email address worklists. If nothing is selected, the default for the given group/bucket is used instead.

  • [Mail/HTML/Broadcast/CRM/Opps] Workers can now optionally choose a specific HTML template when broadcasting from opportunity worklists. If nothing is selected, the default for the group/bucket is used instead.

  • [Mail/Reply/Usability] When replying to a message, the "Would you like to move this conversation?" option now shows the groups and buckets in two linked dropdowns. Changing the group in the first list automatically displays the available buckets in the second list. Previously, the current group and bucket was displayed as a default "No, leave it in the [name] bucket of [group]" option, and moving the conversation required using a long combined list of all the buckets which was difficult to navigate. The new way is also more efficient when using keyboard shortcuts.

  • [Performance/Worklists/Tickets] When using the "Is in groups of [worker]" filter on ticket worklists, the database query is now optimized if the worker is a member of every group. Previously, this inefficiently checked the group_id on every result anyway.

  • [Support Center/Contact/Usability] The ability to upload multiple files in the Support Center now uses a browser's HTML5 support.

  • [Support Center/Contact/Usability] The file type is now set properly on attachments uploaded through the Support Center. Previously, all uploaded files were being saved as 'application/octet-stream', which forced attachments to download even if they could be displayed in the browser (e.g. images, text files).

  • [Web-API/Contexts] Implemented 'GET /rest/contexts/list.json' in the Web-API for retrieving a list of context IDs and names. The context IDs are used for making various kinds of requests (e.g. attachment links, comments, record links) and there wasn't a comprehensive list available anywhere. This API request will also include any contexts that were added through plugins, which the standard documentation wouldn't include.

  • [CHD-3562] [Web-API/Contexts/Links] Implemented 'POST /rest/contexts/link.json' in the Web-API for adding any number of links to a record. See:

  • [CHD-3562] [Web-API/Contexts/Links] Implemented 'POST /rest/contexts/unlink.json' in the Web-API for removing any number of links from a record. See:

  • [Setup/Groups] Fixed an issue when deleting a group where group-owned Virtual Attendants and custom fieldsets may not be cleaned up properly.

Properties ID: 000104   Views: 14941   Updated: 3 years ago
Filed under:
knowledgebase comments powered by Disqus