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