Skip to main content

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