v8
UCS Operator - changelog
All notable changes to this project will be documented in this file.
[8.33.4] - 2026-04-14
🐛 Bug Fixes
- (widget-core) Rewrite small overflow detection to avoid infinite re-render loop
- (widget-core) Replace small overflow detection with thin scrollbar to not fight browser behaviour
[8.33.3] - 2026-04-14
🐛 Bug Fixes
- (supervisor-control) Prevent application crash when supervisor control component is configured to display queues that user has no access to
[8.33.2] - 2026-04-14
🐛 Bug Fixes
- (error-handling) Replace decorator with function call to avoid experimental parser features
[8.33.1] - 2026-04-14
🐛 Bug Fixes
- (error-handling) Add czech locales
[8.33.0] - 2026-04-14
🚀 Features
- (error-handling) Add error boundaries that will catch rendering errors early and do not block application vitals
🐛 Bug Fixes
- (pbx-structure) Add ai extension to parser
- (director) Add director api method to API stub
⚙️ Miscellaneous Tasks
- Allow multiple classes per file
- Reformat code
- Disable max-lines eslint rule
[8.32.1] - 2026-04-09
🐛 Bug Fixes
- (design) Make sure that button widget modern desing styles are applied even in production build
[8.32.0] - 2026-04-09
🚀 Features
- (email) Modernize email widget colors (modern feature flag required)
- (tasks) Modernize task widget colors (modern feature flag required)
- (design) Allow enabling modern design via feature flag
⚙️ Miscellaneous Tasks
- Reformat code
[8.31.0] - 2026-04-09
🚀 Features
- (call-history) Replace loading circle and overlay with lightweight loading line above call history
🐛 Bug Fixes
- (call-history) Stick pagination to page bottom and make call history table scrollable to avoid pagination jumping
🚜 Refactor
- (call-history) Reformat code
[8.30.0] - 2026-04-08
🚀 Features
- (call-detail) Rearrange layout to make it more compact and easier to reach call transcription
- (call-detail) Color call detail based on call direction
[8.29.3] - 2026-04-08
🐛 Bug Fixes
- (references) Replace non breaking space with inline flex gap which disappears when reference description is not defined
- (dial) Do not show 'Call originate failed' error to user as it's usually a false positive (api)
🚜 Refactor
- (crm) Extract interaction rendering to compoenent to enhance readability
[8.29.2] - 2026-04-07
🐛 Bug Fixes
- (dial) Do not show 'Call originate failed' error to user as it's usually a false positive
⚙️ Miscellaneous Tasks
- Reformat code
[8.29.1] - 2026-04-02
🐛 Bug Fixes
- (call-detail) Handle missing call path because it's not available in active call
[8.29.0] - 2026-04-02
🚀 Features
- (button) Add button widget option opening detail of active call
- (call-detail) Add call path timeline and redesign call detail
🐛 Bug Fixes
- (widget-core) Use default settings if stored widget settings is empty
[8.28.3] - 2026-04-01
🐛 Bug Fixes
- (call-history) Datetime range will no longer disappear
[8.28.2] - 2026-03-31
🐛 Bug Fixes
- (passwordless) Pass public hostname to mobile app instead of origin to enable logging in from different networks
[8.28.1] - 2026-03-31
🐛 Bug Fixes
- (widget-link) Add space around so border is not clipped when the widget is 1 unit high
- (design) Adjust main color lightness level in modern design
🚜 Refactor
- (widget-core) Redesign small overflow recalculation to idiomatic react approach
[8.28.0] - 2026-03-31
🚀 Features
- (crm) Add crm person tasks state filter
[8.27.0] - 2026-03-30
🚀 Features
- (button) Simplify button design to align it with design of rest of the application
- (task) Replace time tracking reset button icon with eraser icon instead of X
- (task) Make 'Add comment' button disabled if comment textarea is empty
- (crm) Make crm person contacts scrollable
🐛 Bug Fixes
- (crm) Fix disappearing changes while editing crm person
🚜 Refactor
- (crm) Add and edit crm contacts using mutation to reflect request state and hide the modal when change was successful
⚙️ Miscellaneous Tasks
- Reformat code
- Reformat code
[8.26.0] - 2026-03-27
🚀 Features
- (dial) Dial number via mutation to utilize synchronization of call dial on server
🐛 Bug Fixes
- (dial) Begin transferring call after pressing Enter or # while in number input
- (call-history) Fix parsing from and to filter parameters
- (otp) Generate token for impersonated user instead of real user
- (sms-widget) Correctly pass selected queue to api
🚜 Refactor
- (selectors) Reuse selector
- (button) Remove value prop from design system button component
⚙️ Miscellaneous Tasks
- Reformat code
- Allow inline comments and todos in linter
Reafactor
- (task) Repalce disabled prop with click handler that may be undefined
[8.25.0] - 2026-03-25
🚀 Features
- (call-detail) Call path tooltips are localized
- (crm) Add 'New Task' button to the top of CRM Person
- (recording-playback) Playback can start right after modal opening if enabled in feature flag
- (outbound) Display only queue name in Outbound queue widget when only one queue is configured. It makes the widget design more lightweight.
- (touchscreen) Enlarge hitbox of play icon in recent calls widget to enhance ux while using touch screen
- (tel-protocol) Register for tel: protocol request from electron native app wrapper to enable integration with other applications
- (uphone) Advertise multiple supported codecs
- (design) Allow enabling modern design via dev toolbelt
- (link-widget) Redesign link/button widget (only available if modern design is enabled)
- (design) Redesign tile statistics widgets (modern design configuration required)
- (design) Apply default widget design (modern design settings required)
- (design) Modernize checklist design (modern design needs to be enabled)
🐛 Bug Fixes
- (recording-playback) Fix waveform ignoring autoplay parameter in configuration
- (recent-calls-widget) Handle case when agents in cdr event might be null
- (design) Wrap Task allocation button and Campaign lead dial buttons in button group to remove redundant spacing
- (sms-widget) Ignore configured queues that are not available to user.
- (recent-calls-widget) Localize text of play recording icon title
- (recent-calls-widget) Enhance UI of Recent calls widget by using beautified variants of widget configured color
- (recent-calls-widget) Localize text of play recording icon title
- (link-widget) Add default value of exe integration
- (design) Adjust color levels
- (design) Make default widget background 1 level lighter
- (test) Update test snapshot to match new design
- (design) Fix link widget hover incorrect color shade (modern design)
- (dial) Disable dialing component when call is already in progress
- (person-metadata) Display metadata even when only built-in metadata are available (e.g. person.id)
- (agent-stats) Divide total idle duration by number of idle periods instead of number of calls
🚜 Refactor
- Remove unused localizations
- Select all required state parameters in one selector
- Replace custom Flexbox component with tailwind flexbox which is more ergonomic
- Replace custom Flexbox component with tailwind flexbox which is more ergonomic
- Add type check of value in AllocateButton in task queue widget to prevent type errors
- (link-widget) Remove commented code
- (link-widget) Move link widget styling into the component to clean widget composition core
- (agent-status-widget) Remove unused import
- (widget-core) Delegate tile widget color stylig to tile core with only provided css variable with required color
- (link-widget) Determine text color via css computation and increse text contrast to enhance accessibility
🎨 Styling
- Reformat code
- Reformat code
- Reformat code
- Reformat code
- Reformat code
- Reformat code
- Reorder package.json library dependencies to respect alphabet
- Reformat code
- Reformat code
- Reformat code
⚙️ Miscellaneous Tasks
- Remove unused import
- Add parameter type to fix type error
- Make rspack proxy work finally
- Add logout route to proxy
- Add uauth route to proxy
- Fix typing of Pick component
- Add api route to proxy
- Upgrade rspack and storybook
- Add ElementRoot as storybook decorator to provide theme variables
- Fix remove.proxy patch
- Add missing typing to Pick component
- Make the development proxy optional via environment variable DEV_PROXY instead of patch
- Add development toolbelt to bottom of app and move there dev indicator icon from top menu
- Add primary/secondary colors to tailwind palette
- (styling) Add tailwind radius levels to css variable palette and map them to tailwind to allow their usage in css files
- (test) Update snapshots to match redesign
- (eslint) Fix usage of typescript parser in eslint config
- (eslint) Remove eslint-plugin-react-compiler as it's no longer needed because eslint-plugin-react-hooks covers it
- (code) Sort imports using eslint instead of prettier
- (tooling) Replace prettier with oxfmt
- (linting) Replace eslint with oxlint
- (ci) Adjust linting of changed files to avoid linting everything when nothing changed
- Disable no-negated-condition in oxlint conf
[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