Přeskočit na hlavní obsah

v9

UCS Operator - changelog

All notable changes to this project will be documented in this file.

[9.36.2] - 2026-09-02

🐛 Bug Fixes

  • (email) Do not close 'new email' modal when user clicks outside

[9.36.1] - 2026-09-02

🐛 Bug Fixes

  • (dial) Add localization to device loading error messages

[9.36.0] - 2026-09-02

🚀 Features

  • (email) Style reply surface only for reply/forward drafts
    • Show the purple reply surface and the "Reply draft" / "Forward draft" header only when the editor is actually editing a reply or forward. Brand-new outbound emails now use the neutral surface and omit the draft-kind label, since there is no original email to relate to.

🐛 Bug Fixes

  • (topmenu) Improve dial loading and error states

[9.35.0] - 2026-08-31

🚀 Features

  • (email) Allow agents to self-assign unassigned emails
    • Add an "Assign to me" button on the agent row of EmailInformation that is visible to non-supervisor users when no agent is assigned. Clicking it patches agent_id via email.edit with the current agent's id, reusing the existing edit-lock rules.
  • (email) Gate sent mail reply behind enableSentMailReply flag
  • (email) Open original email when reply draft exists

🚜 Refactor

  • (config) Extract feature flags into featureFlagsParser

[9.34.3] - 2026-08-31

🐛 Bug Fixes

  • (connector) Prevent refCountUnsubscribe from tearing down legacy subscriptions
    • Legacy subscribe() and refCountSubscribe() tracked subscriptions in separate structures, so a refCountUnsubscribe() call that dropped a topic's refcount to zero would send frontend.unsubscribe to the backend even when the topic was also subscribed via the legacy path (e.g. the provisioning saga at app start), silently killing events the app still expects to receive.

Pin the refcount of legacy-subscribed topics to +Infinity and share a private sendSubscribe() helper between both paths, so refCountUnsubscribe can never bring such topics to zero while refCountSubscribe no longer inflates its own counts through the public subscribe().

[9.34.2] - 2026-08-23

🐛 Bug Fixes

  • (login) Allow user team to be null

[9.34.1] - 2026-08-23

🐛 Bug Fixes

  • (device) Make nextDeviceSync default true even if ff section not defined

[9.34.0] - 2026-08-23

🚀 Features

  • Added INSOFT kiosk deploy directory (for BeFree)
  • (core) Make nextDeviceSync ff true by default

[9.33.0] - 2026-08-21

🚀 Features

  • Mirror tanstack device query into Redux behind nextDeviceSync
    • Adds a NextDeviceSync bridge that copies the paired device from the tanstack useDevice query into the legacy app.device slice while the ff.nextDeviceSync flag is on. Full device shape is preserved (matches UM_LOGIN_SUCCESS), so uPhone and other legacy selectors keep working and now react to device changes coming from other windows via user.mobility.login/logout events.

🐛 Bug Fixes

  • (uphone) Scope unattended bridge ring to role's dispatch
    • Previously the queue ring fired for every unattended bridge, alerting agents about calls in dispatching workspaces they do not manage. Match bridge dispatch_id against the current role's dispatch_id so only the relevant agents are notified.
  • (integration) Do not skip onIdentify callback when nextDeviceSync is enabled
  • (device) Make sure that both id and deprecated device_id properties are always present on device object in store

[9.32.0] - 2026-08-20

🚀 Features

  • (email) Allow replying to sent emails
    • Add reply, reply all and forward buttons to outbound sent emails so an agent can continue the thread without opening the original inbound message. The controls are hidden once the sent email itself has been replied to, and each button is disabled when the parent (reply_to) email already has a reply assigned, preventing a second reply from displacing the existing one.

Introduce a reusable TanStack Query options factory for loading emails by id and use it from both SentReplyButton and EmbeddedEmailView. Also expose reply_to on the email parser so the parent lookup has the id it needs.

  • (uphone) Ring for unattended bridge calls when agent is ready
    • Play a distinct ring tone (option 8) while there are unattended dispatching bridge calls in the queue, but only when the agent's status is ready so busy or paused agents are not interrupted.

🐛 Bug Fixes

  • (email) Temporary hide sent email reply buttons

[9.31.0] - 2026-08-20

🚀 Features

  • (topmenu) Widen menu items on comfortable/touch density
    • Icon-only Dial buttons (Hold, Transfer, Mute, Hangup, Answer, Resume) were ~64px wide against a 56px min-height on touch density, narrow enough for resistive-panel taps to slip between adjacent buttons.

Add --tmn-item-hpad mirroring the existing --tmn-item-vpad pattern: 0em on compact (preserves legacy), 0.35em on comfortable, 0.7em on touch. Applied shell-wide so Status, Line, and the copy-number item scale consistently with the density contract.

  • (audio) Unify profile logic and add trigger badges
    • Extract audio profile parsing/storage/matching into a shared core module and use it across settings UI, hotkey manager, and top-menu triggers.

Add profile indicators to both SoftPhone and UPhone triggers with Lucide badge icons, and rename profiles to headset/handset with backward-compatible loading from legacy silent/loud localStorage keys.

  • (topmenu) Widen menu items on touch density
    • Icon-only Dial buttons (Hold, Transfer, Mute, Hangup, Answer, Resume) were ~64px wide against a 56px min-height on touch density, narrow enough for resistive-panel taps to slip between adjacent buttons.

Add --tmn-item-hpad mirroring the existing --tmn-item-vpad pattern: 0em on compact and comfortable (mouse users don't need it), 0.7em on touch. Applied shell-wide so Status, Line, and the copy-number item scale consistently with the density contract.

🐛 Bug Fixes

  • (localization) Add czech translation to audio profiles
  • (crm) Align crm reference label with its description
  • (email) Display email from/to crm contact using crm reference utility instead of custom styling

🚜 Refactor

  • (dispatching-rooms) Hoist handset hotkeys to top level
    • The handset-up (answer) and handset-down (hangup) hotkeys were bound to components that only mount conditionally: HANDSET_UP_HOTKEY in CallHotkeys, which renders only when Dial has an active call, and HANDSET_DOWN_HOTKEY in ParticipatedBridgeView, which renders only when the DispatchingRooms widget is on screen. Operators lost the hotkeys whenever those components were absent, including when the backend failed to include the call in the active-calls stream.

Register both hotkeys once in a new GlobalCallHotkeys component mounted in TopMenu. Since call.answer and call.hangup are not scoped to a specific call, the handlers forward the keypress unconditionally and let the backend pick the target.

Move the ari.dispatch.bridge.* cache invalidation out of DispatchingRoomsView into a useDispatchingRoomsSubscription hook mounted in TopMenu so the cache stays fresh for UPhoneInternal even when the widget is hidden.

⚙️ Miscellaneous Tasks

  • Disable lazy compilation

[9.30.0] - 2026-08-18

🚀 Features

  • (core) Switch audio profiles using F15 (headset) and F16 (handset) keys
  • (display-density) Enlarge dial font size in comfort and touchscreen display density
  • (director) Sticky device selection
    • Add a persistent device_id and wire it through iam/pick/pick_sticky. Refactor BottomMenu's chess-icon into a click-triggered popup hosting both "Use here" and "Always use here" actions plus a pinned-device indicator. Admin director page gains a Device column, pinned-device card, and per-session action buttons.
  • (director) Add Device tab to softphone popup
    • Colocate the director picker with the softphone controls where the underlying WebRTC-election concept already applies. Keypad and Audio tabs hide in standby (this tab isn't main), and the UPhone popup is now openable in standby so users can reach Device and promote this tab to main. The BottomMenu chess-icon stays as a parallel affordance during migration for users without softphone or UPhone configured.

Enable "Always use here" whenever "Use here" is enabled: pick_sticky is a superset of pick, and pick clears the sticky pin. The only true no-op is being main and already pinned here.

Add density support (compact, comfortable, touch) to the director status popup body via a local Style A token table, and polish the visuals: theme-aware secondary text color, dedicated online/offline dot, thumbtack icon on the sticky button, subtle divider above the preference footer.

🐛 Bug Fixes

  • (Connector) Skip RPC when refcount subscribe/unsubscribe has no topics
    • refCountSubscribe and refCountUnsubscribe previously called subscribe/ unsubscribe unconditionally, sending a frontend.subscribe or frontend.unsubscribe RPC with no topics whenever every requested topic was already tracked (refcount just incremented, or decremented above zero). This also produced misleading log lines like "Unsubscribed from UCS events:" with nothing after the colon.
  • (uphone) Do not log about skipping call event that user is not participant of

🚜 Refactor

  • Consolidate identity constants and add DEVICE_ID
    • Extract INSTANCE_ID, SESSION_ID, SESSION_ID_SHORT into a new src/lib/idents.ts module and add DEVICE_ID (persisted in localStorage) for the upcoming director sticky-device feature. Rename _IDENT suffix to _ID for consistency and update all import sites.

[9.29.1] - 2026-08-10

🐛 Bug Fixes

  • (recent-calls) Localize tooltip

[9.29.0] - 2026-08-10

🚀 Features

  • (dial) Grow dial input to fill whole space to fit longer names
  • (dial) Make dial number suggestsions respect display density settings
  • (recent-calls) Dial number of recent call on click

🐛 Bug Fixes

  • (density) Fix missing paddings on small display in compact density

⚙️ Miscellaneous Tasks

  • Replace debounce with configurable debounce

[9.28.2] - 2026-08-03

🐛 Bug Fixes

  • Avoid crashing api integration by undefined 'this'

[9.28.1] - 2026-07-29

🐛 Bug Fixes

  • Change background color of top menu from brand orange color to light gray

[9.28.0] - 2026-07-28

🚀 Features

  • Hangup active bridge call on handset down
  • (RecentCalls) Scale rows with user display density
    • Read main.density from application settings and drive row padding, gaps, minimum height, direction icon, primary/meta type, and the Semantic play icon size from a per-widget DENSITY_TOKENS table. Compact preserves the original rendering so existing deployments do not shift; comfortable and touch target BeFREE 10 operators.

🐛 Bug Fixes

  • Remove legacy hotkey sequece listeners

🚜 Refactor

  • (density) Move Density enum to lib
    • Application settings previously reached into widgets/DispatchingRooms/density to import DENSITY_VALUES, and RecentCalls had its own duplicate of the same tuple. Extract the enum and the Density type to src/lib/density so both widgets and the settings schema share one source of truth. Per-widget token tables stay local: the fields DispatchingRooms and RecentCalls need do not overlap enough to justify a shared composition yet.

🎨 Styling

  • Reformat whole project

⚙️ Miscellaneous Tasks

  • Add git blame ignored commits to skip reformat commits
  • Blame ignore project reformat

[9.27.0] - 2026-07-28

🚀 Features

  • Make top menu respect display density settings
  • Skip device identification if device is already paired

[9.26.0] - 2026-07-27

🚀 Features

  • (dispatch-bridge) Hide other's attended calls that are already connected because they are not important for others anymore
  • (dispatching) Add configurable display density
    • Dispatching runs on BeFREE 10 touch panels (10.4", 1024x768) where the compact layout was sized for 20 concurrent calls, but real load is around five. Compact, comfortable and touch presets trade that unused density for legible text and touch targets clearing the ~9mm minimum.

Density is an application setting rather than a widget one, since it follows the operator's eyesight and hardware, not a widget instance. Compact reproduces the previous rendering and stays the default.

Also fixes two pre-existing defects: a malformed active: variant that left cards without press feedback, and a missing ucsMirror.users mock that crashed the stories. The action row moves off Semantic's button, whose higher-specificity styles made Tailwind sizing inert.

  • (dispatching) Enlarge touch density typography
    • Field testing on the BeFREE 10 showed the caller name still reading too small. text-xl shares the line height of text-lg, so the identity and timer grow without changing card height.

Moves the status line into the density tokens as well; it was pinned at text-xs, rendering action errors at roughly 2.5mm on that panel.

  • (dispatching) Add single-column layout option
    • Split leaves the bottom of the own-calls column idle, since operators usually have one or two active calls. Stacked runs all three sections down one column, trading vertical headroom for full-width cards whose caller identity no longer truncates. Split stays the default.

Queue sections are marked by rules carrying a label and a count. The label stays at text-xs at every density: it is wayfinding for new users, and sitting on the rule costs no vertical space. Own calls get no rule and show "No active calls" instead, which also fills a blank region that split layout left unexplained.

Lists, separators and the dashed placeholder move into their own components so both layouts compose the same pieces. Cards and lists gain shrink-0, without which they collapsed inside a scrolling flex column and painted over the following section.

  • (dispatching) Stabilise participated action row positions
    • Slot 1 now always holds the state-advance action (Answer, Hold, Resume) so the button under the operator's finger keeps a compatible meaning across ringing to connected. Slots 2 to 4 stay empty during ringing rather than repositioning slot 1, and Hangup sits in slot 5 behind a fixed safety column so the destructive action never neighbours Leave.

Actions moved to a CSS grid defined in participated-bridge-view.module .scss; bridge-card-layout no longer forces a flex row on its actions prop so each view owns its own layout.

🐛 Bug Fixes

  • Localize display density settings

🚜 Refactor

  • (dispatching) Unify bridge card header layout
    • Compact placed the timer beside the state icon and pushed the caller to the right edge, while looser densities gave the caller the middle slot. Fields therefore swapped sides when density changed.

All densities now use one fixed slot order, so only the type scale varies. Compact additionally gains identity truncation and a right-aligned tabular timer.

  • (dispatching) Redesign bridge card accents via css module
    • Card state was signalled by a 4px coloured left edge, hard to catch in peripheral vision on a 123 DPI panel viewed at an oblique angle. Full borders plus a matching body tint register faster while scanning, without changing the card's height or width.

Colours are derived through the theme's OKLCH l/c rails and selected via a data-accent attribute on the card, so both light and dark surfaces stay in step with the rest of the app and the mapping lives in one place. Waiting reads flatter than the base to keep the queue of unclaimed calls from competing with cards that need action.

Callers now pass a typed accent (participating | attended | waiting) instead of a raw class name, so the waiting case stops being an empty string and the compiler will flag a new state if one is added.

🧪 Testing

  • Import unit test functions to prevent false positive syntax errors

[9.25.1] - 2026-07-24

🐛 Bug Fixes

  • (email) Add czech localization

[9.25.0] - 2026-07-24

🚀 Features

  • (crm) Split settings of automatic crm tab opening to out/in calls

[9.24.0] - 2026-07-24

🚀 Features

  • (email) Display email id in test env
  • (email) Enhance UX of template menu

🐛 Bug Fixes

  • (email) Replace email.edit with email.get API in embeded email viewer
  • (email) Save only unsaved email data fields to prevent unassigning the agent when they had the email already opened

[9.23.0] - 2026-07-19

🚀 Features

  • (dispatch-bridge) Ring with distinctive sound when there is unattended bridge

[9.22.5] - 2026-07-18

🐛 Bug Fixes

  • (dispatching-rooms) Replace mod + fkey with f13/14

[9.22.4] - 2026-07-18

🐛 Bug Fixes

  • Remove froala dark mode customization as it made popups transparent
  • (email) Make email background always white even in dark mode to make email body consistent
  • (dispatching-rooms) Add alternative hotkeys for handset down and handset up events to prevent writing macro into inputs

[9.22.3] - 2026-07-15

🐛 Bug Fixes

  • (email) Allow adding template multiple times

[9.22.2] - 2026-07-15

🐛 Bug Fixes

  • Do not activate temp tabs if activate is disabled

[9.22.1] - 2026-07-14

🐛 Bug Fixes

  • (email) Localize 'replied' email state

[9.22.0] - 2026-07-14

🚀 Features

  • (audio) Add silent and loud audio profiles that can be applied using macro
  • (uphone) Connect webrtc even when there are connected dispatching bridges
  • (dispatch-bridge) Allow user filter which dispatch bridges will be visible to them in ui
  • (dispatch-bridge) Replace texts with visual interpretation of empty dispatch bridge
  • Add title with user's displayname to person icon
  • (dispatch-bridge) Always display name and number of pstn participant even when there is more than 2 participants
  • (dispatch-bridge) Display dispatch bridge debug json if enabled in config
  • (dispatch-bridge) Add possibility to add workmates to bridge
  • (dispatch-bridge) Filter workmates by team so dispatcher sees only users in same team

🐛 Bug Fixes

  • (audio) Add czech localization
  • (kiosk) Allow conflicting hotkey sequence for handsetup
  • Revert work in progress changes
  • (dispatching-rooms) Localize dispatch bridges
  • (dispatching-rooms) Localize dispatch bridges
  • (dispatching-rooms) Localize dispatch bridges
  • (email) Switch between send and replied email states when user changes email direction filter

🚜 Refactor

  • Remove redundant type annotation

⚙️ Miscellaneous Tasks

  • Add unicode flags to dev bundler config regexps
  • Make dev proxy work via .env file
  • Specify that app should be run with sudo and env file in dev mode
  • Fix csp in dev env

[9.21.2] - 2026-07-07

🐛 Bug Fixes

  • (email) Address alignment
  • (email) Hide inline email attachements conditionally to support former ucs versions

🚜 Refactor

  • (outbound) Infer lead type from parser
  • (dispatch-bridge) Make dispatching rooms query reusable

[9.21.1] - 2026-07-02

🐛 Bug Fixes

  • (outbound) Localize not found text

[9.21.0] - 2026-07-02

🚀 Features

  • (template) Add saving status to template editor

🐛 Bug Fixes

  • (template) Fix wording
  • (email) Make tempalte group and email queue when sending new email searchable
  • (outbound) Fix outbound lead parser

[9.20.3] - 2026-07-01

🐛 Bug Fixes

  • (email) Fix editor content styles

[9.20.2] - 2026-06-26

🐛 Bug Fixes

  • (localization) Remove redundant tests

[9.20.1] - 2026-06-26

🐛 Bug Fixes

  • (dispatch-bridge) Localize texts
  • Replace ... with …
  • (dispatching-rooms) Localize dispatch bridges
  • (email) Make email queue widget table horizontally scrollable when it overflows

🚜 Refactor

  • (outbound-queue) Replace redux saga with tanstack query
  • (outbound-queue) Replace moment with luxon
  • (outbound-queue) Add outbound result form typing
  • (dispatch-bridge) Remove non-existent css class
  • (dispatch-bridge) Centralize actiond dispatching to make sure that user cannot click to actions when previous action did not finish yet
  • (dispatch-bridge) Restructure code

🧪 Testing

  • Create story for dispatching rooms with action in progress

⚙️ Miscellaneous Tasks

  • Repair storybook building
  • Create storybook for dispatching rooms
  • Fix eslint issues

[9.20.0] - 2026-06-23

🚀 Features

  • (uphone) Assume kiosk device to be uphone

🐛 Bug Fixes

  • (tasks) Fix displaying crm reference icon in rich task description

[9.19.0] - 2026-06-22

🚀 Features

  • (email) Redesign email list widget filter preset buttons and add 2 more options

[9.18.1] - 2026-06-22

🐛 Bug Fixes

  • (email) Allow opening external links from email but open them in new tab

⚙️ Miscellaneous Tasks

  • Add bunfig.toml with minimum release age

[9.18.0] - 2026-06-17

🚀 Features

  • (search) Focus crm search input using hotkey

[9.17.1] - 2026-06-17

🐛 Bug Fixes

  • (template) Reload template when attachment is uploaded

[9.17.0] - 2026-06-16

🚀 Features

  • (outbound) Remove outbound finish mood reporting

🐛 Bug Fixes

  • (tasks) Adjust spacing in embeded email in task history
  • (email) Display attachment upload in template editor
  • (email) Reload email template when attachment gets deleted to give response to user

[9.16.0] - 2026-06-16

🚀 Features

  • (email) Add icons and labels to action history to so changed properties are better readable

🐛 Bug Fixes

  • (email) Remove redundant right margin at print button
  • (reports) Fix incorrectly styled datetime input

🚜 Refactor

  • (email) Replace enabled flag with skipToken

[9.15.1] - 2026-06-15

🐛 Bug Fixes

  • (email) Use standard spacing token in email sticky send button family

⚙️ Miscellaneous Tasks

  • Reformat build config
  • Upgrade rspack to v2

[9.15.0] - 2026-06-12

🚀 Features

  • (email) Make cancel/task/save/send buttons in email editor stuck to bottom of window edge to avoid the needness of scrolling down to send email

[9.14.0] - 2026-06-11

🚀 Features

  • (supervisor-control) Ux enhancements

🐛 Bug Fixes

  • (supervisor-control) Always add/remove/activate/suspend only agents/queues that are currently displayed to agent with respect to applied filters

[9.13.0] - 2026-06-11

🚀 Features

  • (supervisor-control) Allow user quickly hide columns by queue type in supervisor control

🐛 Bug Fixes

  • (supervisor-control) Prevent crashing the app when user has no permissions to any queue

[9.12.0] - 2026-06-11

🚀 Features

  • (email) Allow filtering emails by tag

🐛 Bug Fixes

  • (email) Display tags in email queue list widget

[9.11.1] - 2026-06-08

🐛 Bug Fixes

  • (email) Remove 'Email detail' text from printed email to save space

[9.11.0] - 2026-06-08

🚀 Features

  • (supervisor-control) Make sure that agents are loaded when moving team of agents from one state to another
  • (supervisor-control) Add 'hide offline agents' checkbox to filter
  • (supervisor-control) Visualy separate filter and profiles
  • (supervisor-control) Put filter and profiles to left aside on ultrawide screens
  • (supervisor-control) Make whole cell clickable to adjust skill
  • (supervisor-control) Highlight row and column to indicate which agent and queue is being assigned
  • (supervisor-control) Remove profiles as nobody uses them

🚜 Refactor

  • (supervisor-ctrl) Refactor code
  • (supervisor-ctrl) Remove dead imports

⚙️ Miscellaneous Tasks

  • (supervisor-ctrl) Reformat code
  • Remove overflow from dev build
  • Exlude analysis data and changelogs from search all

[9.10.0] - 2026-06-08

🚀 Features

  • (email) Hide inline attachments (if backend supports attachment inline flag)
  • (email) Display attachment icon at subject when email has non-inline attachment

[9.9.0] - 2026-06-05

🚀 Features

  • (email) Save email tags right after adding/removing each of them

🐛 Bug Fixes

  • (email) Prevent close email button with reason overflowing its containers
  • (email) Hide reply buttons texts on medium displays

[9.8.0] - 2026-06-04

🚀 Features

  • (email) Allow language filtering via table header
  • (uphone) Enable dtmf keyboard in uphone

🐛 Bug Fixes

  • (email) Add missing localization

[9.7.1] - 2026-06-02

🐛 Bug Fixes

  • (email) Correctly display images in sent emails
  • (email) Wait for images to load when printing email

[9.7.0] - 2026-06-01

🚀 Features

  • (email) Add header to printed email

[9.6.2] - 2026-06-01

🐛 Bug Fixes

  • (email) Prefix email body attachment path to load images inline correctly

[9.6.1] - 2026-06-01

🐛 Bug Fixes

  • (localization) Add czech localization of 'Print'

[9.6.0] - 2026-06-01

🚀 Features

  • (email) Add print button

🚜 Refactor

  • Load lookup email contacts via tanstack query instead of saga

[9.5.0] - 2026-05-30

🚀 Features

  • (email) Replace basic input with clearable input in email widget subject and from filter
  • (email) Redesign email layout
  • (email) Add flag icon to language selector in email
  • (email) Separate note with it's own submit button and put back reason to clear what inputs correspond with put back / update buttons
  • (email) Save modified email information right after changing the value by introducing edit and save buttons at the field
  • (email) Visualy unify static and editable email data
  • (email) Make reply all / forward / create task less visualy important
  • (email) Make cancel / save / create task less visualy important
  • (email) Spacing and rounding polish

🐛 Bug Fixes

  • (email) Prevent memory leaks by using srcDoc instead of src with createObjectURL which wasnt released
  • (email) Add email 'send again' recipients automatically on blur
  • (email) Add missing localization
  • (email) Make attachment dropbox background respect dark mode

⚙️ Miscellaneous Tasks

  • Add impeccable skill
  • (email) Reformat code

[9.4.1] - 2026-05-27

🐛 Bug Fixes

  • (email) Show email quick filter in agent mode even if queue is selected in settings

[9.4.0] - 2026-05-27

🚀 Features

  • (email) Color email tags in email header data form

[9.3.1] - 2026-05-27

🐛 Bug Fixes

  • Add missing localizations

[9.3.0] - 2026-05-27

🚀 Features

  • (call-history) Make tables more compact to fit more content
  • (design) Separate library and project styles to layers to enahnce styling ergonomy
  • (email) Add icons to reply buttons and display text only on large displays
  • (email) Hide new task button text on small and medium displays
  • (email) Make email header information table more compact

🐛 Bug Fixes

  • (wysiwyg-editor) Update license key
  • (design) Adjust rounding of table
  • (design) Apply full width to only direct child elements instead of all successors in device selection
  • (call-history) Make call direction icon cell fixed size to make sure it does not dissapear when there is too much content in the table
  • (admin) Remove json rendering in user list
  • (admin) Redesing director page in administration
  • (email) Add spacing between email person name and crm person badge
  • (email) Add email addresses automatically on blur

🚜 Refactor

  • (call-history) Refaactor styling of call history filter to remove legacy styling practices in favour of modern approach
  • Remove unused breadcrumb SUI styles
  • Remove forgotten breadcrumb style files
  • Remove unused ad SUI styles
  • Remove unused card SUI styles
  • Remove unused comment SUI styles
  • Remove unused container SUI styles
  • Remove unused embed SUI styles
  • Remove unused image SUI styles
  • Remove unused item SUI styles
  • Remove unused nag SUI styles
  • Remove unused placeholder SUI styles
  • Remove unused progress SUI styles
  • Remove unused rail SUI styles
  • Remove unused reveal SUI styles
  • Remove unused shape SUI styles
  • Remove unused sidebar SUI styles
  • Remove unused statistic SUI styles
  • Remove unused step SUI styles
  • Rename incorrectly named variable in email template selector

⚙️ Miscellaneous Tasks

  • Reformat code
  • Reformat css code
  • Ignore tanstack query query key lint rule because there is usually unserializable api instance

[9.2.1] - 2026-05-19

🐛 Bug Fixes

  • (queues) Listen for inbound queue update events and sync queue active state

[9.2.0] - 2026-05-18

🚀 Features

  • (uphone) Disable device selection inputs when device options are not loaded from browser api yet
  • (tabs) Automatically remove unused tabs after long inactivity

🚜 Refactor

  • (uphone) Unify auto answer and ring output device setting

[9.1.2] - 2026-05-18

🐛 Bug Fixes

  • (lexical) Install prettier as dependency to enable prettier plugin in lexical editor

⚙️ Miscellaneous Tasks

  • (uphone) Log whether output/ring/input device change was origined by user interaction or FE API call
  • (dev-server) Disable react-refresh for instance config and volumeMeterProcessor

[9.1.1] - 2026-05-15

🐛 Bug Fixes

  • (build) Define exact version of otel api library to make sure that patch is applied

[9.1.0] - 2026-05-15

🚀 Features

  • (widget-core) Rewrite widget layout edit mode core
  • (login) Reintroduce automatic user mobility logout when user logs out via Operator API to keep compatibility with 3rd party applications

🐛 Bug Fixes

  • Prevent datetime calendar picker to jump back to current month

⚙️ Miscellaneous Tasks

  • (changelog) Setup changelog generating to v9 file
  • (changelog) Automate generating changelog separated by major version into files

[9.0.0] - 2026-05-13

🚀 Features

  • (login) [breaking] User's paired device is no longer unpaired on logout

🚜 Refactor

  • (widget-core) Add typing of widget layout actions
  • (widget-core) Remove unsued exception declaration

⚙️ Miscellaneous Tasks

  • Reformat code
  • (oxlint) Install missing lint plugins
  • (oxlint) Remove rule causing oxlint fail on parsing typescript