# Changelog

All notable changes to this project are automatically documented in this file. Manual edits can be made at release time.

## 2.17.1

### Summary

Flex UI 2.17.1 includes a number of bug fixes.

### Fixed

-   Fixed the agent summary for non unified profiles account.
-   Fixed the handoff timelines.

## 2.17.0

### Summary

Flex UI 2.17 includes a number of bug fixes.

### Added

-   Add support for apple content template.
-   Auto-reregister voice client on tab visibility.
-   Added Task summary for digital channels.
-   Add support to register voice client before reservation created.

### Fixed

-   Fixed the summary placement for digital channels.
-   Fixed sorting of queues in the popup.
-   Fixed intelligent summary for digital channels.
-   Fixed an issue in SMS attachment validation

## 2.16.0

### Summary

Flex UI 2.16 includes a number of bug fixes.

### Added

-   Added Queues column in Agents table.
-   Added Queues column selection in Agent metrics filter tab.
-   Added the Queues popover to display the list of queues as comma separated strings.

## 2.15.1

### Summary

Flex UI 2.15 includes several bug fixes and an updated version of the Flex SDK.

### Fixed

-   Fixed an issue with token refresh in v2.15 that could lead to unexpected call drops.

## 2.15.0

### Summary

Flex UI 2.15 includes several bug fixes and an updated version of the Flex SDK.

### Fixed

-   Clear search input on clear all filters click
-   Fixed rollup calculation for LAA
-   Fixed the issue where preference data was not being updated when Queue name changes in Queue stats page
-   Modified `parseTimeToMinutes` to convert mm:ss format to minutes properly
-   Moved the Task completed event tracker so that Task completed event is registered once per task lifecycle
-   Profile connector context parsing correctly for more than 1 context.
-   Reset error state after successful API call to prevent blank ChatCanvas
-   Updated resolvers to build query params through util function.
-   updated the batchdispatcher to eliminate race conditions

### Added

-   Added a check readonlyadmin before call transfersetting getting called
-   Added a support to toggle the Content Template API via localStorage to allow loading unapproved templates from the UI.
-   Added mixpanel event for searching the content template
-   Added a notification in the UI when token expires
-   Added the ability to filter and re-order agents column filter as part Teams view custom columns feature

## 2.14.0

### Summary

Flex UI 2.14 includes new functionality for aligning text and using right-to-left languages in the email editor. You’ll also notice UI enhancements and bug fixes throughout Flex UI.

### Fixed

-   Fixed an issue when an agent’s network dropped during a voice call that prevented the customer’s name from appearing in the call canvas after the call reconnected.
-   Fixed an issue that prevented agents from joining incoming calls made from a SIP phone.
-   Fixed an issue that sometimes caused an endless ringtone if a customer hung up at the same time that the ringtone file started to load in Flex UI.
-   Fixed an issue with enhanced SSO that prevented users from switching between SAML profiles in different Flex instances.
-   For Flex UI 2.12 and 2.13, fixed an “Invalid SSO Settings” error that occurred when logging in to Flex using the Log in with Console button in Twilio Console.
-   Fixed an issue that prevented customer highlights from being created for new tasks when the Search for a Profile widget wasn’t configured.
-   Fixed an issue that caused Flex UI to retain messageAdded listeners after navigating away from an open task in the Agent Desktop. This fix prevents performance concerns from having too many active listeners.
-   Fixed a rare issue that could prevent the WorkerDirectoryTabs filters from showing the expected results.
-   Improved Flex SDK to resolve an issue that sometimes caused Flex UI to start in degraded mode.

### Added

-   For Agent Copilot, agents have access to new real-time assist features: [Suggested responses and Ask Copilot]. These features let agents consult Agent Copilot as they interact with customers to provide timely and accurate responses.
-   The ability to send content templates in WhatsApp messages is now available in public beta. This feature lets agents send WhatsApp messages using a content template to respond efficiently during customer conversations. Developers can also send a content template programmatically to all active WhatsApp conversations.
-   The email editor now supports text alignment and right-to-left languages:
    -   Users can manually apply right, center, or left alignment to text.
    -   When typing in a right-to-left language, cursor movement and text alignment automatically adjust to the language’s direction.
-   On the Teams View page, added custom columns in the filter panel.

## 2.13.3

### Summary

Flex UI 2.13 includes the option to turn on a default ringtone for incoming tasks, spell-checking for email, and more. You’ll also notice UI enhancements and bug fixes throughout Flex UI.

### Fixed

-   Fixed an issue that caused outbound WhatsApp content template messages to appear as blank instead of showing the content of the message.

## 2.13.2

### Summary

Flex UI 2.13.2 includes the option to turn on a default ringtone for incoming tasks, spell-checking for email, and more. You’ll also notice UI enhancements and bug fixes throughout Flex UI.

### Fixed

-   Fixed an issue that caused Voice calls to disconnect in Flex environments using enhanced SSO when the agent’s Flex access token refreshed.
-   Fixed an issue that caused the Dialpad tab to show in the WorkerDirectoryTabs in Flex UI when warm transfer was turned on for the Flex account.

## 2.13.1

### Summary

Fixed an issue introduced in 2.13.0 that prevented users from accessing the Agents and Queues tabs in the Agent Desktop when using a custom WorkerDirectoryTabs component with the Custom Transfer Directory plugin.

### Fixed

-   Fixed WorkerDirectoryTabs component dynamic API
-   Fixed a bug where we reject a task context without the profileDataAttribute even though it is valid.

## 2.13.0

### Summary

Flex UI 2.13 is now available. Throughout Flex UI 2.13, you'll find feature and UI enhancements, bug fixes, and more.

### Fixed

-   Added the Asterisk for the mandatory variables
-   Batch initial events for conditional highlighting
-   Ensures outbound calls are not blocked due to Voice SDK degradation for SIP phone
-   Fix for teams view plugin not working
-   Fix wrapper issue in user preference
-   Fixed a bug where the app would crash if you had flex-unify-panel enabled but no other UP feature enabled.
-   Fixed decimal point for integers in rollup of SLA percent
-   Fixed ringtone not playing for multiple tasks
-   Fixed the rendering of the profile title and subtitle when the traits are missing from the profile fetched
-   Fixing Transfer with Notes failure
-   Register leave pause and resume error notification
-   Trimmed the trailing and leading whitespaces of the search string
-   Unidentified profiles have default avatar icon
-   Updated sla formula on Queues table

### Added

-   Add maxHeight for filter list and implement logic to display filters dynamically
-   Add Skeleton to flex unify profile header
-   Added 2 new methods (queuesFilter and metricsFilter)
-   Added changes for sorting of team and email column
-   Added loading skeleton to unify customer details component
-   Added new SoundManager API, designed to handle and configure sound settings for various task channels in Flex.
-   Added support to Filter content template
-   Added tracker for CTB
-   Adding content template api integration
-   Adding sessionStorage through feature flags for token storage
-   Consuming new UI config endpoint and Feature Flag to enable it
-   Fixed rendering for the channel history component when it has that type of PCI
-   Move ProfileConnectorHelper from Interaction Context to new Context Service
-   The profile config resolver now resolves extra details about a profile instance that is needed for channel history
-   Update the LeaveChannel, PauseChannel, and ResumeChannel actions to be public entities. Modify these actions to accept reservationSId and parameters instead of the current task object.

## 2.12.0

### Summary

Flex UI 2.12.0 is now available. Throughout Flex UI 2.12.0, you'll find feature and UI enhancements, bug fixes, and more.

### Fixed

-   added support for conversations with multiple recordings
-   adding timeline wrapping elements to more elements for tests
-   filter suggestions such that only suggestions for the current interaction sid are received
-   Fix Continuous Loading State When No Suggestions Received
-   fix multiple pause list call
-   Fixed tab header for email task in supervisor view
-   Fixed the issue with the multi-language warning when multiple tasks are in wrap-up.
-   profile search now listens to show unidentified profile setting in console.
-   Removed an unneeded condition check causing an error for non-UI initiated CompleteTask calls.
-   Removed summary validation error from state after successful validation run on Update button click
-   Removed Teams Checkbox in Filters Tab in case new teams view is disabled
-   Update customer ai text

### Added

-   Longest Agent Availability metric
-   updating conversation canvas to show ai-summary
-   Add feedback buttons to Next Best Response and Knowledge Assist
-   Add support for dynamic localized strings
-   Add Tooltips to Feedback Buttons
-   Added a function to get channel type by conversation SID
-   Added Queue preference state to supervisor state
-   Added Queues column in Agents table.
-   Added Queues column selection in Agent metrics filter tab.
-   Added Rollup metrics for queuestats
-   Added sorting on status column in teams view
-   Added the Queues popover to display the list of queues as comma separated strings.
-   Implemented Queue management view page
-   integrated teams and agent metrics preference with backend service
-   integrating ai-summary to transfer
-   Longest available agent format change
-   Only show View Sources in NBR/KA if references is non-empty
-   Push notification on receiving alerts
-   Support the new Console login flow that uses OAuth 2.0
-   UX changes for footer in QueueDataTable

## 2.11.0

### Summary

Flex UI 2.11.0 includes new functionality for pausing tasks, new agent availability metrics for queue stats monitoring, a Teams view update to show queue names on task cards, and more. You’ll also notice UI enhancements and bug fixes throughout Flex UI.

### Fixed

-   Remove left margin from pause label
-   Fixed disposition code validation when topics feature flag is enabled.
-   Add check to show avatar if it's available even if the profile header has no name from default traits.
-   Added changes to show no agents if supervisor doesnt own any team
-   Bug fix if the uncategorized topic selection was updated in the readmode
-   Clear cdp error state when the cdp seems to recover
-   Fixed multiple pause list call
-   Fixed react types versions
-   Fixed copilot wrapup notes in SFDC
-   Fixed font on task card
-   Fixed invalid topic validation on edit mode update
-   Fixed notes initial fetching logic to be based off the presence of any summaryGenerationStatus value and the isManuallyAdding value in state.
-   Fixed the issue with the multi-language warning when multiple tasks are in wrap-up.
-   Fixed the player not handling multiple recordings issue
-   Fixed the UP from reloading when it should not be
-   Fixed the issue with multilanguage error in case of empty conversation
-   Fixed showing skill with level when there is only 1 skill
-   GetProfiles now reacts to a cdp degraded service_status
-   Moved complete without notes alert to read mode state and out of edit mode.
-   Only post failover telemetry when there is a conference associated with a task according to sync
-   Prevent unnecessary activities fetch, UI adjustment
-   Re-fetching participant when it is unnecessary
-   Removed 30 second timeout from LoadingBox component
-   Sentiment icon visibility now toggles correctly alongside sentiment text
-   Unlinked task stays unlinked when page refreshes
-   Updated sentiment combobox: removed sentimentOptions prop, added detectedLanguage prop, combobox now uses a list of objects rather than just a list of strings.
-   Use tasksid to fetch participant

### Added

-   Added enable-content-template-browser feature flag
-   Introduce timeout for paused channels
-   Added a new proxy endpoint for OAuth token exchange.
-   Added agent metrics column filter in filter panel of teams view
-   Added feature flag for the new columns in teams view
-   Added new default columns for status, activity time and skills with popover
-   Added queue name in task card
-   Agent Metrics
-   Alert recovery messages
-   Alert recovery Toasts
-   Call modify participant call on the basis of feature flag
-   Conditional Alerting
-   Enable highlighting for agent metrics
-   Highlight agent metrics when there is only one channel
-   Move Profile Not Found screen to each Flex Unify component
-   Move subscription to queues stats
-   Notifications filter
-   Panel toggle on icon click
-   Replaced old SSOv2 endpoint for authorization with new one
-   Sanitize url after oauth console login
-   Selection and re-ordering of columns
-   Timeline Topics rendering
-   Upgrade Citrix SDK to 4.0.2
-   Upgrade to CBM SDK version 2.2.0
-   Use new OAuth endpoints for token exchange in SSOv2 flow.

## 2.10.1

### Summary

Flex UI 2.10.1 is now available. This release includes the public beta release of a new Teams view that enables you to organize agents into teams, allowing supervisors to view, filter, and interact with their agents more efficiently. You’ll also notice a public beta feature that enables agents to natively view Flex UI in Español (México) or Português (Brasil). In the next few weeks, you’ll receive upcoming enhancements that will only be available on Flex UI 2.10.0 and later. These enhancements include the ability to classify customer interactions by topic and subtopic in Agent Copilot, and Webchat 3.0 support for configurable pre-engagement forms and context as well as a new end chat button for customers. Throughout Flex UI 2.10.1, you'll find feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed disposition code validation when topics is enabled
-   Fixed @types/react issue

## 2.10.0

### Summary

Flex UI 2.10.0 is now available. This release includes the public beta release of a new Teams view that enables you to organize agents into teams, allowing supervisors to view, filter, and interact with their agents more efficiently. You’ll also notice a public beta feature that enables agents to natively view Flex UI in Español (México) or Português (Brasil). In the next few weeks, you’ll receive upcoming enhancements that will only be available on Flex UI 2.10.0 and later. These enhancements include the ability to classify customer interactions by topic and subtopic in Agent Copilot, and Webchat 3.0 support for configurable pre-engagement forms and context as well as a new end chat button for customers. Throughout Flex UI 2.10.0, you'll find feature and UI enhancements, bug fixes, and more.

### Fixed

-   Changed TaskListHeader to use global timer to keep clocks in sync
-   [Major] Fixed disposition code validation when topics feature flag is enabled.
-   Add automatic scrolling for view sources on KB panel
-   Add check for outbound tasks
-   Add check to show avatar if it's available even if the profile header has no name from default traits.
-   Add uuid for View Sources references key
-   Added `enable-supervisor-desktop` flag check for CI graphql access
-   Added complete button validation for notes with topics
-   Added deprecation notice to external_id in Profile type in schema.graphqls
-   Added missed type definitions
-   Added no teams filter view state
-   Added on-demand mapping of agents for insights when teams enabled
-   Adding contact_uri check for no-webRTC calls
-   bump flex-sdk version, with the autoAcceptIncomingCalls flag
-   Correctly sets degraded mode for Flex SDK dependency failure on init
-   Displaying an error Notification when we have duplicate agent in same conversation.
-   Error in Console & Status report [TaskRouterModel: Could not wrap up reservation]
-   Error in Console & Status report [TaskRouterModel: Could not wrap up reservation]
-   Fix edge-case issue with cold transfer after join call click
-   Fix for orphan teams to be put under UNGROUPED section
-   Fix tooltip
-   Fixed a bug on teams view where filter panel closing was persisting filter when not applied, remove filter not working as expected and bug where supervisor doesnt own any team
-   Fixed a bug where the history was not loading in the profile search view.
-   Fixed bug where race condition in sync was adding terminated task in supervisor table
-   Fixed logic for focusing notes tab during task Wrapup
-   Fixed preference not saving issue
-   Fixed the Agent deleted fallback in insights title
-   Fixed the carousel issue
-   Fixed the flicker issue in pagination and sorting
-   Fixed the issue of triggering listTeamMembers api on 15 min refresh interval if team filter is not selected
-   Fixed the loading issue for AgentMetrics datagrid when listTeamMembers api fails for admin
-   Fixed the persistent state bugs where deletion or removal of ownership caused mismatch and failures on UI
-   Fixed the teams filter filter key
-   Flex Topics design changes
-   Increase timeout on stuck task intercept to 15 seconds
-   Integration WebChat 3 Regression
-   Moved complete without notes alert to read mode state and out of edit mode.
-   Overlap between copilot and topics components by increasing z indices
-   re-fetching participant when it is unnecessary
-   reduce amount of /validate calls by using token from session state
-   Removed 30 second timeout from LoadingBox component
-   removed conversation listeners post transfer.
-   Report stuck task telemetry directly, not through Flex Error
-   Reverting peer-dependencies of @twilio-paste/design-tokens
-   Small Next Best Response Issues
-   Summary now uses a templated string when cdpDegradationWarning is present
-   Switched the order of setting a boolean so that it would prevent the following function from being executed twice
-   Update context with profileConnectSid
-   Update metric type for wrongly highlighted metric
-   Updated Notes edit mode with topics feature to disable the task complete button
-   Updated the includeDate calculation
-   View sources auto-scrolling issue on open

### Added

-   Changes for TeamsView filters in filter panel
-   Add error view for missing sources
-   Add passing flex-ui version to flex-sdk initialization
-   add support for displaying an error message when the either the "to" or "from" phone number is not verified.
-   Added a new SingSelect component
-   Added backward and forward compatibility of Teams in CI based on Teams context status
-   Added error handling for failure of teams endpoint
-   Added error proessing for partial data response, aka cdp degraded
-   Added on demand fetching of agent names for Insights, Agent breakdown and transcript page
-   Added pre selection of Team filter
-   Added TaskChannelConfiguration for AMB
-   Added TaskSid as an optional param to Notes requests
-   Added Team filter pill
-   Added Teams context status check
-   Added Topics resolver and updated Disposition and Notes resolvers with new properties
-   Adding all strings for Flex notes Topics Feature.
-   adding integration of service status from profile find to DCE
-   Fixed issue where trait groups with long winding in text in traits gets clipped out of UI
-   Handled couple of edge cases where supervisor owns 0 teams
-   Have recent activity widget go into it's no data state when the CDP is degrded
-   Hide the contact badge during while the CDP is degraded
-   Implemented Macro summaries
-   Implemented Next Page Token-Based API Call for listTeamMembers api
-   Implemented Supervisor and Admin roles specific behaviours in CI
-   Implemented the CDP degradation banner to the new design
-   Implemented Topics in Wrapup Notes
-   Next Best Response
-   Queues statistics enriched event from graphql
-   Replaced the multiSelect dropdown with Single select
-   Replaced the taskrouter api with ListTeamMembers api to fetch agents.
-   Skip on demand fetching when Team filter is applied.
-   Support markdown formatting in Copilot Assist messages
-   Timeline Topics rendering
-   Upgraded flex-sdk
-   View Sources functionality for Copilot Knowledge Assist

## 2.9.2

### Summary

Flex UI 2.9.2 is now available. Beginning with this release, we have certified that Flex UI works on Chromebooks, expanding your device options. In Unified Profiles, your agents can now view customer interactions history information before any of your customer data sources are connected, immediately enabling them to provide more customized, efficient service. Throughout Flex UI, you'll find a broad range of feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed the profile loading and adding the PCS to the context so timeline can pick it up
-   Update context with profileConnectSid

## 2.9.1

### Summary

Flex UI 2.9.1 is now available. Beginning with this release, we have certified that Flex UI works on Chromebooks, expanding your device options. In Unified Profiles, your agents can now view customer interactions history information before any of your customer data sources are connected, immediately enabling them to provide more customized, efficient service. Throughout Flex UI, you'll find a broad range of feature and UI enhancements, bug fixes, and more.

### Fixed

-   Add check for outbound tasks and fix SIP calls console error
-   Bump flex-sdk version, with the autoAcceptIncomingCalls flag
-   Error in Console & Status report [TaskRouterModel: Could not wrap up reservation]
-   Fix tooltip
-   Fixed bug where race condition in sync was adding terminated task in supervisor table
-   Increase timeout on stuck task intercept to 15 seconds
-   Removed conversation listeners post transfer.
-   Report stuck task telemetry directly, not through Flex Error
-   Switched the order of setting a boolean so that it would prevent the following function from being executed twice
-   Updated to latest flag and settings

### Added

-   Add error view for missing sources
-   Copilot Knowledge Assist View Sources
-   Fixed issue where trait groups with long winding in text in traits gets clipped out of UI

## 2.9.0

### Summary

Flex UI 2.9.0 is now available. Beginning with this release, we have certified that Flex UI works on Chromebooks, expanding your device options. In Unified Profiles, your agents can now view customer interactions history information before any of your customer data sources are connected, immediately enabling them to provide more customized, efficient service. Throughout Flex UI, you'll find a broad range of feature and UI enhancements, bug fixes, and more.

### Added

-   Leave and Pause are available for all Conversations based channels.
-   Updated the createDataClient function call in FlexDataCustomization component
-   Add new `Tabs` prop to have single tab remove labels for Flex Unify Container
-   Add passing flex-ui version to flex-sdk initialization
-   Added agent datagrid with drilldown
-   Added AI Chat Log, Chat Composer components (based on Paste components)
-   Added BaseProfileCards and BaseUserControls
-   Added breaking snapshot tests for Timeline and Profile components
-   added cdp degradation setters and getters to the profile connector context
-   Added clipboard read and write permissions to the CRMContainer
-   Added highlighting to breakdown metrics based on predefined thresholds
-   Added paste specific tooltip functionality to timeline to truncated text
-   Added Paste v20 Inspired Side Panel with Button for Copilot Knowledge Base Search
-   Added the above and other features to Copilot Side Panel, in preparation for GraphQL integration.
-   Added the timeline notification bar and the current cdp degraded notification
-   Alter view for when no task is selected
-   Conditional highlighting.
-   Consumed the newly added BaseActivity
-   Create and emit notesSubmitted event when Copilot Wrap-up notes are submitted
-   Implemented All channels bar in channels chart
-   Implemented the CDP degradation banner and status panel
-   Markdown changes for copilot knowledge base
-   Migrated conversation insights endpoints to GraphQl
-   Moved Ticker and tick to the internal-flex-commons
-   Put transfer call behind the feature flag
-   Put transfer channel call behind the transfer feature enabled flag
-   Refactor ProfileConnector store (replace redux with react context)
-   Timeline No Activities screen now shows a dark version of the image when dark mode is enabled
-   Update flexSdk version
-   Updated to cbm-sdk 2.1.2 for leave/pause/resume update
-   Wrapped the Agent,Queue and Topic breakdown with disclosures

### Fixed

-   Add warning notification for outbound call blocked
-   Fixed Comment Assess Button not showing for Email and removed Player for Chat type media
-   Add and format missing metric
-   Add handling for unmapped traits
-   Add missing highlight in cards
-   Added calculated width to Tasks and Teams columns
-   Added correct message for unauthorised activity update
-   Adding changes to support reading multilang_enabled value from config
-   Align tooltip to top right and move health status to first
-   Batch telemetry events to avoid per-request limits
-   Bring back awareness of feature flag and error code that disable telemetry
-   Comparing oldProps and current props to invoke action only once
-   DeviceManager should use `first-of-type` instead of `first-child`
-   Ensure components in maintenance do not trigger degraded notification
-   Fix badge scroll issue
-   Fix Flex Telemetry Debugger error events
-   Fix keys for ProfileTabs and add documentation to be ready for customer customization
-   Fix rendering bug with manual refresh and the status panel
-   Fix statement to show badge when unidentified profiles is turned on
-   Fix styling on highlights summary text box and renamed children keys
-   Fix wrongly highlighted metric
-   Fixed a bug in teams view when no worker is found because of malformed query
-   Fixed a null check bug
-   Fixed channel chart cache bug
-   Fixed handling unicode characters in the TaskWrapup response
-   Fixed logic for focusing notes tab during task Wrapup
-   Fixed Outbound call issue when the microphone is disabled
-   Fixed teams view bug for showing no results box
-   Fixed the timezone issue in CI
-   Fixing eslint issue
-   Gate the updating of the interaction context behind the FlexUnifyPanel feature flag
-   Implemented refactoring of RAw
-   Move header data-testid to header component
-   Ondata function fixed.
-   Only make summary graphql calls if highlights are enabled
-   Passed conference state to custom function to correctly derive participant sid from state
-   Product feedback and telemetry
-   Refactor deviceManager button, fixing console error of nested buttons
-   Refactored NO_ACTIVE_CALL error to be triggered when the task status is not wrapping or completed
-   Remove export of flex-dataProvider from flex-ui
-   Remove fill=None from ArtificialIntelligenceIcon usages
-   Remove limit of 200 on teamsview for livequery
-   Remove profile viewed event from RecentActivityWidget
-   Remove telemetry around useFlexSelector and useFlexDispatch
-   Removed the hiding of transcript on change of view
-   Resetting debounce time
-   Reverted agent column pinning
-   Reverting peer-dependencies of @twilio-paste/design-tokens
-   Tier based highlighting in drilldown
-   Timeline profile events with configuration type of date now correctly displays invalid dates
-   Update error states for breakdown
-   Update Profile Details & Profile Header hooks to set state only if component is mounted
-   Update Profile Viewed event to have field counts & remove redundant field count events
-   Update timeline GQL queries to filter out recent activities
-   Update timeline z-index to ensure correct visibility of overlapping items
-   Update tooltip
-   Updated customer effort related strings
-   Upgraded to twilio-chat 6 to remove rfc6902 vulnerability
-   UX and product fixes

### Changed

-   Added enums for task Direction and Participant type
-   Added unit test for helper functions to set display name for a profile connector in redux
-   Bump flex-sdk version and consume disableDataClient Flag
-   Change component to be dynamic and child keys set-up better
-   Change FlexDataProvider import to flex-sdk
-   Change ProfileHeader component to be dynamic with child keys, create ProfileHeaderText dynamic component
-   KB UI Improvements
-   Modify tests to pass after changes
-   Move around component rendering in FlexUnifyContainer to have more reuse
-   Move cbm sdk back to dev deps
-   Profiles tab renders `CouldNotFindProfile` view if there is no Profile provided
-   Remove graphql-ws from flex-ui
-   Remove instances of early fetch flag
-   Simplified code complexity in TaskWrapupPanelImpl, moved summary input to a new SummaryInput component
-   Timelines tab renders `CouldNotFindProfile` view if there is no ProfileConnectSid provided
-   Update FlexUnifyContainer to have flattened children looking ahead to AIONCUSCON-831
-   Update keys and props to be expected exposed properties on UnifiedProfilesContainer

## 2.8.4

### Summary

Flex UI 2.8.4 is now available. It includes additional language support for Agent Copilot, so you can now generate wrap-up notes for Spanish and Portuguese conversations. In Unified Profiles in Flex, you'll find updates that make manual search and troubleshooting easier, as well as programmability enhancements that improve your ability to build customizations. Throughout Flex UI, you'll also notice feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed issue with the webhook for Voice Wrap up Notes
-   Correctly report maintenance mode status in the Flex UI

## 2.8.3

### Summary

Flex UI 2.8.3 is now available. It includes additional language support for Agent Copilot, so you can now generate wrap-up notes for Spanish and Portuguese conversations. In Unified Profiles in Flex, you'll find updates that make manual search and troubleshooting easier, as well as programmability enhancements that improve your ability to build customizations. Throughout Flex UI, you'll also notice feature and UI enhancements, bug fixes, and more.

### Fixed

-   Bring back awareness of feature flag and error code that disable telemetry
-   Fixed a bug in teams view when no worker is found because of malformed query
-   Remove telemetry around useFlexSelector and useFlexDispatch

## 2.8.2

### Summary

Flex UI 2.8.2 is now available. It includes additional language support for Agent Copilot, so you can now generate wrap-up notes for Spanish and Portuguese conversations. In Unified Profiles in Flex, you'll find updates that make manual search and troubleshooting easier, as well as programmability enhancements that improve your ability to build customizations. Throughout Flex UI, you'll also notice feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed compatibility issue with Chat Transfer Plugin
-   Fixed a Teams View related bug when no results are found
-   Updated "customer effort" related strings
-   Fixed Flex Telemetry Debugger error events
-   Upgraded FlexSDK to fix duplicate TR instances

## 2.8.1

### Summary

Flex UI 2.8.1 is now available. It includes additional language support for Agent Copilot, so you can now generate wrap-up notes for Spanish and Portuguese conversations. In Unified Profiles in Flex, you'll find updates that make manual search and troubleshooting easier, as well as programmability enhancements that improve your ability to build customizations. Throughout Flex UI, you'll also notice feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed an issue that prevented a dependency from installing correctly.

## 2.8.0

### Summary

Flex UI 2.8.0 is now available. It includes additional language support for Agent Copilot, so you can now generate wrap-up notes for Spanish and Portuguese conversations. In Unified Profiles in Flex, you'll find updates that make manual search and troubleshooting easier, as well as programmability enhancements that improve your ability to build customizations. Throughout Flex UI, you'll also notice feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed TaskWrapupPanelImpl to not use string literals, replaced with templates
-   Add missing template strings
-   Add support for displaying recently sent file's name in task list item
-   Added correct exports to the components index in order to allow them to be visible to plugins
-   Added extra attributes to the mixpanel track event "Task Reservation Accepted"
-   Added manual call for AgentCopilotConfiguration in FlexUnifyContainer to remove dependency on Agent Copilot feature and flags
-   Adding logic to handle notifications mode set to 'always'
-   Change store to remove task from profileConnectors when task is completed
-   Customer header reads from the configuration and generates the header layout
-   Extract transfer error from correct property
-   Fix for AgentConnectionStatus e2e test failure
-   Fix for email task menu not showing end options if Leave is not enabled
-   Fix header to use additional_attributes
-   Fix search to not be affected by trailing/leading spaces
-   Fixed a bug in New teams view
-   Fixed a bug where the Recent activity widget showed the time line of activity instead of the config title
-   Fixed Customer Name in Wrapup Transcript for Outbound Scenarios
-   Fixed rendering of json object string for customer creation date
-   Fixed sentiment constant for multi-language support
-   Fixed the rendering of the disclosure container to re-render on activity customizations data change
-   Improving test ids for `getDetailLabelAndValue`
-   Load activity details only when chevron button is clicked
-   LocaleSelectorDescription template introducing UI bug in es-MX locale
-   On IC creation, fetch ProfileConnector Sid from Instance mapping before defaulting to "flex_connector"
-   Populate Search Options list with values configured in the Admin UI, instead of the complete Identifiers list
-   Prevent duplicate InteractionContext creation
-   Questionnaire page scrolling issue fixed
-   Removed a prop from being stored in local storage
-   Removing the useCallback aspect on a few functions that hindered our ability to access the profileConnectSid and attach to telemetry
-   Render all call transcriptions
-   Retry mechanism for degraded SDKs using an expired token
-   Revert breaking changes to SessionState and State definition file
-   Show error details in Debugger in rare case when Voice Calls get stuck
-   Sometimes workspace is re-initialized with an outdated token
-   Stability improvements around InteractionContext creation and linking
-   The timeline disclosure toggle now hides if no details are present
-   This fixes the UI bug where a details field is not provided for an activity config
-   Update email regex and add unit tests
-   Updated FlexUnify component to use AddressMapping configuration instead of relying on trait mapping
-   Updated notification message and type to warning
-   Updated TaskWrapupPanel components to pull profile connector from Task Context rather than via the ProfileConnector helper function
-   Adding changes to support reading multilang_enabled value from config
-   Remove limit of 200 on teamsview for livequery

### Changed

-   Add local cache and useEffect to improve resolving the display name
-   Add new way to filter data tiles from the Queue Stats Aggregated Data Tiles view
-   Added new test id to wrapup-notes-content box in TaskWrapupPanel
-   Changed TaskList to grab the display name from the state store
-   Remove map details and map attributes from timeline components
-   Removed partial generation failures from logging to Segment
-   Removed transcription in progress message bubble from TaskDetailsPanel
-   Worker attribute/activity changes via TR SDK methods instead of direct API calls
-   Fixed the white background issue in dark mode

### Added

-   Add cold transfer for CBM tasks
-   Add highlights support to outbound calls
-   Add telemetry tracking to timeline manual refresh
-   Added Agent experience tooltip copytext
-   Added drilldown for channel, queues and topics breakdown
-   Added manual refresh ability to timeline or customer search
-   Added metrics by topic table
-   Added new states to help configure the name
-   Added trend over time mock chart
-   Changes to expose flexUserSid in SSO token payload for supervisor view
-   Limited the number of metrics to 3 in prod irrespective of backend changes
-   Migrating Digital Transfer feature enable to console settings from feature flags
-   New teams view UI changes
-   ProfileConnectorTabs mount all at once now and fire MixPanel track events on every tab click
-   Re-mount each profile connector tab when focused to be able to re-fetch activities
-   Removed Flex public beta feature flag in preparation for GA
-   Rename Programmable components of UnfiedProfiles container to match desired new names
-   Timeline now fetches activities only when the tab becomes visible and tracks MixPanel events accordingly
-   Timeline Summary and Profile Events details: validate date input before trying to parse it
-   UI Changes for the multi-language support for agent wrap-up feature
-   Update transfer analytics
-   Upgraded voice SDK to v2.11.1
-   Updated `twilio-taskrouter` to version 2.0.4

### Documentation

-   Remove mention of tokenRefreshThresholdMs

### Test

-   Add data-testid for cancel on unlink profile
-   Add breaking tests for imports used in PS plugins
-   Add data-testid for replace profile

## 2.7.2

### Summary

Flex UI 2.7.2 is now available. It includes AI-generated highlights and more customer data in Agent Copilot and Unified Profiles in Flex, a pause option in Email in Flex, Flex on Azure Virtual Desktop, and the option to begin using Flex's enhanced SSO configuration. You'll also notice a number of feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed bug where warm voice transfer cancellations would fail and cause the UI to be stuck in the transfer state
-   Retry mechanism for degraded SDKs using an expired token
-   Sometimes workspace is re-initialized with an outdated token
-   Add support for displaying recently sent file's name in task list item

## 2.7.1

### Summary

Flex UI 2.7.1 is now available. It includes AI-generated highlights and more customer data in Agent Copilot and Unified Profiles in Flex, a pause option in Email in Flex, Flex on Azure Virtual Desktop, and the option to begin using Flex's enhanced SSO configuration. You'll also notice a number of feature and UI enhancements, bug fixes, and more.

### Fixed

-   Fixed TaskWrapupPanelImpl to not use string literals, replaced with templates
-   Agent experience tooltip
-   Dark mode fixes
-   Fix early fetch to use identifiers
-   Handle addition of new metrics
-   Questionnaire page scrolling issue fixed
-   Render all call transcriptions
-   Revert breaking changes to SessionState and State definition file
-   Task router reconnection, bumping version to 2.0.4
-   This fixes the UI bug where a details field is not provided for an activity config
-   Update early fetch to use profile connect sid

### Added

-   Re-mount each profile connector tab when focused to be able to re-fetch activities

## 2.7.0

### Summary

Flex UI 2.7.0 is now available. It includes AI-generated highlights and more customer data in Agent Copilot and Unified Profiles in Flex, a pause option in Email in Flex, Flex on Azure Virtual Desktop, and the option to begin using Flex's enhanced SSO configuration. You'll also notice a number of feature and UI enhancements, bug fixes, and more.

### Chore

-   Add changelog updates from 2.5.2 release
-   Add support for multitab for calls, outbound tickets, monitoring, token refreshment, notifications
-   Add telemetry for locale
-   Add token localstorage listener in oauth scenario
-   Added testids to various components
-   Bump FlexSDK to 0.99.2-dev
-   Changed the instances where supervisor-dashboard was used to conversational-insights
-   Default to FAS token endpoint for self-hosted customers
-   Disable monitor call if monitor is happening on another device
-   Enhanced Kibana Telemetry for `session_start_extension` events
-   Expose getSessionIdentifier from main flex object
-   Fix side nav accessibility issues
-   Force self-hosted apps to go through the flex sdk for token refresh instead of OAuth
-   Handle edge cases with backend errors in the OAuth flow
-   Improve logs around conference state loading
-   Increase timeout in test and remove non-null operators
-   Make multi-tab task attribute key more specific
-   Merge Flex UI 2.6.1 patch version changes
-   Modify US locale name
-   Nested Citrix files in their own directory, in line with how Azure files are organised
-   Pass `multi-tab` feature flag to ChatManager during initialization
-   prettier/linter changed some files
-   Renamed the resume button to Resume from Resume and Reply
-   Show prompt when unloading page during a call
-   Update definitions files
-   Update flex-ui readme with react-scripts warning
-   update null checks related to the public config
-   Update OAuth jsdocs
-   Updated the conversational insights sideNav icon

### Fixed

-   Added sorting based on preferences for cards
-   Fixed Join Call button theme
-   Align disposition icon with mock ups
-   Change colours to aid accessibility
-   Changes to the profile search result SkeletonLoader so that it better aligns with the search results
-   Check environment config if URL is not us2 backup but flex is running on us2
-   Correctly parse unset connector values from stored InteractionContext
-   Disabled email scrolling fix
-   Fix accessibility issues
-   Fixed console error by adding key to selection options in search view
-   Fixed isDegraded client manager fix
-   Fixed issue with multiple expired session alerts appears after leaving Flex inactive
-   Fixed join call button for inbound calls
-   Fixed unidentified profile header text color and label to match intended design
-   GraphQL backend API http errors should not result in FlexUI to render a blank screen
-   Hide device manager from Citrix HDX users
-   Hide join call button if a custom contactUri is set
-   Intermittent failing of loading email conversation
-   Localize the sub title of the device manager
-   Log citrix events object
-   Made changes for axios authorization failure on questionnaire page
-   On external token refreshment, correctly update FlexSDK token
-   Persist Link/Unlink menu state at header level to prevent it closing early on UI refreshes.
-   Prevent citrix error event from degrading voice SDK
-   Redesigned Agents/Queues Tab
-   Removed duplicate calls to trackUnify event
-   Restore filter on chat-based tasks (e.g. webchat) for ProfileConnector
-   Scrolling on smaller screens for other task on teams view
-   Unify profile connector now uses instance mapping API instead of hardcoded unique name.
-   Updated twilsock region for DR
-   Upgraded axios to fix vulnerability

### Added

-   Add Join Call button to supports call transfers between web and mobile
-   Add locale selector error state
-   Add new `EndVoiceCall` action
-   Add support for the public locale assets
-   Added Agents, channels and Queues filters
-   Added auto refresh with a 15min interval
-   Added back strings
-   Added Date picker and Carousal component
-   Added feature flag for filters
-   added initial and error states for conversational insights
-   Added insights provision check and unit tests
-   Added new CopilotTranscriptionStatus component within the TaskDetailsPanel for call tasks that have our Flex feature enabled. Informs the agent that transcription is in progress
-   Added new TaskTranscriptionPanel component as well as several children components which reside in the task canvas
-   Added notification when user is on US2
-   Added notification when user is on US2
-   Added pagination for queue metrics datagrid
-   Added skeleton loaders and few UX redesign
-   Added support for OAuth SSO for self-hosted customers
-   Bumped flex sdk to 2.2.7 for DR support
-   Create Interaction Context if it doesn't already exist, and link it to the current Task.
-   Display Enhanced SSO authentication error messages in the UI.
-   Email pause feat
-   Extend call hangup button to wrapup non-active calls
-   Implemented customer prediction for lifetime value and project churn value
-   Integrated agent metrics and filters
-   Integrated CSAT by Channels and Queues
-   Integrated Insights and daily summary modal
-   Introduce new modular folder structure inside flex-sdk
-   OAuth login flows now fully use Auth0 endpoints for tokens exchange
-   Removed scored_mean usage from UI
-   Timeline 2.7 NoteDetail support
-   Transfer option in action drop down
-   Update OAuth params to enable the flow for self-hosted accounts.
-   Updated notification message for us2 DR
-   Upgraded to Node 20
-   Utilize new status field in profile response object to categorize profile as unknown/identified

### Changed

-   Added data test ids to disposition and sentiment inputs
-   Bump flex-sdk version to 0.99.3-dev
-   Update fonts use to Twilio hosted ones
-   Updated Citrix SDK to version 3.0.2

### Test

-   Added a few data-testIds to components being tested
-   Added data-testId to FlexUnifyContainer, CRMPlaceholder, and ProfileHeader components so they can be accessed in Cypress tests
-   Added unit tests for CRMPlaceholderView
-   Changed snapshot object for TaskCanvasTabs
-   Fixed LocaleSelector flaky unit test

## 2.6.3

### Summary

This release introduces Agent Copilot and Unified Profiles in Flex in limited public beta. These features combine the power of large language models with real-time customer data to automate customer and agent experiences, improve end-customer satisfaction, and increase agent productivity. This release also includes the GA release of a number of Real-time Queues View metrics that were previously in public beta, and the public beta release of Device Manager, which enables agents to easily switch between audio devices. In addition, you'll notice UI enhancements, bug fixes, and more.

### Fixed

-   Fixed bug where warm voice transfer cancellations would fail and cause the UI to be stuck in the transfer state
-   Intermittent Issue with Token Refresh
-   SDKs retry mechanism bug fix
-   Add support for displaying recently sent file's name in task list item

## 2.6.2

### Summary

This release introduces Agent Copilot and Unified Profiles in Flex in limited public beta. These features combine the power of large language models with real-time customer data to automate customer and agent experiences, improve end-customer satisfaction, and increase agent productivity. This release also includes the GA release of a number of Real-time Queues View metrics that were previously in public beta, and the public beta release of Device Manager, which enables agents to easily switch between audio devices. In addition, you'll notice UI enhancements, bug fixes, and more.

### Fixed

-   Added sorting based on preferences for cards
-   Added backwards compatibility for users downgrading from 2.7 after having already set up Enhanced SSO
-   Fixed issue where trait group configs are created in 2.7 will created blank trait groups in 2.6
-   Questionnaire page scrolling issue fixed
-   Scrolling on smaller screens for other task on teams view

## 2.6.1

### Summary

This release introduces Agent Copilot and Unified Profiles in Flex in limited public beta. These features combine the power of large language models with real-time customer data to automate customer and agent experiences, improve end-customer satisfaction, and increase agent productivity. This release also includes the GA release of a number of Real-time Queues View metrics that were previously in public beta, and the public beta release of Device Manager, which enables agents to easily switch between audio devices. In addition, you'll notice UI enhancements, bug fixes, and more.

### Fixed

-   GraphQL backend API http errors should not result in FlexUI to render a blank screen
-   Localize the sub title of the device manager
-   Log citrix events object
-   Prevent citrix error event from degrading voice SDK
-   Updated twilsock region for DR

### Added

-   Added back strings
-   Added notification when user is on US2
-   Bumped flex sdk to 2.2.7 for DR support
-   Updated notification message for us2 DR

## 2.6.0

### Summary

This release features the public beta releases of Agent Copilot, which provides agents with wrapup assistance including automated summaries, disposition codes, and customer sentiment, and Unified Profiles, which delivers real-time customer data from multiple enterprise systems to your customer-facing teams. It also includes the public beta release of Device Manager, which enables agents to easily switch between audio devices, and the GA release of Real-time Queues View metrics that were previously in public beta. You’ll also notice UI enhancements, bug fixes, and more.

### Added

-   Add functionality in ProfileConnector Helper to update Redux local datastore's IProfileConnector with new or removed profileConnectSid; stub out future calls to InteractionContext in ProfileConnector Helper.
-   Add Link, Unlink, and Search to Replace functionality to wrapper around Flex Unify CustomerProfileView.
-   add unit tests for FlexUnifyContainer
-   Added a disclosure component to timeline that matches the latest designs.
-   added a new device manager component.
-   Added a public beta feature flag to the device manager component
-   Added conditional logic that uses new string templates for the body and header of the unlink dialog/popup that include the profile's name when available
-   adding in error state for the time line activity details drop down
-   Display configured value as the Header's subtitle for an Unidentified Profile
-   Display the ProfileNotFoundView for an incoming Unidentified Profile if showUnidentifiedProfileEnabled from config service is false
-   Engineering and Product telemetry events for Device manager
-   fix the error states to match the new figma designs
-   Implement Button for Linking a Profile to current task on Search View selected Profile.
-   Implement Menu to Unlink or Replace current task's Linked Profile from Profile View.
-   Implemented customer prediction for lifetime value and project churn value
-   make GET request only for graphql query's
-   pass jwt token via connectionParams for websocket connection
-   Post the updated, or unset, profileConnectSid associated with a task to InteractionContext.
-   Query profiles-configuration-service server's values for ProfilesAndHistoryConfigurationUnidentifiedProfileSearchOptions
-   Registered the device manager as a native component
-   Support incoming webchat for profile linking/unlinking
-   Telemetry that counts the number of fields with vs. without data
-   Timeline activity detail UI updates
-   unexplained error now renders properly on a gql activity fetching failure.
-   upgrade webpack to 5

### Fixed

-   add try-catch in telemetry method
-   added extra check for filter to make sure queueslength is not 0 because of filter
-   added workaround for auth0 flows to work with the third-party cookies fix within an iframe
-   Fixed a bug where Paste selects on dark theme on Windows were not readable
-   Fixed center alignment of skeletal loader.
-   fixing duplicate entries of agent
-   Guarantee Telemetry client creation and guard against crashes
-   Hide device manager from Citrix HDX users
-   Hide some metrics from the UI
-   profile search was shooting off multiple finds per render cycle, this should only be done once per cycle.
-   ProfileHeader has access to status: identified or unknown to render fields properly
-   remove flexdataclient check from AIsummary and CustomerHistory
-   Removed time from "Customer since" subtitle in profile header
-   removed unused Timeline client side resolver
-   update generated graphql schema
-   Upgrade Flex SDK

## 2.5.2

### Summary

Flex UI 2.5.2 is now available. This release features email as a new channel, the GA release of Flex Citrix VDI, the public beta release of a built-in webchat widget, the ability to filter summary metrics on the Real-Time Queues View by channel, and more. It also includes UI enhancements and bug fixes.

### Fixed

-   Fix for customization for queue filtering
-   Guarantee Telemetry client creation and guard against crashes
-   Log Citrix events object
-   Prevent Citrix error event from degrading Voice SDK

## 2.5.1

### Summary

Flex UI 2.5.1 is now available. This release features email as a new channel, the GA release of Flex Citrix VDI, the public beta release of a built-in webchat widget, the ability to filter summary metrics on the Real-Time Queues View by channel, and more. It also includes UI enhancements and bug fixes.

### Fixed

-   Fixed an issue that prevented Flex from logging in from an iFrame when third party cookies are disabled

## 2.5.0

### Summary

Flex UI 2.5.0 is now available. This release features email as a new channel, the GA release of Flex Citrix VDI, the public beta release of a built-in webchat widget, the ability to filter summary metrics on the Real-Time Queues View by channel, and more. It also includes UI enhancements and bug fixes.

### Fixed

-   Add synthetic device change event when the only available device has id of `''`
-   Added the fix for voice call warning when MMR is enabled in Azure VDI
-   adding testids to some components so I can select them.
-   Change the metrics that are selected by default
-   ClassProxySpy fixed
-   duplicate agents were showing up in the agents list if they transferred back and forth. This removes any duplicate entries.
-   Fixed a memoize function that caused unnecessary `SideLink`, `MainHeader`, `ErrorUI`, `TaskListItem` re-renders.
-   fixed for anonymous in email task
-   fixes timeline new data not being loaded for a profileSid that has already fetched data.
-   Hide some metrics from the UI
-   profile search was shooting off multiple finds per render cycle, this should only be done once per cycle.
-   refactored the mocks so they are easier to use and make more.
-   Removed insightClient from retry mechanism and added voiceClient
-   Repeated Console errors on failed SSO authentication
-   Stop XWT get participants fetch if task has no voice channel
-   Transcript content listening to markdown variable
-   Updated to use configuration API

### Added

-   Add new flag for queue metrics GA
-   Add optional dependency reassingnment
-   added localization to the view more button and tool tips
-   Added the gql queries for activities and activity details for the timeline component
-   added Twilio Debugger logging capabilities with config flag console_errors_included
-   added unit tests for profile tabs
-   Adding pagination to the activity list of the timeline
-   Support for additional new metrics for the queue metrics page
-   Swapped the phone icon to a clock for call duration
-   Timeline is now pulling real data and not local mocks

### Changed

-   New queue stats page cards view

## 2.4.2

### Summary

Flex 2.4.2 is now available. This release features several new channels by which agents can send and receive messages, as well as new filters and metrics in the Real-Time Queues View that make it easier for supervisors to monitor your contact center. It also includes UI enhancements and bug fixes.

### Changed

-   Add feature flag to disable force Offline status on disconnect
-   Bump Voice SDK to 2.7.3

## 2.4.1

### Summary

Flex 2.4.1 is now available. This release features several new channels by which agents can send and receive messages, as well as new filters and metrics in the Real-Time Queues View that make it easier for supervisors to monitor your contact center. It also includes UI enhancements and bug fixes.

### Fixed

-   Stop XWT get participants fetch if task has no voice channel

### Added

-   Add new flag for queue metrics GA

## 2.4.0

### Summary

Flex 2.4.0 is now available. This release features several new channels by which agents can send and receive messages, as well as new filters and metrics in the Real-Time Queues View that make it easier for supervisors to monitor your contact center. It also includes UI enhancements and bug fixes.

### Added

-   Add kibana log on sdk retry
-   Add utility functions for initializing sdks with timeout
-   Added `TimelineView`to the `ProfileConnector`
-   Added ErrorMessages for FlexDataClient
-   Added the new declarative customization API to Flex UI
-   Auto reconnect when sdk init fails
-   Brought in localization and error page and states for timeline.
-   Bumped to latest minor version core-js, source-map-loader
-   Citrix Flex v2 Optimisation
-   Codegen support to merge remote and local schema
-   FlexDataStore client instance to be consumed by the FlexDataStore provider
-   Forward module property of error into Telemetry
-   GA for new metrics and queue stats filter panel
-   Inserted Segment mixpanel integration for Citrix VDI
-   Mixpanel telemetry for Queue Stats metrics
-   Mute microphone when agent joins the conference from Flex Mobile
-   New `ProfileTabs` component that shows Customer Details/Customer History
-   New `TimelineView` component.
-   New feature flag `customer-history`
-   Select all and Search for metrics in the filter panel
-   Support local typeDefs and resolvers
-   Updated webpack config to support latest JavaScript(optional chaining loader) using babel
-   Webpack loader to support .graphql files

### Fixed

-   Added the timestamp back in decode sync participant
-   Do not display open status report action if status report is disabled
-   Add checks for TR worker properties
-   Add missing child component details
-   Add telemetry to ui and sdk initialisations
-   Added changes for outbound url in stage
-   Added check to handle multiple 5xx error codes, when a request is sent to `/VirtualAgentData` api endpoint
-   Added setLogLevel with remoteCofig
-   Auto retry Voice SDK initialization if a runtime error degrades the app operation.
-   Cache for the transfer worker and queue
-   CBM SDK version updated to fix second warm transfer error
-   Changing pop up window auth behaviour due to new storage partitioning feature
-   Disable segments until player is ready
-   error messages and sort identifiers
-   Fix for element locator (till UI is updated)
-   Fix for recognising digits in windows
-   Fix for the flickering issue when caching data in frontend
-   Fixed crash when mobile app joins the call
-   Fixed drag icon not visible issue
-   Fixed the UI Issue with the Menu Items hiding behind the task separator.
-   fixed the wrap up message of chat
-   Increased sync SDK init timeout
-   Inserted tooltip for truncated text and updated labels
-   Override offset to disable inactive segment
-   Prevent Chunking of dynamic import and bundling external required library
-   Remove CallQualityIndicator from docs
-   Removed unintentional dynamic component in call canvas
-   Retry option not working in early fetch
-   Reverted FLXUIAPPIN-1841
-   Show configuration error when connector is not configured
-   Truncate user details in monitor task panel
-   Update description for isCBMTask
-   Updated conversation SDK to 2.4.1
-   Upgraded `@reduxjs/toolkit`

### Changed

-   Migration to RTL for MetricsTab.test.tsx
-   Namespace change to FlexDataClient
-   Refactor test ids from `data-test` to `data-testid`
-   Start conference listener process for existing call tasks on load

## 2.3.5

### Summary

Flex 2.3.5 is now available with support for Citrix HDX VDI as a public beta feature which provides high quality audio for voice calls while agents are connected to Flex via Citrix HDX VDI

## 2.3.4

### Summary

Flex 2.3.4 is now available with support for Citrix HDX VDI as a public beta feature which provides high quality audio for voice calls while agents are connected to Flex via Citrix HDX VDI

### Fixed

-   Fixed a permissions issue where Supervisor could incorrectly see the New dashboard button.

## 2.3.3

### Summary

Flex 2.3.2 is now available with support for Citrix HDX VDI as a public beta feature which provides high quality audio for voice calls while agents are connected to Flex via Citrix HDX VDI

### Fixed

-   Fixed the issue while creating custom keyboard shortcuts using numbers in Windows
-   Fixed the behaviour of Apply and Reset buttons while changing filters on Your Teams page
-   Fixed the additional scroll issue in Queues Stat screen
-   Fixed initialisation issues using timeout for dependencies
-   Fixed logging issues in Flex Configuration API enabling custom settings
-   Fixed the display issue while adding components to CallCanvas
-   Increased timeout interval for certain SDKs to address initialisation issues

### Added

-   Enhancements to support Citrix HDX

## 2.3.2

### Summary

Flex 2.3.2 is now available with support for Citrix HDX VDI as a public beta feature which provides high quality audio for voice calls while agents are connected to Flex via Citrix HDX VDI

### Fixed

-   Fixed the issue while creating custom keyboard shortcuts using numbers in Windows
-   Fixed the behaviour of Apply and Reset buttons while changing filters on Your Teams page
-   Fixed the additional scroll issue in Queues Stat screen
-   Fixed initialisation issues using timeout for dependencies
-   Fixed logging issues in Flex Configuration API enabling custom settings

### Added

-   Enhancements to support Citrix HDX

## 2.3.1

### Summary

Flex 2.3.1 is now available with betterments for initialisation and logging along with UI improvements

### Fixed

-   Fixed the issue while creating custom keyboard shortcuts using numbers in Windows
-   Fixed the behaviour of Apply and Reset buttons while changing filters on Your Teams page
-   Fixed the additional scroll issue in Queues Stat screen
-   Fixed initialisation issues using timeout for dependencies
-   Fixed logging issues in Flex Configuration API enabling custom settings

## 2.3.0

### Summary

Flex 2.3 is now available with support for Citrix HDX VDI as a public beta feature. It also includes betterments for initialisation and logging along with UI improvements

### Fixed

-   Fixed the issue while creating custom keyboard shortcuts using numbers in Windows
-   Fixed the behaviour of Apply and Reset buttons while changing filters on Your Teams page
-   Fixed the additional scroll issue in Queues Stat screen
-   Fixed initialisation issues using timeout for dependencies
-   Fixed logging issues in Flex Configuration API enabling custom settings

## 2.2.2

### Summary

Flex 2.2 is now available with changes for displaying call transcripts for Google Dialogflow CX Virtual Agent calls. It

### Added

-   Fixed a permissions issue where Supervisor could incorrectly see the New dashboard button.

## 2.2.1

### Summary

Flex 2.2 is now available with changes for displaying call transcripts for Google Dialogflow CX Virtual Agent calls. It
also includes an upgraded SDK version of Task Router and improvements to UI and sorting functionality.

### Fixed

-   Fixed display issues after putting a call on hold
-   Fixed functionality issues in keyboard shortcuts
-   Fixed the programmability issues in customising tasks
-   Fixed one of the infinite loading issue in Conversation Tasks
-   Fixed event firing issues
-   Fixed Auto Accept behaviour of certain voice and email outbound tasks
-   Fixed initialisation issues using timeout for dependencies
-   Fixed logging issues in Flex Configuration API enabling custom settings

### Added

-   Added UI enhancements to address the slowness issues in Transfer Directory
-   Restored sorting functionality that was existing in previous UI version
-   Added the ability to fetch and display call transcripts to agents for Google Dialogflow CX Virtual Agent voice calls

## 2.2.0

### Summary

Flex 2.2 is now available with changes for displaying call transcripts for Google Dialogflow CX Virtual Agent calls. It also includes an upgraded SDK version of Task Router and improvements to UI and sorting functionality.

### Added

-   Added UI enhancements to address the slowness issues in Transfer Directory
-   Restored sorting functionality that was existing in previous UI version
-   Added the ability to fetch and display call transcripts to agents for Google Dialogflow CX Virtual Agent voice calls

### Fixed

-   Fixed display issues after putting a call on hold
-   Fixed functionality issues in keyboard shortcuts
-   Fixed the programmability issues in customising tasks
-   Fixed one of the infinite loading issue in Conversation Tasks
-   Fixed event firing issues
-   Fixed Auto Accept behaviour of certain voice and email outbound tasks

## 2.1.3

### Summary

This release adds keyboard shortcuts to the Agent Desktop of Flex UI so that agents can perform common actions quickly. Available shortcuts include accepting and switching between tasks, putting voice calls on hold and mute, and much more. This release also contains bug fixes and other improvements

### Fixed

-   Fixed a permissions issue where Supervisor could incorrectly see the New dashboard button

## 2.1.2

### Summary

Improvements to in-progress message handling on select custom Conversation channels when switching between tasks.

### Fixed

-   Fixed logging issues in Flex Configuration API enabling custom settings
-   Fixed initialisation issues using timeout for dependencies

## 2.1.1

### Summary

Improvements to in-progress message handling on select custom Conversation channels when switching between tasks.

## 2.1.0

### Summary

This release adds keyboard shortcuts to the Agent Desktop of Flex UI so that agents can perform common actions quickly. Available shortcuts include accepting and switching between tasks, putting voice calls on hold and mute, and much more. This release also contains bug fixes and other improvements.

### Changed

-   Added additional country codes to the dialpad dropdown when making an outbound call
-   Removed Beta label from autogenerated API documentation

### Fixed

-   Updated Plugin initialisation checks to decrease the load time of Flex UI
-   Fixed an issue where the unread chat notification was not appearing correctly when accepting a task
-   Fixed an issue where a disconnected agent’s status appeared as online when they were offline
-   Updated scroll bar behaviour for code samples in autogenerated API documentation
-   Fixed an issue where API documentation feedback could not be sent
-   Restored the ability to navigate within chat messages via the keyboard after switching between tasks
-   Fixed the logic for Hidden Worker Filters

### Added

-   Keyboard shortcuts are now available for common actions on the Agent desktop.

## 2.0.3

### Summary

Flex UI 2.0 is now available in General Availability. This version introduces support for Flex Conversations with new capabilities like MMS messaging and WhatsApp as a native channel, brings improvements in Web accessibility, a new Status report and includes upgrades to plugin development tools. Note, this version contains breaking changes for plugins. Before upgrading you must migrate your plugins to be compatible with these updates.

### Fixed

-   Fixed logging issues in Flex Configuration API enabling custom settings
-   Fixed initialisation issues using timeout for dependencies

## 2.0.2

### Summary

Flex UI 2.0 is now available in General Availability. This version introduces support for Flex Conversations with new capabilities like MMS messaging and WhatsApp as a native channel, brings improvements in Web accessibility, a new Status report and includes upgrades to plugin development tools. Note, this version contains breaking changes for plugins. Before upgrading you must migrate your plugins to be compatible with these updates.

### Changed

-   Removed Beta notice from the API documentation

### Fixed

-   Updated anchor link scrolling in API documentation so heading is no longer hidden behind the header
-   Fixed an issue with submitting feedback on API documentation

## 2.0.1

### Summary

Flex UI 2.0 is now available in General Availability. This version introduces support for Flex Conversations with new capabilities like MMS messaging and WhatsApp as a native channel, brings improvements in Web accessibility, a new Status report and includes upgrades to plugin development tools. Note, this version contains breaking changes for plugins. Before upgrading you must migrate your plugins to be compatible with these updates.

### Changed

-   Updated messages in Status report and Degraded mode notifications

## 2.0.0

### Summary

Flex UI 2.0 is now available in General Availability. This version introduces support for Flex Conversations with new capabilities like MMS messaging and WhatsApp as a native channel, brings improvements in Web accessibility, a new Status report and includes upgrades to plugin development tools. Note, this version contains breaking changes for plugins. Before upgrading you must migrate your plugins to be compatible with these updates.

### Added

-   Logo alt text in MainHeader is now customisable through a new default prop `logoAltText`
-   Added focus states to the clear search results link in Teams View by changing it into a Paste button
-   Update of Downloadable Report
-   Optional acceptOptions property added to sdkOptions.voice in appConfig which will be passed internally in call.accept methods
-   Wait for plugins to complete initialisation before moving on with Flex UI's initialisation.
-   Now scroll positions get preserved between conversations

### Changed

-   Disable email reply from teams view
-   Removed Sync backend from critical path of outbound and transfer and conference state
-   Changed the `MenuItem` components in the end call dropdown to their destructive variant
-   Upgrade Paste libraries to latest
-   Debugger events now sent via Flex SDK instead of directly by UI
-   Rely on `debugger_integration` flag in service configuration instead of `debugger-integration-v2` feature flag
-   Rely on `flex_ui_status_report` flag in service configuration instead of `flex-debugger-ui` feature flag
-   Fetch all queue stats data before updating store on initialisation
-   Removing flex-webchat-ui package
-   Using flex-ui-core as a linked package
-   Add hidden h1 header to Analyze View, Dashboard View, Queues Stats View, Agent Desktop View, Teams View
-   Add hidden h3 header for Current Dashboard and Dashboard Control Center in Dashboard View
-   Changed input labels in modal dialogs within Quality Management View to h4 headers
-   Changed tabs in Quality Management View to h3 headers
-   Added hidden h2 headers to main navigation and side navigation
-   Added hidden h3 headers to summary statistics section and queues table in Queues Stats View
-   Added hidden h3 headers to task list and task canvas in Agent Desktop View
-   Added hidden h3 headers to search and filtering section and agents table in Teams View
-   Changed Teams View Filter side panel so Filter is a h3 header and Activities is a h4 header
-   Documenting that the Activity component is a child of `MainHeader`
-   Screenreader gives reasons when outbound dialpad button in `MainHeader` is disabled
-   Screenreader gives reasons when outbound dialpad panel call button is disabled
-   Screenreader gives reasons when `CallCanvasActions` buttons are disabled
-   Screenreader gives reasons when warm/cold transfer buttons are disabled
-   Reviewed and replaced header tag usages to improve structure for accessibility
-   Now using Paste rather than Mui for the End Call dropdown component
-   Removed Line related code and references
-   Removed reporting of Redux action payload as telemetry data in TelemetryManager
-   Bump flex-sdk version
-   Native Supervisor 'Analyze' and 'Dashboards' view are now picked by default over the legacy ones
-   Revert to using feature flag for legacy webchat tasks
-   TaskInfoPanel details font size
-   Fixes for a11y bugs reported under automated accessibility testing

### Fixed

-   Fixed an issue causing the text editor to remain editable when the conversation was closed externally from an API call
-   Focus automatically jumps to channel drop down when agent creates a new task
-   `TaskInfoPanel` in Supervisor View can now be customised
-   Fixed an issue preventing audio constraints from being applied to the devices audio.
-   Improve the colour contrast of the time and message preview displayed on a task item in the task list
-   Fix GoodData dashboard visibility based on permissions
-   Fixed the vertical stacking issue by changing to horizontal scroll within the task list
-   Disable user interaction to debugger UI when the token has expired
-   Changed `infoPanelContent` template string to show `Customer name / identifier` as the customer context label in web-chat tasks
-   Add support for organic message sorting in MessagingCanvas
-   Typing fixed for parseTokenPayloadFromQueryString
-   Fixed a bug in Historical Reporting where segment links were not clickable in created KPI dashboards
-   MessagingCanvas now fetches oldest messages if all the newer messages are displayed - even without scroll interaction
-   Some notifications are only shown if they are related to the selected task
-   Long words on TaskListPanel now correctly breaks in new lines
-   Fix monitoring edge-case scenario
-   New logic for hoc
-   Checking the urlQueryString when going through the Login process via hosted flex
-   Fixed an issue where remote config loglevel was not being applied correctly to SDK logs
-   Fixed an issue causing the text editor to remain editable when the conversation was closed externally from an API call
-   Focus automatically jumps to channel drop down when agent creates a new task
-   `TaskInfoPanel` in Supervisor View can now be customised
-   Fixed an issue preventing audio constraints from being applied to the devices audio.
-   Improve the colour contrast of the time and message preview displayed on a task item in the task list
-   Fix GoodData dashboard visibility based on permissions
-   Fixed the vertical stacking issue by changing to horizontal scroll within the task list
-   Disable user interaction to debugger UI when the token has expired
-   Changed `infoPanelContent` template string to show `Customer name / identifier` as the customer context label in web-chat tasks
-   Add support for organic message sorting in MessagingCanvas
-   Typing fixed for parseTokenPayloadFromQueryString
-   Fixed a bug in Historical Reporting where segment links were not clickable in created KPI dashboards
-   MessagingCanvas now fetches oldest messages if all the newer messages are displayed - even without scroll interaction
-   Some notifications are only shown if they are related to the selected task
-   Long words on TaskListPanel now correctly breaks in new lines
-   Fix monitoring edge-case scenario
-   New logic for hoc
-   Checking the urlQueryString when going through the Login process via hosted flex
-   Fixed an issue where remote config loglevel was not being applied correctly to SDK logs
-   Fix out of sync participant state edge-case on cold transfer
-   Disabling Degraded Notification when token is expired

## 1.25.4

### Fixed

-   Fixed the issue in Player that prevented from playing recordings provided via custom media links in case the recordings were different for different segments within a single conversation

## 1.25.3

### Fixed

-   Fixed the issue where Player caused Flex UI to crash when custom media links are provided with invalid or missing start time

## 1.25.2

### Fixed

-   Fixed an issue with the voice client integration

## 1.25.1

### Fixed

-   Fixed the chat random character drop issue

## 1.25.0

### Added

-   If a second voice connection comes in while an agent is on a call, Flex now displays a notification with an option to drop the existing call.

-   The custom filters on TeamsView defined via the legacy `WorkersDataTable.defaultProps.filters` API are now added to the advanced filters panel.

-   Added segment switcher to the overlay player with seamless switching between segments.

### Changed

-   Twilio Client SDK option `allowIncomingWhileBusy` set to 'true' by default

## 1.24.3

### Fixed

-   Second edge-case token refresh issue

## 1.24.2

### Fixed

-   Edge-case token refresh issue

## 1.24.1

### Fixed

-   Fixed a bug where playback speed of a recording in Conversation Player would reset after secure recording URL expiry and refresh. Also, the playhead no longer briefly jumps to zero when secure recording URL is refreshed.

### Dependencies updated

-   [axios] To version 0.21.1.
-   [twilio-client] To version 1.13.1.

## 1.24.0

### Added

-   Added `Twilio.Flex.QueuesStats.setSubscriptionFilter`, which can be used to limit the queues the application subscribes to for updates.
-   Added SLA Configuration page which allows administrators to set the SLA values for different queues and channels.

### Fixed

-   ToggleSidebar action called twice when sidebar is already collapsed
-   In case of the default queue not being available in the queue selector, leave selection empty and disable outbound call button
-   Improved the Queue Stats page performance
-   Conversation Screen now correctly fetches the whole chat transcript
-   Conversation Screen - various UI bug fixes
-   Conversation Player - various UI bug fixes

## 1.23.4

### Fixed

-   Edge-case token refresh issue

## 1.23.3

### Fixed

-   Secure recording handling in conversation screen

## 1.23.1

### Fixed

-   Fixed Real-time Queue Stats View not showing more than 50 queues
-   Fixed missing N/A answers for questions with 5 star rating when assessing a conversation in Flex Insights
-   Minor fixes in Flex Insights Conversation Screen and Player

## 1.23.0

### Added

-   New `enableReduxLogging` flag in AppConfig that will help developers to fine-tune their preferred logging level of redux actions

### Changed

-   Flex does not add redux logging feature based on logLevel config setting, instead using the new `enableReduxLogging` property

### Fixed

-   Fixed race condition with possibility of concurrent outbound calls

## 1.22.0

### Fixed

-   Developers can now remove contents of AgentDesktopView, even if they have set "showPanel2" property as `false`
-   TaskFiltersPanel was not programmable
-   Vertical TaskCanvas minimum size reduced to allow splitter interaction on small screens

### Changed

-   Retired "flex-queues-stats" feature flag. QueuesStats is now always enabled.

### Removed

-   Removed the legacy QueuesStats implementation.

## 1.21.0

### Added

-   Generic app notification for new unregistered task channel
-   Added support for hidden filters in the Teams view

### Changed

-   Search and filtering on Teams view now work in conjunction

### Fixed

-   Fix read chat message counter when agent is on tasks information tab
-   Chat link parser now recognise domain and params not separated by a slash. For instance: "http://flex.twilio.com?test=true".

## 1.20.1

-   Fixed the "Cannot read property 'errorPage' of undefined" issue
-   `errorPage` doesn't support chaining anymore

## 1.20.0

### Added

-   Support for new payload properties `holdMusicUrl` and `holdMusicMethod` for `HoldCall`/`HoldParticipant` actions to configure a custom hold music
-   `HoldCall`/`UnholdCall` actions will now get participantCallSid property in their payload, which indicates the voice connection sid in the conference for the participant. Flex does not take that payload into account, but customers overriding these actions can use that property to filter out custom participants.
-   Expose and document `FlexError` -- the universal error class that provides unified API to work with Flex exceptions.
-   `Flex.Manager.create` will now throw `FlexError` exception if something goes wrong during initialization of Flex. The error object will have lots of needed metadata about the issue and can be fed to `Flex.errorPage` to render user an informative error page.
-   New `Flex.errorPage` API to render a user-friendly error message screen if provided with `FlexError`.
-   UI will now show notification when any of the SDKs detect that there is an issue with network connection. UI will also emit `FlexEvent.connectionStateChanged` event for both disconnect and reconnect.
-   A queue row in the Queues View table can be expanded to show channel statistics if channel data is available.
-   New `QueuesStats.QueuesDataTableCell` component to be used in custom Queues Stats columns that want to support channels.
-   Support for Queues Stats SLAs (gated by a feature flag).

### Removed

-   Queues View network connection issue notification was removed. Replaced by the newly added generic network connection notification.

### Fixed

-   Fix an overflow issue with native dialpad in the call canvas.

### Changed

-   Minor design changes on Queues View. Table layout is no longer fixed and default column headers are shortened.
-   Improved error handling on Queues View.

### Dependencies updated

-   [twilio-client] To version 1.11.0.

## 1.19.0

### Dependencies updated

-   [twilio-taskrouter] To version 0.5.1

### Added

-   Add `defaultSortColumn` prop to `DataTable` to allow for initial sorting of the table.
-   Add `sortDirection` prop to `DataTable.ColumnDefinition` to specify how should the data be sorted first. The value is either "asc" or "desc".
-   Add `theme.DataTable.Header` to customize DataTable headers. You can specify the `root` and `clickable` properties.

### Removed

-   Deprecated `TeamsView.defaultProps.filtersEnabled` was removed. Custom code still attempting to use it will not work.
    To toggle Advance Team View Filters on/off, please use the pilot flag on the feature page https://flex.twilio.com/admin/features.

### Fixed

-   Fixed a state issue when starting monitoring a call
-   `insightsClient` can no longer be broken by incorrect `sdkOptions.insights` configuration
-   Improved chat message input rendering performance by debouncing store update on keypress.

### Changed

-   Minor design updates to Queues Stats view
-   Deprecated the `QueuesStats.QueuesDataTable.sortable` property. The table can be sorted by any of the default columns.

## 1.18.0

### Fixed

-   Fixed issue on call monitoring
-   TeamsView filters now correctly applies default filter

### Dependencies updated

-   [twilio-taskrouter] To version 0.4.5
-   [handlebars] To version 4.7.3

## 1.17.1

### Fixed

-   Fixed a race condition on `InitialDeviceCheck` feature flag detection

## 1.17.0

### Added

-   Added new `viewResized` event. This events gets triggered once window resizes, debounced by 100ms.
    This will replace `selectedViewChanged` **for resize events** in the next major release.
    If you rely on `selectedViewChanged` for detecting a resize event, please consider adopting `viewResized`.

### Fixed

-   `selectedViewChanged` event now gets correctly triggered only once when view changes.

### Changed

-   `selectedViewChanged` event now receives a second argument `isSameViewResized`.
    This boolean tells us whether the view has actually changed or the same view has been resized.
    This boolean will be always set to false once we completely deprecate `selectedViewChanged` **for resize events**.

## 1.16.2

### Added

-   User is shown a corresponding error notification if no audio input devices are found upon incoming voice connection.

### Fixed

-   For browser that don't have Notification capabilities, Flex logs a warning and disables browser notifications.
-   Highlight URLs only if they are not part of another string
-   Fix Handlebars 4.7.0+ errors
-   Notify user for new chat message only if they are participant

## 1.16.1

### Fixed

-   Fix chat messages read status

## 1.16.0

### Added

-   `SendDTMFDigits` action to send DTMF tones to a call of a call task.

```
    Actions.invokeAction("SendDTMFDigits", {
        sid: "WRXXXXXXXXXXXXXXXXX",
        digits: "567"
    });
```

-   `ReloadWindow` action

-   User is shown a corresponding error notification if no audio input devices are found upon incoming voice connection.

-   Drill-downs to conversations in Insights Dashboards will now open player with conversation directly in Flex

### Changed

-   DTMF Dialpad component will now call `SendDTMFDigits` action.

-   WFO plugin has been retired and Dashboards, Analyze and Assessment views have been added do the sidenav

### Dependencies updated

-   [twilio-client] to version 1.9.7

## 1.15.2

### Fixed

-   Fixed a bug with stuck scrollbar
-   Fix a bug with incorrect number of typing members in the chat

## 1.15.1

### Fixed

-   Fixed authentication issues to WFO (Flex Insights) for customers using hosted Flex without SSO set up

## 1.15.0

### Added

-   Created new Flex `SetWorkerActivity` action which is invoked when supervisor changes a workers status

```
Actions.invokeAction("SetWorkerActivity", { workerSid: "WKXXXXXXXXXXXXXXXXX", activitySid: "WAXXXXXXXXXXXXXXXXX" })
```

-   Introduced new task channel definition variable `channel.templates.TaskCanvasTabs.contentTabHeader` to have channel specific labels for task canvas tabs. `TaskTabAgentCallLabel` and `TaskTabAgentChatLabel` strings are no longer used.

-   Introduced extra logs to identify potential stuck voice calls

### Fixed

-   TeamsView correctly renders even if TaskRouter skills array is not defined.

-   Text in chat input box can be now correctly selected

## 1.14.1

### Fixed

-   `longest_task_waiting_age` is no longer getting updated and is removed from `WorkerQueue`. Using `longest_task_waiting_from` to calculate a task's age instead.

-   Added feature flag for Markdown support

### Dependencies updated

-   [twilio-taskrouter] to version 0.4.1

## 1.14.0

### Added

-   Added `fullscreen` static property to QueuesStatsView component, which can be used to enable fullscreen button for the view.

-   Introduced `ChatChannelHelper` class to wrap all Chat Channel specific helper methods. An instance for a task can be obtained from `TaskHelper.chat` property. `TaskHelper.lastChatMessage` method was deprecated, use `ChatChannelHelper.lastMessage` instead.
-   User will be shown a notification when user has not made a choice whether to allow browser notifications.
-   If user is not focused to the application and receives incoming call task, then he is notified via browser notification. Added two template strings
    `IncomingCallNotificationTitle` and `IncomingCallNotificationBody` for notification title and body respectively.
-   Task channel definitions now allow to override notifications that have a task context:

```
Twilio.Flex.DefaultTaskChannels.Chat.notifications.override["TaskCannotBeTransferred"] = (notification) => {
    notification.content = "Hello, world!";
};

Twilio.Flex.DefaultTaskChannels.Chat.notifications.override["TaskCannotBeTransferred"] = {
    content: "Hello, world!"
};

Twilio.Flex.DefaultTaskChannels.Chat.notifications.override["TaskCannotBeTransferred"] = null;
```

-   New localization strings added.
    `TaskHeaderWebChatStatusAccepted` // Describes WebChat task that is in accepted state. It's used in TaskCanvasHeader.
    `TaskLineWebChatAssigned` // Describes WebChat task that is in assigned state. It's used in TaskListBaseItem.
-   New reachability indicator for webchat tasks. It will show a green icon in the task canvas header and the task list item if the customer is online, and a grey one if offline.

    Please note that you need to enable reachability in console: `https://www.twilio.com/console/chat/services/<chat_service_sid>`, otherwise a grey icon will be shown.

    You can customize the templates `TaskHeaderWebChatStatusAccepted` and/or `TaskLineWebChatAssigned`. For these templates, you can access the reachability status via `helper.chat.isCustomerOnline`.

-   Added a new `notifications` configuration option that allows enabling/disabling browser notifications.

    By default, browser notifications are disabled

```
notifications: {
    browser: true
}
```

### Changed

-   Default template for second line of tasklist item of chat task now includes string "typing ..." if there are participants typing in that chat.
-   withTaskContext now returns a correctly typed component instead of `any`. Therefore it may not be used as a class decorator anymore, but it must be called. This change may also result in new TypeScript errors surfacing incorrect prop types or similar issues.
-   `TaskListItem` now has supports for showing Badges. The content of these badges is TaskChannel dependent and can be customised by updating its `componentProps.TaskListItem.Badge.children` property.
    ```typescript
    myTaskChannelDefinition.componentProps.TaskListItem.Badge.children = (
        appState: AppState,
        context: TaskListItemProps & TaskContextProps
    ) => {
        const badgeContent: number = applyCustomLogic(appState, context); // just an example
        return badgeContent;
    };
    ```
    If the content equal to zero or undefined, no badge is going to be shown.
-   Definition of localization strings changed:
    `TaskHeaderStatusAccepted` // Describes task (except webchat) that is in accepted state. It's used in TaskCanvasHeader.
    `TaskLineChatAssigned` // Describes a chat task that is assigned (except webchat) and any chat task in wrapup status. It's used in TaskListBaseItem.
-   `SideLink` now has support for showing badges. It takes a new property `Badge` which is used to customize it.
-   `SideNav` has 3 new static properties(`AgentDesktop`, `Teams` & `QueuesStats`) which represents link components for each view.
    It can be accessed to change the default `Badge` property.
    ```typescript
    Flex.SideNav.AgentDesktop.defaultProps.Badge = {
        children: 2
    };
    ```
-   "Login with Twilio" link on the Login View will open a Twilio login in a new window if Flex is rendered in an iframe element.
-   Message Input now supports Input Method Editor, allowing to use characters and symbols that are not directly represented on the keyboard itself (like Chinese characters).
-   ToggleMute, HoldCall, UnholdCall and HangupCall to throw an Error instance instead of just an error string in case of a failure.

### Fixed

-   Update 'How to configure' CRM docs link url

## 1.13.2

### Fixed

-   `longest_task_waiting_age` is no longer getting updated and is removed from `WorkerQueue`. Using `longest_task_waiting_from` to calculate a task's age instead.

## 1.13.1

### Fixed

-   Fixed a bug where SSO login stuck at redirect to pop-up dialog when using SFDC Identity provider

## 1.13.0

### Fixed

-   Custom task channel definitions for chat tasks which were not using `chat` as the task channel, could have caused Flex not to load and initialize the chat channels for accepted tasks in previous sessions.

### Changed

-   Upon any sort of failure to transfer a call, user will be shown a notification of the failure and unformatted error string from Taskrouter API.
-   Unmount WorkersDataTable when user navigates away from Teams View.

## 1.12.1

### Fixed

-   Fix an issue with @types/uuid package in windows environment

## 1.12.0

### Changed

-   If user adds programmatically `IconButton` to either `ParticipantCanvas.Actions` or `CallCanvasActions` and does not provide `themeOverride` property then
    the button is going to have the default style of buttons of that container.

### Added

-   Action buttons container for a participant on Call Canvas is now programmable, so developers can add and remove buttons (and other items) there. Name
    of the container is `ParticipantCanvas.Actions`. Existing buttons have keys `hold`, `kick`, `cancel-transfer`, `accept-kick` (confirmation dialog), `cancel-kick` (confirmation dialog).
    Example:

```
Flex.ParticipantCanvas.Actions.Content.add(<IconButton icon="Eye" key="yourButton">);
```

-   `ChatOrchestrator` object now supports setting orchestrations based on a task:

```
const orchestrationsCallback = (task: ITask) => {
    if (task.sid === "WT12345") {
        return [];
    }
};
Flex.ChatOrchestrator.setOrchestrations("accepted", orchestrationsCallback);
```

-   Add new exports to refer to workers instead of agents: `WorkersDataTable`, `WorkerListFilterSelect`, `WorkersDataTable`, `WorkersDataTableProps` and `WorkerListFilter`.
-   Added new button to call toolbar to display DTMF Dialpad. This Dialpad can be used to send DTMF tones to all parties in the call.
-   Action `ToggleDTMFDialpad` is introduced with following payload:

```
{
    task: ITask;
    open?: boolean; // used to explicitly open or close DTMF dialpad.
}
```

-   Action `SetDTMFDialpadDigits` is introduced to set digits in the DTMF dialpad with following payload:

```
{
    task: ITask;
    digits: string;
}
```

-   `IncomingTaskCanvasActions` component that is a set of buttons in the incoming task canvas is now programmable (buttons can be added/removed)
    Example: this code adds an eye-iconed button to the end of the list of incoming task canvas actions

```
Flex.IncomingTaskCanvasActions.Content.add(<IconButton key="hi" icon="Eye" />);
```

or by using channels

```
Flex.DefaultTaskChannels.Call.addedComponents = [{
    target: "IncomingTaskCanvasActions",
    component: <IconButton key="hi" icon="Eye" />,
}];
```

-   Flex to read `{ loginPopup: boolean; }` from `public_attributes` of the Configuration Service to determine if the SSO flow needs to be launched in a popup window. Note that if `sso: { loginPopup: boolean }` is set in local Flex configuration, then `public_attributes` will not be fetched.

### Fixed

-   Loading Flex with url `host/teams/workers/WK...` now correctly opens the Worker Panel in Teams View

-   WorkersDataTable workers now get correctly sorted and keep position

-   Facebook channel definition now expects channel type to be `facebook`

## 1.11.2

### Fixed

-   WorkersDataTable workers now get correctly sorted and keep position

## 1.11.1

### Fixed

-   Issues with `Twilio.Flex.runDefault()` removing query path search string.

## 1.11.0

### Changed

-   All chat channels are not automatically loaded to the Redux state of Flex anymore. Only those chat channels are loaded that are associated with any active task.
-   Removed optional URLs from TypeScript Config interface.
-   Call task canvas will now go to new list mode if participants would not otherwise fit. In order to change `ParticipantCanvas` when it is in list mode, developer
    will need to use `ParticipantCanvas.ListItem`.
    Example:

```
    // adds a button to the bottom of the normal participant
    Flex.ParticipantCanvas.Content.add(<button key="key">Hi</button>);
    // adds a button to the end of participant that is shown in a list
    Flex.ParticipantCanvas.ListItem.Content.add(<button key="key">Hi</button>);
```

### Added

-   Added `Warm Transfers` feature
-   Add `legacy` property to `ContextProvider` component to resolve conflicts between multiple `react-redux` versions for self-hosted applications.
-   Added `tasksA` and `tasksB` arguments to `AgentsDataTable.defaultProps.initialCompareFunction` to allow tasks comparison:

```typescript jsx
Flex.AgentsDataTable.defaultProps.initialCompareFunction = (a: Flex.IWorker, b: Flex.IWorker, tasksA: Array<Flex.ITask>, tasksB: Array<Flex.ITask>) => {
```

### Fixed

-   Make `TaskCard` component inherit font family from the `RootContainer`;

## 1.10.0

### Dependencies updated

-   [twilio-taskrouter] to version 0.3.2

### Fixed

-   Prevented TaskChannels re-initialization on Manager load method. This fixes a Plugin-Builder related issue.
-   WorkerCanvas component was not forwarding contextual props to its children so any 3rd party component added to that canvas did not know what
    worker etc it was dealing with.

### Added

-   `WorkerDirectoryTabs` component that represents a set of tabs in the WorkerDirectory popup is now programmable (tabs can be added/removed)
    Example: this code adds a new tab to the end of the tab list of worker directory

```
Flex.WorkerDirectory.Tabs.Content.add(<CustomTab />)
```

In this example, `CustomTab` is a component that uses a `Tab` component.

-   `CallCanvasActions` component that is a set of buttons in the call canvas is now programmable (buttons can be added/removed)
    Example: this code adds an eye-iconed button to the end of the list of call canvas actions

```
Flex.CallCanvasActions.Content.add(<IconButton key="hi" icon="Eye" />)
```

or by using channels

```
Flex.DefaultTaskChannels.Call.addedComponents = [{
    target: "CallCanvasActions",
    component: <IconButton key="hi" icon="Eye" />,
}];
```

-   Theme got 2 new keys inside `Supervisor` section `Supervisor.TaskCanvas.Header` and `Supervisor.WorkerCanvas.SectionCaption` to style
    `TaskCanvas` header and sub section header in `WorkerCanvas` respectively.

## 1.9.1

-   `AgentDesktopView` `splitterOptions` were not settable anymore via config (only via default props)

## 1.9.0

### Dependencies updated

-   [twilio-chat] to version 3.2.3
-   [twilio-client] to version 1.7.2
-   [twilio-sync] to version 0.11.0
-   [twilio-taskrouter] to version 0.3.1
-   [@material-ui/core] to version 3.9.3

### Added

-   `AgentDesktopView.Panel1` got a new default property `splitterOrientation` that determines whether orientation of the content will be vertical, horizontal or automatic
    based on content size (default).
-   `SetComponentState` UI Action. This is meant to alter the current state of a component. Component states is a `componentName => key/value pairs` dictionary in Redux store that this action manipulates. Payload is defined as

```export interface SetComponentStatePayload {
    name: string;
    state: any;
}
```

where `name` is the name of the component and `state` is an Javascript object. The Action will update the state in the store under `name` by shallow merging `state` with current state. Developers can use this action and this state to both control native Flex controls and also keep a convenient state for their own components. Natively currently two controls are supported (`"AgentTaskCanvasTabs", "SupervisorCanvasTabs"`) with one state value `selectedTabName` that holds the `uniqueName` of currently selected tab of the respective tab controls.

Example:

```
    Flex.Actions.invokeAction("SetComponentState", { name: "AgentTaskCanvasTabs", state: { selectedTabName: "info" } });
```

will change the tab of the Task Canvas in Agent View to info tab. This call can also be made preemptively when initializing Flex to set default selected tab of a tab control.

```
export enum SplitterOrientation  {
    auto = "auto",
    vertical = "vertical",
    horizontal = "horizontal"
}
```

Example:

```
    Flex.AgentDesktopView.Panel1.defaultProps.splitterOrientation = "vertical";
```

-   Introduced store enhancer `flexStoreEnhancer` to support adding additional reducers.
    Example:

```
    const myReduxStore = createStore(
        reducers,
        compose(
            applyFlexMiddleware(),
            flexStoreEnhancer // <-- Add enhancer part of compose
        )
    );
```

-   Introduced `addReducer` api to `manager.store` to add additional reducer.
    Example:

```
    manager.store.addReducer("new", newReducer);
```

-   `ChatOrchestrator` object that can be used to disable default chat orchestration.
    -   There are three chat orchestrations that are supported and enabled by default:
        -   `AddToChatChannel` - Request agent to be added to the chat channel (by default runs on the `accepted` event from `Reservation`)
        -   `DeactivateChatChannel` - Mark chat channel status as `INACTIVE` (by default runs on `WrapupTask` and `CompleteTask` actions and on the `wrapup` and `completed` event from `Reservation` object if it was not done already)
        -   `LeaveChatChannel` - Remove agent from the chat channel (by default runs on `CompleteTask` action and on the `completed` event from `Reservation` object if it was not done already)
    -   Orchestrations can be disabled completely by invoking `ChatOrchestrator.clearAllOrchestrations()` method.
    -   Orchestrations can be enabled or disabled by Reservation events (`accepted`, `wrapup`, `completed`) which affects corresponding actions as well. For example:
    ```
      // Disable orchestrations for `accepted` event:
      Flex.ChatOrchestrator.setOrchestrations("accepted", []);
      // Disable marking chats channels as inactive:
      Flex.ChatOrchestrator.setOrchestrations("wrapup", []);
      Flex.ChatOrchestrator.setOrchestrations("completed", ["LeaveChatChannel"]);
    ```
-   Add `rejectPendingReservations` configuration option: it represents whether all pending reservations are ignored or should be manually rejected before an agent will be allowed to switch to unavailable activity (default value – `true` – allows an agent to change activity even if there are pending reservations). Also, a way to override that value is now available through `beforeSetActivity` action:

```
Actions.on("beforeSetActivity", (payload) => { payload.options.rejectPendingReservations = true; });
```

-   Add `Flex.Log.LogManager` API for custom logging
-   Added `callSid` to Participant object in `Conferences` state.
-   `Chat` tab added to `SupervisorTaskCanvas` for Supervisors to monitor chats.
-   New localization strings added.

```
`TaskTabSupervisorCallLabel` // Call task tab label in Supervisor task canvas.
`TaskTabSupervisorChatLabel` // Chat task tab label in Supervisor task canvas.
`TaskHeaderStatusPending` // Describes task that is in pending state. It's used in TaskCanvasHeader.
`TaskHeaderGroupCallAccepted` // Describes conference call task that is in accepted state. It's used in TaskCanvasHeader.
`TaskHeaderStatusAccepted` // Describes task that is in accepted state. It's used in TaskCanvasHeader.
`TaskHeaderStatusWrapup` // Describes task that is in wrapup state. It's used in TaskCanvasHeader.
`TaskHeaderStatusCompleted` // Describes task that is in completed state. It's used in TaskCanvasHeader.
```

-   `TaskCanvasHeader` now accepts a new prop `secondLineTemplateCode`. By default it describes the status of the task.

## Changed

-   Chat orchestration failure now can prevent action invocations:
    -   If chat orchestration fails to mark the chat channel inactive, then `WrapupTask` action will fail.
    -   If chat orchestration fails to remove agent from chat channel, then `CompleteTask` action will fail.
-   Chat orchestration marks deactivates chat channel on the Reservation `wrapup` event (if it did not happen in `WrapupTask` action already)
-   Dynamically added custom components are encouraged to use `withTheme` decorators to inject `theme` prop
-   Following type definitions are changed for consistency:
    -   `CallCanvasProps` renamed to `CallCanvasChildrenProps`
    -   `TaskCanvasProps` renamed to `TaskCanvasChildrenProps`
    -   `NoTaskCanvasProps` renamed to `NoTaskCanvasChildrenProps`
    -   `ParticipantsCanvasProps` split in a `ParticipantsCanvasProps` subset and `ParticipantsCanvasChildrenProps`
    -   `TaskCanvasHeaderProps` split in a `TaskCanvasHeaderProps` subset and `TaskCanvasHeaderChildrenProps`
    -   `TaskCanvasTabsProps` split in a `TaskCanvasTabsProps` subset and `TaskCanvasTabsChildrenProps`
    -   `TaskInfoPanelProps` split in a `TaskInfoPanelProps` subset and `TaskInfoPanelChildrenProps`
    -   `MainHeaderProps` split in a `MainHeaderProps` subset and `MainHeaderChildrenProps`
    -   `AgentDesktopViewProps` split in a `AgentDesktopViewProps` subset and `AgentDesktopViewChildrenProps`
    -   `LoginViewProps` split in a `LoginViewProps` subset and `LoginViewChildrenProps`
    -   `TeamsViewProps` split in a `TeamsViewProps` subset and `TeamsViewChildrenProps`
    -   `CRMContainerProps` split in a `CRMContainerProps` subset and `CRMContainerChildrenProps`
    -   `LiveCommsBarProps` renamed in `LiveCommsBarChildrenProps`
    -   `MainContainerProps` split in a `MainContainerProps` subset and `MainContainerChildrenProps`
    -   `MuteButtonProps` split in a `MuteButtonProps` subset and `MuteButtonImplProps`
    -   `RootContainerProps` renamed in `RootContainerChildrenProps`
    -   `SideNavProps` split in a `SideNavProps` subset and `SideNavImplProps`
    -   `TaskListButtonsProps` renamed in `TaskListButtonsChildrenProps`
    -   `ViewCollectionProps` split in a `ViewCollectionProps` subset and `ViewCollectionImplProps`
-   SupervisorTaskCanvas tabs title changed from Overview to Call or Chat based on the type of task.

### Fixed

-   Hold/unhold buttons on call canvas for customer participant will call `HoldCall/UnholdCall` actions again instead of `HoldParticipant/UnholdParticipant`
-   Brought back `conferenceSid` property on `conference` object that had been accidentally removed.

## 1.8.2

### Fixed

-   Rare bug where user would see endless login spinner when trying to log in.

## 1.8.1

### Fixed

-   Hold/unhold buttons on call canvas for customer participant will call `HoldCall/UnholdCall` actions again instead of `HoldParticipant/UnholdParticipant`

## 1.8.0

### Added

-   `TaskListButtons` component that is the set of buttons in tasklist item is now programmable (buttons can be added/removed)
    Example, that shows a button as the last button for call tasks that have status as "accepted":

```
        const shouldShow = (props) => {
            return props.task.status == "accepted";
        };

        Flex.DefaultTaskChannels.Call.addedComponents = [{
            target: "TaskListButtons",
            component: <IconButton key="hi" icon="Eye" />,
            options: {if: shouldShow}}];
```

-   Action buttons will be disabled after user click until the action execution is finished.
-   Actions `ToggleSidebar` are introduced with following payload:

```
{
    open?: boolean; // used to explicitly open or close the sidebar.
}
```

### Changed

-   Renamed `TaskButtons` class to `TaskListButtons`

### Fixed

-   Restored backwards compatibility with the first versions of the outbound dialer plugin

## 1.7.4

### Fixed

-   Rare bug where user would see never ending login spinner when trying to log in

## 1.7.3

### Fixed

-   Hold/unhold buttons on call canvas for customer participant will call `HoldCall/UnholdCall` actions again instead of `HoldParticipant/UnholdParticipant`

## 1.7.2

### Fixed

-   Restored backwards compatibility with the first versions of the outbound dialer plugin

## 1.7.1

### Fixed

-   Incoming task canvas failed to render for generic/custom task channels.

### Added

-   New template `TaskLineTitle` with default value as empty string to be shown for default task channel in `IncomingTaskCanvas`.

## 1.7.0

### Added

-   Added `ThemeColorsDefinition` to replace `ThemeDef`
-   Added `ThemeColorsDefinitionCreator` to replace `ThemeDefCreator`
-   Added `ThemeColorsDefinitionCreator.getPredefined` to replace `ThemeDefCreator.getPredefinedTheme`
-   Added a new `logger` configuration option that allows to collect logs and errors into a downloadable file:

```
logger: {
  type: "file"
}
```

### Changed

-   Deprecated `ThemeDef` interface, `ThemeDefCreator` class and its method `ThemeDefCreator.getPredefinedTheme`.
-   General Flex UI styles (like headers, paragraphs or links) are now applied only to HTML elements that have a class starting with `Twilio` or their direct descendants without any class

## 1.6.1

### Fixed

-   Imports from latest `history` NPM package
-   Mitigation for duplicate task based events after connection drop

## 1.6.0

### Added

-   Add support for a "predefinedMessage" in the MessagingCanvas to display an initial message in the ChatWidget.
-   Add `agentAvailableColor`, `agentBusyColor`, `agentUnavailableColor`, `agentOfflineColor` colors to theme.

### Changed

-   Extend TaskChannelDefinition with a `componentProps` object to allow taskChannel-specific component props modifications.
-   Conference State support to monitor participants and their statuses via Sync Insights. Surfaced via Task Context as `conference` property.
-   Call monitoring now also works when forwarding the calls to phone number
-   New designs for task call view and task list item. Also updated the incoming transfer views

### Fixed

-   Get 'Offline' activity sid from serviceConfiguration.taskrouter_offline_activity_sid

## 1.5.0

### Added

-   WFO identity client integrated and exposed through `Twilio.Flex.Wfo.Identity`
-   New 'untrustedDomain' exception on login attempts from non-whitelisted domains
-   TaskSid and ReservationSid in task info panel

### Changed

-   Flex requires `<meta name="referrer" content="no-referrer">` element to be present in `<head>` section of HTML. If such element does not exists then Flex will issue additional browser redirect in login flow after returning from IdP (and token is present in the URL).
-   Deprecated `Reserved` and `Assigned` keys in `TaskStatusBasedTypeBase` for task channel definitions. Use new `Accepted` key for reservation accepted state.
-   Hide main action button on login when a Validation error (sso, untrusted domain) is thrown.
-   On logout, try to detect 'Offline' activity by "sid" (serviceConfiguration.attributes.taskrouter_offline_activity_sid) and, if that's not provided, fallback to the name.

### Fixed

-   Use `Pending` task based status key from task channel definition if both `Pending` and `Reserved` were defined for TaskStatusBasedTypeBase.
-   Agent status in supervisor agent panel now correctly updates, even with a filtered-out agent.

## 1.4.1

### Fixed

-   Teams view "Active agents" filter to dynamically generate and use the query to include agents in all `available` activities from TaskRouter.

## 1.4.0

### Changed

-   Call Tasks will now be accepted with `endConferenceOnExit` set to `true`, so when agent ends the call the call will be ended for the customer as well. There is no reason anymore to
    override the `acceptTask` action to achieve this.
-   Removed the `disabledTransfers` config option as it is obsolete due to the change above.
-   Agent activity duration will now be shown in the teams view and header User card.
-   Updated logout view with new design.
-   Enabled plugin service by default.

## 1.3.0

### Added

-   New FlexEvent `FlexEvents.pluginsLoaded` that fires after all plugins have finished loading.
-   `MonitorTask` action payload got a new param `extraParams` that is the equally named TR SDK param for `Reservation.monitor` call. It is optional and UI does not set it, but developer can alter it via programmability if need be.
-   Exposed common dependencies like `React`, `ReactDOM`, `Redux` and `ReactRedux` to window object for plugins to depend on.
-   Error notification when browser is unable to access microphone.
-   New option `isolate` for `router` configuration section: whenever set to true, Flex will ignore any navigation action (including URL change) except for internal.
-   Default route may now be changed via `componentProps` by setting `defaultLocation` property for `ViewCollection`.
-   Flex navigation action type is exposed through `FLEX_LOCATION_CHANGE` constant. It can be used to listen to Flex navigation actions or do dispatch Flex-specific navigation actions.
-   `disableBrowserVoice` option for configuration. When specified Twilio Client SDK (for Browser voice capability) will not be initialized. Attempting to accept a task that is voice and with worker's `contact_uri` not pointing to a phone number, the attempt is blocked and warning is shown.
-   Character limit information added to chat channel definitions.
-   Registered a `beforeSendMessage` action to check if the message exceeds the limit and handle it accordingly.
-   SSO login in pop-up window support added. `config.sso.loginPopup = true` can be set to enable it. To gracefully handle blocked popups, new `LoginFormView` React component or `provideLoginInfo` or `tryLogin` Twilio.Flex API function can be used to launch it. Additionally pop-up window features for `window.open()` function can be set in `config.sso.loginPopupFeatures` configuration variable as string.
-   New API functions to run or log user in to Flex using `Twilio.Flex` interface:

```
    /**
    * Runs Flex with default setup.
    * It will show loader and prompts for login information
    * if it is not provided in configuration object.
    *
    * @param [config] configuration object
    * @param [nodeOrSelector] DOM node or selector string where to render Flex
    * @returns {Promise<void>}
    */
    export function runDefault(config: Config = {}, nodeOrSelector: string | Element = "body"): Promise<void>;

    /**
    * Tries to log user in to Flex.
    * Can redirect the current browser window to the IdP URL or
    * open a new window to navigate to IdP URL if config.loginPopup is set.
    *
    * @param [config] SSO configuration object
    * @return {Promise<boolean>} true if there is valid token and user can be logged in.
    */
    function tryLogin(config: SSOConfig = {}): Promise<boolean>;

    /**
    * Helper function to provide additional account and user info if it is not set.
    * Updates the provided config object.
    *
    * Renders a LoginFormView component if accountSid is not provided or there are problems with signing user in.
    *
    * @param [config] configuration object
    * @param [nodeOrSelector] DOM node or selector string where to render the component
    * @returns {Promise<void>} if resolved, then Flex instance can be created with
    *      provided config object.
    */
    function provideLoginInfo(config: Config = {}, nodeOrSelector: string | Element = "body"): Promise<void>;
```

-   New `LoginFormView` React component to be used to provide account / user info with the following props:

```
interface LoginFormViewProps {
    onSuccess: (determinedConfig: Config) => any;
    userConfig: Config;
}
```

-   New strings for `LoginFormView` component:

```
    LoginContinue: "Continue anyway",
    LoginLaunch: "Launch",
    LoginTitle: "Twilio Flex",
    LoginErrorDomain: "Oops! Your runtime domain is incorrect.",
    LoginErrorDomainDetails: "Find your runtime domain " +
        "<a href='https://www.twilio.com/console/runtime/overview'>here</a>",
    LoginErrorSso: "Hmm, Single Sign-On has not been configured.",
    LoginErrorSsoDetails: "Find out how to configure Single Sign-On " +
        "<a href='https://www.twilio.com/console/flex/users/single-sign-on'>here</a>",
    LoginErrorPopupBlocked: "Sorry, pop-ups are blocked.",
    LoginErrorPopupBlockedDetails: "Find out how to enable pop-ups in your browser",
    LoginErrorGeneric: "Oops! Well, that didn’t work :( Please double check your configuration.",
    LoginIsAdmin: "Flex Admin?",
    LoginWithTwilio: "Login with Twilio.",
```

### Changed

-   `View` now has multiple route path support. By default `name` prop is taken as string to be added to the path of the specified `View`.
    One can add alternative routes with `route` prop. Example:

        ```<View key="teams" name="teams" route={{ path: "/supervisor" }}>  // both http:/domain/teams and http://domain/supervisor will work```

        ```<View key="teams" name="teams" route={{ path: ["/supervisor", "something"] }}>  // both http:/domain/teams and http://domain/supervisor and http://domain/something will work```

-   `ViewCollection` was not using DynamicComponent properly so all manipulations of it other than `add` via programmability did not work.
    = Global mute button will be disabled if there are no active calls.

###Fixed

-   Global mute button indicated muted state even after the call had ended.

## 1.2.0

### Fixed

-   Use react and react-dom version 16.5.2

### Changed

-   `baseNames` theme names changed

| Deprecated name | New Theme name |
| --------------- | -------------- |
| DarkTheme       | GreyDark       |
| MediumTheme     | GreyLight      |
| BlueMediumTheme | FlexLight      |
| BlueDarkTheme   | FlexDark       |

-   Switch from `icon` to `label` in `Tab` label components in agent `TaskCanvasTabs` and supervisor `TaskCanvas`

### Added

-   New localization strings for TaskTabAgentIncomingLabel, TaskTabAgentCallLabel, TaskTabAgentChatLabel,
    TaskTabAgentInfoLabel, TaskTabSupervisorInfoLabel and TaskTabSupervisorOverviewLabel

```
export interface Strings<T = string> extends FrameStrings<T> {
    ...
    TaskTabAgentIncomingLabel?: T;
    TaskTabAgentCallLabel?: T;
    TaskTabAgentChatLabel?: T;
    TaskTabAgentInfoLabel?: T;
    TaskTabSupervisorInfoLabel?: T;
    TaskTabSupervisorOverviewLabel?: T;
}
```

-   `Views` of `ViewCollection` got a new prop `mountRule`. If specified, `keepMounted` prop value is ignored. Definition of the prop is as follows:

```
export enum ViewMountRule {
    Always = "Always",  // View is mounted from the start of the application and never unmounted
    WhenActive = "WhenActive", // Views is mounted when activated and unmounted when deactivated
    WhenHasBeenActive = "WhenHasBeenActive" // View is mounted when first activated and never umounted
}
```

## 1.1.0

### Fixed

-   TypeScript definitions of the package were referencing some missing files

### Added

-   Ability to transfer calls to a Queue from Directory Component (previously only workers were present there)
-   Action `TransferTask` was introduced with following payload:

```
{
    sid?: string; // sid of the ITask to transfer
    task?: ITask; // ITask object representing the Reservation being transferred
    targetSid: string; // sid of the Worker or Queue where the task should be transferred to
    options?: Object // options passed over to TaskRouter SDK transfer call. Refer to TaskRouter SDK documentation on Task.transfer option values.
}
```

As with all other Task specific actions, if calling it, either `task` or `sid` must be specified, the other is autofilled then accordingly. When tapping into the action either with events or task replacement, both will be filled at execution time.

## 1.0.2

### Fixed

-   Regular agents were not able to open up directory button for transfers
-   MainHeader now again accepts changing logoUrl default property

## 1.0.1

### Fixed

-   CRMContainer and MessagingCanvas did not pass props down to their custom children
-   Issues with broken UI when using custom store
