Most Popular
Recently Added
Recently Updated

6.2 Changelog

Release notes for Cerb 6.2

Cerb (6.2) is a major functionality update released on December 17, 2012. It contains over 123 new features and usability tweaks from community feedback.

See: http://wiki.cerbweb.com/6.2

  • [Dashboards/Pie Charts/Subtotals] Subtotal widgets on dashboards can now be configured to display their values as a pie chart instead of a frequency table. There are default wedge colors for up to 20 values, and they've been selected for clean visual separation as well as aesthetics. While following a rainbow pattern, the colors begin at green rather than red, ensuring the largest wedges are one of the green-blue-violet spectrum subdued colors instead of an alarming large red block on a dashboard. A list of subtotal values is displayed below the chart. The pie charts also have mouse interaction. Hovering over a wedge will render a slightly transparent bumper at the edge, and it will display a highlighter style on the appropriate subtotal; making it very easy to identify which value is associated with the selected pie wedge.

  • [Dashboards/Subtotals] Subtotal widgets can now limit their results to the top 3-20 subtotal categories. This is useful when you want to build a 'Top 10' list, even though there may be extra results.

  • [Community Portals/Proxy] Moved the visitor cookie handling into the Community Portals functionality. It was originally in the deployed index.php per portal, but this made it difficult to replace the PHP reverse proxy with other proxy software. It's now trivial to forego the index.php file and deploy Community Portals with more capable proxies like Apache mod_proxy or Nginx instead. The index.php deployment is no longer recommended, but it will remain available because it's the easiest option that is supported in nearly all environments (including shared hosting).

  • [Dashboards/Plugins] Plugins can contribute new datasources for dashboard widgets.

  • [Dashboards/Charts] Each series on a dashboard chart widget may now specify its own datasource. This makes it possible to plot data from multiple sources on a single chart. Previously charts were limited to just worklist data, but additional sources may be now implemented through plugins. Existing charts will be migrated automatically to the new format.

  • [Dashboards/Plugins] Implemented dashboard widget datasource extensions for worklist, url, and manual entry. These behave comparably to the earlier built-in options; however, they can now be reused in new types of widgets (even in third-party plugins). A datasource extension can specify in its manifest which widgets it knows how to provide data for.

  • [Dashboards/Counters] Counter widgets on dashboards can now pull in data using datasource plugins.

  • [Dashboards/Gauges] Gauge widgets on dashboards can now pull in data using datasource plugins.

  • [Dashboards/Usability] Some friendly instructions are now provided on gauge and counter widgets when they have no data source configured. This helps disambiguate true values of zero in those widgets from a non-configured widget.

  • [Dashboards/Counters/Usability] Improved the usability when setting up a new counter on a dashboards. You no longer have to click into multiple tabs to configure its style and data source.

  • [Dashboards/Counters/Usability] When setting up a counter, the data format for 'seconds' has been renamed to 'time elapsed' to make its purpose more intuitive.

  • [Dashboard/Gauges/Usability] When setting up a gauge on a dashboard you can now always override the data format (e.g. number, decimal, percentage, time elapsed), or prepend and append text to the label. Previously these options were only available when using the 'manual' data source. This improves the flexibility of other data sources (especially arbitrary ones like 'URL').

  • [Dashboards/Charts/Usability] Improved the usability of configuring charts on dashboards. You now no longer have to click into multiple tabs to set the type of chart and pick a data source.

  • [Dashboards/Bar Charts] Bar charts on dashboards are now capable of displaying a mix of positive and negative values. This is especially useful when plotting changes (i.e. deltas) in some metric over time.

  • [Dashboards/Bar Charts/Usability] Bar charts on dashboards now display a line through zero on the y-axis. For regular bar charts with all positive values this improves readability when some bars may represent a zero values (and appear to have gaps). For charts with positive and negative values the origin line draws a clear distinction between them.

  • [Dashboards/Charts] Line charts on dashboards can now be used to plot negative values. This is especially useful on time series charts where the y-axis value may be a positive or negative change (i.e. delta) in value.

  • [Dashboards/Platform/Usability] Improved the mouseover tooltips for dashboard charts. They used to be printed directly on the chart, which meant they didn't handle long values well, and they also partially obscured the upper bounds of the data. Now the tooltips are handled by jQuery and CSS, so they could float or be stylized however we want. Eventually these will be exposed as custom events in the charting library, but the new defaults are more useful than the previous behavior.

  • [Dashboards/Scatterplots/Usability] Scatterplots on dashboards are now their own widget. Previously they were a rendering option on charts, but their usage is different and it was confusing to many people that some line or bar charts couldn't display as a scatterplot without modification. It's now possible for datasource extensions to treat scatterplots specially; they're designed to visualize non-linear clusters of data. Existing scatterplots will be automatically migrated to the new format and shouldn't require any modification.

  • [Dashboards/Scatterplots] Scatterplots will now scale their axes based on the given data. Previously, all scatterplots had (0,0) in the bottom left and if data was significantly larger (or negative) then most of the chart was wasted whitespace. Now you can use dates and timestamps on an axis and the chart will be scaled to the time between the min/max date, rather than showing 'all time'.

  • [Dashboards/Scatterplots] Scatterplots can now display negative values. This is useful when plotting deltas where a trend may be decreasing.

  • [Dashboards/Pie Charts] A new pie chart widget has been added to dashboards. This can be used to visualize distributions for external datasources. The subtotals widget is still the easiest way to render a pie chart from a worklist.

  • [Dashboards/Pie Charts] The legend on pie charts can be set visible or hidden. When hidden, only the label and value of the currently focused wedge will be displayed. This is useful when there are many wedges and displaying the values all the time would clutter the dashboard.

  • [Dashboard/Pie Charts] The value for pie chart wedges can be given a specific type (e.g. seconds elapsed, bytes, number, percentage, decimal) as well as a prefix and/or suffix. This makes it easier to discern units and whether you're looking at frequencies, averages, or sums.

  • [Dashboards/Charts] Added a slight margin to the top and bottom of line charts so their min/max plots aren't cut in half. The y-zero line is also adjusted by -0.5 if it was on an odd numbered pixel, since this gives sharper straight lines w/o anti-aliasing.

  • [Dashboards/Counters/Gauges/Usability] Dashboard counters and gauges may now display their values in 'bytes', which will display human readable units of storage space (e.g. 50KB, 270MB, 4.7GB).

  • [Performance/Platform/Plugins] Prior to version 6.2, viewing the Plugins page in Setup would automatically scan the filesystem for new plugins or updates. This had a considerable performance impact because it reloaded every feature and plugin, including some expensive database operations (ACL, translations, etc). The process because generally unnecessary due to the introduction of the Plugin Library in version 5.7. Given those factors, this functionality has now been optimized in two ways: (1) Cerb will only scan for new plugins and changes in the storage/plugins/ directory when visiting the plugin page; (2) only plugins with a new version number in their plugin.xml will be re-synchronized. For most visits to the plugins page there should be a dramatic reduction in the amount of REPLACE queries run against the database. During development, the DEVELOPMENT_MODE flag circumvents this behavior to make it more convenient to edit code and view the results without constantly running the /update page.

  • [Platform/Plugins] Fixed a bug in the DevblocksPlatform::sortObjects() method that forced all numbers to be compared as integers, thus rendering it incapable of properly sorting decimals (e.g. 0.5 and 0.3 were both rounded to zero). Numbers are now properly compared as floating point values.

  • [Platform/Usability/Plugins] Added a 'TB' (terabytes) grouping to the 'bytes' format options and DevblocksPlatform::strPrettyBytes().

  • [Dashboards/Scatterplots] Multiple series on a dashboard scatterplot widget can now be plotted on independent or shared axes. Independent axes are useful when you want to look for relative trends between series on different scales. Shared axes compares each series on the same scale.

  • [Dashboards/Scatterplots/Usability] Scatterplots now make a clearer distinction between plots from different series by using as a different symbol (e.g. o, +, x, *) as well as color.

  • [Platform/Dependencies] Upgraded to jQuery UI 1.9 from 1.8.18

  • [CHD-3144] [Autocomplete/Usability] FIXED: Autocompletes overwrite input.

  • [Devblocks/Platform] Added DevblocksPlatform::strBase32Encode() and ::strBase32Decode() helper functions. This is an uncommon encoding, but it's used for integration with Google Authenticator and there aren't built-in functions to base32 encode/decode (RFC-4648) in PHP5.

  • [Login/Security/Usability] The login system has been renovated to support different authentication methods per worker. Previously, a worker had to know to switch between password, LDAP, OpenID, etc. Now, admins assign a specific method to a worker. The login form has two steps: in the first the worker provides their email address, and then they are routed to the appropriate login method for their account. This makes it much easier to standardize authentication on something like LDAP and hide normal Cerb password logins entirely.

  • [Login/Security/Usability] When a new worker is invited to Cerb, or a worker's authentication method changes, they will be given the opportunity to set up their account's credentials on the next login. Previously an admin had to establish the initial password for new workers, and it was sent in plaintext through email -- and was possibly communicated in other ways between the admin and worker (SMS, email, chat room, etc). This process was a weak link in security. Now the worker can verify their identity through a one-time code, and they can set up a secure password right from their browser. This process also works for the advanced authentication methods like OpenID or Password+GoogleAuth.

  • [Login/Security/Usability] When a login authentication method other than 'password' is in use, workers will not be shown the 'change password' option. Additionally, if the OpenID plugin is installed but not activated for a given worker, they will not be shown the OpenID options in their preferences. This should reduce confusion.

  • [Login/Security/Recover] Each worker may now configure up to three 'secret questions' that are used to verify their identity when recovering their account's login information. In the past, all a worker needed to do to reset their login information was receive a code to their email address. The secret questions add an extra layer of security, because even if the code is intercepted (e.g. man-in-the-middle attack, packet sniffer, key logger) the attacker would need to know secret information about the worker to assume their identity. The page for setting up these questions makes recommendations about secure questions, but they should be open-ended non-quantitative questions like "What is your favorite sentence in your favorite book?". Answers to such questions are incredibly difficult to research or guess compared to "How old were you when…" or "What is your father's middle name?". Secret questions shouldn't have answers that can be found with a Google search or through social media. The wording of the answer must be exact, with all punctuation; although answers are case insensitive. An optional hint may be provided for each question and answer pair.

  • [Login/Security/Recover/Plugins] A new centralized system for recovering an a worker account has been implemented. This saves plugin developers from having to implement redundant or inconsistent recovery methods. When a worker starts the account recovery process they are sent a one-time code through email and they are asked their secret questions (if configured). Once identified, their login method is instructed to reset their credentials and their next login will run through the set up process again.

  • [Login/Security] When an invalid worker email address is typed into the login form, the password form will always be shown to make it more difficult for an attacker to discover valid logins. If the login form specified "Invalid worker" then an attacker could guess valid email addresses by using known worker names. They may still be able to guess worker email addresses, but the system will not confirm if they are valid or not.

  • [Login/Security] Invalid email addresses or failed authentication (i.e. bad password) will now cause Cerb to pause for two seconds before reporting an error. This slows down brute force attempts (at least on a single connection). In a near future update this delay could become longer with each successive failure, and lock the account.

  • [Login/Plugins] The login process may now be asynchronous. For example, with the OpenID plugin there are multiple URL redirects before authentication is successful or fails. Previously, Cerb expected an immediate answer from $extension->authenticate(). Plugins that need to redirect the browser before proceeding may redirect to the new /login/authenticated endpoint to finalize the new session.

  • [Devblocks/Platform/QR] The jquery.qrcode plugin by Jerome Etienne is now available in the global jQuery environment. This is useful to quickly send information to mobile phones from the screen. See: http://jeromeetienne.github.com/jquery-qrcode/

  • [CHD-3099] [Login/Security/Google Authenticator] Implemented a new worker login plugin for two-factor authentication using 'Password + Google Authenticator'. This plugin requires workers to provide both their password and a time-based one-time password from the Google Auth mobile app (available for iOS, Android, and Blackberry). Cerb supports configuring Google Authenticator with a QR code that is displayed on the screen during a worker's first login. This significantly improves security by requiring both "something you know" (the password) and "something you have" (the physical mobile phone) in order to log in; and it's unlikely an attacker will have both. Each worker's mobile device is configured (via QR code) with a different random 16-character secret.

  • [Mail/Peek/Usability] The peek popup for tickets now displays the Messages and Properties content on the same screen. Previously you had to switch between tabs to either preview the conversation or make changes to its properties. This removes extra clicks from one of the most frequently used interface elements.

  • [Dashboards/Widgets/Custom HTML] Added a new 'Custom HTML' widget to dashboards. This provides a block of user-defined HTML/CSS/Javascript. There are countless uses for this: displaying external images, rendering charts from the Google Charts API, sharing announcements, posting todo lists, displaying widgets from Twitter/GitHub/Facebook, etc. Previously these things would need to be implemented as widget plugins.

  • [Login/Usability] The login form now provides a "remember me" option which saves the current worker's email address in a cookie for two weeks. When enabled, subsequent requests to /login will automatically be redirected to the appropriate login form for the worker with the email address pre-filled. This streamlines the two-step login process on trusted computers.

  • [Security/Sessions/Usability/Mobile] In Setup->Security admins may now determine when session cookies should expire in worker browsers. Previously these cookies were always removed when the browser was closed, but on mobile devices this distinction isn't always dependable. This resulted in session cookies that could expire many times per day on a mobile device despite never logging out or closing the mobile browser tab. Session cookies may now also be set to expire after 1 day, 1 week, 2 weeks, or 1 month.

  • [Security/Session] Signing out will now destroy the current session's cookie.

  • [CHD-3194] [Mail/History/Usability] The 'Recipient History' tab on ticket profiles now shows a count of the total number of rows in the worklist. The count reflects the scope (recipients, org, domain) and any active worklist filters. For example, to see the open ticket count on the history tab when viewing tickets you just need to filter the history worklist to status=open. The count will then automatically reflect open tickets on all subsequent pages. This should speed up workflows where multiple open tickets from the same sender are reviewed and potentially merged. Previously, workers always had to click into the history tab to see if anything needed their attention.

  • [CHD-2783] [Mail/Merge/Usability] When merging tickets from a worklist, a confirmation popup is now displayed to verify the action. Previously, the merge action took place immediately. This should help prevent accidental merges from workers clicking on the wrong button.

  • [CHD-3081] [Dashboards/Worklists/Usability] The 'add record' popup is now available from worklist widgets on dashboards. When you hover over a worklist the (+) icon will appear. This allows new records of any type to be created from dashboards without having to navigate to the search page.

  • [Dashboards/Worklists/Usability] The 'peek' button will no longer wrap to the next line and leave gaps in worklist widget rows on dashboards.

  • [Dashboards/Worklists/Usability] Worklist widgets on dashboards will no longer underline record links unless they're hovered over. This reduces visual clutter, as too many links on the screen can be overwhelming.

  • [Mail/Reply/Usability] The snippet search box on the mail reply screen now shows a hint of "(Ctrl+Shift+I)" as the placeholder. This lets workers know that a keyboard shortcut is available.

  • [Dashboards/Workspaces/Activity Log] Activity Log worklists may now be added to dashboards and workspaces.

  • [Activity Log/Worklists] Activity Log worklists may now be filtered to specific actors or targets. For example, this can create a list of all the activity performed by a specific worker. Alternatively, you may create a list of all the activities that happened to a worker (e.g. assignments). This is especially useful when activity log worklists are added to dashboards.

  • [Activity Log/Worklists] Activity Log worklists may be filtered by actor or target contexts. The available options are now displayed in a multiple selection list. For example, a worklist may be created that displays all the activity that happened to task records, or activities that were performed by workers (rather than groups or the system). This is especially useful when activity log worklists are added to dashboards.

  • [Activity Log/Worklists] Activity Log worklists may be filtered by activity. The available options are now displayed in a multiple selection list. Previously, the person setting up the worklist had to know the internal IDs for the various events (which is unlikely). This change makes it easy to create a worklist of a specific kind of activity; for example, a list of comments posted on any record over the past week.

  • [CHD-2464] [Activity Log/Security/Logins] The Activity Log will now record worker login and logout activity. Both logins and logouts record the IP address in use at the time. The login event also records the user-agent (platform, browser, version). This is especially useful when combined with workspace dashboards to perform security oversight.

  • [Activity Log/Impersonation/Security] The Activity Log now records worker impersonation by administrators. The entry links to the administrator as the 'actor' with the worker they're impersonating as the 'target'. This provides accountability for impersonation events.

  • [CHD-3182] [CHD-3057] [Snippets/Worklists/Usability] The green (+) add button is now available at the top of all snippet worklists. This consistency improvement enables the quick creation of snippets from arbitrary workspaces.

  • [CHD-2756] [CHD-2915] [Activity Log/Mail] The Activity Log now records when a ticket is moved between groups or buckets. This is useful for SLAs and accountability.

  • [Subtotals/Platform/Plugins] Implemented an abstract getSubtotalDataForContextAndIdColumns() method on C4AbstractView for subtotaling a combination of context/context_id fields for any table. This makes it easy to implement a two-step subtotal process (e.g. first pick 'Worker', then pick a specific worker) for any record type. This was first implemented for use by snippets (owners) and the Activity Log (actors, targets).

  • [Activity Log/Subtotals] Activity Log worklists can now be subtotaled by 'Actor' or 'Target' using the two-step filtering process from context links. First a record type is selected (e.g. worker, task, ticket), then a specific record of that type may be selected. This replaces the 'Actor Context' and 'Target Context' subtotal fields because they're redundant with the first part of this new process.

  • [Snippets/Subtotals] Snippet worklists can now be quickly filtered using owner subtotals. This uses a two-step subtotal process where the first step selects the owner type (e.g. worker, group, role) and the second step can optionally pick a specific owner of that type. This is more flexible than the 'owner' filter, which doesn't currently provide the option to find any worker-owned snippets.

  • [Workspaces/Subtotals/Code Cleanup] Broken context links (e.g. links to records that have been deleted) will no longer be included in subtotal counts.

  • [CHD-2822] [Choosers/Usability] Chooser popups opened from other choosers will now behave properly. For example, you can filter tickets by watchers using a chooser, and from there you can filter the worker list by a group chooser. Previously, the nested choosers would replace the first popup, making it impossible to complete the desired action.

  • [Activity Log/Virtual Attendants/Worklists] Virtual Attendants can now manage worklists and behavior variables using Activity Log data. For example, a VA can send a daily report about worker login activity to a manager's email address. This could also be used to build a list of comments (e.g. comments by a particular worker, any comments about tickets, etc).

  • [Virtual Attendants/Links] Virtual Attendants can now set dynamic links on any related records, custom fields, or behavior variables. Previously, each event only had a few actions like 'set ticket links', and the records to link had to be selected ahead of time with a chooser. Now, there is an 'On:' option for selecting the target record (which could be a ticket's sender's organization), and links can be set using placeholders and behavior variables, as well as choosers. For example, a VA behavior can read new ticket subjects looking for a domain to be mentioned, and it can automatically link that domain to the ticket. There could be thousands of possible domains and they don't have to be specified in the VA behavior ahead of time. This enables much more sophisticated workflow automation. Existing 'set links' actions will be automatically converted to the new format.

  • [Virtual Attendants/Links/Simulator] The Virtual Attendant simulator will now display output for all 'Set links' actions.

  • [CHD-3206] [Subtotals/Workspaces/Usability] Fixed an issue where clicking '(none)' hid the other totals when subtotaling KB articles by 'Topic' or messages by 'Worker'.

  • [CHD-3205] [Drafts/Worklists] FIXED: Filtering on 'Message Type' via subtotals in a Draft worklist displays untranslated text in the filter bubbles.

  • [Knowledgebase] Fixed an issue with Markdown-formatted Knowledgebase articles breaking in older versions of PHP 5.x when an article was tens of thousands of characters long.

  • [CHD-2819] [Support Center/Registered Contacts] Registered Contacts can now be added from worklists. These records control who can log in to the Support Center.

  • [Support Center/Registered Contacts] Registered Contacts can now be deleted from their peek popup.

  • [CHD-2699] [Virtual Attendants/Links/Watchers] Virtual Attendants can now remove links and watchers from any record. The links to be removed can be placeholders (e.g. fields, watchers, custom fields), selected from choosers, or behavior variables (e.g. dynamic worklists). The 'Set Links' action has a new mode toggle for choosing between adding or removing.

  • [CHD-3187] [Virtual Attendants/Mail Filtering] Virtual Attendants can now remove attachments on incoming messages from Mail Filtering behavior. Attachments can be matched with exact filenames, wildcard patterns, or regular expressions.

  • [CHD-3200] [Security/Parser/Relay] Fixed an issue where the relay auth header could be spoofed in order to have arbitrary messages appended to existing tickets. This is a low severity issue since it's no different than someone spoofing an email address with a known ticket mask from someone else. Cerb won't automatically add these new senders to the conversation, and the risk for social engineering is low. However, because the relay auth header uses internal IDs instead of masks, it makes it easier for someone with malicious intent to hit a large range of IDs. It would be more tedious to clean up these junk messages than if they created new tickets.

  • [Dashboards/Counters/Gauges] The 'manual' datasource on dashboard counters and gauges will now properly format numbers when they contain commas as thousands separators.

  • [Profiles/Calendar/Usability] Added keyboard shortcuts to calendar event profiles pages. The edit popup can be opened with 'e', the 'm' key opens the VA macros popup, and the 1-9 keys change the selected tab.

  • [Search/Worklists/Usability] Fixed an issue on /search worklists where the shortcut for 'select all (a)' wasn't toggling the row selection properly.

  • [CHD-3210] [Mail/Peek/Usability] Removed the hidden feature where a worker can double click on the email text in the peek popup to close it. This constantly interferes with the ability to highlight text for copy/paste. The shortcut is a remnant from before the ESC key closed the popup window.

  • [CHD-3197] [Quick Search/Choosers/Usability] Fixed an issue in choosers where the last-used quick search filter wasn't automatically selected the next time the form displayed.

  • [CHD-2780] [Roles/Mail/Drafts] Added a new permission that allows workers to delete each other's mail drafts.

  • [CHD-3192] [Time Tracking] FIXED: Some time Tracking activity log entries have a redundant 'mins' unit appended to the end of the description (e.g. "5 mins mins").

  • [CHD-3097] [Time Tracking/Activity Log] The Activity Log now records status changes on Time Tracking entries (e.g open/closed). This is useful for change management.

  • [Plugin Dev/Events] Added a new 'dao.address.update' event for plugin listeners to react to Address record changes.

  • [Plugin Dev/Events] Added a new 'dao.calendar_event.update' event for plugin listeners to react to Calendar Event record changes.

  • [Plugin Dev/Events] Added a new 'dao.contact_org.update' event for plugin listeners to react to Organization record changes.

  • [Plugin Dev/Events] Added a new 'dao.contact_person.update' event for plugin listeners to react to Contact Person record changes.

  • [Plugin Dev/Events] Added a new 'dao.group.update' event for plugin listeners to react to Group record changes.

  • [Plugin Dev/Events] Added a new 'dao.notification.update' event for plugin listeners to react to Notification record changes.

  • [Plugin Dev/Events] Added a new 'dao.snippet.update' event for plugin listeners to react to Snippet record changes.

  • [Plugin Dev/Events] Added a new 'dao.worker.update' event for plugin listeners to react to Worker record changes.

  • [Plugin Dev/Events] Added a new 'dao.role.update' event for plugin listeners to react to Worker Role record changes.

  • [Plugin Dev/Events] Added a new 'dao.workspace_widget.update' event for plugin listeners to react to Workspace Widget record changes.

  • [Plugin Dev/Events] Added a new 'dao.feedback_entry.update' event for plugin listeners to react to Feedback record changes.

  • [Plugin Dev/Events] Added a new 'dao.kb_article.update' event for plugin listeners to react to Knowledgebase Article record changes.

  • [Code Cleanup/Platform/Resources] Removed the unnecessary semi-colon from the 'Content-Type:' header in the resource proxy. Certain webservers (e.g. Nginx) have trouble compressing this content when using a terminator with no additional parameters (e.g. encoding).

  • [Plugin Dev/Broadcast/Links] Broadcast functionality can now automatically link the newly created tickets with the involved records. To do so, include the 'context_links' parameter in the draft with an array of context+id pairs.

  • [CHD-2821] [CRM/Opportunities/Broadcast/Links] When broadcasting to an opportunity worklist, each opportunity will be automatically linked to the new ticket that it opens.

  • [Virtual Attendants/Notifications] Virtual Attendants may now create notifications without a linked object or URL. Clicking one of these will link back to the worker's notifications list.

  • [CHD-3100] [Mail/Filters/Notifications] Mail filtering behavior can now use the 'Create notification' action. For example, you can send a notification to admins when bouncing or rejecting an inbound message.

  • [CHD-3153] [Web-API/Search/Knowledgebase] Knowledgebase articles can now be filtered by 'topic_id' through the Web-API search feature. This returns articles that share the same top-level category. Each matched article is returned only once, even if it appears in multiple subcategories on the topic.

  • [CHD-3170] [Address Book/Web-API] Added an 'updated' field to address records to make it easier to synchronize the data with other systems. This timestamp is automatically updated when an address record changes through the GUI or API.

  • [Web-API/Search] The Web-API now supports the 'between' operator for filtering date fields by range. The 'value[]' parameter should be a JSON-encoded array with two elements for 'from' and 'to' as Unix timestamps.

  • [CHD-3143] [Mail/Search/Notes] Ticket worklists can now be search filtered by sticky note content.

  • [CHD-3058] [Virtual Attendants/Tasks/Custom Fields] Virtual Attendants can now set custom fields on the 'Create task' action. The custom field values can use any of the placeholders from the current event.

  • [Virtual Attendants/Mail/Custom Fields] Virtual Attendants can now set custom fields on the 'Create ticket' action. The custom field values can use any of the placeholders from the current event.

  • [Setup/Virtual Attendants/Usability] In Setup->Configure->Virtual Attendants, the menu will no longer open multiple instances of the same tab.

  • [CHD-3070] [Snippets] Fixed an issue in snippets where placeholders using the '|default' filter would always return default values instead of field values. For example, the snippet "Hi {{senderfirstname|default('there')!" always returned "Hi there!" instead of "Hi Bob!". This is because the underlying template engine (Twig) wasn't designed with Cerb's dynamic placeholders in mind and their "placeholder exists" checks are too simplistic.

  • [CHD-2772] [Snippets/Usability] Snippet worklists and choosers now show a preview of each snippet's content. This makes it easier for workers to find the right template compared to just being able to see titles. When using a chooser, the previews will execute the snippet logic and automatically replace placeholders with the appropriate values from the target record. This lets workers see the exact text that will be inserted if that snippet is selected. In the preview, placeholders that have been replaced with their corresponding values have a special style to provide a visual distinction between normal and dynamic text. Placeholders are also highlighted in the snippet previews on worklists.

  • [CHD-1117] CHD-2775] [Snippets/Placeholders/Usability] You can now add 'fill-in' placeholders to snippets which will prompt the current worker for more information before the text is inserted. These are values that aren't derived from records or custom fields; for example: order numbers, tracking numbers, product names, ETAs, etc. There are three types of fill-in placeholders: a single line of text with a descriptive label (e.g. "paste tracking number here"), a single line of text with a default value (that can be modified by the worker if needed), and multiple lines of text (e.g. "paste receipt here"). These can be inserted from the menu when editing snippets. Fill-in placeholders are required, so a snippet can't be accidentally sent with markers like "(paste order number here)" left in place. If there are placeholders that haven't been filled in, clicking the 'insert' button will automatically focus the first incomplete field. The form elements for fill-in placeholders will automatically resize as text is added or removed.

  • [Mail/Usability/Compose] When composing or replying to mail, the textbox will now automatically grow to accommodate the full height of the message. Previously the textbox was a fixed height and workers had to constantly scroll around in a smaller reply window.

  • [Mail/Compose/Usability] The snippet autocomplete box is now available on the compose popup. This allows workers to efficiently find and insert a snippet without the extra steps required to use the chooser.

  • [Mail/Compose/Usability/Keyboard] Added the Ctrl+Shift+I shortcut to the compose popup for focusing the snippet options.

  • [Mail/Compose/Usability/Keyboard] Added the Ctrl+Shift+G shortcut to the compose popup for inserting the current worker's signature at the cursor.

  • [CHD-3039] [Mail/Compose/Usability] The compose popup will now automatically save the current draft every 30 seconds.

  • [CHD-2700] [Mail/Reply/Drafts] When replying to mail, the current draft will be saved a final time before attempting to send the message. If the mail server has problems then the draft will be the latest version of the message for later resumption. Previously, the failure to send a message would only save a draft if none existed already, and drafts are only deleted after a successful send. This meant that changes to the message since the last save (i.e. within up to 30 seconds) could be lost.

  • [Mail/Compose/Drafts] Fixed a bug on the compose popup where resuming a draft wouldn't properly restore the status (e.g. open, waiting, closed).

  • [Mail/Reply/Usability] When replying to messages, the quoted content will now automatically wrap at 76 characters. Previously, a right angle bracket (>) was prepended to the beginning of each line from the original message. Quotes with long lines were difficult to read because they wrapped without the quote character in front of them. The new functionality rewrites the quoted message to improve readability.

  • [Mail/Reply/Keyboard] Added two new shortcuts to the Mail Reply text box. Ctrl+Shift+J jumps to the first blank line in a quoted message. Ctrl+Shift+Q wraps quotes to 76 characters. The wrapping happens automatically for the first quoted message, but the keyboard shortcut is useful when copying and pasting quoted content from elsewhere.

  • [Dashboards/Subtotals/Usability] Improved the usability of the subtotals widget on dashboards by combining multiple tabs of options into a single config popup.


Properties ID: 000099   Views: 11279   Updated: 2 years ago
Filed under:
knowledgebase comments powered by Disqus