v6
UCS Operator - changelog
All notable changes to this project will be documented in this file.
[6.18.2] - 2025-02-17β
π Bug Fixesβ
- (localization) Add missing czech translations
 
[6.18.1] - 2025-02-17β
π Bug Fixesβ
- (modal) Check if element is connected to DOM before opening it as dialog
 - (typing) Set title explicitly to undefined in react-helmet to make type checker happy
 - (soft_phone) Handle finished session when transfering with consulatation
 - (notifications) Handle undefined notifications service worker registration
 
[6.18.0] - 2025-02-07β
π Featuresβ
- (supervisor) Display popup with queue name over phone button displaying information about current call
 - Added function to the ucsOperator api to override theme for current session.
 - Queue table header cell in CallHistory now shows an icon when there is an active filter related to this column.
 
π Bug Fixesβ
- (localization) Add missing czech translations
 - (outbound) Display all leads by default
 - (style) Changed the CallHistory filter button and the QueueHeaderCell icon to orange.
 
π Refactorβ
- Use context api instance instead of global one
 - Use context api instance instead of global one
 - Use context api instance instead of global one
 - Use context api instance instead of global one
 - Use context api instance instead of global one
 - Use context api instance instead of global one (hangup, terminate call)
 - Use context api instance instead of global one (provisioning)
 - Do not log that widget couldn't be added to remote log as reducer should not call api
 - Load sms queues via react query to lazy load it and use context api instead of global
 - Use context api instance instead of global one (settings modifier)
 - Use context api instance instead of global one (outbound)
 - Use context api instance instead of global one (sup ctrl)
 - Use context api instance instead of global one (supervisor profiles)
 - Use context api instance instead of global one (crm)
 - Use context api instance instead of global one (task solution)
 - Use context api instance instead of global one (email filters)
 - Use context api instance instead of global one (impersonation)
 - Use context api instance instead of global one (rating form editor)
 - Use context api instance instead of global one (sms chat)
 - Use context api instance instead of global one (email person change)
 - Use context api instance instead of global one (email)
 - Replace global api instance with just fake object having only exactly the methods that are still used via global instance
 - Remove unused imports
 - Refactoring and tweaks based on cr
 - Created Theme type and THEMES constant. ThemeChange can now be rendered independently on position. Tweaked the daylight animation. Extracted useDetermineTheme into a standalone function.
 - Changed to ternary operator.
 
βοΈ Miscellaneous Tasksβ
- Reformat code
 - Add typing to function parameters
 - Convert EmailFilter/apiMethods to ts
 - Convert Impersonation/actions to ts
 - Convert RatingFormEditor/apiMethods to ts
 - Convert SMSChat/actions to ts
 
WIPβ
- Rotate sun/moon allways same direction using css only
 
[6.17.0] - 2025-01-29β
π Featuresβ
- (dialog-modal) Add prop that enables unmounting children when dialog is closed
 - (speed-dial) Make speed dial icons configurable via integration configuration
 
π Bug Fixesβ
- (chat) Automatically open docked chat sessions when open sessions are closed
 - (widget) Color failed widget red so it's more noticable that something went wrong
 - (widget) Set allowColorChange to all widget indexes so GeneralSettings knows that it's there for sure
 
π Refactorβ
- Improve typing of widget register to make possible removing runtime check which improves performance
 - Select api instance from context instead of importing global instance
 - Inline task serve api call to use context api
 - Use context api instance to have control over instance that application is using and make transition to new auth more seamless
 - Use context api instance to have control over instance that application is using and make transition to new auth more seamless
 - (SoftPhone) Use context api instance in to have control over instance that application is using and make transition to new auth more seamless
 - (templates) Replace template dropdown reducer with react-query
 - (softphone) Replace manual event subscription with ucs event hook
 - (sms) Subscribe to sms events via hook useUcsEvent instead of simply calling api.subscribe
 - (email) Subscribe to template events via context api instance instead of global one
 - (crm) Subscribe to template events via context api instance instead of global one
 - Rename useTemplate -> applyTemplate so eslint does not think that it's react hook
 - (typing) Split websocket related methods and api call related methods to 2 interfaces as a preparation for future calling api using http requests
 - Use context api instance instead of global one
 - (dial) Trigger hold/resume/mute directly withtout dispatching it via redux as it is not needed
 
βοΈ Miscellaneous Tasksβ
- Rename file .js -> .ts
 - Enable browser globals in eslint config to remove false positive lint errors
 - Remove unused parameter
 - Reorganize imports
 - Reformat code
 - Reformat code
 - Reorganize imports
 
[6.16.0] - 2025-01-15β
π Featuresβ
- (supervisor) Allow hanging up calls of agents even while on call
 
[6.15.1] - 2025-01-15β
π Bug Fixesβ
- (supervisor_view) Fix hangup button
 
π Refactorβ
- Fix typing
 
[6.15.0] - 2025-01-07β
π Featuresβ
- (phone-button) Determine text color by background
 
π Refactorβ
- Select appState using selector to simplify future refactoring of state management
 - Add typing to application notifications (and remove immutable)
 - Create second application state to enable incremental migration from immutable to native js data
 - Move outboundId from immutable store to native js
 - Move dialLine from immutable store to native js
 - Refactor store typing of actions to improve code stability and readability
 - Add typing to action creators paramters
 - Remove legacy lint rule ignores
 
π§ͺ Testingβ
- Fix tests
 
βοΈ Miscellaneous Tasksβ
- Fix typing of rating history filter reducer
 - Enable svgr loader to be able import svg files as react components
 
[6.14.1] - 2025-01-06β
π Bug Fixesβ
- (button) Set default button color to grey
 - (AgentBadge) Display agent ringing/calling color by color settings in administration - teams
 - (user-add) Handle form submittion error without data
 - (agent-stats) Determine if agent is idle or talking by interactions rather than legacy agent state
 - (react) Render empty row if agent is not found in different component to prevent application crash
 
π Refactorβ
- (button) Simplify button coloring by using oklch model for text color and focus/hover background computation
 - Use useAppSelector instead of useSelector to enhance type safety
 - Use raw interaction data without conversion to immutable
 - (queue-status) Longest idle agent - replace agent.status and agent intaraction.state merge named as agent.state with just status and interactions
 - (queue-status) Agents count - replace agent.status and agent intaraction.state merge named as agent.state with just status and interactions
 - (agent-book) Compute agents color in agent contact book while transfering according to status and interaction instead of state
 - Use group id from data to prevent using index as key
 - Remove dead code
 - Fix forgotten parameter name
 - Put agent and interaction color determination to one place to prevent future conflicts
 - Remove dead code
 
βοΈ Miscellaneous Tasksβ
- Mark bun lockfile as binary and hint git how to diff it
 
[6.14.0] - 2024-12-19β
π Featuresβ
- (supervisor) Color new (not progressed) call as if it was ringing to indicate that agent already dialed the call
 
π Bug Fixesβ
- Check if array includes a value instead of index to correctly determine agent's participation in call
 
βοΈ Miscellaneous Tasksβ
- (typing) Make max duration validator a typeguard
 - Patch constant generator so it ignores enums and localization function
 - Handle python enums in constant generator
 - Add interaction state and type enums
 
[6.13.0] - 2024-12-17β
π Featuresβ
- (badge) Display badge in tab only if it's value is not zero
 - (style) Position and size tab badges so they fit into the text better
 
β‘ Performanceβ
- (css) Remove redundant style entrypoint as the semantic styles are imported in index and handled by bundler
 
βοΈ Miscellaneous Tasksβ
- (build) Migrate rspack config to esm
 - (ci) Migrate ci to noble
 
[6.12.1] - 2024-12-17β
π Bug Fixesβ
- (project) Fix release script by not using gnu specific awk flags on mac
 
[6.12.0] - 2024-12-16β
π Featuresβ
- (ci) Add stable package job
 - (osl-integration) Handle AvgWaiting and Oldest category statistics in widget
 - (osl-integration) Support ISO8601 for duration
 - (task) Filter by state name instead of state id to dynamically reflect changes in task queue states
 
π Bug Fixesβ
- (typing) Define that agent button can have nullable teamId
 - (react) Instantiate default callback outside function header to stabilize its reference
 - (react) Clear timeout when component unmounts
 - (style) Fix css selector name
 - (typing) Fix generic types of Radio ui component
 - (style) Display reject button in confirmation modal
 - (email) Display email language flag in email queue
 
π Refactorβ
- Select user configuration information from ucsMirror which does not change that often to optimize application rendering frequency
 - Remove tasksCount derived value from ucs state in favour of lazy computing selector
 - Replace const marker with brackets
 - Handle key finding while sorting in type safe way
 - Select account codes from type safe ucs mirror state instead of legacy ucs state
 - Autofix eslint issues
 - Simplify widget context to avoid creating object instance every render
 - Remove empty ErrorBoundary props interface
 - Remove unused imports
 - Fix eslint issues
 - Extract static value from component state
 - Make report download form configuration builder exhaustive to prevent forgetting input type handling
 - Remove unused settings proptypes
 
β‘ Performanceβ
- (outbound) Rerender only dial button in outbound widget when call is connnected
 - (task-queue) Rerender only assign button in task queuue widget when call is connnected
 - (confirm) Mark callbacks as event hanlders to avoid redundant ui re-rendering
 
π¨ Stylingβ
- Add line between html links and scripts to visually separate it
 
βοΈ Miscellaneous Tasksβ
- (ci) Switch to new deploy mechanism
 - (ci) Enable debug log
 - (ci) Remove listing of files in packaging
 - (ci) Remove unused stages
 - (ci) Replace stage name to align it with insoft/deploy
 - (localization) Upgrade lingui to version 5
 - (localization) Replace deprecated import patsh using codemod
 - (build) Upgrade application bundler
 - (ci) Run eslint on changed files in MR
 - Migrate project from npm to bun package manager
 
[6.11.0] - 2024-11-27β
π Featuresβ
- (settings-modifier) Display extension number and name so the user can know what is he changing
 - (speed-dial) Display icon indicating user which action (dial/hangup/transefer/answer) will be invoked by clicking on speed dial widget and enable dialing another call when current call is on hold and device is not SoftPhone.
- SoftPhone does not support multiple sessions.
 
 
π Refactorβ
- Remove unused types
 - (provisioning) Determine if logged in user can add another users according to ucsMirror
 - (provisioning) Determine users permissions according to state in ucsMirror to enhance runtime safety
 - (provisioning) Remove unused acl handling from ucs state
 - Lazily compute number of tasks if should appear in tab name badge
 
β‘ Performanceβ
- (task-queue) Avoid rendering task queue table every time queues change by selecting queues on lower level
 - (rating-history) Optimize rating template name lookup by using Map which is more performant then Array.find
 - (note) Generate dynamic selector to make Note widget dependent only on required data instead of whole ucs state
 
βοΈ Miscellaneous Tasksβ
- (eslint) Upgrade @tanstack/eslint-plugin-query, typescript-eslint to synchronize supported typescript version
 - (eslint) Replace eslint-plugin-react with @eslint-react/eslint-plugin
 
[6.10.1] - 2024-11-22β
π Bug Fixesβ
- (email) Make email widget setings queue dropdown clearable (cross icon at the rigth side) instead of empty option
 
π Refactorβ
- Use group list from ucsMirror instead of ucs via selectors to enhance code stability
 - Use enums.phones via options selector instead of legacy state
 - Select agent team options via predefined cached multilingual selectors enhancing performance and ux (teams are sorted alphabetically respecting user language)
 - Select teams from ucsMirror state that is typed and schema validated to enhance stability
 - Select all aux reasons and task create configuration from ucsMirror state via typed selectors to enhance stability
 
βοΈ Miscellaneous Tasksβ
- Upgrade react-query and its rules to eslint static code analyser to prevent possible errors
 
[6.10.0] - 2024-11-20β
π Featuresβ
- Alphabetically sort groups and departments in configuration of OSL statistics
 
π Bug Fixesβ
- (speeddial) Remove restriction that only digits can be configured in phone number input to conform E.164
 
βοΈ Miscellaneous Tasksβ
- Adjust typing of compare function to allow number keys
 
[6.9.0] - 2024-11-19β
π Featuresβ
- (task,email) Highlight comments in task and email history of changes
 - (email) Visualy separate history by adding divider above it indicating that it is history of changes
 - (email) Close email tab only if original email queue is configured to close email after reply/forward.
 
π Bug Fixesβ
- (email) Remove redundant spacing above email body textarea
 - (email) Reset email body state if email reply does not exist
 - (email) Keep email tab open only if reply/forward was sent from original email and not from own tab
 - (localization) Add missing czech translations
 
[6.8.2] - 2024-11-18β
π Bug Fixesβ
- (osl-integration) Ignore previous path value of shared data widget settings if shared data is from OSL
 
[6.8.1] - 2024-11-18β
π Bug Fixesβ
- (localization) Add missing czech translations
 
[6.8.0] - 2024-11-18β
π Featuresβ
- (osl-integration) Let user configure which OSL email/chat stats will be summarized together depending on selected groups and departments
 
[6.7.1] - 2024-11-15β
π Bug Fixesβ
- (speeddial) Color SpeedDial to dark grey when in dark mode leaving only colored border
 
[6.7.0] - 2024-11-14β
π Featuresβ
- (outbound) Paginate and lazy load outbound leads to speedup initial load
 
π Bug Fixesβ
- (dial) Ignore undefined search needle in change event
 - (operator-api) Make sure that ucsOperator.login exists before calling onCredentials callback
 
β‘ Performanceβ
- (outbound) Only refetch outbound leads of queue that has been updated
 
βοΈ Miscellaneous Tasksβ
- (api) Add subscription methods that allow unsubscribing by counting subscription references and knowing when nobody needs the subscription anymore
 
[6.6.4] - 2024-11-13β
π Bug Fixesβ
- (call-history) Handle invalid from or to error and prevent call history from freezing in loading state
 
[6.6.3] - 2024-11-13β
π Bug Fixesβ
- (email-attachment) Correctly build email attachement download URI to download correct attachemnt
 - (email-template) Allow template attachement name being empty as it is probably inline attachement
 
[6.6.2] - 2024-11-12β
π Bug Fixesβ
- (build) Support last 4 Safari major versions
 
[6.6.1] - 2024-11-12β
π Bug Fixesβ
- (sp-debugger) Log softphone debugger error as warning as it is not problem causing application not working
 
π Refactorβ
- (state) Replace duplicate state (numbers) with selector to improve application consistency
 - (dial) Replace crm search in dial button with react query to simplify code and remove legacy state
 - (state) Derive lineIds from state rather than dupliating state to enhance consistency
 - (state) Select tag options using selector to prevent unnecessary application rendering
 
β‘ Performanceβ
- (call-events) Calculate speed dials lazily to gain performance benefit when speed dials are not displayed
 
βοΈ Miscellaneous Tasksβ
- Add type check script
 
[6.6.0] - 2024-11-08β
π Featuresβ
- (report) Add configuration option that enables remembering of report widget date filter.
 
βοΈ Miscellaneous Tasksβ
- (changelog) Setup changelog generating to v6 file
 
[6.5.1] - 2024-11-08β
π Bug Fixesβ
- (speeddial) Indicate user that speed dial is beeing dialed and that he can click the widget
 - (email) Fix crashing of email widget when date is empty
 
π Refactorβ
- Remove keyframes and animation mixins as they are no longer needed in current versions of browsers
 
[6.5.0] - 2024-11-07β
π Featuresβ
- (task) Allow user change task person in task edit.
 
βοΈ Miscellaneous Tasksβ
- Bump rspack@1.1
 - (logging) Log ucs api callback zod error in readable format
 
[6.4.0] - 2024-11-07β
π Featuresβ
- (email) Replace browser built-in datetime inputs with INSOFT datetime input that offers more versatility and better UX.
 - (filter) Color filter icon to orange if the filter is active so user cannot miss it.
 
π Bug Fixesβ
- (integration) Allow 'undefined' as valid value for onIdentifier callback parameter as it means 'continue with already paired phone'
 
[6.3.0] - 2024-11-06β
π Featuresβ
- (e-mail) Color email editor according to e-mail queue style that will be applied while sending the e-mail
 
[6.2.0] - 2024-11-06β
π Featuresβ
- (crm) Email can be sent directly from Customer card either by clicking on mail icon in left top corner or by clicking on mail icon right next to curstomer's email address.
 
[6.1.0] - 2024-11-05β
π Featuresβ
- (recordings) Restrict recording downloading in player if recording download needs to be audited
 
π Bug Fixesβ
- (task) Remove automatic assignment to logged in agent while editing task that has no assigned agent
 - (chat) Fix agent chat blinking on new message in production build
 - (autoupgrade) Fall back to default Email widget settings if the settings is not to be found in older versions of settings
 - (email) Go back to previous tab when email is closed without reply
 - (email) Go back to previous tab when email is put back to queue / sent