diff --git a/.changeset/brown-crabs-chew.md b/.changeset/brown-crabs-chew.md new file mode 100644 index 000000000000..3291f18bf225 --- /dev/null +++ b/.changeset/brown-crabs-chew.md @@ -0,0 +1,13 @@ +--- +'@rocket.chat/uikit-playground': patch +'@rocket.chat/fuselage-ui-kit': patch +'@rocket.chat/ui-theming': patch +'@rocket.chat/ui-video-conf': patch +'@rocket.chat/ui-composer': patch +'@rocket.chat/gazzodown': patch +'@rocket.chat/ui-avatar': patch +'@rocket.chat/ui-client': patch +'@rocket.chat/meteor': patch +--- + +Bumped @rocket.chat/fuselage that fixes the Menu onPointerUp event behavior diff --git a/.changeset/bump-patch-1722087664914.md b/.changeset/bump-patch-1722087664914.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1722087664914.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1722559871139.md b/.changeset/bump-patch-1722559871139.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1722559871139.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/fifty-mails-admire.md b/.changeset/fifty-mails-admire.md deleted file mode 100644 index b87fd11d47ee..000000000000 --- a/.changeset/fifty-mails-admire.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@rocket.chat/web-ui-registration': patch -"@rocket.chat/meteor": minor ---- - -Login services button was not respecting the button color and text color settings. Implemented a fix to respect these settings and change the button colors accordingly. - -Added a warning on all settings which allow admins to change OAuth button colors, so that they can be alerted about WCAG (Web Content Accessibility Guidelines) compliance. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000000..38a7fe160e48 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,114 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "@rocket.chat/meteor": "6.11.0-develop", + "rocketchat-services": "1.2.1", + "@rocket.chat/account-service": "0.4.1", + "@rocket.chat/authorization-service": "0.4.1", + "@rocket.chat/ddp-streamer": "0.3.1", + "@rocket.chat/omnichannel-transcript": "0.4.1", + "@rocket.chat/presence-service": "0.4.1", + "@rocket.chat/queue-worker": "0.4.1", + "@rocket.chat/stream-hub-service": "0.4.1", + "@rocket.chat/api-client": "0.2.1", + "@rocket.chat/ddp-client": "0.3.1", + "@rocket.chat/license": "0.2.1", + "@rocket.chat/omnichannel-services": "0.2.1", + "@rocket.chat/pdf-worker": "0.1.1", + "@rocket.chat/presence": "0.2.1", + "@rocket.chat/ui-theming": "0.2.0", + "@rocket.chat/account-utils": "0.0.2", + "@rocket.chat/agenda": "0.1.0", + "@rocket.chat/apps": "0.1.1", + "@rocket.chat/base64": "1.0.13", + "@rocket.chat/cas-validate": "0.0.2", + "@rocket.chat/core-services": "0.4.1", + "@rocket.chat/core-typings": "6.11.0-develop", + "@rocket.chat/cron": "0.1.1", + "@rocket.chat/eslint-config": "0.7.0", + "@rocket.chat/favicon": "0.0.2", + "@rocket.chat/fuselage-ui-kit": "8.0.1", + "@rocket.chat/gazzodown": "8.0.1", + "@rocket.chat/i18n": "0.5.0", + "@rocket.chat/instance-status": "0.1.1", + "@rocket.chat/jwt": "0.1.1", + "@rocket.chat/livechat": "1.18.1", + "@rocket.chat/log-format": "0.0.2", + "@rocket.chat/logger": "0.0.2", + "@rocket.chat/message-parser": "0.31.29", + "@rocket.chat/mock-providers": "0.1.0", + "@rocket.chat/model-typings": "0.5.1", + "@rocket.chat/models": "0.1.1", + "@rocket.chat/poplib": "0.0.2", + "@rocket.chat/password-policies": "0.0.2", + "@rocket.chat/patch-injection": "0.0.1", + "@rocket.chat/peggy-loader": "0.31.25", + "@rocket.chat/random": "1.2.2", + "@rocket.chat/release-action": "2.2.3", + "@rocket.chat/release-changelog": "0.1.0", + "@rocket.chat/rest-typings": "6.11.0-develop", + "@rocket.chat/server-cloud-communication": "0.0.2", + "@rocket.chat/server-fetch": "0.0.3", + "@rocket.chat/sha256": "1.0.10", + "@rocket.chat/tools": "0.2.1", + "@rocket.chat/ui-avatar": "4.0.1", + "@rocket.chat/ui-client": "8.0.1", + "@rocket.chat/ui-composer": "0.2.0", + "@rocket.chat/ui-contexts": "8.0.1", + "@rocket.chat/ui-kit": "0.35.0", + "@rocket.chat/ui-video-conf": "8.0.1", + "@rocket.chat/uikit-playground": "0.3.1", + "@rocket.chat/web-ui-registration": "8.0.1" + }, + "changesets": [ + "afraid-guests-jog", + "bump-patch-1722087664914", + "bump-patch-1722559871139", + "chatty-hounds-hammer", + "chilled-yaks-beg", + "chilly-papayas-march", + "cuddly-brooms-approve", + "dry-pumas-draw", + "empty-readers-teach", + "fast-buttons-shake", + "funny-snails-promise", + "funny-wolves-tie", + "grumpy-worms-appear", + "happy-peaches-nail", + "hip-queens-taste", + "hungry-wombats-act", + "large-vans-attack", + "lucky-beds-glow", + "lucky-countries-look", + "many-tables-love", + "mean-hairs-move", + "nervous-rockets-impress", + "new-balloons-speak", + "new-scissors-love", + "nice-laws-eat", + "perfect-coins-camp", + "polite-foxes-repair", + "popular-trees-lay", + "proud-waves-bathe", + "quick-ducks-live", + "rare-penguins-hope", + "red-numbers-happen", + "red-vans-shave", + "rich-carpets-brush", + "rotten-eggs-end", + "selfish-emus-sing", + "shaggy-hats-raise", + "sixty-nails-clean", + "smooth-lobsters-flash", + "soft-donkeys-thank", + "sour-forks-breathe", + "thin-windows-reply", + "violet-brooms-press", + "weak-insects-sort", + "weak-pets-talk", + "weak-taxis-design", + "weak-tigers-suffer", + "witty-bats-develop" + ] +} diff --git a/.changeset/strong-swans-double.md b/.changeset/strong-swans-double.md new file mode 100644 index 000000000000..db521aeeef0f --- /dev/null +++ b/.changeset/strong-swans-double.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/uikit-playground': minor +'@rocket.chat/meteor': minor +--- + +Upgrades fuselage-toastbar version in order to add pause on hover functionality diff --git a/.changeset/swift-maps-tickle.md b/.changeset/swift-maps-tickle.md new file mode 100644 index 000000000000..076ead1cea4c --- /dev/null +++ b/.changeset/swift-maps-tickle.md @@ -0,0 +1,9 @@ +--- +'@rocket.chat/core-services': minor +'@rocket.chat/model-typings': minor +'@rocket.chat/core-typings': minor +'@rocket.chat/rest-typings': minor +'@rocket.chat/meteor': minor +--- + +Added `sidepanel` field to `teams.create` and `rooms.saveRoomSettings` endpoints diff --git a/.github/actions/build-docker/action.yml b/.github/actions/build-docker/action.yml index 364957ecdf01..dbc615da889a 100644 --- a/.github/actions/build-docker/action.yml +++ b/.github/actions/build-docker/action.yml @@ -43,7 +43,7 @@ runs: tar xzf Rocket.Chat.tar.gz rm Rocket.Chat.tar.gz - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Setup NodeJS uses: ./.github/actions/setup-node diff --git a/.github/actions/meteor-build/action.yml b/.github/actions/meteor-build/action.yml index d261000ceb87..c13703aeea46 100644 --- a/.github/actions/meteor-build/action.yml +++ b/.github/actions/meteor-build/action.yml @@ -91,7 +91,7 @@ runs: meteor node -v git version - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Translation check shell: bash diff --git a/.github/workflows/ci-code-check.yml b/.github/workflows/ci-code-check.yml index 75deb399d2f2..fd214bc39488 100644 --- a/.github/workflows/ci-code-check.yml +++ b/.github/workflows/ci-code-check.yml @@ -42,7 +42,7 @@ jobs: # docker rmi $(docker image ls -aq) # df -h - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Cache TypeCheck uses: actions/cache@v3 diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index 6ac9d751fc7a..b31f56c7a7de 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -139,7 +139,7 @@ jobs: CR_PAT: ${{ secrets.CR_PAT }} node-version: ${{ inputs.node-version }} - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Start httpbin container and wait for it to be ready if: inputs.type == 'api' diff --git a/.github/workflows/ci-test-unit.yml b/.github/workflows/ci-test-unit.yml index bfb22ffa4e73..a32c1e575b8f 100644 --- a/.github/workflows/ci-test-unit.yml +++ b/.github/workflows/ci-test-unit.yml @@ -40,7 +40,7 @@ jobs: cache-modules: true install: true - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Unit Test run: yarn testunit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 411aa2cc5b1a..77a8d648ae61 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -161,7 +161,7 @@ jobs: restore-keys: | vite-local-cache-${{ runner.os }}- - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Build Rocket.Chat Packages run: yarn build diff --git a/.github/workflows/new-release.yml b/.github/workflows/new-release.yml index f10578d5879f..5ef8027b1467 100644 --- a/.github/workflows/new-release.yml +++ b/.github/workflows/new-release.yml @@ -38,7 +38,7 @@ jobs: cache-modules: true install: true - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Build packages run: yarn build diff --git a/.github/workflows/pr-update-description.yml b/.github/workflows/pr-update-description.yml index 71b4ffeda801..e792127eac9d 100644 --- a/.github/workflows/pr-update-description.yml +++ b/.github/workflows/pr-update-description.yml @@ -25,7 +25,7 @@ jobs: cache-modules: true install: true - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Build packages run: yarn build @@ -36,4 +36,3 @@ jobs: action: update-pr-description env: GITHUB_TOKEN: ${{ secrets.CI_PAT }} - diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index e133a3153722..ccc3408e194e 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -28,7 +28,7 @@ jobs: cache-modules: true install: true - - uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - uses: rharkor/caching-for-turbo@v1.5 - name: Build packages run: yarn build diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 75ffb7f02d7a..c80c36bf4890 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,245 @@ # @rocket.chat/meteor +## 6.11.0-rc.2 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/api-client@0.2.3-rc.2 + - @rocket.chat/license@0.2.3-rc.2 + - @rocket.chat/omnichannel-services@0.3.0-rc.2 + - @rocket.chat/pdf-worker@0.2.0-rc.2 + - @rocket.chat/presence@0.2.3-rc.2 + - @rocket.chat/apps@0.1.3-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/cron@0.1.3-rc.2 + - @rocket.chat/fuselage-ui-kit@9.0.0-rc.2 + - @rocket.chat/gazzodown@9.0.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/ui-contexts@9.0.0-rc.2 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/models@0.2.0-rc.2 + - @rocket.chat/ui-theming@0.2.0 + - @rocket.chat/ui-avatar@5.0.0-rc.2 + - @rocket.chat/ui-client@9.0.0-rc.2 + - @rocket.chat/ui-video-conf@9.0.0-rc.2 + - @rocket.chat/web-ui-registration@9.0.0-rc.2 + - @rocket.chat/instance-status@0.1.3-rc.2 +
+ +## 6.11.0-rc.1 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/api-client@0.2.2-rc.1 + - @rocket.chat/license@0.2.2-rc.1 + - @rocket.chat/omnichannel-services@0.3.0-rc.1 + - @rocket.chat/pdf-worker@0.2.0-rc.1 + - @rocket.chat/presence@0.2.2-rc.1 + - @rocket.chat/apps@0.1.2-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/cron@0.1.2-rc.1 + - @rocket.chat/fuselage-ui-kit@9.0.0-rc.1 + - @rocket.chat/gazzodown@9.0.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/ui-contexts@9.0.0-rc.1 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/models@0.2.0-rc.1 + - @rocket.chat/ui-theming@0.2.0 + - @rocket.chat/ui-avatar@5.0.0-rc.1 + - @rocket.chat/ui-client@9.0.0-rc.1 + - @rocket.chat/ui-video-conf@9.0.0-rc.1 + - @rocket.chat/web-ui-registration@9.0.0-rc.1 + - @rocket.chat/instance-status@0.1.2-rc.1 +
+ +## 6.11.0-rc.0 + +### Minor Changes + +- ([#32498](https://github.com/RocketChat/Rocket.Chat/pull/32498)) Created a `transferChat` Livechat API endpoint for transferring chats programmatically, the endpoint has all the limitations & permissions required that transferring via UI has + +- ([#32792](https://github.com/RocketChat/Rocket.Chat/pull/32792)) Allows admins to customize the `Subject` field of Omnichannel email transcripts via setting. By passing a value to the setting `Custom email subject for transcript`, system will use it as the `Subject` field, unless a custom subject is passed when requesting a transcript. If there's no custom subject and setting value is empty, the current default value will be used + +- ([#32739](https://github.com/RocketChat/Rocket.Chat/pull/32739)) Fixed an issue where FCM actions did not respect environment's proxy settings + +- ([#32570](https://github.com/RocketChat/Rocket.Chat/pull/32570)) Login services button was not respecting the button color and text color settings. Implemented a fix to respect these settings and change the button colors accordingly. + + Added a warning on all settings which allow admins to change OAuth button colors, so that they can be alerted about WCAG (Web Content Accessibility Guidelines) compliance. + +- ([#32706](https://github.com/RocketChat/Rocket.Chat/pull/32706)) Added the possibility for apps to remove users from a room + +- ([#32517](https://github.com/RocketChat/Rocket.Chat/pull/32517)) Feature Preview: New Navigation - `Header` and `Contextualbar` size improvements consistent with the new global `NavBar` + +- ([#32493](https://github.com/RocketChat/Rocket.Chat/pull/32493)) Fixed Livechat rooms being displayed in the Engagement Dashboard's "Channels" tab + +- ([#32742](https://github.com/RocketChat/Rocket.Chat/pull/32742)) Fixed an issue where adding `OVERWRITE_SETTING_` for any setting wasn't immediately taking effect sometimes, and needed a server restart to reflect. + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Added system messages support for Omnichannel PDF transcripts and email transcripts. Currently these transcripts don't render system messages and is shown as an empty message in PDF/email. This PR adds this support for all valid livechat system messages. + + Also added a new setting under transcripts, to toggle the inclusion of system messages in email and PDF transcripts. + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. +- ([#32176](https://github.com/RocketChat/Rocket.Chat/pull/32176)) Added a method to the Apps-Engine that allows apps to read multiple messages from a room + +- ([#32493](https://github.com/RocketChat/Rocket.Chat/pull/32493)) Improved Engagement Dashboard's "Channels" tab performance by not returning rooms that had no activity in the analyzed period + +- ([#32024](https://github.com/RocketChat/Rocket.Chat/pull/32024)) Implemented a new tab to the users page called 'Active', this tab lists all users who have logged in for the first time and are active. + +- ([#32744](https://github.com/RocketChat/Rocket.Chat/pull/32744)) Added account setting `Accounts_Default_User_Preferences_sidebarSectionsOrder` to allow users to reorganize sidebar sections + +- ([#32820](https://github.com/RocketChat/Rocket.Chat/pull/32820)) Added a new setting `Livechat_transcript_send_always` that allows admins to decide if email transcript should be sent all the times when a conversation is closed. This setting bypasses agent's preferences. For this setting to work, `Livechat_enable_transcript` should be off, meaning that visitors will no longer receive the option to decide if they want a transcript or not. + +- ([#32724](https://github.com/RocketChat/Rocket.Chat/pull/32724)) Extended apps-engine events for users leaving a room to also fire when being removed by another user. Also added the triggering user's information to the event's context payload. + +- ([#32777](https://github.com/RocketChat/Rocket.Chat/pull/32777)) Added handling of attachments in Omnichannel email transcripts. Earlier attachments were being skipped and were being shown as empty space, now it should render the image attachments and should show relevant error message for unsupported attachments. + +- ([#32800](https://github.com/RocketChat/Rocket.Chat/pull/32800)) Added the ability to filter chats by `queued` on the Current Chats Omnichannel page + +### Patch Changes + +- ([#32679](https://github.com/RocketChat/Rocket.Chat/pull/32679)) Fix validations from "UiKit" modal component + +- ([#32730](https://github.com/RocketChat/Rocket.Chat/pull/32730)) Fixed issue in Marketplace that caused a subscription app to show incorrect modals when subscribing + +- ([#32628](https://github.com/RocketChat/Rocket.Chat/pull/32628)) Fixed SAML users' full names being updated on login regardless of the "Overwrite user fullname (use idp attribute)" setting + +- ([#32692](https://github.com/RocketChat/Rocket.Chat/pull/32692)) Fixed an issue that caused the widget to set the wrong department when using the setDepartment Livechat api endpoint in conjunction with a Livechat Trigger + +- ([#32527](https://github.com/RocketChat/Rocket.Chat/pull/32527)) Fixed an inconsistent evaluation of the `Accounts_LoginExpiration` setting over the codebase. In some places, it was being used as milliseconds while in others as days. Invalid values produced different results. A helper function was created to centralize the setting validation and the proper value being returned to avoid edge cases. + Negative values may be saved on the settings UI panel but the code will interpret any negative, NaN or 0 value to the default expiration which is 90 days. +- ([#32626](https://github.com/RocketChat/Rocket.Chat/pull/32626)) livechat `setDepartment` livechat api fixes: + - Changing department didn't reflect on the registration form in real time + - Changing the department mid conversation didn't transfer the chat + - Depending on the state of the department, it couldn't be set as default +- ([#32810](https://github.com/RocketChat/Rocket.Chat/pull/32810)) Fixed issue where bad word filtering was not working in the UI for messages + +- ([#32707](https://github.com/RocketChat/Rocket.Chat/pull/32707)) Fixed issue with livechat agents not being able to leave omnichannel rooms if joining after a room has been closed by the visitor (due to race conditions) + +- ([#32837](https://github.com/RocketChat/Rocket.Chat/pull/32837)) Fixed an issue where non-encrypted attachments were not being downloaded + +- ([#32861](https://github.com/RocketChat/Rocket.Chat/pull/32861)) fixed the contextual bar closing when editing thread messages instead of cancelling the message edit + +- ([#32713](https://github.com/RocketChat/Rocket.Chat/pull/32713)) Fixed the disappearance of some settings after navigation under network latency. + +- ([#32592](https://github.com/RocketChat/Rocket.Chat/pull/32592)) Fixes Missing line breaks on Omnichannel Room Info Panel + +- ([#32807](https://github.com/RocketChat/Rocket.Chat/pull/32807)) Fixed web client crashing on Firefox private window. Firefox disables access to service workers inside private windows. Rocket.Chat needs service workers to process E2EE encrypted files on rooms. These types of files won't be available inside private windows, but the rest of E2EE encrypted features should work normally + +- ([#32864](https://github.com/RocketChat/Rocket.Chat/pull/32864)) fixed an issue in the "Create discussion" form, that would have the "Create" action button disabled even though the form is prefilled when opening it from the message action + +- ([#32691](https://github.com/RocketChat/Rocket.Chat/pull/32691)) Removed 'Hide' option in the room menu for Omnichannel conversations. + +- ([#32445](https://github.com/RocketChat/Rocket.Chat/pull/32445)) Fixed LDAP rooms, teams and roles syncs not being triggered on login even when the "Update User Data on Login" setting is enabled + +- ([#32328](https://github.com/RocketChat/Rocket.Chat/pull/32328)) Allow customFields on livechat creation bridge + +- ([#32803](https://github.com/RocketChat/Rocket.Chat/pull/32803)) Fixed "Copy link" message action enabled in Starred and Pinned list for End to End Encrypted channels, this action is disabled now + +- ([#32769](https://github.com/RocketChat/Rocket.Chat/pull/32769)) Fixed issue that caused unintentional clicks when scrolling the channels sidebar on safari/chrome in iOS + +- ([#32857](https://github.com/RocketChat/Rocket.Chat/pull/32857)) Fixed some anomalies related to disabled E2EE rooms. Earlier there are some weird issues with disabled E2EE rooms, this PR fixes these anomalies. + +- ([#32765](https://github.com/RocketChat/Rocket.Chat/pull/32765)) Fixed an issue that prevented the option to start a discussion from being shown on the message actions + +- ([#32671](https://github.com/RocketChat/Rocket.Chat/pull/32671)) Fix show correct user roles after updating user roles on admin edit user panel. + +- ([#32482](https://github.com/RocketChat/Rocket.Chat/pull/32482)) Fixed an issue with blocked login when dismissed 2FA modal by clicking outside of it or pressing the escape key + +- ([#32804](https://github.com/RocketChat/Rocket.Chat/pull/32804)) Fixes an issue not displaying all groups in settings list + +- ([#32815](https://github.com/RocketChat/Rocket.Chat/pull/32815)) Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +- ([#32632](https://github.com/RocketChat/Rocket.Chat/pull/32632)) Improving UX by change the position of room info actions buttons and menu order to avoid missclick in destructive actions. + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Reduced time on generation of PDF transcripts. Earlier Rocket.Chat was fetching the required translations everytime a PDF transcript was requested, this process was async and was being unnecessarily being performed on every pdf transcript request. This PR improves this and now the translations are loaded at the start and kept in memory to process further pdf transcripts requests. This reduces the time of asynchronously fetching translations again and again. + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [88e5219bd2, b4bbcbfc9a, 8fc6ca8b4e, 15664127be, 25da5280a5, 1b7b1161cf, 439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 3ffe4a2944, 3b4b19cfc5, 4e8aa575a6, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/fuselage-ui-kit@9.0.0-rc.0 + - @rocket.chat/i18n@0.6.0-rc.0 + - @rocket.chat/tools@0.2.2-rc.0 + - @rocket.chat/web-ui-registration@9.0.0-rc.0 + - @rocket.chat/ui-client@9.0.0-rc.0 + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/omnichannel-services@0.3.0-rc.0 + - @rocket.chat/pdf-worker@0.2.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/ui-video-conf@9.0.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/ui-contexts@9.0.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/ui-kit@0.36.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 + - @rocket.chat/apps@0.1.2-rc.0 + - @rocket.chat/presence@0.2.2-rc.0 + - @rocket.chat/gazzodown@9.0.0-rc.0 + - @rocket.chat/api-client@0.2.2-rc.0 + - @rocket.chat/license@0.2.2-rc.0 + - @rocket.chat/cron@0.1.2-rc.0 + - @rocket.chat/ui-theming@0.2.0 + - @rocket.chat/ui-avatar@5.0.0-rc.0 + - @rocket.chat/instance-status@0.1.2-rc.0 + - @rocket.chat/server-cloud-communication@0.0.2 + +## 6.10.2 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32950](https://github.com/RocketChat/Rocket.Chat/pull/32950) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixed a crash on web client due to service workers not being available, this can happen in multiple scenarios like on Firefox's private window or if the connection is not secure (non-HTTPS), [see more details](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). + + Rocket.Chat needs service workers to process E2EE encrypted files on rooms. These types of files won't be available inside private windows, but the rest of E2EE encrypted features should work normally + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/fuselage-ui-kit@8.0.2 + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/presence@0.2.2 + - @rocket.chat/apps@0.1.2 + - @rocket.chat/omnichannel-services@0.2.2 + - @rocket.chat/api-client@0.2.2 + - @rocket.chat/license@0.2.2 + - @rocket.chat/pdf-worker@0.1.2 + - @rocket.chat/cron@0.1.2 + - @rocket.chat/gazzodown@8.0.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/ui-contexts@8.0.2 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/models@0.1.2 + - @rocket.chat/ui-theming@0.2.0 + - @rocket.chat/ui-avatar@4.0.2 + - @rocket.chat/ui-client@8.0.2 + - @rocket.chat/ui-video-conf@8.0.2 + - @rocket.chat/web-ui-registration@8.0.2 + - @rocket.chat/instance-status@0.1.2 +
+ ## 6.10.1 ### Patch Changes diff --git a/apps/meteor/app/api/server/v1/teams.ts b/apps/meteor/app/api/server/v1/teams.ts index 4ea8f2a48f38..f64f8c820575 100644 --- a/apps/meteor/app/api/server/v1/teams.ts +++ b/apps/meteor/app/api/server/v1/teams.ts @@ -1,6 +1,6 @@ import { Team } from '@rocket.chat/core-services'; import type { ITeam, UserStatus } from '@rocket.chat/core-typings'; -import { TEAM_TYPE } from '@rocket.chat/core-typings'; +import { TEAM_TYPE, isValidSidepanel } from '@rocket.chat/core-typings'; import { Users, Rooms } from '@rocket.chat/models'; import { isTeamsConvertToChannelProps, @@ -85,7 +85,11 @@ API.v1.addRoute( }), ); - const { name, type, members, room, owner } = this.bodyParams; + const { name, type, members, room, owner, sidepanel } = this.bodyParams; + + if (sidepanel?.items && !isValidSidepanel(sidepanel)) { + throw new Error('error-invalid-sidepanel'); + } const team = await Team.create(this.userId, { team: { @@ -95,6 +99,7 @@ API.v1.addRoute( room, members, owner, + sidepanel, }); return API.v1.success({ team }); diff --git a/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.ts b/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.ts index e3f45daa5b18..44ad253d83ef 100644 --- a/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.ts +++ b/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.ts @@ -1,6 +1,6 @@ import { Team } from '@rocket.chat/core-services'; import type { IRoom, IRoomWithRetentionPolicy, IUser, MessageTypesValues } from '@rocket.chat/core-typings'; -import { TEAM_TYPE } from '@rocket.chat/core-typings'; +import { TEAM_TYPE, isValidSidepanel } from '@rocket.chat/core-typings'; import type { ServerMethods } from '@rocket.chat/ddp-client'; import { Rooms, Users } from '@rocket.chat/models'; import { Match } from 'meteor/check'; @@ -49,6 +49,7 @@ type RoomSettings = { favorite: boolean; defaultValue: boolean; }; + sidepanel?: IRoom['sidepanel']; }; type RoomSettingsValidators = { @@ -80,6 +81,24 @@ const validators: RoomSettingsValidators = { }); } }, + async sidepanel({ room, userId, value }) { + if (!room.teamMain) { + throw new Meteor.Error('error-action-not-allowed', 'Invalid room', { + method: 'saveRoomSettings', + }); + } + + if (!(await hasPermissionAsync(userId, 'edit-team', room._id))) { + throw new Meteor.Error('error-action-not-allowed', 'You do not have permission to change sidepanel items', { + method: 'saveRoomSettings', + }); + } + + if (!isValidSidepanel(value)) { + throw new Meteor.Error('error-invalid-sidepanel'); + } + }, + async roomType({ userId, room, value }) { if (value === room.t) { return; @@ -213,6 +232,11 @@ const settingSavers: RoomSettingsSavers = { await saveRoomTopic(rid, value, user); } }, + async sidepanel({ value, rid, room }) { + if (JSON.stringify(value) !== JSON.stringify(room.sidepanel)) { + await Rooms.setSidepanelById(rid, value); + } + }, async roomAnnouncement({ value, room, rid, user }) { if (!value && !room.announcement) { return; @@ -339,6 +363,7 @@ const fields: (keyof RoomSettings)[] = [ 'retentionOverrideGlobal', 'encrypted', 'favorite', + 'sidepanel', ]; const validate = ( diff --git a/apps/meteor/app/lib/server/functions/createRoom.ts b/apps/meteor/app/lib/server/functions/createRoom.ts index 19e5fb2f9489..183cb789051f 100644 --- a/apps/meteor/app/lib/server/functions/createRoom.ts +++ b/apps/meteor/app/lib/server/functions/createRoom.ts @@ -112,6 +112,7 @@ export const createRoom = async ( readOnly?: boolean, roomExtraData?: Partial, options?: ICreateRoomParams['options'], + sidepanel?: ICreateRoomParams['sidepanel'], ): Promise< ICreatedRoom & { rid: string; @@ -187,6 +188,7 @@ export const createRoom = async ( }, ts: now, ro: readOnly === true, + sidepanel, }; if (teamId) { diff --git a/apps/meteor/app/livechat/server/hooks/afterSaveOmnichannelMessage.ts b/apps/meteor/app/livechat/server/hooks/afterSaveOmnichannelMessage.ts new file mode 100644 index 000000000000..372704d339bb --- /dev/null +++ b/apps/meteor/app/livechat/server/hooks/afterSaveOmnichannelMessage.ts @@ -0,0 +1,24 @@ +import { isOmnichannelRoom } from '@rocket.chat/core-typings'; +import { LivechatRooms } from '@rocket.chat/models'; + +import { callbacks } from '../../../../lib/callbacks'; + +callbacks.add( + 'afterSaveMessage', + async (message, room) => { + if (!isOmnichannelRoom(room)) { + return message; + } + + const updater = LivechatRooms.getUpdater(); + const result = await callbacks.run('afterOmnichannelSaveMessage', message, { room, roomUpdater: updater }); + + if (updater.hasChanges()) { + await updater.persist({ _id: room._id }); + } + + return result; + }, + callbacks.priority.MEDIUM, + 'after-omnichannel-save-message', +); diff --git a/apps/meteor/app/livechat/server/hooks/leadCapture.ts b/apps/meteor/app/livechat/server/hooks/leadCapture.ts index 4b987c00c02e..6a3826b8ba11 100644 --- a/apps/meteor/app/livechat/server/hooks/leadCapture.ts +++ b/apps/meteor/app/livechat/server/hooks/leadCapture.ts @@ -1,5 +1,5 @@ import type { IMessage, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { isEditedMessage, isOmnichannelRoom } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatVisitors } from '@rocket.chat/models'; import { callbacks } from '../../../../lib/callbacks'; @@ -31,12 +31,8 @@ function validateMessage(message: IMessage, room: IOmnichannelRoom) { } callbacks.add( - 'afterSaveMessage', - async (message, room) => { - if (!isOmnichannelRoom(room)) { - return message; - } - + 'afterOmnichannelSaveMessage', + async (message, { room }) => { if (!validateMessage(message, room)) { return message; } diff --git a/apps/meteor/app/livechat/server/hooks/markRoomNotResponded.ts b/apps/meteor/app/livechat/server/hooks/markRoomNotResponded.ts index f0bfb8574e6a..23131cee60a2 100644 --- a/apps/meteor/app/livechat/server/hooks/markRoomNotResponded.ts +++ b/apps/meteor/app/livechat/server/hooks/markRoomNotResponded.ts @@ -1,15 +1,11 @@ -import { isOmnichannelRoom, isEditedMessage } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatRooms } from '@rocket.chat/models'; import { callbacks } from '../../../../lib/callbacks'; callbacks.add( - 'afterSaveMessage', - async (message, room) => { - if (!isOmnichannelRoom(room)) { - return message; - } - + 'afterOmnichannelSaveMessage', + async (message, { room }) => { // skips this callback if the message was edited if (!message || isEditedMessage(message)) { return message; @@ -21,7 +17,7 @@ callbacks.add( } // check if room is yet awaiting for response - if (typeof room.t !== 'undefined' && room.t === 'l' && room.waitingResponse) { + if (room.waitingResponse) { return message; } diff --git a/apps/meteor/app/livechat/server/hooks/markRoomResponded.ts b/apps/meteor/app/livechat/server/hooks/markRoomResponded.ts index 48ec985aa42c..3e9164554d47 100644 --- a/apps/meteor/app/livechat/server/hooks/markRoomResponded.ts +++ b/apps/meteor/app/livechat/server/hooks/markRoomResponded.ts @@ -1,5 +1,5 @@ import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { isOmnichannelRoom, isEditedMessage } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatRooms, LivechatVisitors, LivechatInquiry } from '@rocket.chat/models'; import moment from 'moment'; @@ -7,12 +7,8 @@ import { callbacks } from '../../../../lib/callbacks'; import { notifyOnLivechatInquiryChanged } from '../../../lib/server/lib/notifyListener'; callbacks.add( - 'afterSaveMessage', - async (message, room) => { - if (!isOmnichannelRoom(room)) { - return message; - } - + 'afterOmnichannelSaveMessage', + async (message, { room }) => { // skips this callback if the message was edited if (!message || isEditedMessage(message)) { return message; diff --git a/apps/meteor/app/livechat/server/hooks/saveAnalyticsData.ts b/apps/meteor/app/livechat/server/hooks/saveAnalyticsData.ts index e92e6b4d940b..fef6ad0936f8 100644 --- a/apps/meteor/app/livechat/server/hooks/saveAnalyticsData.ts +++ b/apps/meteor/app/livechat/server/hooks/saveAnalyticsData.ts @@ -1,84 +1,78 @@ -import { isEditedMessage, isOmnichannelRoom } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; +import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; import { LivechatRooms } from '@rocket.chat/models'; import { callbacks } from '../../../../lib/callbacks'; import { normalizeMessageFileUpload } from '../../../utils/server/functions/normalizeMessageFileUpload'; -callbacks.add( - 'afterSaveMessage', - async (message, room) => { - // check if room is livechat - if (!isOmnichannelRoom(room)) { - return message; - } - - // skips this callback if the message was edited - if (!message || isEditedMessage(message)) { - return message; - } - - // if the message has a token, it was sent by the visitor - if (message.token) { - // When visitor sends a mesage, most metrics wont be calculated/served. - // But, v.lq (last query) will be updated to the message time. This has to be done - // As not doing it will cause the metrics to be crazy and not have real values. - await LivechatRooms.saveAnalyticsDataByRoomId(room, message); - return message; - } +const getMetricValue = (metric: T | undefined, defaultValue: T): T => metric ?? defaultValue; +const calculateTimeDifference = (startTime: T, now: Date): number => + (now.getTime() - new Date(startTime).getTime()) / 1000; +const calculateAvgResponseTime = (totalResponseTime: number, newResponseTime: number, responseCount: number) => + (totalResponseTime + newResponseTime) / (responseCount + 1); - if (message.file) { - message = { ...(await normalizeMessageFileUpload(message)), ...{ _updatedAt: message._updatedAt } }; - } +const getFirstResponseAnalytics = ( + visitorLastQuery: Date, + agentJoinTime: Date, + totalResponseTime: number, + responseCount: number, + now: Date, +) => { + const responseTime = calculateTimeDifference(visitorLastQuery, now); + const reactionTime = calculateTimeDifference(agentJoinTime, now); + const avgResponseTime = calculateAvgResponseTime(totalResponseTime, responseTime, responseCount); - const now = new Date(); - let analyticsData; + return { + firstResponseDate: now, + firstResponseTime: responseTime, + responseTime, + avgResponseTime, + firstReactionDate: now, + firstReactionTime: reactionTime, + reactionTime, + }; +}; - const visitorLastQuery = room.metrics?.v ? room.metrics.v.lq : room.ts; - const agentLastReply = room.metrics?.servedBy ? room.metrics.servedBy.lr : room.ts; - const agentJoinTime = room.servedBy?.ts ? room.servedBy.ts : room.ts; +const getSubsequentResponseAnalytics = (visitorLastQuery: Date, totalResponseTime: number, responseCount: number, now: Date) => { + const responseTime = calculateTimeDifference(visitorLastQuery, now); + const avgResponseTime = calculateAvgResponseTime(totalResponseTime, responseTime, responseCount); - const isResponseTt = room.metrics?.response?.tt; - const isResponseTotal = room.metrics?.response?.total; + return { + responseTime, + avgResponseTime, + reactionTime: responseTime, + }; +}; - if (agentLastReply === room.ts) { - // first response - const firstResponseDate = now; - const firstResponseTime = (now.getTime() - new Date(visitorLastQuery).getTime()) / 1000; - const responseTime = (now.getTime() - new Date(visitorLastQuery).getTime()) / 1000; - const avgResponseTime = - ((isResponseTt ? room.metrics?.response?.tt : 0) || 0 + responseTime) / - ((isResponseTotal ? room.metrics?.response?.total : 0) || 0 + 1); +const getAnalyticsData = (room: IOmnichannelRoom, now: Date): Record | undefined => { + const visitorLastQuery = getMetricValue(room.metrics?.v?.lq, room.ts); + const agentLastReply = getMetricValue(room.metrics?.servedBy?.lr, room.ts); + const agentJoinTime = getMetricValue(room.servedBy?.ts, room.ts); + const totalResponseTime = getMetricValue(room.metrics?.response?.tt, 0); + const responseCount = getMetricValue(room.metrics?.response?.total, 0); - const firstReactionDate = now; - const firstReactionTime = (now.getTime() - new Date(agentJoinTime).getTime()) / 1000; - const reactionTime = (now.getTime() - new Date(agentJoinTime).getTime()) / 1000; + if (agentLastReply === room.ts) { + return getFirstResponseAnalytics(visitorLastQuery, agentJoinTime, totalResponseTime, responseCount, now); + } + if (visitorLastQuery > agentLastReply) { + return getSubsequentResponseAnalytics(visitorLastQuery, totalResponseTime, responseCount, now); + } +}; - analyticsData = { - firstResponseDate, - firstResponseTime, - responseTime, - avgResponseTime, - firstReactionDate, - firstReactionTime, - reactionTime, - }; - } else if (visitorLastQuery > agentLastReply) { - // response, not first - const responseTime = (now.getTime() - new Date(visitorLastQuery).getTime()) / 1000; - const avgResponseTime = - ((isResponseTt ? room.metrics?.response?.tt : 0) || 0 + responseTime) / - ((isResponseTotal ? room.metrics?.response?.total : 0) || 0 + 1); +callbacks.add( + 'afterOmnichannelSaveMessage', + async (message, { room, roomUpdater }) => { + if (!message || isEditedMessage(message)) { + return message; + } - const reactionTime = (now.getTime() - new Date(visitorLastQuery).getTime()) / 1000; + if (message.file) { + message = { ...(await normalizeMessageFileUpload(message)), ...{ _updatedAt: message._updatedAt } }; + } - analyticsData = { - responseTime, - avgResponseTime, - reactionTime, - }; - } // ignore, its continuing response + const analyticsData = getAnalyticsData(room, new Date()); + await LivechatRooms.getAnalyticsUpdateQueryByRoomId(room, message, analyticsData, roomUpdater); - await LivechatRooms.saveAnalyticsDataByRoomId(room, message, analyticsData); return message; }, callbacks.priority.LOW, diff --git a/apps/meteor/app/livechat/server/hooks/saveLastMessageToInquiry.ts b/apps/meteor/app/livechat/server/hooks/saveLastMessageToInquiry.ts index e65f1d99b884..1925e135a562 100644 --- a/apps/meteor/app/livechat/server/hooks/saveLastMessageToInquiry.ts +++ b/apps/meteor/app/livechat/server/hooks/saveLastMessageToInquiry.ts @@ -1,4 +1,4 @@ -import { isOmnichannelRoom, isEditedMessage } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatInquiry } from '@rocket.chat/models'; import { callbacks } from '../../../../lib/callbacks'; @@ -7,9 +7,9 @@ import { settings } from '../../../settings/server'; import { RoutingManager } from '../lib/RoutingManager'; callbacks.add( - 'afterSaveMessage', - async (message, room) => { - if (!isOmnichannelRoom(room) || isEditedMessage(message) || message.t) { + 'afterOmnichannelSaveMessage', + async (message, { room }) => { + if (isEditedMessage(message) || message.t) { return message; } diff --git a/apps/meteor/app/livechat/server/hooks/saveLastVisitorMessageTs.ts b/apps/meteor/app/livechat/server/hooks/saveLastVisitorMessageTs.ts index 4bc28c3990ba..03dcfdbf81bd 100644 --- a/apps/meteor/app/livechat/server/hooks/saveLastVisitorMessageTs.ts +++ b/apps/meteor/app/livechat/server/hooks/saveLastVisitorMessageTs.ts @@ -1,22 +1,18 @@ -import { isOmnichannelRoom } from '@rocket.chat/core-typings'; +import { isMessageFromVisitor } from '@rocket.chat/core-typings'; import { LivechatRooms } from '@rocket.chat/models'; import { callbacks } from '../../../../lib/callbacks'; callbacks.add( - 'afterSaveMessage', - async (message, room) => { - if (!(isOmnichannelRoom(room) && room.v.token)) { - return message; - } - if (message.t) { - return message; - } - if (!message.token) { + 'afterOmnichannelSaveMessage', + async (message, { roomUpdater }) => { + if (message.t || !isMessageFromVisitor(message)) { return message; } - await LivechatRooms.setVisitorLastMessageTimestampByRoomId(room._id, message.ts); + await LivechatRooms.getVisitorLastMessageTsUpdateQueryByRoomId(message.ts, roomUpdater); + + return message; }, callbacks.priority.HIGH, 'save-last-visitor-message-timestamp', diff --git a/apps/meteor/app/livechat/server/hooks/sendToCRM.ts b/apps/meteor/app/livechat/server/hooks/sendToCRM.ts index 24e1d685a0e6..b3624bd3ecf6 100644 --- a/apps/meteor/app/livechat/server/hooks/sendToCRM.ts +++ b/apps/meteor/app/livechat/server/hooks/sendToCRM.ts @@ -261,13 +261,8 @@ callbacks.add( ); callbacks.add( - 'afterSaveMessage', - async (message, room) => { - // only call webhook if it is a livechat room - if (!isOmnichannelRoom(room) || !room?.v?.token) { - return message; - } - + 'afterOmnichannelSaveMessage', + async (message, { room }) => { // if the message has a token, it was sent from the visitor // if not, it was sent from the agent if (message.token && !settings.get('Livechat_webhook_on_visitor_message')) { diff --git a/apps/meteor/app/livechat/server/index.ts b/apps/meteor/app/livechat/server/index.ts index fc96f2a921a9..9a1f40238df5 100644 --- a/apps/meteor/app/livechat/server/index.ts +++ b/apps/meteor/app/livechat/server/index.ts @@ -16,6 +16,7 @@ import './hooks/saveContactLastChat'; import './hooks/saveLastMessageToInquiry'; import './hooks/afterUserActions'; import './hooks/afterAgentRemoved'; +import './hooks/afterSaveOmnichannelMessage'; import './methods/addAgent'; import './methods/addManager'; import './methods/changeLivechatStatus'; diff --git a/apps/meteor/app/livechat/server/lib/QueueManager.ts b/apps/meteor/app/livechat/server/lib/QueueManager.ts index 5ae03e0ee03b..2075a5e9af97 100644 --- a/apps/meteor/app/livechat/server/lib/QueueManager.ts +++ b/apps/meteor/app/livechat/server/lib/QueueManager.ts @@ -15,6 +15,7 @@ import { Random } from '@rocket.chat/random'; import { Match, check } from 'meteor/check'; import { Meteor } from 'meteor/meteor'; +import { dispatchInquiryPosition } from '../../../../ee/app/livechat-enterprise/server/lib/Helper'; import { callbacks } from '../../../../lib/callbacks'; import { sendNotification } from '../../../lib/server'; import { @@ -27,6 +28,7 @@ import { i18n } from '../../../utils/lib/i18n'; import { createLivechatRoom, createLivechatInquiry, allowAgentSkipQueue } from './Helper'; import { Livechat } from './LivechatTyped'; import { RoutingManager } from './RoutingManager'; +import { getInquirySortMechanismSetting } from './settings'; const logger = new Logger('QueueManager'); @@ -259,6 +261,18 @@ export class QueueManager { throw new Error('room-not-found'); } + if (!newRoom.servedBy && settings.get('Omnichannel_calculate_dispatch_service_queue_statistics')) { + const [inq] = await LivechatInquiry.getCurrentSortedQueueAsync({ + inquiryId: inquiry._id, + department, + queueSortBy: getInquirySortMechanismSetting(), + }); + + if (inq) { + void dispatchInquiryPosition(inq); + } + } + return newRoom; } diff --git a/apps/meteor/app/livechat/server/sendMessageBySMS.ts b/apps/meteor/app/livechat/server/sendMessageBySMS.ts index 2557fcdeb83d..c7f88646158b 100644 --- a/apps/meteor/app/livechat/server/sendMessageBySMS.ts +++ b/apps/meteor/app/livechat/server/sendMessageBySMS.ts @@ -1,5 +1,5 @@ import { OmnichannelIntegration } from '@rocket.chat/core-services'; -import { isEditedMessage, isOmnichannelRoom } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatVisitors } from '@rocket.chat/models'; import { callbacks } from '../../../lib/callbacks'; @@ -8,8 +8,8 @@ import { normalizeMessageFileUpload } from '../../utils/server/functions/normali import { callbackLogger } from './lib/logger'; callbacks.add( - 'afterSaveMessage', - async (message, room) => { + 'afterOmnichannelSaveMessage', + async (message, { room }) => { // skips this callback if the message was edited if (isEditedMessage(message)) { return message; @@ -20,7 +20,7 @@ callbacks.add( } // only send the sms by SMS if it is a livechat room with SMS set to true - if (!(isOmnichannelRoom(room) && room.sms && room.v && room.v.token)) { + if (!(room.sms && room.v && room.v.token)) { return message; } diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts index 5c16716720b0..bb9567260337 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts @@ -230,12 +230,10 @@ export const addSettings = async function (name: string): Promise { await this.add(`SAML_Custom_${name}_button_label_color`, '#FFFFFF', { type: 'string', i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Color', - alert: 'OAuth_button_colors_alert', }); await this.add(`SAML_Custom_${name}_button_color`, '#1d74f5', { type: 'string', i18nLabel: 'Accounts_OAuth_Custom_Button_Color', - alert: 'OAuth_button_colors_alert', }); }); diff --git a/apps/meteor/client/lib/chats/flows/sendMessage.ts b/apps/meteor/client/lib/chats/flows/sendMessage.ts index dbac8d808e4f..e025730682d5 100644 --- a/apps/meteor/client/lib/chats/flows/sendMessage.ts +++ b/apps/meteor/client/lib/chats/flows/sendMessage.ts @@ -57,7 +57,6 @@ export const sendMessage = async ( } chat.readStateManager.clearUnreadMark(); - await chat.readStateManager.debouncedMarkAsRead(); text = text.trim(); diff --git a/apps/meteor/client/views/admin/settings/GroupPage.tsx b/apps/meteor/client/views/admin/settings/GroupPage.tsx index a68daff979c9..5946805a497e 100644 --- a/apps/meteor/client/views/admin/settings/GroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/GroupPage.tsx @@ -1,8 +1,8 @@ import type { ISetting, ISettingColor } from '@rocket.chat/core-typings'; import { Accordion, Box, Button, ButtonGroup } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; +import { useEffectEvent } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; -import { useToastMessageDispatch, useSettingsDispatch, useSettings, useTranslation, useRoute } from '@rocket.chat/ui-contexts'; +import { useToastMessageDispatch, useSettingsDispatch, useSettings, useTranslation } from '@rocket.chat/ui-contexts'; import type { ReactNode, FormEvent, MouseEvent } from 'react'; import React, { useMemo, memo } from 'react'; @@ -14,6 +14,7 @@ import GroupPageSkeleton from './GroupPageSkeleton'; type GroupPageProps = { children: ReactNode; headerButtons?: ReactNode; + onClickBack?: () => void; _id: string; i18nLabel: string; i18nDescription?: string; @@ -24,6 +25,7 @@ type GroupPageProps = { const GroupPage = ({ children = undefined, headerButtons = undefined, + onClickBack, _id, i18nLabel, i18nDescription = undefined, @@ -31,7 +33,6 @@ const GroupPage = ({ isCustom = false, }: GroupPageProps) => { const t = useTranslation(); - const router = useRoute('admin-settings'); const dispatch = useSettingsDispatch(); const dispatchToastMessage = useToastMessageDispatch(); @@ -56,7 +57,7 @@ const GroupPage = ({ const isColorSetting = (setting: ISetting): setting is ISettingColor => setting.type === 'color'; - const save = useMutableCallback(async () => { + const save = useEffectEvent(async () => { const changes = changedEditableSettings.map((setting) => { if (isColorSetting(setting)) { return { @@ -86,7 +87,7 @@ const GroupPage = ({ const dispatchToEditing = useEditableSettingsDispatch(); - const cancel = useMutableCallback(() => { + const cancel = useEffectEvent(() => { const settingsToDispatch = changedEditableSettings .map(({ _id }) => originalSettings.find((setting) => setting._id === _id)) .map((setting) => { @@ -118,8 +119,6 @@ const GroupPage = ({ save(); }; - const handleBack = useMutableCallback(() => router.push({})); - const handleCancelClick = (event: MouseEvent): void => { event.preventDefault(); cancel(); @@ -139,7 +138,7 @@ const GroupPage = ({ return ( - + {headerButtons} {tabs} diff --git a/apps/meteor/client/views/admin/settings/GroupSelector.tsx b/apps/meteor/client/views/admin/settings/GroupSelector.tsx index defe2a0a9a45..6d6d90a566eb 100644 --- a/apps/meteor/client/views/admin/settings/GroupSelector.tsx +++ b/apps/meteor/client/views/admin/settings/GroupSelector.tsx @@ -11,9 +11,10 @@ import VoipGroupPage from './groups/VoipGroupPage'; type GroupSelectorProps = { groupId: GroupId; + onClickBack?: () => void; }; -const GroupSelector = ({ groupId }: GroupSelectorProps) => { +const GroupSelector = ({ groupId, onClickBack }: GroupSelectorProps) => { const group = useSettingStructure(groupId); if (!group) { @@ -21,22 +22,22 @@ const GroupSelector = ({ groupId }: GroupSelectorProps) => { } if (groupId === 'Assets') { - return ; + return ; } if (groupId === 'OAuth') { - return ; + return ; } if (groupId === 'LDAP') { - return ; + return ; } if (groupId === 'Call_Center') { - return ; + return ; } - return ; + return ; }; export default GroupSelector; diff --git a/apps/meteor/client/views/admin/settings/SettingsRoute.tsx b/apps/meteor/client/views/admin/settings/SettingsRoute.tsx index d0c0c0003778..c03aced8b5a0 100644 --- a/apps/meteor/client/views/admin/settings/SettingsRoute.tsx +++ b/apps/meteor/client/views/admin/settings/SettingsRoute.tsx @@ -1,4 +1,4 @@ -import { useRouteParameter, useIsPrivilegedSettingsContext } from '@rocket.chat/ui-contexts'; +import { useRouteParameter, useIsPrivilegedSettingsContext, useRouter } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; import React from 'react'; @@ -10,6 +10,7 @@ import SettingsPage from './SettingsPage'; export const SettingsRoute = (): ReactElement => { const hasPermission = useIsPrivilegedSettingsContext(); const groupId = useRouteParameter('group'); + const router = useRouter(); if (!hasPermission) { return ; @@ -21,7 +22,7 @@ export const SettingsRoute = (): ReactElement => { return ( - + router.navigate('/admin/settings')} /> ); }; diff --git a/apps/meteor/client/views/admin/settings/groups/AssetsGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/AssetsGroupPage.tsx index 6d4bb90e3d12..a5935eb47bc8 100644 --- a/apps/meteor/client/views/admin/settings/groups/AssetsGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/AssetsGroupPage.tsx @@ -6,14 +6,16 @@ import { useEditableSettingsGroupSections } from '../../EditableSettingsContext' import GroupPage from '../GroupPage'; import Section from '../Section'; -type AssetsGroupPageProps = ISetting; +type AssetsGroupPageProps = ISetting & { + onClickBack?: () => void; +}; -function AssetsGroupPage({ _id, ...group }: AssetsGroupPageProps): ReactElement { +function AssetsGroupPage({ _id, onClickBack, ...group }: AssetsGroupPageProps): ReactElement { const sections = useEditableSettingsGroupSections(_id); const solo = sections.length === 1; return ( - + {sections.map((sectionName) => (
))} diff --git a/apps/meteor/client/views/admin/settings/groups/GenericGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/GenericGroupPage.tsx index 6f71ec9c1333..c9148547b955 100644 --- a/apps/meteor/client/views/admin/settings/groups/GenericGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/GenericGroupPage.tsx @@ -6,14 +6,16 @@ import { useEditableSettingsGroupSections } from '../../EditableSettingsContext' import GroupPage from '../GroupPage'; import Section from '../Section'; -type GenericGroupPageProps = ISetting; +type GenericGroupPageProps = ISetting & { + onClickBack?: () => void; +}; -function GenericGroupPage({ _id, ...props }: GenericGroupPageProps): ReactElement { +function GenericGroupPage({ _id, onClickBack, ...props }: GenericGroupPageProps): ReactElement { const sections = useEditableSettingsGroupSections(_id); const solo = sections.length === 1; return ( - + {sections.map((sectionName) => (
))} diff --git a/apps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsx index bea9ccd76222..a497738b9541 100644 --- a/apps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/LDAPGroupPage.tsx @@ -10,7 +10,11 @@ import { useExternalLink } from '../../../../hooks/useExternalLink'; import { useEditableSettings } from '../../EditableSettingsContext'; import TabbedGroupPage from './TabbedGroupPage'; -function LDAPGroupPage({ _id, ...group }: ISetting): JSX.Element { +type LDAPGroupPageProps = ISetting & { + onClickBack?: () => void; +}; + +function LDAPGroupPage({ _id, onClickBack, ...group }: LDAPGroupPageProps) { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const testConnection = useEndpoint('POST', '/v1/ldap.testConnection'); @@ -127,6 +131,7 @@ function LDAPGroupPage({ _id, ...group }: ISetting): JSX.Element { return ( diff --git a/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx index 0bd65a3ad533..713a26935994 100644 --- a/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx @@ -12,9 +12,11 @@ import GroupPage from '../GroupPage'; import Section from '../Section'; import CreateOAuthModal from './CreateOAuthModal'; -type OAuthGroupPageProps = ISetting; +type OAuthGroupPageProps = ISetting & { + onClickBack?: () => void; +}; -function OAuthGroupPage({ _id, ...group }: OAuthGroupPageProps): ReactElement { +function OAuthGroupPage({ _id, onClickBack, ...group }: OAuthGroupPageProps): ReactElement { const sections = useEditableSettingsGroupSections(_id); const solo = sections.length === 1; const t = useTranslation(); @@ -95,6 +97,7 @@ function OAuthGroupPage({ _id, ...group }: OAuthGroupPageProps): ReactElement { diff --git a/apps/meteor/client/views/admin/settings/groups/TabbedGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/TabbedGroupPage.tsx index f3546f13d758..eeecf9cc3800 100644 --- a/apps/meteor/client/views/admin/settings/groups/TabbedGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/TabbedGroupPage.tsx @@ -12,9 +12,10 @@ import GenericGroupPage from './GenericGroupPage'; type TabbedGroupPageProps = ISetting & { headerButtons?: ReactElement; + onClickBack?: () => void; }; -function TabbedGroupPage({ _id, ...props }: TabbedGroupPageProps): JSX.Element { +function TabbedGroupPage({ _id, onClickBack, ...props }: TabbedGroupPageProps): JSX.Element { const t = useTranslation(); const tabs = useEditableSettingsGroupTabs(_id); @@ -25,7 +26,7 @@ function TabbedGroupPage({ _id, ...props }: TabbedGroupPageProps): JSX.Element { const solo = sections.length === 1; if (!tabs.length || (tabs.length === 1 && !tabs[0])) { - return ; + return ; } if (!tab && tabs[0]) { @@ -43,7 +44,7 @@ function TabbedGroupPage({ _id, ...props }: TabbedGroupPageProps): JSX.Element { ); return ( - + {sections.map((sectionName) => (
))} diff --git a/apps/meteor/client/views/admin/settings/groups/VoipGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/VoipGroupPage.tsx index 82b55a152563..3b7c873f2268 100644 --- a/apps/meteor/client/views/admin/settings/groups/VoipGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/VoipGroupPage.tsx @@ -11,7 +11,11 @@ import GroupPage from '../GroupPage'; import Section from '../Section'; import VoipExtensionsPage from './voip/VoipExtensionsPage'; -function VoipGroupPage({ _id, ...group }: ISetting): JSX.Element { +type VoipGroupPageProps = ISetting & { + onClickBack?: () => void; +}; + +function VoipGroupPage({ _id, onClickBack, ...group }: VoipGroupPageProps) { const t = useTranslation(); const voipEnabled = useSetting('VoIP_Enabled'); @@ -46,7 +50,7 @@ function VoipGroupPage({ _id, ...group }: ISetting): JSX.Element { ); return ( - + {tab === 'Extensions' ? ( ExtensionsPageComponent ) : ( diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/resumeOnHold.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/resumeOnHold.ts index 8a04166e1b72..249f988c7684 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/resumeOnHold.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/resumeOnHold.ts @@ -1,6 +1,6 @@ import { OmnichannelEEService } from '@rocket.chat/core-services'; -import type { ILivechatVisitor, IMessage, IOmnichannelRoom, IRoom, IUser } from '@rocket.chat/core-typings'; -import { isEditedMessage, isOmnichannelRoom } from '@rocket.chat/core-typings'; +import type { ILivechatVisitor, IMessage, IOmnichannelRoom, IUser } from '@rocket.chat/core-typings'; +import { isMessageFromVisitor, isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatRooms, LivechatVisitors, Users } from '@rocket.chat/models'; import { callbackLogger } from '../../../../../app/livechat/server/lib/logger'; @@ -16,7 +16,7 @@ const resumeOnHoldCommentAndUser = async (room: IOmnichannelRoom): Promise<{ com projection: { name: 1, username: 1 }, }); if (!visitor) { - callbackLogger.error(`[afterSaveMessage] Visitor Not found for room ${rid} while trying to resume on hold`); + callbackLogger.error(`[afterOmnichannelSaveMessage] Visitor Not found for room ${rid} while trying to resume on hold`); throw new Error('Visitor not found while trying to resume on hold'); } @@ -26,43 +26,46 @@ const resumeOnHoldCommentAndUser = async (room: IOmnichannelRoom): Promise<{ com const resumedBy = await Users.findOneById('rocket.cat'); if (!resumedBy) { - callbackLogger.error(`[afterSaveMessage] User Not found for room ${rid} while trying to resume on hold`); + callbackLogger.error(`[afterOmnichannelSaveMessage] User Not found for room ${rid} while trying to resume on hold`); throw new Error(`User not found while trying to resume on hold`); } return { comment: resumeChatComment, resumedBy }; }; -const handleAfterSaveMessage = async (message: IMessage, room: IRoom) => { - if (isEditedMessage(message) || message.t || !isOmnichannelRoom(room)) { - return message; - } +callbacks.add( + 'afterOmnichannelSaveMessage', + async (message: IMessage, { room }) => { + if (isEditedMessage(message) || message.t) { + return message; + } - const { _id: rid, v: roomVisitor } = room; + const { _id: rid, v: roomVisitor } = room; - if (!roomVisitor?._id) { - return message; - } - - // Need to read the room every time, the room object is not updated - const updatedRoom = await LivechatRooms.findOneById(rid); - if (!updatedRoom) { - return message; - } - - if (message.token && room.onHold) { - callbackLogger.debug(`[afterSaveMessage] Room ${rid} is on hold, resuming it now since visitor sent a message`); + if (!roomVisitor?._id) { + return message; + } - try { - const { comment: resumeChatComment, resumedBy } = await resumeOnHoldCommentAndUser(updatedRoom); - await OmnichannelEEService.resumeRoomOnHold(updatedRoom, resumeChatComment, resumedBy); - } catch (error) { - callbackLogger.error(`[afterSaveMessage] Error while resuming room ${rid} on hold: Error: `, error); + // Need to read the room every time, the room object is not updated + const updatedRoom = await LivechatRooms.findOneById(rid); + if (!updatedRoom) { return message; } - } - return message; -}; + if (isMessageFromVisitor(message) && room.onHold) { + callbackLogger.debug(`[afterOmnichannelSaveMessage] Room ${rid} is on hold, resuming it now since visitor sent a message`); + + try { + const { comment: resumeChatComment, resumedBy } = await resumeOnHoldCommentAndUser(updatedRoom); + await OmnichannelEEService.resumeRoomOnHold(updatedRoom, resumeChatComment, resumedBy); + } catch (error) { + callbackLogger.error(`[afterOmnichannelSaveMessage] Error while resuming room ${rid} on hold: Error: `, error); + return message; + } + } -callbacks.add('afterSaveMessage', handleAfterSaveMessage, callbacks.priority.HIGH, 'livechat-resume-on-hold'); + return message; + }, + callbacks.priority.HIGH, + 'livechat-resume-on-hold', +); diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts index fdf980c311ab..c0f4b1b9da1d 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/scheduleAutoTransfer.ts @@ -1,5 +1,4 @@ -import type { IMessage, IOmnichannelRoom, IRoom } from '@rocket.chat/core-typings'; -import { isOmnichannelRoom } from '@rocket.chat/core-typings'; +import type { IMessage, IOmnichannelRoom } from '@rocket.chat/core-typings'; import type { CloseRoomParams } from '../../../../../app/livechat/server/lib/LivechatTyped'; import { settings } from '../../../../../app/settings/server'; @@ -14,40 +13,6 @@ type LivechatCloseCallbackParams = { let autoTransferTimeout = 0; -const handleAfterSaveMessage = async (message: IMessage, room: IRoom | undefined): Promise => { - if (!room || !isOmnichannelRoom(room)) { - return message; - } - - const { _id: rid, autoTransferredAt, autoTransferOngoing } = room; - const { token, t: messageType } = message; - - if (messageType) { - // ignore system messages - return message; - } - - if (!autoTransferTimeout || autoTransferTimeout <= 0) { - return message; - } - - if (!message || token) { - // ignore messages from visitors - return message; - } - - if (autoTransferredAt) { - return message; - } - - if (!autoTransferOngoing) { - return message; - } - - await AutoTransferChatScheduler.unscheduleRoom(rid); - return message; -}; - const handleAfterCloseRoom = async (params: LivechatCloseCallbackParams): Promise => { const { room } = params; @@ -73,7 +38,7 @@ settings.watch('Livechat_auto_transfer_chat_timeout', (value) => { autoTransferTimeout = value as number; if (!autoTransferTimeout || autoTransferTimeout === 0) { callbacks.remove('livechat.afterTakeInquiry', 'livechat-auto-transfer-job-inquiry'); - callbacks.remove('afterSaveMessage', 'livechat-cancel-auto-transfer-job-after-message'); + callbacks.remove('afterOmnichannelSaveMessage', 'livechat-cancel-auto-transfer-job-after-message'); callbacks.remove('livechat.closeRoom', 'livechat-cancel-auto-transfer-on-close-room'); return; } @@ -98,6 +63,39 @@ settings.watch('Livechat_auto_transfer_chat_timeout', (value) => { callbacks.priority.MEDIUM, 'livechat-auto-transfer-job-inquiry', ); - callbacks.add('afterSaveMessage', handleAfterSaveMessage, callbacks.priority.HIGH, 'livechat-cancel-auto-transfer-job-after-message'); + callbacks.add( + 'afterOmnichannelSaveMessage', + async (message: IMessage, { room }): Promise => { + const { _id: rid, autoTransferredAt, autoTransferOngoing } = room; + const { token, t: messageType } = message; + + if (messageType) { + // ignore system messages + return message; + } + + if (!autoTransferTimeout || autoTransferTimeout <= 0) { + return message; + } + + if (!message || token) { + // ignore messages from visitors + return message; + } + + if (autoTransferredAt) { + return message; + } + + if (!autoTransferOngoing) { + return message; + } + + await AutoTransferChatScheduler.unscheduleRoom(rid); + return message; + }, + callbacks.priority.HIGH, + 'livechat-cancel-auto-transfer-job-after-message', + ); callbacks.add('livechat.closeRoom', handleAfterCloseRoom, callbacks.priority.HIGH, 'livechat-cancel-auto-transfer-on-close-room'); }); diff --git a/apps/meteor/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.ts b/apps/meteor/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.ts index 38238763e0ca..c244022689dc 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.ts @@ -1,5 +1,5 @@ import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { isEditedMessage, isOmnichannelRoom } from '@rocket.chat/core-typings'; +import { isEditedMessage } from '@rocket.chat/core-typings'; import { LivechatRooms } from '@rocket.chat/models'; import moment from 'moment'; @@ -8,12 +8,8 @@ import { callbacks } from '../../../../../lib/callbacks'; import { setPredictedVisitorAbandonmentTime } from '../lib/Helper'; callbacks.add( - 'afterSaveMessage', - async (message, room) => { - if (!isOmnichannelRoom(room)) { - return message; - } - + 'afterOmnichannelSaveMessage', + async (message, { room }) => { if ( !settings.get('Livechat_abandoned_rooms_action') || settings.get('Livechat_abandoned_rooms_action') === 'none' || diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.ts index 08ea48910f02..9d4b413d218a 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.ts @@ -107,15 +107,11 @@ export const dispatchInquiryPosition = async (inquiry: Omit) => { + return setTimeout(() => { void api.broadcast('omnichannel.room', inquiry.rid, { type: 'queueData', data, }); - }; - - return setTimeout(() => { - propagateInquiryPosition(inquiry); }, 1000); }; diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index f53b5ae10ee6..4f5beb9327cb 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,72 @@ # rocketchat-services +## 1.3.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 1.3.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 1.3.0-rc.0 + +### Minor Changes + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + +### Patch Changes + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/ui-kit@0.36.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 + +## 1.2.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 1.2.1 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 4c987885c9c0..b9b1523c0c04 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -1,7 +1,7 @@ { "name": "rocketchat-services", "private": true, - "version": "1.2.1", + "version": "1.3.0-rc.2", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/lib/callbacks.ts b/apps/meteor/lib/callbacks.ts index 02e9162c8330..eb8e032804f7 100644 --- a/apps/meteor/lib/callbacks.ts +++ b/apps/meteor/lib/callbacks.ts @@ -23,6 +23,7 @@ import type { MessageMention, OmnichannelSourceType, } from '@rocket.chat/core-typings'; +import type { Updater } from '@rocket.chat/models'; import type { FilterOperators } from 'mongodb'; import type { ILoginAttempt } from '../app/authentication/server/ILoginAttempt'; @@ -50,6 +51,7 @@ interface EventLikeCallbackSignatures { 'afterFileUpload': (params: { user: IUser; room: IRoom; message: IMessage }) => void; 'afterRoomNameChange': (params: { rid: string; name: string; oldName: string }) => void; 'afterSaveMessage': (message: IMessage, room: IRoom, uid?: string) => void; + 'afterOmnichannelSaveMessage': (message: IMessage, constant: { room: IOmnichannelRoom; roomUpdater: Updater }) => void; 'livechat.removeAgentDepartment': (params: { departmentId: ILivechatDepartmentRecord['_id']; agentsId: ILivechatAgent['_id'][] }) => void; 'livechat.saveAgentDepartment': (params: { departmentId: ILivechatDepartmentRecord['_id']; agentsId: ILivechatAgent['_id'][] }) => void; 'livechat.closeRoom': (params: { room: IOmnichannelRoom; options: CloseRoomParams['options'] }) => void; diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 5efb11ece098..5e5c0cc6877e 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -243,10 +243,10 @@ "@rocket.chat/favicon": "workspace:^", "@rocket.chat/forked-matrix-appservice-bridge": "^4.0.2", "@rocket.chat/forked-matrix-bot-sdk": "^0.6.0-beta.3", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-hooks": "^0.33.1", "@rocket.chat/fuselage-polyfills": "~0.31.25", - "@rocket.chat/fuselage-toastbar": "^0.32.0", + "@rocket.chat/fuselage-toastbar": "^0.33.0", "@rocket.chat/fuselage-tokens": "^0.33.1", "@rocket.chat/fuselage-ui-kit": "workspace:^", "@rocket.chat/gazzodown": "workspace:^", diff --git a/apps/meteor/server/lib/oauth/addOAuthService.ts b/apps/meteor/server/lib/oauth/addOAuthService.ts index db84cb467ffc..2a49a23a1f4e 100644 --- a/apps/meteor/server/lib/oauth/addOAuthService.ts +++ b/apps/meteor/server/lib/oauth/addOAuthService.ts @@ -118,7 +118,6 @@ export async function addOAuthService(name: string, values: { [k: string]: strin section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Color', persistent: true, - alert: 'OAuth_button_colors_alert', }); await settingsRegistry.add(`Accounts_OAuth_Custom-${name}-button_color`, values.buttonColor || '#1d74f5', { type: 'string', @@ -126,7 +125,6 @@ export async function addOAuthService(name: string, values: { [k: string]: strin section: `Custom OAuth: ${name}`, i18nLabel: 'Accounts_OAuth_Custom_Button_Color', persistent: true, - alert: 'OAuth_button_colors_alert', }); await settingsRegistry.add(`Accounts_OAuth_Custom-${name}-key_field`, values.keyField || 'username', { type: 'select', diff --git a/apps/meteor/server/models/raw/BaseRaw.ts b/apps/meteor/server/models/raw/BaseRaw.ts index 96f64b061ade..7d4c78697ecb 100644 --- a/apps/meteor/server/models/raw/BaseRaw.ts +++ b/apps/meteor/server/models/raw/BaseRaw.ts @@ -1,6 +1,7 @@ import type { RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { IBaseModel, DefaultFields, ResultFields, FindPaginated, InsertionModel } from '@rocket.chat/model-typings'; -import { getCollectionName } from '@rocket.chat/models'; +import type { Updater } from '@rocket.chat/models'; +import { getCollectionName, UpdaterImpl } from '@rocket.chat/models'; import { ObjectId } from 'mongodb'; import type { BulkWriteOptions, @@ -109,6 +110,10 @@ export abstract class BaseRaw< return this.collectionName; } + protected getUpdater(): Updater { + return new UpdaterImpl(this.col as unknown as IBaseModel); + } + private doNotMixInclusionAndExclusionFields(options: FindOptions = {}): FindOptions { const optionsDef = this.ensureDefaultFields(options); if (optionsDef?.projection === undefined) { diff --git a/apps/meteor/server/models/raw/LivechatRooms.ts b/apps/meteor/server/models/raw/LivechatRooms.ts index 648af95ed180..b88ae1eb767a 100644 --- a/apps/meteor/server/models/raw/LivechatRooms.ts +++ b/apps/meteor/server/models/raw/LivechatRooms.ts @@ -9,8 +9,9 @@ import type { ReportResult, MACStats, } from '@rocket.chat/core-typings'; -import { UserStatus } from '@rocket.chat/core-typings'; +import { isMessageFromVisitor, UserStatus } from '@rocket.chat/core-typings'; import type { ILivechatRoomsModel } from '@rocket.chat/model-typings'; +import type { Updater } from '@rocket.chat/models'; import { Settings } from '@rocket.chat/models'; import { escapeRegExp } from '@rocket.chat/string-helpers'; import type { @@ -77,6 +78,10 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive ]; } + getUpdater(): Updater { + return super.getUpdater(); + } + getQueueMetrics({ departmentId, agentId, @@ -2020,52 +2025,71 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive ); } - saveAnalyticsDataByRoomId(room: IOmnichannelRoom, message: IMessage, analyticsData: Record) { - const update: DeepWritable> = { - $set: { - ...(analyticsData && { - 'metrics.response.avg': analyticsData.avgResponseTime, - }), - ...(analyticsData?.firstResponseTime && { - 'metrics.reaction.fd': analyticsData.firstReactionDate, - 'metrics.reaction.ft': analyticsData.firstReactionTime, - 'metrics.response.fd': analyticsData.firstResponseDate, - 'metrics.response.ft': analyticsData.firstResponseTime, - }), - }, - ...(analyticsData && { - $inc: { - 'metrics.response.total': 1, - 'metrics.response.tt': analyticsData.responseTime as number, - 'metrics.reaction.tt': analyticsData.reactionTime as number, - }, - }), - }; + private getAnalyticsUpdateQuery( + analyticsData: Record | undefined, + updater: Updater = this.getUpdater(), + ) { + if (analyticsData) { + updater.set('metrics.response.avg', analyticsData.avgResponseTime); + updater.inc('metrics.response.total', 1); + updater.inc('metrics.response.tt', analyticsData.responseTime as number); + updater.inc('metrics.reaction.tt', analyticsData.reactionTime as number); + } + if (analyticsData?.firstResponseTime) { + updater.set('metrics.reaction.fd', analyticsData.firstReactionDate); + updater.set('metrics.reaction.ft', analyticsData.firstReactionTime); + updater.set('metrics.response.fd', analyticsData.firstResponseDate); + updater.set('metrics.response.ft', analyticsData.firstResponseTime); + } + + return updater; + } + + private getAnalyticsUpdateQueryBySentByAgent( + room: IOmnichannelRoom, + message: IMessage, + analyticsData: Record | undefined, + updater: Updater = this.getUpdater(), + ) { // livechat analytics : update last message timestamps const visitorLastQuery = room.metrics?.v ? room.metrics.v.lq : room.ts; const agentLastReply = room.metrics?.servedBy ? room.metrics.servedBy.lr : room.ts; - if (message.token) { - // update visitor timestamp, only if its new inquiry and not continuing message - if (agentLastReply >= visitorLastQuery) { - // if first query, not continuing query from visitor - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - update.$set!['metrics.v.lq'] = message.ts; - } - } else if (visitorLastQuery > agentLastReply) { - // update agent timestamp, if first response, not continuing - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - update.$set!['metrics.servedBy.lr'] = message.ts; + if (visitorLastQuery > agentLastReply) { + return this.getAnalyticsUpdateQuery(analyticsData, updater).set('metrics.servedBy.lr', message.ts); } - return this.updateOne( - { - _id: room._id, - t: 'l', - }, - update, - ); + return this.getAnalyticsUpdateQuery(analyticsData, updater); + } + + private getAnalyticsUpdateQueryBySentByVisitor( + room: IOmnichannelRoom, + message: IMessage, + analyticsData: Record | undefined, + updater: Updater = this.getUpdater(), + ) { + // livechat analytics : update last message timestamps + const visitorLastQuery = room.metrics?.v ? room.metrics.v.lq : room.ts; + const agentLastReply = room.metrics?.servedBy ? room.metrics.servedBy.lr : room.ts; + + // update visitor timestamp, only if its new inquiry and not continuing message + if (agentLastReply >= visitorLastQuery) { + return this.getAnalyticsUpdateQuery(analyticsData, updater).set('metrics.v.lq', message.ts); + } + + return this.getAnalyticsUpdateQuery(analyticsData, updater); + } + + async getAnalyticsUpdateQueryByRoomId( + room: IOmnichannelRoom, + message: IMessage, + analyticsData: Record | undefined, + updater: Updater = this.getUpdater(), + ) { + return isMessageFromVisitor(message) + ? this.getAnalyticsUpdateQueryBySentByVisitor(room, message, analyticsData, updater) + : this.getAnalyticsUpdateQueryBySentByAgent(room, message, analyticsData, updater); } getTotalConversationsBetweenDate(t: 'l', date: { gte: Date; lt: Date }, { departmentId }: { departmentId?: string } = {}) { @@ -2379,17 +2403,8 @@ export class LivechatRoomsRaw extends BaseRaw implements ILive return this.deleteOne(query); } - setVisitorLastMessageTimestampByRoomId(roomId: string, lastMessageTs: Date) { - const query = { - _id: roomId, - }; - const update = { - $set: { - 'v.lastMessageTs': lastMessageTs, - }, - }; - - return this.updateOne(query, update); + getVisitorLastMessageTsUpdateQueryByRoomId(lastMessageTs: Date, updater: Updater = this.getUpdater()) { + return updater.set('v.lastMessageTs', lastMessageTs); } setVisitorInactivityInSecondsById(roomId: string, visitorInactivity: number) { diff --git a/apps/meteor/server/models/raw/Rooms.ts b/apps/meteor/server/models/raw/Rooms.ts index a4cd19a1c30a..f967068158f9 100644 --- a/apps/meteor/server/models/raw/Rooms.ts +++ b/apps/meteor/server/models/raw/Rooms.ts @@ -662,6 +662,10 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { return this.updateOne({ _id: roomId }, { $set: { name } }); } + setSidepanelById(roomId: IRoom['_id'], sidepanel: IRoom['sidepanel']): Promise { + return this.updateOne({ _id: roomId }, { $set: { sidepanel } }); + } + setFnameById(_id: IRoom['_id'], fname: IRoom['fname']): Promise { const query: Filter = { _id }; diff --git a/apps/meteor/server/services/room/service.ts b/apps/meteor/server/services/room/service.ts index b09dc865f928..3ba47284ddee 100644 --- a/apps/meteor/server/services/room/service.ts +++ b/apps/meteor/server/services/room/service.ts @@ -16,7 +16,7 @@ export class RoomService extends ServiceClassInternal implements IRoomService { protected name = 'room'; async create(uid: string, params: ICreateRoomParams): Promise { - const { type, name, members = [], readOnly, extraData, options } = params; + const { type, name, members = [], readOnly, extraData, options, sidepanel } = params; const hasPermission = await Authorization.hasPermission(uid, `create-${type}`); if (!hasPermission) { @@ -29,7 +29,7 @@ export class RoomService extends ServiceClassInternal implements IRoomService { } // TODO convert `createRoom` function to "raw" and move to here - return createRoom(type, name, user, members, false, readOnly, extraData, options) as unknown as IRoom; + return createRoom(type, name, user, members, false, readOnly, extraData, options, sidepanel) as unknown as IRoom; } async createDirectMessage({ to, from }: { to: string; from: string }): Promise<{ rid: string }> { diff --git a/apps/meteor/server/services/team/service.ts b/apps/meteor/server/services/team/service.ts index f898b1775ae9..bc4211322b66 100644 --- a/apps/meteor/server/services/team/service.ts +++ b/apps/meteor/server/services/team/service.ts @@ -37,7 +37,10 @@ import { settings } from '../../../app/settings/server'; export class TeamService extends ServiceClassInternal implements ITeamService { protected name = 'team'; - async create(uid: string, { team, room = { name: team.name, extraData: {} }, members, owner }: ITeamCreateParams): Promise { + async create( + uid: string, + { team, room = { name: team.name, extraData: {} }, members, owner, sidepanel }: ITeamCreateParams, + ): Promise { if (!(await checkUsernameAvailability(team.name))) { throw new Error('team-name-already-exists'); } @@ -120,6 +123,7 @@ export class TeamService extends ServiceClassInternal implements ITeamService { teamId, teamMain: true, }, + sidepanel, }; const createdRoom = await Room.create(owner || uid, newRoom); diff --git a/apps/meteor/server/settings/cas.ts b/apps/meteor/server/settings/cas.ts index f8ae4e6ca65a..48a13d8cbd9c 100644 --- a/apps/meteor/server/settings/cas.ts +++ b/apps/meteor/server/settings/cas.ts @@ -33,8 +33,8 @@ export const createCasSettings = () => await this.add('CAS_popup_width', 810, { type: 'int', group: 'CAS', public: true }); await this.add('CAS_popup_height', 610, { type: 'int', group: 'CAS', public: true }); await this.add('CAS_button_label_text', 'CAS', { type: 'string', group: 'CAS' }); - await this.add('CAS_button_label_color', '#FFFFFF', { type: 'color', group: 'CAS', alert: 'OAuth_button_colors_alert' }); - await this.add('CAS_button_color', '#1d74f5', { type: 'color', group: 'CAS', alert: 'OAuth_button_colors_alert' }); + await this.add('CAS_button_label_color', '#FFFFFF', { type: 'color', group: 'CAS' }); + await this.add('CAS_button_color', '#1d74f5', { type: 'color', group: 'CAS' }); await this.add('CAS_autoclose', true, { type: 'boolean', group: 'CAS' }); }); }); diff --git a/apps/meteor/server/settings/oauth.ts b/apps/meteor/server/settings/oauth.ts index acc397faa37d..c67286771a0a 100644 --- a/apps/meteor/server/settings/oauth.ts +++ b/apps/meteor/server/settings/oauth.ts @@ -115,14 +115,12 @@ export const createOauthSettings = () => public: true, i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Color', persistent: true, - alert: 'OAuth_button_colors_alert', }); await this.add('Accounts_OAuth_Nextcloud_button_color', '#0082c9', { type: 'string', public: true, i18nLabel: 'Accounts_OAuth_Custom_Button_Color', persistent: true, - alert: 'OAuth_button_colors_alert', }); }); @@ -275,13 +273,11 @@ export const createOauthSettings = () => type: 'string', i18nLabel: 'Accounts_OAuth_Custom_Button_Label_Color', persistent: true, - alert: 'OAuth_button_colors_alert', }); await this.add('Accounts_OAuth_Dolphin_button_color', '#1d74f5', { type: 'string', i18nLabel: 'Accounts_OAuth_Custom_Button_Color', persistent: true, - alert: 'OAuth_button_colors_alert', }); }); await this.section('Facebook', async function () { diff --git a/apps/meteor/tests/e2e/administration-settings.spec.ts b/apps/meteor/tests/e2e/administration-settings.spec.ts new file mode 100644 index 000000000000..d2996d6eac88 --- /dev/null +++ b/apps/meteor/tests/e2e/administration-settings.spec.ts @@ -0,0 +1,52 @@ +import { Users } from './fixtures/userStates'; +import { Admin } from './page-objects'; +import { getSettingValueById } from './utils'; +import { test, expect } from './utils/test'; + +test.use({ storageState: Users.admin.state }); + +test.describe.parallel('administration-settings', () => { + let poAdmin: Admin; + + test.beforeEach(async ({ page }) => { + poAdmin = new Admin(page); + }); + + test.describe('General', () => { + let inputSiteURLSetting: string; + + test.beforeAll(async ({ api }) => { + inputSiteURLSetting = (await getSettingValueById(api, 'Site_Url')) as string; + }); + + test.beforeEach(async ({ page }) => { + await page.goto('/admin/settings/General'); + }); + + test('should be able to reset a setting after a change', async () => { + await poAdmin.inputSiteURL.fill('any_text'); + await poAdmin.btnResetSiteURL.click(); + + await expect(poAdmin.inputSiteURL).toHaveValue(inputSiteURLSetting); + }); + + test('should be able to go back to the settings page', async ({ page }) => { + await poAdmin.btnBack.click(); + + await expect(page).toHaveURL('/admin/settings'); + }); + }); + + test.describe('Layout', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/admin/settings/Layout'); + }); + + test('should code mirror full screen be displayed correctly', async ({ page }) => { + await poAdmin.getAccordionBtnByName('Custom CSS').click(); + await poAdmin.btnFullScreen.click(); + + await expect(page.getByRole('code')).toHaveCSS('width', '920px'); + }); + }); +}); diff --git a/apps/meteor/tests/e2e/administration.spec.ts b/apps/meteor/tests/e2e/administration.spec.ts index 703c4a4bd8b1..45fee011efc3 100644 --- a/apps/meteor/tests/e2e/administration.spec.ts +++ b/apps/meteor/tests/e2e/administration.spec.ts @@ -319,34 +319,4 @@ test.describe.parallel('administration', () => { await expect(poAdmin.getIntegrationByName(incomingIntegrationName)).not.toBeVisible(); }); }); - - test.describe('Settings', () => { - test.describe('General', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/admin/settings/General'); - }); - - test.afterAll(async ({ api }) => { - await setSettingValueById(api, 'Language', 'en'); - }); - - test('expect be able to reset a setting after a change', async () => { - await poAdmin.inputSiteURL.type('any_text'); - await poAdmin.btnResetSiteURL.click(); - }); - }); - - test.describe('Layout', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/admin/settings/Layout'); - }); - - test('should code mirror full screen be displayed correctly', async ({ page }) => { - await poAdmin.getAccordionBtnByName('Custom CSS').click(); - await poAdmin.btnFullScreen.click(); - - await expect(page.getByRole('code')).toHaveCSS('width', '920px'); - }); - }); - }); }); diff --git a/apps/meteor/tests/e2e/page-objects/auth.ts b/apps/meteor/tests/e2e/page-objects/auth.ts index 46ec7e1f38dc..8d5fe1edad20 100644 --- a/apps/meteor/tests/e2e/page-objects/auth.ts +++ b/apps/meteor/tests/e2e/page-objects/auth.ts @@ -20,7 +20,7 @@ export class Registration { } get btnLoginWithSaml(): Locator { - return this.page.locator('role=button[name="SAML test login button"]'); + return this.page.locator('role=button[name="SAML"]'); } get btnLoginWithGoogle(): Locator { diff --git a/apps/meteor/tests/e2e/saml.spec.ts b/apps/meteor/tests/e2e/saml.spec.ts index fe1295ca0b4b..3d5935107bb1 100644 --- a/apps/meteor/tests/e2e/saml.spec.ts +++ b/apps/meteor/tests/e2e/saml.spec.ts @@ -10,7 +10,6 @@ import * as constants from './config/constants'; import { createUserFixture } from './fixtures/collections/users'; import { Users } from './fixtures/userStates'; import { Registration } from './page-objects'; -import { convertHexToRGB } from './utils/convertHexToRGB'; import { createCustomRole, deleteCustomRole } from './utils/custom-role'; import { getUserInfo } from './utils/getUserInfo'; import { parseMeteorResponse } from './utils/parseMeteorResponse'; @@ -60,8 +59,6 @@ const resetTestData = async ({ api, cleanupOnly = false }: { api?: any; cleanupO { _id: 'SAML_Custom_Default_issuer', value: 'http://localhost:3000/_saml/metadata/test-sp' }, { _id: 'SAML_Custom_Default_entry_point', value: 'http://localhost:8080/simplesaml/saml2/idp/SSOService.php' }, { _id: 'SAML_Custom_Default_idp_slo_redirect_url', value: 'http://localhost:8080/simplesaml/saml2/idp/SingleLogoutService.php' }, - { _id: 'SAML_Custom_Default_button_label_text', value: 'SAML test login button' }, - { _id: 'SAML_Custom_Default_button_color', value: '#185925' }, ]; await Promise.all(settings.map(({ _id, value }) => setSettingValueById(api, _id, value))); @@ -155,10 +152,6 @@ test.describe('SAML', () => { await expect(poRegistration.btnLoginWithSaml).toBeVisible({ timeout: 10000 }); }); - await test.step('expect to have SAML login button to have the required background color', async () => { - await expect(poRegistration.btnLoginWithSaml).toHaveCSS('background-color', convertHexToRGB('#185925')); - }); - await test.step('expect to be redirected to the IdP for login', async () => { await poRegistration.btnLoginWithSaml.click(); diff --git a/apps/meteor/tests/e2e/utils/convertHexToRGB.ts b/apps/meteor/tests/e2e/utils/convertHexToRGB.ts deleted file mode 100644 index 9b20671cfcaa..000000000000 --- a/apps/meteor/tests/e2e/utils/convertHexToRGB.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const convertHexToRGB = (hex: string) => { - hex = hex.replace(/^#/, ''); - - const red = parseInt(hex.substring(0, 2), 16); - const green = parseInt(hex.substring(2, 4), 16); - const blue = parseInt(hex.substring(4, 6), 16); - - return `rgb(${red}, ${green}, ${blue})`; -}; diff --git a/apps/meteor/tests/end-to-end/api/rooms.ts b/apps/meteor/tests/end-to-end/api/rooms.ts index a8d64b1f4c7d..d59d3722f1a4 100644 --- a/apps/meteor/tests/end-to-end/api/rooms.ts +++ b/apps/meteor/tests/end-to-end/api/rooms.ts @@ -2129,12 +2129,15 @@ describe('[Rooms]', () => { describe('rooms.saveRoomSettings', () => { let testChannel: IRoom; const randomString = `randomString${Date.now()}`; + const teamName = `team-${Date.now()}`; let discussion: IRoom; + let testTeam: ITeam; before(async () => { const result = await createRoom({ type: 'c', name: `channel.test.${Date.now()}-${Math.random()}` }); testChannel = result.body.channel; + const resTeam = await request.post(api('teams.create')).set(credentials).send({ name: teamName, type: 0 }); const resDiscussion = await request .post(api('rooms.createDiscussion')) .set(credentials) @@ -2143,10 +2146,17 @@ describe('[Rooms]', () => { t_name: `discussion-create-from-tests-${testChannel.name}`, }); + testTeam = resTeam.body.team; discussion = resDiscussion.body.discussion; }); - after(() => Promise.all([deleteRoom({ type: 'p', roomId: discussion._id }), deleteRoom({ type: 'p', roomId: testChannel._id })])); + after(() => + Promise.all([ + deleteRoom({ type: 'p', roomId: discussion._id }), + deleteTeam(credentials, testTeam.name), + deleteRoom({ type: 'p', roomId: testChannel._id }), + ]), + ); it('should update the room settings', (done) => { const imageDataUri = `data:image/png;base64,${fs.readFileSync(path.join(process.cwd(), imgURL)).toString('base64')}`; @@ -2290,6 +2300,64 @@ describe('[Rooms]', () => { expect(res.body.room).to.not.have.property('favorite'); }); }); + it('should update the team sidepanel items to channels and discussions', async () => { + const sidepanelItems = ['channels', 'discussions']; + const response = await request + .post(api('rooms.saveRoomSettings')) + .set(credentials) + .send({ + rid: testTeam.roomId, + sidepanel: { items: sidepanelItems }, + }) + .expect('Content-Type', 'application/json') + .expect(200); + + expect(response.body).to.have.property('success', true); + + const channelInfoResponse = await request + .get(api('channels.info')) + .set(credentials) + .query({ roomId: response.body.rid }) + .expect('Content-Type', 'application/json') + .expect(200); + + expect(channelInfoResponse.body).to.have.property('success', true); + expect(channelInfoResponse.body.channel).to.have.property('sidepanel'); + expect(channelInfoResponse.body.channel.sidepanel).to.have.property('items').that.is.an('array').to.have.deep.members(sidepanelItems); + }); + it('should throw error when updating team sidepanel with incorrect items', async () => { + const sidepanelItems = ['wrong']; + await request + .post(api('rooms.saveRoomSettings')) + .set(credentials) + .send({ + rid: testTeam.roomId, + sidepanel: { items: sidepanelItems }, + }) + .expect(400); + }); + it('should throw error when updating team sidepanel with more than 2 items', async () => { + const sidepanelItems = ['channels', 'discussions', 'extra']; + await request + .post(api('rooms.saveRoomSettings')) + .set(credentials) + .send({ + rid: testTeam.roomId, + sidepanel: { items: sidepanelItems }, + }) + .expect(400); + }); + it('should throw error when updating team sidepanel with duplicated items', async () => { + const sidepanelItems = ['channels', 'channels']; + await request + .post(api('rooms.saveRoomSettings')) + .set(credentials) + .send({ + rid: testTeam.roomId, + sidepanel: { items: sidepanelItems }, + }) + .expect(400); + }); }); describe('rooms.images', () => { diff --git a/apps/meteor/tests/end-to-end/api/subscriptions.ts b/apps/meteor/tests/end-to-end/api/subscriptions.ts index c1df85bafccd..a03179569615 100644 --- a/apps/meteor/tests/end-to-end/api/subscriptions.ts +++ b/apps/meteor/tests/end-to-end/api/subscriptions.ts @@ -50,8 +50,36 @@ describe('[Subscriptions]', () => { .end(done); }); - it('/subscriptions.getOne:', () => { - it('subscriptions.getOne', (done) => { + describe('/subscriptions.getOne', () => { + it('should fail if no roomId provided', (done) => { + void request + .get(api('subscriptions.getOne')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', "must have required property 'roomId' [invalid-params]"); + }) + .end(done); + }); + + it('should fail if not logged in', (done) => { + void request + .get(api('subscriptions.getOne')) + .query({ + roomId: testChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(401) + .expect((res) => { + expect(res.body).to.have.property('status', 'error'); + expect(res.body).to.have.property('message'); + }) + .end(done); + }); + + it('should return the subscription with success', (done) => { void request .get(api('subscriptions.getOne')) .set(credentials) @@ -66,6 +94,52 @@ describe('[Subscriptions]', () => { }) .end(done); }); + + it('should keep subscription as read after sending a message', async () => { + await request + .get(api('subscriptions.getOne')) + .set(credentials) + .query({ + roomId: testChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('subscription').and.to.be.an('object'); + expect(res.body.subscription).to.have.property('alert', false); + }); + + await request + .post(api('chat.sendMessage')) + .set(credentials) + .send({ + message: { + rid: testChannel._id, + msg: 'Sample message', + }, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('message').and.to.be.an('object'); + }); + + await request + .get(api('subscriptions.getOne')) + .set(credentials) + .query({ + roomId: testChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('subscription').and.to.be.an('object'); + expect(res.body.subscription).to.have.property('alert', false); + }); + }); }); describe('[/subscriptions.read]', () => { diff --git a/apps/meteor/tests/end-to-end/api/teams.ts b/apps/meteor/tests/end-to-end/api/teams.ts index 99689650384d..425d0039e502 100644 --- a/apps/meteor/tests/end-to-end/api/teams.ts +++ b/apps/meteor/tests/end-to-end/api/teams.ts @@ -172,6 +172,84 @@ describe('[Teams]', () => { }) .end(done); }); + + it('should create a team with sidepanel items containing channels', async () => { + const teamName = `test-team-with-sidepanel-${Date.now()}`; + const sidepanelItems = ['channels']; + + const response = await request + .post(api('teams.create')) + .set(credentials) + .send({ + name: teamName, + type: 0, + sidepanel: { + items: sidepanelItems, + }, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + }); + + await request + .get(api('channels.info')) + .set(credentials) + .query({ roomId: response.body.team.roomId }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((response) => { + expect(response.body).to.have.property('success', true); + expect(response.body.channel).to.have.property('sidepanel'); + expect(response.body.channel.sidepanel).to.have.property('items').that.is.an('array').to.have.deep.members(sidepanelItems); + }); + await deleteTeam(credentials, teamName); + }); + + it('should throw error when creating a team with sidepanel with more than 2 items', async () => { + await request + .post(api('teams.create')) + .set(credentials) + .send({ + name: `test-team-with-sidepanel-error-${Date.now()}`, + type: 0, + sidepanel: { + items: ['channels', 'discussion', 'other'], + }, + }) + .expect('Content-Type', 'application/json') + .expect(400); + }); + + it('should throw error when creating a team with sidepanel with incorrect items', async () => { + await request + .post(api('teams.create')) + .set(credentials) + .send({ + name: `test-team-with-sidepanel-error-${Date.now()}`, + type: 0, + sidepanel: { + items: ['other'], + }, + }) + .expect('Content-Type', 'application/json') + .expect(400); + }); + it('should throw error when creating a team with sidepanel with duplicated items', async () => { + await request + .post(api('teams.create')) + .set(credentials) + .send({ + name: `test-team-with-sidepanel-error-${Date.now()}`, + type: 0, + sidepanel: { + items: ['channels', 'channels'], + }, + }) + .expect('Content-Type', 'application/json') + .expect(400); + }); }); describe('/teams.convertToChannel', () => { diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index 238e83e92d97..13f5a86d0f67 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,59 @@ # @rocket.chat/account-service +## 0.4.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.4.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.4.3-rc.0 + +### Patch Changes + +- ([#32527](https://github.com/RocketChat/Rocket.Chat/pull/32527)) Fixed an inconsistent evaluation of the `Accounts_LoginExpiration` setting over the codebase. In some places, it was being used as milliseconds while in others as days. Invalid values produced different results. A helper function was created to centralize the setting validation and the proper value being returned to avoid edge cases. + Negative values may be saved on the settings UI panel but the code will interpret any negative, NaN or 0 value to the default expiration which is 90 days. +-
Updated dependencies [8fc6ca8b4e, 439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/tools@0.2.2-rc.0 + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 + +## 0.4.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index d52253fa2f94..a4a29c5f7aaa 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/account-service", "private": true, - "version": "0.4.1", + "version": "0.4.3-rc.2", "description": "Rocket.Chat Account service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index f216f11428d8..3e65906e0c1b 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,57 @@ # @rocket.chat/authorization-service +## 0.4.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.4.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.4.3-rc.0 + +### Patch Changes + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 +
+ +## 0.4.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index 6eef0c30f9a7..043d203cca88 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/authorization-service", "private": true, - "version": "0.4.1", + "version": "0.4.3-rc.2", "description": "Rocket.Chat Authorization service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index f43ecec49734..cc5d65a49914 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,75 @@ # @rocket.chat/ddp-streamer +## 0.3.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/ui-contexts@9.0.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 + - @rocket.chat/instance-status@0.1.3-rc.2 +
+ +## 0.3.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/ui-contexts@9.0.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 + - @rocket.chat/instance-status@0.1.2-rc.1 +
+ +## 0.3.3-rc.0 + +### Patch Changes + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 4e8aa575a6, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/ui-contexts@9.0.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 + - @rocket.chat/instance-status@0.1.2-rc.0 +
+ +## 0.3.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/ui-contexts@8.0.2 + - @rocket.chat/models@0.1.2 + - @rocket.chat/instance-status@0.1.2 +
+ ## 0.3.1 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 7797ac42d8b1..db5ab8a51db4 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/ddp-streamer", "private": true, - "version": "0.3.1", + "version": "0.3.3-rc.2", "description": "Rocket.Chat DDP-Streamer service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index 4666d1a632d9..e9d49967c49f 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,62 @@ # @rocket.chat/omnichannel-transcript +## 0.4.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/omnichannel-services@0.3.0-rc.2 + - @rocket.chat/pdf-worker@0.2.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.4.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/omnichannel-services@0.3.0-rc.1 + - @rocket.chat/pdf-worker@0.2.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.4.3-rc.0 + +### Patch Changes + +-
Updated dependencies [8fc6ca8b4e, 439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/tools@0.2.2-rc.0 + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/omnichannel-services@0.3.0-rc.0 + - @rocket.chat/pdf-worker@0.2.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 +
+ +## 0.4.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/omnichannel-services@0.2.2 + - @rocket.chat/pdf-worker@0.1.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index fed26a0e2750..04bf02c43464 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/omnichannel-transcript", "private": true, - "version": "0.4.1", + "version": "0.4.3-rc.2", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index 338c584f29da..40771ea7ca96 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,57 @@ # @rocket.chat/presence-service +## 0.4.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/presence@0.2.3-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.4.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/presence@0.2.2-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.4.3-rc.0 + +### Patch Changes + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/presence@0.2.2-rc.0 +
+ +## 0.4.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/presence@0.2.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 2bc89c48fdaf..1153188bffe1 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/presence-service", "private": true, - "version": "0.4.1", + "version": "0.4.3-rc.2", "description": "Rocket.Chat Presence service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index ccda9ae96e56..bac927b65d20 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,57 @@ # @rocket.chat/queue-worker +## 0.4.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/omnichannel-services@0.3.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.4.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/omnichannel-services@0.3.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.4.3-rc.0 + +### Patch Changes + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/omnichannel-services@0.3.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 +
+ +## 0.4.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/omnichannel-services@0.2.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index be7ac1376935..c117382266a6 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/queue-worker", "private": true, - "version": "0.4.1", + "version": "0.4.3-rc.2", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md index cf5790099785..955104ad6cb3 100644 --- a/ee/apps/stream-hub-service/CHANGELOG.md +++ b/ee/apps/stream-hub-service/CHANGELOG.md @@ -1,5 +1,53 @@ # @rocket.chat/stream-hub-service +## 0.4.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.4.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.4.3-rc.0 + +### Patch Changes + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 +
+ +## 0.4.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index e75f32b27d43..d3fb0d4b4950 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/stream-hub-service", "private": true, - "version": "0.4.1", + "version": "0.4.3-rc.2", "description": "Rocket.Chat Stream Hub service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/packages/api-client/CHANGELOG.md b/ee/packages/api-client/CHANGELOG.md index d8c8b8a88e86..8c9a3c2b1cc6 100644 --- a/ee/packages/api-client/CHANGELOG.md +++ b/ee/packages/api-client/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/api-client +## 0.2.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 +
+ +## 0.2.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 +
+ +## 0.2.3-rc.0 + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 24f7df4894, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 +
+ +## 0.2.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 +
+ ## 0.2.1 ### Patch Changes diff --git a/ee/packages/api-client/package.json b/ee/packages/api-client/package.json index 2054a3f7618b..a01769c87c29 100644 --- a/ee/packages/api-client/package.json +++ b/ee/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/api-client", - "version": "0.2.1", + "version": "0.2.3-rc.2", "devDependencies": { "@swc/core": "^1.3.95", "@swc/jest": "^0.2.29", diff --git a/ee/packages/ddp-client/CHANGELOG.md b/ee/packages/ddp-client/CHANGELOG.md index 38a500223ce2..ed49a458277e 100644 --- a/ee/packages/ddp-client/CHANGELOG.md +++ b/ee/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/ddp-client +## 0.3.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/api-client@0.2.3-rc.2 +
+ +## 0.3.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/api-client@0.2.2-rc.1 +
+ +## 0.3.3-rc.0 + +### Patch Changes + +-
Updated dependencies [264d7d5496, b8e5887fb9]: + + - @rocket.chat/rest-typings@6.11.0-rc.0 + - @rocket.chat/api-client@0.2.2-rc.0 +
+ +## 0.3.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/api-client@0.2.2 +
+ ## 0.3.1 ### Patch Changes diff --git a/ee/packages/ddp-client/package.json b/ee/packages/ddp-client/package.json index e25c43ffa0c1..dbb444c4d9db 100644 --- a/ee/packages/ddp-client/package.json +++ b/ee/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "0.3.1", + "version": "0.3.3-rc.2", "devDependencies": { "@swc/core": "^1.3.95", "@swc/jest": "^0.2.29", diff --git a/ee/packages/license/CHANGELOG.md b/ee/packages/license/CHANGELOG.md index b4f56765a6bf..e29f97b6929c 100644 --- a/ee/packages/license/CHANGELOG.md +++ b/ee/packages/license/CHANGELOG.md @@ -1,5 +1,41 @@ # @rocket.chat/license +## 0.2.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 +
+ +## 0.2.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 +
+ +## 0.2.3-rc.0 + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 24f7df4894, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 +
+ +## 0.2.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 +
+ ## 0.2.1 ### Patch Changes diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index 3b806acd1f5d..bae523d23f6a 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/license", - "version": "0.2.1", + "version": "0.2.3-rc.2", "private": true, "devDependencies": { "@swc/core": "^1.3.95", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 2e6e007ee6da..457e8d0236c5 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,70 @@ # @rocket.chat/omnichannel-services +## 0.3.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/pdf-worker@0.2.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.3.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/pdf-worker@0.2.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.3.0-rc.0 + +### Minor Changes + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Added system messages support for Omnichannel PDF transcripts and email transcripts. Currently these transcripts don't render system messages and is shown as an empty message in PDF/email. This PR adds this support for all valid livechat system messages. + + Also added a new setting under transcripts, to toggle the inclusion of system messages in email and PDF transcripts. + +### Patch Changes + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Reduced time on generation of PDF transcripts. Earlier Rocket.Chat was fetching the required translations everytime a PDF transcript was requested, this process was async and was being unnecessarily being performed on every pdf transcript request. This PR improves this and now the translations are loaded at the start and kept in memory to process further pdf transcripts requests. This reduces the time of asynchronously fetching translations again and again. + +-
Updated dependencies [8fc6ca8b4e, 439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 03c8b066f9, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/tools@0.2.2-rc.0 + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/pdf-worker@0.2.0-rc.0 + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 +
+ +## 0.2.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/pdf-worker@0.1.2 + - @rocket.chat/model-typings@0.5.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.2.1 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index c3cb76b9853a..6fcfa057693f 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.2.1", + "version": "0.3.0-rc.2", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index 303b1439c8ce..d5e341a2360d 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,39 @@ # @rocket.chat/pdf-worker +## 0.2.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 +
+ +## 0.2.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 +
+ +## 0.2.0-rc.0 + +### Minor Changes + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Added system messages support for Omnichannel PDF transcripts and email transcripts. Currently these transcripts don't render system messages and is shown as an empty message in PDF/email. This PR adds this support for all valid livechat system messages. + + Also added a new setting under transcripts, to toggle the inclusion of system messages in email and PDF transcripts. + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 24f7df4894, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 +
+
+ ## 0.1.1 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index 104cb84fa1d0..dc3f04693b6a 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/pdf-worker", - "version": "0.1.1", + "version": "0.2.0-rc.2", "private": true, "devDependencies": { "@storybook/addon-essentials": "~6.5.16", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index 22ea508bd15c..d8c531e3d72d 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,59 @@ # @rocket.chat/presence +## 0.2.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/core-services@0.5.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.2.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/core-services@0.5.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.2.3-rc.0 + +### Patch Changes + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [03c8b066f9, 2d89a0c448, 24f7df4894, 03c8b066f9, b8e5887fb9]: + + - @rocket.chat/core-services@0.5.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 +
+ +## 0.2.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-services@0.4.2 + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.2.1 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index 44bce44d7d6a..978df9965c8a 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.2.1", + "version": "0.2.3-rc.2", "private": true, "devDependencies": { "@babel/core": "~7.22.20", diff --git a/ee/packages/ui-theming/package.json b/ee/packages/ui-theming/package.json index 80e7e035924e..a1e7925968fb 100644 --- a/ee/packages/ui-theming/package.json +++ b/ee/packages/ui-theming/package.json @@ -4,7 +4,7 @@ "private": true, "devDependencies": { "@rocket.chat/css-in-js": "~0.31.25", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-hooks": "^0.33.1", "@rocket.chat/icons": "^0.36.0", "@rocket.chat/ui-contexts": "workspace:~", diff --git a/package.json b/package.json index 741623a582b7..6f7980d8bfc9 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@types/chart.js": "^2.9.39", "@types/js-yaml": "^4.0.8", "ts-node": "^10.9.2", - "turbo": "^2.0.9" + "turbo": "latest" }, "workspaces": [ "apps/*", diff --git a/packages/apps/CHANGELOG.md b/packages/apps/CHANGELOG.md index 606c404b9dc7..0c686c073432 100644 --- a/packages/apps/CHANGELOG.md +++ b/packages/apps/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/apps +## 0.1.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/model-typings@0.6.0-rc.2 +
+ +## 0.1.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/model-typings@0.6.0-rc.1 +
+ +## 0.1.3-rc.0 + +### Patch Changes + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 24f7df4894, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/model-typings@0.6.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 +
+ +## 0.1.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/model-typings@0.5.2 +
+ ## 0.1.1 ### Patch Changes diff --git a/packages/apps/package.json b/packages/apps/package.json index a1a60db9cf7f..9d36d146adbf 100644 --- a/packages/apps/package.json +++ b/packages/apps/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps", - "version": "0.1.1", + "version": "0.1.3-rc.2", "private": true, "devDependencies": { "@types/jest": "~29.5.12", diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index ae47a828656c..286b003068d3 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,71 @@ # @rocket.chat/core-services +## 0.5.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.5.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.5.0-rc.0 + +### Minor Changes + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Added system messages support for Omnichannel PDF transcripts and email transcripts. Currently these transcripts don't render system messages and is shown as an empty message in PDF/email. This PR adds this support for all valid livechat system messages. + + Also added a new setting under transcripts, to toggle the inclusion of system messages in email and PDF transcripts. + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + +### Patch Changes + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Reduced time on generation of PDF transcripts. Earlier Rocket.Chat was fetching the required translations everytime a PDF transcript was requested, this process was async and was being unnecessarily being performed on every pdf transcript request. This PR improves this and now the translations are loaded at the start and kept in memory to process further pdf transcripts requests. This reduces the time of asynchronously fetching translations again and again. + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [2d89a0c448, 24f7df4894, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/ui-kit@0.36.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 +
+ +## 0.4.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.4.1 ### Patch Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 9cd96e501161..7c9521aa53de 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.4.1", + "version": "0.5.0-rc.2", "private": true, "devDependencies": { "@babel/core": "~7.22.20", diff --git a/packages/core-services/src/types/IRoomService.ts b/packages/core-services/src/types/IRoomService.ts index 3acb7edbfcbe..23186590af50 100644 --- a/packages/core-services/src/types/IRoomService.ts +++ b/packages/core-services/src/types/IRoomService.ts @@ -24,6 +24,7 @@ export interface ICreateRoomParams { readOnly?: boolean; extraData?: Partial; options?: ICreateRoomOptions; + sidepanel?: IRoom['sidepanel']; } export interface IRoomService { addMember(uid: string, rid: string): Promise; diff --git a/packages/core-services/src/types/ITeamService.ts b/packages/core-services/src/types/ITeamService.ts index 98747a385b59..2d67bf515fca 100644 --- a/packages/core-services/src/types/ITeamService.ts +++ b/packages/core-services/src/types/ITeamService.ts @@ -23,6 +23,7 @@ export interface ITeamCreateParams { room: ITeamCreateRoom; members?: Array | null; // list of user _ids owner?: string | null; // the team owner. If not present, owner = requester + sidepanel?: IRoom['sidepanel']; } export interface ITeamMemberParams { diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 40578e341608..2d62b835be92 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,39 @@ # @rocket.chat/core-typings +## 6.11.0-rc.2 + +## 6.11.0-rc.1 + +## 6.11.0-rc.0 + +### Minor Changes + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + +### Patch Changes + +- ([#32328](https://github.com/RocketChat/Rocket.Chat/pull/32328)) Allow customFields on livechat creation bridge + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [2d89a0c448]: + + - @rocket.chat/ui-kit@0.36.0-rc.0 +
+ +## 6.10.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + ## 6.10.1 ## 6.10.0 diff --git a/packages/core-typings/src/IRoom.ts b/packages/core-typings/src/IRoom.ts index ac31c2cc6a3a..442cac45fada 100644 --- a/packages/core-typings/src/IRoom.ts +++ b/packages/core-typings/src/IRoom.ts @@ -7,6 +7,8 @@ import type { IUser, Username } from './IUser'; import type { RoomType } from './RoomType'; type CallStatus = 'ringing' | 'ended' | 'declined' | 'ongoing'; +const sidepanelItemValues = ['channels', 'discussions'] as const; +export type SidepanelItem = (typeof sidepanelItemValues)[number]; export type RoomID = string; export type ChannelName = string; @@ -95,8 +97,28 @@ export interface IRoom extends IRocketChatRecord { customFields?: Record; usersWaitingForE2EKeys?: { userId: IUser['_id']; ts: Date }[]; + + sidepanel?: { + items: [SidepanelItem, SidepanelItem?]; + }; } +export const isSidepanelItem = (item: any): item is SidepanelItem => { + return sidepanelItemValues.includes(item); +}; + +export const isValidSidepanel = (sidepanel: IRoom['sidepanel']) => { + if (!sidepanel?.items) { + return false; + } + return ( + Array.isArray(sidepanel.items) && + sidepanel.items.length && + sidepanel.items.every(isSidepanelItem) && + sidepanel.items.length === new Set(sidepanel.items).size + ); +}; + export const isRoomWithJoinCode = (room: Partial): room is IRoomWithJoinCode => 'joinCodeRequired' in room && (room as any).joinCodeRequired === true; @@ -275,9 +297,12 @@ export interface IOmnichannelRoom extends IOmnichannelGenericRoom { total: number; avg: number; ft: number; + fd?: number; }; reaction?: { + tt: number; ft: number; + fd?: number; }; }; diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index 1ec9a7497714..1fd83782f500 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/cron +## 0.1.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.1.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.1.3-rc.0 + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 24f7df4894, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/models@0.2.0-rc.0 +
+ +## 0.1.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/models@0.1.2 +
+ ## 0.1.1 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 5dcb669b0461..908cb816ca19 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.1.1", + "version": "0.1.3-rc.2", "private": true, "devDependencies": { "@types/jest": "~29.5.12", diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index d96d8d2bc1ee..0009b0237063 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,70 @@ # Change Log +## 9.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/gazzodown@9.0.0-rc.2 + - @rocket.chat/ui-contexts@9.0.0-rc.2 + - @rocket.chat/ui-avatar@5.0.0-rc.2 + - @rocket.chat/ui-video-conf@9.0.0-rc.2 +
+ +## 9.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/gazzodown@9.0.0-rc.1 + - @rocket.chat/ui-contexts@9.0.0-rc.1 + - @rocket.chat/ui-avatar@5.0.0-rc.1 + - @rocket.chat/ui-video-conf@9.0.0-rc.1 +
+ +## 9.0.0-rc.0 + +### Patch Changes + +- ([#32679](https://github.com/RocketChat/Rocket.Chat/pull/32679)) Fix validations from "UiKit" modal component + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [2d89a0c448, 24f7df4894, 4e8aa575a6, b8e5887fb9]: + + - @rocket.chat/ui-video-conf@9.0.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/ui-contexts@9.0.0-rc.0 + - @rocket.chat/ui-kit@0.36.0-rc.0 + - @rocket.chat/gazzodown@9.0.0-rc.0 + - @rocket.chat/ui-avatar@5.0.0-rc.0 +
+ +## 8.0.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/gazzodown@8.0.2 + - @rocket.chat/ui-contexts@8.0.2 + - @rocket.chat/ui-avatar@4.0.2 + - @rocket.chat/ui-video-conf@8.0.2 +
+ ## 8.0.1 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index f1f17089d341..c9d47c87e4cf 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/fuselage-ui-kit", "private": true, - "version": "8.0.1", + "version": "9.0.0-rc.2", "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", "author": { @@ -50,10 +50,10 @@ "@rocket.chat/icons": "*", "@rocket.chat/prettier-config": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-avatar": "4.0.1", - "@rocket.chat/ui-contexts": "8.0.1", - "@rocket.chat/ui-kit": "0.35.0", - "@rocket.chat/ui-video-conf": "8.0.1", + "@rocket.chat/ui-avatar": "5.0.0-rc.2", + "@rocket.chat/ui-contexts": "9.0.0-rc.2", + "@rocket.chat/ui-kit": "0.36.0-rc.0", + "@rocket.chat/ui-video-conf": "9.0.0-rc.2", "@tanstack/react-query": "*", "react": "*", "react-dom": "*" @@ -66,7 +66,7 @@ "@rocket.chat/apps-engine": "alpha", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-hooks": "^0.33.1", "@rocket.chat/fuselage-polyfills": "~0.31.25", "@rocket.chat/icons": "^0.36.0", diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index 44d587ce6b5a..7e60bdcb4e5f 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,49 @@ # @rocket.chat/gazzodown +## 9.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/ui-contexts@9.0.0-rc.2 + - @rocket.chat/ui-client@9.0.0-rc.2 +
+ +## 9.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/ui-contexts@9.0.0-rc.1 + - @rocket.chat/ui-client@9.0.0-rc.1 +
+ +## 9.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies [1b7b1161cf, 2d89a0c448, 24f7df4894, 3ffe4a2944, 4e8aa575a6, b8e5887fb9]: + + - @rocket.chat/ui-client@9.0.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/ui-contexts@9.0.0-rc.0 +
+ +## 8.0.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/ui-contexts@8.0.2 + - @rocket.chat/ui-client@8.0.2 +
+ ## 8.0.1 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index 09be541168c1..8d5aaf3db812 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,12 +1,12 @@ { "name": "@rocket.chat/gazzodown", - "version": "8.0.1", + "version": "9.0.0-rc.2", "private": true, "devDependencies": { "@babel/core": "~7.22.20", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/css-in-js": "~0.31.25", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-tokens": "^0.33.1", "@rocket.chat/message-parser": "workspace:^", "@rocket.chat/styled": "~0.31.25", @@ -71,8 +71,8 @@ "@rocket.chat/fuselage-tokens": "*", "@rocket.chat/message-parser": "0.31.29", "@rocket.chat/styled": "*", - "@rocket.chat/ui-client": "8.0.1", - "@rocket.chat/ui-contexts": "8.0.1", + "@rocket.chat/ui-client": "9.0.0-rc.2", + "@rocket.chat/ui-contexts": "9.0.0-rc.2", "katex": "*", "react": "*" }, diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md index 0b2df52c6042..39691d4d3a15 100644 --- a/packages/i18n/CHANGELOG.md +++ b/packages/i18n/CHANGELOG.md @@ -1,5 +1,27 @@ # @rocket.chat/i18n +## 0.6.0-rc.0 + +### Minor Changes + +- ([#32792](https://github.com/RocketChat/Rocket.Chat/pull/32792)) Allows admins to customize the `Subject` field of Omnichannel email transcripts via setting. By passing a value to the setting `Custom email subject for transcript`, system will use it as the `Subject` field, unless a custom subject is passed when requesting a transcript. If there's no custom subject and setting value is empty, the current default value will be used + +- ([#32517](https://github.com/RocketChat/Rocket.Chat/pull/32517)) Feature Preview: New Navigation - `Header` and `Contextualbar` size improvements consistent with the new global `NavBar` + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Added system messages support for Omnichannel PDF transcripts and email transcripts. Currently these transcripts don't render system messages and is shown as an empty message in PDF/email. This PR adds this support for all valid livechat system messages. + + Also added a new setting under transcripts, to toggle the inclusion of system messages in email and PDF transcripts. + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. +- ([#32744](https://github.com/RocketChat/Rocket.Chat/pull/32744)) Added account setting `Accounts_Default_User_Preferences_sidebarSectionsOrder` to allow users to reorganize sidebar sections + +### Patch Changes + +- ([#32788](https://github.com/RocketChat/Rocket.Chat/pull/32788)) Fixed wrong wording on a federation setting + +- ([#32024](https://github.com/RocketChat/Rocket.Chat/pull/32024)) Implemented a new tab to the users page called 'Active', this tab lists all users who have logged in for the first time and are active. + ## 0.5.0 ### Minor Changes diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 91d1f8bb0482..89c46c416638 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/i18n", - "version": "0.5.0", + "version": "0.6.0-rc.0", "private": true, "devDependencies": { "@babel/core": "~7.22.20", diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 4e067f6ddde0..12f0dbf628c5 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -3964,7 +3964,6 @@ "OAuth": "OAuth", "OAuth_Description": "Configure authentication methods beyond just username and password.", "OAuth_Application": "OAuth Application", - "OAuth_button_colors_alert": "Changing the color may result in non-compliance with WCAG (Web Content Accessibility Guidelines) requirements. Please ensure that the new colors meet the recommended contrast and readability standards to maintain accessibility for all users.", "Objects": "Objects", "Off": "Off", "Off_the_record_conversation": "Off-the-Record Conversation", diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index 094ad838096a..77382a05d6a6 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,41 @@ # @rocket.chat/instance-status +## 0.1.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/models@0.2.0-rc.2 +
+ +## 0.1.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + +## 0.1.2 + +### Patch Changes + +-
Updated dependencies []: +- @rocket.chat/models@0.1.2 +
+ + - @rocket.chat/models@0.2.0-rc.1 +
+ +## 0.1.3-rc.0 + +### Patch Changes + +-
Updated dependencies [2d89a0c448]: + + - @rocket.chat/models@0.2.0-rc.0 + - @rocket.chat/models@0.1.2 +
+ ## 0.1.1 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 1da979b011a1..09d81c81b1e6 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.1.1", + "version": "0.1.3-rc.2", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md index 293cc48779c0..c5e1fa9c91dc 100644 --- a/packages/livechat/CHANGELOG.md +++ b/packages/livechat/CHANGELOG.md @@ -1,5 +1,52 @@ # @rocket.chat/livechat Change Log +## 1.19.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/gazzodown@9.0.0-rc.2 +
+ +## 1.19.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/gazzodown@9.0.0-rc.1 +
+ +## 1.19.0-rc.0 + +### Minor Changes + +- ([#32498](https://github.com/RocketChat/Rocket.Chat/pull/32498)) Created a `transferChat` Livechat API endpoint for transferring chats programmatically, the endpoint has all the limitations & permissions required that transferring via UI has + +### Patch Changes + +- ([#32692](https://github.com/RocketChat/Rocket.Chat/pull/32692)) Fixed an issue that caused the widget to set the wrong department when using the setDepartment Livechat api endpoint in conjunction with a Livechat Trigger + +- ([#32626](https://github.com/RocketChat/Rocket.Chat/pull/32626)) livechat `setDepartment` livechat api fixes: + - Changing department didn't reflect on the registration form in real time + - Changing the department mid conversation didn't transfer the chat + - Depending on the state of the department, it couldn't be set as default +-
Updated dependencies [2d89a0c448]: + + - @rocket.chat/ui-kit@0.36.0-rc.0 + - @rocket.chat/gazzodown@9.0.0-rc.0 + +## 1.18.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/gazzodown@8.0.2 +
+
+ ## 1.18.1 ### Patch Changes diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 418c927a5ce8..af91b807ca2c 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/livechat", - "version": "1.18.1", + "version": "1.19.0-rc.2", "files": [ "/build" ], diff --git a/packages/mock-providers/CHANGELOG.md b/packages/mock-providers/CHANGELOG.md index cbf328eda950..430c5d8a0ee5 100644 --- a/packages/mock-providers/CHANGELOG.md +++ b/packages/mock-providers/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/mock-providers +## 0.1.1-rc.0 + +### Patch Changes + +- ([#32482](https://github.com/RocketChat/Rocket.Chat/pull/32482)) Fixed an issue with blocked login when dismissed 2FA modal by clicking outside of it or pressing the escape key + +-
Updated dependencies [b4bbcbfc9a, 25da5280a5, 1b7b1161cf, 03c8b066f9, 2d89a0c448, 3ffe4a2944, 3b4b19cfc5]: + + - @rocket.chat/i18n@0.6.0-rc.0 +
+ ## 0.1.0 ### Minor Changes diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index 639b7dcf3c6d..4027ba6552b3 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/mock-providers", - "version": "0.1.0", + "version": "0.1.1-rc.0", "private": true, "dependencies": { "@rocket.chat/i18n": "workspace:~", diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 0b8121fc77a1..9608c678e649 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/model-typings +## 0.6.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 +
+ +## 0.6.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 +
+ +## 0.6.0-rc.0 + +### Minor Changes + +- ([#32493](https://github.com/RocketChat/Rocket.Chat/pull/32493)) Fixed Livechat rooms being displayed in the Engagement Dashboard's "Channels" tab + +- ([#32752](https://github.com/RocketChat/Rocket.Chat/pull/32752)) Added system messages support for Omnichannel PDF transcripts and email transcripts. Currently these transcripts don't render system messages and is shown as an empty message in PDF/email. This PR adds this support for all valid livechat system messages. + + Also added a new setting under transcripts, to toggle the inclusion of system messages in email and PDF transcripts. + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. +- ([#32493](https://github.com/RocketChat/Rocket.Chat/pull/32493)) Improved Engagement Dashboard's "Channels" tab performance by not returning rooms that had no activity in the analyzed period + +- ([#32800](https://github.com/RocketChat/Rocket.Chat/pull/32800)) Added the ability to filter chats by `queued` on the Current Chats Omnichannel page + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 24f7df4894, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 +
+ +## 0.5.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 +
+ ## 0.5.1 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 762617edfa49..24e80c1f5356 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "0.5.1", + "version": "0.6.0-rc.2", "private": true, "devDependencies": { "@types/jest": "~29.5.12", diff --git a/packages/model-typings/src/index.ts b/packages/model-typings/src/index.ts index 23e77ff1de29..61ad5d1f5c55 100644 --- a/packages/model-typings/src/index.ts +++ b/packages/model-typings/src/index.ts @@ -79,3 +79,4 @@ export * from './models/IAuditLogModel'; export * from './models/ICronHistoryModel'; export * from './models/IMigrationsModel'; export * from './models/IModerationReportsModel'; +export * from './updater'; diff --git a/packages/model-typings/src/models/ILivechatRoomsModel.ts b/packages/model-typings/src/models/ILivechatRoomsModel.ts index d4da1d7d8159..345ecb2d768d 100644 --- a/packages/model-typings/src/models/ILivechatRoomsModel.ts +++ b/packages/model-typings/src/models/ILivechatRoomsModel.ts @@ -9,6 +9,7 @@ import type { import type { FindCursor, UpdateResult, AggregationCursor, Document, FindOptions, DeleteResult, Filter } from 'mongodb'; import type { FindPaginated } from '..'; +import type { Updater } from '../updater'; import type { IBaseModel } from './IBaseModel'; type Period = { @@ -30,6 +31,8 @@ type WithOptions = { // TODO: Fix types of model export interface ILivechatRoomsModel extends IBaseModel { + getUpdater(): Updater; + getQueueMetrics(params: { departmentId: any; agentId: any; includeOfflineAgents: any; options?: any }): any; findAllNumberOfAbandonedRooms(params: Period & WithDepartment & WithOnlyCount & WithOptions): Promise; @@ -208,11 +211,12 @@ export interface ILivechatRoomsModel extends IBaseModel { setResponseByRoomId(roomId: string, responseBy: IOmnichannelRoom['responseBy']): Promise; setNotResponseByRoomId(roomId: string): Promise; setAgentLastMessageTs(roomId: string): Promise; - saveAnalyticsDataByRoomId( + getAnalyticsUpdateQueryByRoomId( room: IOmnichannelRoom, message: IMessage, - analyticsData?: Record, - ): Promise; + analyticsData: Record | undefined, + updater?: Updater, + ): Promise>; getTotalConversationsBetweenDate(t: 'l', date: { gte: Date; lt: Date }, data?: { departmentId: string }): Promise; getAnalyticsMetricsBetweenDate( t: 'l', @@ -240,7 +244,7 @@ export interface ILivechatRoomsModel extends IBaseModel { removeAgentByRoomId(roomId: string): Promise; removeByVisitorToken(token: string): Promise; removeById(_id: string): Promise; - setVisitorLastMessageTimestampByRoomId(roomId: string, lastMessageTs: Date): Promise; + getVisitorLastMessageTsUpdateQueryByRoomId(lastMessageTs: Date, updater?: Updater): Updater; setVisitorInactivityInSecondsById(roomId: string, visitorInactivity: any): Promise; changeVisitorByRoomId(roomId: string, visitor: { _id: string; username: string; token: string }): Promise; unarchiveOneById(roomId: string): Promise; diff --git a/packages/model-typings/src/models/IRoomsModel.ts b/packages/model-typings/src/models/IRoomsModel.ts index f9daef91dece..a88a5bde7f4e 100644 --- a/packages/model-typings/src/models/IRoomsModel.ts +++ b/packages/model-typings/src/models/IRoomsModel.ts @@ -119,6 +119,8 @@ export interface IRoomsModel extends IBaseModel { setRoomNameById(roomId: IRoom['_id'], name: IRoom['name']): Promise; + setSidepanelById(roomId: IRoom['_id'], sidepanel: IRoom['sidepanel']): Promise; + setFnameById(_id: IRoom['_id'], fname: IRoom['fname']): Promise; setRoomTopicById(roomId: IRoom['_id'], topic: IRoom['description']): Promise; diff --git a/packages/model-typings/src/updater.ts b/packages/model-typings/src/updater.ts new file mode 100644 index 000000000000..33ec78f4b86b --- /dev/null +++ b/packages/model-typings/src/updater.ts @@ -0,0 +1,36 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import type { Join, NestedPaths, PropertyType, ArrayElement, NestedPathsOfType, Filter } from 'mongodb'; + +export interface Updater { + set

, K extends keyof P>(key: K, value: P[K]): Updater; + unset>(key: K): Updater; + inc>(key: K, value: number): Updater; + addToSet>(key: K, value: AddToSetProps[K]): Updater; + persist(query: Filter): Promise; + hasChanges(): boolean; +} + +export type SetProps = Readonly< + { + [Property in Join, '.'>]: PropertyType; + } & { + [Property in `${NestedPathsOfType}.$${`[${string}]` | ''}`]: ArrayElement< + PropertyType + >; + } & { + [Property in `${NestedPathsOfType[]>}.$${`[${string}]` | ''}.${string}`]: any; + } +>; + +type GetType = { + [Key in keyof T]: K extends T[Key] ? T[Key] : never; +}; + +type OmitNever = { [K in keyof T as T[K] extends never ? never : K]: T[K] }; + +// only allow optional properties +export type UnsetProps = OmitNever, undefined>>; + +export type IncProps = OmitNever, number>>; + +export type AddToSetProps = OmitNever, any[]>>; diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index 3bb8885897be..375dd26f6aeb 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,42 @@ # @rocket.chat/models +## 0.2.0-rc.2 + +### Patch Changes + +-

Updated dependencies []: + + - @rocket.chat/model-typings@0.6.0-rc.2 +
+ +## 0.2.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + - @rocket.chat/model-typings@0.6.0-rc.1 +
+ +## 0.2.0-rc.0 + +### Minor Changes + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + +### Patch Changes + +-
Updated dependencies [439faa87d3, 03c8b066f9, 2d89a0c448, 439faa87d3, 264d7d5496]: + + - @rocket.chat/model-typings@0.6.0-rc.0 +
+ +### Patch Changes + +-
Updated dependencies []: + - @rocket.chat/model-typings@0.5.2 +
+ ## 0.1.1 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index 42467b95194c..7ff6b9ee2b8f 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,13 +1,13 @@ { "name": "@rocket.chat/models", - "version": "0.1.1", + "version": "0.2.0-rc.2", "private": true, "devDependencies": { "@swc/core": "^1.3.95", "@swc/jest": "^0.2.29", "@types/jest": "~29.5.12", "eslint": "~8.45.0", - "jest": "~29.7.0", + "jest": "^29.7.0", "ts-jest": "~29.1.1", "typescript": "~5.3.3" }, diff --git a/packages/models/src/index.ts b/packages/models/src/index.ts index e1cf91f1b0ee..655a94923feb 100644 --- a/packages/models/src/index.ts +++ b/packages/models/src/index.ts @@ -88,6 +88,7 @@ export function getCollectionName(name: string): string { } export { registerModel } from './proxify'; +export { type Updater, UpdaterImpl } from './updater'; export const Apps = proxify('IAppsModel'); export const AppsTokens = proxify('IAppsTokensModel'); diff --git a/packages/models/src/updater.spec.ts b/packages/models/src/updater.spec.ts new file mode 100644 index 000000000000..4decc57d7c3b --- /dev/null +++ b/packages/models/src/updater.spec.ts @@ -0,0 +1,192 @@ +import { UpdaterImpl } from './updater'; + +test('updater typings', () => { + const updater = new UpdaterImpl<{ + _id: string; + t: 'l'; + a: { + b: string; + }; + c?: number; + + d?: { + e: string; + }; + e: string[]; + }>({} as any); + + updater.addToSet('e', 'a'); + + // @ts-expect-error + updater.addToSet('e', 1); + // @ts-expect-error + updater.addToSet('a', 'b'); + + // @ts-expect-error + updater.set('njame', 1); + // @ts-expect-error + updater.set('ttes', 1); + // @ts-expect-error + updater.set('t', 'a'); + updater.set('t', 'l'); + // @ts-expect-error + updater.set('a', 'b'); + // @ts-expect-error + updater.set('c', 'b'); + updater.set('c', 1); + + updater.set('a', { + b: 'set', + }); + updater.set('a.b', 'test'); + + // @ts-expect-error + updater.unset('a'); + + updater.unset('c'); + + updater.unset('d'); + + updater.unset('d.e'); + // @ts-expect-error + updater.inc('d', 1); + updater.inc('c', 1); +}); + +test('updater $set operations', async () => { + const updateOne = jest.fn(); + + const updater = new UpdaterImpl<{ + _id: string; + t: 'l'; + a: { + b: string; + }; + c?: number; + }>({ + updateOne, + } as any); + + updater.set('a', { + b: 'set', + }); + + await updater.persist({ + _id: 'test', + }); + + expect(updateOne).toBeCalledWith( + { + _id: 'test', + }, + { $set: { a: { b: 'set' } } }, + ); +}); + +test('updater $unset operations', async () => { + const updateOne = jest.fn(); + + const updater = new UpdaterImpl<{ + _id: string; + t: 'l'; + a: { + b: string; + }; + c?: number; + }>({ + updateOne, + } as any); + + updater.unset('c'); + + await updater.persist({ + _id: 'test', + }); + + expect(updateOne).toBeCalledWith( + { + _id: 'test', + }, + { $unset: { c: 1 } }, + ); +}); + +test('updater inc multiple operations', async () => { + const updateOne = jest.fn(); + + const updater = new UpdaterImpl<{ + _id: string; + t: 'l'; + a: { + b: string; + }; + c?: number; + }>({ + updateOne, + } as any); + + updater.inc('c', 1); + updater.inc('c', 1); + + await updater.persist({ + _id: 'test', + }); + + expect(updateOne).toBeCalledWith( + { + _id: 'test', + }, + { $inc: { c: 2 } }, + ); +}); + +test('it should add items to array', async () => { + const updateOne = jest.fn(); + const updater = new UpdaterImpl<{ + _id: string; + a: string[]; + }>({ + updateOne, + } as any); + + updater.addToSet('a', 'b'); + updater.addToSet('a', 'c'); + + await updater.persist({ + _id: 'test', + }); + + expect(updateOne).toBeCalledWith( + { + _id: 'test', + }, + { $addToSet: { $each: { a: ['b', 'c'] } } }, + ); +}); + +test('it should persist only once', async () => { + const updateOne = jest.fn(); + + const updater = new UpdaterImpl<{ + _id: string; + t: 'l'; + a: { + b: string; + }; + c?: number; + }>({ + updateOne, + } as any); + + updater.set('a', { + b: 'set', + }); + + await updater.persist({ + _id: 'test', + }); + + expect(updateOne).toBeCalledTimes(1); + + expect(() => updater.persist({ _id: 'test' })).rejects.toThrow(); +}); diff --git a/packages/models/src/updater.ts b/packages/models/src/updater.ts new file mode 100644 index 000000000000..ef163ea09e40 --- /dev/null +++ b/packages/models/src/updater.ts @@ -0,0 +1,84 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import type { IBaseModel, Updater, SetProps, UnsetProps, IncProps, AddToSetProps } from '@rocket.chat/model-typings'; +import type { UpdateFilter, Filter } from 'mongodb'; + +type ArrayElementType = T extends (infer E)[] ? E : T; + +type Keys = keyof SetProps; + +export class UpdaterImpl implements Updater { + private _set: Map, any> | undefined; + + private _unset: Set> | undefined; + + private _inc: Map, number> | undefined; + + private _addToSet: Map, any[]> | undefined; + + private dirty = false; + + constructor(private model: IBaseModel) {} + + set

, K extends keyof P>(key: K, value: P[K]) { + this._set = this._set ?? new Map, any>(); + this._set.set(key as Keys, value); + return this; + } + + unset>(key: K): Updater { + this._unset = this._unset ?? new Set>(); + this._unset.add(key); + return this; + } + + inc>(key: K, value: number): Updater { + this._inc = this._inc ?? new Map, number>(); + + const prev = this._inc.get(key) ?? 0; + this._inc.set(key, prev + value); + return this; + } + + addToSet>(key: K, value: ArrayElementType[K]>): Updater { + this._addToSet = this._addToSet ?? new Map, any[]>(); + + const prev = this._addToSet.get(key) ?? []; + this._addToSet.set(key, [...prev, value]); + return this; + } + + async persist(query: Filter): Promise { + if (this.dirty) { + throw new Error('Updater is not dirty'); + } + + if ((process.env.NODE_ENV === 'development' || process.env.TEST_MODE) && !this.hasChanges()) { + throw new Error('Nothing to update'); + } + + this.dirty = true; + + const update = this.getUpdateFilter(); + try { + await this.model.updateOne(query, update); + } catch (error) { + console.error('Failed to update', JSON.stringify(query), JSON.stringify(update, null, 2)); + throw error; + } + } + + hasChanges() { + return Object.keys(this.getUpdateFilter()).length > 0; + } + + private getUpdateFilter() { + return { + ...(this._set && { $set: Object.fromEntries(this._set) }), + ...(this._unset && { $unset: Object.fromEntries([...this._unset.values()].map((k) => [k, 1])) }), + ...(this._inc && { $inc: Object.fromEntries(this._inc) }), + ...(this._addToSet && { $addToSet: { $each: Object.fromEntries(this._addToSet) } }), + } as unknown as UpdateFilter; + } +} + +export { Updater }; diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 5bb9404f1b0a..3be5f4643578 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,56 @@ # @rocket.chat/rest-typings +## 6.11.0-rc.2 + +### Patch Changes + +-

Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 +
+ +## 6.11.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 +
+ +## 6.11.0-rc.0 + +### Minor Changes + +- ([#32800](https://github.com/RocketChat/Rocket.Chat/pull/32800)) Added the ability to filter chats by `queued` on the Current Chats Omnichannel page + +### Patch Changes + +- ([#32719](https://github.com/RocketChat/Rocket.Chat/pull/32719)) Added the `user` param to apps-engine update method call, allowing apps' new `onUpdate` hook to know who triggered the update. + +-
Updated dependencies [2d89a0c448, 24f7df4894, b8e5887fb9]: + + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/ui-kit@0.36.0-rc.0 +
+ +## 6.10.2 + +### Patch Changes + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from being updated or uninstalled in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that prevented apps from handling errors during execution in some cases + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Improved Apps-Engine installation to prevent start up errors on manual installation setups + +- ([#32935](https://github.com/RocketChat/Rocket.Chat/pull/32935)) Fixed an issue that caused the video conference button on rooms to not recognize a video conference provider app in some cases + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 +
+ ## 6.10.1 ### Patch Changes diff --git a/packages/rest-typings/src/v1/teams/index.ts b/packages/rest-typings/src/v1/teams/index.ts index 0a1583b66474..d63e6da8bd8a 100644 --- a/packages/rest-typings/src/v1/teams/index.ts +++ b/packages/rest-typings/src/v1/teams/index.ts @@ -89,6 +89,7 @@ export type TeamsEndpoints = { }; }; owner?: IUser['_id']; + sidepanel?: IRoom['sidepanel']; }) => { team: ITeam; }; diff --git a/packages/tools/CHANGELOG.md b/packages/tools/CHANGELOG.md index 86ecb2a3c6ec..bda8e7510825 100644 --- a/packages/tools/CHANGELOG.md +++ b/packages/tools/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/tools +## 0.2.2-rc.0 + +### Patch Changes + +- ([#32527](https://github.com/RocketChat/Rocket.Chat/pull/32527)) Fixed an inconsistent evaluation of the `Accounts_LoginExpiration` setting over the codebase. In some places, it was being used as milliseconds while in others as days. Invalid values produced different results. A helper function was created to centralize the setting validation and the proper value being returned to avoid edge cases. + Negative values may be saved on the settings UI panel but the code will interpret any negative, NaN or 0 value to the default expiration which is 90 days. + ## 0.2.1 ### Patch Changes diff --git a/packages/tools/package.json b/packages/tools/package.json index 717d9e73313d..f10096571981 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/tools", - "version": "0.2.1", + "version": "0.2.2-rc.0", "private": true, "devDependencies": { "@types/jest": "~29.5.12", diff --git a/packages/ui-avatar/CHANGELOG.md b/packages/ui-avatar/CHANGELOG.md index 8b37dbb7fd02..f0b0b7b7fe99 100644 --- a/packages/ui-avatar/CHANGELOG.md +++ b/packages/ui-avatar/CHANGELOG.md @@ -1,5 +1,41 @@ # @rocket.chat/ui-avatar +## 5.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.2 +
+ +## 5.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.1 +
+ +## 5.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 4e8aa575a6]: + + - @rocket.chat/ui-contexts@9.0.0-rc.0 +
+ +## 4.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@8.0.2 +
+ ## 4.0.1 ### Patch Changes diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json index 2c3a4d75b018..71a7d0e8bbf4 100644 --- a/packages/ui-avatar/package.json +++ b/packages/ui-avatar/package.json @@ -1,10 +1,10 @@ { "name": "@rocket.chat/ui-avatar", - "version": "4.0.1", + "version": "5.0.0-rc.2", "private": true, "devDependencies": { "@babel/core": "~7.22.20", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/ui-contexts": "workspace:^", "@types/babel__core": "~7.20.3", "@types/react": "~17.0.69", @@ -31,7 +31,7 @@ ], "peerDependencies": { "@rocket.chat/fuselage": "*", - "@rocket.chat/ui-contexts": "8.0.1", + "@rocket.chat/ui-contexts": "9.0.0-rc.2", "react": "~17.0.2" }, "volta": { diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index c5cd6a2cce8f..a08ff45507d9 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,47 @@ # @rocket.chat/ui-client +## 9.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.2 +
+ +## 9.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.1 +
+ +## 9.0.0-rc.0 + +### Minor Changes + +- ([#32517](https://github.com/RocketChat/Rocket.Chat/pull/32517)) Feature Preview: New Navigation - `Header` and `Contextualbar` size improvements consistent with the new global `NavBar` + +### Patch Changes + +- ([#32024](https://github.com/RocketChat/Rocket.Chat/pull/32024)) Implemented a new tab to the users page called 'Active', this tab lists all users who have logged in for the first time and are active. + +-
Updated dependencies [2d89a0c448, 4e8aa575a6]: + + - @rocket.chat/ui-contexts@9.0.0-rc.0 +
+ +## 8.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@8.0.2 +
+ ## 8.0.1 ### Patch Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 983808fc8dfc..0e0b3778993c 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,12 +1,12 @@ { "name": "@rocket.chat/ui-client", - "version": "8.0.1", + "version": "9.0.0-rc.2", "private": true, "devDependencies": { "@babel/core": "~7.22.20", "@react-aria/toolbar": "^3.0.0-beta.1", "@rocket.chat/css-in-js": "~0.31.25", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-hooks": "^0.33.1", "@rocket.chat/icons": "^0.36.0", "@rocket.chat/mock-providers": "workspace:^", @@ -63,7 +63,7 @@ "@rocket.chat/fuselage": "*", "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", - "@rocket.chat/ui-contexts": "8.0.1", + "@rocket.chat/ui-contexts": "9.0.0-rc.2", "react": "~17.0.2" }, "volta": { diff --git a/packages/ui-composer/package.json b/packages/ui-composer/package.json index d738da4186c5..485f4d7ac725 100644 --- a/packages/ui-composer/package.json +++ b/packages/ui-composer/package.json @@ -20,7 +20,7 @@ "@babel/core": "~7.22.20", "@react-aria/toolbar": "^3.0.0-beta.1", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/icons": "^0.36.0", "@storybook/addon-actions": "~6.5.16", "@storybook/addon-docs": "~6.5.16", diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index 9315b5fbe66a..f2bbb77a501c 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,57 @@ # @rocket.chat/ui-contexts +## 9.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.2 + - @rocket.chat/rest-typings@6.11.0-rc.2 + - @rocket.chat/ddp-client@0.3.3-rc.2 +
+ +## 9.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@6.11.0-rc.1 + - @rocket.chat/rest-typings@6.11.0-rc.1 + - @rocket.chat/ddp-client@0.3.2-rc.1 +
+ +## 9.0.0-rc.0 + +### Minor Changes + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + +### Patch Changes + +- ([#32482](https://github.com/RocketChat/Rocket.Chat/pull/32482)) Fixed an issue with blocked login when dismissed 2FA modal by clicking outside of it or pressing the escape key + +-
Updated dependencies [b4bbcbfc9a, 25da5280a5, 1b7b1161cf, 03c8b066f9, 2d89a0c448, 24f7df4894, 3ffe4a2944, 3b4b19cfc5, 264d7d5496, b8e5887fb9]: + + - @rocket.chat/i18n@0.6.0-rc.0 + - @rocket.chat/core-typings@6.11.0-rc.0 + - @rocket.chat/rest-typings@6.11.0-rc.0 + - @rocket.chat/ddp-client@0.3.2-rc.0 +
+ +## 8.0.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/core-typings@6.10.2 + - @rocket.chat/rest-typings@6.10.2 + - @rocket.chat/ddp-client@0.3.2 +
+ ## 8.0.1 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index 5c0b7370c008..c98c05147662 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "8.0.1", + "version": "9.0.0-rc.2", "private": true, "devDependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/ui-kit/CHANGELOG.md b/packages/ui-kit/CHANGELOG.md index 1e920681e13d..c82da29ef930 100644 --- a/packages/ui-kit/CHANGELOG.md +++ b/packages/ui-kit/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 0.36.0-rc.0 + +### Minor Changes + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + ## 0.35.0 ### Minor Changes diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index 193c21465125..4c03f96828c6 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-kit", - "version": "0.35.0", + "version": "0.36.0-rc.0", "description": "Interactive UI elements for Rocket.Chat Apps", "homepage": "https://rocket.chat", "author": { diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index 0849b46fc58b..4acd711bd304 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/ui-video-conf +## 9.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.2 + - @rocket.chat/ui-avatar@5.0.0-rc.2 +
+ +## 9.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.1 + - @rocket.chat/ui-avatar@5.0.0-rc.1 +
+ +## 9.0.0-rc.0 + +### Minor Changes + +- ([#32793](https://github.com/RocketChat/Rocket.Chat/pull/32793)) New Feature: Video Conference Persistent Chat. + This feature provides a discussion id for conference provider apps to store the chat messages exchanged during the conferences, so that those users may then access those messages again at any time through Rocket.Chat. + +### Patch Changes + +-
Updated dependencies [2d89a0c448, 4e8aa575a6]: + + - @rocket.chat/ui-contexts@9.0.0-rc.0 + - @rocket.chat/ui-avatar@5.0.0-rc.0 +
+ +## 8.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@8.0.2 + - @rocket.chat/ui-avatar@4.0.2 +
+ ## 8.0.1 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 1318b13850c6..9b34b1de29ac 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,12 +1,12 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "8.0.1", + "version": "9.0.0-rc.2", "private": true, "devDependencies": { "@babel/core": "~7.22.20", "@rocket.chat/css-in-js": "~0.31.25", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-hooks": "^0.33.1", "@rocket.chat/icons": "^0.36.0", "@rocket.chat/styled": "~0.31.25", @@ -36,8 +36,8 @@ "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-avatar": "4.0.1", - "@rocket.chat/ui-contexts": "8.0.1", + "@rocket.chat/ui-avatar": "5.0.0-rc.2", + "@rocket.chat/ui-contexts": "9.0.0-rc.2", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/uikit-playground/CHANGELOG.md b/packages/uikit-playground/CHANGELOG.md index 7750377da8a2..d1aa257adf5c 100644 --- a/packages/uikit-playground/CHANGELOG.md +++ b/packages/uikit-playground/CHANGELOG.md @@ -1,5 +1,49 @@ # @rocket.chat/uikit-playground +## 0.3.3-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/fuselage-ui-kit@9.0.0-rc.2 + - @rocket.chat/ui-contexts@9.0.0-rc.2 + - @rocket.chat/ui-avatar@5.0.0-rc.2 +
+ +## 0.3.3-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/fuselage-ui-kit@9.0.0-rc.1 + - @rocket.chat/ui-contexts@9.0.0-rc.1 + - @rocket.chat/ui-avatar@5.0.0-rc.1 +
+ +## 0.3.3-rc.0 + +### Patch Changes + +-
Updated dependencies [88e5219bd2, 2d89a0c448, 4e8aa575a6, b8e5887fb9]: + + - @rocket.chat/fuselage-ui-kit@9.0.0-rc.0 + - @rocket.chat/ui-contexts@9.0.0-rc.0 + - @rocket.chat/ui-avatar@5.0.0-rc.0 +
+ +## 0.3.2 + +### Patch Changes + +-
Updated dependencies [ca6a9d8de8, ca6a9d8de8, ca6a9d8de8, ca6a9d8de8]: + + - @rocket.chat/fuselage-ui-kit@8.0.2 + - @rocket.chat/ui-contexts@8.0.2 + - @rocket.chat/ui-avatar@4.0.2 +
+ ## 0.3.1 ### Patch Changes diff --git a/packages/uikit-playground/package.json b/packages/uikit-playground/package.json index d33cba9aeebc..7ffc102699bc 100644 --- a/packages/uikit-playground/package.json +++ b/packages/uikit-playground/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/uikit-playground", "private": true, - "version": "0.3.1", + "version": "0.3.3-rc.2", "type": "module", "scripts": { "dev": "vite", @@ -15,10 +15,10 @@ "@codemirror/tooltip": "^0.19.16", "@lezer/highlight": "^1.1.6", "@rocket.chat/css-in-js": "~0.31.25", - "@rocket.chat/fuselage": "^0.56.0", + "@rocket.chat/fuselage": "^0.57.0", "@rocket.chat/fuselage-hooks": "^0.33.1", "@rocket.chat/fuselage-polyfills": "~0.31.25", - "@rocket.chat/fuselage-toastbar": "^0.32.0", + "@rocket.chat/fuselage-toastbar": "^0.33.0", "@rocket.chat/fuselage-tokens": "^0.33.1", "@rocket.chat/fuselage-ui-kit": "workspace:~", "@rocket.chat/icons": "^0.36.0", diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 447b861cc456..e6d4fa500e47 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,48 @@ # @rocket.chat/web-ui-registration +## 9.0.0-rc.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.2 +
+ +## 9.0.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@9.0.0-rc.1 +
+ +## 9.0.0-rc.0 + +### Patch Changes + +- ([#32570](https://github.com/RocketChat/Rocket.Chat/pull/32570)) Login services button was not respecting the button color and text color settings. Implemented a fix to respect these settings and change the button colors accordingly. + + Added a warning on all settings which allow admins to change OAuth button colors, so that they can be alerted about WCAG (Web Content Accessibility Guidelines) compliance. + +- ([#32482](https://github.com/RocketChat/Rocket.Chat/pull/32482)) Fixed an issue with blocked login when dismissed 2FA modal by clicking outside of it or pressing the escape key + +-
Updated dependencies [8fc6ca8b4e, 2d89a0c448, 4e8aa575a6]: + + - @rocket.chat/tools@0.2.2-rc.0 + - @rocket.chat/ui-contexts@9.0.0-rc.0 +
+ +## 8.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@8.0.2 +
+ ## 8.0.1 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 2d79d92ee0c0..1fbc7ee93591 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/web-ui-registration", - "version": "8.0.1", + "version": "9.0.0-rc.2", "private": true, "homepage": "https://rocket.chat", "main": "./dist/index.js", @@ -50,8 +50,8 @@ }, "peerDependencies": { "@rocket.chat/layout": "*", - "@rocket.chat/tools": "0.2.1", - "@rocket.chat/ui-contexts": "8.0.1", + "@rocket.chat/tools": "0.2.2-rc.0", + "@rocket.chat/ui-contexts": "9.0.0-rc.2", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", diff --git a/packages/web-ui-registration/src/LoginServicesButton.tsx b/packages/web-ui-registration/src/LoginServicesButton.tsx index ba16d360d9c1..d9f43b0e484c 100644 --- a/packages/web-ui-registration/src/LoginServicesButton.tsx +++ b/packages/web-ui-registration/src/LoginServicesButton.tsx @@ -15,8 +15,6 @@ const LoginServicesButton = ({ className, disabled, setError, - buttonColor, - buttonLabelColor, ...props }: T & { className?: string; @@ -45,8 +43,6 @@ const LoginServicesButton = ({ alignItems='center' display='flex' justifyContent='center' - color={buttonLabelColor} - backgroundColor={buttonColor} > {buttonLabelText || t('Sign_in_with__provider__', { provider: title })} diff --git a/yarn.lock b/yarn.lock index 89cea10584d5..41752957bbfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8876,9 +8876,11 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-toastbar@npm:^0.32.0": - version: 0.32.0 - resolution: "@rocket.chat/fuselage-toastbar@npm:0.32.0" +"@rocket.chat/fuselage-toastbar@npm:^0.33.0": + version: 0.33.0 + resolution: "@rocket.chat/fuselage-toastbar@npm:0.33.0" + dependencies: + react-timing-hooks: ~4.0.2 peerDependencies: "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-hooks": "*" @@ -8886,7 +8888,7 @@ __metadata: "@rocket.chat/styled": "*" react: ^17.0.2 react-dom: ^17.0.2 - checksum: 5e78516aee6446da4c76dac10ff83adb4deeb86d6111c42419f0629c35ec64b19ae6ab563f20b5efa2600c9c723b9096edc3c166e960fd25cfda1f07c4df3f3f + checksum: 97993ad2acdc5a742b71c94f9d321e090769c4116ab52208c2103ca41d4455bc4cd15c0cd0a1f8545144910a8c7f7de645ee150c0d8fc6b746001244690de2ed languageName: node linkType: hard @@ -8908,7 +8910,7 @@ __metadata: "@rocket.chat/apps-engine": alpha "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-hooks": ^0.33.1 "@rocket.chat/fuselage-polyfills": ~0.31.25 "@rocket.chat/gazzodown": "workspace:^" @@ -8960,19 +8962,19 @@ __metadata: "@rocket.chat/icons": "*" "@rocket.chat/prettier-config": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-avatar": 4.0.1 - "@rocket.chat/ui-contexts": 8.0.1 - "@rocket.chat/ui-kit": 0.35.0 - "@rocket.chat/ui-video-conf": 8.0.1 + "@rocket.chat/ui-avatar": 5.0.0-rc.2 + "@rocket.chat/ui-contexts": 9.0.0-rc.2 + "@rocket.chat/ui-kit": 0.36.0-rc.0 + "@rocket.chat/ui-video-conf": 9.0.0-rc.2 "@tanstack/react-query": "*" react: "*" react-dom: "*" languageName: unknown linkType: soft -"@rocket.chat/fuselage@npm:^0.56.0": - version: 0.56.0 - resolution: "@rocket.chat/fuselage@npm:0.56.0" +"@rocket.chat/fuselage@npm:^0.57.0": + version: 0.57.0 + resolution: "@rocket.chat/fuselage@npm:0.57.0" dependencies: "@rocket.chat/css-in-js": ^0.31.25 "@rocket.chat/css-supports": ^0.31.25 @@ -8990,7 +8992,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 react-virtuoso: 1.2.4 - checksum: 1817eb660c9581906a645b8d39cd0377395085ab7dc204d7afd3b2b1c1a36000ea3727a8263ff02dc3d51b8280e1b51e42d062587d685f7e0be1a7a6eb97c5bf + checksum: 80f49f79ca6655067f528a9b427a7bfabbcf1583d0c9f3ed40b79217c7a495e93e0335e15e29b23237bf2ccb5ee5fa063051b40bf4d539439f452ffd45fdb537 languageName: node linkType: hard @@ -9001,7 +9003,7 @@ __metadata: "@babel/core": ~7.22.20 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/css-in-js": ~0.31.25 - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-tokens": ^0.33.1 "@rocket.chat/message-parser": "workspace:^" "@rocket.chat/styled": ~0.31.25 @@ -9052,8 +9054,8 @@ __metadata: "@rocket.chat/fuselage-tokens": "*" "@rocket.chat/message-parser": 0.31.29 "@rocket.chat/styled": "*" - "@rocket.chat/ui-client": 8.0.1 - "@rocket.chat/ui-contexts": 8.0.1 + "@rocket.chat/ui-client": 9.0.0-rc.2 + "@rocket.chat/ui-contexts": 9.0.0-rc.2 katex: "*" react: "*" languageName: unknown @@ -9382,10 +9384,10 @@ __metadata: "@rocket.chat/favicon": "workspace:^" "@rocket.chat/forked-matrix-appservice-bridge": ^4.0.2 "@rocket.chat/forked-matrix-bot-sdk": ^0.6.0-beta.3 - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-hooks": ^0.33.1 "@rocket.chat/fuselage-polyfills": ~0.31.25 - "@rocket.chat/fuselage-toastbar": ^0.32.0 + "@rocket.chat/fuselage-toastbar": ^0.33.0 "@rocket.chat/fuselage-tokens": ^0.33.1 "@rocket.chat/fuselage-ui-kit": "workspace:^" "@rocket.chat/gazzodown": "workspace:^" @@ -9774,7 +9776,7 @@ __metadata: "@swc/jest": ^0.2.29 "@types/jest": ~29.5.12 eslint: ~8.45.0 - jest: ~29.7.0 + jest: ^29.7.0 ts-jest: ~29.1.1 typescript: ~5.3.3 languageName: unknown @@ -10280,7 +10282,7 @@ __metadata: resolution: "@rocket.chat/ui-avatar@workspace:packages/ui-avatar" dependencies: "@babel/core": ~7.22.20 - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/ui-contexts": "workspace:^" "@types/babel__core": ~7.20.3 "@types/react": ~17.0.69 @@ -10294,7 +10296,7 @@ __metadata: typescript: ~5.3.3 peerDependencies: "@rocket.chat/fuselage": "*" - "@rocket.chat/ui-contexts": 8.0.1 + "@rocket.chat/ui-contexts": 9.0.0-rc.2 react: ~17.0.2 languageName: unknown linkType: soft @@ -10306,7 +10308,7 @@ __metadata: "@babel/core": ~7.22.20 "@react-aria/toolbar": ^3.0.0-beta.1 "@rocket.chat/css-in-js": ~0.31.25 - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-hooks": ^0.33.1 "@rocket.chat/icons": ^0.36.0 "@rocket.chat/mock-providers": "workspace:^" @@ -10347,7 +10349,7 @@ __metadata: "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-hooks": "*" "@rocket.chat/icons": "*" - "@rocket.chat/ui-contexts": 8.0.1 + "@rocket.chat/ui-contexts": 9.0.0-rc.2 react: ~17.0.2 languageName: unknown linkType: soft @@ -10359,7 +10361,7 @@ __metadata: "@babel/core": ~7.22.20 "@react-aria/toolbar": ^3.0.0-beta.1 "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/icons": ^0.36.0 "@storybook/addon-actions": ~6.5.16 "@storybook/addon-docs": ~6.5.16 @@ -10370,12 +10372,16 @@ __metadata: "@storybook/testing-library": ~0.0.13 "@types/babel__core": ~7.20.3 "@types/jest": ~29.5.12 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 eslint: ~8.45.0 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 eslint-plugin-storybook: ~0.6.15 jest: ~29.7.0 + react: ~17.0.2 react-docgen-typescript-plugin: ~1.0.5 + react-dom: ~17.0.2 ts-jest: ~29.1.1 typescript: ~5.3.3 peerDependencies: @@ -10452,7 +10458,7 @@ __metadata: resolution: "@rocket.chat/ui-theming@workspace:ee/packages/ui-theming" dependencies: "@rocket.chat/css-in-js": ~0.31.25 - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-hooks": ^0.33.1 "@rocket.chat/icons": ^0.36.0 "@rocket.chat/ui-contexts": "workspace:~" @@ -10495,7 +10501,7 @@ __metadata: "@rocket.chat/css-in-js": ~0.31.25 "@rocket.chat/emitter": ~0.31.25 "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-hooks": ^0.33.1 "@rocket.chat/icons": ^0.36.0 "@rocket.chat/styled": ~0.31.25 @@ -10524,8 +10530,8 @@ __metadata: "@rocket.chat/fuselage-hooks": "*" "@rocket.chat/icons": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-avatar": 4.0.1 - "@rocket.chat/ui-contexts": 8.0.1 + "@rocket.chat/ui-avatar": 5.0.0-rc.2 + "@rocket.chat/ui-contexts": 9.0.0-rc.2 react: ^17.0.2 react-dom: ^17.0.2 languageName: unknown @@ -10540,10 +10546,10 @@ __metadata: "@codemirror/tooltip": ^0.19.16 "@lezer/highlight": ^1.1.6 "@rocket.chat/css-in-js": ~0.31.25 - "@rocket.chat/fuselage": ^0.56.0 + "@rocket.chat/fuselage": ^0.57.0 "@rocket.chat/fuselage-hooks": ^0.33.1 "@rocket.chat/fuselage-polyfills": ~0.31.25 - "@rocket.chat/fuselage-toastbar": ^0.32.0 + "@rocket.chat/fuselage-toastbar": ^0.33.0 "@rocket.chat/fuselage-tokens": ^0.33.1 "@rocket.chat/fuselage-ui-kit": "workspace:~" "@rocket.chat/icons": ^0.36.0 @@ -10614,8 +10620,8 @@ __metadata: typescript: ~5.3.3 peerDependencies: "@rocket.chat/layout": "*" - "@rocket.chat/tools": 0.2.1 - "@rocket.chat/ui-contexts": 8.0.1 + "@rocket.chat/tools": 0.2.2-rc.0 + "@rocket.chat/ui-contexts": 9.0.0-rc.2 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" @@ -28453,7 +28459,7 @@ __metadata: languageName: node linkType: hard -"jest@npm:~29.7.0": +"jest@npm:^29.7.0, jest@npm:~29.7.0": version: 29.7.0 resolution: "jest@npm:29.7.0" dependencies: @@ -35800,6 +35806,15 @@ __metadata: languageName: node linkType: hard +"react-timing-hooks@npm:~4.0.2": + version: 4.0.2 + resolution: "react-timing-hooks@npm:4.0.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 95ebcaffe400f3e1af32bd82eb92258c5e1473e43a7edf65879692117946105bb21f4e91046fdc85c8c737997be1d8148bffacfde8a8a9ee835d81415048119e + languageName: node + linkType: hard + "react-virtuoso@npm:^4.7.1": version: 4.7.1 resolution: "react-virtuoso@npm:4.7.1" @@ -36845,7 +36860,7 @@ __metadata: "@types/js-yaml": ^4.0.8 node-gyp: ^9.4.1 ts-node: ^10.9.2 - turbo: ^2.0.9 + turbo: latest languageName: unknown linkType: soft @@ -40378,58 +40393,58 @@ __metadata: languageName: node linkType: hard -"turbo-darwin-64@npm:2.0.9": - version: 2.0.9 - resolution: "turbo-darwin-64@npm:2.0.9" +"turbo-darwin-64@npm:2.0.11": + version: 2.0.11 + resolution: "turbo-darwin-64@npm:2.0.11" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"turbo-darwin-arm64@npm:2.0.9": - version: 2.0.9 - resolution: "turbo-darwin-arm64@npm:2.0.9" +"turbo-darwin-arm64@npm:2.0.11": + version: 2.0.11 + resolution: "turbo-darwin-arm64@npm:2.0.11" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"turbo-linux-64@npm:2.0.9": - version: 2.0.9 - resolution: "turbo-linux-64@npm:2.0.9" +"turbo-linux-64@npm:2.0.11": + version: 2.0.11 + resolution: "turbo-linux-64@npm:2.0.11" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"turbo-linux-arm64@npm:2.0.9": - version: 2.0.9 - resolution: "turbo-linux-arm64@npm:2.0.9" +"turbo-linux-arm64@npm:2.0.11": + version: 2.0.11 + resolution: "turbo-linux-arm64@npm:2.0.11" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"turbo-windows-64@npm:2.0.9": - version: 2.0.9 - resolution: "turbo-windows-64@npm:2.0.9" +"turbo-windows-64@npm:2.0.11": + version: 2.0.11 + resolution: "turbo-windows-64@npm:2.0.11" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"turbo-windows-arm64@npm:2.0.9": - version: 2.0.9 - resolution: "turbo-windows-arm64@npm:2.0.9" +"turbo-windows-arm64@npm:2.0.11": + version: 2.0.11 + resolution: "turbo-windows-arm64@npm:2.0.11" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"turbo@npm:^2.0.9": - version: 2.0.9 - resolution: "turbo@npm:2.0.9" - dependencies: - turbo-darwin-64: 2.0.9 - turbo-darwin-arm64: 2.0.9 - turbo-linux-64: 2.0.9 - turbo-linux-arm64: 2.0.9 - turbo-windows-64: 2.0.9 - turbo-windows-arm64: 2.0.9 +"turbo@npm:latest": + version: 2.0.11 + resolution: "turbo@npm:2.0.11" + dependencies: + turbo-darwin-64: 2.0.11 + turbo-darwin-arm64: 2.0.11 + turbo-linux-64: 2.0.11 + turbo-linux-arm64: 2.0.11 + turbo-windows-64: 2.0.11 + turbo-windows-arm64: 2.0.11 dependenciesMeta: turbo-darwin-64: optional: true @@ -40445,7 +40460,7 @@ __metadata: optional: true bin: turbo: bin/turbo - checksum: 11896c5ede91c081161cc481effb922733dbae234277345144e4f9f069aeed0f2c38f9f9d25116773c348ebfe149631374e204f256a8d74486943be983547214 + checksum: a2fcb17b2549102dcd912799319a5c31cbabc3fcb76241bac1d2231ee4e1911789cd4e6b4eb050f9e8548ef89143ee77be59eb35b1843cf12b42f136ef176a0c languageName: node linkType: hard