v8
UCS Operator - changelog
All notable changes to this project will be documented in this file.
[8.24.1] - 2026-03-02
🐛 Bug Fixes
- (recent-calls-widget) Add czech localization
[8.24.0] - 2026-03-02
🚀 Features
- (widget) Add widget displaying agent's recent calls with ability to play call recording
[8.23.1] - 2026-02-27
🐛 Bug Fixes
- Supervisor view shared data column won't display characters of string values
- Display tabs menu in main menu in correct order
🚜 Refactor
- Provide electron executable via react context to avoid parsing it multiple times
- Unify rich metadata parsers with core lib
- Remove empty component props interface
- Remove empty props interface of lookup search component
- Remove DashboardState from store state type as it gets inferred from store
- Parse widgetIds from selected widgets when editing dashboard to avoid type error
- Remove deprecated AgentSortEnum enum
- Rewrite supervisor overview reducer to redux toolkit slice to enhance type safety
- Replace supervisor view agent sorting enum with union
- Pass agent sort value to change callback to enhance clarity and type safety
- Convert boolean to integer to avoid dynamic conversion when using + operator
- Remove all global store type definitions that can be inferred
- Remove dead code
- Remove non-existent global store slice type
- Define that transferNumber can be null
[8.23.0] - 2026-02-25
🚀 Features
- (supervisor-view) Add option allowing to hide suspended agents
🚜 Refactor
- Remove unused import
[8.22.0] - 2026-02-25
🚀 Features
- (person-metadata) Add person.displayname as button template variable
[8.21.1] - 2026-02-24
🐛 Bug Fixes
- (structure-diagram) Add bigger spacing between components to avoid orphan nodes overlaping
[8.21.0] - 2026-02-24
🚀 Features
- (url-variables) Make url variable expansion handle legacy format using %
- (task) Support modern url template format in task metadata button
- (crm) Display crm person metadata
- (metadata) Support electron executable button type
🚜 Refactor
- Replace runtime UnreachableError with compile time checked exhaustive switch
- Replace MetadataButtonType enum with union of constants
- Extract union types to constants to enhance readability and possibility to infer types
🎨 Styling
- Reformat code
- Reformat code
- Convert direct return to classical function syntax
- Reformat code
[8.20.3] - 2026-02-19
🐛 Bug Fixes
- (widget-link) Add missing localizations
[8.20.2] - 2026-02-19
🐛 Bug Fixes
- (widget-link) Remove path from executable api parser as it will not be provided anymore
[8.20.1] - 2026-02-19
🐛 Bug Fixes
- (crm) Fix interaction editation crashing on metadata modification
- (widget-link) Expand executable parameter template
🚜 Refactor
- Replace call_metadata selectors with metadataView selector
⚙️ Miscellaneous Tasks
- Switch to metadata_view instead of call_metatada but keep backwards compatibility
[8.20.0] - 2026-02-19
🚀 Features
- (widget-button) When running in electron and executable api is exposed, allow configuring button to open executable
🐛 Bug Fixes
- (dispatch-bridge) Display placeholders when there are no attended or unattended calls
- (app-settings) Do not reset crm open configuration in app settings
- (widget-button) Remove debug data
- (localization) Add missing cz localization
🚜 Refactor
- Pass crmSuspend config as property instead of selecting it via hook to make sure it's not null
- Select username via type checked selector to enhance type safety which prevents crashes
🎨 Styling
- Reformat code
⚙️ Miscellaneous Tasks
- Add test case
[8.19.0] - 2026-02-12
🚀 Features
- (lookups) If configured, display input for new lookup record as first row of table instead of last
[8.18.2] - 2026-02-12
🐛 Bug Fixes
- (dispatch-bridge) Display participants number next to their name
[8.18.1] - 2026-02-12
🐛 Bug Fixes
- (dispatch-bridge) Fix unsubscribing from dispatching call while not connected
[8.18.0] - 2026-02-12
🚀 Features
- (dial) Allow number typing confirmation using # symbol and focus dial input using F2 key
- (dial) Allow hanging up outgoing call using hotkey anytime
- (time-parser) Add unix timestamp parser
- (dispatch-bridge) Add dispatch rooms widget that allow user act as a dispatcher
- (dispathing) Add widget displaying calls in dispatching queues
- (dial) If configured, focus dial whenever numpad is pressed
🐛 Bug Fixes
- (api) Remove kvargs support in api connector as it isn't much of compatible with typing and replace the kvargs with positional args
- (dispatch-bridge) Add target agent id to dispatch join request
- (localization) Add missing cz localization
🚜 Refactor
- Extract dispatch bridges separation to function to enhance readability
- (dispatch-bridge) Extract dispatch bridge buttons to component
- Remove dead code
🎨 Styling
- Reformat code
⚙️ Miscellaneous Tasks
- Remove testing script
[8.17.0] - 2026-02-09
🚀 Features
- (core) Change static tabs using Ctrl + Shift + 0-9 shortut
🐛 Bug Fixes
- (widget-core) Support passing widget data in plain form instead of immutable in ComponentWrapper
- Hide call dial error notification after 10 seconds
- (dial) Do not focus dial automatically after app laods
- (reports) Distinct query key in view and form body to prevent infinite data fetching
🚜 Refactor
- (widget-link) Remove dead code
- (rating-templates) Remove immutable from data passed to server api
- Select offset via selector to enhance type safety
- Enhance typing of temp tabs
- Replace tab data in content with js alternative to immutable to enhance type safety
- Type widget select handler and sanitize invalid inputs
- (supervisor-ctrl) Rewrite redux slice to toolkit approach to enhance type safety
⚡ Performance
- Do not memoize scroll callback as it does nothing since the child component is not memoized either
🎨 Styling
- Reformat code
⚙️ Miscellaneous Tasks
- Add comment warning that shared data should not be removed from ucs state even if it's not referenced by code because it can bse used in colorPath
[8.16.5] - 2026-02-02
🐛 Bug Fixes
- (waiting-callers) Passs correct data to waiting callers computation when calling api method 'state'
🚜 Refactor
- (waiting-callers) Remove dead code
- Remove dead code (legacy notification state)
- (shared-data-view) Use shared data in plain js form instead of legacy immutable
- (recordins) Select configuration parameters via selector with parser to enhance type safety
- (supervisor-view) Select shared data from new state
- (widget-board) Replace state value with constant because the state was never changed anyway
- (core) Move dashboard state (widget settings modal) to separate reducer
[8.16.4] - 2026-01-27
⚙️ Miscellaneous Tasks
- (tanstack-query) Integrate devtools
- (uPhone) Add uphone webrtc connection state change logging
[8.16.3] - 2026-01-26
🐛 Bug Fixes
- Mount context menu of Calls and Inbound queue widgets correctly so the context menu is correctly styled
⚡ Performance
- (waiting-callers) Compute number of waiting callers lazily to reduce memory footprint when the value is not needed
⚙️ Miscellaneous Tasks
- Fix v8 changelog
[8.16.2] - 2026-01-21
🐛 Bug Fixes
- (dial) Make contact type optional to support older UCS versions
[8.16.1] - 2026-01-21
🐛 Bug Fixes
- (dial) Add cz localization
[8.16.0] - 2026-01-21
🚀 Features
- (dial) Add infinite scrolling of recent calls and lookup contacts
[8.15.0] - 2026-01-20
🚀 Features
- (speed-dial) Allow changing font size in settings
🚜 Refactor
- (dial) Replace memo with TQ select
[8.14.0] - 2026-01-15
🚀 Features
- (dial) Rewrite dial to enhance UX
🐛 Bug Fixes
- (settings-modifier) Silence warning logged due to resource loading
[8.13.0] - 2026-01-13
🚀 Features
- (menu) Display home link in top menu if tabs are displayed in dropdown menu
[8.12.8] - 2026-01-13
🐛 Bug Fixes
- (settings-modifier) Display currently configured value
[8.12.7] - 2026-01-09
🐛 Bug Fixes
- (localization) Add missing cz localization
[8.12.6] - 2026-01-09
🐛 Bug Fixes
- (director) Remove debug render
[8.12.5] - 2026-01-09
🐛 Bug Fixes
- (director) Disable director introduction when app is running in iframe and mic permission not provided
🚜 Refactor
- Move throttling detector to separate component to simplify connector
- Separate buildUrl function from Connector so it can be reused out of the class scope
- Separate recording download methods from Connector
- Make chat subscription more idiomatic and via ref counted api
- Load mergable persons via react query instead of saga and redux actions to simplify code
- (crm-person-merging) Load merged person via react query to simplify code
- (crm-person-merging) Merge persons via mutation instead of saga
⚙️ Miscellaneous Tasks
- Add process.env typing to silence errors
[8.12.4] - 2026-01-06
🐛 Bug Fixes
- (app-state-manager) Fix typing and fall back to console log if api log is not available
- (impersonation) Add impersonated query param to websocket uri to let uauth know that connection is being made for someone else
- (session-manager) Fix type error and warn when director main app is not string|null
- (authentication) Broadcast information about logout to all context tabs
- (app-settings) Do not ignore number of rows in call history
🚜 Refactor
- (mail-attachment) Remove attachment upload api methods from connector instance
[8.12.3] - 2025-12-03
🐛 Bug Fixes
- (osl-integration) Add app source to log metadata
[8.12.2] - 2025-12-03
🐛 Bug Fixes
- (uphone) Log in try block to bypass tests missing mocked logger
[8.12.1] - 2025-12-03
🐛 Bug Fixes
- (uphone) Add logging of main app and uphone device
[8.12.0] - 2025-12-03
🚀 Features
- (outbound) Display language metadata as flag in outbound queue
- (osl-integration) Do not register to director if app loaded in osl dashboard
[8.11.0] - 2025-12-02
🚀 Features
- (core) Add indicator to ready button that shows dot for each channel. The dot indicates whether the channel is active
🐛 Bug Fixes
- (diagram) User can modify time in diagram settings via clock tooltip
- (settings-modifier) Center radio button at variable option
- (lint) Upgrade eslint-plugin-react-compiler
- (uphone) Fix possible race condition in audio device sync
- (uphone) Sync audio devices even if the instance is not main
🚜 Refactor
- Add typing to statistics api endpoint
- Replace immer produce with plain js object manipulation
- Remove dev log
- Remove immer produce from filter sort table as it was not required because the object is not needed to be immutably changed
⚡ Performance
- (hotkeys) Replace useCallback with useEffectEvent to avoid frequent adding and removing window event listener
⚙️ Miscellaneous Tasks
- Migrate react-datetime styles import to support next version of sass
- Migrate rgl styles imports to support next version of sass
- Remove redundant handsontable styles import
- Upgrade prettier
- Remove immer as direct dependency
- Remove legacy backwards compatibility libraries (regenerator and core-js)
[8.10.1] - 2025-11-24
🐛 Bug Fixes
- (framed-content) Add allow same origin scripts to enable auth when embedding admin page
⚙️ Miscellaneous Tasks
- Migrate to v3 sass use instead of import
Reafactor
- (mail) Directly import attachment drop style file into attachment component
[8.10.0] - 2025-11-24
🚀 Features
- (settings-modifier) Add phone transfer options that modify both internal and external transfer number
⚙️ Miscellaneous Tasks
- Upgrade sass-loader and replace sass with sass-emebedded
[8.9.0] - 2025-11-24
🚀 Features
- (diagram) Let user filter queues for diagram data
🐛 Bug Fixes
- (diagram) Prevent diagram overflowing and incrementally enlarging itself
- (crm-task) Redirect user to crm person when new task is canceled
- (settings-analyzer) Update parser with new Diagram widget
🚜 Refactor
- Use import instead of require in audio analyser
⚙️ Miscellaneous Tasks
- Upgrade uuid library
- Upgrade lingui library
- Update remeda library
- Update zod library
- Bump libraries to their latest versions of same major
[8.8.0] - 2025-11-12
🚀 Features
- (widget-board) Allow hiding widget content to enhance performence while moving and resizing widgets
- (time-input) Add time value parser to enable integration with app
- (config) Warn user that configuration might be lost when reloading/closing the app while the app is unlocked
- (supervisor) Add checkbox that hides aggressivity and priority rows in supervisor control
- (diagram) Create new diagram widget displaying connected to originated outbound leads
- (time-input) Support format with seconds
🐛 Bug Fixes
- (telemetry) Upgrade wrap-ansi package because installed version does not exist
- (package) Migrate from binary to text-based lockfile
- (package) Remove wrap-ansi as direct dependency
- (package) Migrate original lockfile
- (queue-selector) Fix adding queues in select
- (widget-board) Button hiding widget content when editing layout is correctly styled
- (supervisor) Add czech locales to supervisor control settings
- (diagram) Remove scope directive from styles as compiler does not support it yet
- (diagram) Add czech localization