Přeskočit na hlavní obsah

v5

UCS Operator - changelog

All notable changes to this project will be documented in this file.

[5.13.3] - 2024-08-28

🐛 Bug Fixes

  • (design) Tabs have no extra spaces around when application configuration is unlocked

🚜 Refactor

  • (react) Replace state with simple derived value wrapped in memoization

[5.13.2] - 2024-08-28

🐛 Bug Fixes

  • (design) Temporary tab names will not be weirdly wrapped. Instead ellipsis will appear if tab name is too long
  • (design) Adjust email parameters (priority, skill, language) widths to prevent button overflowing

[5.13.1] - 2024-08-27

🐛 Bug Fixes

  • (leads) Deferred leads will be no longer missing in outbound queue
    • The issue was caused by incorrect data scheme which was unable to parse the event informing about deferred lead

[5.13.0] - 2024-08-23

🚀 Features

  • (e-mail) Improve loading semantic of email body and enhance user message in case of error while loading the body

⚙️ Miscellaneous Tasks

  • (dev) Add 'dev' script to package.json to make transition more seamless

[5.12.2] - 2024-08-20

🐛 Bug Fixes

  • (email) Add missing localization

[5.12.1] - 2024-08-20

🐛 Bug Fixes

  • (email) Email preview no longer blinks.
    • The blinking was caused by remounting the preview each render which was supposed to prevent iframe breaking history context.

[5.12.0] - 2024-08-19

🚀 Features

  • (call-detail) Redesign call information table to make easier aligning labels with values by bringing it closer

🐛 Bug Fixes

  • (select) Disable selection of first item in select element when user clicks outside the select. It fixes selecting first item even when user clicks on something else.

🚜 Refactor

  • Remove unused code

[5.11.1] - 2024-08-16

🐛 Bug Fixes

  • (widget-settings) Fix modifing task queue widget settings when used as full space widget

[5.11.0] - 2024-08-15

🚀 Features

  • (call-history) Do not wrap text taht is usually short (date, queue) and enhance table content alignments and compactness

🐛 Bug Fixes

  • (ui) Add spacing to labels
  • (ui) Keep short information in task queueu table oneline

[5.10.0] - 2024-08-08

🚀 Features

  • (agent-status-widget) Time in Specific AUX / Not ready / Logged in / Break time will increment each second if agent is just in corresponding state

[5.9.1] - 2024-08-08

🐛 Bug Fixes

  • (task) Application closes task (goes to previous tab) when active tab with task is closed

[5.9.0] - 2024-08-06

🚀 Features

  • (router) Display content according to browser url
    • Using browser url to determine which page should be displayed enables user to reload the application and stay on the same page or send the link to another user.
  • (admin) Prepare breadcrumb menu component
  • (websocket) Support receiving json messages from server as binary data
  • (announcement_tts) Create announcement text-to-speach integration in administration
    • Announcement TTS feature allows CC admins generate announcement using AI from text
  • (admin) Structure admin section menu and open substructures on hover
  • (tab-import) Do not hide imported tab from options which enables importing the tab multiple timeS
  • (announcement-tts) Label table column that tells which announcement variant is being used
  • (announcement-tts) Add export button that lets user synchronize generated announcement with ucs files which can be used as an IVR/queue announcement

🐛 Bug Fixes

  • (locale) Add missing czech localizations
  • (rating) Correctly style not rated row in agent rating history record
  • (locale) Add missing czech localizations
  • (test) Add missing store mocks to ready state test
  • (widget) Fix Task queue failing when filter parameter queue is not yet confiured in personal data.

🚜 Refactor

  • (bug-report) Separate bug report state from app state in favour of separation of conserts
  • (impersonation) Separate impersonation state from app state in favour of separation of conserts
  • (dead_code) Remove action that sets sso token provider because it wasn't invoked anywhere
  • (temporary_tabs) Rewrite temporary tab storage to improve static code checks
  • (selectors) Replace arrow functions with data-last remeda functions

⚙️ Miscellaneous Tasks

  • (ui) Add 'gapped' visual option to button component to instruct button put spaces between its content
  • Replace react-helmet library with react-helmet-async as it supports newer versions of react

[5.8.3] - 2024-07-25

🐛 Bug Fixes

  • (locale) Add wysiwyg editor cz localization

[5.8.2] - 2024-07-25

🐛 Bug Fixes

  • (wysiwyg-editor-modal) Show modal title opened by wysiwyg editor (lexical) localized
  • (locale) Localize wysiwyg editor toolbar texts
  • (wysiwyg-editor) Remove redundant divider at the end of toolbar
  • (wysiwyg-editor) Fix icons displaying twice in editor toolbar and support floating toolbar
  • (lexical) Fix style imports to work with webpack

🚜 Refactor

  • (widget-shared-data-editor) Change UX behaviour of Shared data editor. User needs to click edit button first in order to change the value
    • Froala editor was replaced with modular lexical editor in order to unlock further UX improvements and customizations of the editor

🎨 Styling

  • Format code

⚙️ Miscellaneous Tasks

  • (ui) Create icon indicating that something wrong happend with the problem description in popup

[5.8.1] - 2024-07-18

🐛 Bug Fixes

  • (shared-data-widget) Add missing localization

[5.8.0] - 2024-07-18

🚀 Features

  • (shared-data) Recognize that shared data came from osl in known format and let admin configure the data path using dropdown instead of string path
  • (agent-stats) Select shared data value in Agent overview widget by username if it's not found by user id

🐛 Bug Fixes

  • (style) Remove redundant form group in application settings that caused extra space around radios

[5.7.0] - 2024-07-16

🚀 Features

  • (router) Display content according to browser url
    • Using browser url to determine which page should be displayed enables user to reload the application and stay on the same page or send the link to another user.
  • (router) Make ratings discoverable via url
  • (router) Make crm persons, rating form editor, supervisor control, supervisor overview, email filter editor and template editor discoverable via url
  • (router) Make crm person discoverable via url.
    • Each CRM person is identified by unique url
  • (router) Make crm tasks discoverable via url
  • (router) Redirect not found temporary tab to first static tab instead of showing 'not found' message
  • (router) Static tabs of type component use readable urls
  • (crm-person) Hide person note if it was not touched (modified) yet

🐛 Bug Fixes

  • (router) Open call via url when using call reference (green badge)
  • (router) Open template editor from email queue widget via url
  • (router) Navigate to previous page when temporary tab is closed
  • (task) Display error message explaining that task does not exist instead of generic error message.
  • (locale) Add missing czech localizations
  • (locale) Remove legacy localized text that caused error
  • (ui) Reserve space for scrollbar to avoid content jumping when switching tabs
  • (widget) Shared data editor settings did not show shared data options when note was not entered. It defaults to identifier now
  • (call-history) Correctly convert legacy from and to in personal data of call history

🚜 Refactor

  • (routing) Simplify opening of agent rating
  • Load CRM customers to customer selection compoent so it's not loaded preemptively. Display tab name according to url and temporary tab configuration instead of pragmatic tab renaming which might cause data inconsistency.

⚡ Performance

  • (widget) Position widgets via native css grid instead of manual positioning by shifting widgets using position absolute and translate

🧪 Testing

  • (link) Update link widget snapshots

⚙️ Miscellaneous Tasks

  • Replace element router with data router as it enables creating breadcrumb menu

[5.6.1] - 2024-07-12

🐛 Bug Fixes

  • (sound_player) Change order of elements to sound player appear above top menu

[5.6.0] - 2024-07-08

🚀 Features

  • (ui) Let user search options in Button widget selection

🐛 Bug Fixes

  • (rating) Correctly style not rated row in agent rating history record
  • Correctly instantiate query client provider
    • creating instances using memo might not work as expectedt in future releases because it's not meant to be used like that by the docs
  • (textarea) Textarea has minimal number of rows if specified
  • (call-history) Date picker calendar won't jump back to selected day.

🚜 Refactor

  • Move flag that determines if application is unlocked (widgets are movable and configurable) to new state that does not use immutable
  • Move widget scroll store to app state section

⚡ Performance

  • (render) Optimize rendering by stabilizing fallback value of ready channels control

⚙️ Miscellaneous Tasks

  • Create ClosableDialogModal component that features title and close button elements to DialogModal low layer component
  • (lookup) Lowercase data prop name to hint react that it is intedned to appear as html attribute
  • (react) Wrap component to forwardRef to conform react recommendations
  • Disable code style rule that enforces shorthand arrow function

[5.5.0] - 2024-06-25

🚀 Features

  • (ui) Make save and cancel button stuck to bottom to let user see and easily reach them
  • (task) Configuration allows completely hiding task solution if company does not need to use it.

🐛 Bug Fixes

  • (email) When replying from task history, open directly reply email instead of the e-mail that is being replied to.

[5.4.5] - 2024-06-21

🐛 Bug Fixes

  • (locale) Localize 'Cancel' in task editation
  • (ui) Added flex-grow to the main grid to always show bottom menu at the bottom

[5.4.4] - 2024-06-19

🐛 Bug Fixes

  • (lookup) Fix app crashing when Lookup being updated via spreadsheet
  • (ui) Adjust yellow button color to make it better readable in dark mode
  • (ui) Shrink space between allocation button and task table in queue widget
  • (ui) Align space around widgets to match big widget with widget board

🚜 Refactor

  • Open iframe from task metadata button using enum value instead of inline component
  • Simplify code of task quick duration add button
  • Rearrange layout of application to size content between top and bottom bar automatically

⚙️ Miscellaneous Tasks

  • Adjust typing of button ui element to enhance error prevention

[5.4.3] - 2024-06-17

🐛 Bug Fixes

  • (error_handling) Log email parsing error issue to console so developer can recoginze data consistency problems
  • (email) Link email to its reply when the reply is loaded.

⚡ Performance

  • Stabilize email queue selection in email information to prevent unnecessary rendering

[5.4.2] - 2024-06-17

🐛 Bug Fixes

  • (tasks) Rewrite Task queue widget to repair task loading even if there are multiple task queue widgets on same tab.
    • Overall task loading should be more deterministic.
  • (tasks) Rewrite Task queue widget to repair task loading even if there are multiple task queue widgets on same tab.
    • Overall task loading should be more deterministic.
  • (task) Make agent optional in task change history
    • agent is optional because the changes can be done by system itself

🚜 Refactor

  • Remove unnecessary code

⚡ Performance

  • Do not instantiate data each mount to avoid unnecessary renders

⚙️ Miscellaneous Tasks

  • Add react compiler possible issue checking to prevent errors that might occur when compiler is integrated to speedup application

[5.4.1] - 2024-06-13

🐛 Bug Fixes

  • (task) Add missing localization of error informing that task could not be loaded

[5.4.0] - 2024-06-13

🚀 Features

  • (task) If task history item contains task reference, email preview will display under the history item (If feature is enabled)

⚡ Performance

  • (email) Set white background to email url always becaues it is white in all themes

⚙️ Miscellaneous Tasks

  • (release) Add push alias that pushes also the tags

[5.3.0] - 2024-06-13

🚀 Features

  • (task) Improved user experience by allowing quick tag selection through search functionality

⚙️ Miscellaneous Tasks

  • (release) Use annotated tags for releasing

[5.2.5] - 2024-06-12

🐛 Bug Fixes

  • (lexical) Put editor elements to paragraphs to prevent rich text editor crashes
  • (widget) Fix widget type selection that could not be changed in some cases after new tab creation

[5.2.4] - 2024-06-07

🐛 Bug Fixes

  • (widget) Display widget context menu next to the widget instead of corner of the application

[5.2.3] - 2024-05-27

🐛 Bug Fixes

  • (form) Allow clearing the value of metadata dropdown input and allow searching the options
  • (form) Make status selection in priority editing clearable
  • (control_table) Display profile and team dropdowns above user-queue table and display pagination in table footer

⚙️ Miscellaneous Tasks

  • Upgrade event-emitter to 2.0.3

[5.2.2] - 2024-05-21

⚡ Performance

  • (widget) Prevent redundant rerenders (caused by queue statistics changes) of widget displaying inbound callers

⚙️ Miscellaneous Tasks

  • Upgrade react-query from v3 to v5

[5.2.1] - 2024-05-17

🐛 Bug Fixes

  • (supervisor) Make cell more expressive when agent exceeds break time limit

[5.2.0] - 2024-05-16

🚀 Features

  • (task) Task history is more intuitively formated
    • Feed formatting is used instead of table. Current formatting needs less space and desing itself tells who is the author and when the change happened.

🐛 Bug Fixes

  • (render) Add key to softphone error so it conforms react rules
  • (locale) Add localization of email and task action history title
  • Correct empty value of agent selection element
    • Assigned agent to email is now removable again.

⚙️ Miscellaneous Tasks

  • (dead_code) Remove unused component

[5.1.1] - 2024-05-15

🐛 Bug Fixes

  • (calling) Automatic selection of first line is saved until the line is available
    • This fix prevents line to change unexpectedly when user did not select line manually yet and new line is available and it's on first position.

[5.1.0] - 2024-05-15

🚀 Features

  • (lexical) Create CRMReferencePlugin that allows writing CRM references to editor, references are replaced with tag on the fly
  • (lexical) Hide not yet working features of rich text editor used in task edit (lexical)
  • (lexical) Remove commenting plugin
  • (modal) Create html native modal component
  • (lexical) Fix disappearing popup for link edit by using DialogModal instead
  • (lexical) Support text styling while importing html
  • (lexical) Crate specialized link node that always exports as target=_blank
  • (dialog) Call onClose callback when dialog is about to be closed
  • (lexical) Template can be used directly from the editor toolbar
  • (lexical) Use lexical editor in person description edit

🐛 Bug Fixes

  • (lexical) Adjust corner rounding
  • (lexical) Fix saving link when the dialog was opened from floatin menu
  • (locale) Add localization text
  • (lexical) Make context menu invoked using slash visible
  • (locale) Add localization text
  • (proptypes) Replace defaultProps with js default values to support future react versions
  • (modules) Upgrade modules that has reported vulnerabilities
  • (modules) Upgrade @trivago/prettier-plugin-sort-imports to fix vulnerability in lower version
  • (bundle) Disable app reloading to fix fast refresh
  • Wrap SupervisorControl rows to table body to conform dom nesting standard
  • (websocket) Avoid multiple websocket connecting while websocket is already connecting or connected
  • (audio_player) Polish creating an audio player to avoid unexpected behaviour
  • (outbound) Add outbound lead if it does not exist yet (only update it otherwise)
    • When call is not accepted by agent, it can be added to outbound queue as unanwered call. In that case, the lead should display immediately in outbound queue. That should work by now.

🚜 Refactor

  • (code) Replace RichTextView with TextView (these components were apparently duplicates)
  • (lexical) Remove unused code
  • (lexical) Disable layouts because the conversion to/from html is not supported
  • (logging) Remove debug log
  • (widget) Enhance composition of widget settings modal
  • Convert sup overview summary to ts in order to remove defaultProps which will be deprecated
  • (lexical) Move lexical from prototyping directory to lib
  • Upgrade semantic ui react to version 3 and adjust codebase to be compatible
  • Remove not maintained library react-sticky-table and implement the behaviour (Supervisor Control sticky columns and rows) ad-hoc

📚 Documentation

  • (changelog) Create v5 changelog as an initialization point
    • All future changelogs will be crated via just release. Not manually.
  • (changelog) Add v3 and v4 changelogs
  • (changelog) Change changelog path and template header
  • (changelog) Remove unreleased changes from v5 changelog

🧪 Testing

  • (environment) Migrate testing environment from jest to vitest

⚙️ Miscellaneous Tasks

  • (gitignore) Add .swc to .gitignore as a preparation to future transition babel -> swc
  • (build) Add justfile to simplify (mainly for people not working on this project) determining how to start or release project
  • Enable react strict mode for easier detection of errors in development mode
  • Install jsdom dependency to enable ci tests

WIP

  • Lexical intagration to task edit

Refaactor

  • (code) Remove dead code

[5.0.7] - 2024-04-15

🚀 Features

  • (widget) Replace plot library to support react18

🐛 Bug Fixes

  • (operator_api) Make able to call Operator API methods right away by selecting state information ad hoc instead of subscribing to the stete
  • (test) Adjust selector mocking to provide correct values and prevent test failing
  • (perf) Remove unnecesarry createSlector
  • (ui) Forgotten comma
  • (test) Modify test data according to new implementation
  • (core) Avoid using reactive tmpData in widget core to prevent changing of reference of tmpDataDispatch and infinite rerenders
  • (supervisor_view) Only agents related to selected queues are displayed

🚜 Refactor

  • (code) Select agent team options via redux selector to memoize the conversion to SUIR dropdown options
  • (code) Select queue branches from ucsMirror state and remove it from ucs
  • (code) Prettify
  • (code) Select group options using selector from ucsMirror state instead of ucs state
  • (code) Remove auto setting dial line in favour of selector that handles state when user did not select anything yet
  • (code) Refactor dial component to be more hierarchical and readable w/o too much sphagetti
  • (code) Remove dead code
  • (code) Remove redundant paremeters of task while opening task
  • (code) Convert TaskQueue AllocateButton to TS FC
  • (code) Convert TaskQueue actions to TS
  • (code) Convert SpeedDial to TS
  • (code) Replace SharedEditor shared data options loading with react-query
  • (code) Convert SharedEditor to TS FC and remove immutable from tmpData
  • (code) Convert SharedData widget to TS
  • (code) Convert SettingsModifier widget to TS
  • (code) Convert SMSChat Message to TS
  • (code) Convert Plot Settings to TS FC
  • (code) Convert settings upgrader exceptions to TS

⚡ Performance

  • (memoization) Remove createSelector from accessing app config because it does unnecessary overhead in this case
  • (store) Use queues from ucsMirror instead of ucs store to avoid re-renders due to statistics

[5.0.6] - 2024-03-20

🐛 Bug Fixes

  • (autoscroll) Replace react-sizeme with modern react-resize-detector which fixes automatic scrolling to previous location
  • (layout) Add padding to non scrollable big widget to prevent content underflowing
  • (soft_phone) Send dtmf (tone message) to preferably transfer session which enables going throught IVR

🚜 Refactor

  • (widget) Refactor AgentStats used in SupervisorView and SupervisorOverview to make it more react idiomatic and better readable for future optimizations
  • (dead_code) Remove unused imports

⚡ Performance

  • (tick) Use context 'now' value instead of creating own in each PhoneButton component
  • (render) Render SupervisorView and SupervisorOverview agent table in background by deferring most changing dependencies and allow interrupting the re-render when deps change
  • (autoscroll) Move caretaking about scroll to separate component to prevent rerendering whole subtree when scrollTop changes

[5.0.5] - 2024-03-18

🚀 Features

  • (ucs_events) Create proxy object from ucs event action to maintain backwards compatibility with immutable data

🐛 Bug Fixes

  • (crm) Show task body template dropdown only at already created tasks, templates cannot be applied to new tasks

⚡ Performance

  • (tick) Remove 'now' state from Timer component and use context information about current second which makes everything more straightforward and even beter synced

[5.0.4] - 2024-03-15

🚀 Features

  • (widget) Allow form submission to support UCS Import plugin
  • (widget) Remove border from Link widget mode iframe

🐛 Bug Fixes

  • (widget) Fallback tab label name in Button widget to widget label if there is not active call

🚜 Refactor

  • (dead_code) Remove redundant import aliases of semantic configs since it is no longer needed since semantic inlinging

[5.0.3] - 2024-03-04

🐛 Bug Fixes

  • (soft_phone) Do not show error that softphone unregistered when the unregistration is wanted and expected
  • (test) Change mocked data to reflect new source of queues
  • (theme) Modal that allows supervisor update priority of agent in queue is no longer transparent
    • the problem was that the modal was imported from suir instead of our custom patch with correct element root

🚜 Refactor

  • (widget) Compute AuxStatus widget value using selectors instead of computation components which were an antipattern
  • (clean) Remove validating queue existance and autoremove because not existing queues are no longer hidden in dropdown and user can remove them easily

⚡ Performance

  • (render) Pass style classes as formatted string instead of array to remove reason to rerender component
  • (render) Make SupervisorControl dependent on queues only when user selected queues are empty which results in way more less rerenders when user selects queues in filter
  • (render) Remove dependency on whole queues from SupervisorControl to reduce number of required rerenders
  • (render) Do not recreate collection of allowed queues for QueueSelector to prevent unnecessary re-renders
  • (render) Use queues from ucsMirror state that do not change often because it should update only when configuration changes which results in less rerenders