diff --git a/.changeset/afraid-parents-bake.md b/.changeset/afraid-parents-bake.md deleted file mode 100644 index af2b8a10d4899..0000000000000 --- a/.changeset/afraid-parents-bake.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/rest-typings': minor -'@rocket.chat/meteor': minor ---- - -REST endpoint `/v1/users.createToken` is not deprecated anymore. It now requires a `secret` parameter to generate a token for a user. This change is part of the effort to enhance security by ensuring that tokens are generated with an additional layer of validation. The `secret` parameter is validated against a new environment variable `CREATE_TOKENS_FOR_USERS_SECRET`. diff --git a/.changeset/beige-seahorses-reply.md b/.changeset/beige-seahorses-reply.md deleted file mode 100644 index bf87249b57e07..0000000000000 --- a/.changeset/beige-seahorses-reply.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/web-ui-registration": major ---- - -Removes the deprecated sendConfirmationEmail method diff --git a/.changeset/blue-beans-check.md b/.changeset/blue-beans-check.md deleted file mode 100644 index f1d66153e3f1f..0000000000000 --- a/.changeset/blue-beans-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:removeUnit` method diff --git a/.changeset/breezy-timers-flow.md b/.changeset/breezy-timers-flow.md deleted file mode 100644 index 5894d387b05de..0000000000000 --- a/.changeset/breezy-timers-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Removes the deprecated meteor method: `livechat:saveTag` diff --git a/.changeset/brown-carrots-bathe.md b/.changeset/brown-carrots-bathe.md deleted file mode 100644 index 9e39e63edc9b9..0000000000000 --- a/.changeset/brown-carrots-bathe.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/meteor': patch -'@rocket.chat/rest-typings': patch ---- - -Adds deprecation warning for `livechat:removeMonitor` and new endpoint replacing it; `livechat/monitor.remove` diff --git a/.changeset/brown-llamas-worry.md b/.changeset/brown-llamas-worry.md deleted file mode 100644 index 9cbf74ba7317f..0000000000000 --- a/.changeset/brown-llamas-worry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/rest-typings": patch ---- - -Adds a deprecation warning for `livechat:saveBusinessHour` and new endpoint replacing it; `livechat/business-hours.save` diff --git a/.changeset/bump-patch-1766456337926.md b/.changeset/bump-patch-1766456337926.md deleted file mode 100644 index e1eaa7980afb1..0000000000000 --- a/.changeset/bump-patch-1766456337926.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Bump @rocket.chat/meteor version. diff --git a/.changeset/chatty-dingos-bathe.md b/.changeset/chatty-dingos-bathe.md deleted file mode 100644 index e09c5e1c667e0..0000000000000 --- a/.changeset/chatty-dingos-bathe.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/apps-engine': minor -'@rocket.chat/apps': minor -'@rocket.chat/meteor': minor ---- - -Adds a new method to the Apps-Engine that allows apps to retrieve multiple rooms from database diff --git a/.changeset/chatty-lizards-reflect.md b/.changeset/chatty-lizards-reflect.md deleted file mode 100644 index 17f269cb70a20..0000000000000 --- a/.changeset/chatty-lizards-reflect.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/ddp-client": major ---- - -Removes the deprecated livechat:getTagsList method - -Removes the deprecated livechat:getUnitsFromUser method - -Removes the deprecated livechat:getFirstRoomMessage method - -Removes the deprecated livechat:getDepartmentForwardRestrictions method - diff --git a/.changeset/chatty-roses-help.md b/.changeset/chatty-roses-help.md deleted file mode 100644 index 3c4a5849c8daa..0000000000000 --- a/.changeset/chatty-roses-help.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/core-typings": patch -"@rocket.chat/i18n": patch ---- - -Adds invitation request support to rooms diff --git a/.changeset/chilly-cobras-look.md b/.changeset/chilly-cobras-look.md deleted file mode 100644 index 9e7bba192bba2..0000000000000 --- a/.changeset/chilly-cobras-look.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/i18n': major -'@rocket.chat/meteor': major ---- - -Removes deprecated VoIP permissions diff --git a/.changeset/cold-chairs-taste.md b/.changeset/cold-chairs-taste.md deleted file mode 100644 index e12a576569534..0000000000000 --- a/.changeset/cold-chairs-taste.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes an issue where its not being possible to change the password in account security page diff --git a/.changeset/cold-chefs-rhyme.md b/.changeset/cold-chefs-rhyme.md deleted file mode 100644 index 5dc1bbdc43c81..0000000000000 --- a/.changeset/cold-chefs-rhyme.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Disables read receipts indicators in federated rooms. This feature will be re-enabled when fully compatible with federation. diff --git a/.changeset/cool-turtles-bathe.md b/.changeset/cool-turtles-bathe.md deleted file mode 100644 index ab3f8b80285c6..0000000000000 --- a/.changeset/cool-turtles-bathe.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/meteor': major -'@rocket.chat/media-calls': minor -'@rocket.chat/i18n': minor ---- - -Makes Voice Calls enabled by default when available diff --git a/.changeset/cuddly-eels-perform.md b/.changeset/cuddly-eels-perform.md deleted file mode 100644 index bc99f3c96e302..0000000000000 --- a/.changeset/cuddly-eels-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes members tab > add members not removing selected items diff --git a/.changeset/curly-bats-wink.md b/.changeset/curly-bats-wink.md deleted file mode 100644 index 79bd2e7e37918..0000000000000 --- a/.changeset/curly-bats-wink.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@rocket.chat/model-typings': major -'@rocket.chat/core-typings': major -'@rocket.chat/rest-typings': major -'@rocket.chat/ui-contexts': major -'@rocket.chat/ui-voip': major -'@rocket.chat/models': major -'@rocket.chat/i18n': major -'@rocket.chat/meteor': major -'@rocket.chat/apps-engine': minor -'@rocket.chat/core-services': minor -'@rocket.chat/message-types': minor -'@rocket.chat/ddp-client': minor ---- - -Removes deprecated VoIP from Omnichannel diff --git a/.changeset/cyan-mayflies-juggle.md b/.changeset/cyan-mayflies-juggle.md deleted file mode 100644 index 593798b63ba1c..0000000000000 --- a/.changeset/cyan-mayflies-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:saveUnit` method diff --git a/.changeset/dull-rabbits-add.md b/.changeset/dull-rabbits-add.md deleted file mode 100644 index 1cfd27a2c7701..0000000000000 --- a/.changeset/dull-rabbits-add.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `authorization:removeUserFromRole` method diff --git a/.changeset/dull-tips-look.md b/.changeset/dull-tips-look.md deleted file mode 100644 index 8867fc650dc12..0000000000000 --- a/.changeset/dull-tips-look.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/core-services": patch -"@rocket.chat/federation-matrix": patch ---- - -Fixes an issue where cases of invites that were canceled or disinvited were not being handled. diff --git a/.changeset/empty-buses-walk.md b/.changeset/empty-buses-walk.md deleted file mode 100644 index c24e5acce300e..0000000000000 --- a/.changeset/empty-buses-walk.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/gazzodown": major -"@rocket.chat/i18n": major -"@rocket.chat/ui-client": major ---- - -Promotes Timestamp Parser from preview state to stable diff --git a/.changeset/fair-dryers-behave.md b/.changeset/fair-dryers-behave.md deleted file mode 100644 index a9c57c42042e3..0000000000000 --- a/.changeset/fair-dryers-behave.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/rest-typings': major -'@rocket.chat/meteor': major ---- - -Removes ecdh functionality and related settings diff --git a/.changeset/fast-ligers-unite.md b/.changeset/fast-ligers-unite.md deleted file mode 100644 index eacb88108a0f7..0000000000000 --- a/.changeset/fast-ligers-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/.changeset/fast-walls-eat.md b/.changeset/fast-walls-eat.md deleted file mode 100644 index 1c82cd4c32513..0000000000000 --- a/.changeset/fast-walls-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Removes deprecated meteor method `unmuteUserInRoom` diff --git a/.changeset/few-masks-punch.md b/.changeset/few-masks-punch.md deleted file mode 100644 index cf455b251bd8d..0000000000000 --- a/.changeset/few-masks-punch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated `canAccessRoom` meteor method diff --git a/.changeset/fifty-rice-smash.md b/.changeset/fifty-rice-smash.md deleted file mode 100644 index 51ca36cdc84d4..0000000000000 --- a/.changeset/fifty-rice-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated Realtime API method: `livechat:getAnalyticsChartData` diff --git a/.changeset/five-months-shake.md b/.changeset/five-months-shake.md deleted file mode 100644 index b694672c84358..0000000000000 --- a/.changeset/five-months-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:returnAsInquiry` method diff --git a/.changeset/forty-pears-divide.md b/.changeset/forty-pears-divide.md deleted file mode 100644 index b7c9c57357aff..0000000000000 --- a/.changeset/forty-pears-divide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Removes deprecated method `livechat:removeBusinessHour` diff --git a/.changeset/forty-spiders-sneeze.md b/.changeset/forty-spiders-sneeze.md deleted file mode 100644 index f09f83231e92d..0000000000000 --- a/.changeset/forty-spiders-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `removeCustomField` method diff --git a/.changeset/four-timers-enjoy.md b/.changeset/four-timers-enjoy.md deleted file mode 100644 index 8ce7068fa7bb1..0000000000000 --- a/.changeset/four-timers-enjoy.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@rocket.chat/model-typings': major -'@rocket.chat/core-typings': major -'@rocket.chat/rest-typings': major -'@rocket.chat/models': major -'@rocket.chat/i18n': major -'@rocket.chat/meteor': major -'@rocket.chat/core-services': minor ---- - -Removes Deprecated FreeSwitch integration diff --git a/.changeset/fresh-tables-raise.md b/.changeset/fresh-tables-raise.md deleted file mode 100644 index 89978df7f5421..0000000000000 --- a/.changeset/fresh-tables-raise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes the deprecated `getUserRoles` method in favor of the `/v1/roles.getUsersInPublicRoles` endpoint. diff --git a/.changeset/fuzzy-plants-hammer.md b/.changeset/fuzzy-plants-hammer.md deleted file mode 100644 index 5b4f0a647f889..0000000000000 --- a/.changeset/fuzzy-plants-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': minor ---- - -Changes the position of the buttons in Unique ID change detected modal in order to highlight configuration update instead of new workspace diff --git a/.changeset/fuzzy-teachers-juggle.md b/.changeset/fuzzy-teachers-juggle.md deleted file mode 100644 index fce7559bbcb6a..0000000000000 --- a/.changeset/fuzzy-teachers-juggle.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/mock-providers': patch -'@rocket.chat/meteor': patch ---- - -Fixes an issue that could cause slashcommands to disappear for the user in certain high-availability scenarios diff --git a/.changeset/gentle-dingos-retire.md b/.changeset/gentle-dingos-retire.md deleted file mode 100644 index 526facc864e23..0000000000000 --- a/.changeset/gentle-dingos-retire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `setAdminStatus` method diff --git a/.changeset/gold-keys-compare.md b/.changeset/gold-keys-compare.md deleted file mode 100644 index 452169781c04c..0000000000000 --- a/.changeset/gold-keys-compare.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- -Removes support of MongoDB versions 5.x and 6.x diff --git a/.changeset/gold-zoos-sneeze.md b/.changeset/gold-zoos-sneeze.md deleted file mode 100644 index a38ff5c5fb604..0000000000000 --- a/.changeset/gold-zoos-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated meteor method `muteUserInRoom` diff --git a/.changeset/good-files-accept.md b/.changeset/good-files-accept.md deleted file mode 100644 index ccc6ce33f5b25..0000000000000 --- a/.changeset/good-files-accept.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/rest-typings": major ---- - -Removes the deprecated method `createToken` diff --git a/.changeset/grumpy-colts-collect.md b/.changeset/grumpy-colts-collect.md deleted file mode 100644 index 9406052d0b132..0000000000000 --- a/.changeset/grumpy-colts-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes an issue where custom status is not updating immediately if the value is empty diff --git a/.changeset/grumpy-readers-give.md b/.changeset/grumpy-readers-give.md deleted file mode 100644 index 085e9e3d88cc0..0000000000000 --- a/.changeset/grumpy-readers-give.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/apps-engine': patch -'@rocket.chat/meteor': patch ---- - -Adds an execution flag to apps-engine runtime that helps prevent the publishing of faulty builds diff --git a/.changeset/happy-carpets-draw.md b/.changeset/happy-carpets-draw.md deleted file mode 100644 index f59a1a06c7bbf..0000000000000 --- a/.changeset/happy-carpets-draw.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/ui-client': major -'@rocket.chat/i18n': major -'@rocket.chat/meteor': major ---- - -Promotes Resizable Contextualbars from preview state to stable. diff --git a/.changeset/happy-news-reflect.md b/.changeset/happy-news-reflect.md deleted file mode 100644 index c69eb08eacdd1..0000000000000 --- a/.changeset/happy-news-reflect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/fuselage-ui-kit": patch ---- - -Fixes an issue with the `action` block inside `Info Card` ui-kit element not dispatching actions. diff --git a/.changeset/honest-knives-cough.md b/.changeset/honest-knives-cough.md deleted file mode 100644 index 2329bec3a251a..0000000000000 --- a/.changeset/honest-knives-cough.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `setReaction` meteor method diff --git a/.changeset/hungry-fans-wait.md b/.changeset/hungry-fans-wait.md deleted file mode 100644 index 7d8594f3470aa..0000000000000 --- a/.changeset/hungry-fans-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': minor ---- - -Validates attachment fields to require `title` and `value` properties on APIs `chat.postMessage` and `chat.sendMessage`. diff --git a/.changeset/large-jobs-smell.md b/.changeset/large-jobs-smell.md deleted file mode 100644 index a04338844742b..0000000000000 --- a/.changeset/large-jobs-smell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes an issue with the build that prevented Deno runtime to run on air-gapped environments diff --git a/.changeset/large-planes-destroy.md b/.changeset/large-planes-destroy.md deleted file mode 100644 index e2541e1df68f5..0000000000000 --- a/.changeset/large-planes-destroy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Fixes create channel modal not validating federated access permission diff --git a/.changeset/lazy-pianos-care.md b/.changeset/lazy-pianos-care.md deleted file mode 100644 index d5afd4cb714af..0000000000000 --- a/.changeset/lazy-pianos-care.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@rocket.chat/model-typings': minor -'@rocket.chat/core-typings': minor -'@rocket.chat/rest-typings': minor -'@rocket.chat/models': minor -'@rocket.chat/meteor': minor ---- - -Enhance user's deactivated state handling to correctly distinguish between pending and deactivated users. diff --git a/.changeset/lemon-garlics-check.md b/.changeset/lemon-garlics-check.md deleted file mode 100644 index 6216aaf24dd9a..0000000000000 --- a/.changeset/lemon-garlics-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Fixes license add-on validations for federated rooms diff --git a/.changeset/loud-elephants-happen.md b/.changeset/loud-elephants-happen.md deleted file mode 100644 index 0f505ff2445dd..0000000000000 --- a/.changeset/loud-elephants-happen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/media-signaling': patch ---- - -Fixes an issue where the client would play the Call Ended sound effect when the user started calling someone on a different session diff --git a/.changeset/many-walls-cheat.md b/.changeset/many-walls-cheat.md deleted file mode 100644 index 190539f09b1f2..0000000000000 --- a/.changeset/many-walls-cheat.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/fuselage-ui-kit": minor -"@rocket.chat/ui-kit": minor ---- - -Introduces a new variation of the `Icon` element to `ui-kit` through the new `framed` optional property. diff --git a/.changeset/many-walls-impress.md b/.changeset/many-walls-impress.md deleted file mode 100644 index 058723b41d421..0000000000000 --- a/.changeset/many-walls-impress.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/rest-typings": patch ---- - -Adds deprecation warning on `livechat:addMonitor` with new endpoint replacing it; `livechat/monitors.create` diff --git a/.changeset/many-windows-perform.md b/.changeset/many-windows-perform.md deleted file mode 100644 index d84dce497937c..0000000000000 --- a/.changeset/many-windows-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated Realtime API method: `livechat:closeRoom` diff --git a/.changeset/metal-moose-travel.md b/.changeset/metal-moose-travel.md deleted file mode 100644 index 71c2f66f5e02c..0000000000000 --- a/.changeset/metal-moose-travel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes a condition where the `SAML_Custom_Default_default_user_role` setting, used to define the default SAML role when none is provided, would fail when a role name was used instead of an ID. diff --git a/.changeset/metal-rocks-behave.md b/.changeset/metal-rocks-behave.md deleted file mode 100644 index f6db936b32968..0000000000000 --- a/.changeset/metal-rocks-behave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Removes deprecated method `saveUserProfile` diff --git a/.changeset/nasty-beans-breathe.md b/.changeset/nasty-beans-breathe.md deleted file mode 100644 index 8ba5361d40462..0000000000000 --- a/.changeset/nasty-beans-breathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `setCustomFields` method diff --git a/.changeset/nasty-moons-speak.md b/.changeset/nasty-moons-speak.md deleted file mode 100644 index d709bd58c2021..0000000000000 --- a/.changeset/nasty-moons-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Adds invitation badge to room members list diff --git a/.changeset/neat-spoons-cover.md b/.changeset/neat-spoons-cover.md deleted file mode 100644 index ed5941e748a69..0000000000000 --- a/.changeset/neat-spoons-cover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated Realtime API method: `livechat:removeAllClosedRooms` diff --git a/.changeset/nervous-doors-knock.md b/.changeset/nervous-doors-knock.md deleted file mode 100644 index aa4084d7b8ded..0000000000000 --- a/.changeset/nervous-doors-knock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `getAvatarSuggestion` method diff --git a/.changeset/nervous-melons-cough.md b/.changeset/nervous-melons-cough.md deleted file mode 100644 index 870cdfacdff37..0000000000000 --- a/.changeset/nervous-melons-cough.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Removes the deprecated meteor method: `livechat:addMonitor` diff --git a/.changeset/nervous-wombats-look.md b/.changeset/nervous-wombats-look.md deleted file mode 100644 index 6a3baaea2f50c..0000000000000 --- a/.changeset/nervous-wombats-look.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:saveDepartment` method diff --git a/.changeset/ninety-dodos-confess.md b/.changeset/ninety-dodos-confess.md deleted file mode 100644 index b85badf29d0bf..0000000000000 --- a/.changeset/ninety-dodos-confess.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@rocket.chat/authorization-service': minor -'@rocket.chat/core-services': minor -'@rocket.chat/message-types': minor -'@rocket.chat/model-typings': minor -'@rocket.chat/core-typings': minor -'@rocket.chat/apps-engine': minor -'@rocket.chat/abac': minor -'@rocket.chat/models': minor -'@rocket.chat/i18n': minor -'@rocket.chat/jwt': minor -'@rocket.chat/meteor': minor ---- - -Adds Attribute Based Access Control (ABAC) for private channels & private teams. diff --git a/.changeset/ninety-hats-swim.md b/.changeset/ninety-hats-swim.md deleted file mode 100644 index 43ea75a82d383..0000000000000 --- a/.changeset/ninety-hats-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:setUpConnection` method diff --git a/.changeset/odd-pigs-hang.md b/.changeset/odd-pigs-hang.md deleted file mode 100644 index b3db5fdbdafaf..0000000000000 --- a/.changeset/odd-pigs-hang.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes an issue where iframe external commands sent via `window.postMessage` were not being handled correctly when Rocket.Chat was embedded inside an iframe. diff --git a/.changeset/olive-pens-think.md b/.changeset/olive-pens-think.md deleted file mode 100644 index 994b14dad0833..0000000000000 --- a/.changeset/olive-pens-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes incorrect URL generation in Global Search "Jump to message" feature, resolving navigation issues when jumping to messages across different channels. diff --git a/.changeset/orange-poets-marry.md b/.changeset/orange-poets-marry.md deleted file mode 100644 index 8da7abd288b76..0000000000000 --- a/.changeset/orange-poets-marry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `getRoomRoles` method diff --git a/.changeset/pink-months-compare.md b/.changeset/pink-months-compare.md deleted file mode 100644 index 27e345823957a..0000000000000 --- a/.changeset/pink-months-compare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `authorization:deleteRole` method diff --git a/.changeset/plenty-flowers-help.md b/.changeset/plenty-flowers-help.md deleted file mode 100644 index 65f178303d5cc..0000000000000 --- a/.changeset/plenty-flowers-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:removeRoom` method diff --git a/.changeset/poor-apricots-heal.md b/.changeset/poor-apricots-heal.md deleted file mode 100644 index 420ed96068488..0000000000000 --- a/.changeset/poor-apricots-heal.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes push notifications continuing after logout due to missing token cleanup. diff --git a/.changeset/poor-trains-mate.md b/.changeset/poor-trains-mate.md deleted file mode 100644 index 90b7882bab726..0000000000000 --- a/.changeset/poor-trains-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `appId` parameter from the `oauth-apps.get` endpoint. diff --git a/.changeset/popular-items-smash.md b/.changeset/popular-items-smash.md deleted file mode 100644 index 84316444911ba..0000000000000 --- a/.changeset/popular-items-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `sendFileLivechatMessage` method diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index ff78be3fb84cc..0000000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "mode": "pre", - "tag": "rc", - "initialVersions": { - "@rocket.chat/meteor": "8.0.0-develop", - "rocketchat-services": "2.0.37", - "@rocket.chat/uikit-playground": "0.7.2", - "@rocket.chat/account-service": "0.4.46", - "@rocket.chat/authorization-service": "0.4.46", - "@rocket.chat/ddp-streamer": "0.3.46", - "@rocket.chat/omnichannel-transcript": "0.4.46", - "@rocket.chat/presence-service": "0.4.46", - "@rocket.chat/queue-worker": "0.4.46", - "@rocket.chat/abac": "0.0.1", - "@rocket.chat/federation-matrix": "0.0.8", - "@rocket.chat/license": "1.1.6", - "@rocket.chat/media-calls": "0.1.2", - "@rocket.chat/network-broker": "0.2.25", - "@rocket.chat/omni-core-ee": "0.0.11", - "@rocket.chat/omnichannel-services": "0.3.43", - "@rocket.chat/pdf-worker": "0.3.25", - "@rocket.chat/presence": "0.2.46", - "@rocket.chat/ui-theming": "0.4.4", - "@rocket.chat/account-utils": "0.0.2", - "@rocket.chat/agenda": "0.1.0", - "@rocket.chat/api-client": "0.2.46", - "@rocket.chat/apps": "0.5.25", - "@rocket.chat/apps-engine": "1.58.0", - "@rocket.chat/base64": "1.0.13", - "@rocket.chat/cas-validate": "0.0.3", - "@rocket.chat/core-services": "0.11.2", - "@rocket.chat/core-typings": "8.0.0-develop", - "@rocket.chat/cron": "0.1.46", - "@rocket.chat/ddp-client": "0.3.46", - "@rocket.chat/desktop-api": "1.1.0", - "@rocket.chat/eslint-config": "0.7.0", - "@rocket.chat/favicon": "0.0.4", - "@rocket.chat/fuselage-ui-kit": "25.0.2", - "@rocket.chat/gazzodown": "25.0.2", - "@rocket.chat/http-router": "7.9.13", - "@rocket.chat/i18n": "1.13.0", - "@rocket.chat/instance-status": "0.1.46", - "@rocket.chat/jest-presets": "0.0.1", - "@rocket.chat/jwt": "0.1.1", - "@rocket.chat/livechat": "1.23.17", - "@rocket.chat/log-format": "0.0.2", - "@rocket.chat/logger": "0.0.2", - "@rocket.chat/media-signaling": "0.1.0", - "@rocket.chat/message-parser": "0.31.32", - "@rocket.chat/message-types": "0.0.1", - "@rocket.chat/mock-providers": "0.4.6", - "@rocket.chat/model-typings": "1.9.2", - "@rocket.chat/models": "1.8.2", - "@rocket.chat/mongo-adapter": "0.0.2", - "@rocket.chat/poplib": "0.0.2", - "@rocket.chat/omni-core": "0.0.11", - "@rocket.chat/password-policies": "0.1.0", - "@rocket.chat/patch-injection": "0.0.1", - "@rocket.chat/peggy-loader": "0.31.27", - "@rocket.chat/random": "1.2.2", - "@rocket.chat/release-action": "2.2.3", - "@rocket.chat/release-changelog": "0.1.0", - "@rocket.chat/rest-typings": "8.0.0-develop", - "@rocket.chat/server-cloud-communication": "0.0.2", - "@rocket.chat/server-fetch": "0.0.3", - "@rocket.chat/sha256": "1.0.12", - "@rocket.chat/storybook-config": "0.0.2", - "@rocket.chat/tools": "0.2.3", - "@rocket.chat/tracing": "0.0.1", - "@rocket.chat/tsconfig": "0.0.0", - "@rocket.chat/ui-avatar": "21.0.2", - "@rocket.chat/ui-client": "25.0.2", - "@rocket.chat/ui-composer": "0.5.3", - "@rocket.chat/ui-contexts": "25.0.2", - "@rocket.chat/ui-kit": "0.38.0", - "@rocket.chat/ui-video-conf": "25.0.2", - "@rocket.chat/ui-voip": "15.0.2", - "@rocket.chat/web-ui-registration": "25.0.2" - }, - "changesets": [ - "afraid-parents-bake", - "beige-seahorses-reply", - "blue-beans-check", - "breezy-timers-flow", - "brown-carrots-bathe", - "brown-llamas-worry", - "bump-patch-1766456337926", - "chatty-dingos-bathe", - "chatty-lizards-reflect", - "chatty-roses-help", - "chilly-cobras-look", - "cold-chairs-taste", - "cold-chefs-rhyme", - "cool-turtles-bathe", - "cuddly-eels-perform", - "curly-bats-wink", - "cyan-mayflies-juggle", - "dull-rabbits-add", - "dull-tips-look", - "empty-buses-walk", - "fair-dryers-behave", - "fast-ligers-unite", - "fast-walls-eat", - "few-masks-punch", - "fifty-rice-smash", - "five-months-shake", - "forty-pears-divide", - "forty-spiders-sneeze", - "four-timers-enjoy", - "fresh-tables-raise", - "fuzzy-plants-hammer", - "fuzzy-teachers-juggle", - "gentle-dingos-retire", - "gold-keys-compare", - "gold-zoos-sneeze", - "good-files-accept", - "grumpy-colts-collect", - "grumpy-readers-give", - "happy-carpets-draw", - "happy-news-reflect", - "honest-knives-cough", - "hungry-fans-wait", - "large-jobs-smell", - "large-planes-destroy", - "lazy-pianos-care", - "lemon-garlics-check", - "loud-elephants-happen", - "many-walls-cheat", - "many-walls-impress", - "many-windows-perform", - "metal-moose-travel", - "metal-rocks-behave", - "nasty-beans-breathe", - "nasty-moons-speak", - "neat-spoons-cover", - "nervous-doors-knock", - "nervous-melons-cough", - "nervous-wombats-look", - "ninety-dodos-confess", - "ninety-hats-swim", - "odd-pigs-hang", - "olive-pens-think", - "orange-poets-marry", - "pink-months-compare", - "plenty-flowers-help", - "poor-apricots-heal", - "poor-trains-mate", - "popular-items-smash", - "proud-dingos-sell", - "purple-mayflies-approve", - "quick-turtles-count", - "quiet-bees-turn", - "real-grapes-itch", - "rich-dogs-wonder", - "rotten-bees-behave", - "rotten-pugs-trade", - "selfish-countries-sleep", - "seven-badgers-dress", - "seven-otters-turn", - "shaggy-otters-think", - "sharp-beers-search", - "short-pots-lay", - "six-squids-pretend", - "sixty-bikes-know", - "slimy-ads-sing", - "slimy-hairs-wink", - "smooth-birds-crash", - "spicy-nails-design", - "strange-spiders-act", - "strong-bags-train", - "strong-bats-swim", - "strong-maps-act", - "swift-ears-sparkle", - "ten-carrots-melt", - "tender-wolves-promise", - "thick-badgers-grab", - "thick-guests-compete", - "thick-wasps-turn", - "tidy-laws-wink", - "tough-baboons-wash", - "tricky-trees-tan", - "twelve-feet-repeat", - "twelve-forks-destroy", - "twelve-years-act", - "twenty-cars-decide", - "two-pets-knock", - "two-turtles-try", - "weak-frogs-relax", - "wet-papayas-buy", - "wet-walls-drive", - "wicked-yaks-join", - "wild-hairs-carry" - ] -} diff --git a/.changeset/proud-dingos-sell.md b/.changeset/proud-dingos-sell.md deleted file mode 100644 index 17d7910431550..0000000000000 --- a/.changeset/proud-dingos-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes the setting `API_Use_REST_For_DDP_Calls`. Turning this on meant websocket was only used for realtime data/events, and any other meteor method calls goes over method.call endpoint. For microservice deployments, this had to be turned on. Now method calls will always happen over http endpoints. diff --git a/.changeset/purple-mayflies-approve.md b/.changeset/purple-mayflies-approve.md deleted file mode 100644 index 997daff3dce0a..0000000000000 --- a/.changeset/purple-mayflies-approve.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/ui-client': major -'@rocket.chat/i18n': major -'@rocket.chat/meteor': major ---- - -Promotes quick reactions from preview state to stable diff --git a/.changeset/quick-turtles-count.md b/.changeset/quick-turtles-count.md deleted file mode 100644 index 028ea55d86eb6..0000000000000 --- a/.changeset/quick-turtles-count.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/rest-typings": major ---- - -Removes `/api/v1/banners.getnew` deprecated endpoint diff --git a/.changeset/quiet-bees-turn.md b/.changeset/quiet-bees-turn.md deleted file mode 100644 index e2312ccb478af..0000000000000 --- a/.changeset/quiet-bees-turn.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/ddp-client": major -"@rocket.chat/livechat": major -"@rocket.chat/rest-typings": major ---- - -Removes the `livechat:transfer` deprecated method -Removes the `livechat/room.transfer` deprecated endpoint -Creates the `livechat/visitor.department.transfer` for visitors department transfer use diff --git a/.changeset/real-grapes-itch.md b/.changeset/real-grapes-itch.md deleted file mode 100644 index e4eda2815fa45..0000000000000 --- a/.changeset/real-grapes-itch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Fixes an issue where it‘s not being possible to configure department's `chatClosingTags` without enabling `requestTagBeforeClosingTag` diff --git a/.changeset/rich-dogs-wonder.md b/.changeset/rich-dogs-wonder.md deleted file mode 100644 index 2eeb95649f61d..0000000000000 --- a/.changeset/rich-dogs-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes an issue that caused Third-party login to not work properly diff --git a/.changeset/rotten-bees-behave.md b/.changeset/rotten-bees-behave.md deleted file mode 100644 index 1a14da3c2cbf0..0000000000000 --- a/.changeset/rotten-bees-behave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -removes the deprecated meteor method: `livechat:removeMonitor` diff --git a/.changeset/rotten-pugs-trade.md b/.changeset/rotten-pugs-trade.md deleted file mode 100644 index 37515336702d6..0000000000000 --- a/.changeset/rotten-pugs-trade.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/tools": patch ---- - -Adds improvements to the push notifications logic; the logic now truncates messages and titles larger than 240, and 65 characters respectively. diff --git a/.changeset/selfish-countries-sleep.md b/.changeset/selfish-countries-sleep.md deleted file mode 100644 index 63227b9df6271..0000000000000 --- a/.changeset/selfish-countries-sleep.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated Realtime API method: `livechat:getRoutingConfig` diff --git a/.changeset/seven-badgers-dress.md b/.changeset/seven-badgers-dress.md deleted file mode 100644 index 3d2b1ef6ad85b..0000000000000 --- a/.changeset/seven-badgers-dress.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes deprecated Realtime API method: `livechat:changeLivechatStatus` diff --git a/.changeset/seven-otters-turn.md b/.changeset/seven-otters-turn.md deleted file mode 100644 index f67e3d7fe6016..0000000000000 --- a/.changeset/seven-otters-turn.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/rest-typings": patch ---- - -Adds deprecation warning for `livechat:saveTag` and new endpoint to replace it; `livechat/tags.save` diff --git a/.changeset/shaggy-otters-think.md b/.changeset/shaggy-otters-think.md deleted file mode 100644 index 961fea652556b..0000000000000 --- a/.changeset/shaggy-otters-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes the deprecated param `hideRoomsWithNoActivity` and adjust the api tests accordingly. Endpoint always returns rooms that are not empty. diff --git a/.changeset/sharp-beers-search.md b/.changeset/sharp-beers-search.md deleted file mode 100644 index 0b674b3318eec..0000000000000 --- a/.changeset/sharp-beers-search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `insertOrUpdateUser` meteor method diff --git a/.changeset/short-pots-lay.md b/.changeset/short-pots-lay.md deleted file mode 100644 index aa14ad39ed4eb..0000000000000 --- a/.changeset/short-pots-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:removeTag` method diff --git a/.changeset/six-squids-pretend.md b/.changeset/six-squids-pretend.md deleted file mode 100644 index f150528ffb545..0000000000000 --- a/.changeset/six-squids-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Fixes role assignment precedence in SAML provisioning, ensuring that SAML-specific default roles take priority over global registration roles, and preventing role merging when both are configured. diff --git a/.changeset/sixty-bikes-know.md b/.changeset/sixty-bikes-know.md deleted file mode 100644 index dd74fbbc1ff0c..0000000000000 --- a/.changeset/sixty-bikes-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes an issue where the client failed to load properly when the “First Channel After Login” setting began with a hash (#), ensuring users are routed to the correct channel. diff --git a/.changeset/slimy-ads-sing.md b/.changeset/slimy-ads-sing.md deleted file mode 100644 index cad18a974e9c4..0000000000000 --- a/.changeset/slimy-ads-sing.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/model-typings': patch -'@rocket.chat/models': patch -'@rocket.chat/meteor': patch ---- - -Fixes /v1/users.logout not marking user sessions as logged out, leaving stale sessions active. diff --git a/.changeset/slimy-hairs-wink.md b/.changeset/slimy-hairs-wink.md deleted file mode 100644 index 46357b7cf4418..0000000000000 --- a/.changeset/slimy-hairs-wink.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated setUsername method - diff --git a/.changeset/smart-carpets-clean.md b/.changeset/smart-carpets-clean.md new file mode 100644 index 0000000000000..073e969e1424f --- /dev/null +++ b/.changeset/smart-carpets-clean.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/models': patch +--- + +Fixes a condition where deleting a message with multiple file attachments would not always delete all of those files diff --git a/.changeset/smooth-birds-crash.md b/.changeset/smooth-birds-crash.md deleted file mode 100644 index 6dfe28b72b16c..0000000000000 --- a/.changeset/smooth-birds-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `removeCannedResponse` method diff --git a/.changeset/spicy-nails-design.md b/.changeset/spicy-nails-design.md deleted file mode 100644 index 23a5f82e7bb5e..0000000000000 --- a/.changeset/spicy-nails-design.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/core-services": patch -"@rocket.chat/ddp-streamer": patch -"@rocket.chat/presence": patch ---- - -Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. \ No newline at end of file diff --git a/.changeset/strange-spiders-act.md b/.changeset/strange-spiders-act.md deleted file mode 100644 index 5cbdafc2f2ab9..0000000000000 --- a/.changeset/strange-spiders-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `saveCannedResponse` method diff --git a/.changeset/strong-bags-train.md b/.changeset/strong-bags-train.md deleted file mode 100644 index 3f53beead4969..0000000000000 --- a/.changeset/strong-bags-train.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/federation-matrix": patch ---- - -Fixes an issue where membership updates were not reflected when the user was the first member on their own server. diff --git a/.changeset/strong-bats-swim.md b/.changeset/strong-bats-swim.md deleted file mode 100644 index d0287981e1e08..0000000000000 --- a/.changeset/strong-bats-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:sendTranscript` method diff --git a/.changeset/strong-maps-act.md b/.changeset/strong-maps-act.md deleted file mode 100644 index 04c8c2c6c64ae..0000000000000 --- a/.changeset/strong-maps-act.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": minor -"@rocket.chat/ui-voip": minor ---- - -Introduces an info button to voice call's in-chat history message, which opens a contextual bar with more detailed information about the voice call. diff --git a/.changeset/swift-ears-sparkle.md b/.changeset/swift-ears-sparkle.md deleted file mode 100644 index d332456dba3af..0000000000000 --- a/.changeset/swift-ears-sparkle.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/rest-typings": major ---- - -Removes the deprecated `/api/v1/rooms.upload` endpoint diff --git a/.changeset/ten-carrots-melt.md b/.changeset/ten-carrots-melt.md deleted file mode 100644 index 7dcb452a2f92c..0000000000000 --- a/.changeset/ten-carrots-melt.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated livechat:resumeOnHold method - diff --git a/.changeset/tender-wolves-promise.md b/.changeset/tender-wolves-promise.md deleted file mode 100644 index 234a01290239b..0000000000000 --- a/.changeset/tender-wolves-promise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes the missing dispatch of `startup` iframe event on client startup. diff --git a/.changeset/thick-badgers-grab.md b/.changeset/thick-badgers-grab.md deleted file mode 100644 index 5cfa0235a6871..0000000000000 --- a/.changeset/thick-badgers-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes `addUserToRole` and `removeUserFromRole` type declaration and deprecation logger diff --git a/.changeset/thick-guests-compete.md b/.changeset/thick-guests-compete.md deleted file mode 100644 index 20b7fb8ca0405..0000000000000 --- a/.changeset/thick-guests-compete.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:saveAgentInfo` method diff --git a/.changeset/thick-wasps-turn.md b/.changeset/thick-wasps-turn.md deleted file mode 100644 index ea892a87f5556..0000000000000 --- a/.changeset/thick-wasps-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fixes inconsistency in roomLeft event payload by aligning it to the standard outgoing events signature. diff --git a/.changeset/tidy-laws-wink.md b/.changeset/tidy-laws-wink.md deleted file mode 100644 index 6a745931a3855..0000000000000 --- a/.changeset/tidy-laws-wink.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/rest-typings": major ---- - -Removes the deprecated `GET` Method from `/api/v1/apps` diff --git a/.changeset/tough-baboons-wash.md b/.changeset/tough-baboons-wash.md deleted file mode 100644 index b8655b4514868..0000000000000 --- a/.changeset/tough-baboons-wash.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@rocket.chat/rest-typings': major -'@rocket.chat/ddp-client': major -'@rocket.chat/logger': major -'@rocket.chat/meteor': major ---- - -Removes stdout logging functionality, related components and settings diff --git a/.changeset/tricky-trees-tan.md b/.changeset/tricky-trees-tan.md deleted file mode 100644 index f1cb631d720b6..0000000000000 --- a/.changeset/tricky-trees-tan.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Removes sensitive data from outgoing events debug logs. diff --git a/.changeset/twelve-feet-repeat.md b/.changeset/twelve-feet-repeat.md deleted file mode 100644 index 577096ec2b015..0000000000000 --- a/.changeset/twelve-feet-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated 'e2e.updateGroupKey' method and related type declarations diff --git a/.changeset/twelve-forks-destroy.md b/.changeset/twelve-forks-destroy.md deleted file mode 100644 index b4cc7321bed9f..0000000000000 --- a/.changeset/twelve-forks-destroy.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/i18n": patch ---- - -Adds invitation badge to sidebar diff --git a/.changeset/twelve-years-act.md b/.changeset/twelve-years-act.md deleted file mode 100644 index d118252c3fffe..0000000000000 --- a/.changeset/twelve-years-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Removes deprecated method `livechat:saveBusinessHour` diff --git a/.changeset/twenty-cars-decide.md b/.changeset/twenty-cars-decide.md deleted file mode 100644 index f7ac52c68a517..0000000000000 --- a/.changeset/twenty-cars-decide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:saveCustomField` method diff --git a/.changeset/two-pets-knock.md b/.changeset/two-pets-knock.md deleted file mode 100644 index c568f32c9a6ea..0000000000000 --- a/.changeset/two-pets-knock.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/rest-typings": major ---- - -Removes the deprecated roleName parameter from /api/v1/roles.addUserToRole and /api/v1/roles.removeUserFromRole - -Removes the ability to pass a role name to the role parameter type from /api/v1/roles.getUsersInRole diff --git a/.changeset/two-turtles-try.md b/.changeset/two-turtles-try.md deleted file mode 100644 index 1d8816caad368..0000000000000 --- a/.changeset/two-turtles-try.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": major -"@rocket.chat/ddp-client": major ---- - -Removes the deprecated `setUserPassword` method diff --git a/.changeset/weak-frogs-relax.md b/.changeset/weak-frogs-relax.md deleted file mode 100644 index 4a19730ec1462..0000000000000 --- a/.changeset/weak-frogs-relax.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/rest-typings": patch ---- - -Adds deprecation warning for `livechat:removeBusinessHour` and new endpoint to replace it; `livechat/business-hours.remove` diff --git a/.changeset/wet-papayas-buy.md b/.changeset/wet-papayas-buy.md deleted file mode 100644 index 1995c1acd95e2..0000000000000 --- a/.changeset/wet-papayas-buy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/media-calls': patch ---- - -Fixes improper handling of errors when SIP integration is configured incorrectly diff --git a/.changeset/wet-walls-drive.md b/.changeset/wet-walls-drive.md deleted file mode 100644 index b8297000fa903..0000000000000 --- a/.changeset/wet-walls-drive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/ui-client': major -'@rocket.chat/meteor': major ---- - -Promotes Enhanced Navigation from preview state to stable. diff --git a/.changeset/wicked-yaks-join.md b/.changeset/wicked-yaks-join.md deleted file mode 100644 index 92946e56e2a8e..0000000000000 --- a/.changeset/wicked-yaks-join.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': major ---- - -Removes deprecated `livechat:takeInquiry` method diff --git a/.changeset/wild-hairs-carry.md b/.changeset/wild-hairs-carry.md deleted file mode 100644 index 9a7c69766ee80..0000000000000 --- a/.changeset/wild-hairs-carry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": major ---- - -Removes the deprecated `authorization:addUserToRole` method diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 25c87769347a2..021d7f749b194 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,459 @@ # @rocket.chat/meteor +## 8.0.0 + +### Major Changes + +- ([#36829](https://github.com/RocketChat/Rocket.Chat/pull/36829)) Removes the deprecated sendConfirmationEmail method + +- ([#37460](https://github.com/RocketChat/Rocket.Chat/pull/37460)) Removes deprecated `livechat:removeUnit` method + +- ([#36836](https://github.com/RocketChat/Rocket.Chat/pull/36836)) Removes the deprecated livechat:getTagsList method + + Removes the deprecated livechat:getUnitsFromUser method + + Removes the deprecated livechat:getFirstRoomMessage method + + Removes the deprecated livechat:getDepartmentForwardRestrictions method + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP permissions + +- ([#36941](https://github.com/RocketChat/Rocket.Chat/pull/36941)) Makes Voice Calls enabled by default when available + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37461](https://github.com/RocketChat/Rocket.Chat/pull/37461)) Removes deprecated `livechat:saveUnit` method + +- ([#36864](https://github.com/RocketChat/Rocket.Chat/pull/36864)) Removes the deprecated `authorization:removeUserFromRole` method + +- ([#36976](https://github.com/RocketChat/Rocket.Chat/pull/36976)) Promotes Timestamp Parser from preview state to stable + +- ([#37123](https://github.com/RocketChat/Rocket.Chat/pull/37123)) Removes ecdh functionality and related settings + +- ([#35436](https://github.com/RocketChat/Rocket.Chat/pull/35436) by [@blackmamba1231](https://github.com/blackmamba1231)) Removes deprecated `canAccessRoom` meteor method + +- ([#36925](https://github.com/RocketChat/Rocket.Chat/pull/36925) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated Realtime API method: `livechat:getAnalyticsChartData` + +- ([#37392](https://github.com/RocketChat/Rocket.Chat/pull/37392)) Removes deprecated `livechat:returnAsInquiry` method + +- ([#37390](https://github.com/RocketChat/Rocket.Chat/pull/37390)) Removes deprecated `removeCustomField` method + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +- ([#36851](https://github.com/RocketChat/Rocket.Chat/pull/36851)) Removes the deprecated `getUserRoles` method in favor of the `/v1/roles.getUsersInPublicRoles` endpoint. + +- ([#37388](https://github.com/RocketChat/Rocket.Chat/pull/37388)) Removes deprecated `setAdminStatus` method + +- ([#35961](https://github.com/RocketChat/Rocket.Chat/pull/35961)) Removes support of MongoDB versions 5.x and 6.x + +- ([#36823](https://github.com/RocketChat/Rocket.Chat/pull/36823)) Removes deprecated meteor method `muteUserInRoom` + +- ([#36825](https://github.com/RocketChat/Rocket.Chat/pull/36825)) Removes the deprecated method `createToken` + +- ([#37022](https://github.com/RocketChat/Rocket.Chat/pull/37022)) Promotes Resizable Contextualbars from preview state to stable. + +- ([#36837](https://github.com/RocketChat/Rocket.Chat/pull/36837)) Removes the deprecated `setReaction` meteor method + +- ([#36824](https://github.com/RocketChat/Rocket.Chat/pull/36824) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated Realtime API method: `livechat:closeRoom` + +- ([#36832](https://github.com/RocketChat/Rocket.Chat/pull/36832)) Removes the deprecated `setCustomFields` method + +- ([#36931](https://github.com/RocketChat/Rocket.Chat/pull/36931) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated Realtime API method: `livechat:removeAllClosedRooms` + +- ([#36830](https://github.com/RocketChat/Rocket.Chat/pull/36830)) Removes the deprecated `getAvatarSuggestion` method + +- ([#37462](https://github.com/RocketChat/Rocket.Chat/pull/37462)) Removes deprecated `livechat:saveDepartment` method + +- ([#37397](https://github.com/RocketChat/Rocket.Chat/pull/37397)) Removes deprecated `livechat:setUpConnection` method + +- Removes the deprecated `getRoomRoles` method + +- Removes the deprecated `authorization:deleteRole` method + +- ([#37391](https://github.com/RocketChat/Rocket.Chat/pull/37391)) Removes deprecated `livechat:removeRoom` method + +- ([#36849](https://github.com/RocketChat/Rocket.Chat/pull/36849)) Removes deprecated `appId` parameter from the `oauth-apps.get` endpoint. + +- ([#37463](https://github.com/RocketChat/Rocket.Chat/pull/37463)) Removes deprecated `sendFileLivechatMessage` method + +- ([#32590](https://github.com/RocketChat/Rocket.Chat/pull/32590)) Removes the setting `API_Use_REST_For_DDP_Calls`. Turning this on meant websocket was only used for realtime data/events, and any other meteor method calls goes over method.call endpoint. For microservice deployments, this had to be turned on. Now method calls will always happen over http endpoints. + +- ([#36966](https://github.com/RocketChat/Rocket.Chat/pull/36966)) Promotes quick reactions from preview state to stable + +- ([#36821](https://github.com/RocketChat/Rocket.Chat/pull/36821)) Removes `/api/v1/banners.getnew` deprecated endpoint + +- ([#36871](https://github.com/RocketChat/Rocket.Chat/pull/36871)) Removes the `livechat:transfer` deprecated method + Removes the `livechat/room.transfer` deprecated endpoint + Creates the `livechat/visitor.department.transfer` for visitors department transfer use +- ([#36924](https://github.com/RocketChat/Rocket.Chat/pull/36924) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated Realtime API method: `livechat:getRoutingConfig` + +- ([#36809](https://github.com/RocketChat/Rocket.Chat/pull/36809) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated Realtime API method: `livechat:changeLivechatStatus` + +- ([#36951](https://github.com/RocketChat/Rocket.Chat/pull/36951)) Removes the deprecated param `hideRoomsWithNoActivity` and adjust the api tests accordingly. Endpoint always returns rooms that are not empty. + +- ([#36838](https://github.com/RocketChat/Rocket.Chat/pull/36838)) Removes the deprecated `insertOrUpdateUser` meteor method + +- ([#37406](https://github.com/RocketChat/Rocket.Chat/pull/37406)) Removes deprecated `livechat:removeTag` method + +- ([#37810](https://github.com/RocketChat/Rocket.Chat/pull/37810)) Fixes role assignment precedence in SAML provisioning, ensuring that SAML-specific default roles take priority over global registration roles, and preventing role merging when both are configured. + +- ([#36831](https://github.com/RocketChat/Rocket.Chat/pull/36831)) Removes the deprecated setUsername method + +- ([#37446](https://github.com/RocketChat/Rocket.Chat/pull/37446)) Removes deprecated `removeCannedResponse` method + +- ([#37405](https://github.com/RocketChat/Rocket.Chat/pull/37405)) Removes deprecated `saveCannedResponse` method + +- ([#37396](https://github.com/RocketChat/Rocket.Chat/pull/37396)) Removes deprecated `livechat:sendTranscript` method + +- ([#36857](https://github.com/RocketChat/Rocket.Chat/pull/36857)) Removes the deprecated `/api/v1/rooms.upload` endpoint + +- ([#36908](https://github.com/RocketChat/Rocket.Chat/pull/36908)) Removes the deprecated livechat:resumeOnHold method + +- ([#36935](https://github.com/RocketChat/Rocket.Chat/pull/36935)) Removes `addUserToRole` and `removeUserFromRole` type declaration and deprecation logger + +- ([#37393](https://github.com/RocketChat/Rocket.Chat/pull/37393)) Removes deprecated `livechat:saveAgentInfo` method + +- ([#36907](https://github.com/RocketChat/Rocket.Chat/pull/36907)) Removes the deprecated `GET` Method from `/api/v1/apps` + +- ([#37114](https://github.com/RocketChat/Rocket.Chat/pull/37114)) Removes stdout logging functionality, related components and settings + +- ([#36647](https://github.com/RocketChat/Rocket.Chat/pull/36647)) Removes deprecated 'e2e.updateGroupKey' method and related type declarations + +- ([#37421](https://github.com/RocketChat/Rocket.Chat/pull/37421)) Removes deprecated `livechat:saveCustomField` method + +- ([#36896](https://github.com/RocketChat/Rocket.Chat/pull/36896)) Removes the deprecated roleName parameter from /api/v1/roles.addUserToRole and /api/v1/roles.removeUserFromRole + + Removes the ability to pass a role name to the role parameter type from /api/v1/roles.getUsersInRole + +- ([#36828](https://github.com/RocketChat/Rocket.Chat/pull/36828)) Removes the deprecated `setUserPassword` method + +- ([#37285](https://github.com/RocketChat/Rocket.Chat/pull/37285)) Promotes Enhanced Navigation from preview state to stable. + +- ([#37464](https://github.com/RocketChat/Rocket.Chat/pull/37464)) Removes deprecated `livechat:takeInquiry` method + +- ([#36865](https://github.com/RocketChat/Rocket.Chat/pull/36865)) Removes the deprecated `authorization:addUserToRole` method + +### Minor Changes + +- ([#36570](https://github.com/RocketChat/Rocket.Chat/pull/36570)) REST endpoint `/v1/users.createToken` is not deprecated anymore. It now requires a `secret` parameter to generate a token for a user. This change is part of the effort to enhance security by ensuring that tokens are generated with an additional layer of validation. The `secret` parameter is validated against a new environment variable `CREATE_TOKENS_FOR_USERS_SECRET`. + +- ([#37719](https://github.com/RocketChat/Rocket.Chat/pull/37719)) Adds a new method to the Apps-Engine that allows apps to retrieve multiple rooms from database + +- ([#37659](https://github.com/RocketChat/Rocket.Chat/pull/37659)) Changes the position of the buttons in Unique ID change detected modal in order to highlight configuration update instead of new workspace + +- ([#37233](https://github.com/RocketChat/Rocket.Chat/pull/37233)) Validates attachment fields to require `title` and `value` properties on APIs `chat.postMessage` and `chat.sendMessage`. + +- ([#37224](https://github.com/RocketChat/Rocket.Chat/pull/37224)) Enhance user's deactivated state handling to correctly distinguish between pending and deactivated users. + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +- ([#37771](https://github.com/RocketChat/Rocket.Chat/pull/37771)) Introduces an info button to voice call's in-chat history message, which opens a contextual bar with more detailed information about the voice call. + +### Patch Changes + +- ([#37663](https://github.com/RocketChat/Rocket.Chat/pull/37663) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes the deprecated meteor method: `livechat:saveTag` + +- ([#37688](https://github.com/RocketChat/Rocket.Chat/pull/37688) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning for `livechat:removeMonitor` and new endpoint replacing it; `livechat/monitor.remove` + +- ([#37690](https://github.com/RocketChat/Rocket.Chat/pull/37690) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds a deprecation warning for `livechat:saveBusinessHour` and new endpoint replacing it; `livechat/business-hours.save` + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- ([#37612](https://github.com/RocketChat/Rocket.Chat/pull/37612)) Adds invitation request support to rooms + +- ([#37745](https://github.com/RocketChat/Rocket.Chat/pull/37745)) Fixes an issue where its not being possible to change the password in account security page + +- ([#37721](https://github.com/RocketChat/Rocket.Chat/pull/37721)) Disables read receipts indicators in federated rooms. This feature will be re-enabled when fully compatible with federation. + +- ([#37823](https://github.com/RocketChat/Rocket.Chat/pull/37823)) Fixes members tab > add members not removing selected items + +- ([#37791](https://github.com/RocketChat/Rocket.Chat/pull/37791)) Fixes an issue where cases of invites that were canceled or disinvited were not being handled. + +- ([#37874](https://github.com/RocketChat/Rocket.Chat/pull/37874)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +- ([#36822](https://github.com/RocketChat/Rocket.Chat/pull/36822)) Removes deprecated meteor method `unmuteUserInRoom` + +- ([#37819](https://github.com/RocketChat/Rocket.Chat/pull/37819) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated method `livechat:removeBusinessHour` + +- ([#37654](https://github.com/RocketChat/Rocket.Chat/pull/37654)) Fixes an issue that could cause slashcommands to disappear for the user in certain high-availability scenarios + +- ([#37443](https://github.com/RocketChat/Rocket.Chat/pull/37443)) Fixes an issue where custom status is not updating immediately if the value is empty + +- ([#37730](https://github.com/RocketChat/Rocket.Chat/pull/37730)) Adds an execution flag to apps-engine runtime that helps prevent the publishing of faulty builds + +- ([#37722](https://github.com/RocketChat/Rocket.Chat/pull/37722)) Fixes an issue with the build that prevented Deno runtime to run on air-gapped environments + +- ([#37504](https://github.com/RocketChat/Rocket.Chat/pull/37504)) Fixes create channel modal not validating federated access permission + +- ([#37523](https://github.com/RocketChat/Rocket.Chat/pull/37523)) Fixes license add-on validations for federated rooms + +- ([#38007](https://github.com/RocketChat/Rocket.Chat/pull/38007)) Changes the HTTP code of `/api/v1/method.call` and `/api/v1/method.callAnon` in case of internal errors + +- ([#37061](https://github.com/RocketChat/Rocket.Chat/pull/37061) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning on `livechat:addMonitor` with new endpoint replacing it; `livechat/monitors.create` + +- ([#37713](https://github.com/RocketChat/Rocket.Chat/pull/37713)) Fixes a condition where the `SAML_Custom_Default_default_user_role` setting, used to define the default SAML role when none is provided, would fail when a role name was used instead of an ID. + +- ([#36827](https://github.com/RocketChat/Rocket.Chat/pull/36827)) Removes deprecated method `saveUserProfile` + +- ([#37643](https://github.com/RocketChat/Rocket.Chat/pull/37643)) Adds invitation badge to room members list + +- ([#37664](https://github.com/RocketChat/Rocket.Chat/pull/37664) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes the deprecated meteor method: `livechat:addMonitor` + +- ([#37829](https://github.com/RocketChat/Rocket.Chat/pull/37829)) Fixes an issue where iframe external commands sent via `window.postMessage` were not being handled correctly when Rocket.Chat was embedded inside an iframe. + +- ([#37717](https://github.com/RocketChat/Rocket.Chat/pull/37717)) Fixes incorrect URL generation in Global Search "Jump to message" feature, resolving navigation issues when jumping to messages across different channels. + +- ([#37845](https://github.com/RocketChat/Rocket.Chat/pull/37845)) Fixes push notifications continuing after logout due to missing token cleanup. + +- ([#37822](https://github.com/RocketChat/Rocket.Chat/pull/37822) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Fixes an issue where it‘s not being possible to configure department's `chatClosingTags` without enabling `requestTagBeforeClosingTag` + +- ([#37707](https://github.com/RocketChat/Rocket.Chat/pull/37707)) Fixes an issue that caused Third-party login to not work properly + +- ([#37662](https://github.com/RocketChat/Rocket.Chat/pull/37662) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) removes the deprecated meteor method: `livechat:removeMonitor` + +- ([#37852](https://github.com/RocketChat/Rocket.Chat/pull/37852) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds improvements to the push notifications logic; the logic now truncates messages and titles larger than 240, and 65 characters respectively. + +- ([#37281](https://github.com/RocketChat/Rocket.Chat/pull/37281) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning for `livechat:saveTag` and new endpoint to replace it; `livechat/tags.save` + +- ([#37656](https://github.com/RocketChat/Rocket.Chat/pull/37656)) Fixes an issue where the client failed to load properly when the “First Channel After Login” setting began with a hash (#), ensuring users are routed to the correct channel. + +- ([#37846](https://github.com/RocketChat/Rocket.Chat/pull/37846)) Fixes /v1/users.logout not marking user sessions as logged out, leaving stale sessions active. + +- ([#37551](https://github.com/RocketChat/Rocket.Chat/pull/37551)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +- ([#37677](https://github.com/RocketChat/Rocket.Chat/pull/37677)) Fixes an issue where membership updates were not reflected when the user was the first member on their own server. + +- ([#37718](https://github.com/RocketChat/Rocket.Chat/pull/37718)) Fixes the missing dispatch of `startup` iframe event on client startup. + +- ([#37729](https://github.com/RocketChat/Rocket.Chat/pull/37729)) Fixes inconsistency in roomLeft event payload by aligning it to the standard outgoing events signature. + +- ([#37729](https://github.com/RocketChat/Rocket.Chat/pull/37729)) Removes sensitive data from outgoing events debug logs. + +- ([#37635](https://github.com/RocketChat/Rocket.Chat/pull/37635)) Adds invitation badge to sidebar + +- ([#37772](https://github.com/RocketChat/Rocket.Chat/pull/37772) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Removes deprecated method `livechat:saveBusinessHour` + +- ([#37775](https://github.com/RocketChat/Rocket.Chat/pull/37775) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning for `livechat:removeBusinessHour` and new endpoint to replace it; `livechat/business-hours.remove` + +-
Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, 04d24848bd8733caefc45d42c53f004177865a53, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 0ccb9692b434bc88b4bc5009d39e024c03f01b86, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 2de4547580c472f4458568629d7bf98fd5faf342, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, 0c0258604632342f42fc36cabac2d6cfe0e477c4, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, 70872896b912004dc016297b6e875d873d81dc3a, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, 94b87d9ef40647d77fe83f3f84dca46a94515b39, ddc935727e9a7275813006d9dcaa7fe866610844, 733c94b996204151f580de2dd7f3402124b70977, d3538e7045c41f91b8c561d44e5485ff93b93745, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 611e4cdfa04849416a58071646b853b95e9b817b, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, 9e03ed5c5ea829c62c2da2de9413a27a4696f8a3, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, 4793aca8796d8a3b4c645a2ed685028067119d8d, 0b660a5933b137ae142d78318d8c4022f1f4f1ca, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, f056c451c2926e849f52b95fed957945398ef5f6, cb3c5e3455606a045f95f168dae6ed32a387697c, ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04, 5b3f93c47a03b628d613a77005e92021cd6cee4b, 8bf0bab1eb84f903976b7833691d17236eac8dcd, 55dc368f3f679e93bffb9f04efe3944832cf3336]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/web-ui-registration@26.0.0 + - @rocket.chat/apps-engine@1.59.0 + - @rocket.chat/apps@0.6.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/i18n@2.0.0 + - @rocket.chat/media-calls@0.2.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/ui-voip@16.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/message-types@0.1.0 + - @rocket.chat/federation-matrix@0.0.9 + - @rocket.chat/gazzodown@26.0.0 + - @rocket.chat/ui-client@26.0.0 + - @rocket.chat/fuselage-ui-kit@26.0.0 + - @rocket.chat/media-signaling@0.1.1 + - @rocket.chat/ui-kit@0.39.0 + - @rocket.chat/abac@0.1.0 + - @rocket.chat/jwt@0.2.0 + - @rocket.chat/tools@0.2.4 + - @rocket.chat/presence@0.2.47 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/omnichannel-services@0.3.44 + - @rocket.chat/api-client@0.2.47 + - @rocket.chat/http-router@7.9.14 + - @rocket.chat/license@1.1.7 + - @rocket.chat/pdf-worker@0.3.26 + - @rocket.chat/cron@0.1.47 + - @rocket.chat/ui-avatar@22.0.0 + - @rocket.chat/ui-theming@0.4.4 + - @rocket.chat/ui-video-conf@26.0.0 + - @rocket.chat/omni-core-ee@0.0.12 + - @rocket.chat/instance-status@0.1.47 + - @rocket.chat/omni-core@0.0.12 + - @rocket.chat/network-broker@0.2.26 + - @rocket.chat/server-cloud-communication@0.0.2 +
+ +## 8.0.0-rc.5 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/abac@0.1.0-rc.5 + - @rocket.chat/federation-matrix@0.0.9-rc.5 + - @rocket.chat/license@1.1.7-rc.5 + - @rocket.chat/media-calls@0.2.0-rc.5 + - @rocket.chat/omnichannel-services@0.3.44-rc.5 + - @rocket.chat/pdf-worker@0.3.26-rc.5 + - @rocket.chat/presence@0.2.47-rc.5 + - @rocket.chat/api-client@0.2.47-rc.5 + - @rocket.chat/apps@0.6.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/cron@0.1.47-rc.5 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.5 + - @rocket.chat/gazzodown@26.0.0-rc.5 + - @rocket.chat/http-router@7.9.14-rc.5 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/ui-avatar@22.0.0-rc.5 + - @rocket.chat/ui-client@26.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 + - @rocket.chat/ui-voip@16.0.0-rc.5 + - @rocket.chat/web-ui-registration@26.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/network-broker@0.2.26-rc.5 + - @rocket.chat/omni-core-ee@0.0.12-rc.5 + - @rocket.chat/ui-theming@0.4.4 + - @rocket.chat/ui-video-conf@26.0.0-rc.5 + - @rocket.chat/instance-status@0.1.47-rc.5 + - @rocket.chat/omni-core@0.0.12-rc.5 +
+ +## 8.0.0-rc.4 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/abac@0.1.0-rc.4 + - @rocket.chat/federation-matrix@0.0.9-rc.4 + - @rocket.chat/license@1.1.7-rc.4 + - @rocket.chat/media-calls@0.2.0-rc.4 + - @rocket.chat/omnichannel-services@0.3.44-rc.4 + - @rocket.chat/pdf-worker@0.3.26-rc.4 + - @rocket.chat/presence@0.2.47-rc.4 + - @rocket.chat/api-client@0.2.47-rc.4 + - @rocket.chat/apps@0.6.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/cron@0.1.47-rc.4 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.4 + - @rocket.chat/gazzodown@26.0.0-rc.4 + - @rocket.chat/http-router@7.9.14-rc.4 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/ui-avatar@22.0.0-rc.4 + - @rocket.chat/ui-client@26.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 + - @rocket.chat/ui-voip@16.0.0-rc.4 + - @rocket.chat/web-ui-registration@26.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/network-broker@0.2.26-rc.4 + - @rocket.chat/omni-core-ee@0.0.12-rc.4 + - @rocket.chat/ui-theming@0.4.4 + - @rocket.chat/ui-video-conf@26.0.0-rc.4 + - @rocket.chat/instance-status@0.1.47-rc.4 + - @rocket.chat/omni-core@0.0.12-rc.4 +
+ +## 8.0.0-rc.3 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies [ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04]: + + - @rocket.chat/media-signaling@0.1.1-rc.1 + - @rocket.chat/media-calls@0.2.0-rc.3 + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/ui-voip@16.0.0-rc.3 + - @rocket.chat/abac@0.1.0-rc.3 + - @rocket.chat/federation-matrix@0.0.9-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/omni-core-ee@0.0.12-rc.3 + - @rocket.chat/omnichannel-services@0.3.44-rc.3 + - @rocket.chat/presence@0.2.47-rc.3 + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/ui-theming@0.4.4 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.3 + - @rocket.chat/gazzodown@26.0.0-rc.3 + - @rocket.chat/ui-avatar@22.0.0-rc.3 + - @rocket.chat/ui-client@26.0.0-rc.3 + - @rocket.chat/ui-video-conf@26.0.0-rc.3 + - @rocket.chat/web-ui-registration@26.0.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/license@1.1.7-rc.3 + - @rocket.chat/pdf-worker@0.3.26-rc.3 + - @rocket.chat/api-client@0.2.47-rc.3 + - @rocket.chat/apps@0.6.0-rc.3 + - @rocket.chat/cron@0.1.47-rc.3 + - @rocket.chat/http-router@7.9.14-rc.3 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/instance-status@0.1.47-rc.3 + - @rocket.chat/omni-core@0.0.12-rc.3 +
+ +## 8.0.0-rc.2 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +- ([#38007](https://github.com/RocketChat/Rocket.Chat/pull/38007)) Changes the HTTP code of `/api/v1/method.call` and `/api/v1/method.callAnon` in case of internal errors + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/abac@0.1.0-rc.2 + - @rocket.chat/federation-matrix@0.0.9-rc.2 + - @rocket.chat/license@1.1.7-rc.2 + - @rocket.chat/media-calls@0.2.0-rc.2 + - @rocket.chat/omnichannel-services@0.3.44-rc.2 + - @rocket.chat/pdf-worker@0.3.26-rc.2 + - @rocket.chat/presence@0.2.47-rc.2 + - @rocket.chat/api-client@0.2.47-rc.2 + - @rocket.chat/apps@0.6.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/cron@0.1.47-rc.2 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.2 + - @rocket.chat/gazzodown@26.0.0-rc.2 + - @rocket.chat/http-router@7.9.14-rc.2 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/ui-avatar@22.0.0-rc.2 + - @rocket.chat/ui-client@26.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 + - @rocket.chat/ui-voip@16.0.0-rc.2 + - @rocket.chat/web-ui-registration@26.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/network-broker@0.2.26-rc.2 + - @rocket.chat/omni-core-ee@0.0.12-rc.2 + - @rocket.chat/ui-theming@0.4.4 + - @rocket.chat/ui-video-conf@26.0.0-rc.2 + - @rocket.chat/instance-status@0.1.47-rc.2 + - @rocket.chat/omni-core@0.0.12-rc.2 +
+ ## 8.0.0-rc.1 ### Patch Changes diff --git a/apps/meteor/app/api/server/ApiClass.ts b/apps/meteor/app/api/server/ApiClass.ts index 60af03b031fdc..3da37938ed43c 100644 --- a/apps/meteor/app/api/server/ApiClass.ts +++ b/apps/meteor/app/api/server/ApiClass.ts @@ -37,6 +37,7 @@ import type { RedirectResult, UnavailableResult, GenericRouteExecutionContext, + TooManyRequestsResult, } from './definition'; import { getUserInfo } from './helpers/getUserInfo'; import { parseJsonQuery } from './helpers/parseJsonQuery'; @@ -383,7 +384,7 @@ export class APIClass & { success?: boolean } } { + public tooManyRequests(msg?: T): TooManyRequestsResult { return { statusCode: 429, body: { diff --git a/apps/meteor/app/api/server/definition.ts b/apps/meteor/app/api/server/definition.ts index 478acc01d0252..9684b99c798c8 100644 --- a/apps/meteor/app/api/server/definition.ts +++ b/apps/meteor/app/api/server/definition.ts @@ -56,6 +56,14 @@ export type ForbiddenResult = { }; }; +export type TooManyRequestsResult = { + statusCode: 429; + body: { + success: false; + error: T | 'Too many requests'; + }; +}; + export type InternalError = { statusCode: StatusCode; body: { diff --git a/apps/meteor/app/api/server/v1/chat.ts b/apps/meteor/app/api/server/v1/chat.ts index 1f204d81d145d..9884afc7e7367 100644 --- a/apps/meteor/app/api/server/v1/chat.ts +++ b/apps/meteor/app/api/server/v1/chat.ts @@ -434,7 +434,7 @@ API.v1.addRoute( } const sent = await applyAirGappedRestrictionsValidation(() => - executeSendMessage(this.userId, this.bodyParams.message as Pick, this.bodyParams.previewUrls), + executeSendMessage(this.userId, this.bodyParams.message as Pick, { previewUrls: this.bodyParams.previewUrls }), ); const [message] = await normalizeMessagesForUser([sent], this.userId); @@ -456,7 +456,7 @@ API.v1.addRoute( throw new Meteor.Error('error-message-not-found', 'The provided "messageId" does not match any existing message.'); } - await starMessage(this.userId, { + await starMessage(this.user, { _id: msg._id, rid: msg.rid, starred: true, @@ -478,7 +478,7 @@ API.v1.addRoute( throw new Meteor.Error('error-message-not-found', 'The provided "messageId" does not match any existing message.'); } - await starMessage(this.userId, { + await starMessage(this.user, { _id: msg._id, rid: msg.rid, starred: false, diff --git a/apps/meteor/app/api/server/v1/misc.ts b/apps/meteor/app/api/server/v1/misc.ts index 75803bbed759d..403ffcc29b4ce 100644 --- a/apps/meteor/app/api/server/v1/misc.ts +++ b/apps/meteor/app/api/server/v1/misc.ts @@ -525,7 +525,8 @@ API.v1.addRoute( if (settings.get('Log_Level') === '2') { Meteor._debug(`Exception while invoking method ${method}`, err); } - return API.v1.success(mountResult({ id, error: err })); + + return API.v1.failure(mountResult({ id, error: err })); } }, }, @@ -580,7 +581,7 @@ API.v1.addRoute( if (settings.get('Log_Level') === '2') { Meteor._debug(`Exception while invoking method ${method}`, err); } - return API.v1.success(mountResult({ id, error: err })); + return API.v1.failure(mountResult({ id, error: err })); } }, }, diff --git a/apps/meteor/app/lib/server/functions/createRoom.ts b/apps/meteor/app/lib/server/functions/createRoom.ts index bb99ae7237f19..7b64ec9e68b09 100644 --- a/apps/meteor/app/lib/server/functions/createRoom.ts +++ b/apps/meteor/app/lib/server/functions/createRoom.ts @@ -2,7 +2,7 @@ import { AppEvents, Apps } from '@rocket.chat/apps'; import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions'; import { FederationMatrix, Message, Room, Team } from '@rocket.chat/core-services'; import type { ICreateRoomParams, ISubscriptionExtraData } from '@rocket.chat/core-services'; -import type { ICreatedRoom, IUser, IRoom, RoomType } from '@rocket.chat/core-typings'; +import { type ICreatedRoom, type IUser, type IRoom, type RoomType, isUserNativeFederated } from '@rocket.chat/core-typings'; import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; import { Meteor } from 'meteor/meteor'; @@ -184,7 +184,12 @@ export const createRoom = async ( const shouldBeHandledByFederation = extraData.federated === true; - if (shouldBeHandledByFederation && owner && !(await hasPermissionAsync(owner._id, 'access-federation'))) { + if ( + shouldBeHandledByFederation && + owner && + !isUserNativeFederated(owner) && + !(await hasPermissionAsync(owner._id, 'access-federation')) + ) { throw new Meteor.Error('error-not-authorized-federation', 'Not authorized to access federation', { method: 'createRoom', }); diff --git a/apps/meteor/app/lib/server/functions/getRoomByNameOrIdWithOptionToJoin.ts b/apps/meteor/app/lib/server/functions/getRoomByNameOrIdWithOptionToJoin.ts index e1aeabe1b46a5..6217342d0c534 100644 --- a/apps/meteor/app/lib/server/functions/getRoomByNameOrIdWithOptionToJoin.ts +++ b/apps/meteor/app/lib/server/functions/getRoomByNameOrIdWithOptionToJoin.ts @@ -14,7 +14,7 @@ export const getRoomByNameOrIdWithOptionToJoin = async ({ joinChannel = true, errorOnEmpty = true, }: { - user: Pick; + user: Pick; nameOrId: string; type?: RoomType; tryDirectByUserIdOnly?: boolean; diff --git a/apps/meteor/app/lib/server/methods/getChannelHistory.ts b/apps/meteor/app/lib/server/methods/getChannelHistory.ts index e0a2a844a75eb..cd2096a82a1a9 100644 --- a/apps/meteor/app/lib/server/methods/getChannelHistory.ts +++ b/apps/meteor/app/lib/server/methods/getChannelHistory.ts @@ -48,10 +48,6 @@ export const getChannelHistory = async ({ }): Promise => { check(rid, String); - if (!Meteor.userId()) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'getChannelHistory' }); - } - if (!fromUserId) { return false; } diff --git a/apps/meteor/app/lib/server/methods/joinRoom.ts b/apps/meteor/app/lib/server/methods/joinRoom.ts index 8960936d7c33d..d11050bbb2201 100644 --- a/apps/meteor/app/lib/server/methods/joinRoom.ts +++ b/apps/meteor/app/lib/server/methods/joinRoom.ts @@ -16,8 +16,8 @@ Meteor.methods({ async joinRoom(rid, code) { check(rid, String); - const userId = await Meteor.userId(); - if (!userId) { + const user = await Meteor.userAsync(); + if (!user) { throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'joinRoom' }); } @@ -26,6 +26,6 @@ Meteor.methods({ throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'joinRoom' }); } - return Room.join({ room, user: { _id: userId }, ...(code ? { joinCode: code } : {}) }); + return Room.join({ room, user, ...(code ? { joinCode: code } : {}) }); }, }); diff --git a/apps/meteor/app/lib/server/methods/sendMessage.ts b/apps/meteor/app/lib/server/methods/sendMessage.ts index 66758bc7faa1c..db7a017ee7a01 100644 --- a/apps/meteor/app/lib/server/methods/sendMessage.ts +++ b/apps/meteor/app/lib/server/methods/sendMessage.ts @@ -19,7 +19,21 @@ import { settings } from '../../../settings/server'; import { sendMessage } from '../functions/sendMessage'; import { RateLimiter } from '../lib'; -export async function executeSendMessage(uid: IUser['_id'], message: AtLeast, previewUrls?: string[]) { +/** + * + * @param uid + * @param message + * @param extraInfo + * - ts: The timestamp of the message. the message object already has a ts, but this value is validated and only a window of 10 seconds is allowed to be used. this value overrides the message.ts value without validation. + * + * + * @returns + */ +export async function executeSendMessage( + uid: IUser['_id'], + message: AtLeast, + extraInfo?: { ts?: Date; previewUrls?: string[] }, +) { if (message.tshow && !message.tmid) { throw new Meteor.Error('invalid-params', 'tshow provided but missing tmid', { method: 'sendMessage', @@ -32,7 +46,10 @@ export async function executeSendMessage(uid: IUser['_id'], message: AtLeast 60000) { throw new Meteor.Error('error-message-ts-out-of-sync', 'Message timestamp is out of sync', { @@ -40,11 +57,10 @@ export async function executeSendMessage(uid: IUser['_id'], message: AtLeast 10000) { - message.ts = new Date(); } - } else { - message.ts = new Date(); + if (tsDiff > 10000) { + message.ts = now; + } } if (message.msg) { @@ -90,7 +106,7 @@ export async function executeSendMessage(uid: IUser['_id'], message: AtLeast({ } try { - return await applyAirGappedRestrictionsValidation(() => executeSendMessage(uid, message, previewUrls)); + return await applyAirGappedRestrictionsValidation(() => executeSendMessage(uid, message, { previewUrls })); } catch (error: any) { if (['error-not-allowed', 'restricted-workspace'].includes(error.error || error.message)) { throw new Meteor.Error(error.error || error.message, error.reason, { diff --git a/apps/meteor/app/message-star/server/starMessage.ts b/apps/meteor/app/message-star/server/starMessage.ts index 96b342f8bfa69..38cfc648af04d 100644 --- a/apps/meteor/app/message-star/server/starMessage.ts +++ b/apps/meteor/app/message-star/server/starMessage.ts @@ -1,11 +1,12 @@ import { Apps, AppEvents } from '@rocket.chat/apps'; -import type { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage, IUser } from '@rocket.chat/core-typings'; import type { ServerMethods } from '@rocket.chat/ddp-client'; import { Messages, Subscriptions, Rooms } from '@rocket.chat/models'; import { Meteor } from 'meteor/meteor'; import { canAccessRoomAsync, roomAccessAttributes } from '../../authorization/server'; import { isTheLastMessage } from '../../lib/server/functions/isTheLastMessage'; +import { methodDeprecationLogger } from '../../lib/server/lib/deprecationWarningLogger'; import { notifyOnRoomChangedById, notifyOnMessageChange } from '../../lib/server/lib/notifyListener'; import { settings } from '../../settings/server'; @@ -16,7 +17,7 @@ declare module '@rocket.chat/ddp-client' { } } -export const starMessage = async (userId: string, message: Pick & { starred: boolean }): Promise => { +export const starMessage = async (user: IUser, message: Pick & { starred: boolean }): Promise => { if (!settings.get('Message_AllowStarring')) { throw new Meteor.Error('error-action-not-allowed', 'Message starring not allowed', { method: 'starMessage', @@ -24,7 +25,7 @@ export const starMessage = async (userId: string, message: Pick({ async starMessage(message) { - const uid = Meteor.userId(); + methodDeprecationLogger.method('starMessage', '9.0.0', '/v1/chat.starMessage'); + const user = (await Meteor.userAsync()) as IUser; - if (!uid) { + if (!user) { throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'starMessage', }); } - return starMessage(uid, message); + return starMessage(user, message); }, }); diff --git a/apps/meteor/app/slashcommands-join/server/server.ts b/apps/meteor/app/slashcommands-join/server/server.ts index 6497324ae9e0e..2a70552ef839f 100644 --- a/apps/meteor/app/slashcommands-join/server/server.ts +++ b/apps/meteor/app/slashcommands-join/server/server.ts @@ -1,6 +1,6 @@ import { api, Room } from '@rocket.chat/core-services'; import type { SlashCommandCallbackParams } from '@rocket.chat/core-typings'; -import { Rooms, Subscriptions } from '@rocket.chat/models'; +import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; import { Meteor } from 'meteor/meteor'; import { i18n } from '../../../server/lib/i18n'; @@ -43,7 +43,13 @@ slashCommands.add({ }); } - await Room.join({ room, user: { _id: userId } }); + const user = await Users.findOneById(userId, { projection: { federated: 1, federation: 1 } }); + if (!user) { + throw new Meteor.Error('error-invalid-user', 'Invalid user', { + method: 'slashCommands', + }); + } + await Room.join({ room, user }); }, options: { description: 'Join_the_given_channel', diff --git a/apps/meteor/client/hooks/useVoipWarningModal.tsx b/apps/meteor/client/hooks/useVoipWarningModal.tsx deleted file mode 100644 index 568475d3a5efa..0000000000000 --- a/apps/meteor/client/hooks/useVoipWarningModal.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { useEffectEvent } from '@rocket.chat/fuselage-hooks'; -import { useRole, useRoute, useSetModal } from '@rocket.chat/ui-contexts'; -import { useMemo } from 'react'; - -import { useHasLicenseModule } from './useHasLicenseModule'; -import TeamsVoipConfigModal from '../views/room/contextualBar/TeamsVoipConfigModal'; - -export const useVoipWarningModal = (): (() => void) => { - const setModal = useSetModal(); - const isAdmin = useRole('admin'); - const { data: hasModule = false } = useHasLicenseModule('teams-voip'); - const teamsVoipSettingsRoute = useRoute('admin-settings'); - - const handleClose = useEffectEvent(() => setModal(null)); - - const handleRedirectToConfiguration = useEffectEvent(() => { - handleClose(); - teamsVoipSettingsRoute.push({ - group: 'VoIP_TeamCollab', - }); - }); - - return useMemo( - () => (): void => - setModal( - , - ), - [handleClose, handleRedirectToConfiguration, isAdmin, setModal, hasModule], - ); -}; diff --git a/apps/meteor/client/lib/e2ee/crypto/shared.ts b/apps/meteor/client/lib/e2ee/crypto/shared.ts index ea95b651c6f57..1605a106e53b3 100644 --- a/apps/meteor/client/lib/e2ee/crypto/shared.ts +++ b/apps/meteor/client/lib/e2ee/crypto/shared.ts @@ -1,5 +1,5 @@ const { subtle } = crypto; -export const randomUUID = crypto.randomUUID.bind(crypto); +export const randomUUID = () => crypto.randomUUID(); export const getRandomValues = crypto.getRandomValues.bind(crypto); interface IAesGcmParams extends AesGcmParams { @@ -40,7 +40,7 @@ export const decryptBuffer = ( params: ParamsOf, data: BufferSource, ): Promise => subtle.decrypt(params, key, data) as Promise; -export const deriveBits = subtle.deriveBits.bind(subtle); +export const deriveBits = (...args: Parameters) => subtle.deriveBits(...args); type AesParams = { name: 'AES-CBC' | 'AES-GCM' | 'AES-CTR'; diff --git a/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts b/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts index 7632ee64e9e39..4268630bb50b2 100644 --- a/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts +++ b/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts @@ -345,6 +345,10 @@ class E2E extends Emitter { } async startClient(userId: string): Promise { + if (!isSecureContext) { + throw new Error('E2E encryption can only be enabled in secure contexts (HTTPS)'); + } + const span = log.span('startClient'); if (this.userId === userId) { return; diff --git a/apps/meteor/client/lib/queryKeys.ts b/apps/meteor/client/lib/queryKeys.ts index a619b03178100..9d1a86dea8f3a 100644 --- a/apps/meteor/client/lib/queryKeys.ts +++ b/apps/meteor/client/lib/queryKeys.ts @@ -26,6 +26,10 @@ export const roomsQueryKeys = { threads: (rid: IRoom['_id']) => [...roomsQueryKeys.room(rid), 'threads'] as const, roles: (rid: IRoom['_id']) => [...roomsQueryKeys.room(rid), 'roles'] as const, info: (rid: IRoom['_id']) => [...roomsQueryKeys.room(rid), 'info'] as const, + members: (rid: IRoom['_id'], roomType: RoomType, type?: 'all' | 'online', filter?: string) => + !type && !filter + ? ([...roomsQueryKeys.room(rid), 'members', roomType] as const) + : ([...roomsQueryKeys.room(rid), 'members', roomType, type, filter] as const), }; export const subscriptionsQueryKeys = { @@ -128,17 +132,17 @@ export const ABACQueryKeys = { all: ['abac'] as const, logs: { all: () => [...ABACQueryKeys.all, 'logs'] as const, - list: (query?: PaginatedRequest) => [...ABACQueryKeys.logs.all(), 'list', query] as const, + list: (...args: [query?: PaginatedRequest]) => [...ABACQueryKeys.logs.all(), 'list', ...args] as const, }, roomAttributes: { all: () => [...ABACQueryKeys.all, 'room-attributes'] as const, - list: (query?: PaginatedRequest) => [...ABACQueryKeys.roomAttributes.all(), query] as const, + list: (...args: [query?: PaginatedRequest]) => [...ABACQueryKeys.roomAttributes.all(), ...args] as const, attribute: (attributeId: string) => [...ABACQueryKeys.roomAttributes.all(), attributeId] as const, }, rooms: { all: () => [...ABACQueryKeys.all, 'rooms'] as const, - list: (query?: PaginatedRequest) => [...ABACQueryKeys.rooms.all(), query] as const, - autocomplete: (query?: PaginatedRequest) => [...ABACQueryKeys.rooms.all(), 'autocomplete', query] as const, + list: (...args: [query?: PaginatedRequest]) => [...ABACQueryKeys.rooms.all(), ...args] as const, + autocomplete: (...args: [query?: PaginatedRequest]) => [...ABACQueryKeys.rooms.all(), 'autocomplete', ...args] as const, room: (roomId: string) => [...ABACQueryKeys.rooms.all(), roomId] as const, }, }; diff --git a/apps/meteor/client/meteor/overrides/ddpOverREST.ts b/apps/meteor/client/meteor/overrides/ddpOverREST.ts index 205f0d5a4c6ac..e7fb05275e3ab 100644 --- a/apps/meteor/client/meteor/overrides/ddpOverREST.ts +++ b/apps/meteor/client/meteor/overrides/ddpOverREST.ts @@ -88,7 +88,10 @@ const withDDPOverREST = (_send: (this: Meteor.IMeteorConnection, message: Meteor processResult(_message); }) - .catch((error) => { + .catch(async (error) => { + if ('message' in error && error.message) { + processResult(error.message); + } console.error(error); }); }; diff --git a/apps/meteor/client/navbar/NavBarControls/NavBarControlsWithData.tsx b/apps/meteor/client/navbar/NavBarControls/NavBarControlsWithData.tsx index 04a28da309b3c..1a54983ac5e93 100644 --- a/apps/meteor/client/navbar/NavBarControls/NavBarControlsWithData.tsx +++ b/apps/meteor/client/navbar/NavBarControls/NavBarControlsWithData.tsx @@ -1,6 +1,7 @@ import type { GenericMenuItemProps } from '@rocket.chat/ui-client'; +import { useRouter } from '@rocket.chat/ui-contexts'; import { useMediaCallAction } from '@rocket.chat/ui-voip'; -import type { HTMLAttributes } from 'react'; +import { useCallback, type HTMLAttributes } from 'react'; import { useTranslation } from 'react-i18next'; import NavBarControlsMenu from './NavBarControlsMenu'; @@ -14,6 +15,11 @@ const NavBarControlsWithData = (props: NavBarControlsMenuProps) => { const { t } = useTranslation(); const callAction = useMediaCallAction(); + const router = useRouter(); + const openCallHistory = useCallback(() => { + router.navigate('/call-history'); + }, [router]); + const { isEnabled: queueEnabled, icon: queueIcon, @@ -49,6 +55,7 @@ const NavBarControlsWithData = (props: NavBarControlsMenuProps) => { id: 'rcx-media-call-history', icon: 'clock' as const, content: t('Call_history'), + onClick: openCallHistory, } : undefined; diff --git a/apps/meteor/client/providers/MediaCallProvider.tsx b/apps/meteor/client/providers/MediaCallProvider.tsx index a1e8f552808a0..68d773d49e776 100644 --- a/apps/meteor/client/providers/MediaCallProvider.tsx +++ b/apps/meteor/client/providers/MediaCallProvider.tsx @@ -4,11 +4,8 @@ import type { ReactNode } from 'react'; import { useMemo } from 'react'; import { useHasLicenseModule } from '../hooks/useHasLicenseModule'; -import { useVoipWarningModal } from '../hooks/useVoipWarningModal'; const MediaCallProvider = ({ children }: { children: ReactNode }) => { - const dispatchWarning = useVoipWarningModal(); - const canMakeInternalCall = usePermission('allow-internal-voice-calls'); const canMakeExternalCall = usePermission('allow-external-voice-calls'); @@ -24,21 +21,7 @@ const MediaCallProvider = ({ children }: { children: ReactNode }) => { [], ); - const unlicensedContextValue = useMemo( - () => ({ - state: 'unlicensed' as const, - onToggleWidget: dispatchWarning, - onEndCall: undefined, - peerInfo: undefined, - }), - [dispatchWarning], - ); - - if (!hasModule) { - return {children}; - } - - if (!canMakeInternalCall && !canMakeExternalCall) { + if (!hasModule || (!canMakeInternalCall && !canMakeExternalCall)) { return {children}; } diff --git a/apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesContextualBar.tsx b/apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesContextualBar.tsx index a1f22fd11a1dd..7e0971a421097 100644 --- a/apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesContextualBar.tsx +++ b/apps/meteor/client/views/admin/ABAC/ABACAttributesTab/AttributesContextualBar.tsx @@ -30,7 +30,7 @@ const AttributesContextualBar = ({ attributeData, onClose }: AttributesContextua defaultValues: attributeData ? { name: attributeData.key, - attributeValues: [{ value: '' }], + attributeValues: [], lockedAttributes: attributeData.values.map((value) => ({ value })), } : { @@ -71,11 +71,15 @@ const AttributesContextualBar = ({ attributeData, onClose }: AttributesContextua } onClose(); }, - onError: (error) => { - dispatchToastMessage({ type: 'error', message: error }); + onError: (error: { errorType: string; error: string }) => { + if (error.errorType === 'invalid-params') { + dispatchToastMessage({ type: 'error', message: t('ABAC_Invalid_attribute') }); + } else { + dispatchToastMessage({ type: 'error', message: error }); + } }, onSettled: () => { - queryClient.invalidateQueries({ queryKey: ABACQueryKeys.roomAttributes.list({}) }); + queryClient.invalidateQueries({ queryKey: ABACQueryKeys.roomAttributes.list() }); }, }); diff --git a/apps/meteor/client/views/admin/moderation/helpers/DateRangePicker.tsx b/apps/meteor/client/views/admin/moderation/helpers/DateRangePicker.tsx index 82b3d7419d541..b17d664f1cdad 100644 --- a/apps/meteor/client/views/admin/moderation/helpers/DateRangePicker.tsx +++ b/apps/meteor/client/views/admin/moderation/helpers/DateRangePicker.tsx @@ -12,8 +12,6 @@ type DateRangePickerProps = { const formatToDateInput = (date: Moment) => date.locale('en').format('YYYY-MM-DD'); -const todayDate = formatToDateInput(moment()); - const getMonthRange = (monthsToSubtractFromToday: number) => ({ start: formatToDateInput(moment().subtract(monthsToSubtractFromToday, 'month').date(1)), end: formatToDateInput(monthsToSubtractFromToday === 0 ? moment() : moment().subtract(monthsToSubtractFromToday).date(0)), @@ -61,8 +59,8 @@ const DateRangePicker = ({ onChange, defaultSelectedKey = 'alldates' }: DateRang break; case 'alldates': handleRange({ - start: formatToDateInput(moment(0)), - end: todayDate, + start: '', + end: '', }); break; default: diff --git a/apps/meteor/client/views/hooks/useMembersList.ts b/apps/meteor/client/views/hooks/useMembersList.ts index 128b227d28def..476b8eef4251c 100644 --- a/apps/meteor/client/views/hooks/useMembersList.ts +++ b/apps/meteor/client/views/hooks/useMembersList.ts @@ -5,6 +5,7 @@ import { useInfiniteQuery, useQueryClient } from '@tanstack/react-query'; import { useEffect } from 'react'; import { calculateRoomRolePriorityFromRoles } from '../../../lib/roles/calculateRoomRolePriorityFromRoles'; +import { roomsQueryKeys } from '../../lib/queryKeys'; type MembersListOptions = { rid: string; @@ -73,7 +74,7 @@ const updateMemberInCache = ( useRealName = false, ) => { queryClient.setQueryData( - [options.roomType, 'members', options.rid, options.type, options.debouncedText], + roomsQueryKeys.members(options.rid, options.roomType, options.type, options.debouncedText), (oldData: InfiniteData) => { if (!oldData) { return oldData; @@ -136,7 +137,7 @@ export const useMembersList = (options: MembersListOptions) => { }, [options, queryClient, subscribeToNotifyLoggedIn, useRealName]); return useInfiniteQuery({ - queryKey: [options.roomType, 'members', options.rid, options.type, options.debouncedText], + queryKey: roomsQueryKeys.members(options.rid, options.roomType, options.type, options.debouncedText), queryFn: async ({ pageParam }) => { const start = pageParam ?? 0; diff --git a/apps/meteor/client/views/mediaCallHistory/CallHistoryPage.tsx b/apps/meteor/client/views/mediaCallHistory/CallHistoryPage.tsx index efa52920baed8..31dce65c22924 100644 --- a/apps/meteor/client/views/mediaCallHistory/CallHistoryPage.tsx +++ b/apps/meteor/client/views/mediaCallHistory/CallHistoryPage.tsx @@ -1,6 +1,6 @@ import { Pagination } from '@rocket.chat/fuselage'; import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; -import { useSort, Page, PageHeader, PageContent, usePagination, GenericTableLoadingRow } from '@rocket.chat/ui-client'; +import { useSort, usePagination, GenericTableLoadingRow } from '@rocket.chat/ui-client'; import { useEndpoint, useRouteParameter, useRouter } from '@rocket.chat/ui-contexts'; import { MediaCallHistoryTable, isCallHistoryUnknownContact, isCallHistoryTableInternalContact } from '@rocket.chat/ui-voip'; import type { CallHistoryTableInternalContact, CallHistoryUnknownContact, CallHistoryTableExternalContact } from '@rocket.chat/ui-voip'; @@ -8,7 +8,8 @@ import { useQuery } from '@tanstack/react-query'; import { useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import CallHistoryPageFilters, { useCallHistoryPageFilters } from './CallHistoryPageFilters'; +import { useCallHistoryPageFilters } from './CallHistoryPageFilters'; +import CallHistoryPageLayout from './CallHistoryPageLayout'; import CallHistoryRowExternalUser from './CallHistoryRowExternalUser'; import CallHistoryRowInternalUser from './CallHistoryRowInternalUser'; import CallHistoryRowUnknownUser from './CallHistoryRowUnknownUser'; @@ -164,77 +165,76 @@ const CallHistoryPage = () => { }); }, [data]); + const contextualBar = (() => { + if (tab?.openTab === 'user-info') { + return ; + } + if (tab?.openTab === 'details' && historyId) { + return ; + } + return null; + })(); + + const pagination = ( + + ); + if (isPending) { return ( - + + + + - + {pagination} + ); } if (error) { return ( - - - - refetch()} - /> - - + + refetch()} + /> + ); } return ( - - - - - - {!tableData || (tableData.length === 0 && )} - {tableData && tableData.length > 0 && ( - - {tableData.map((item) => { - if (isCallHistoryUnknownContact(item.contact)) { - return ( - onClickRow('', item._id)} /> - ); - } - if (isCallHistoryTableInternalContact(item.contact)) { - return ( - onClickRow(item.rid ?? '', item._id)} - rid={item.rid ?? ''} - onClickUserInfo={item.rid ? openUserInfo : undefined} - /> - ); - } - - return ( - onClickRow('', item._id)} /> - ); - })} - - )} - - - - {tab?.openTab === 'user-info' && ( - - )} - {tab?.openTab === 'details' && historyId && ( - + + {!tableData || (tableData.length === 0 && )} + {tableData && tableData.length > 0 && ( + + {tableData.map((item) => { + if (isCallHistoryUnknownContact(item.contact)) { + return onClickRow('', item._id)} />; + } + if (isCallHistoryTableInternalContact(item.contact)) { + return ( + onClickRow(item.rid ?? '', item._id)} + rid={item.rid ?? ''} + onClickUserInfo={item.rid ? openUserInfo : undefined} + /> + ); + } + + return onClickRow('', item._id)} />; + })} + )} - + {pagination} + ); }; diff --git a/apps/meteor/client/views/mediaCallHistory/CallHistoryPageFilters.tsx b/apps/meteor/client/views/mediaCallHistory/CallHistoryPageFilters.tsx index cf1a199613d9a..69719a03e4000 100644 --- a/apps/meteor/client/views/mediaCallHistory/CallHistoryPageFilters.tsx +++ b/apps/meteor/client/views/mediaCallHistory/CallHistoryPageFilters.tsx @@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next'; type StatesFilter = Array<'ended' | 'transferred' | 'not-answered' | 'failed'>; type TypeFilter = 'inbound' | 'outbound' | 'all'; -type CallHistoryPageFiltersProps = { +export type CallHistoryPageFiltersProps = { onChangeText: (nameOrUsernameOrExtension: string) => void; onChangeType: (type: TypeFilter) => void; onChangeStates: (states: StatesFilter) => void; @@ -86,7 +86,7 @@ const CallHistoryPageFilters = ({ onChangeText, onChangeType, onChangeStates, se alignItems='center' justifyContent='center' > - + - - onChangeType(key as TypeFilter)} /> + + + + ); diff --git a/apps/meteor/client/views/mediaCallHistory/CallHistoryPageLayout.tsx b/apps/meteor/client/views/mediaCallHistory/CallHistoryPageLayout.tsx new file mode 100644 index 0000000000000..f5dcdb108be0d --- /dev/null +++ b/apps/meteor/client/views/mediaCallHistory/CallHistoryPageLayout.tsx @@ -0,0 +1,30 @@ +import { Page, PageHeader, PageContent } from '@rocket.chat/ui-client'; +import type { ReactNode } from 'react'; +import { useTranslation } from 'react-i18next'; + +import CallHistoryPageFilters, { type CallHistoryPageFiltersProps } from './CallHistoryPageFilters'; + +type CallHistoryPageLayoutProps = { + children: ReactNode; + contextualBar?: ReactNode; + filterProps: CallHistoryPageFiltersProps; +}; + +const CallHistoryPageLayout = ({ children, contextualBar, filterProps }: CallHistoryPageLayoutProps) => { + const { t } = useTranslation(); + + return ( + + + + + + {children} + + + {contextualBar} + + ); +}; + +export default CallHistoryPageLayout; diff --git a/apps/meteor/client/views/mediaCallHistory/CallHistoryRowExternalUser.tsx b/apps/meteor/client/views/mediaCallHistory/CallHistoryRowExternalUser.tsx index 8ae8b562ee217..b26b3621b632b 100644 --- a/apps/meteor/client/views/mediaCallHistory/CallHistoryRowExternalUser.tsx +++ b/apps/meteor/client/views/mediaCallHistory/CallHistoryRowExternalUser.tsx @@ -1,6 +1,6 @@ import { GenericMenu } from '@rocket.chat/ui-client'; -import { CallHistoryTableRow, useMediaCallContext } from '@rocket.chat/ui-voip'; import type { CallHistoryTableExternalContact, CallHistoryTableRowProps } from '@rocket.chat/ui-voip'; +import { CallHistoryTableRow, useMediaCallContext, isCallingBlocked } from '@rocket.chat/ui-voip'; import { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; @@ -11,14 +11,14 @@ type CallHistoryRowExternalUserProps = Omit { const { t } = useTranslation(); - const { onToggleWidget } = useMediaCallContext(); + const { onToggleWidget, state } = useMediaCallContext(); const handleClick = useCallback(() => { onClick(_id); }, [onClick, _id]); const actions = useMemo(() => { - if (!onToggleWidget) { + if (state === 'unauthorized' || state === 'unlicensed' || !onToggleWidget) { return []; } return [ @@ -26,10 +26,12 @@ const CallHistoryRowExternalUser = ({ _id, contact, type, status, duration, time id: 'voiceCall', icon: 'phone', content: t('Voice_call'), + disabled: isCallingBlocked(state), + tooltip: isCallingBlocked(state) ? t('Call_in_progress') : undefined, onClick: () => onToggleWidget({ number: contact.number }), } as const, ]; - }, [contact, onToggleWidget, t]); + }, [contact, onToggleWidget, t, state]); return ( = { userInfo: 'User_info', } as const; -const getItems = (actions: HistoryActionCallbacks, t: TFunction) => { +const getItems = (actions: HistoryActionCallbacks, t: TFunction, state: MediaCallState) => { return (Object.entries(actions) as [HistoryActions, () => void][]) .filter(([_, callback]) => callback) - .map(([action, callback]) => ({ - id: action, - icon: iconDictionary[action], - content: t(i18nDictionary[action]), - onClick: callback, - })); + .map(([action, callback]) => { + const disabled = action === 'voiceCall' && isCallingBlocked(state); + return { + id: action, + icon: iconDictionary[action], + content: t(i18nDictionary[action]), + disabled, + tooltip: disabled ? t('Call_in_progress') : undefined, + onClick: callback, + }; + }); }; const CallHistoryRowInternalUser = ({ @@ -61,6 +66,7 @@ const CallHistoryRowInternalUser = ({ onClick, }: CallHistoryRowInternalUserProps) => { const { t } = useTranslation(); + const { state } = useMediaCallContext(); const actions = useMediaCallInternalHistoryActions({ contact: { _id: contact._id, @@ -73,7 +79,7 @@ const CallHistoryRowInternalUser = ({ openUserInfo: onClickUserInfo ? (userId) => onClickUserInfo(userId, rid) : undefined, }); - const items = getItems(actions, t); + const items = getItems(actions, t, state); const handleClick = useCallback(() => { onClick(_id); diff --git a/apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx b/apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx index 795fe4263f64d..bf0dacc652c24 100644 --- a/apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx +++ b/apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx @@ -24,11 +24,13 @@ export const isInternalCallHistoryItem = (data: { item: Serialized { const { caller, callee } = call ?? {}; const contact = caller?.id === item.contactId ? caller : callee; - const { id, sipExtension, username, ...rest } = contact; + const { id, sipExtension, username, displayName, ...rest } = contact; return { ...rest, _id: id, username: username ?? '', + name: displayName, + displayName, voiceCallExtension: sipExtension, }; }; diff --git a/apps/meteor/client/views/mediaCallHistory/useMediaCallInternalHistoryActions.ts b/apps/meteor/client/views/mediaCallHistory/useMediaCallInternalHistoryActions.ts index ef6d4c7af2fd3..d1a47d83119c7 100644 --- a/apps/meteor/client/views/mediaCallHistory/useMediaCallInternalHistoryActions.ts +++ b/apps/meteor/client/views/mediaCallHistory/useMediaCallInternalHistoryActions.ts @@ -29,13 +29,13 @@ export const useMediaCallInternalHistoryActions = ({ messageRoomId, openUserInfo, }: UseMediaCallInternalHistoryActionsBaseOptions) => { - const { onToggleWidget } = useMediaCallContext(); + const { onToggleWidget, state } = useMediaCallContext(); const router = useRouter(); const getAvatarUrl = useUserAvatarPath(); const voiceCall = useEffectEvent(() => { - if (!onToggleWidget) { + if (state === 'unauthorized' || state === 'unlicensed' || !onToggleWidget) { return; } diff --git a/apps/meteor/client/views/omnichannel/hooks/useContactRoute.ts b/apps/meteor/client/views/omnichannel/hooks/useContactRoute.ts index 867119f7eaa9c..50f25d79a723d 100644 --- a/apps/meteor/client/views/omnichannel/hooks/useContactRoute.ts +++ b/apps/meteor/client/views/omnichannel/hooks/useContactRoute.ts @@ -13,7 +13,8 @@ export const useContactRoute = () => { return; } - if (currentRouteName === 'omnichannel-directory') { + // TODO: Map out all the routes that use this hook and properly handle them + if (currentRouteName === 'omnichannel-directory' || currentRouteName === 'omnichannel-current-chats') { return navigate({ name: currentRouteName, params: { diff --git a/apps/meteor/client/views/room/Room.tsx b/apps/meteor/client/views/room/Room.tsx index 69438ed251d8d..fed2a9da31e58 100644 --- a/apps/meteor/client/views/room/Room.tsx +++ b/apps/meteor/client/views/room/Room.tsx @@ -1,6 +1,6 @@ import { isInviteSubscription } from '@rocket.chat/core-typings'; import { ContextualbarSkeleton } from '@rocket.chat/ui-client'; -import { useSetting, useRoomToolbox } from '@rocket.chat/ui-contexts'; +import { useSetting, useRoomToolbox, useUserId } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; import { createElement, lazy, memo, Suspense } from 'react'; import { FocusScope } from 'react-aria'; @@ -23,6 +23,7 @@ const UiKitContextualBar = lazy(() => import('./contextualBar/uikit/UiKitContext const Room = (): ReactElement => { const { t } = useTranslation(); + const userId = useUserId(); const room = useRoom(); const subscription = useRoomSubscription(); const toolbox = useRoomToolbox(); @@ -36,7 +37,7 @@ const Room = (): ReactElement => { if (subscription && isInviteSubscription(subscription)) { return ( - + ); } diff --git a/apps/meteor/client/views/room/RoomInvite.tsx b/apps/meteor/client/views/room/RoomInvite.tsx index 36d8ab8f16420..936fc7cd02905 100644 --- a/apps/meteor/client/views/room/RoomInvite.tsx +++ b/apps/meteor/client/views/room/RoomInvite.tsx @@ -1,25 +1,46 @@ -import { isRoomFederated, type IInviteSubscription } from '@rocket.chat/core-typings'; -import type { ComponentProps } from 'react'; +import { isRoomFederated } from '@rocket.chat/core-typings'; +import type { IUser, IInviteSubscription } from '@rocket.chat/core-typings'; +import { useEffectEvent } from '@rocket.chat/fuselage-hooks'; +import { useQueryClient } from '@tanstack/react-query'; +import { useEffect, type ComponentProps } from 'react'; import { useTranslation } from 'react-i18next'; import Header from './Header'; import RoomInviteBody from './body/RoomInviteBody'; +import { useGoToHomeOnRemoved } from './body/hooks/useGoToHomeOnRemoved'; import type { IRoomWithFederationOriginalName } from './contexts/RoomContext'; import { useRoomInvitation } from './hooks/useRoomInvitation'; import RoomLayout from './layout/RoomLayout'; import { links } from '../../lib/links'; +import { roomsQueryKeys, subscriptionsQueryKeys } from '../../lib/queryKeys'; type RoomInviteProps = Omit, 'header' | 'body' | 'aside'> & { + userId?: IUser['_id']; room: IRoomWithFederationOriginalName; subscription: IInviteSubscription; }; -const RoomInvite = ({ room, subscription, ...props }: RoomInviteProps) => { +const RoomInvite = ({ room, subscription, userId, ...props }: RoomInviteProps) => { const { t } = useTranslation(); + const queryClient = useQueryClient(); const { acceptInvite, rejectInvite, isPending } = useRoomInvitation(room); const infoLink = isRoomFederated(room) ? { label: t('Learn_more_about_Federation'), href: links.go.matrixFederation } : undefined; + useGoToHomeOnRemoved(room, userId); + + const invalidateQueries = useEffectEvent(() => { + const reference = room.federationOriginalName ?? room.name ?? room._id; + void queryClient.invalidateQueries({ queryKey: roomsQueryKeys.room(room._id) }); + void queryClient.invalidateQueries({ queryKey: subscriptionsQueryKeys.subscription(room._id) }); + void queryClient.invalidateQueries({ queryKey: roomsQueryKeys.roomReference(reference, room.t, userId) }); + }); + + useEffect(() => { + // Invalidate room and subscription queries when unmounting (invite accepted or rejected) + return () => invalidateQueries(); + }, [invalidateQueries]); + return ( { - if (event !== 'inserted') { + if (sub.rid !== rid || event === 'removed') { return; } - if (sub.rid === rid) { - refetch(); - } + refetch(); }); }, [refetch, rid, subscribeToNotifyUser, uid]); diff --git a/apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx b/apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx deleted file mode 100644 index 0fe200a7aaff6..0000000000000 --- a/apps/meteor/client/views/room/contextualBar/TeamsVoipConfigModal.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { - Modal, - Button, - Box, - Callout, - Margins, - ModalHeader, - ModalHeaderText, - ModalTagline, - ModalTitle, - ModalClose, - ModalContent, - ModalHeroImage, - ModalFooter, - ModalFooterAnnotation, - ModalFooterControllers, -} from '@rocket.chat/fuselage'; -import type { ReactElement } from 'react'; -import { useId } from 'react'; -import { Trans, useTranslation } from 'react-i18next'; - -import { useExternalLink } from '../../../hooks/useExternalLink'; -import { GET_ADDONS_LINK } from '../../admin/subscription/utils/links'; - -type TeamsVoipConfigModalProps = { - onClose: () => void; - onConfirm?: () => void; - isAdmin: boolean; - hasModule: boolean; -}; - -const TeamsVoipConfigModal = ({ onClose, onConfirm, isAdmin, hasModule }: TeamsVoipConfigModalProps): ReactElement => { - const { t } = useTranslation(); - const openExternalLink = useExternalLink(); - const teamsVoipConfigModalId = useId(); - - const getCalloutWarning = () => { - if (isAdmin) { - return t('Contact_sales_start_using_VoIP'); - } - - return t('Contact_your_workspace_admin_to_start_using_VoIP'); - }; - - return ( - - - - {t('VoIP')} - {t('Team_voice_call')} - - - - - - - {t('Fully_integrated_voip_receive_internal_external_calls_without_switching_between_apps_external_systems')} - - {t('Features')} - - - -
  • - - Direct calling: Instantly start or receive calls with team members within your Rocket.Chat workspace. - -
  • -
  • - - Extension management: Admins can assign unique extensions to users, enabling quick, direct dialing both - from inside and outside your organization. - -
  • -
  • - - Call transfers: Seamlessly transfer active calls to ensure users reach the right team member. - -
  • -
  • - - Availability settings: Users can control their availability to receive calls, enhancing flexibility. - -
  • -
    -
    -
    - - {t('Required_action')} - - - {getCalloutWarning()} - -
    - - {!isAdmin && hasModule && {t('Only_admins_can_perform_this_setup')}} - - - {onConfirm && isAdmin && hasModule && ( - - )} - {isAdmin && !hasModule && ( - - )} - - -
    - ); -}; - -export default TeamsVoipConfigModal; diff --git a/apps/meteor/client/views/room/hooks/useOpenRoom.ts b/apps/meteor/client/views/room/hooks/useOpenRoom.ts index 45983eae62c3f..ee4b28fc19c47 100644 --- a/apps/meteor/client/views/room/hooks/useOpenRoom.ts +++ b/apps/meteor/client/views/room/hooks/useOpenRoom.ts @@ -1,4 +1,4 @@ -import { isPublicRoom, isInviteSubscription, type IRoom, type RoomType } from '@rocket.chat/core-typings'; +import { isPublicRoom, type IRoom, type RoomType } from '@rocket.chat/core-typings'; import { getObjectKeys } from '@rocket.chat/tools'; import { useMethod, usePermission, useRoute, useSetting, useUser } from '@rocket.chat/ui-contexts'; import { useQuery, useQueryClient } from '@tanstack/react-query'; @@ -35,14 +35,6 @@ export function useOpenRoom({ type, reference }: { type: RoomType; reference: st throw new RoomNotFoundError(undefined, { type, reference }); } - const { Rooms, Subscriptions } = await import('../../../stores'); - - const sub = Subscriptions.state.find((record) => record.rid === reference || record.name === reference); - - if (sub && isInviteSubscription(sub)) { - return { rid: sub.rid }; - } - let roomData: IRoom; try { roomData = await getRoomByTypeAndName(type, reference); @@ -66,6 +58,8 @@ export function useOpenRoom({ type, reference }: { type: RoomType; reference: st throw new RoomNotFoundError(undefined, { type, reference }); } + const { Rooms, Subscriptions } = await import('../../../stores'); + const unsetKeys = getObjectKeys(roomData).filter((key) => !(key in roomFields)); unsetKeys.forEach((key) => { delete roomData[key]; @@ -80,6 +74,8 @@ export function useOpenRoom({ type, reference }: { type: RoomType; reference: st const { LegacyRoomManager } = await import('../../../../app/ui-utils/client'); + const sub = Subscriptions.state.find((record) => record.rid === reference || record.name === reference); + if (reference !== undefined && room._id !== reference && type === 'd') { // Redirect old url using username to rid LegacyRoomManager.close(type + reference); diff --git a/apps/meteor/client/views/room/hooks/useRoomInvitation.spec.tsx b/apps/meteor/client/views/room/hooks/useRoomInvitation.spec.tsx index 30a7f73e75ed4..ccd6c632d28ef 100644 --- a/apps/meteor/client/views/room/hooks/useRoomInvitation.spec.tsx +++ b/apps/meteor/client/views/room/hooks/useRoomInvitation.spec.tsx @@ -81,20 +81,4 @@ describe('useRoomInvitation', () => { await waitFor(() => expect(mockInviteEndpoint).not.toHaveBeenCalled()); }); - - it('should redirect to /home after rejecting an invite', async () => { - const { result } = renderHook(() => useRoomInvitation(mockedRoom), { wrapper: appRoot }); - - act(() => void result.current.rejectInvite()); - - await waitFor(() => expect(mockedNavigate).toHaveBeenCalledWith('/home')); - }); - - it('should not redirect to /home after accepting an invite', async () => { - const { result } = renderHook(() => useRoomInvitation(mockedRoom), { wrapper: appRoot }); - - act(() => void result.current.acceptInvite()); - - await waitFor(() => expect(mockedNavigate).not.toHaveBeenCalled()); - }); }); diff --git a/apps/meteor/client/views/room/hooks/useRoomInvitation.tsx b/apps/meteor/client/views/room/hooks/useRoomInvitation.tsx index 7989fdf3291ed..7e7c036fb125f 100644 --- a/apps/meteor/client/views/room/hooks/useRoomInvitation.tsx +++ b/apps/meteor/client/views/room/hooks/useRoomInvitation.tsx @@ -1,35 +1,10 @@ -import { useRouter, useUser } from '@rocket.chat/ui-contexts'; -import { useQueryClient } from '@tanstack/react-query'; - import { useRoomRejectInvitationModal } from './useRoomRejectInvitationModal'; import { useEndpointMutation } from '../../../hooks/useEndpointMutation'; -import { roomsQueryKeys } from '../../../lib/queryKeys'; import type { IRoomWithFederationOriginalName } from '../contexts/RoomContext'; export const useRoomInvitation = (room: IRoomWithFederationOriginalName) => { - const queryClient = useQueryClient(); - const user = useUser(); - const router = useRouter(); - const { open: openConfirmationModal } = useRoomRejectInvitationModal(room); - - const replyInvite = useEndpointMutation('POST', '/v1/rooms.invite', { - onSuccess: async (_, { action }) => { - const reference = room.federationOriginalName ?? room.name; - - if (reference) { - await queryClient.refetchQueries({ - queryKey: roomsQueryKeys.roomReference(reference, room.t, user?._id, user?.username), - }); - } - - await queryClient.invalidateQueries({ queryKey: roomsQueryKeys.room(room._id) }); - - if (action === 'reject') { - router.navigate('/home'); - } - }, - }); + const replyInvite = useEndpointMutation('POST', '/v1/rooms.invite'); return { ...replyInvite, diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx index 19b1078f8eece..28c3d6252f4f8 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx @@ -12,10 +12,12 @@ import { useUserRoom, useUserSubscription, } from '@rocket.chat/ui-contexts'; +import { useQueryClient } from '@tanstack/react-query'; import { useMemo } from 'react'; import { useEndpointMutation } from '../../../../../hooks/useEndpointMutation'; import * as Federation from '../../../../../lib/federation/Federation'; +import { roomsQueryKeys } from '../../../../../lib/queryKeys'; import { roomCoordinator } from '../../../../../lib/rooms/roomCoordinator'; import RemoveUsersModal from '../../../../teams/contextualBar/members/RemoveUsersModal'; import { getRoomDirectives } from '../../../lib/getRoomDirectives'; @@ -34,6 +36,7 @@ export const useRemoveUserAction = ( } const t = useTranslation(); + const queryClient = useQueryClient(); const currentUser = useUser(); const subscription = useUserSubscription(rid); @@ -69,6 +72,7 @@ export const useRemoveUserAction = ( const { mutateAsync: removeFromRoom } = useEndpointMutation('POST', removeFromRoomEndpoint, { onSuccess: () => { dispatchToastMessage({ type: 'success', message: t('User_has_been_removed_from_s', roomName) }); + queryClient.invalidateQueries({ queryKey: roomsQueryKeys.members(room._id, room.t) }); }, onSettled: () => { closeModal(); diff --git a/apps/meteor/ee/server/hooks/federation/index.ts b/apps/meteor/ee/server/hooks/federation/index.ts index fa2433a9aa424..f717c7e0847b3 100644 --- a/apps/meteor/ee/server/hooks/federation/index.ts +++ b/apps/meteor/ee/server/hooks/federation/index.ts @@ -112,8 +112,7 @@ beforeAddUserToRoom.add( return; } - // TODO should we really check for "user" here? it is potentially an external user - if (!(await Authorization.hasPermission(user._id, 'access-federation'))) { + if (!isUserNativeFederated(user) && !(await Authorization.hasPermission(user._id, 'access-federation'))) { throw new MeteorError('error-not-authorized-federation', 'Not authorized to access federation'); } diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index 45d2e642aa946..b0c5fb24c4084 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,77 @@ # rocketchat-services +## 2.0.38 + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 0ccb9692b434bc88b4bc5009d39e024c03f01b86, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, 70872896b912004dc016297b6e875d873d81dc3a, ddc935727e9a7275813006d9dcaa7fe866610844, d3538e7045c41f91b8c561d44e5485ff93b93745, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/apps-engine@1.59.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/ui-kit@0.39.0 + - @rocket.chat/network-broker@0.2.26 +
    + +## 2.0.38-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 2.0.38-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 2.0.38-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 2.0.38-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 2.0.38-rc.1 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 77079b4f740e9..cfb6883c60f90 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": "2.0.38-rc.1", + "version": "2.0.38", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 644b31716de64..d33faf9c0e72b 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -99,7 +99,7 @@ "@rocket.chat/emitter": "~0.31.25", "@rocket.chat/favicon": "workspace:^", "@rocket.chat/federation-matrix": "workspace:^", - "@rocket.chat/federation-sdk": "0.3.5", + "@rocket.chat/federation-sdk": "0.3.8", "@rocket.chat/fuselage": "^0.70.0", "@rocket.chat/fuselage-forms": "~0.1.1", "@rocket.chat/fuselage-hooks": "~0.38.1", diff --git a/apps/meteor/server/publications/room/index.ts b/apps/meteor/server/publications/room/index.ts index 5a457daa937e3..e3cbfdcc9a8ca 100644 --- a/apps/meteor/server/publications/room/index.ts +++ b/apps/meteor/server/publications/room/index.ts @@ -79,7 +79,16 @@ Meteor.methods({ }); } - if (userId && !(await canAccessRoomAsync(room, { _id: userId }))) { + if ( + userId && + !(await canAccessRoomAsync( + room, + { _id: userId }, + { + includeInvitations: true, + }, + )) + ) { throw new Meteor.Error('error-no-permission', 'No permission', { method: 'getRoomByTypeAndName', }); diff --git a/apps/meteor/server/services/authorization/canAccessRoom.ts b/apps/meteor/server/services/authorization/canAccessRoom.ts index 1aed9cc907309..3f348e953a98c 100644 --- a/apps/meteor/server/services/authorization/canAccessRoom.ts +++ b/apps/meteor/server/services/authorization/canAccessRoom.ts @@ -51,7 +51,7 @@ const roomAccessValidators: RoomAccessValidator[] = [ return canAccessPublicRoom(user); }, - async function _validateIfAlreadyJoined(room, user): Promise { + async function _validateIfAlreadyJoined(room, user, extraData): Promise { if (!room?._id || !user?._id) { return false; } @@ -67,7 +67,8 @@ const roomAccessValidators: RoomAccessValidator[] = [ !(await License.hasModule('abac')) || (!(await Settings.getValueById('ABAC_Enabled')) as boolean) ) { - if (!(await Subscriptions.countByRoomIdAndUserId(room._id, user._id))) { + const includeInvitations = extraData?.includeInvitations ?? false; + if (!(await Subscriptions.countByRoomIdAndUserId(room._id, user._id, includeInvitations))) { return false; } diff --git a/apps/meteor/server/services/messages/service.ts b/apps/meteor/server/services/messages/service.ts index 9b7e59fb800d5..669441a63c186 100644 --- a/apps/meteor/server/services/messages/service.ts +++ b/apps/meteor/server/services/messages/service.ts @@ -95,6 +95,7 @@ export class MessageService extends ServiceClassInternal implements IMessageServ files, attachments, thread, + ts, }: { fromId: string; rid: string; @@ -108,23 +109,28 @@ export class MessageService extends ServiceClassInternal implements IMessageServ files?: IMessage['files']; attachments?: IMessage['attachments']; thread?: { tmid: string; tshow: boolean }; + ts: Date; }): Promise { - return executeSendMessage(fromId, { - rid, - msg, - ...thread, - federation: { - eventId: federation_event_id, - version: 1, + return executeSendMessage( + fromId, + { + rid, + msg, + ...thread, + federation: { + eventId: federation_event_id, + version: 1, + }, + ...(file && { file }), + ...(files && { files }), + ...(attachments && { attachments }), + ...(e2e_content && { + t: 'e2e', + content: e2e_content, + }), }, - ...(file && { file }), - ...(files && { files }), - ...(attachments && { attachments }), - ...(e2e_content && { - t: 'e2e', - content: e2e_content, - }), - }); + { ts }, + ); } async sendMessageWithValidation(user: IUser, message: Partial, room: Partial, upsert = false): Promise { diff --git a/apps/meteor/server/services/room/service.ts b/apps/meteor/server/services/room/service.ts index aa3985a8920af..15ab4dbb85e21 100644 --- a/apps/meteor/server/services/room/service.ts +++ b/apps/meteor/server/services/room/service.ts @@ -9,6 +9,7 @@ import { isOmnichannelRoom, isRoomWithJoinCode, } from '@rocket.chat/core-typings'; +import { isUserNativeFederated } from '@rocket.chat/core-typings'; import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; import { getNameForDMs } from './getNameForDMs'; @@ -148,7 +149,7 @@ export class RoomService extends ServiceClassInternal implements IRoomService { /** * Method called by users to join a room. */ - async join({ room, user, joinCode }: { room: IRoom; user: Pick; joinCode?: string }) { + async join({ room, user, joinCode }: { room: IRoom; user: Pick; joinCode?: string }) { if (!(await roomCoordinator.getRoomDirectives(room.t)?.allowMemberAction(room, RoomMemberActions.JOIN, user._id))) { throw new MeteorError('error-not-allowed', 'Not allowed', { method: 'joinRoom' }); } @@ -161,7 +162,11 @@ export class RoomService extends ServiceClassInternal implements IRoomService { throw new MeteorError('error-not-allowed', 'Not allowed', { method: 'joinRoom' }); } - if (FederationActions.shouldPerformFederationAction(room) && !(await Authorization.hasPermission(user._id, 'access-federation'))) { + if ( + FederationActions.shouldPerformFederationAction(room) && + !isUserNativeFederated(user) && + !(await Authorization.hasPermission(user._id, 'access-federation')) + ) { throw new MeteorError('error-not-authorized-federation', 'Not authorized to access federation', { method: 'joinRoom' }); } diff --git a/apps/meteor/server/settings/omnichannel.ts b/apps/meteor/server/settings/omnichannel.ts index 78b9463a883af..1fba2b6801883 100644 --- a/apps/meteor/server/settings/omnichannel.ts +++ b/apps/meteor/server/settings/omnichannel.ts @@ -736,100 +736,6 @@ await settingsRegistry.addGroup('SMS', async function () { }); }); - await this.section('Voxtelesys', async function () { - await this.add('SMS_Voxtelesys_authToken', '', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'voxtelesys', - }, - i18nLabel: 'Auth_Token', - secret: true, - }); - await this.add('SMS_Voxtelesys_URL', 'https://smsapi.voxtelesys.net/api/v1/sms', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'voxtelesys', - }, - i18nLabel: 'URL', - secret: true, - }); - await this.add('SMS_Voxtelesys_FileUpload_Enabled', true, { - type: 'boolean', - enableQuery: { - _id: 'SMS_Service', - value: 'voxtelesys', - }, - i18nLabel: 'FileUpload_Enabled', - secret: true, - }); - await this.add('SMS_Voxtelesys_FileUpload_MediaTypeWhiteList', 'image/*,audio/*,video/*,text/*,application/pdf', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'voxtelesys', - }, - i18nLabel: 'FileUpload_MediaTypeWhiteList', - i18nDescription: 'FileUpload_MediaTypeWhiteListDescription', - secret: true, - }); - }); - - await this.section('Mobex', async function () { - await this.add('SMS_Mobex_gateway_address', '', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'mobex', - }, - i18nLabel: 'Mobex_sms_gateway_address', - i18nDescription: 'Mobex_sms_gateway_address_desc', - }); - await this.add('SMS_Mobex_restful_address', '', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'mobex', - }, - i18nLabel: 'Mobex_sms_gateway_restful_address', - i18nDescription: 'Mobex_sms_gateway_restful_address_desc', - }); - await this.add('SMS_Mobex_username', '', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'mobex', - }, - i18nLabel: 'Mobex_sms_gateway_username', - }); - await this.add('SMS_Mobex_password', '', { - type: 'password', - enableQuery: { - _id: 'SMS_Service', - value: 'mobex', - }, - i18nLabel: 'Mobex_sms_gateway_password', - }); - await this.add('SMS_Mobex_from_number', '', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'mobex', - }, - i18nLabel: 'Mobex_sms_gateway_from_number', - i18nDescription: 'Mobex_sms_gateway_from_number_desc', - }); - await this.add('SMS_Mobex_from_numbers_list', '', { - type: 'string', - enableQuery: { - _id: 'SMS_Service', - value: 'mobex', - }, - i18nLabel: 'Mobex_sms_gateway_from_numbers_list', - i18nDescription: 'Mobex_sms_gateway_from_numbers_list_desc', - }); - }); await this.section('External Frame', async function () { await this.add('Omnichannel_External_Frame_Enabled', false, { type: 'boolean', diff --git a/apps/meteor/server/startup/migrations/index.ts b/apps/meteor/server/startup/migrations/index.ts index 969a4b1a668be..d10693f181110 100644 --- a/apps/meteor/server/startup/migrations/index.ts +++ b/apps/meteor/server/startup/migrations/index.ts @@ -38,5 +38,8 @@ import './v329'; import './v330'; import './v331'; import './v332'; +import './v333'; +import './v334'; +import './v335'; export * from './xrun'; diff --git a/apps/meteor/server/startup/migrations/v333.ts b/apps/meteor/server/startup/migrations/v333.ts new file mode 100644 index 0000000000000..216340d465582 --- /dev/null +++ b/apps/meteor/server/startup/migrations/v333.ts @@ -0,0 +1,35 @@ +import { Settings } from '@rocket.chat/models'; + +import { addMigration } from '../../lib/migrations'; + +addMigration({ + version: 333, + name: 'Remove Voxtelesys & Mobex SMS settings by ID', + async up() { + const ids = [ + // Voxtelesys settings + 'SMS_Voxtelesys_authToken', + 'SMS_Voxtelesys_URL', + 'SMS_Voxtelesys_FileUpload_Enabled', + 'SMS_Voxtelesys_FileUpload_MediaTypeWhiteList', + + // Mobex settings + 'SMS_Mobex_gateway_address', + 'SMS_Mobex_gateway_address_desc', + 'SMS_Mobex_from_number', + 'SMS_Mobex_from_number_desc', + 'SMS_Mobex_from_numbers_list', + 'SMS_Mobex_from_numbers_list_desc', + 'SMS_Mobex_password', + 'SMS_Mobex_restful_address', + 'SMS_Mobex_restful_address_desc', + 'SMS_Mobex_username', + ]; + + await Settings.deleteMany({ + _id: { $in: ids }, + }); + + await Settings.findOneAndUpdate({ _id: 'SMS_Service', value: { $ne: 'twilio' } }, { $set: { value: 'twilio' } }); + }, +}); diff --git a/apps/meteor/server/startup/migrations/v334.ts b/apps/meteor/server/startup/migrations/v334.ts new file mode 100644 index 0000000000000..318496c481a6e --- /dev/null +++ b/apps/meteor/server/startup/migrations/v334.ts @@ -0,0 +1,22 @@ +import { Settings } from '@rocket.chat/models'; + +import { addMigration } from '../../lib/migrations'; + +addMigration({ + version: 334, + name: 'Remove webRTC settings', + async up() { + await Settings.deleteMany({ + _id: { + $in: [ + 'WebRTC_Enabled', + 'WebRTC_Enable_Channel', + 'WebRTC_Enable_Private', + 'WebRTC_Enable_Direct', + 'WebRTC_Calls_Count', + 'WebRTC_Servers', + ], + }, + }); + }, +}); diff --git a/apps/meteor/server/startup/migrations/v335.ts b/apps/meteor/server/startup/migrations/v335.ts new file mode 100644 index 0000000000000..49b56b21dbf57 --- /dev/null +++ b/apps/meteor/server/startup/migrations/v335.ts @@ -0,0 +1,11 @@ +import { Settings } from '@rocket.chat/models'; + +import { addMigration } from '../../lib/migrations'; + +addMigration({ + version: 335, + name: 'Remove OTR_Enable and OTR_Count settings', + async up() { + await Settings.deleteMany({ _id: { $in: ['OTR_Enable', 'OTR_Count'] } }); + }, +}); diff --git a/apps/meteor/tests/e2e/voice-calls-ce.spec.ts b/apps/meteor/tests/e2e/voice-calls-ce.spec.ts deleted file mode 100644 index 6c58ab16d5e32..0000000000000 --- a/apps/meteor/tests/e2e/voice-calls-ce.spec.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { IS_EE } from './config/constants'; -import { Users } from './fixtures/userStates'; -import { HomeChannel } from './page-objects'; -import { VoiceCallsUpsellModal } from './page-objects/fragments/modals'; -import { expect, test } from './utils/test'; - -test.use({ storageState: Users.user1.state }); - -test.describe('Voice Calls - Community Edition', () => { - test.skip(IS_EE, 'Community Edition Only'); - let poHomeChannel: HomeChannel; - let upsellVoiceCallsModal: VoiceCallsUpsellModal; - - test.beforeEach(async ({ page }) => { - poHomeChannel = new HomeChannel(page); - upsellVoiceCallsModal = new VoiceCallsUpsellModal(page); - await page.goto('/home'); - }); - - test('should see upsell modal when clicked on DM > voice call button', async () => { - await test.step('should open direct message with user2', async () => { - await poHomeChannel.navbar.openChat('user2'); - await expect(poHomeChannel.content.inputMessage).toBeVisible(); - }); - - await test.step('should click voice call from room toolbar and see upsell modal', async () => { - await poHomeChannel.content.btnVoiceCall.click(); - await upsellVoiceCallsModal.waitForDisplay(); - }); - }); - - test('should see upsell modal when clicked on user info > voice call button', async () => { - await test.step('should open direct message with user2', async () => { - await poHomeChannel.navbar.openChat('user2'); - await expect(poHomeChannel.content.inputMessage).toBeVisible(); - }); - - await test.step('should click voice call from contact information and see upsell modal', async () => { - await poHomeChannel.content.btnContactInformation.click(); - await poHomeChannel.content.btnContactInfoVoiceCall.click(); - await upsellVoiceCallsModal.waitForDisplay(); - }); - }); - - test('should see upsell modal when clicked on User menu > New voice call', async () => { - await test.step('should open user menu', async () => { - await poHomeChannel.navbar.btnNewVoiceCall.click(); - }); - - await test.step('should see upsell modal', async () => { - await upsellVoiceCallsModal.waitForDisplay(); - }); - - await test.step('should close upsell modal', async () => { - await upsellVoiceCallsModal.close(); - }); - }); -}); diff --git a/apps/meteor/tests/end-to-end/api/abac.ts b/apps/meteor/tests/end-to-end/api/abac.ts index 18f522d396652..bb4d9ee8d4799 100644 --- a/apps/meteor/tests/end-to-end/api/abac.ts +++ b/apps/meteor/tests/end-to-end/api/abac.ts @@ -408,7 +408,7 @@ const addAbacAttributesToUserDirectly = async (userId: string, abacAttributes: I msg: 'method', }), }) - .expect(200) + .expect(400) .expect((res) => { const result = JSON.parse(res.body.message); expect(result).to.have.property('error'); diff --git a/apps/meteor/tests/end-to-end/api/guest-permissions.ts b/apps/meteor/tests/end-to-end/api/guest-permissions.ts index 3afda0ea15710..4aa4a581aaf0a 100644 --- a/apps/meteor/tests/end-to-end/api/guest-permissions.ts +++ b/apps/meteor/tests/end-to-end/api/guest-permissions.ts @@ -106,9 +106,9 @@ import { IS_EE } from '../../e2e/config/constants'; }), }) .expect('Content-Type', 'application/json') - .expect(200); + .expect(400); - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); expect(res.body).to.have.property('message'); const message = JSON.parse(res.body.message); expect(message).to.have.property('error'); diff --git a/apps/meteor/tests/end-to-end/api/methods.ts b/apps/meteor/tests/end-to-end/api/methods.ts index 088aef3aeff4d..020840d05f736 100644 --- a/apps/meteor/tests/end-to-end/api/methods.ts +++ b/apps/meteor/tests/end-to-end/api/methods.ts @@ -166,9 +166,10 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); + const data = JSON.parse(res.body.message); expect(data).to.have.property('error').that.is.an('object'); expect(data.error).to.have.property('error', 'error-action-not-allowed'); @@ -576,9 +577,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); @@ -734,9 +735,9 @@ describe('Meteor.methods', () => { msg: 'method', }), }) - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); const data = JSON.parse(res.body.message); expect(data).to.have.a.property('error').that.is.an('object'); expect(data.error).to.have.a.property('error', 'error-not-allowed'); @@ -903,9 +904,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); @@ -1121,9 +1122,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); @@ -1301,9 +1302,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); @@ -1562,9 +1563,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.include('error-invalid-room'); }) .end(done); @@ -1583,9 +1584,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.include('Match error'); }) .end(done); @@ -2022,9 +2023,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); const data = JSON.parse(res.body.message); expect(data).to.not.have.a.property('result').that.is.an('object'); expect(data).to.have.a.property('error').that.is.an('object'); @@ -2053,9 +2054,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); const data = JSON.parse(res.body.message); expect(data).to.have.a.property('error').that.is.an('object'); expect(data.error.sanitizedError).to.have.a.property('reason', 'Match failed'); @@ -2241,9 +2242,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); expect(data).to.have.a.property('msg').that.is.an('string'); @@ -2264,9 +2265,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); expect(data).to.have.a.property('msg').that.is.an('string'); @@ -2274,7 +2275,7 @@ describe('Meteor.methods', () => { }); }); - it('should add a quote attachment to a message', async () => { + it.skip('should add a quote attachment to a message', async () => { const quotedMsgLink = `${siteUrl}/group/${roomName}?msg=${messageWithMarkdownId}`; await request .post(methodCall('updateMessage')) @@ -2291,6 +2292,7 @@ describe('Meteor.methods', () => { .expect(200) .expect((res) => { expect(res.body).to.have.a.property('success', true); + // TODO: this test is not testing anything useful expect(res.body).to.have.a.property('message').that.is.a('string'); }); @@ -2378,7 +2380,7 @@ describe('Meteor.methods', () => { }); }); - it('should remove a quote attachment from a message', async () => { + it.skip('should remove a quote attachment from a message', async () => { await request .post(methodCall('updateMessage')) .set(credentials) @@ -2534,9 +2536,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); @@ -3098,7 +3100,7 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { expect(res.body).to.have.property('message').that.is.an('string'); expect(res.body.message).to.include('error-cant-invite-for-direct-room'); @@ -3201,9 +3203,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); const parsedBody = JSON.parse(res.body.message); expect(parsedBody).to.have.property('error'); expect(parsedBody.error).to.have.property('error', 'error-max-rooms-per-guest-reached'); @@ -3225,9 +3227,9 @@ describe('Meteor.methods', () => { params: [[{ _id: 'Message_AllowEditing_BlockEditInMinutes', value: { $InfNaN: 0 } }]], }), }) - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); const parsedBody = JSON.parse(res.body.message); expect(parsedBody).to.have.property('error'); expect(parsedBody.error).to.have.property('error', 'Invalid setting value NaN'); @@ -3333,7 +3335,7 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { expect(res.body).to.have.a.property('message'); const data = JSON.parse(res.body.message); @@ -3411,9 +3413,9 @@ describe('Meteor.methods', () => { }), }) .expect('Content-Type', 'application/json') - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('success', false); expect(res.body).to.have.a.property('message').that.is.a('string'); const data = JSON.parse(res.body.message); diff --git a/apps/meteor/tests/end-to-end/api/methods/2fa-enable.ts b/apps/meteor/tests/end-to-end/api/methods/2fa-enable.ts index 9c2a6962fc614..68a1dfc8e4404 100644 --- a/apps/meteor/tests/end-to-end/api/methods/2fa-enable.ts +++ b/apps/meteor/tests/end-to-end/api/methods/2fa-enable.ts @@ -151,9 +151,9 @@ describe('2fa:enable', function () { params: [], }), }) - .expect(200) + .expect(400) .expect((res) => { - expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('success', false); const parsedBody = JSON.parse(res.body.message); expect(parsedBody).to.have.property('error'); expect(parsedBody).to.not.have.property('result'); diff --git a/apps/uikit-playground/CHANGELOG.md b/apps/uikit-playground/CHANGELOG.md index 208e9c7a376ce..fbe290aa14882 100644 --- a/apps/uikit-playground/CHANGELOG.md +++ b/apps/uikit-playground/CHANGELOG.md @@ -1,5 +1,65 @@ # @rocket.chat/uikit-playground +## 0.7.3 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 94b87d9ef40647d77fe83f3f84dca46a94515b39, ddc935727e9a7275813006d9dcaa7fe866610844, d3538e7045c41f91b8c561d44e5485ff93b93745, 73d9eb2783176954f42aa2cbeda8abf1d49ac260]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/fuselage-ui-kit@26.0.0 + - @rocket.chat/ui-avatar@22.0.0 +
    + +## 0.7.3-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.5 + - @rocket.chat/ui-avatar@22.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 0.7.3-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.4 + - @rocket.chat/ui-avatar@22.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 0.7.3-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.3 + - @rocket.chat/ui-avatar@22.0.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 0.7.3-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.2 + - @rocket.chat/ui-avatar@22.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 0.7.3-rc.1 ### Patch Changes diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json index cbb2ad3d98259..c6065db01545d 100644 --- a/apps/uikit-playground/package.json +++ b/apps/uikit-playground/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/uikit-playground", - "version": "0.7.3-rc.1", + "version": "0.7.3", "private": true, "type": "module", "scripts": { diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index a30fb872de6eb..c7fda4a3a2582 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,81 @@ # @rocket.chat/account-service +## 0.4.47 + +### Patch Changes + +- ([#38118](https://github.com/RocketChat/Rocket.Chat/pull/38118)) Fixes an issue where some DDP streamer requests were returning before processing was completed + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, 9e03ed5c5ea829c62c2da2de9413a27a4696f8a3, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/tools@0.2.4 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.4.47-rc.5 + +### Patch Changes + +- ([#38118](https://github.com/RocketChat/Rocket.Chat/pull/38118)) Fixes an issue where some DDP streamer requests were returning before processing was completed + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 0.4.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 0.4.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.4.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 0.4.47-rc.1 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index d93c8c56b0aa3..fbcbcb2056cdc 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/account-service", - "version": "0.4.47-rc.1", + "version": "0.4.47", "private": true, "description": "Rocket.Chat Account service", "keywords": [ diff --git a/ee/apps/account-service/src/lib/loginViaUsername.ts b/ee/apps/account-service/src/lib/loginViaUsername.ts index 67c4bd8c4c5e6..57f2cbb31ec08 100644 --- a/ee/apps/account-service/src/lib/loginViaUsername.ts +++ b/ee/apps/account-service/src/lib/loginViaUsername.ts @@ -15,7 +15,7 @@ export async function loginViaUsername( return false; } - const valid = user.services?.password?.bcrypt && validatePassword(password, user.services.password.bcrypt); + const valid = user.services?.password?.bcrypt && (await validatePassword(password, user.services.password.bcrypt)); if (!valid) { return false; } diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index c5cf4a0666f20..99ee5c2edf724 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,85 @@ # @rocket.chat/authorization-service +## 0.5.0 + +### Minor Changes + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/abac@0.1.0 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.5.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/abac@0.1.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 0.5.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/abac@0.1.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 0.5.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/abac@0.1.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.5.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/abac@0.1.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 0.5.0-rc.1 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index bd620d39f91a4..7992409321dc2 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/authorization-service", - "version": "0.5.0-rc.1", + "version": "0.5.0", "private": true, "description": "Rocket.Chat Authorization service", "keywords": [ diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index e2a286269ea3a..9f438e8002673 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,83 @@ # @rocket.chat/ddp-streamer +## 0.3.47 + +### Patch Changes + +- ([#37551](https://github.com/RocketChat/Rocket.Chat/pull/37551)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/instance-status@0.1.47 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.3.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 + - @rocket.chat/instance-status@0.1.47-rc.5 +
    + +## 0.3.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 + - @rocket.chat/instance-status@0.1.47-rc.4 +
    + +## 0.3.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 + - @rocket.chat/instance-status@0.1.47-rc.3 +
    + +## 0.3.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 + - @rocket.chat/instance-status@0.1.47-rc.2 +
    + ## 0.3.47-rc.1 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 30772ac0cf1ce..7e0579411859e 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-streamer", - "version": "0.3.47-rc.1", + "version": "0.3.47", "private": true, "description": "Rocket.Chat DDP-Streamer service", "keywords": [ diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index 84bfcfdd22fb7..dd5077c37959e 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,83 @@ # @rocket.chat/omnichannel-transcript +## 0.4.47 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 2de4547580c472f4458568629d7bf98fd5faf342, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, 0c0258604632342f42fc36cabac2d6cfe0e477c4, ac11ea05ffadeca978c794ff38d5199d9acb2c29, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 611e4cdfa04849416a58071646b853b95e9b817b, 9e03ed5c5ea829c62c2da2de9413a27a4696f8a3, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, ec0f8b435dd12c218adffa8892737c7ced4debb8, f056c451c2926e849f52b95fed957945398ef5f6]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/i18n@2.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/tools@0.2.4 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/omnichannel-services@0.3.44 + - @rocket.chat/pdf-worker@0.3.26 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.4.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/omnichannel-services@0.3.44-rc.5 + - @rocket.chat/pdf-worker@0.3.26-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 0.4.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/omnichannel-services@0.3.44-rc.4 + - @rocket.chat/pdf-worker@0.3.26-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 0.4.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/omnichannel-services@0.3.44-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/pdf-worker@0.3.26-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.4.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/omnichannel-services@0.3.44-rc.2 + - @rocket.chat/pdf-worker@0.3.26-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 0.4.47-rc.1 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index 702a294f40228..9de77999d8c6c 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-transcript", - "version": "0.4.47-rc.1", + "version": "0.4.47", "private": true, "description": "Rocket.Chat service", "keywords": [ diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index b72470a2626db..be4add29c8e79 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,76 @@ # @rocket.chat/presence-service +## 0.4.47 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, ec0f8b435dd12c218adffa8892737c7ced4debb8]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/presence@0.2.47 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.4.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/presence@0.2.47-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 0.4.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/presence@0.2.47-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 0.4.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/presence@0.2.47-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.4.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/presence@0.2.47-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 0.4.47-rc.1 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 7ea3b8add7a5d..3d90dbcedc689 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence-service", - "version": "0.4.47-rc.1", + "version": "0.4.47", "private": true, "description": "Rocket.Chat Presence service", "keywords": [ diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index 9e7af4c9603e9..e09f24c01e519 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,76 @@ # @rocket.chat/queue-worker +## 0.4.47 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, ec0f8b435dd12c218adffa8892737c7ced4debb8]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/omnichannel-services@0.3.44 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.4.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/omnichannel-services@0.3.44-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 0.4.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/omnichannel-services@0.3.44-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 0.4.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/omnichannel-services@0.3.44-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.4.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/omnichannel-services@0.3.44-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 0.4.47-rc.1 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index 772e55e97b952..f5091cd1dc17c 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/queue-worker", - "version": "0.4.47-rc.1", + "version": "0.4.47", "private": true, "description": "Rocket.Chat service", "keywords": [ diff --git a/ee/packages/abac/CHANGELOG.md b/ee/packages/abac/CHANGELOG.md index bb6271b59268d..af2c6aa28e1f2 100644 --- a/ee/packages/abac/CHANGELOG.md +++ b/ee/packages/abac/CHANGELOG.md @@ -1,5 +1,65 @@ # @rocket.chat/abac +## 0.1.0 + +### Minor Changes + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, ec0f8b435dd12c218adffa8892737c7ced4debb8]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/logger@1.0.0 +
    + +## 0.1.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.1.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.1.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.1.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.1.0-rc.1 ### Patch Changes diff --git a/ee/packages/abac/package.json b/ee/packages/abac/package.json index 65c0892a35afa..6c114a7216fd0 100644 --- a/ee/packages/abac/package.json +++ b/ee/packages/abac/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/abac", - "version": "0.1.0-rc.1", + "version": "0.1.0", "private": true, "description": "Rocket.Chat - Attribute Based Access Control (ABAC) support utilities", "main": "./dist/index.js", @@ -9,7 +9,7 @@ "/dist" ], "scripts": { - "build": "tsc", + "build": "tsc -p tsconfig.build.json", "dev": "tsc --watch --preserveWatchOutput", "lint": "eslint --ext .js,.jsx,.ts,.tsx src", "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx src --fix", diff --git a/ee/packages/abac/tsconfig.build.json b/ee/packages/abac/tsconfig.build.json new file mode 100644 index 0000000000000..a119587d4b618 --- /dev/null +++ b/ee/packages/abac/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["./dist", "./src/**/*.spec.ts"] +} diff --git a/ee/packages/federation-matrix/CHANGELOG.md b/ee/packages/federation-matrix/CHANGELOG.md index b275ab755fae2..8fd9d63afbeba 100644 --- a/ee/packages/federation-matrix/CHANGELOG.md +++ b/ee/packages/federation-matrix/CHANGELOG.md @@ -1,5 +1,84 @@ # @rocket.chat/federation-matrix +## 0.0.9 + +### Patch Changes + +- ([#37791](https://github.com/RocketChat/Rocket.Chat/pull/37791)) Fixes an issue where cases of invites that were canceled or disinvited were not being handled. + +- ([#37677](https://github.com/RocketChat/Rocket.Chat/pull/37677)) Fixes an issue where membership updates were not reflected when the user was the first member on their own server. + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/http-router@7.9.14 + - @rocket.chat/license@1.1.7 + - @rocket.chat/network-broker@0.2.26 +
    + +## 0.0.9-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/license@1.1.7-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/http-router@7.9.14-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/network-broker@0.2.26-rc.5 +
    + +## 0.0.9-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/license@1.1.7-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/http-router@7.9.14-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/network-broker@0.2.26-rc.4 +
    + +## 0.0.9-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/network-broker@0.2.26-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/license@1.1.7-rc.3 + - @rocket.chat/http-router@7.9.14-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.0.9-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/license@1.1.7-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/http-router@7.9.14-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/network-broker@0.2.26-rc.2 +
    + ## 0.0.9-rc.1 ### Patch Changes diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index 72c841daf0654..529f74173da43 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/federation-matrix", - "version": "0.0.9-rc.1", + "version": "0.0.9", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", @@ -22,7 +22,7 @@ "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "^0.31.25", - "@rocket.chat/federation-sdk": "0.3.5", + "@rocket.chat/federation-sdk": "0.3.8", "@rocket.chat/http-router": "workspace:^", "@rocket.chat/license": "workspace:^", "@rocket.chat/models": "workspace:^", diff --git a/ee/packages/federation-matrix/src/FederationMatrix.ts b/ee/packages/federation-matrix/src/FederationMatrix.ts index bb47f5b2d9fab..76c719d3b2db0 100644 --- a/ee/packages/federation-matrix/src/FederationMatrix.ts +++ b/ee/packages/federation-matrix/src/FederationMatrix.ts @@ -9,12 +9,15 @@ import { } from '@rocket.chat/core-typings'; import type { MessageQuoteAttachment, IMessage, IRoom, IUser, IRoomNativeFederated } from '@rocket.chat/core-typings'; import { eventIdSchema, roomIdSchema, userIdSchema, federationSDK, FederationRequestError } from '@rocket.chat/federation-sdk'; -import type { EventID, UserID, FileMessageType, PresenceState } from '@rocket.chat/federation-sdk'; +import type { EventID, FileMessageType, PresenceState } from '@rocket.chat/federation-sdk'; import { Logger } from '@rocket.chat/logger'; import { Users, Subscriptions, Messages, Rooms, Settings } from '@rocket.chat/models'; import emojione from 'emojione'; +import { createOrUpdateFederatedUser } from './helpers/createOrUpdateFederatedUser'; +import { extractDomainFromMatrixUserId } from './helpers/extractDomainFromMatrixUserId'; import { toExternalMessageFormat, toExternalQuoteMessageFormat } from './helpers/message.parsers'; +import { validateFederatedUsername } from './helpers/validateFederatedUsername'; import { MatrixMediaService } from './services/MatrixMediaService'; export const fileTypes: Record = { @@ -24,115 +27,6 @@ export const fileTypes: Record = { file: 'm.file', }; -/** helper to validate the username format */ -export function validateFederatedUsername(mxid: string): mxid is UserID { - if (!mxid.startsWith('@')) return false; - - const parts = mxid.substring(1).split(':'); - if (parts.length < 2) return false; - - const localpart = parts[0]; - const domainAndPort = parts.slice(1).join(':'); - - const localpartRegex = /^(?:[a-z0-9._\-]|=[0-9a-fA-F]{2}){1,255}$/; - if (!localpartRegex.test(localpart)) return false; - - const [domain, port] = domainAndPort.split(':'); - - const hostnameRegex = /^(?=.{1,253}$)([a-z0-9](?:[a-z0-9\-]{0,61}[a-z0-9])?)(?:\.[a-z0-9](?:[a-z0-9\-]{0,61}[a-z0-9])?)*$/i; - const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/; - const ipv6Regex = /^\[([0-9a-f:.]+)\]$/i; - - if (!(hostnameRegex.test(domain) || ipv4Regex.test(domain) || ipv6Regex.test(domain))) { - return false; - } - - if (port !== undefined) { - const portNum = Number(port); - if (!/^[0-9]+$/.test(port) || portNum < 1 || portNum > 65535) { - return false; - } - } - - return true; -} -export const extractDomainFromMatrixUserId = (mxid: string): string => { - const separatorIndex = mxid.indexOf(':', 1); - if (separatorIndex === -1) { - throw new Error(`Invalid federated username: ${mxid}`); - } - return mxid.substring(separatorIndex + 1); -}; - -/** - * Extract the username and the servername from a matrix user id - * if the serverName is the same as the serverName in the mxid, return only the username (rocket.chat regular username) - * otherwise, return the full mxid and the servername - */ -export const getUsernameServername = (mxid: string, serverName: string): [mxid: string, serverName: string, isLocal: boolean] => { - const senderServerName = extractDomainFromMatrixUserId(mxid); - // if the serverName is the same as the serverName in the mxid, return only the username (rocket.chat regular username) - if (serverName === senderServerName) { - const separatorIndex = mxid.indexOf(':', 1); - if (separatorIndex === -1) { - throw new Error(`Invalid federated username: ${mxid}`); - } - return [mxid.substring(1, separatorIndex), senderServerName, true]; // removers also the @ - } - - return [mxid, senderServerName, false]; -}; -/** - * Helper function to create a federated user - * - * Because of historical reasons, we can have users only with federated flag but no federation object - * So we need to upsert the user with the federation object - */ -export async function createOrUpdateFederatedUser(options: { username: string; name?: string; origin: string }): Promise { - const { username, name = username, origin } = options; - - // TODO: Have a specific method to handle this upsert - const user = await Users.findOneAndUpdate( - { - username, - }, - { - $set: { - username, - name: name || username, - type: 'user' as const, - status: UserStatus.OFFLINE, - active: true, - roles: ['user'], - requirePasswordChange: false, - federated: true, - federation: { - version: 1, - mui: username, - origin, - }, - _updatedAt: new Date(), - }, - $setOnInsert: { - createdAt: new Date(), - }, - }, - { - upsert: true, - projection: { _id: 1, username: 1 }, - returnDocument: 'after', - }, - ); - - if (!user) { - throw new Error(`Failed to create or update federated user: ${username}`); - } - - return user; -} - -export { generateEd25519RandomSecretKey } from '@rocket.chat/federation-sdk'; - export class FederationMatrix extends ServiceClass implements IFederationMatrixService { protected name = 'federation-matrix'; @@ -260,53 +154,23 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS try { this.logger.debug('Creating direct message room in Matrix', { roomId: room._id, memberCount: members.length }); - const creator = await Users.findOneById(creatorId); + const creator = await Users.findOneById>(creatorId, { projection: { username: 1 } }); if (!creator) { throw new Error('Creator not found in members list'); } - const actualMatrixUserId = `@${creator.username}:${this.serverName}`; - - let matrixRoomResult: { room_id: string; event_id?: string }; - if (members.length === 2) { - const otherMember = members.find((member) => member._id !== creatorId); - if (!otherMember) { - throw new Error('Other member not found for 1-on-1 DM'); - } - if (!isUserNativeFederated(otherMember)) { - throw new Error('Other member is not federated'); - } - const roomId = await federationSDK.createDirectMessageRoom( - userIdSchema.parse(actualMatrixUserId), - userIdSchema.parse(otherMember.username), - ); - matrixRoomResult = { room_id: roomId }; - } else { - // For group DMs (more than 2 members), create a private room - const roomName = room.name || room.fname || `Group chat with ${members.length} members`; - matrixRoomResult = await federationSDK.createRoom(userIdSchema.parse(actualMatrixUserId), roomName, 'invite'); - - for await (const member of members) { - if (member._id === creatorId) { - continue; - } - - try { - await federationSDK.inviteUserToRoom( - isUserNativeFederated(member) ? userIdSchema.parse(member.username) : `@${member.username}:${this.serverName}`, - roomIdSchema.parse(matrixRoomResult.room_id), - userIdSchema.parse(actualMatrixUserId), - ); - } catch (error) { - this.logger.error(error, 'Error creating or updating bridged user for DM'); - } - } - } + const roomId = await federationSDK.createDirectMessage({ + creatorUserId: userIdSchema.parse(`@${creator.username}:${this.serverName}`), + members: members + .filter((member) => member._id !== creatorId) + .map((member) => userIdSchema.parse(isUserNativeFederated(member) ? member.username : `@${member.username}:${this.serverName}`)), + }); await Rooms.setAsFederated(room._id, { - mrid: matrixRoomResult.room_id, + mrid: roomId, origin: this.serverName, }); + this.logger.debug({ roomId: room._id, msg: 'Direct message room creation completed successfully' }); } catch (error) { this.logger.error(error, 'Failed to create direct message room'); diff --git a/ee/packages/federation-matrix/src/events/member.ts b/ee/packages/federation-matrix/src/events/member.ts index 8de384253281a..2dd2b532d23f1 100644 --- a/ee/packages/federation-matrix/src/events/member.ts +++ b/ee/packages/federation-matrix/src/events/member.ts @@ -4,7 +4,8 @@ import { federationSDK, type HomeserverEventSignatures, type PduForType } from ' import { Logger } from '@rocket.chat/logger'; import { Rooms, Subscriptions, Users } from '@rocket.chat/models'; -import { createOrUpdateFederatedUser, getUsernameServername } from '../FederationMatrix'; +import { createOrUpdateFederatedUser } from '../helpers/createOrUpdateFederatedUser'; +import { getUsernameServername } from '../helpers/getUsernameServername'; const logger = new Logger('federation-matrix:member'); diff --git a/ee/packages/federation-matrix/src/events/message.ts b/ee/packages/federation-matrix/src/events/message.ts index 609d33459f530..67ef247332625 100644 --- a/ee/packages/federation-matrix/src/events/message.ts +++ b/ee/packages/federation-matrix/src/events/message.ts @@ -225,6 +225,7 @@ export function message() { msg: formatted, federation_event_id: eventId, thread, + ts: new Date(event.origin_server_ts), }); return; } @@ -242,7 +243,7 @@ export function message() { eventId, thread, ); - await Message.saveMessageFromFederation(result); + await Message.saveMessageFromFederation({ ...result, ts: new Date(event.origin_server_ts) }); } else { const formatted = toInternalMessageFormat({ rawMessage: messageBody, @@ -257,6 +258,7 @@ export function message() { msg: formatted, federation_event_id: eventId, thread, + ts: new Date(event.origin_server_ts), }); } } catch (error) { @@ -359,6 +361,7 @@ export function message() { }, federation_event_id: eventId, thread, + ts: new Date(event.origin_server_ts), }); return; } @@ -372,6 +375,7 @@ export function message() { }, federation_event_id: eventId, thread, + ts: new Date(event.origin_server_ts), }); } catch (error) { logger.error(error, 'Error processing Matrix message:'); diff --git a/ee/packages/federation-matrix/src/events/room.ts b/ee/packages/federation-matrix/src/events/room.ts index 80b344ae2e96a..23b3688fd9373 100644 --- a/ee/packages/federation-matrix/src/events/room.ts +++ b/ee/packages/federation-matrix/src/events/room.ts @@ -2,7 +2,7 @@ import { Room } from '@rocket.chat/core-services'; import { federationSDK } from '@rocket.chat/federation-sdk'; import { Rooms, Users } from '@rocket.chat/models'; -import { getUsernameServername } from '../FederationMatrix'; +import { getUsernameServername } from '../helpers/getUsernameServername'; export function room() { federationSDK.eventEmitterService.on('homeserver.matrix.room.name', async ({ event }) => { diff --git a/ee/packages/federation-matrix/src/helpers/createOrUpdateFederatedUser.ts b/ee/packages/federation-matrix/src/helpers/createOrUpdateFederatedUser.ts new file mode 100644 index 0000000000000..27a7d42c0019d --- /dev/null +++ b/ee/packages/federation-matrix/src/helpers/createOrUpdateFederatedUser.ts @@ -0,0 +1,54 @@ +import { type IUser, UserStatus } from '@rocket.chat/core-typings'; +import { Users } from '@rocket.chat/models'; + +/** + * Helper function to create a federated user + * + * Because of historical reasons, we can have users only with federated flag but no federation object + * So we need to upsert the user with the federation object + */ + +export async function createOrUpdateFederatedUser(options: { username: string; name?: string; origin: string }): Promise { + const { username, name = username, origin } = options; + + console.log('createOrUpdateFederatedUser ->', options); + + // TODO: Have a specific method to handle this upsert + const user = await Users.findOneAndUpdate( + { + username, + }, + { + $set: { + username, + name: name || username, + type: 'user' as const, + status: UserStatus.OFFLINE, + active: true, + roles: ['user'], + requirePasswordChange: false, + federated: true, + federation: { + version: 1, + mui: username, + origin, + }, + _updatedAt: new Date(), + }, + $setOnInsert: { + createdAt: new Date(), + }, + }, + { + upsert: true, + projection: { _id: 1, username: 1 }, + returnDocument: 'after', + }, + ); + + if (!user) { + throw new Error(`Failed to create or update federated user: ${username}`); + } + + return user; +} diff --git a/ee/packages/federation-matrix/src/helpers/extractDomainFromMatrixUserId.ts b/ee/packages/federation-matrix/src/helpers/extractDomainFromMatrixUserId.ts new file mode 100644 index 0000000000000..779120ba4f781 --- /dev/null +++ b/ee/packages/federation-matrix/src/helpers/extractDomainFromMatrixUserId.ts @@ -0,0 +1,7 @@ +export const extractDomainFromMatrixUserId = (mxid: string): string => { + const separatorIndex = mxid.indexOf(':', 1); + if (separatorIndex === -1) { + throw new Error(`Invalid federated username: ${mxid}`); + } + return mxid.substring(separatorIndex + 1); +}; diff --git a/ee/packages/federation-matrix/src/helpers/getUsernameServername.ts b/ee/packages/federation-matrix/src/helpers/getUsernameServername.ts new file mode 100644 index 0000000000000..270d09416d889 --- /dev/null +++ b/ee/packages/federation-matrix/src/helpers/getUsernameServername.ts @@ -0,0 +1,21 @@ +import { extractDomainFromMatrixUserId } from './extractDomainFromMatrixUserId'; + +/** + * Extract the username and the servername from a matrix user id + * if the serverName is the same as the serverName in the mxid, return only the username (rocket.chat regular username) + * otherwise, return the full mxid and the servername + */ + +export const getUsernameServername = (mxid: string, serverName: string): [mxid: string, serverName: string, isLocal: boolean] => { + const senderServerName = extractDomainFromMatrixUserId(mxid); + // if the serverName is the same as the serverName in the mxid, return only the username (rocket.chat regular username) + if (serverName === senderServerName) { + const separatorIndex = mxid.indexOf(':', 1); + if (separatorIndex === -1) { + throw new Error(`Invalid federated username: ${mxid}`); + } + return [mxid.substring(1, separatorIndex), senderServerName, true]; // removers also the @ + } + + return [mxid, senderServerName, false]; +}; diff --git a/ee/packages/federation-matrix/src/helpers/validateFederatedUsername.spec.ts b/ee/packages/federation-matrix/src/helpers/validateFederatedUsername.spec.ts new file mode 100644 index 0000000000000..5b1990bf6ac5d --- /dev/null +++ b/ee/packages/federation-matrix/src/helpers/validateFederatedUsername.spec.ts @@ -0,0 +1,94 @@ +import { validateFederatedUsername } from './validateFederatedUsername'; + +describe('validateFederatedUsername', () => { + describe('invalid formats', () => { + it('should return false when mxid does not start with @', () => { + expect(validateFederatedUsername('user:example.com')).toBe(false); + }); + + it('should return false when mxid has no colon separator', () => { + expect(validateFederatedUsername('@user')).toBe(false); + }); + + it('should return false when mxid has empty localpart', () => { + expect(validateFederatedUsername('@:example.com')).toBe(false); + }); + + it('should return false when localpart contains invalid characters', () => { + expect(validateFederatedUsername('@user@name:example.com')).toBe(false); + expect(validateFederatedUsername('@user#name:example.com')).toBe(false); + }); + + it('should return false when localpart exceeds 255 characters', () => { + const longLocalpart = 'a'.repeat(256); + expect(validateFederatedUsername(`@${longLocalpart}:example.com`)).toBe(false); + }); + + it('should return false when domain is invalid', () => { + expect(validateFederatedUsername('@user:invalid_domain')).toBe(false); + expect(validateFederatedUsername('@user:-example.com')).toBe(false); + }); + + it('should return false when port is invalid', () => { + expect(validateFederatedUsername('@user:example.com:0')).toBe(false); + expect(validateFederatedUsername('@user:example.com:65536')).toBe(false); + expect(validateFederatedUsername('@user:example.com:abc')).toBe(false); + expect(validateFederatedUsername('@user:example.com:-1')).toBe(false); + }); + }); + + describe('valid formats', () => { + it('should return true for basic valid mxid', () => { + expect(validateFederatedUsername('@user:example.com')).toBe(true); + }); + + it('should return true when localpart contains uppercase letters', () => { + expect(validateFederatedUsername('@User:example.com')).toBe(true); + }); + + it('should return true for mxid with dots and hyphens in localpart', () => { + expect(validateFederatedUsername('@user.name:example.com')).toBe(true); + expect(validateFederatedUsername('@user-name:example.com')).toBe(true); + expect(validateFederatedUsername('@user_name:example.com')).toBe(true); + }); + + it('should return true for mxid with encoded characters in localpart', () => { + expect(validateFederatedUsername('@user=2dname:example.com')).toBe(true); + expect(validateFederatedUsername('@user=2Dname:example.com')).toBe(true); + }); + + it('should return true for mxid with subdomain', () => { + expect(validateFederatedUsername('@user:subdomain.example.com')).toBe(true); + }); + + it('should return true for mxid with valid port', () => { + expect(validateFederatedUsername('@user:example.com:8008')).toBe(true); + expect(validateFederatedUsername('@user:example.com:1')).toBe(true); + expect(validateFederatedUsername('@user:example.com:65535')).toBe(true); + }); + + it('should return true for mxid with IPv4 address', () => { + expect(validateFederatedUsername('@user:192.168.1.1')).toBe(true); + expect(validateFederatedUsername('@user:192.168.1.1:8008')).toBe(true); + }); + + it('should return true for mxid with IPv6 address', () => { + expect(validateFederatedUsername('@user:[::1]')).toBe(true); + expect(validateFederatedUsername('@user:[2001:db8::1]')).toBe(true); + }); + + it('should return true for mxid with numbers in localpart', () => { + expect(validateFederatedUsername('@user123:example.com')).toBe(true); + expect(validateFederatedUsername('@123user:example.com')).toBe(true); + }); + + it('should return true for mxid with single character localpart', () => { + expect(validateFederatedUsername('@a:example.com')).toBe(true); + }); + + it('should return true for mxid with 255 character localpart', () => { + const maxLocalpart = 'a'.repeat(255); + expect(validateFederatedUsername(`@${maxLocalpart}:example.com`)).toBe(true); + }); + }); +}); diff --git a/ee/packages/federation-matrix/src/helpers/validateFederatedUsername.ts b/ee/packages/federation-matrix/src/helpers/validateFederatedUsername.ts new file mode 100644 index 0000000000000..f3d4943365dc8 --- /dev/null +++ b/ee/packages/federation-matrix/src/helpers/validateFederatedUsername.ts @@ -0,0 +1,76 @@ +import { isIPv4, isIPv6 } from 'net'; + +import type { UserID } from '@rocket.chat/federation-sdk'; + +/** helper to validate the username format */ +export function validateFederatedUsername(mxid: string): mxid is UserID { + if (!mxid.startsWith('@')) return false; + + const withoutAt = mxid.substring(1); + const firstColonIndex = withoutAt.indexOf(':'); + + if (firstColonIndex === -1) return false; + + const localpart = withoutAt.substring(0, firstColonIndex); + const domainAndPort = withoutAt.substring(firstColonIndex + 1); + + const localpartRegex = /^(?:[a-zA-Z0-9._\-]|=[0-9a-fA-F]{2}){1,255}$/; + if (!localpartRegex.test(localpart)) return false; + + // Handle IPv6 addresses specially - they're wrapped in brackets and contain colons + let domain: string; + let port: string | undefined; + + if (domainAndPort.startsWith('[')) { + // IPv6 address + const closeBracketIndex = domainAndPort.indexOf(']'); + if (closeBracketIndex === -1) return false; + + domain = domainAndPort.substring(0, closeBracketIndex + 1); + + // Check if there's a port after the IPv6 address + const afterBracket = domainAndPort.substring(closeBracketIndex + 1); + if (afterBracket.startsWith(':')) { + port = afterBracket.substring(1); + } else if (afterBracket.length > 0) { + return false; // Invalid format after IPv6 bracket + } + } else { + // Regular domain or IPv4 + const lastColonIndex = domainAndPort.lastIndexOf(':'); + const possiblePort = domainAndPort.substring(lastColonIndex + 1); + + // Check if the part after the last colon is a valid port number + if (lastColonIndex !== -1 && /^[0-9]+$/.test(possiblePort)) { + domain = domainAndPort.substring(0, lastColonIndex); + port = possiblePort; + } else { + domain = domainAndPort; + } + } + + // Validate domain: hostname, IPv4, or IPv6 + const hostnameRegex = /^(?=.{1,253}$)([a-z0-9](?:[a-z0-9\-]{0,61}[a-z0-9])?)(?:\.[a-z0-9](?:[a-z0-9\-]{0,61}[a-z0-9])?)*$/i; + + // Check if it's a valid IPv6 address (in brackets) + if (domain.startsWith('[') && domain.endsWith(']')) { + const ipv6Address = domain.substring(1, domain.length - 1); + if (!isIPv6(ipv6Address)) { + return false; + } + } else if (isIPv4(domain)) { + // Valid IPv4 address + } else if (!hostnameRegex.test(domain)) { + // Not a valid hostname + return false; + } + + if (port !== undefined) { + const portNum = Number(port); + if (!/^[0-9]+$/.test(port) || portNum < 1 || portNum > 65535) { + return false; + } + } + + return true; +} diff --git a/ee/packages/federation-matrix/src/index.ts b/ee/packages/federation-matrix/src/index.ts index b56729b4524ba..88acc4bb5ece5 100644 --- a/ee/packages/federation-matrix/src/index.ts +++ b/ee/packages/federation-matrix/src/index.ts @@ -1,6 +1,8 @@ import 'reflect-metadata'; -export { FederationMatrix, validateFederatedUsername } from './FederationMatrix'; +export { validateFederatedUsername } from './helpers/validateFederatedUsername'; + +export { FederationMatrix } from './FederationMatrix'; export { generateEd25519RandomSecretKey } from '@rocket.chat/federation-sdk'; diff --git a/ee/packages/federation-matrix/tests/end-to-end/dms.spec.ts b/ee/packages/federation-matrix/tests/end-to-end/dms.spec.ts index 083d695f4b989..7a9873d8b0da2 100644 --- a/ee/packages/federation-matrix/tests/end-to-end/dms.spec.ts +++ b/ee/packages/federation-matrix/tests/end-to-end/dms.spec.ts @@ -10,18 +10,7 @@ import { IS_EE } from '../../../../../apps/meteor/tests/e2e/config/constants'; import { retry } from '../../../../../apps/meteor/tests/end-to-end/api/helpers/retry'; import { federationConfig } from '../helper/config'; import { SynapseClient } from '../helper/synapse-client'; - -function withTimeout(fn: (signal: AbortSignal) => Promise, ms: number): Promise { - const controller = new AbortController(); - - const timeoutId = setTimeout(() => { - controller.abort(); - }, ms); - - return fn(controller.signal).finally(() => { - clearTimeout(timeoutId); - }); -} +import { withTimeout } from '../helper/withTimeout'; const waitForRoomEvent = async ( room: Room, @@ -657,7 +646,7 @@ const waitForRoomEvent = async ( config: rcUserConfig1, }); - expect(response.body).toHaveProperty('success', true); + expect(response.body).toHaveProperty('success', false); expect(response.body).toHaveProperty('message'); // Parse the error message from the DDP response @@ -861,55 +850,63 @@ const waitForRoomEvent = async ( let rcRoom: IRoomNativeFederated; let hs1Room1: Room; - let rcUser1: TestUser; - let rcUserConfig1: IRequestConfig; - - let rcUser2: TestUser; - let rcUserConfig2: IRequestConfig; - - const rcUserName1 = `dm-rc-multi-user1-${Date.now()}`; - const rcUserFullName1 = `DM RC Multi User1 ${Date.now()}`; + const rcUser1 = { + username: `dm-rc-multi-user1-${Date.now()}`, + fullName: `DM RC Multi User1 ${Date.now()}`, + get matrixId() { + return `@${this.username}:${federationConfig.rc1.domain}`; + }, + config: {} as IRequestConfig, + user: {} as TestUser, + }; - const rcUserName2 = `dm-rc-multi-user2-${Date.now()}`; - const rcUserFullName2 = `DM RC Multi User2 ${Date.now()}`; + const rcUser2 = { + username: `dm-rc-multi-user2-${Date.now()}`, + fullName: `DM RC Multi User2 ${Date.now()}`, + get matrixId() { + return `@${this.username}:${federationConfig.rc1.domain}`; + }, + config: {} as IRequestConfig, + user: {} as TestUser, + }; beforeAll(async () => { // Create RC user - rcUser1 = await createUser( + rcUser1.user = await createUser( { - username: rcUserName1, + username: rcUser1.username, password: 'random', - email: `${rcUserName1}@rocket.chat`, - name: rcUserFullName1, + email: `${rcUser1.username}@rocket.chat`, + name: rcUser1.fullName, }, rc1AdminRequestConfig, ); - rcUserConfig1 = await getRequestConfig(federationConfig.rc1.url, rcUser1.username, 'random'); + rcUser1.config = await getRequestConfig(federationConfig.rc1.url, rcUser1.username, 'random'); - rcUser2 = await createUser( + rcUser2.user = await createUser( { - username: rcUserName2, + username: rcUser2.username, password: 'random', - email: `${rcUserName2}@rocket.chat`, - name: rcUserFullName2, + email: `${rcUser2.username}@rocket.chat`, + name: rcUser2.fullName, }, rc1AdminRequestConfig, ); - rcUserConfig2 = await getRequestConfig(federationConfig.rc1.url, rcUser2.username, 'random'); + rcUser2.config = await getRequestConfig(federationConfig.rc1.url, rcUser2.username, 'random'); }); afterAll(async () => { - await deleteUser(rcUser1, {}, rc1AdminRequestConfig); - await deleteUser(rcUser2, {}, rc1AdminRequestConfig); + await deleteUser(rcUser1.user, {}, rc1AdminRequestConfig); + await deleteUser(rcUser2.user, {}, rc1AdminRequestConfig); }); it('should create a group DM with a Synapse and Rocket.Chat user', async () => { // Create group DM from RC user to two Synapse users - const response = await rcUserConfig1.request + const response = await rcUser1.config.request .post(api('dm.create')) - .set(rcUserConfig1.credentials) + .set(rcUser1.config.credentials) .send({ usernames: [federationConfig.hs1.adminMatrixUserId, rcUser2.username].join(','), }) @@ -918,7 +915,7 @@ const waitForRoomEvent = async ( expect(response.body).toHaveProperty('success', true); expect(response.body).toHaveProperty('room'); - const roomInfo = await getRoomInfo(response.body.room._id, rcUserConfig1); + const roomInfo = await getRoomInfo(response.body.room._id, rcUser1.config); expect(roomInfo).toHaveProperty('room'); @@ -937,41 +934,52 @@ const waitForRoomEvent = async ( }); }); + it('should show the room name as the inviter name on Synapse before join', async () => { + expect(hs1Room1.name).toBe(rcUser1.username); + }); + it('should display the fname containing the two invited users for the inviter', async () => { // Check the subscription for the inviter - const sub = await getSubscriptionByRoomId(rcRoom._id, rcUserConfig1.credentials, rcUserConfig1.request); + const sub = await getSubscriptionByRoomId(rcRoom._id, rcUser1.config.credentials, rcUser1.config.request); // Should contain both invited users in the name expect(sub).toHaveProperty('name', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser2.username}`); - expect(sub).toHaveProperty('fname', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser2.name}`); + expect(sub).toHaveProperty('fname', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser2.fullName}`); }); - it.failing("should display only the inviter's username for the invited user on Rocket.Chat", async () => { - const sub = await getSubscriptionByRoomId(rcRoom._id, rcUserConfig2.credentials, rcUserConfig2.request); + it("should display only the inviter's username for the invited user on Rocket.Chat", async () => { + const sub = await getSubscriptionByRoomId(rcRoom._id, rcUser2.config.credentials, rcUser2.config.request); expect(sub).toHaveProperty('status', 'INVITED'); - expect(sub).toHaveProperty('name', rcUser1.name); - expect(sub).toHaveProperty('fname', rcUser1.username); + expect(sub).toHaveProperty('name', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser1.username}`); + expect(sub).toHaveProperty('fname', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser1.fullName}`); }); - it.failing('should keep the fname to the RC invited user when the Synapse invited user accepts the DM', async () => { - const waitForRoomEventPromise1 = waitForRoomEvent(hs1Room1, RoomStateEvent.Members, ({ event }) => { - expect(event).toHaveProperty('content.membership', 'join'); - expect(event).toHaveProperty('state_key', federationConfig.hs1.adminMatrixUserId); - }); - + it('should accept the invitation on Synapse', async () => { await hs1AdminApp.matrixClient.joinRoom(rcRoom.federation.mrid); - await waitForRoomEventPromise1; + await retry( + 'wait for the join to be processed', + async () => { + expect(hs1Room1.getMyMembership()).toBe('join'); + }, + { delayMs: 100 }, + ); + }); + + it('should show the room name with all members on Synapse after join', async () => { + expect(hs1Room1.name).toBe(`${rcUser1.username} and ${rcUser2.username}`); + }); + it('should keep the fname to the RC invited user when the Synapse invited user accepts the DM', async () => { await retry( 'this is an async operation, so we need to wait for the event to be processed', async () => { - const sub = await getSubscriptionByRoomId(rcRoom._id, rcUserConfig2.credentials, rcUserConfig2.request); + const sub = await getSubscriptionByRoomId(rcRoom._id, rcUser2.config.credentials, rcUser2.config.request); expect(sub).toHaveProperty('status', 'INVITED'); - expect(sub).toHaveProperty('name', rcUser1.name); - expect(sub).toHaveProperty('fname', rcUser1.username); + expect(sub).toHaveProperty('name', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser1.username}`); + expect(sub).toHaveProperty('fname', `${federationConfig.hs1.adminMatrixUserId}, ${rcUser1.fullName}`); }, { delayMs: 100 }, ); @@ -983,19 +991,14 @@ const waitForRoomEvent = async ( await retry( 'this is an async operation, so we need to wait for the event to be processed', async () => { - const sub = await getSubscriptionByRoomId(rcRoom._id, rcUserConfig1.credentials, rcUserConfig1.request); + const sub = await getSubscriptionByRoomId(rcRoom._id, rcUser1.config.credentials, rcUser1.config.request); expect(sub).toHaveProperty('name', rcUser2.username); - expect(sub).toHaveProperty('fname', rcUser2.name); + expect(sub).toHaveProperty('fname', rcUser2.fullName); }, { delayMs: 100 }, ); }); - - it('should validate the room name for group DMs on Synapse', async () => { - // TODO this should probably change - expect(hs1Room1.name).toBe('Group chat with 3 members'); - }); }); describe('Permission validations', () => { @@ -1103,15 +1106,14 @@ const waitForRoomEvent = async ( }); // TODO maybe we should allow it - // is this working now? - it.failing('should fail if a user from rc try to add another user to the group DM', async () => { + it('should fail if a user from rc try to add another user to the group DM', async () => { const response = await addUserToRoom({ usernames: [rcUser3.username], rid: rcRoom._id, - config: rcUserConfig1, + config: rcUserConfig2, }); - expect(response.body).toHaveProperty('success', true); + expect(response.body).toHaveProperty('success', false); expect(response.body).toHaveProperty('message'); // Parse the error message from the DDP response @@ -1120,23 +1122,32 @@ const waitForRoomEvent = async ( expect(messageData).toHaveProperty('error.error', 'error-not-allowed'); }); - // TODO we're creating DMs with powerlevel 50 for invites, so this is not working - it.failing('should add another user by another user than the initial inviter', async () => { + it('should add another user by another user than the initial inviter', async () => { await hs1AdminApp.matrixClient.joinRoom(rcRoom.federation.mrid); - await retry('waiting for join', async () => { - const members = await hs1Room1.getMembers(); - expect(members.length).toBe(3); - }); + await retry( + 'waiting for join', + async () => { + expect(hs1Room1.getMyMembership()).toBe('join'); + + const members = await hs1Room1.getMembers(); + expect(members.length).toBe(3); + }, + { delayMs: 100 }, + ); await hs1AdminApp.inviteUserToRoom(hs1Room1.roomId, userDmId3); - await retry('waiting for user4 to receive invitation', async () => { - const members = await hs1Room1.getMembers(); - const user4Member = members.find((m) => m.userId === userDmId3); - expect(user4Member).toBeDefined(); - expect(user4Member?.membership).toBe('invite'); - }); + await retry( + 'waiting for user4 to receive invitation', + async () => { + const members = await hs1Room1.getMembers(); + const user4Member = members.find((m) => m.userId === userDmId3); + expect(user4Member).toBeDefined(); + expect(user4Member?.membership).toBe('invite'); + }, + { delayMs: 100 }, + ); }); }); @@ -1653,7 +1664,7 @@ const waitForRoomEvent = async ( config: rcUser1.config, }); - expect(response.body).toHaveProperty('success', true); + expect(response.body).toHaveProperty('success', false); expect(response.body).toHaveProperty('message'); // Parse the error message from the DDP response @@ -1662,7 +1673,7 @@ const waitForRoomEvent = async ( expect(messageData).toHaveProperty('error.error', 'error-cant-invite-for-direct-room'); }); - it('should create a 1:1 a federated DM between', async () => { + it('should create a 1:1 federated DM', async () => { // Create 1:1 DM from RC user to another RC user const response = await rcUser1.config.request .post(api('dm.create')) @@ -1696,7 +1707,7 @@ const waitForRoomEvent = async ( expect(sub).toHaveProperty('fname', federationConfig.hs1.adminMatrixUserId); }); - it('should show the invite to the third user', async () => { + it('should send an invite to another Synapse user', async () => { // invite from rocket.chat const response = await addUserToRoom({ usernames: [federationConfig.hs1.additionalUser1.matrixUserId], @@ -1744,19 +1755,33 @@ const waitForRoomEvent = async ( expect(roomInfo.room).toHaveProperty('usersCount', 3); }); - // TODO we're creating DMs with powerlevel 50 for invites, so this is not working - it.failing('should invite a fourth user from Rocket.Chat by a Synapse user', async () => { + it('should invite a fourth Rocket.Chat user by the invited Synapse user', async () => { await hs1User1.inviteUserToRoom(hs1Room1.roomId, rcUser2.matrixId); - await retry('waiting for fourth user to receive invitation', async () => { - const subscriptionInvite = await getSubscriptionByRoomId(rcRoom._id, rcUser2.config.credentials, rcUser2.config.request); + await retry( + 'waiting for user4 to receive invitation', + async () => { + const members = await hs1Room1.getMembers(); - expect(subscriptionInvite).toHaveProperty('status', 'INVITED'); - expect(subscriptionInvite).toHaveProperty( - 'fname', - `${federationConfig.hs1.adminMatrixUserId}, ${federationConfig.hs1.additionalUser1.matrixUserId}, ${rcUser1.matrixId}`, - ); - }); + const user4Member = members.find((m) => m.userId === rcUser2.matrixId); + + expect(user4Member).toBeDefined(); + expect(user4Member?.membership).toBe('invite'); + }, + { delayMs: 100 }, + ); + + await retry( + 'waiting for fourth user to receive invitation', + async () => { + const sub = await getSubscriptionByRoomId(rcRoom._id, rcUser2.config.credentials, rcUser2.config.request); + + expect(sub).toHaveProperty('status', 'INVITED'); + expect(sub).toHaveProperty('name', federationConfig.hs1.additionalUser1.matrixUserId); + expect(sub).toHaveProperty('fname', federationConfig.hs1.additionalUser1.matrixUserId); + }, + { delayMs: 100 }, + ); }); }); }); diff --git a/ee/packages/federation-matrix/tests/end-to-end/permissions.spec.ts b/ee/packages/federation-matrix/tests/end-to-end/permissions.spec.ts new file mode 100644 index 0000000000000..f1084816346b8 --- /dev/null +++ b/ee/packages/federation-matrix/tests/end-to-end/permissions.spec.ts @@ -0,0 +1,281 @@ +import type { IUser } from '@rocket.chat/core-typings'; + +import type {} from '../../../../../apps/meteor/app/api/server/v1/permissions.ts'; +import { api } from '../../../../../apps/meteor/tests/data/api-data'; +import { addUserToRoom, createRoom, getSubscriptions } from '../../../../../apps/meteor/tests/data/rooms.helper'; +import { createUser, deleteUser, getRequestConfig } from '../../../../../apps/meteor/tests/data/users.helper'; +import type { IRequestConfig, TestUser } from '../../../../../apps/meteor/tests/data/users.helper'; +import { IS_EE } from '../../../../../apps/meteor/tests/e2e/config/constants'; +import { retry } from '../../../../../apps/meteor/tests/end-to-end/api/helpers/retry.ts'; +import { federationConfig } from '../helper/config'; +import { SynapseClient } from '../helper/synapse-client'; + +(IS_EE ? describe : describe.skip)('Federation Permissions', () => { + let rc1AdminRequestConfig: IRequestConfig; + let rc1User1RequestConfig: IRequestConfig; + let hs1AdminApp: SynapseClient; + + beforeAll(async () => { + // Create admin request config for RC1 + rc1AdminRequestConfig = await getRequestConfig( + federationConfig.rc1.url, + federationConfig.rc1.adminUser, + federationConfig.rc1.adminPassword, + ); + + // Create user1 request config for RC1 + rc1User1RequestConfig = await getRequestConfig( + federationConfig.rc1.url, + federationConfig.rc1.additionalUser1.username, + federationConfig.rc1.additionalUser1.password, + ); + + // Create admin Synapse client for HS1 + hs1AdminApp = new SynapseClient(federationConfig.hs1.url, federationConfig.hs1.adminUser, federationConfig.hs1.adminPassword); + await hs1AdminApp.initialize(); + await rc1AdminRequestConfig.request + .post(api('permissions.update')) + .set(rc1AdminRequestConfig.credentials) + .send({ permissions: [{ _id: 'access-federation', roles: ['admin'] }] }) + .expect('Content-Type', 'application/json') + .expect(200); + }); + + afterAll(async () => + // Add permissions for access-federation to any user but admin + rc1AdminRequestConfig.request + .post(api('permissions.update')) + .set(rc1AdminRequestConfig.credentials) + .send({ permissions: [{ _id: 'access-federation', roles: ['admin', 'user'] }] }) + .expect('Content-Type', 'application/json') + .expect(200), + ); + + afterAll(async () => hs1AdminApp.close()); + + describe('Access Federation Permission', () => { + describe('Users without access-federation permission', () => { + beforeAll(async () => { + await rc1AdminRequestConfig.request + .post(api('permissions.update')) + .set(rc1AdminRequestConfig.credentials) + .send({ permissions: [{ _id: 'access-federation', roles: ['admin'] }] }) + .expect('Content-Type', 'application/json') + .expect(200); + }); + + afterAll(async () => { + // Add permissions for access-federation to any user but admin + await rc1AdminRequestConfig.request + .post(api('permissions.update')) + .set(rc1AdminRequestConfig.credentials) + .send({ permissions: [{ _id: 'access-federation', roles: ['admin', 'user'] }] }) + .expect('Content-Type', 'application/json') + .expect(200); + }); + + describe('Inviting from a remote server', () => { + let user: TestUser; + + let matrixRoomId: string; + + beforeAll(async () => { + user = await createUser( + { + username: `g3-${Date.now()}`, + password: '1', + roles: ['user'], + }, + rc1AdminRequestConfig, + ); + }); + + afterAll(async () => { + await deleteUser(user, {}, rc1AdminRequestConfig); + }); + + let channelName: string; + + beforeAll(async () => { + channelName = `federated-room-${Date.now()}`; + matrixRoomId = await hs1AdminApp.createRoom(channelName); + }); + + it('should throw an error if a remote user tries to invite a user without access-federation permission to a room', async () => { + await expect(hs1AdminApp.matrixClient.invite(matrixRoomId, `@${user.username}:${federationConfig.rc1.url}`)).rejects.toThrow(); + const subscriptions = await getSubscriptions(rc1AdminRequestConfig); + const invitedSub = subscriptions.update.find((sub) => sub.fname?.includes(channelName)); + expect(invitedSub).toBeUndefined(); + }); + + it('should be able to invite a user to a room if the user has access-federation permission', async () => { + await expect(hs1AdminApp.matrixClient.invite(matrixRoomId, federationConfig.rc1.adminMatrixUserId)).resolves.not.toThrow(); + + await retry('waiting for invitation to be processed', async () => { + const subscriptions = await getSubscriptions(rc1AdminRequestConfig); + + const pendingInvitation = subscriptions.update.find( + (subscription) => subscription.status === 'INVITED' && subscription.fname?.includes(channelName), + ); + expect(pendingInvitation).not.toBeUndefined(); + }); + }); + }); + + it('should throw an error if a user without access-federation permission tries to create a federated room', async () => { + const channelName = `federated-room-${Date.now()}`; + const createResponse = await createRoom({ + type: 'p', + name: channelName, + members: [], + extraData: { + federated: true, + }, + config: rc1User1RequestConfig, + }); + + expect(createResponse.status).toBe(400); + expect(createResponse.body).toHaveProperty('success', false); + expect(createResponse.body).toHaveProperty('errorType', 'error-not-authorized-federation'); + }); + + describe('Inviting from a local server', () => { + let channelName: string; + + let createResponse; + let addUserResponse; + + beforeAll(async () => { + channelName = `federated-room-${Date.now()}`; + createResponse = await createRoom({ + type: 'p', + name: channelName, + members: [], + extraData: { + federated: true, + }, + config: rc1AdminRequestConfig, + }); + expect(createResponse.status).toBe(200); + expect(createResponse.body).toHaveProperty('success', true); + expect(createResponse.body).toHaveProperty('group'); + expect(createResponse.body.group).toHaveProperty('_id'); + expect(createResponse.body.group).toHaveProperty('t', 'p'); + expect(createResponse.body.group).toHaveProperty('federated', true); + }); + let user: TestUser; + + beforeAll(async () => { + user = await createUser( + { + username: `g3-${Date.now()}`, + password: '1', + roles: ['user'], + }, + rc1AdminRequestConfig, + ); + }); + + afterAll(async () => { + await deleteUser(user, {}, rc1AdminRequestConfig); + }); + it('should not be able to add a user without access-federation permission to a room', async () => { + const addUserResponse = await addUserToRoom({ + usernames: [user.username], + rid: createResponse.body.group._id, + config: rc1AdminRequestConfig, + }); + + expect(addUserResponse.status).toBe(400); + expect(addUserResponse.body).toHaveProperty('success', false); + expect(addUserResponse.body.message).toMatch(/error-not-authorized-federation/); + }); + + it("should be able to add a remote user to a room regardless of the user's access-federation permission defined locally", async () => { + addUserResponse = await addUserToRoom({ + usernames: [federationConfig.hs1.adminMatrixUserId], + rid: createResponse.body.group._id, + config: rc1AdminRequestConfig, + }); + + expect(addUserResponse.status).toBe(200); + expect(addUserResponse.body).toHaveProperty('success', true); + expect(addUserResponse.body).toHaveProperty('message'); + expect(addUserResponse.body.message).toMatch('{"msg":"result","id":"id","result":true}'); + }); + }); + }); + + describe('Users with access-federation permission', () => { + let user: TestUser; + + beforeAll(async () => { + user = await createUser( + { + username: `g3-${Date.now()}`, + password: '1', + roles: ['user', 'admin'], + }, + rc1AdminRequestConfig, + ); + }); + + afterAll(async () => { + await deleteUser(user, {}, rc1AdminRequestConfig); + }); + + it('should be able to create a federated room if the user has access-federation permission', async () => { + const channelName = `federated-room-${Date.now()}`; + const createResponse = await createRoom({ + type: 'p', + name: channelName, + members: [], + extraData: { + federated: true, + }, + config: rc1AdminRequestConfig, + }); + + expect(createResponse.status).toBe(200); + expect(createResponse.body).toHaveProperty('success', true); + expect(createResponse.body).toHaveProperty('group'); + expect(createResponse.body.group).toHaveProperty('_id'); + expect(createResponse.body.group).toHaveProperty('t', 'p'); + expect(createResponse.body.group).toHaveProperty('federated', true); + }); + + describe('Add a user with access-federation permission to a room', () => { + beforeAll(async () => + rc1AdminRequestConfig.request + .post(api('permissions.update')) + .set(rc1AdminRequestConfig.credentials) + .send({ permissions: [{ _id: 'access-federation', roles: ['admin', 'user'] }] }) + .expect('Content-Type', 'application/json') + .expect(200), + ); + + it('should be able to add a user with access-federation permission to a room', async () => { + const createResponse = await createRoom({ + type: 'p', + name: `federated-room-${Date.now()}`, + members: [], + extraData: { + federated: true, + }, + config: rc1AdminRequestConfig, + }).expect(200); + + const addUserResponse = await addUserToRoom({ + usernames: [user.username], + rid: createResponse.body.group._id, + config: rc1AdminRequestConfig, + }).expect(200); + + expect(addUserResponse.body).toHaveProperty('success', true); + expect(addUserResponse.body).toHaveProperty('message'); + expect(addUserResponse.body.message).toMatch('{"msg":"result","id":"id","result":true}'); + }); + }); + }); + }); +}); diff --git a/ee/packages/federation-matrix/tests/end-to-end/room.spec.ts b/ee/packages/federation-matrix/tests/end-to-end/room.spec.ts index f0b2f169f752d..ff120a10f5764 100644 --- a/ee/packages/federation-matrix/tests/end-to-end/room.spec.ts +++ b/ee/packages/federation-matrix/tests/end-to-end/room.spec.ts @@ -231,7 +231,7 @@ import { SynapseClient } from '../helper/synapse-client'; config: rc1AdminRequestConfig, }); - expect(response.body).toHaveProperty('success', true); + expect(response.body).toHaveProperty('success', false); expect(response.body).toHaveProperty('message'); // Parse the error message from the DDP response diff --git a/ee/packages/federation-matrix/tests/helper/withTimeout.ts b/ee/packages/federation-matrix/tests/helper/withTimeout.ts new file mode 100644 index 0000000000000..12cd128fde316 --- /dev/null +++ b/ee/packages/federation-matrix/tests/helper/withTimeout.ts @@ -0,0 +1,11 @@ +export function withTimeout(fn: (signal: AbortSignal) => Promise, ms: number): Promise { + const controller = new AbortController(); + + const timeoutId = setTimeout(() => { + controller.abort(); + }, ms); + + return fn(controller.signal).finally(() => { + clearTimeout(timeoutId); + }); +} diff --git a/ee/packages/license/CHANGELOG.md b/ee/packages/license/CHANGELOG.md index 184c3fc11fda4..4c33cc0393c50 100644 --- a/ee/packages/license/CHANGELOG.md +++ b/ee/packages/license/CHANGELOG.md @@ -1,5 +1,52 @@ # @rocket.chat/license +## 1.1.7 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, ec0f8b435dd12c218adffa8892737c7ced4debb8]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/jwt@0.2.0 + - @rocket.chat/logger@1.0.0 +
    + +## 1.1.7-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 +
    + +## 1.1.7-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 +
    + +## 1.1.7-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 1.1.7-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 +
    + ## 1.1.7-rc.1 ### Patch Changes diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index a57713c1d9f4d..deff0602b1069 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/license", - "version": "1.1.7-rc.1", + "version": "1.1.7", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/media-calls/CHANGELOG.md b/ee/packages/media-calls/CHANGELOG.md index 1315118d6a491..2b4072c57d22b 100644 --- a/ee/packages/media-calls/CHANGELOG.md +++ b/ee/packages/media-calls/CHANGELOG.md @@ -1,5 +1,64 @@ # @rocket.chat/media-calls +## 0.2.0 + +### Minor Changes + +- ([#36941](https://github.com/RocketChat/Rocket.Chat/pull/36941)) Makes Voice Calls enabled by default when available + +### Patch Changes + +- ([#37793](https://github.com/RocketChat/Rocket.Chat/pull/37793)) Fixes improper handling of errors when SIP integration is configured incorrectly + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 733c94b996204151f580de2dd7f3402124b70977, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd, ec0f8b435dd12c218adffa8892737c7ced4debb8, ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/media-signaling@0.1.1 + - @rocket.chat/logger@1.0.0 +
    + +## 0.2.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.2.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.2.0-rc.3 + +### Patch Changes + +-
    Updated dependencies [ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04]: + + - @rocket.chat/media-signaling@0.1.1-rc.1 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.2.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.2.0-rc.1 ### Patch Changes diff --git a/ee/packages/media-calls/package.json b/ee/packages/media-calls/package.json index c932e3f4724a6..8c5e72bc6ecc6 100644 --- a/ee/packages/media-calls/package.json +++ b/ee/packages/media-calls/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/media-calls", - "version": "0.2.0-rc.1", + "version": "0.2.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/network-broker/CHANGELOG.md b/ee/packages/network-broker/CHANGELOG.md index 36697a7c63888..bd6de94e4cce1 100644 --- a/ee/packages/network-broker/CHANGELOG.md +++ b/ee/packages/network-broker/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/network-broker +## 0.2.26 + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 4aa3634186d97f4144c39f6b42a65107d3d30df0]: + + - @rocket.chat/core-services@0.12.0 +
    + +## 0.2.26-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.5 +
    + +## 0.2.26-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.4 +
    + +## 0.2.26-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 +
    + +## 0.2.26-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.2 +
    + ## 0.2.26-rc.1 ### Patch Changes diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json index fa4e529accda4..72251681db8e7 100644 --- a/ee/packages/network-broker/package.json +++ b/ee/packages/network-broker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/network-broker", - "version": "0.2.26-rc.1", + "version": "0.2.26", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/omni-core-ee/CHANGELOG.md b/ee/packages/omni-core-ee/CHANGELOG.md index 660b0b6a021e5..0fcd8f637f3b2 100644 --- a/ee/packages/omni-core-ee/CHANGELOG.md +++ b/ee/packages/omni-core-ee/CHANGELOG.md @@ -1,5 +1,61 @@ # @rocket.chat/omni-core-ee +## 0.0.12 + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, ec0f8b435dd12c218adffa8892737c7ced4debb8]: + + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/omni-core@0.0.12 +
    + +## 0.0.12-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 + - @rocket.chat/omni-core@0.0.12-rc.5 +
    + +## 0.0.12-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 + - @rocket.chat/omni-core@0.0.12-rc.4 +
    + +## 0.0.12-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 + - @rocket.chat/omni-core@0.0.12-rc.3 +
    + +## 0.0.12-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 + - @rocket.chat/omni-core@0.0.12-rc.2 +
    + ## 0.0.12-rc.1 ### Patch Changes diff --git a/ee/packages/omni-core-ee/package.json b/ee/packages/omni-core-ee/package.json index 7ceb92c54d816..8abf65b11839d 100644 --- a/ee/packages/omni-core-ee/package.json +++ b/ee/packages/omni-core-ee/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omni-core-ee", - "version": "0.0.12-rc.1", + "version": "0.0.12", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 556eda9bc5de6..c9d83f6762147 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,83 @@ # @rocket.chat/omnichannel-services +## 0.3.44 + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 2de4547580c472f4458568629d7bf98fd5faf342, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, 0c0258604632342f42fc36cabac2d6cfe0e477c4, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 611e4cdfa04849416a58071646b853b95e9b817b, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, 9e03ed5c5ea829c62c2da2de9413a27a4696f8a3, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, f056c451c2926e849f52b95fed957945398ef5f6, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/i18n@2.0.0 + - @rocket.chat/model-typings@2.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 + - @rocket.chat/message-types@0.1.0 + - @rocket.chat/tools@0.2.4 + - @rocket.chat/logger@1.0.0 + - @rocket.chat/pdf-worker@0.3.26 +
    + +## 0.3.44-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/pdf-worker@0.3.26-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.3.44-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/pdf-worker@0.3.26-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.3.44-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/pdf-worker@0.3.26-rc.3 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.3.44-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/pdf-worker@0.3.26-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/message-types@0.1.0-rc.0 + - @rocket.chat/model-typings@2.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.3.44-rc.1 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index a3948a319c52e..c5f6fe2d87fa9 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.3.44-rc.1", + "version": "0.3.44", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index b1b6d3ddf69e5..5524a37ab1a04 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/pdf-worker +## 0.3.26 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260]: + + - @rocket.chat/core-typings@8.0.0 +
    + +## 0.3.26-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 +
    + +## 0.3.26-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 +
    + +## 0.3.26-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 0.3.26-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 +
    + ## 0.3.26-rc.1 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index 37386e607b7e3..70c924ab14d0b 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.3.26-rc.1", + "version": "0.3.26", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index d0ae7e9b049d9..8949614bfc72e 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,62 @@ # @rocket.chat/presence +## 0.2.47 + +### Patch Changes + +- ([#37551](https://github.com/RocketChat/Rocket.Chat/pull/37551)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 1baa03cced8f94584da1224ad59cad86f219707a, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd, 4aa3634186d97f4144c39f6b42a65107d3d30df0]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/core-services@0.12.0 +
    + +## 0.2.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/core-services@0.12.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.2.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/core-services@0.12.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.2.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-services@0.12.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.2.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/core-services@0.12.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.2.47-rc.1 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index 0698952499e97..b98b82dd2c5a4 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.2.47-rc.1", + "version": "0.2.47", "private": true, "main": "./dist/Presence.js", "typings": "./dist/Presence.d.ts", diff --git a/packages/api-client/CHANGELOG.md b/packages/api-client/CHANGELOG.md index 6fa3b648c549c..2326782a0dc7a 100644 --- a/packages/api-client/CHANGELOG.md +++ b/packages/api-client/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/api-client +## 0.2.47 + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 +
    + +## 0.2.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 +
    + +## 0.2.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 +
    + +## 0.2.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 +
    + +## 0.2.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 +
    + ## 0.2.47-rc.1 ### Patch Changes diff --git a/packages/api-client/package.json b/packages/api-client/package.json index d091bd58e7937..fbceab70a81d4 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/api-client", - "version": "0.2.47-rc.1", + "version": "0.2.47", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/apps-engine/CHANGELOG.md b/packages/apps-engine/CHANGELOG.md index 8ad751a700dc5..992c76e5cdead 100644 --- a/packages/apps-engine/CHANGELOG.md +++ b/packages/apps-engine/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/apps-engine +## 1.59.0 + +### Minor Changes + +- ([#37719](https://github.com/RocketChat/Rocket.Chat/pull/37719)) Adds a new method to the Apps-Engine that allows apps to retrieve multiple rooms from database + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +- ([#37730](https://github.com/RocketChat/Rocket.Chat/pull/37730)) Adds an execution flag to apps-engine runtime that helps prevent the publishing of faulty builds + ## 1.59.0-rc.0 ### Minor Changes diff --git a/packages/apps-engine/package.json b/packages/apps-engine/package.json index e076793f1f0c5..ddbcf85a655dd 100644 --- a/packages/apps-engine/package.json +++ b/packages/apps-engine/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-engine", - "version": "1.59.0-rc.0", + "version": "1.59.0", "description": "The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.", "keywords": [ "rocket.chat", diff --git a/packages/apps/CHANGELOG.md b/packages/apps/CHANGELOG.md index 646f38ea4f01e..8eac8dd9abaf8 100644 --- a/packages/apps/CHANGELOG.md +++ b/packages/apps/CHANGELOG.md @@ -1,5 +1,60 @@ # @rocket.chat/apps +## 0.6.0 + +### Minor Changes + +- ([#37719](https://github.com/RocketChat/Rocket.Chat/pull/37719)) Adds a new method to the Apps-Engine that allows apps to retrieve multiple rooms from database + +### Patch Changes + +-
    Updated dependencies [0ccb9692b434bc88b4bc5009d39e024c03f01b86, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 70872896b912004dc016297b6e875d873d81dc3a, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd]: + + - @rocket.chat/apps-engine@1.59.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 +
    + +## 0.6.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 +
    + +## 0.6.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 +
    + +## 0.6.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 +
    + +## 0.6.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 +
    + ## 0.6.0-rc.1 ### Patch Changes diff --git a/packages/apps/package.json b/packages/apps/package.json index 9d5899e8e923b..9c4f3cb8ff7bb 100644 --- a/packages/apps/package.json +++ b/packages/apps/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps", - "version": "0.6.0-rc.1", + "version": "0.6.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index 6e95032802ab0..d2eb155f3db23 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,80 @@ # @rocket.chat/core-services +## 0.12.0 + +### Minor Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +- ([#37791](https://github.com/RocketChat/Rocket.Chat/pull/37791)) Fixes an issue where cases of invites that were canceled or disinvited were not being handled. + +- ([#37551](https://github.com/RocketChat/Rocket.Chat/pull/37551)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, 733c94b996204151f580de2dd7f3402124b70977, d3538e7045c41f91b8c561d44e5485ff93b93745, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/models@2.0.0 + - @rocket.chat/media-signaling@0.1.1 + - @rocket.chat/ui-kit@0.39.0 + - @rocket.chat/http-router@7.9.14 +
    + +## 0.12.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/http-router@7.9.14-rc.5 + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.12.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/http-router@7.9.14-rc.4 + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.12.0-rc.3 + +### Patch Changes + +-
    Updated dependencies [ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04]: + + - @rocket.chat/media-signaling@0.1.1-rc.1 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/http-router@7.9.14-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.12.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/http-router@7.9.14-rc.2 + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.12.0-rc.1 ### Patch Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 6da52c26e7aa7..2f64d2f435a3c 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.12.0-rc.1", + "version": "0.12.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", @@ -18,7 +18,7 @@ }, "dependencies": { "@rocket.chat/core-typings": "workspace:^", - "@rocket.chat/federation-sdk": "0.3.5", + "@rocket.chat/federation-sdk": "0.3.8", "@rocket.chat/http-router": "workspace:^", "@rocket.chat/icons": "~0.46.0", "@rocket.chat/media-signaling": "workspace:^", diff --git a/packages/core-services/src/types/IMessageService.ts b/packages/core-services/src/types/IMessageService.ts index 5532a553f6d6f..c9490e81bb01e 100644 --- a/packages/core-services/src/types/IMessageService.ts +++ b/packages/core-services/src/types/IMessageService.ts @@ -19,6 +19,7 @@ export interface IMessageService { files, attachments, thread, + ts, }: { fromId: string; rid: string; @@ -32,6 +33,7 @@ export interface IMessageService { files?: IMessage['files']; attachments?: IMessage['attachments']; thread?: { tmid: string; tshow: boolean }; + ts: Date; }): Promise; saveSystemMessageAndNotifyUser( type: MessageTypesValues, diff --git a/packages/core-services/src/types/IRoomService.ts b/packages/core-services/src/types/IRoomService.ts index 62ccf27bcde6f..a5850fe21bea9 100644 --- a/packages/core-services/src/types/IRoomService.ts +++ b/packages/core-services/src/types/IRoomService.ts @@ -51,7 +51,7 @@ export interface IRoomService { sendMessage?: boolean, ): Promise; getRouteLink(room: AtLeast): Promise; - join(param: { room: IRoom; user: Pick; joinCode?: string }): Promise; + join(param: { room: IRoom; user: Pick; joinCode?: string }): Promise; beforeLeave(room: IRoom): Promise; beforeUserRemoved(room: IRoom): Promise; beforeNameChange(room: IRoom): Promise; diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 9e1f0343b503a..e3142638e801c 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,36 @@ # @rocket.chat/core-typings +## 8.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +### Minor Changes + +- ([#37224](https://github.com/RocketChat/Rocket.Chat/pull/37224)) Enhance user's deactivated state handling to correctly distinguish between pending and deactivated users. + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +- ([#37612](https://github.com/RocketChat/Rocket.Chat/pull/37612)) Adds invitation request support to rooms + +-
    Updated dependencies [d3538e7045c41f91b8c561d44e5485ff93b93745]: + + - @rocket.chat/ui-kit@0.39.0 +
    + +## 8.0.0-rc.5 + +## 8.0.0-rc.4 + +## 8.0.0-rc.3 + +## 8.0.0-rc.2 + ## 8.0.0-rc.1 ## 8.0.0-rc.0 diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index a4f198ebbdf74..b6848d153b764 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/cron +## 0.1.47 + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/models@2.0.0 +
    + +## 0.1.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.1.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.1.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.1.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.1.47-rc.1 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index e0894e546cac9..77c231af4789b 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.1.47-rc.1", + "version": "0.1.47", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ddp-client/CHANGELOG.md b/packages/ddp-client/CHANGELOG.md index 7894e5b269294..5833027e7d299 100644 --- a/packages/ddp-client/CHANGELOG.md +++ b/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,83 @@ # @rocket.chat/ddp-client +## 1.0.0 + +### Major Changes + +- ([#36836](https://github.com/RocketChat/Rocket.Chat/pull/36836)) Removes the deprecated livechat:getTagsList method + + Removes the deprecated livechat:getUnitsFromUser method + + Removes the deprecated livechat:getFirstRoomMessage method + + Removes the deprecated livechat:getDepartmentForwardRestrictions method + +- ([#36871](https://github.com/RocketChat/Rocket.Chat/pull/36871)) Removes the `livechat:transfer` deprecated method + Removes the `livechat/room.transfer` deprecated endpoint + Creates the `livechat/visitor.department.transfer` for visitors department transfer use +- ([#37114](https://github.com/RocketChat/Rocket.Chat/pull/37114)) Removes stdout logging functionality, related components and settings + +- ([#36828](https://github.com/RocketChat/Rocket.Chat/pull/36828)) Removes the deprecated `setUserPassword` method + +### Minor Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, 733c94b996204151f580de2dd7f3402124b70977, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/media-signaling@0.1.1 + - @rocket.chat/api-client@0.2.47 +
    + +## 1.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/api-client@0.2.47-rc.5 +
    + +## 1.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/api-client@0.2.47-rc.4 +
    + +## 1.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies [ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04]: + + - @rocket.chat/media-signaling@0.1.1-rc.1 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/api-client@0.2.47-rc.3 +
    + +## 1.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/api-client@0.2.47-rc.2 +
    + ## 1.0.0-rc.1 ### Patch Changes diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json index 6a03d9261892d..86fd851f3ab90 100644 --- a/packages/ddp-client/package.json +++ b/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "1.0.0-rc.1", + "version": "1.0.0", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index 46c1ce8bf6764..4c0d4076700f1 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,78 @@ # Change Log +## 26.0.0 + +### Minor Changes + +- ([#37726](https://github.com/RocketChat/Rocket.Chat/pull/37726)) Introduces a new variation of the `Icon` element to `ui-kit` through the new `framed` optional property. + +### Patch Changes + +- ([#37768](https://github.com/RocketChat/Rocket.Chat/pull/37768)) Fixes an issue with the `action` block inside `Info Card` ui-kit element not dispatching actions. + +-
    Updated dependencies [0ccb9692b434bc88b4bc5009d39e024c03f01b86, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 0c0258604632342f42fc36cabac2d6cfe0e477c4, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 70872896b912004dc016297b6e875d873d81dc3a, ddc935727e9a7275813006d9dcaa7fe866610844, d3538e7045c41f91b8c561d44e5485ff93b93745, 73d9eb2783176954f42aa2cbeda8abf1d49ac260]: + + - @rocket.chat/apps-engine@1.59.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/gazzodown@26.0.0 + - @rocket.chat/ui-kit@0.39.0 + - @rocket.chat/ui-avatar@22.0.0 + - @rocket.chat/ui-video-conf@26.0.0 +
    + +## 26.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/gazzodown@26.0.0-rc.5 + - @rocket.chat/ui-avatar@22.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 + - @rocket.chat/ui-video-conf@26.0.0-rc.5 +
    + +## 26.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/gazzodown@26.0.0-rc.4 + - @rocket.chat/ui-avatar@22.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 + - @rocket.chat/ui-video-conf@26.0.0-rc.4 +
    + +## 26.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/gazzodown@26.0.0-rc.3 + - @rocket.chat/ui-avatar@22.0.0-rc.3 + - @rocket.chat/ui-video-conf@26.0.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 26.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/gazzodown@26.0.0-rc.2 + - @rocket.chat/ui-avatar@22.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 + - @rocket.chat/ui-video-conf@26.0.0-rc.2 +
    + ## 26.0.0-rc.1 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index f8e10688129c2..8ef341c4150f6 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/fuselage-ui-kit", - "version": "26.0.0-rc.1", + "version": "26.0.0", "private": true, "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index e9cf7e51842af..604416ec9ba7e 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,64 @@ # @rocket.chat/gazzodown +## 26.0.0 + +### Major Changes + +- ([#36976](https://github.com/RocketChat/Rocket.Chat/pull/36976)) Promotes Timestamp Parser from preview state to stable + +### Patch Changes + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 0c0258604632342f42fc36cabac2d6cfe0e477c4, ac11ea05ffadeca978c794ff38d5199d9acb2c29, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 611e4cdfa04849416a58071646b853b95e9b817b, 55dc368f3f679e93bffb9f04efe3944832cf3336]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/ui-client@26.0.0 +
    + +## 26.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/ui-client@26.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 26.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/ui-client@26.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 26.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/ui-client@26.0.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 26.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/ui-client@26.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 26.0.0-rc.1 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index 74cff242e1a88..e80af49b5532d 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/gazzodown", - "version": "26.0.0-rc.1", + "version": "26.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/http-router/CHANGELOG.md b/packages/http-router/CHANGELOG.md index 9da4d379f2059..9be5db09074c7 100644 --- a/packages/http-router/CHANGELOG.md +++ b/packages/http-router/CHANGELOG.md @@ -1,5 +1,56 @@ # @rocket.chat/http-router +## 7.9.14 + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/logger@1.0.0 +
    + +## 7.9.14-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 +
    + +## 7.9.14-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 +
    + +## 7.9.14-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 +
    + +## 7.9.14-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 +
    + ## 7.9.14-rc.1 ### Patch Changes diff --git a/packages/http-router/package.json b/packages/http-router/package.json index 040f5d30218c9..7b811632e91a3 100644 --- a/packages/http-router/package.json +++ b/packages/http-router/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/http-router", - "version": "7.9.14-rc.1", + "version": "7.9.14", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md index 8921119f021f3..0c0062e775e1b 100644 --- a/packages/i18n/CHANGELOG.md +++ b/packages/i18n/CHANGELOG.md @@ -1,5 +1,38 @@ # @rocket.chat/i18n +## 2.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP permissions + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#36976](https://github.com/RocketChat/Rocket.Chat/pull/36976)) Promotes Timestamp Parser from preview state to stable + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +- ([#37022](https://github.com/RocketChat/Rocket.Chat/pull/37022)) Promotes Resizable Contextualbars from preview state to stable. + +- ([#36966](https://github.com/RocketChat/Rocket.Chat/pull/36966)) Promotes quick reactions from preview state to stable + +### Minor Changes + +- ([#36941](https://github.com/RocketChat/Rocket.Chat/pull/36941)) Makes Voice Calls enabled by default when available + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +- ([#37612](https://github.com/RocketChat/Rocket.Chat/pull/37612)) Adds invitation request support to rooms + +- ([#37635](https://github.com/RocketChat/Rocket.Chat/pull/37635)) Adds invitation badge to sidebar + +-
    Updated dependencies [9e03ed5c5ea829c62c2da2de9413a27a4696f8a3]: + + - @rocket.chat/tools@0.2.4 +
    + ## 2.0.0-rc.0 ### Major Changes diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 051af2f30b333..d5873a811fedf 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/i18n", - "version": "2.0.0-rc.0", + "version": "2.0.0", "private": true, "type": "module", "exports": { diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 3debdaebe2027..440b5f011c4a4 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -83,6 +83,7 @@ "ABAC_Managed_description": "Only compliant users have access to attribute-based access controlled rooms. Attributes determine room access.", "ABAC_Room_Attributes": "Room Attributes", "ABAC_Logs": "Logs", + "ABAC_Invalid_attribute": "Invalid characters in attribute name or values", "AI_Actions": "AI actions", "API": "API", "API_Add_Personal_Access_Token": "Add new Personal Access Token", @@ -976,6 +977,7 @@ "Call": "Call", "Call_Already_Ended": "Call Already Ended", "Call_ID": "Call ID", + "Call_in_progress": "Call in progress", "Call_info": "Call info", "Call_info_could_not_be_loaded": "Call info could not be loaded", "Call_Information": "Call Information", @@ -2228,7 +2230,7 @@ "Federation_Service_EDU_Process_Presence": "Process Presence events", "Federation_Service_EDU_Process_Presence_Description": "Send and receive events of user presence (online, offline, etc.) between federated servers.", "Federation_Service_EDU_Process_Presence_Alert": "Enabling presence events may increase the load on your server and network traffic considerably, especially if you have many users. Only enable this option if you understand the implications and have the necessary resources to handle the additional load.", - "Federation_Service_Alert": "This is an Alpha feature not intended for production usage!
    It may not be stable and/or performatic. Please be aware that it may change, break, or even be removed in the future without any notice.", + "Federation_Service_Alert": "Beta feature: Ready for Non-Critical Deployments
    This feature is currently undergoing final performance and resilience audits and is not yet recommended for mission-critical production data. Functionality may still experience intermittent issues. Users must be explicitly granted the 'access-federation' permission by the Workspace Administrator to interact with federated rooms.", "Federation_Service_Domain": "Federated Domain", "Federation_Service_Domain_Description": "The domain that this server should respond to, for example: `acme.com`. This will be used as the suffix for user IDs (e.g., `@user:acme.com`).
    If your chat server is accessible from a different domain than the one you want to use for federation, you should follow our documentation to configure the `.well-known` file on your web server.", "Federation_Service_Domain_Alert": "Inform only the domain, do not include http(s)://, slashes or any path after it.
    Use something like `acme.com` and not `https://acme.com/chat`.", diff --git a/packages/i18n/src/locales/nb.i18n.json b/packages/i18n/src/locales/nb.i18n.json index 3c4823614a1be..e0afeb4b6b181 100644 --- a/packages/i18n/src/locales/nb.i18n.json +++ b/packages/i18n/src/locales/nb.i18n.json @@ -2131,7 +2131,6 @@ "Federation_Service_EDU_Process_Typing_Description": "Sende og motta hendelser der en bruker skriver en melding mellom fødererte servere.", "Federation_Service_EDU_Process_Typing_Alert": "Hvis du aktiverer skrivehendelser, kan det øke belastningen på serveren og nettverkstrafikken betraktelig, spesielt hvis du har mange brukere. Aktiver dette alternativet bare hvis du forstår konsekvensene og har de nødvendige ressursene til å håndtere den ekstra belastningen.", "Federation_Service_EDU_Process_Presence_Description": "Sende og motta hendelser om brukertilstedeværelse (online, offline osv.) mellom fødererte servere.", - "Federation_Service_Alert": "Dette er en alfa-funksjon som ikke er beregnet for produksjonsbruk!
    Det er ikke sikkert at den er stabil og/eller ytelsesmessig. Vær oppmerksom på at den kan endres, gå i stykker eller til og med bli fjernet i fremtiden uten forvarsel.", "Federation_Service_Domain": "Føderert domene", "Federation_Service_Domain_Description": "Domenet som denne serveren skal svare til, for eksempel: `acme.com`. Dette vil bli brukt som suffiks for bruker-ID-er (f.eks. `@user:acme.com`).
    Hvis chatteserveren din er tilgjengelig fra et annet domene enn det du ønsker å bruke for føderasjon, bør du følge dokumentasjonen vår for å konfigurere filen `.well-known` på webserveren din.", "Federation_Service_Domain_Alert": "Oppgi bare domenet, ikke inkluder http(s)://, skråstreker eller noen sti etter det.
    Bruk noe sånt som `acme.com` og ikke `https://acme.com/chat`.", diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index 84253f1f2988c..05deefae3bec2 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/instance-status +## 0.1.47 + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd]: + + - @rocket.chat/models@2.0.0 +
    + +## 0.1.47-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.1.47-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.1.47-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.1.47-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.1.47-rc.1 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 0a2ff93aca87e..5c890d71f3e8a 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.47-rc.1", + "version": "0.1.47", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/jwt/CHANGELOG.md b/packages/jwt/CHANGELOG.md index b918c4fb5b49c..665d47fd4112b 100644 --- a/packages/jwt/CHANGELOG.md +++ b/packages/jwt/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/jwt +## 0.2.0 + +### Minor Changes + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + ## 0.2.0-rc.0 ### Minor Changes diff --git a/packages/jwt/package.json b/packages/jwt/package.json index c08a526ce501b..49bb98ce0ac7c 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/jwt", - "version": "0.2.0-rc.0", + "version": "0.2.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md index f255c2d2ff39a..6f9c67f4921e6 100644 --- a/packages/livechat/CHANGELOG.md +++ b/packages/livechat/CHANGELOG.md @@ -1,5 +1,57 @@ # @rocket.chat/livechat Change Log +## 2.0.0 + +### Major Changes + +- ([#36871](https://github.com/RocketChat/Rocket.Chat/pull/36871)) Removes the `livechat:transfer` deprecated method + Removes the `livechat/room.transfer` deprecated endpoint + Creates the `livechat/visitor.department.transfer` for visitors department transfer use + +### Patch Changes + +-
    Updated dependencies [0c0258604632342f42fc36cabac2d6cfe0e477c4, d3538e7045c41f91b8c561d44e5485ff93b93745]: + + - @rocket.chat/gazzodown@26.0.0 + - @rocket.chat/ui-kit@0.39.0 +
    + +## 2.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/gazzodown@26.0.0-rc.5 +
    + +## 2.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/gazzodown@26.0.0-rc.4 +
    + +## 2.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/gazzodown@26.0.0-rc.3 +
    + +## 2.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/gazzodown@26.0.0-rc.2 +
    + ## 2.0.0-rc.1 ### Patch Changes diff --git a/packages/livechat/package.json b/packages/livechat/package.json index dbc2410cd0ccc..7d6bfb18d19f8 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/livechat", - "version": "2.0.0-rc.1", + "version": "2.0.0", "homepage": "https://rocket.chat", "repository": { "type": "git", diff --git a/packages/logger/CHANGELOG.md b/packages/logger/CHANGELOG.md index 1e325af34f0ca..0112878fae7bc 100644 --- a/packages/logger/CHANGELOG.md +++ b/packages/logger/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/logger +## 1.0.0 + +### Major Changes + +- ([#37114](https://github.com/RocketChat/Rocket.Chat/pull/37114)) Removes stdout logging functionality, related components and settings + ## 1.0.0-rc.0 ### Major Changes diff --git a/packages/logger/package.json b/packages/logger/package.json index 85cc6151b8657..5bce9f94bdba9 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/logger", - "version": "1.0.0-rc.0", + "version": "1.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/media-signaling/CHANGELOG.md b/packages/media-signaling/CHANGELOG.md index e4faa30f8dd4a..5d4dc5e2f67d7 100644 --- a/packages/media-signaling/CHANGELOG.md +++ b/packages/media-signaling/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/media-signaling +## 0.1.1 + +### Patch Changes + +- ([#37816](https://github.com/RocketChat/Rocket.Chat/pull/37816)) Fixes an issue where the client would play the Call Ended sound effect when the user started calling someone on a different session + +- ([#38025](https://github.com/RocketChat/Rocket.Chat/pull/38025)) Adds a timeout to ensure transferred calls stop ringing if there's no response from the final user + +## 0.1.1-rc.1 + +### Patch Changes + +- ([#38025](https://github.com/RocketChat/Rocket.Chat/pull/38025)) Adds a timeout to ensure transferred calls stop ringing if there's no response from the final user + ## 0.1.1-rc.0 ### Patch Changes diff --git a/packages/media-signaling/package.json b/packages/media-signaling/package.json index 1d93a53a302a6..39541a748504c 100644 --- a/packages/media-signaling/package.json +++ b/packages/media-signaling/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/media-signaling", - "version": "0.1.1-rc.0", + "version": "0.1.1", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/media-signaling/src/lib/Call.ts b/packages/media-signaling/src/lib/Call.ts index fe0ff5a705fcc..af3f636d7fab9 100644 --- a/packages/media-signaling/src/lib/Call.ts +++ b/packages/media-signaling/src/lib/Call.ts @@ -349,9 +349,8 @@ export class ClientMediaCall implements IClientMediaCall { // Send an ACK so the server knows that this session exists and is reachable this.acknowledge(); - if (this._role === 'callee' || !this.acceptedLocally) { - this.addStateTimeout('pending', TIMEOUT_TO_ACCEPT); - } + // Adds a secondary timeout for all sessions of the call; Won't matter if the original caller session is still active, but is needed for transferred calls. + this.addStateTimeout('pending', TIMEOUT_TO_ACCEPT); // If the call was requested by this specific session, assume we're signed already. if ( diff --git a/packages/message-types/CHANGELOG.md b/packages/message-types/CHANGELOG.md index 9c9301220305e..897ae8a419915 100644 --- a/packages/message-types/CHANGELOG.md +++ b/packages/message-types/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/message-types +## 0.1.0 + +### Minor Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + ## 0.1.0-rc.0 ### Minor Changes diff --git a/packages/message-types/package.json b/packages/message-types/package.json index 81b26479ff317..7bb4f2e7e19a5 100644 --- a/packages/message-types/package.json +++ b/packages/message-types/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/message-types", - "version": "0.1.0-rc.0", + "version": "0.1.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/mock-providers/CHANGELOG.md b/packages/mock-providers/CHANGELOG.md index 4e63197308139..e2d83a9bf444b 100644 --- a/packages/mock-providers/CHANGELOG.md +++ b/packages/mock-providers/CHANGELOG.md @@ -1,5 +1,53 @@ # @rocket.chat/mock-providers +## 0.4.7 + +### Patch Changes + +- ([#37654](https://github.com/RocketChat/Rocket.Chat/pull/37654)) Fixes an issue that could cause slashcommands to disappear for the user in certain high-availability scenarios + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 2de4547580c472f4458568629d7bf98fd5faf342, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 0c0258604632342f42fc36cabac2d6cfe0e477c4, ac11ea05ffadeca978c794ff38d5199d9acb2c29, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 611e4cdfa04849416a58071646b853b95e9b817b, f056c451c2926e849f52b95fed957945398ef5f6]: + + - @rocket.chat/i18n@2.0.0 + - @rocket.chat/ui-contexts@26.0.0 +
    + +## 0.4.7-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 0.4.7-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 0.4.7-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 +
    + +## 0.4.7-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 0.4.7-rc.1 ### Patch Changes diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index 23f357fe59084..52f84ad6e5f2f 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/mock-providers", - "version": "0.4.7-rc.1", + "version": "0.4.7", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index cf9b027c7e320..cf5b450aa23f6 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,64 @@ # @rocket.chat/model-typings +## 2.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +### Minor Changes + +- ([#37224](https://github.com/RocketChat/Rocket.Chat/pull/37224)) Enhance user's deactivated state handling to correctly distinguish between pending and deactivated users. + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +- ([#37846](https://github.com/RocketChat/Rocket.Chat/pull/37846)) Fixes /v1/users.logout not marking user sessions as logged out, leaving stale sessions active. + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260]: + + - @rocket.chat/core-typings@8.0.0 +
    + +## 2.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 +
    + +## 2.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 +
    + +## 2.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 2.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 +
    + ## 2.0.0-rc.1 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 0a5f5c6aa050a..cecf9fa0ea962 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "2.0.0-rc.1", + "version": "2.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/model-typings/src/models/ISubscriptionsModel.ts b/packages/model-typings/src/models/ISubscriptionsModel.ts index d28fb1be57e53..27a8e2dadc709 100644 --- a/packages/model-typings/src/models/ISubscriptionsModel.ts +++ b/packages/model-typings/src/models/ISubscriptionsModel.ts @@ -34,7 +34,7 @@ export interface ISubscriptionsModel extends IBaseModel { findByLivechatRoomIdAndNotUserId(roomId: string, userId: string, options?: FindOptions): FindCursor; - countByRoomIdAndUserId(rid: string, uid: string | undefined): Promise; + countByRoomIdAndUserId(rid: string, uid: string | undefined, includeInvitations?: boolean): Promise; countUnarchivedByRoomId(rid: string): Promise; diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index 10727c7604ed2..2bb57f8186f2a 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,69 @@ # @rocket.chat/models +## 2.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +### Minor Changes + +- ([#37224](https://github.com/RocketChat/Rocket.Chat/pull/37224)) Enhance user's deactivated state handling to correctly distinguish between pending and deactivated users. + +- ([#37091](https://github.com/RocketChat/Rocket.Chat/pull/37091)) Adds Attribute Based Access Control (ABAC) for private channels & private teams. + +### Patch Changes + +- ([#37846](https://github.com/RocketChat/Rocket.Chat/pull/37846)) Fixes /v1/users.logout not marking user sessions as logged out, leaving stale sessions active. + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, ac11ea05ffadeca978c794ff38d5199d9acb2c29, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, be80b724a636877294b5e5baa501d070941131dd, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, cb3c5e3455606a045f95f168dae6ed32a387697c, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/model-typings@2.0.0 +
    + +## 2.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/model-typings@2.0.0-rc.5 +
    + +## 2.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/model-typings@2.0.0-rc.4 +
    + +## 2.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/rest-typings@8.0.0-rc.3 + - @rocket.chat/model-typings@2.0.0-rc.3 +
    + +## 2.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/model-typings@2.0.0-rc.2 +
    + ## 2.0.0-rc.1 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index 954f69ad3ec4d..c46cdd6e14158 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "2.0.0-rc.1", + "version": "2.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/models/src/models/Messages.ts b/packages/models/src/models/Messages.ts index c538131a52fcf..dad035a2ff951 100644 --- a/packages/models/src/models/Messages.ts +++ b/packages/models/src/models/Messages.ts @@ -1521,7 +1521,9 @@ export class MessagesRaw extends BaseRaw implements IMessagesModel { } getMessageByFileId(fileID: string): Promise { - return this.findOne({ 'file._id': fileID }); + return this.findOne({ + $or: [{ 'file._id': fileID }, { 'files._id': fileID }], + }); } getMessageByFileIdAndUsername(fileID: string, userId: string): Promise { diff --git a/packages/models/src/models/Subscriptions.ts b/packages/models/src/models/Subscriptions.ts index 520fcd8b3b66a..f85013fd4bce4 100644 --- a/packages/models/src/models/Subscriptions.ts +++ b/packages/models/src/models/Subscriptions.ts @@ -157,11 +157,11 @@ export class SubscriptionsRaw extends BaseRaw implements ISubscri return this.find(query, options); } - countByRoomIdAndUserId(rid: string, uid: string | undefined): Promise { + countByRoomIdAndUserId(rid: string, uid: string | undefined, includeInvitations = false): Promise { const query = { rid, 'u._id': uid, - 'status': { $exists: false }, + ...(includeInvitations ? { $or: [{ status: { $exists: false } }, { status: 'INVITED' as const }] } : { status: { $exists: false } }), }; return this.countDocuments(query); diff --git a/packages/omni-core/CHANGELOG.md b/packages/omni-core/CHANGELOG.md index 10ca77921f6e8..d19cfecf32c73 100644 --- a/packages/omni-core/CHANGELOG.md +++ b/packages/omni-core/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/omni-core +## 0.0.12 + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, be80b724a636877294b5e5baa501d070941131dd]: + + - @rocket.chat/models@2.0.0 +
    + +## 0.0.12-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.5 +
    + +## 0.0.12-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.4 +
    + +## 0.0.12-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.3 +
    + +## 0.0.12-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/models@2.0.0-rc.2 +
    + ## 0.0.12-rc.1 ### Patch Changes diff --git a/packages/omni-core/package.json b/packages/omni-core/package.json index cf98a9bcbf684..943d4a386e8f2 100644 --- a/packages/omni-core/package.json +++ b/packages/omni-core/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omni-core", - "version": "0.0.12-rc.1", + "version": "0.0.12", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 06401886dcf6d..5ef9b95520fa3 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,92 @@ # @rocket.chat/rest-typings +## 8.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +- ([#37123](https://github.com/RocketChat/Rocket.Chat/pull/37123)) Removes ecdh functionality and related settings + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes Deprecated FreeSwitch integration + +- ([#36825](https://github.com/RocketChat/Rocket.Chat/pull/36825)) Removes the deprecated method `createToken` + +- ([#36821](https://github.com/RocketChat/Rocket.Chat/pull/36821)) Removes `/api/v1/banners.getnew` deprecated endpoint + +- ([#36871](https://github.com/RocketChat/Rocket.Chat/pull/36871)) Removes the `livechat:transfer` deprecated method + Removes the `livechat/room.transfer` deprecated endpoint + Creates the `livechat/visitor.department.transfer` for visitors department transfer use +- ([#36857](https://github.com/RocketChat/Rocket.Chat/pull/36857)) Removes the deprecated `/api/v1/rooms.upload` endpoint + +- ([#36907](https://github.com/RocketChat/Rocket.Chat/pull/36907)) Removes the deprecated `GET` Method from `/api/v1/apps` + +- ([#37114](https://github.com/RocketChat/Rocket.Chat/pull/37114)) Removes stdout logging functionality, related components and settings + +- ([#36896](https://github.com/RocketChat/Rocket.Chat/pull/36896)) Removes the deprecated roleName parameter from /api/v1/roles.addUserToRole and /api/v1/roles.removeUserFromRole + + Removes the ability to pass a role name to the role parameter type from /api/v1/roles.getUsersInRole + +### Minor Changes + +- ([#36570](https://github.com/RocketChat/Rocket.Chat/pull/36570)) REST endpoint `/v1/users.createToken` is not deprecated anymore. It now requires a `secret` parameter to generate a token for a user. This change is part of the effort to enhance security by ensuring that tokens are generated with an additional layer of validation. The `secret` parameter is validated against a new environment variable `CREATE_TOKENS_FOR_USERS_SECRET`. + +- ([#37224](https://github.com/RocketChat/Rocket.Chat/pull/37224)) Enhance user's deactivated state handling to correctly distinguish between pending and deactivated users. + +### Patch Changes + +- ([#37688](https://github.com/RocketChat/Rocket.Chat/pull/37688) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning for `livechat:removeMonitor` and new endpoint replacing it; `livechat/monitor.remove` + +- ([#37690](https://github.com/RocketChat/Rocket.Chat/pull/37690) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds a deprecation warning for `livechat:saveBusinessHour` and new endpoint replacing it; `livechat/business-hours.save` + +- ([#37061](https://github.com/RocketChat/Rocket.Chat/pull/37061) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning on `livechat:addMonitor` with new endpoint replacing it; `livechat/monitors.create` + +- ([#37281](https://github.com/RocketChat/Rocket.Chat/pull/37281) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning for `livechat:saveTag` and new endpoint to replace it; `livechat/tags.save` + +- ([#37775](https://github.com/RocketChat/Rocket.Chat/pull/37775) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds deprecation warning for `livechat:removeBusinessHour` and new endpoint to replace it; `livechat/business-hours.remove` + +-
    Updated dependencies [176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ac11ea05ffadeca978c794ff38d5199d9acb2c29, ddc935727e9a7275813006d9dcaa7fe866610844, d3538e7045c41f91b8c561d44e5485ff93b93745, 73d9eb2783176954f42aa2cbeda8abf1d49ac260]: + + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/ui-kit@0.39.0 +
    + +## 8.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 +
    + +## 8.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 +
    + +## 8.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.3 +
    + +## 8.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 +
    + ## 8.0.0-rc.1 ### Patch Changes diff --git a/packages/tools/CHANGELOG.md b/packages/tools/CHANGELOG.md index 9a9f4f331357b..a801c647aa601 100644 --- a/packages/tools/CHANGELOG.md +++ b/packages/tools/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/tools +## 0.2.4 + +### Patch Changes + +- ([#37852](https://github.com/RocketChat/Rocket.Chat/pull/37852) by [@lucas-a-pelegrino](https://github.com/lucas-a-pelegrino)) Adds improvements to the push notifications logic; the logic now truncates messages and titles larger than 240, and 65 characters respectively. + ## 0.2.4-rc.0 ### Patch Changes diff --git a/packages/tools/package.json b/packages/tools/package.json index db18e1e1247e4..9e6198af058ec 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/tools", - "version": "0.2.4-rc.0", + "version": "0.2.4", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-avatar/CHANGELOG.md b/packages/ui-avatar/CHANGELOG.md index e50d6d170d44a..3e1fdee25a590 100644 --- a/packages/ui-avatar/CHANGELOG.md +++ b/packages/ui-avatar/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/ui-avatar +## 22.0.0 + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29]: + + - @rocket.chat/ui-contexts@26.0.0 +
    + +## 22.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 22.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 22.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 +
    + +## 22.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 22.0.0-rc.1 ### Patch Changes diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json index 2478601c09019..d6b2431bc3039 100644 --- a/packages/ui-avatar/package.json +++ b/packages/ui-avatar/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-avatar", - "version": "22.0.0-rc.1", + "version": "22.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index e3790346f7cee..b93a92cc8787e 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,65 @@ # @rocket.chat/ui-client +## 26.0.0 + +### Major Changes + +- ([#36976](https://github.com/RocketChat/Rocket.Chat/pull/36976)) Promotes Timestamp Parser from preview state to stable + +- ([#37022](https://github.com/RocketChat/Rocket.Chat/pull/37022)) Promotes Resizable Contextualbars from preview state to stable. + +- ([#36966](https://github.com/RocketChat/Rocket.Chat/pull/36966)) Promotes quick reactions from preview state to stable + +- ([#37285](https://github.com/RocketChat/Rocket.Chat/pull/37285)) Promotes Enhanced Navigation from preview state to stable. + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29]: + + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/ui-avatar@22.0.0 +
    + +## 26.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-avatar@22.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 26.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-avatar@22.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 26.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/ui-avatar@22.0.0-rc.3 +
    + +## 26.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-avatar@22.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 26.0.0-rc.1 ### Patch Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 7ff2649a866c3..04b20459c3604 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-client", - "version": "26.0.0-rc.1", + "version": "26.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index ca477ebbc84bc..a8e7a78b8464f 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,65 @@ # @rocket.chat/ui-contexts +## 26.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +### Patch Changes + +-
    Updated dependencies [347b8f973440f3e2239f79c00c2d9b430859eef2, b802430fbfdc7fa69a976468dc6dee6f3c4de26f, 872da49986436d2efa65fc42e416b45d706fd59c, 61294eec0cf39b9e09a0c10c1122cba1e739112e, 176d5eae3fb249d7d20c3e260d9fadc1a56a2fca, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 2de4547580c472f4458568629d7bf98fd5faf342, ac11ea05ffadeca978c794ff38d5199d9acb2c29, 0c0258604632342f42fc36cabac2d6cfe0e477c4, f3f0b273ab49e9d1048ba43d52eb36005274905e, ac11ea05ffadeca978c794ff38d5199d9acb2c29, a1d65f493fdb039d34ef4f65d243a97931763f4b, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, ddc935727e9a7275813006d9dcaa7fe866610844, a5a7343a835b04812c70699be1b13e54f0e10d48, 73d9eb2783176954f42aa2cbeda8abf1d49ac260, 611e4cdfa04849416a58071646b853b95e9b817b, 476a070b0099b95e4c463ee85960c4dcfbd87120, 239f4b1171bcf448cfba345cc90c4b5cd7c21afc, dc67590d14d510b069dee074c55314c56f74bb11, dccdcc5b4a0da4814f72a020bc4eccb8ea2497d8, 5ac1863be4c6e82666989f4b569928c0805691ff, ec0f8b435dd12c218adffa8892737c7ced4debb8, f056c451c2926e849f52b95fed957945398ef5f6, cb3c5e3455606a045f95f168dae6ed32a387697c, 9917ee4c29a52db19c45061d37eeb922c394a0b4, 5b3f93c47a03b628d613a77005e92021cd6cee4b]: + + - @rocket.chat/rest-typings@8.0.0 + - @rocket.chat/ddp-client@1.0.0 + - @rocket.chat/core-typings@8.0.0 + - @rocket.chat/i18n@2.0.0 +
    + +## 26.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.5 + - @rocket.chat/rest-typings@8.0.0-rc.5 + - @rocket.chat/ddp-client@1.0.0-rc.5 +
    + +## 26.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.4 + - @rocket.chat/rest-typings@8.0.0-rc.4 + - @rocket.chat/ddp-client@1.0.0-rc.4 +
    + +## 26.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ddp-client@1.0.0-rc.3 + - @rocket.chat/core-typings@8.0.0-rc.3 + - @rocket.chat/rest-typings@8.0.0-rc.3 +
    + +## 26.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/core-typings@8.0.0-rc.2 + - @rocket.chat/rest-typings@8.0.0-rc.2 + - @rocket.chat/ddp-client@1.0.0-rc.2 +
    + ## 26.0.0-rc.1 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index 44236db910ec5..1b0a05c35d778 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "26.0.0-rc.1", + "version": "26.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-kit/CHANGELOG.md b/packages/ui-kit/CHANGELOG.md index 3814109f3df1a..f45e8955e6364 100644 --- a/packages/ui-kit/CHANGELOG.md +++ b/packages/ui-kit/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 0.39.0 + +### Minor Changes + +- ([#37726](https://github.com/RocketChat/Rocket.Chat/pull/37726)) Introduces a new variation of the `Icon` element to `ui-kit` through the new `framed` optional property. + ## 0.39.0-rc.0 ### Minor Changes diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index 55d97cbf132f0..ba2963b75efab 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-kit", - "version": "0.39.0-rc.0", + "version": "0.39.0", "description": "Interactive UI elements for Rocket.Chat Apps", "homepage": "https://rocket.chat", "bugs": { diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index 5811457284be1..5c4d0bd38ec4b 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/ui-video-conf +## 26.0.0 + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29]: + + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/ui-avatar@22.0.0 +
    + +## 26.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-avatar@22.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 26.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-avatar@22.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 26.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/ui-avatar@22.0.0-rc.3 +
    + +## 26.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-avatar@22.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 26.0.0-rc.1 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 9d79c57e70812..6531673fd9d98 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "26.0.0-rc.1", + "version": "26.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-voip/CHANGELOG.md b/packages/ui-voip/CHANGELOG.md index b4b58f1789d9a..6cdcfeaf58fcb 100644 --- a/packages/ui-voip/CHANGELOG.md +++ b/packages/ui-voip/CHANGELOG.md @@ -1,5 +1,75 @@ # @rocket.chat/ui-voip +## 16.0.0 + +### Major Changes + +- ([#37672](https://github.com/RocketChat/Rocket.Chat/pull/37672)) Removes deprecated VoIP from Omnichannel + +### Minor Changes + +- ([#37771](https://github.com/RocketChat/Rocket.Chat/pull/37771)) Introduces an info button to voice call's in-chat history message, which opens a contextual bar with more detailed information about the voice call. + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29, 0c0258604632342f42fc36cabac2d6cfe0e477c4, bd5edfc2993c93bd77f42dcd30d38b57eeb50481, 94b87d9ef40647d77fe83f3f84dca46a94515b39, 733c94b996204151f580de2dd7f3402124b70977, d3538e7045c41f91b8c561d44e5485ff93b93745, 611e4cdfa04849416a58071646b853b95e9b817b, ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04, 55dc368f3f679e93bffb9f04efe3944832cf3336]: + + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/ui-client@26.0.0 + - @rocket.chat/fuselage-ui-kit@26.0.0 + - @rocket.chat/media-signaling@0.1.1 + - @rocket.chat/ui-avatar@22.0.0 +
    + +## 16.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.5 + - @rocket.chat/ui-avatar@22.0.0-rc.5 + - @rocket.chat/ui-client@26.0.0-rc.5 + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 16.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.4 + - @rocket.chat/ui-avatar@22.0.0-rc.4 + - @rocket.chat/ui-client@26.0.0-rc.4 + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 16.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies [ae1e2faaeb6f7a086f8affde4c8a81e55e2a0e04]: + + - @rocket.chat/media-signaling@0.1.1-rc.1 + - @rocket.chat/ui-contexts@26.0.0-rc.3 + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.3 + - @rocket.chat/ui-avatar@22.0.0-rc.3 + - @rocket.chat/ui-client@26.0.0-rc.3 +
    + +## 16.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/fuselage-ui-kit@26.0.0-rc.2 + - @rocket.chat/ui-avatar@22.0.0-rc.2 + - @rocket.chat/ui-client@26.0.0-rc.2 + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 16.0.0-rc.1 ### Patch Changes diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json index 0a9678dc320f7..0d6d816d90289 100644 --- a/packages/ui-voip/package.json +++ b/packages/ui-voip/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-voip", - "version": "16.0.0-rc.1", + "version": "16.0.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-voip/src/components/CallHistoryExternalUser.tsx b/packages/ui-voip/src/components/CallHistoryExternalUser.tsx index ca8818bcc16a2..d4307026f515f 100644 --- a/packages/ui-voip/src/components/CallHistoryExternalUser.tsx +++ b/packages/ui-voip/src/components/CallHistoryExternalUser.tsx @@ -16,7 +16,7 @@ const CallHistoryExternalUser = ({ number, showIcon = true }: CallHistoryExterna )} - {number.startsWith('+') ? number : `+${number}`} + {number} ); }; diff --git a/packages/ui-voip/src/context/MediaCallContext.ts b/packages/ui-voip/src/context/MediaCallContext.ts index c063138807981..463bd335df102 100644 --- a/packages/ui-voip/src/context/MediaCallContext.ts +++ b/packages/ui-voip/src/context/MediaCallContext.ts @@ -119,6 +119,12 @@ const MediaCallContext = createContext { + return state !== 'new' && state !== 'closed'; +}; + // This hook is for internal use only. It will only be available if the user has the necessary permissions and the workspace has the necessary modules. export const useMediaCallContext = (): MediaCallContextType => { const context = useContext(MediaCallContext); diff --git a/packages/ui-voip/src/context/index.ts b/packages/ui-voip/src/context/index.ts index b0e94b134c883..8b1ca3d329105 100644 --- a/packages/ui-voip/src/context/index.ts +++ b/packages/ui-voip/src/context/index.ts @@ -1,4 +1,4 @@ export { useMediaCallContext, useMediaCallExternalContext, default as MediaCallContext, usePeerAutocomplete } from './MediaCallContext'; -export type { PeerInfo, ConnectionState } from './MediaCallContext'; -export { isFirstPeerAutocompleteOption } from './MediaCallContext'; +export type { PeerInfo, ConnectionState, MediaCallExternalState as MediaCallState } from './MediaCallContext'; +export { isFirstPeerAutocompleteOption, isCallingBlocked } from './MediaCallContext'; export { default as MockedMediaCallProvider } from './MockedMediaCallProvider'; diff --git a/packages/ui-voip/src/index.ts b/packages/ui-voip/src/index.ts index 14b61f4c3ec7c..a659830740e53 100644 --- a/packages/ui-voip/src/index.ts +++ b/packages/ui-voip/src/index.ts @@ -1,7 +1,7 @@ export { default as MediaCallProvider } from './context/MediaCallProvider'; -export { MediaCallContext, useMediaCallExternalContext as useMediaCallContext, type PeerInfo } from './context'; - +export { MediaCallContext, useMediaCallExternalContext as useMediaCallContext, isCallingBlocked } from './context'; +export type { PeerInfo, MediaCallState } from './context'; export { useMediaCallAction } from './hooks'; export { CallHistoryContextualBar } from './views'; diff --git a/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.stories.tsx b/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.stories.tsx index be86fed7e4e6e..c31caa3060d54 100644 --- a/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.stories.tsx +++ b/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.stories.tsx @@ -1,9 +1,11 @@ import { mockAppRoot } from '@rocket.chat/mock-providers'; -import type { Meta, StoryObj } from '@storybook/react'; +import type { Meta, StoryFn, StoryObj } from '@storybook/react'; import type { ReactElement } from 'react'; import type { HistoryActionCallbacks } from './CallHistoryActions'; import CallHistoryActions from './CallHistoryActions'; +import { MockedMediaCallProvider } from '../../context'; +import type { State } from '../../context/MediaCallContext'; const noop = () => undefined; @@ -36,11 +38,20 @@ const getArgs = (index: number) => { return Object.fromEntries(actionList.slice(0, index).map((action) => [action, noop])) as HistoryActionCallbacks; }; +const getDecorator = (state: State) => { + return (Story: StoryFn): ReactElement => ( + + + + ); +}; + export const Default: Story = { args: { onClose: noop, actions: getArgs(5), }, + decorators: [getDecorator('closed')], }; export const WithLessActions: Story = { @@ -48,6 +59,7 @@ export const WithLessActions: Story = { onClose: noop, actions: getArgs(3), }, + decorators: [getDecorator('closed')], }; export const WithSingleAction: Story = { @@ -55,4 +67,13 @@ export const WithSingleAction: Story = { onClose: noop, actions: getArgs(1), }, + decorators: [getDecorator('closed')], +}; + +export const WithDisabledVoiceCall: Story = { + args: { + onClose: noop, + actions: getArgs(1), + }, + decorators: [getDecorator('ongoing')], }; diff --git a/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.tsx b/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.tsx index fce4d09644634..24af64a5ceb5e 100644 --- a/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.tsx +++ b/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryActions.tsx @@ -3,6 +3,9 @@ import { ContextualbarActions, ContextualbarClose, GenericMenu } from '@rocket.c import type { TFunction } from 'i18next'; import { useTranslation } from 'react-i18next'; +import type { MediaCallState } from '../../context'; +import { isCallingBlocked, useMediaCallExternalContext } from '../../context/MediaCallContext'; + type HistoryActions = 'voiceCall' | 'videoCall' | 'jumpToMessage' | 'directMessage' | 'userInfo'; export type HistoryActionCallbacks = { @@ -30,21 +33,27 @@ const i18nDictionary: Record = { userInfo: 'User_info', } as const; -const getItems = (actions: HistoryActionCallbacks, t: TFunction) => { +const getItems = (actions: HistoryActionCallbacks, t: TFunction, state: MediaCallState) => { return (Object.entries(actions) as [HistoryActions, () => void][]) .filter(([_, callback]) => callback) - .map(([action, callback]) => ({ - id: action, - icon: iconDictionary[action], - content: t(i18nDictionary[action]), - onClick: callback, - })); + .map(([action, callback]) => { + const disabled = action === 'voiceCall' && isCallingBlocked(state); + return { + id: action, + icon: iconDictionary[action], + content: t(i18nDictionary[action]), + disabled, + onClick: callback, + tooltip: disabled ? t('Call_in_progress') : undefined, + }; + }); }; const CallHistoryActions = ({ onClose, actions }: CallHistoryActionsProps) => { const { t } = useTranslation(); - const items = getItems(actions, t); + const { state } = useMediaCallExternalContext(); + const items = getItems(actions, t, state); return ( {items.length > 0 && } diff --git a/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryContextualbar.tsx b/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryContextualbar.tsx index cc93312bbadfb..2e6f6e8af952d 100644 --- a/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryContextualbar.tsx +++ b/packages/ui-voip/src/views/CallHistoryContextualbar/CallHistoryContextualbar.tsx @@ -18,6 +18,8 @@ import type { HistoryActionCallbacks } from './CallHistoryActions'; import CallHistoryActions from './CallHistoryActions'; import { useFullStartDate } from './useFullStartDate'; import { CallHistoryExternalUser, CallHistoryInternalUser } from '../../components'; +import { useMediaCallExternalContext } from '../../context'; +import { isCallingBlocked } from '../../context/MediaCallContext'; import { getHistoryMessagePayload } from '../../ui-kit/getHistoryMessagePayload'; export type InternalCallHistoryContact = { @@ -64,6 +66,7 @@ const CallHistoryContextualBar = ({ onClose, actions, contact, data }: CallHisto const { voiceCall, directMessage } = actions; const { duration, callId, direction, startedAt } = data; + const { state } = useMediaCallExternalContext(); const date = useFullStartDate(startedAt); return ( @@ -75,7 +78,7 @@ const CallHistoryContextualBar = ({ onClose, actions, contact, data }: CallHisto - + {isInternalCallHistoryContact(contact) ? ( ) : ( @@ -117,7 +120,12 @@ const CallHistoryContextualBar = ({ onClose, actions, contact, data }: CallHisto )} {voiceCall && ( - diff --git a/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap b/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap index 56ea65eb25bb9..5e972d70323b8 100644 --- a/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap +++ b/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap @@ -97,7 +97,7 @@ exports[`renders Default without crashing 1`] = ` class="rcx-box rcx-box--full rcx-css-15qq8ie" >
    - +1234567890 + 1234567890
    diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 2bffabfb0664d..589195932f779 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/web-ui-registration +## 26.0.0 + +### Major Changes + +- ([#36829](https://github.com/RocketChat/Rocket.Chat/pull/36829)) Removes the deprecated sendConfirmationEmail method + +### Patch Changes + +-
    Updated dependencies [ac11ea05ffadeca978c794ff38d5199d9acb2c29, 9e03ed5c5ea829c62c2da2de9413a27a4696f8a3]: + + - @rocket.chat/ui-contexts@26.0.0 + - @rocket.chat/tools@0.2.4 +
    + +## 26.0.0-rc.5 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.5 +
    + +## 26.0.0-rc.4 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.4 +
    + +## 26.0.0-rc.3 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.3 +
    + +## 26.0.0-rc.2 + +### Patch Changes + +-
    Updated dependencies []: + + - @rocket.chat/ui-contexts@26.0.0-rc.2 +
    + ## 26.0.0-rc.1 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 799f7e798ac7a..4158b36176287 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": "26.0.0-rc.1", + "version": "26.0.0", "private": true, "homepage": "https://rocket.chat", "main": "./dist/index.js", @@ -61,8 +61,8 @@ }, "peerDependencies": { "@rocket.chat/layout": "*", - "@rocket.chat/tools": "0.2.4-rc.0", - "@rocket.chat/ui-contexts": "26.0.0-rc.1", + "@rocket.chat/tools": "0.2.4", + "@rocket.chat/ui-contexts": "26.0.0", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", diff --git a/yarn.lock b/yarn.lock index 87ef47de32823..aa069845f0cb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8464,7 +8464,7 @@ __metadata: "@rocket.chat/apps-engine": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/federation-sdk": "npm:0.3.5" + "@rocket.chat/federation-sdk": "npm:0.3.8" "@rocket.chat/http-router": "workspace:^" "@rocket.chat/icons": "npm:~0.46.0" "@rocket.chat/jest-presets": "workspace:~" @@ -8670,7 +8670,7 @@ __metadata: "@rocket.chat/ddp-client": "workspace:^" "@rocket.chat/emitter": "npm:^0.31.25" "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/federation-sdk": "npm:0.3.5" + "@rocket.chat/federation-sdk": "npm:0.3.8" "@rocket.chat/http-router": "workspace:^" "@rocket.chat/license": "workspace:^" "@rocket.chat/models": "workspace:^" @@ -8696,9 +8696,9 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/federation-sdk@npm:0.3.5": - version: 0.3.5 - resolution: "@rocket.chat/federation-sdk@npm:0.3.5" +"@rocket.chat/federation-sdk@npm:0.3.8": + version: 0.3.8 + resolution: "@rocket.chat/federation-sdk@npm:0.3.8" dependencies: "@datastructures-js/priority-queue": "npm:^6.3.5" "@noble/ed25519": "npm:^3.0.0" @@ -8711,7 +8711,7 @@ __metadata: zod: "npm:^3.24.1" peerDependencies: typescript: ~5.9.2 - checksum: 10/47de2265555649b375620c7a90cf84134b14f3e38d171d84276dee9196b7b303a2d8c6f693223d63ba1c464ce12c128c5f6a795c0bb42c0e5339587b2429d034 + checksum: 10/c8a3e8d7bdf68798d20d1d42c7bafd354c934e9d80b94796ef09f073585b1de501ba181b059a3c4b40b92660fd8ee04db6535610932bc64c1c2d147f3a24286c languageName: node linkType: hard @@ -8957,7 +8957,7 @@ __metadata: express: "npm:^4.21.2" hono: "npm:^4.10.7" jest: "npm:~30.2.0" - qs: "npm:^6.14.0" + qs: "npm:^6.14.1" supertest: "npm:~7.1.4" ts-jest: "npm:~29.4.5" typescript: "npm:~5.9.3" @@ -9338,7 +9338,7 @@ __metadata: "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/favicon": "workspace:^" "@rocket.chat/federation-matrix": "workspace:^" - "@rocket.chat/federation-sdk": "npm:0.3.5" + "@rocket.chat/federation-sdk": "npm:0.3.8" "@rocket.chat/fuselage": "npm:^0.70.0" "@rocket.chat/fuselage-forms": "npm:~0.1.1" "@rocket.chat/fuselage-hooks": "npm:~0.38.1" @@ -9634,7 +9634,7 @@ __metadata: proxy-from-env: "npm:^1.1.0" proxyquire: "npm:^2.1.3" psl: "npm:^1.10.0" - qs: "npm:^6.14.0" + qs: "npm:^6.14.1" query-string: "npm:^7.1.3" queue-fifo: "npm:^0.2.6" raw-loader: "npm:~4.0.2" @@ -10784,8 +10784,8 @@ __metadata: typescript: "npm:~5.9.3" peerDependencies: "@rocket.chat/layout": "*" - "@rocket.chat/tools": 0.2.4-rc.0 - "@rocket.chat/ui-contexts": 26.0.0-rc.1 + "@rocket.chat/tools": 0.2.4 + "@rocket.chat/ui-contexts": 26.0.0 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" @@ -31809,7 +31809,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.11.2, qs@npm:^6.12.3, qs@npm:^6.14.0, qs@npm:^6.9.4": +"qs@npm:^6.11.2, qs@npm:^6.12.3, qs@npm:^6.9.4": version: 6.14.0 resolution: "qs@npm:6.14.0" dependencies: @@ -31818,6 +31818,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.14.1": + version: 6.14.1 + resolution: "qs@npm:6.14.1" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10/34b5ab00a910df432d55180ef39c1d1375e550f098b5ec153b41787f1a6a6d7e5f9495593c3b112b77dbc6709d0ae18e55b82847a4c2bbbb0de1e8ccbb1794c5 + languageName: node + linkType: hard + "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3"