From 95b8c34ea8c49c0a3337a0102414215f7399c96f Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Fri, 22 Apr 2022 18:45:47 -0300 Subject: [PATCH 001/145] Bump version to 4.7.0-rc.0 --- .github/history.json | 866 + HISTORY.md | 23466 ++++++++++++++++ apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 24338 insertions(+), 6 deletions(-) create mode 100644 HISTORY.md diff --git a/.github/history.json b/.github/history.json index 406ba05c9d1f..b780b33c11ad 100644 --- a/.github/history.json +++ b/.github/history.json @@ -73259,6 +73259,872 @@ ] } ] + }, + "4.7.0-rc.0": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25286", + "title": "Chore: Add root package.json to houston files", + "userLogin": "d-gubert", + "description": "See title", + "contributors": [ + "d-gubert" + ] + }, + { + "pr": "25284", + "title": "Chore: Sync with master", + "userLogin": "d-gubert", + "contributors": [ + "sampaiodiego", + "d-gubert", + "web-flow" + ] + }, + { + "pr": "25269", + "title": "Chore: Minor dependency updates", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "25224", + "title": "Chore: Add yarn plugin to check node and yarn version", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "25280", + "title": "Chore: Remove package-lock.json from houston files", + "userLogin": "d-gubert", + "description": "Houston config in the `package.json` file still mentioned `package-lock.json`, but it doesn't exist anymore", + "contributors": [ + "d-gubert" + ] + }, + { + "pr": "25260", + "title": "[FIX] Adjust email label in Setup Wizard i18n files", + "userLogin": "guijun13", + "description": "- remove 'Company' label on onboarding email keys in certain languages", + "contributors": [ + "guijun13" + ] + }, + { + "pr": "25275", + "title": "Chore: Fix return type warnings", + "userLogin": "KevLehman", + "contributors": [ + "KevLehman" + ] + }, + { + "pr": "23870", + "title": "[NEW] Expand Apps Engine's environment variable allowed list", + "userLogin": "cuonghuunguyen", + "milestone": "4.7.0", + "contributors": [ + null, + "debdutdeb", + "web-flow", + "cuonghuunguyen", + "dougfabris" + ] + }, + { + "pr": "25273", + "title": "Regression: Fix federation Matrix bridge startup", + "userLogin": "sampaiodiego", + "milestone": "4.7.0", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25092", + "title": "[FIX] Message preview not available for queued chats", + "userLogin": "murtaza98", + "milestone": "4.7.0", + "contributors": [ + "murtaza98", + "KevLehman" + ] + }, + { + "pr": "23688", + "title": "[NEW] Alpha Matrix Federation", + "userLogin": "alansikora", + "description": "Experimental support for Matrix Federation with a Bridge\r\n\r\nhttps://user-images.githubusercontent.com/51996/164530391-e8b17ecd-a4d0-4ef8-a8b7-81230c1773d3.mp4", + "milestone": "4.7.0", + "contributors": [ + "alansikora", + "geekgonecrazy", + "MarcosSpessatto", + "rodrigok" + ] + }, + { + "pr": "25259", + "title": "Chore: Bump Fuselage packages", + "userLogin": "dougfabris", + "milestone": "4.7.0", + "contributors": [ + "dougfabris" + ] + }, + { + "pr": "25261", + "title": "[FIX] Incorrect websocket url in livechat widget", + "userLogin": "debdutdeb", + "milestone": "4.7.0", + "contributors": [ + "debdutdeb" + ] + }, + { + "pr": "25007", + "title": "[FIX] Showing Blank Message Inside Report", + "userLogin": "nishant23122000", + "description": "https://user-images.githubusercontent.com/53515714/161038085-4a86c7ae-6751-4996-9767-b1c9e0331a6c.mp4", + "contributors": [ + "nishant23122000" + ] + }, + { + "pr": "25251", + "title": "Regression: Add select message to system message and thread preview and allow select on legacy template", + "userLogin": "filipemarins", + "milestone": "4.7.0", + "contributors": [ + "filipemarins", + "ggazzo", + "web-flow", + "gabriellsh", + "dougfabris" + ] + }, + { + "pr": "25239", + "title": "[FIX] Add katex render to new message react template", + "userLogin": "filipemarins", + "milestone": "4.7.0", + "contributors": [ + "filipemarins", + "ggazzo", + "dougfabris" + ] + }, + { + "pr": "25257", + "title": "Chore: Update Livechat to the last version", + "userLogin": "tiagoevanp", + "contributors": [ + "tiagoevanp" + ] + }, + { + "pr": "24515", + "title": "[FIX] Custom sound error toast messages", + "userLogin": "Himanshu664", + "milestone": "4.7.0", + "contributors": [ + "Himanshu664", + "dougfabris" + ] + }, + { + "pr": "25211", + "title": "Regression: Avatar not loading on first direct message", + "userLogin": "filipemarins", + "description": "fix avatar not loading on a first direct message", + "milestone": "4.7.0", + "contributors": [ + "filipemarins", + "ggazzo" + ] + }, + { + "pr": "25254", + "title": "Regression: Show username and real name on the message system", + "userLogin": "filipemarins", + "contributors": [ + "filipemarins" + ] + }, + { + "pr": "25217", + "title": "[IMPROVE] Performance for some Omnichannel features", + "userLogin": "KevLehman", + "contributors": [ + "KevLehman" + ] + }, + { + "pr": "25200", + "title": "[FIX] room creation fails if app framework is disabled", + "userLogin": "debdutdeb", + "milestone": "4.7.0", + "contributors": [ + "debdutdeb" + ] + }, + { + "pr": "24565", + "title": "[IMPROVE] Add OTR Room States", + "userLogin": "yash-rajpal", + "description": "Earlier OTR room uses only 2 states, we need more states to support future features. \r\nThis adds more states for the OTR contextualBar.\r\n\r\n- Expired\r\n\"Screen\r\n\r\n- Declined\r\nScreen Shot 2022-04-20 at 13 49 28\r\n\r\n- Error\r\n\"Screen", + "milestone": "4.7.0", + "contributors": [ + "yash-rajpal", + "dougfabris" + ] + }, + { + "pr": "25170", + "title": "[FIX] Client disconnection on network loss", + "userLogin": "amolghode1981", + "description": "Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online\r\nunless agent explicitly logs off.\r\nAgent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways.\r\n1. User tries to switch the network. User experiences a glitch of disconnectivity. This can be simulated by turning the network off\r\nin the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh.\r\n2. Second reason is when computer goes in sleep mode.\r\n3. Third reason is that when asterisk is crashed/in maintenance mode/explicitly stopped.\r\n\r\nSolution:\r\nThe idea is to detect the network disconnection and start the start the attempts to reconnect.\r\nThe detection of the disconnection does not happen in case#1. The SIPUA's UserAgent transport does not\r\ncall onDisconnected when network loss of such kind happens. To tackle this problem, window's online and offline event handlers are\r\nused.\r\n\r\nThe number of retries is configurable but ideally it is to be kept at -1. Whenever disconnection happens, it should keep on trying to\r\nreconnect with increasing backoff time. This behaviour is useful when the asterisk is stopped.\r\n\r\nWhen the server is disconnected, it should be indicated on the phone button.", + "contributors": [ + "amolghode1981", + "KevLehman" + ] + }, + { + "pr": "25244", + "title": "[FIX] Read receipts show with color gray when not read yet", + "userLogin": "filipemarins", + "contributors": [ + "filipemarins", + "gabriellsh" + ] + }, + { + "pr": "25230", + "title": "[FIX] VoIP disabled/enabled sequence puts voip agent in error state", + "userLogin": "amolghode1981", + "description": "Initially it was thought that the issue occurs because of the race condition while changing the client settings vs those settings reflected on server side. So a natural solution to solve this is to wait for setting change event 'private-settings-changed'. Then if 'VoIP_Enabled' is updated and it is true, set voipEnabled to true in useVoipClient.ts (on client side)\r\n\r\nIt was realised that the race does not happen because of the database or server noticing the changes late. But because of the time taken to establish the AMI connection with Asterisk.\r\n\r\nSolution:\r\n\r\n1. Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value.\r\n2. From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance.\r\n3. in apps/meteor/client/providers/CallProvider/hooks/useVoipClient.ts add the event handler that receives this event. Change voipEnabled from constant to state. Change this state based on the 'value' that is received by the handler.", + "contributors": [ + "amolghode1981", + "KevLehman" + ] + }, + { + "pr": "25087", + "title": "[NEW] Add expire index to integration history", + "userLogin": "geekgonecrazy", + "milestone": "4.7.0", + "contributors": [ + "geekgonecrazy" + ] + }, + { + "pr": "24521", + "title": "Chore: update OTR icon", + "userLogin": "kibonusp", + "description": "I changed the shredder icon in OTR contextual bar to the stopwatch icon, recently added to the fuselage.", + "milestone": "4.7.0", + "contributors": [ + "kibonusp", + "yash-rajpal", + "web-flow", + "tassoevan" + ] + }, + { + "pr": "25237", + "title": "[FIX] Toolbox hiding under contextual bar", + "userLogin": "gabriellsh", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25231", + "title": "[IMPROVE] Added MaxNickNameLength and MaxBioLength constants", + "userLogin": "aakash-gitdev", + "contributors": [ + "aakash-gitdev", + "web-flow", + "gabriellsh" + ] + }, + { + "pr": "25220", + "title": "[FIX] Desktop notification on multi-instance environments", + "userLogin": "sampaiodiego", + "milestone": "4.6.3", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25175", + "title": "[FIX] Reply button behavior on broadcast channel", + "userLogin": "filipemarins", + "description": "Hide reply button for the user that sent the message", + "contributors": [ + "filipemarins", + "web-flow" + ] + }, + { + "pr": "25216", + "title": "[FIX] Read receipts showing before message read", + "userLogin": "filipemarins", + "contributors": [ + "filipemarins" + ] + }, + { + "pr": "25222", + "title": "[FIX] Add reaction not working in legacy messages", + "userLogin": "gabriellsh", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25223", + "title": "Chore: Add error boundary to message component", + "userLogin": "gabriellsh", + "description": "Not crash the whole application if something goes wrong in the MessageList component.\r\n\r\n![image](https://user-images.githubusercontent.com/40830821/162269915-931c5c3c-c979-4234-b74c-371f67467ce0.png)", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25130", + "title": "Chore: Update Livechat version", + "userLogin": "tiagoevanp", + "contributors": [ + "tiagoevanp" + ] + }, + { + "pr": "25073", + "title": "[FIX] AgentOverview analytics wrong departmentId parameter", + "userLogin": "paulobernardoaf", + "description": "When filtering the analytics charts by department, data would not appear because the object:\r\n```js\r\n{\r\n value: \"department-id\",\r\n label: \"department-name\"\r\n}\r\n```\r\nwas being used in the `departmentId` parameter.\r\n\r\n- Before:\r\n![image](https://user-images.githubusercontent.com/30026625/161832057-d96ffd21-a7dd-421e-bfaa-3b9f4a9127b2.png)\r\n\r\n- After:\r\n![image](https://user-images.githubusercontent.com/30026625/161831092-9ee77b51-b083-4f45-9c48-ab2e0511c4d6.png)", + "milestone": "4.7.0", + "contributors": [ + "paulobernardoaf" + ] + }, + { + "pr": "25056", + "title": "[FIX] Close room when dismiss wrap up call modal", + "userLogin": "tiagoevanp", + "milestone": "4.7.0", + "contributors": [ + "tiagoevanp" + ] + }, + { + "pr": "25208", + "title": "Regression: yarn dev triggers build dependencies", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "24714", + "title": "[FIX] Added invalid password error message", + "userLogin": "Himanshu664", + "milestone": "4.7.0", + "contributors": [ + "Himanshu664", + "dougfabris" + ] + }, + { + "pr": "25196", + "title": "Chore: Tests with Playwright (task: ROC-28, 09-channels)", + "userLogin": "tmontini", + "contributors": [ + "tmontini" + ] + }, + { + "pr": "25174", + "title": "Chore: Template to generate packages", + "userLogin": "ggazzo", + "description": "```\r\nnpx hygen package new test\r\n```", + "contributors": [ + "ggazzo", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "25193", + "title": "Regression: Fix micro services Docker build", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego", + "ggazzo", + "web-flow" + ] + }, + { + "pr": "25180", + "title": "Chore: Remove duplicated useUserRoom", + "userLogin": "dougfabris", + "milestone": "4.7.0", + "contributors": [ + "dougfabris" + ] + }, + { + "pr": "25167", + "title": "Chore: TS migration SortList", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "24933", + "title": "[FIX] Deactivating user breaks if user is the only room owner", + "userLogin": "sidmohanty11", + "description": "## Before\r\n\r\nhttps://user-images.githubusercontent.com/73601258/160000871-cfc2f2a5-2a59-4d27-8049-7754d003dd48.mp4\r\n\r\n\r\n\r\n## After\r\nhttps://user-images.githubusercontent.com/73601258/159998287-681ab475-ff33-4282-82ff-db751c59a392.mp4", + "milestone": "4.6.2", + "contributors": [ + "sidmohanty11", + "sampaiodiego" + ] + }, + { + "pr": "25181", + "title": "Regression: Fix services Docker build on CI", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25089", + "title": "[FIX] UserCard sanitization", + "userLogin": "dougfabris", + "description": "- Rewrites the component to TS\r\n- Fixes some visual issues\r\n\r\n### before\r\n![Screen Shot 2022-04-07 at 00 23 11](https://user-images.githubusercontent.com/27704687/162113925-5c9484d1-23e9-4623-8b86-3fbc71b461a1.png)\r\n\r\n### after\r\n![Screen Shot 2022-04-07 at 00 07 13](https://user-images.githubusercontent.com/27704687/162112353-afd6aac6-b27c-4470-a642-631b8080d59e.png)", + "milestone": "4.7.0", + "contributors": [ + "dougfabris" + ] + }, + { + "pr": "25085", + "title": "Chore: move definitions to packages", + "userLogin": "ggazzo", + "milestone": "3.7.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "25168", + "title": "Regression: CI playwright", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "25125", + "title": "Chore: Convert NotificationStatus to TS", + "userLogin": "jeanfbrito", + "contributors": [ + "jeanfbrito", + "ggazzo" + ] + }, + { + "pr": "25148", + "title": "[FIX] Message menu action not working on legacy messages.", + "userLogin": "gabriellsh", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25122", + "title": "Chore: Tests with Playwright (task: All works)", + "userLogin": "weslley543", + "contributors": [ + "weslley543" + ] + }, + { + "pr": "25129", + "title": "Chore: Remove old files from removed Omnichannel feature", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25128", + "title": "Chore: Convert admin custom sound to tsx", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "25126", + "title": "Chore: Migrate oauth2server to typescript", + "userLogin": "KevLehman", + "contributors": [ + "KevLehman" + ] + }, + { + "pr": "25123", + "title": "Chore: Convert LivechatAgentActivity to raw model and TS", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25124", + "title": "Chore: Remove unused Drone CI files", + "userLogin": "geekgonecrazy", + "contributors": [ + "geekgonecrazy", + "web-flow" + ] + }, + { + "pr": "25121", + "title": "Chore: Convert Mailer to TS", + "userLogin": "juliajforesti", + "contributors": [ + "juliajforesti", + "sampaiodiego" + ] + }, + { + "pr": "25107", + "title": "Regression: Fix CI monorepo build", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "25074", + "title": "Chore: Monorepo ", + "userLogin": "ggazzo", + "milestone": "3.7.0", + "contributors": [ + "sampaiodiego", + "ggazzo" + ] + }, + { + "pr": "25097", + "title": "[IMPROVE] Rename upgrade tab routes", + "userLogin": "guijun13", + "description": "Change 'upgrade tab' routes names from camelCase ('goFullyFeatured') to kebab-case ('go-fully-featured') due to URL naming consistency. Changed types, main function and test.", + "contributors": [ + "guijun13" + ] + }, + { + "pr": "25076", + "title": "Bump eslint-plugin-anti-trojan-source from 1.0.6 to 1.1.0", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow" + ] + }, + { + "pr": "24936", + "title": "[FIX] End call button disappearing when on-hold", + "userLogin": "tiagoevanp", + "contributors": [ + "tiagoevanp" + ] + }, + { + "pr": "24932", + "title": "[FIX] Use correct room property for call ended at", + "userLogin": "MartinSchoeler", + "contributors": [ + "MartinSchoeler" + ] + }, + { + "pr": "25022", + "title": "[FIX] Proxy settings being ignored", + "userLogin": "pierre-lehnen-rc", + "description": "Modify Meteor's `HTTP.call` to add back proxy support", + "milestone": "4.6.1", + "contributors": [ + "pierre-lehnen-rc", + "sampaiodiego" + ] + }, + { + "pr": "25082", + "title": "[FIX] Invitation links don't redirect to the registration form", + "userLogin": "yash-rajpal", + "milestone": "4.6.1", + "contributors": [ + "yash-rajpal" + ] + }, + { + "pr": "23971", + "title": "[NEW] Message Template React Component", + "userLogin": "ggazzo", + "description": "Complete rewrite of the messages component in react. Visual changes should be minimal as well as user impact, with no break changes (unless you've customized the blaze template).\r\n\r\n\r\n\r\n![Screen Shot 2022-04-05 at 11 14 18](https://user-images.githubusercontent.com/27704687/161774027-38dd9c7b-eeeb-45e2-b9d8-ea2a9be8486d.png)\r\nIn case you encounter any problems, or want to compare, temporarily it is possible to use the old version\r\n\r\n\"image\"", + "contributors": [ + "ggazzo", + "sampaiodiego" + ] + }, + { + "pr": "25069", + "title": "[FIX] FormData uploads not working", + "userLogin": "gabriellsh", + "milestone": "4.6.1", + "contributors": [ + "gabriellsh", + "dougfabris" + ] + }, + { + "pr": "19866", + "title": "[FIX] Video and Audio not skipping forward", + "userLogin": "MartinSchoeler", + "contributors": [ + "MartinSchoeler", + "tassoevan", + "web-flow", + "dougfabris" + ] + }, + { + "pr": "25067", + "title": "[FIX] NPS never finishing sending results", + "userLogin": "sampaiodiego", + "milestone": "4.6.1", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "24405", + "title": "[IMPROVE] Add tooltip to sidebar room menu", + "userLogin": "Himanshu664", + "milestone": "4.7.0", + "contributors": [ + "Himanshu664", + "web-flow", + "dougfabris" + ] + }, + { + "pr": "24431", + "title": "[IMPROVE] Added tooltip options for message menu", + "userLogin": "Himanshu664", + "milestone": "4.7.0", + "contributors": [ + "Himanshu664", + "dougfabris" + ] + }, + { + "pr": "24166", + "title": "[FIX] Replace encrypted text to Encrypted Message Placeholder", + "userLogin": "yash-rajpal", + "description": "### before \r\n![image](https://user-images.githubusercontent.com/27704687/150807900-154a9cdb-ee13-4333-8628-f287ab914b40.png)\r\n\r\n### after\r\n\"Screenshot", + "milestone": "4.7.0", + "contributors": [ + "yash-rajpal", + "albuquerquefabio", + "web-flow" + ] + }, + { + "pr": "24984", + "title": "[FIX] Prevent sequential messages edited icon to hide on hover", + "userLogin": "dougfabris", + "description": "### before\r\n\"Screen\r\n\r\n### after\r\n\"Screen", + "milestone": "4.7.0", + "contributors": [ + "dougfabris" + ] + }, + { + "pr": "25024", + "title": "[IMPROVE] Improve active/hover colors in account sidebar", + "userLogin": "Himanshu664", + "milestone": "4.7.0", + "contributors": [ + "Himanshu664" + ] + }, + { + "pr": "24856", + "title": "[FIX] Full error message is visible", + "userLogin": "Himanshu664", + "milestone": "4.7.0", + "contributors": [ + "Himanshu664", + "tassoevan" + ] + }, + { + "pr": "24708", + "title": "Chore: Cancel running jobs if PR is updated", + "userLogin": "debdutdeb", + "contributors": [ + "debdutdeb", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "24900", + "title": "Chore: organize test files and fix code coverage", + "userLogin": "tmontini", + "contributors": [ + null, + "tmontini", + "rodrigok" + ] + }, + { + "pr": "24464", + "title": "Chore: Missing keys in APIsDisplay", + "userLogin": "dougfabris", + "milestone": "4.7.0", + "contributors": [ + "dougfabris", + "tassoevan" + ] + }, + { + "pr": "25057", + "title": "Bump ejson from 2.2.1 to 2.2.2", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow" + ] + }, + { + "pr": "25053", + "title": "Chore: Remove Alpine image deps after using them", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25052", + "title": "Bump pino and pino-pretty", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25050", + "title": "[FIX] Upgrade Tab showing for a split second", + "userLogin": "gabriellsh", + "milestone": "4.6.1", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25055", + "title": "[FIX] UserAutoComplete not rendering UserAvatar correctly", + "userLogin": "dougfabris", + "description": "### before\r\n![Screen Shot 2022-04-04 at 16 50 21](https://user-images.githubusercontent.com/27704687/161620921-800bf66a-806d-4f83-b2e1-073c34215001.png)\r\n\r\n### after\r\n![Screen Shot 2022-04-04 at 16 49 00](https://user-images.githubusercontent.com/27704687/161620720-3e27774d-c241-46ca-b764-932a9295d709.png)", + "milestone": "4.6.1", + "contributors": [ + "dougfabris" + ] + }, + { + "pr": "25031", + "title": "Chore: TS conversion folder client", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "24991", + "title": "Bump minimist from 1.2.5 to 1.2.6 in /ee/server/services", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow" + ] + }, + { + "pr": "25002", + "title": "Bump template-file from 6.0.0 to 6.0.1", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow" + ] + }, + { + "pr": "25042", + "title": "Bump body-parser from 1.19.2 to 1.20.0 in /ee/server/services", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow" + ] + }, + { + "pr": "25043", + "title": "i18n: Language update from LingoHub 🤖 on 2022-04-04Z", + "userLogin": "lingohub[bot]", + "contributors": [ + null + ] + }, + { + "pr": "25028", + "title": "Merge master into develop & Set version to 4.7.0-develop", + "userLogin": "sampaiodiego", + "contributors": [ + "AllanPazRibeiro", + "sampaiodiego", + "web-flow" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 000000000000..f515018817b4 --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,23466 @@ + +# 4.7.0 (Under Release Candidate Process) + +## 4.7.0-rc.0 +`2022-04-22 · 4 🎉 · 7 🚀 · 33 🐛 · 47 🔍 · 34 👩‍💻👨‍💻` + +### 🎉 New features + + +- Add expire index to integration history ([#25087](https://github.com/RocketChat/Rocket.Chat/pull/25087)) + +- Alpha Matrix Federation ([#23688](https://github.com/RocketChat/Rocket.Chat/pull/23688)) + + Experimental support for Matrix Federation with a Bridge + + https://user-images.githubusercontent.com/51996/164530391-e8b17ecd-a4d0-4ef8-a8b7-81230c1773d3.mp4 + +- Expand Apps Engine's environment variable allowed list ([#23870](https://github.com/RocketChat/Rocket.Chat/pull/23870) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- Message Template React Component ([#23971](https://github.com/RocketChat/Rocket.Chat/pull/23971)) + + Complete rewrite of the messages component in react. Visual changes should be minimal as well as user impact, with no break changes (unless you've customized the blaze template). + + + + ![Screen Shot 2022-04-05 at 11 14 18](https://user-images.githubusercontent.com/27704687/161774027-38dd9c7b-eeeb-45e2-b9d8-ea2a9be8486d.png) + In case you encounter any problems, or want to compare, temporarily it is possible to use the old version + + image + +### 🚀 Improvements + + +- Add OTR Room States ([#24565](https://github.com/RocketChat/Rocket.Chat/pull/24565)) + + Earlier OTR room uses only 2 states, we need more states to support future features. + This adds more states for the OTR contextualBar. + + - Expired + Screen Shot 2022-04-20 at 13 55 52 + + - Declined + Screen Shot 2022-04-20 at 13 49 28 + + - Error + Screen Shot 2022-04-20 at 13 55 26 + +- Add tooltip to sidebar room menu ([#24405](https://github.com/RocketChat/Rocket.Chat/pull/24405) by [@Himanshu664](https://github.com/Himanshu664)) + +- Added MaxNickNameLength and MaxBioLength constants ([#25231](https://github.com/RocketChat/Rocket.Chat/pull/25231) by [@aakash-gitdev](https://github.com/aakash-gitdev)) + +- Added tooltip options for message menu ([#24431](https://github.com/RocketChat/Rocket.Chat/pull/24431) by [@Himanshu664](https://github.com/Himanshu664)) + +- Improve active/hover colors in account sidebar ([#25024](https://github.com/RocketChat/Rocket.Chat/pull/25024) by [@Himanshu664](https://github.com/Himanshu664)) + +- Performance for some Omnichannel features ([#25217](https://github.com/RocketChat/Rocket.Chat/pull/25217)) + +- Rename upgrade tab routes ([#25097](https://github.com/RocketChat/Rocket.Chat/pull/25097)) + + Change 'upgrade tab' routes names from camelCase ('goFullyFeatured') to kebab-case ('go-fully-featured') due to URL naming consistency. Changed types, main function and test. + +### 🐛 Bug fixes + + +- Add katex render to new message react template ([#25239](https://github.com/RocketChat/Rocket.Chat/pull/25239)) + +- Add reaction not working in legacy messages ([#25222](https://github.com/RocketChat/Rocket.Chat/pull/25222)) + +- Added invalid password error message ([#24714](https://github.com/RocketChat/Rocket.Chat/pull/24714) by [@Himanshu664](https://github.com/Himanshu664)) + +- Adjust email label in Setup Wizard i18n files ([#25260](https://github.com/RocketChat/Rocket.Chat/pull/25260)) + + - remove 'Company' label on onboarding email keys in certain languages + +- AgentOverview analytics wrong departmentId parameter ([#25073](https://github.com/RocketChat/Rocket.Chat/pull/25073) by [@paulobernardoaf](https://github.com/paulobernardoaf)) + + When filtering the analytics charts by department, data would not appear because the object: + ```js + { + value: "department-id", + label: "department-name" + } + ``` + was being used in the `departmentId` parameter. + + - Before: + ![image](https://user-images.githubusercontent.com/30026625/161832057-d96ffd21-a7dd-421e-bfaa-3b9f4a9127b2.png) + + - After: + ![image](https://user-images.githubusercontent.com/30026625/161831092-9ee77b51-b083-4f45-9c48-ab2e0511c4d6.png) + +- Client disconnection on network loss ([#25170](https://github.com/RocketChat/Rocket.Chat/pull/25170)) + + Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online + unless agent explicitly logs off. + Agent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways. + 1. User tries to switch the network. User experiences a glitch of disconnectivity. This can be simulated by turning the network off + in the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh. + 2. Second reason is when computer goes in sleep mode. + 3. Third reason is that when asterisk is crashed/in maintenance mode/explicitly stopped. + + Solution: + The idea is to detect the network disconnection and start the start the attempts to reconnect. + The detection of the disconnection does not happen in case#1. The SIPUA's UserAgent transport does not + call onDisconnected when network loss of such kind happens. To tackle this problem, window's online and offline event handlers are + used. + + The number of retries is configurable but ideally it is to be kept at -1. Whenever disconnection happens, it should keep on trying to + reconnect with increasing backoff time. This behaviour is useful when the asterisk is stopped. + + When the server is disconnected, it should be indicated on the phone button. + +- Close room when dismiss wrap up call modal ([#25056](https://github.com/RocketChat/Rocket.Chat/pull/25056)) + +- Custom sound error toast messages ([#24515](https://github.com/RocketChat/Rocket.Chat/pull/24515) by [@Himanshu664](https://github.com/Himanshu664)) + +- Deactivating user breaks if user is the only room owner ([#24933](https://github.com/RocketChat/Rocket.Chat/pull/24933) by [@sidmohanty11](https://github.com/sidmohanty11)) + + ## Before + + https://user-images.githubusercontent.com/73601258/160000871-cfc2f2a5-2a59-4d27-8049-7754d003dd48.mp4 + + + + ## After + https://user-images.githubusercontent.com/73601258/159998287-681ab475-ff33-4282-82ff-db751c59a392.mp4 + +- Desktop notification on multi-instance environments ([#25220](https://github.com/RocketChat/Rocket.Chat/pull/25220)) + +- End call button disappearing when on-hold ([#24936](https://github.com/RocketChat/Rocket.Chat/pull/24936)) + +- FormData uploads not working ([#25069](https://github.com/RocketChat/Rocket.Chat/pull/25069)) + +- Full error message is visible ([#24856](https://github.com/RocketChat/Rocket.Chat/pull/24856) by [@Himanshu664](https://github.com/Himanshu664)) + +- Incorrect websocket url in livechat widget ([#25261](https://github.com/RocketChat/Rocket.Chat/pull/25261)) + +- Invitation links don't redirect to the registration form ([#25082](https://github.com/RocketChat/Rocket.Chat/pull/25082)) + +- Message menu action not working on legacy messages. ([#25148](https://github.com/RocketChat/Rocket.Chat/pull/25148)) + +- Message preview not available for queued chats ([#25092](https://github.com/RocketChat/Rocket.Chat/pull/25092)) + +- NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) + +- Prevent sequential messages edited icon to hide on hover ([#24984](https://github.com/RocketChat/Rocket.Chat/pull/24984)) + + ### before + Screen Shot 2022-03-29 at 13 35 56 + + ### after + Screen Shot 2022-03-29 at 11 48 05 + +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) + + Modify Meteor's `HTTP.call` to add back proxy support + +- Read receipts show with color gray when not read yet ([#25244](https://github.com/RocketChat/Rocket.Chat/pull/25244)) + +- Read receipts showing before message read ([#25216](https://github.com/RocketChat/Rocket.Chat/pull/25216)) + +- Replace encrypted text to Encrypted Message Placeholder ([#24166](https://github.com/RocketChat/Rocket.Chat/pull/24166)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/150807900-154a9cdb-ee13-4333-8628-f287ab914b40.png) + + ### after + Screenshot 2022-01-13 at 8 57 47 PM + +- Reply button behavior on broadcast channel ([#25175](https://github.com/RocketChat/Rocket.Chat/pull/25175)) + + Hide reply button for the user that sent the message + +- room creation fails if app framework is disabled ([#25200](https://github.com/RocketChat/Rocket.Chat/pull/25200)) + +- Showing Blank Message Inside Report ([#25007](https://github.com/RocketChat/Rocket.Chat/pull/25007) by [@nishant23122000](https://github.com/nishant23122000)) + + https://user-images.githubusercontent.com/53515714/161038085-4a86c7ae-6751-4996-9767-b1c9e0331a6c.mp4 + +- Toolbox hiding under contextual bar ([#25237](https://github.com/RocketChat/Rocket.Chat/pull/25237)) + +- Upgrade Tab showing for a split second ([#25050](https://github.com/RocketChat/Rocket.Chat/pull/25050)) + +- Use correct room property for call ended at ([#24932](https://github.com/RocketChat/Rocket.Chat/pull/24932)) + +- UserAutoComplete not rendering UserAvatar correctly ([#25055](https://github.com/RocketChat/Rocket.Chat/pull/25055)) + + ### before + ![Screen Shot 2022-04-04 at 16 50 21](https://user-images.githubusercontent.com/27704687/161620921-800bf66a-806d-4f83-b2e1-073c34215001.png) + + ### after + ![Screen Shot 2022-04-04 at 16 49 00](https://user-images.githubusercontent.com/27704687/161620720-3e27774d-c241-46ca-b764-932a9295d709.png) + +- UserCard sanitization ([#25089](https://github.com/RocketChat/Rocket.Chat/pull/25089)) + + - Rewrites the component to TS + - Fixes some visual issues + + ### before + ![Screen Shot 2022-04-07 at 00 23 11](https://user-images.githubusercontent.com/27704687/162113925-5c9484d1-23e9-4623-8b86-3fbc71b461a1.png) + + ### after + ![Screen Shot 2022-04-07 at 00 07 13](https://user-images.githubusercontent.com/27704687/162112353-afd6aac6-b27c-4470-a642-631b8080d59e.png) + +- Video and Audio not skipping forward ([#19866](https://github.com/RocketChat/Rocket.Chat/pull/19866)) + +- VoIP disabled/enabled sequence puts voip agent in error state ([#25230](https://github.com/RocketChat/Rocket.Chat/pull/25230)) + + Initially it was thought that the issue occurs because of the race condition while changing the client settings vs those settings reflected on server side. So a natural solution to solve this is to wait for setting change event 'private-settings-changed'. Then if 'VoIP_Enabled' is updated and it is true, set voipEnabled to true in useVoipClient.ts (on client side) + + It was realised that the race does not happen because of the database or server noticing the changes late. But because of the time taken to establish the AMI connection with Asterisk. + + Solution: + + 1. Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value. + 2. From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance. + 3. in apps/meteor/client/providers/CallProvider/hooks/useVoipClient.ts add the event handler that receives this event. Change voipEnabled from constant to state. Change this state based on the 'value' that is received by the handler. + +
+🔍 Minor changes + + +- Bump body-parser from 1.19.2 to 1.20.0 in /ee/server/services ([#25042](https://github.com/RocketChat/Rocket.Chat/pull/25042) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump ejson from 2.2.1 to 2.2.2 ([#25057](https://github.com/RocketChat/Rocket.Chat/pull/25057) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump eslint-plugin-anti-trojan-source from 1.0.6 to 1.1.0 ([#25076](https://github.com/RocketChat/Rocket.Chat/pull/25076) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump minimist from 1.2.5 to 1.2.6 in /ee/server/services ([#24991](https://github.com/RocketChat/Rocket.Chat/pull/24991) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pino and pino-pretty ([#25052](https://github.com/RocketChat/Rocket.Chat/pull/25052)) + +- Bump template-file from 6.0.0 to 6.0.1 ([#25002](https://github.com/RocketChat/Rocket.Chat/pull/25002) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: Add error boundary to message component ([#25223](https://github.com/RocketChat/Rocket.Chat/pull/25223)) + + Not crash the whole application if something goes wrong in the MessageList component. + + ![image](https://user-images.githubusercontent.com/40830821/162269915-931c5c3c-c979-4234-b74c-371f67467ce0.png) + +- Chore: Add root package.json to houston files ([#25286](https://github.com/RocketChat/Rocket.Chat/pull/25286)) + + See title + +- Chore: Add yarn plugin to check node and yarn version ([#25224](https://github.com/RocketChat/Rocket.Chat/pull/25224)) + +- Chore: Bump Fuselage packages ([#25259](https://github.com/RocketChat/Rocket.Chat/pull/25259)) + +- Chore: Cancel running jobs if PR is updated ([#24708](https://github.com/RocketChat/Rocket.Chat/pull/24708)) + +- Chore: Convert admin custom sound to tsx ([#25128](https://github.com/RocketChat/Rocket.Chat/pull/25128)) + +- Chore: Convert LivechatAgentActivity to raw model and TS ([#25123](https://github.com/RocketChat/Rocket.Chat/pull/25123)) + +- Chore: Convert Mailer to TS ([#25121](https://github.com/RocketChat/Rocket.Chat/pull/25121)) + +- Chore: Convert NotificationStatus to TS ([#25125](https://github.com/RocketChat/Rocket.Chat/pull/25125)) + +- Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275)) + +- Chore: Migrate oauth2server to typescript ([#25126](https://github.com/RocketChat/Rocket.Chat/pull/25126)) + +- Chore: Minor dependency updates ([#25269](https://github.com/RocketChat/Rocket.Chat/pull/25269)) + +- Chore: Missing keys in APIsDisplay ([#24464](https://github.com/RocketChat/Rocket.Chat/pull/24464)) + +- Chore: Monorepo ([#25074](https://github.com/RocketChat/Rocket.Chat/pull/25074)) + +- Chore: move definitions to packages ([#25085](https://github.com/RocketChat/Rocket.Chat/pull/25085)) + +- Chore: organize test files and fix code coverage ([#24900](https://github.com/RocketChat/Rocket.Chat/pull/24900)) + +- Chore: Remove Alpine image deps after using them ([#25053](https://github.com/RocketChat/Rocket.Chat/pull/25053)) + +- Chore: Remove duplicated useUserRoom ([#25180](https://github.com/RocketChat/Rocket.Chat/pull/25180)) + +- Chore: Remove old files from removed Omnichannel feature ([#25129](https://github.com/RocketChat/Rocket.Chat/pull/25129)) + +- Chore: Remove package-lock.json from houston files ([#25280](https://github.com/RocketChat/Rocket.Chat/pull/25280)) + + Houston config in the `package.json` file still mentioned `package-lock.json`, but it doesn't exist anymore + +- Chore: Remove unused Drone CI files ([#25124](https://github.com/RocketChat/Rocket.Chat/pull/25124)) + +- Chore: Sync with master ([#25284](https://github.com/RocketChat/Rocket.Chat/pull/25284)) + +- Chore: Template to generate packages ([#25174](https://github.com/RocketChat/Rocket.Chat/pull/25174)) + + ``` + npx hygen package new test + ``` + +- Chore: Tests with Playwright (task: All works) ([#25122](https://github.com/RocketChat/Rocket.Chat/pull/25122)) + +- Chore: Tests with Playwright (task: ROC-28, 09-channels) ([#25196](https://github.com/RocketChat/Rocket.Chat/pull/25196)) + +- Chore: TS conversion folder client ([#25031](https://github.com/RocketChat/Rocket.Chat/pull/25031)) + +- Chore: TS migration SortList ([#25167](https://github.com/RocketChat/Rocket.Chat/pull/25167)) + +- Chore: Update Livechat to the last version ([#25257](https://github.com/RocketChat/Rocket.Chat/pull/25257)) + +- Chore: Update Livechat version ([#25130](https://github.com/RocketChat/Rocket.Chat/pull/25130)) + +- Chore: update OTR icon ([#24521](https://github.com/RocketChat/Rocket.Chat/pull/24521) by [@kibonusp](https://github.com/kibonusp)) + + I changed the shredder icon in OTR contextual bar to the stopwatch icon, recently added to the fuselage. + +- i18n: Language update from LingoHub 🤖 on 2022-04-04Z ([#25043](https://github.com/RocketChat/Rocket.Chat/pull/25043)) + +- Merge master into develop & Set version to 4.7.0-develop ([#25028](https://github.com/RocketChat/Rocket.Chat/pull/25028)) + +- Regression: Add select message to system message and thread preview and allow select on legacy template ([#25251](https://github.com/RocketChat/Rocket.Chat/pull/25251)) + +- Regression: Avatar not loading on first direct message ([#25211](https://github.com/RocketChat/Rocket.Chat/pull/25211)) + + fix avatar not loading on a first direct message + +- Regression: CI playwright ([#25168](https://github.com/RocketChat/Rocket.Chat/pull/25168)) + +- Regression: Fix CI monorepo build ([#25107](https://github.com/RocketChat/Rocket.Chat/pull/25107)) + +- Regression: Fix federation Matrix bridge startup ([#25273](https://github.com/RocketChat/Rocket.Chat/pull/25273)) + +- Regression: Fix micro services Docker build ([#25193](https://github.com/RocketChat/Rocket.Chat/pull/25193)) + +- Regression: Fix services Docker build on CI ([#25181](https://github.com/RocketChat/Rocket.Chat/pull/25181)) + +- Regression: Show username and real name on the message system ([#25254](https://github.com/RocketChat/Rocket.Chat/pull/25254)) + +- Regression: yarn dev triggers build dependencies ([#25208](https://github.com/RocketChat/Rocket.Chat/pull/25208)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Himanshu664](https://github.com/Himanshu664) +- [@aakash-gitdev](https://github.com/aakash-gitdev) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@kibonusp](https://github.com/kibonusp) +- [@nishant23122000](https://github.com/nishant23122000) +- [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@sidmohanty11](https://github.com/sidmohanty11) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@KevLehman](https://github.com/KevLehman) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@amolghode1981](https://github.com/amolghode1981) +- [@d-gubert](https://github.com/d-gubert) +- [@debdutdeb](https://github.com/debdutdeb) +- [@dougfabris](https://github.com/dougfabris) +- [@filipemarins](https://github.com/filipemarins) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@guijun13](https://github.com/guijun13) +- [@jeanfbrito](https://github.com/jeanfbrito) +- [@juliajforesti](https://github.com/juliajforesti) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@tmontini](https://github.com/tmontini) +- [@weslley543](https://github.com/weslley543) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.6.3 +`2022-04-19 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- Desktop notification on multi-instance environments ([#25220](https://github.com/RocketChat/Rocket.Chat/pull/25220)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.6.2 +`2022-04-14 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- Database indexes not being created ([#25101](https://github.com/RocketChat/Rocket.Chat/pull/25101)) + +- Deactivating user breaks if user is the only room owner ([#24933](https://github.com/RocketChat/Rocket.Chat/pull/24933) by [@sidmohanty11](https://github.com/sidmohanty11)) + + ## Before + + https://user-images.githubusercontent.com/73601258/160000871-cfc2f2a5-2a59-4d27-8049-7754d003dd48.mp4 + + + + ## After + https://user-images.githubusercontent.com/73601258/159998287-681ab475-ff33-4282-82ff-db751c59a392.mp4 + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@sidmohanty11](https://github.com/sidmohanty11) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.6.1 +`2022-04-07 · 6 🐛 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- FormData uploads not working ([#25069](https://github.com/RocketChat/Rocket.Chat/pull/25069)) + +- Invitation links don't redirect to the registration form ([#25082](https://github.com/RocketChat/Rocket.Chat/pull/25082)) + +- NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) + +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) + + Modify Meteor's `HTTP.call` to add back proxy support + +- Upgrade Tab showing for a split second ([#25050](https://github.com/RocketChat/Rocket.Chat/pull/25050)) + +- UserAutoComplete not rendering UserAvatar correctly ([#25055](https://github.com/RocketChat/Rocket.Chat/pull/25055)) + + ### before + ![Screen Shot 2022-04-04 at 16 50 21](https://user-images.githubusercontent.com/27704687/161620921-800bf66a-806d-4f83-b2e1-073c34215001.png) + + ### after + ![Screen Shot 2022-04-04 at 16 49 00](https://user-images.githubusercontent.com/27704687/161620720-3e27774d-c241-46ca-b764-932a9295d709.png) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.6.0 +`2022-04-01 · 2 🎉 · 7 🚀 · 57 🐛 · 62 🔍 · 34 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🎉 New features + + +- Telemetry Events ([#24781](https://github.com/RocketChat/Rocket.Chat/pull/24781) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + +- Upgrade Tab ([#24835](https://github.com/RocketChat/Rocket.Chat/pull/24835)) + + ![image](https://user-images.githubusercontent.com/27704687/160172260-c656282e-a487-4092-948d-d11c9bacb598.png) + +### 🚀 Improvements + + +- **ENTERPRISE:** Don't start presence monitor when running micro services ([#24739](https://github.com/RocketChat/Rocket.Chat/pull/24739)) + +- Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887)) + + - Total of Canned response messages sent + - Total of tags used + - Last-Chatted Agent Preferred (enabled/disabled) + - Assign new conversations to the contact manager (enabled/disabled) + - How to handle Visitor Abandonment setting + - Amount of chats placed on hold + - VoIP Enabled + - Amount of VoIP Calls + - Amount of VoIP Extensions connected + - Amount of Calls placed on hold (1x per call) + - Fixed Session Aggregation type definitions + +- New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749)) + + https://app.clickup.com/t/1z4zg4e + +- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837)) + +- Updated links in readme ([#24028](https://github.com/RocketChat/Rocket.Chat/pull/24028) by [@aswinidev](https://github.com/aswinidev)) + +- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748)) + +- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750)) + +### 🐛 Bug fixes + + +- "livechat/webrtc.call" endpoint not working ([#24804](https://github.com/RocketChat/Rocket.Chat/pull/24804)) + +- "Match error" when converting a team to a channel ([#24629](https://github.com/RocketChat/Rocket.Chat/pull/24629)) + + - Fix "Match error" when trying to convert a channel to a team; + +- **ENTERPRISE:** Auto reload feature of ddp-streamer micro service ([#24793](https://github.com/RocketChat/Rocket.Chat/pull/24793)) + +- **ENTERPRISE:** DDP streamer not sending data to all clients ([#24738](https://github.com/RocketChat/Rocket.Chat/pull/24738)) + +- **ENTERPRISE:** Notifications not being sent by ddp-streamer ([#24831](https://github.com/RocketChat/Rocket.Chat/pull/24831)) + +- **ENTERPRISE:** Presence micro service logic ([#24724](https://github.com/RocketChat/Rocket.Chat/pull/24724)) + +- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) + + - Improve the CallProvider code; + - Adjust the text case of the VoIP component on the FooterSidebar; + - Fix the bad behavior with the changes in queue's name. + +- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) + +- API Error preventing adding an email to users without one (like bot/app users) ([#24709](https://github.com/RocketChat/Rocket.Chat/pull/24709)) + +- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760)) + +- Apple OAuth ([#24879](https://github.com/RocketChat/Rocket.Chat/pull/24879)) + +- auto-join team channels not honoring user preferences ([#24779](https://github.com/RocketChat/Rocket.Chat/pull/24779) by [@ostjen](https://github.com/ostjen)) + +- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) + +- Broken multiple OAuth integrations ([#24705](https://github.com/RocketChat/Rocket.Chat/pull/24705)) + +- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677)) + +- Critical: Incorrect visitor getting assigned to a chat from apps ([#24805](https://github.com/RocketChat/Rocket.Chat/pull/24805)) + +- Custom script not being fired ([#24901](https://github.com/RocketChat/Rocket.Chat/pull/24901)) + +- Date Message Export Filter Fix ([#24542](https://github.com/RocketChat/Rocket.Chat/pull/24542) by [@eduardofcabrera](https://github.com/eduardofcabrera)) + + Fix message export filter to get all messages between "from date" and "to date", including "to date". + +- DDP Rate Limiter Translation key ([#24898](https://github.com/RocketChat/Rocket.Chat/pull/24898)) + + Before: + image + + + Now: + image + +- DDP streamer errors ([#24710](https://github.com/RocketChat/Rocket.Chat/pull/24710)) + +- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864)) + +- Duplicated 'name' log key ([#24590](https://github.com/RocketChat/Rocket.Chat/pull/24590)) + +- Duplicated "jump to message" button on starred messages ([#24867](https://github.com/RocketChat/Rocket.Chat/pull/24867) by [@Himanshu664](https://github.com/Himanshu664)) + +- External search providers not working ([#24860](https://github.com/RocketChat/Rocket.Chat/pull/24860) by [@tkurz](https://github.com/tkurz)) + +- German translation for Monitore ([#24785](https://github.com/RocketChat/Rocket.Chat/pull/24785) by [@JMoVS](https://github.com/JMoVS)) + +- Handle Other Formats inside Upload Avatar ([#24226](https://github.com/RocketChat/Rocket.Chat/pull/24226) by [@nishant23122000](https://github.com/nishant23122000)) + + After resolving issue #24213 : + + + https://user-images.githubusercontent.com/53515714/150325012-91413025-786e-4ce0-ae75-629f6b05b024.mp4 + +- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994)) + + Remove infinity loop inside useVoipClient hook. + + #closes #24970 + +- Ignore customClass on messages ([#24845](https://github.com/RocketChat/Rocket.Chat/pull/24845)) + +- LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320)) + + - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); + - Display the avatar image preview (orientation) according to the `FileUpload_RotateImages` setting. + +- Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882)) + +- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674)) + + - Fix missing sender's username on messages imported from Slack. + +- Nextcloud OAuth for incomplete token URL ([#24476](https://github.com/RocketChat/Rocket.Chat/pull/24476)) + +- no id of room closer in livechat-close message ([#24683](https://github.com/RocketChat/Rocket.Chat/pull/24683)) + +- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623)) + + A race condition on `useRoomIcon` -- delayed merge of rooms and subscriptions -- was causing a UI crash whenever someone tried to open a DM from the user card component. + +- Prevent call button toggle when user is on call ([#24758](https://github.com/RocketChat/Rocket.Chat/pull/24758)) + +- Prune Message issue ([#24424](https://github.com/RocketChat/Rocket.Chat/pull/24424) by [@nishant23122000](https://github.com/nishant23122000)) + +- Push privacy config to not show username not being respected ([#24606](https://github.com/RocketChat/Rocket.Chat/pull/24606)) + +- Register with Secret URL ([#24921](https://github.com/RocketChat/Rocket.Chat/pull/24921)) + +- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + + Removed the logic for calling the `rooms.adminRooms` endPoint from the `RoomsTable` Component and moved it to its parent component `RoomsPage`. + This allows to call the endPoint `rooms.adminRooms` from `EditRoomContextBar` Component which is also has `RoomPage` Component as its parent. + + Also added a succes toast message after the successful deletion of room. + +- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812)) + +- Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897)) + + - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); + - Fix the "Hide System Messages" option for the "Room archived" and "Room unarchived" system messages; + +- room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) + + When the room object is searched for the first time, it does not exist on the front object yet (subscription), adding a fallback search for room list will guarantee to search the room details. + + before: + https://user-images.githubusercontent.com/9275105/160223241-d2319f3e-82c5-47d6-867f-695ab2361a17.mp4 + + after: + https://user-images.githubusercontent.com/9275105/160223244-84d0d2a1-3d95-464d-8b8a-e264b0d4d690.mp4 + +- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696)) + + - Fix rooms' message counter not being incremented on message import. + +- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930)) + +- Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052)) + + - Throw an error when trying to delete a role (User or Subscription role) that are still being used; + - Fix "Invalid Role" error for custom roles in Role Editing sidebar; + - Fix "Users in Role" screen for custom roles. + +- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) + +- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680)) + +- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829)) + +- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743)) + + - Do not send system messages when adding or removing a new or existing _group_ from a team. + +- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737)) + +- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661)) + +- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789)) + +- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607)) + +- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657)) + +- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792)) + +- Wrong business hour behavior ([#24896](https://github.com/RocketChat/Rocket.Chat/pull/24896)) + +- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799)) + +
+🔍 Minor changes + + +- Bump @rocket.chat/emitter from 0.31.4 to 0.31.9 in /ee/server/services ([#25021](https://github.com/RocketChat/Rocket.Chat/pull/25021) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @rocket.chat/message-parser from 0.31.4 to 0.31.9 in /ee/server/services ([#25019](https://github.com/RocketChat/Rocket.Chat/pull/25019) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @rocket.chat/string-helpers from 0.31.4 to 0.31.9 in /ee/server/services ([#25018](https://github.com/RocketChat/Rocket.Chat/pull/25018) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @rocket.chat/ui-kit from 0.31.4 to 0.31.9 in /ee/server/services ([#25020](https://github.com/RocketChat/Rocket.Chat/pull/25020) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/clipboard from 2.0.1 to 2.0.7 ([#24832](https://github.com/RocketChat/Rocket.Chat/pull/24832) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/mailparser from 3.0.2 to 3.4.0 ([#24833](https://github.com/RocketChat/Rocket.Chat/pull/24833) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/nodemailer from 6.4.2 to 6.4.4 ([#24822](https://github.com/RocketChat/Rocket.Chat/pull/24822) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/ws from 8.2.3 to 8.5.2 in /ee/server/services ([#24666](https://github.com/RocketChat/Rocket.Chat/pull/24666) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/ws from 8.5.2 to 8.5.3 in /ee/server/services ([#24820](https://github.com/RocketChat/Rocket.Chat/pull/24820) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump actions/checkout from 2 to 3 ([#24668](https://github.com/RocketChat/Rocket.Chat/pull/24668) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump actions/setup-node from 2 to 3 ([#24642](https://github.com/RocketChat/Rocket.Chat/pull/24642) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump body-parser from 1.19.0 to 1.19.2 ([#24821](https://github.com/RocketChat/Rocket.Chat/pull/24821) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump is-svg from 4.3.1 to 4.3.2 ([#24801](https://github.com/RocketChat/Rocket.Chat/pull/24801) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump jschardet from 1.6.0 to 3.0.0 ([#23121](https://github.com/RocketChat/Rocket.Chat/pull/23121) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pino from 7.8.0 to 7.8.1 in /ee/server/services ([#24783](https://github.com/RocketChat/Rocket.Chat/pull/24783) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pino from 7.8.1 to 7.9.1 in /ee/server/services ([#24869](https://github.com/RocketChat/Rocket.Chat/pull/24869) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pino-pretty from 7.5.1 to 7.5.2 in /ee/server/services ([#24689](https://github.com/RocketChat/Rocket.Chat/pull/24689) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pino-pretty from 7.5.2 to 7.5.3 in /ee/server/services ([#24698](https://github.com/RocketChat/Rocket.Chat/pull/24698) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pino-pretty from 7.5.3 to 7.5.4 in /ee/server/services ([#24870](https://github.com/RocketChat/Rocket.Chat/pull/24870) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump prometheus-gc-stats from 0.6.2 to 0.6.3 ([#24803](https://github.com/RocketChat/Rocket.Chat/pull/24803) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump ts-node from 10.5.0 to 10.6.0 in /ee/server/services ([#24667](https://github.com/RocketChat/Rocket.Chat/pull/24667) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump ts-node from 10.6.0 to 10.7.0 in /ee/server/services ([#24716](https://github.com/RocketChat/Rocket.Chat/pull/24716) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump url-parse from 1.5.7 to 1.5.10 ([#24640](https://github.com/RocketChat/Rocket.Chat/pull/24640) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: Add E2E tests for livechat/room.close ([#24729](https://github.com/RocketChat/Rocket.Chat/pull/24729) by [@Muramatsu2602](https://github.com/Muramatsu2602)) + + * Create a new test suite file under tests/end-to-end/api/livechat + * Create tests for the following endpoint: + + ivechat/room.close + +- Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@Muramatsu2602](https://github.com/Muramatsu2602)) + + - Create a new test suite file under tests/end-to-end/api/livechat + - Create tests for the following endpoints: + + livechat/visitor (create visitor, update visitor, add custom fields to visitors) + +- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925)) + + On the [mobile client](https://github.com/RocketChat/Rocket.Chat.ReactNative), we made an effort to collect more `REST API` definitions that are missing on the server side during our migration to TypeScript. Since we're both migrating to TypeScript, we thought it would be a good idea to share those so you guys can benefit from our initiative. + +- Chore: added Server Instances endpoint types ([#24507](https://github.com/RocketChat/Rocket.Chat/pull/24507)) + + Created typing for endpoint definitions on `instances.ts`. + +- Chore: added settings endpoint types ([#24506](https://github.com/RocketChat/Rocket.Chat/pull/24506)) + + Created typing for endpoint definitions on `settings.ts`. + +- Chore: APIClass types ([#24747](https://github.com/RocketChat/Rocket.Chat/pull/24747)) + + This pull request creates a new `restivus` module (.d.ts) for the `api.js` file. + +- Chore: Bump Fuselage packages ([#25015](https://github.com/RocketChat/Rocket.Chat/pull/25015)) + + It uses the last stable version of Fuselage packages. + +- Chore: Convert server functions from javascript to typescript ([#24384](https://github.com/RocketChat/Rocket.Chat/pull/24384)) + + This pull request will be used to rewrite some functions on the Chat Engine to Typescript, in order to increase security and specify variable types on the code. + +- Chore: converted more hooks to typescript ([#24628](https://github.com/RocketChat/Rocket.Chat/pull/24628)) + + Converted some functions on `client/hooks/` from JavaScript to Typescript. + +- Chore: Fix Cypress tests ([#24544](https://github.com/RocketChat/Rocket.Chat/pull/24544)) + +- Chore: Fix grammatical errors in Code of Conduct ([#24759](https://github.com/RocketChat/Rocket.Chat/pull/24759) by [@aadishJ01](https://github.com/aadishJ01)) + +- Chore: fix grammatical errors in Features ([#24771](https://github.com/RocketChat/Rocket.Chat/pull/24771) by [@aadishJ01](https://github.com/aadishJ01)) + +- Chore: Fix MongoDB versions on release notes ([#24877](https://github.com/RocketChat/Rocket.Chat/pull/24877)) + +- Chore: Get Settings Statistics ([#24397](https://github.com/RocketChat/Rocket.Chat/pull/24397)) + +- Chore: Improve logger to allow log of `unknown` values ([#24726](https://github.com/RocketChat/Rocket.Chat/pull/24726)) + +- Chore: Improvements on role syncing (ldap, oauth and saml) ([#23824](https://github.com/RocketChat/Rocket.Chat/pull/23824)) + +- Chore: Micro services fixes and cleanup ([#24753](https://github.com/RocketChat/Rocket.Chat/pull/24753)) + +- Chore: Remove old scripts ([#24911](https://github.com/RocketChat/Rocket.Chat/pull/24911)) + +- Chore: Skip local services changes when shutting down duplicated services ([#24810](https://github.com/RocketChat/Rocket.Chat/pull/24810)) + +- Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969)) + + - Stories from `ee/` included; + - Differentiate root story kinds; + - Mocking of `ServerContext` via Storybook parameters. + +- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) + +- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990)) + +- Chore(deps-dev): Bump @types/mock-require from 2.0.0 to 2.0.1 ([#24574](https://github.com/RocketChat/Rocket.Chat/pull/24574) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- i18n: Language update from LingoHub 🤖 on 2022-02-28Z ([#24644](https://github.com/RocketChat/Rocket.Chat/pull/24644)) + +- i18n: Language update from LingoHub 🤖 on 2022-03-07Z ([#24717](https://github.com/RocketChat/Rocket.Chat/pull/24717)) + +- i18n: Language update from LingoHub 🤖 on 2022-03-14Z ([#24823](https://github.com/RocketChat/Rocket.Chat/pull/24823)) + +- i18n: Language update from LingoHub 🤖 on 2022-03-21Z ([#24895](https://github.com/RocketChat/Rocket.Chat/pull/24895)) + +- i18n: Language update from LingoHub 🤖 on 2022-03-28Z ([#24971](https://github.com/RocketChat/Rocket.Chat/pull/24971)) + +- Merge master into develop & Set version to 4.6.0-develop ([#24653](https://github.com/RocketChat/Rocket.Chat/pull/24653)) + +- Regression: Add createdOTR index ([#25017](https://github.com/RocketChat/Rocket.Chat/pull/25017)) + +- Regression: Call doesn't stop ringing after agent unregistration ([#24908](https://github.com/RocketChat/Rocket.Chat/pull/24908)) + +- Regression: Custom roles displaying ID instead of name on some admin screens ([#24999](https://github.com/RocketChat/Rocket.Chat/pull/24999)) + + ![image](https://user-images.githubusercontent.com/55164754/160981416-555bcaa1-c075-4260-937c-64523472da43.png) + ![image](https://user-images.githubusercontent.com/55164754/160981452-6eae4e74-8425-4073-8256-472aba72b9db.png) + +- Regression: Error is raised when there's no Asterisk queue available yet ([#24980](https://github.com/RocketChat/Rocket.Chat/pull/24980)) + +- Regression: Fix account service login expiration ([#24920](https://github.com/RocketChat/Rocket.Chat/pull/24920)) + +- Regression: Fix ParentRoomWithEndpointData in loop ([#24809](https://github.com/RocketChat/Rocket.Chat/pull/24809)) + +- Regression: Fix unexpected errors breaking ddp-streamer ([#24948](https://github.com/RocketChat/Rocket.Chat/pull/24948)) + +- Regression: Improve Sidenav open/close handling and fixed codeql configs and E2E tests ([#24756](https://github.com/RocketChat/Rocket.Chat/pull/24756)) + +- Regression: Register services right away ([#24800](https://github.com/RocketChat/Rocket.Chat/pull/24800)) + +- Regression: Role Sync not always working ([#24850](https://github.com/RocketChat/Rocket.Chat/pull/24850)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@Himanshu664](https://github.com/Himanshu664) +- [@JMoVS](https://github.com/JMoVS) +- [@Muramatsu2602](https://github.com/Muramatsu2602) +- [@aadishJ01](https://github.com/aadishJ01) +- [@aswinidev](https://github.com/aswinidev) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@eduardofcabrera](https://github.com/eduardofcabrera) +- [@nishant23122000](https://github.com/nishant23122000) +- [@ostjen](https://github.com/ostjen) +- [@tkurz](https://github.com/tkurz) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@amolghode1981](https://github.com/amolghode1981) +- [@cauefcr](https://github.com/cauefcr) +- [@debdutdeb](https://github.com/debdutdeb) +- [@dougfabris](https://github.com/dougfabris) +- [@felipe-rod123](https://github.com/felipe-rod123) +- [@filipemarins](https://github.com/filipemarins) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@gerzonc](https://github.com/gerzonc) +- [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.5.6 +`2022-04-07 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) + +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) + + Modify Meteor's `HTTP.call` to add back proxy support + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.5.5 +`2022-03-30 · 2 🐛 · 2 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994)) + + Remove infinity loop inside useVoipClient hook. + + #closes #24970 + +- Multiple issues starting a new DM ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) + + When the room object is searched for the first time, it does not exist on the front object yet (subscription), adding a fallback search for room list will guarantee to search the room details. + + before: + https://user-images.githubusercontent.com/9275105/160223241-d2319f3e-82c5-47d6-867f-695ab2361a17.mp4 + + after: + https://user-images.githubusercontent.com/9275105/160223244-84d0d2a1-3d95-464d-8b8a-e264b0d4d690.mp4 + +
+🔍 Minor changes + + +- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990)) + +- Release 4.5.5 ([#24998](https://github.com/RocketChat/Rocket.Chat/pull/24998)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@filipemarins](https://github.com/filipemarins) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 4.5.4 +`2022-03-24 · 1 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930)) + +
+🔍 Minor changes + + +- Release 4.5.4 ([#24938](https://github.com/RocketChat/Rocket.Chat/pull/24938)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +# 4.5.3 +`2022-03-21 · 2 🚀 · 8 🐛 · 1 🔍 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🚀 Improvements + + +- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837)) + +- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748)) + +### 🐛 Bug fixes + + +- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) + + - Improve the CallProvider code; + - Adjust the text case of the VoIP component on the FooterSidebar; + - Fix the bad behavior with the changes in queue's name. + +- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) + +- Custom script not being fired ([#24901](https://github.com/RocketChat/Rocket.Chat/pull/24901)) + +- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864)) + +- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) + +- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829)) + +- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789)) + +- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799)) + +
+🔍 Minor changes + + +- Chore: Fix MongoDB versions on release notes ([#24877](https://github.com/RocketChat/Rocket.Chat/pull/24877)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@amolghode1981](https://github.com/amolghode1981) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 4.5.2 +`2022-03-12 · 1 🚀 · 7 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🚀 Improvements + + +- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750)) + +### 🐛 Bug fixes + + +- "livechat/webrtc.call" endpoint not working ([#24804](https://github.com/RocketChat/Rocket.Chat/pull/24804)) + +- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) + +- Broken multiple OAuth integrations ([#24705](https://github.com/RocketChat/Rocket.Chat/pull/24705)) + +- Critical: Incorrect visitor getting assigned to a chat from apps ([#24805](https://github.com/RocketChat/Rocket.Chat/pull/24805)) + +- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623)) + + A race condition on `useRoomIcon` -- delayed merge of rooms and subscriptions -- was causing a UI crash whenever someone tried to open a DM from the user card component. + +- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812)) + +- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792)) + +
+🔍 Minor changes + + +- Regression: Fix ParentRoomWithEndpointData in loop ([#24809](https://github.com/RocketChat/Rocket.Chat/pull/24809)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@debdutdeb](https://github.com/debdutdeb) +- [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@murtaza98](https://github.com/murtaza98) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 4.5.1 +`2022-03-09 · 13 🐛 · 2 🔍 · 12 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🐛 Bug fixes + + +- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760)) + +- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677)) + +- Duplicated 'name' log key ([#24590](https://github.com/RocketChat/Rocket.Chat/pull/24590)) + +- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674)) + + - Fix missing sender's username on messages imported from Slack. + +- no id of room closer in livechat-close message ([#24683](https://github.com/RocketChat/Rocket.Chat/pull/24683)) + +- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + + Removed the logic for calling the `rooms.adminRooms` endPoint from the `RoomsTable` Component and moved it to its parent component `RoomsPage`. + This allows to call the endPoint `rooms.adminRooms` from `EditRoomContextBar` Component which is also has `RoomPage` Component as its parent. + + Also added a succes toast message after the successful deletion of room. + +- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696)) + + - Fix rooms' message counter not being incremented on message import. + +- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680)) + +- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743)) + + - Do not send system messages when adding or removing a new or existing _group_ from a team. + +- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737)) + +- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661)) + +- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607)) + +- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657)) + +
+🔍 Minor changes + + +- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) + +- Release 4.5.1 ([#24782](https://github.com/RocketChat/Rocket.Chat/pull/24782) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@amolghode1981](https://github.com/amolghode1981) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 4.5.0 +`2022-02-28 · 3 🎉 · 15 🚀 · 19 🐛 · 72 🔍 · 30 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` + +### 🎉 New features + + +- E2E password generator ([#24114](https://github.com/RocketChat/Rocket.Chat/pull/24114) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + +- Marketplace sort filter ([#24567](https://github.com/RocketChat/Rocket.Chat/pull/24567)) + + Implemented a sort filter for the marketplace screen. This component sorts the marketplace apps list in 4 ways, alphabetical order(A-Z), inverse alphabetical order(Z-A), most recently updated(MRU), and least recent updated(LRU). Besides that, I've generalized some components and types to increase code reusability, renamed some helpers as well as deleted some useless ones, and inserted the necessary new translations on the English i18n dictionary. + Demo gif: + ![Marketplace sort filter](https://user-images.githubusercontent.com/43561537/155033709-e07a6306-a85a-4f7f-9624-b53ba5dd7fa9.gif) + +- VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102)) + + - Created VoipService to manage VoIP connections and PBX connection + - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) + - Created Basic interfaces to support new services and new model + - Created Endpoints for management interfaces + - Implemented asterisk connector on VoIP service + - Created UI components to show calls incoming and to allow answering/rejecting calls + - Added new settings to control call server/management server connection values + - Added endpoints to associate Omnichannel Agents with PBX Extensions + - Added support for event listening on server side, to get metadata about calls being received/ongoing + - Created new pages to update settings & to see user-extension association + - Created new page to see ongoing calls (and past calls) + - Added support for remote hangup/hold on calls + - Implemented call metrics calculation (hold time, waiting time, talk time) + - Show a notificaiton when call is received + +### 🚀 Improvements + + +- **ENTERPRISE:** Improve how micro services are loaded ([#24388](https://github.com/RocketChat/Rocket.Chat/pull/24388)) + +- Add return button in chats opened from the list of current chats ([#24458](https://github.com/RocketChat/Rocket.Chat/pull/24458) by [@LucasFASouza](https://github.com/LucasFASouza)) + + The new return button for Omnichannel chats came out with release 3.15 but the feature was only available for chats that were opened from Omnichannel Contact Center. + Now, the same UI/UX is supported for chats opened from Current Chats list. + + ![image](https://user-images.githubusercontent.com/32396925/153283190-bd5c9748-c36b-4874-a704-6043afc7e3a1.png) + + The chat now opens in the Omnichannel settings and has the return button so the user can go back to the Current Chats list. + + ![image](https://user-images.githubusercontent.com/32396925/153285591-fad8e4a0-d2ea-4a02-8b2a-15e383b3c876.png) + +- Add tooltips on action buttons of Canned Response message composer ([#24483](https://github.com/RocketChat/Rocket.Chat/pull/24483) by [@LucasFASouza](https://github.com/LucasFASouza)) + + The tooltips were missing on the action buttons of CR message composer. + + ![image](https://user-images.githubusercontent.com/32396925/153620327-91107245-4b47-4d39-a99a-6da6d1cf5734.png) + + Users can now feel more encouraged to use these actions knowing what they are supposed to do. + +- Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@ostjen](https://github.com/ostjen)) + + - Add user to room on "Click to Join!" button press; + - Display the "Join" button in discussions inside channels (keeping the behavior consistent with discussions inside groups). + +- Added a new "All" tab which shows all integrations in Integrations ([#24109](https://github.com/RocketChat/Rocket.Chat/pull/24109) by [@aswinidev](https://github.com/aswinidev)) + +- ChatBox Text to File Description ([#24451](https://github.com/RocketChat/Rocket.Chat/pull/24451) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + The text content from chatbox goes to the file description when drag and drop a file. + +- Close modal on esc and outside click ([#24275](https://github.com/RocketChat/Rocket.Chat/pull/24275)) + + This is a QUICK change in order to close modals pressing Esc button and clicking outside of it **intentionally**. + +- CloudLoginModal visual consistency ([#24334](https://github.com/RocketChat/Rocket.Chat/pull/24334)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/151585064-dc6a1e29-9903-4241-8fbd-dfbe6c55fbef.png) + + ### after + ![Screen Shot 2022-01-28 at 13 32 02](https://user-images.githubusercontent.com/27704687/151585101-75b98502-9aae-4198-bc3e-4956750e5d8b.png) + +- Convert tag edit with department data to tsx ([#24369](https://github.com/RocketChat/Rocket.Chat/pull/24369) by [@LucasFASouza](https://github.com/LucasFASouza)) + +- Descriptive tooltip for Encrypted Key on Room Header ([#24121](https://github.com/RocketChat/Rocket.Chat/pull/24121)) + +- OTR system messages ([#24382](https://github.com/RocketChat/Rocket.Chat/pull/24382)) + + OTR system messages to indicate key refresh and joining chat to users. + +- Purchase Type Filter for marketplace apps and Categories filter anchor refactoring ([#24454](https://github.com/RocketChat/Rocket.Chat/pull/24454)) + + Implemented a filter by purchase type(free or paid) component for the apps screen of the marketplace. Besides that, new entries on the dictionary, fixed some parts of the App type (purchaseType was typed as unknown and price as string), and created some helpers to work alongside the filter. Will be refactoring the categories filter anchor and then will open this PR for reviews. + + Demo gif: + ![purchaseTypeFIlter](https://user-images.githubusercontent.com/43561537/153101228-7b7ebdc3-2d34-420f-aa9d-f7cbc8d4b53f.gif) + + Refactored the categories filter anchor from a plain fuselage select to a select button with dynamic colors. + Demo gif: + ![New categories filter anchor(PR)](https://user-images.githubusercontent.com/43561537/153422427-28012b7d-e0ec-45f4-861d-c9368c57ad04.gif) + +- Replace AutoComplete in UserAutoComplete & UserAutoCompleteMultiple components ([#24529](https://github.com/RocketChat/Rocket.Chat/pull/24529)) + + This PR replaces a deprecated fuselage's component `AutoComplete` in favor of `Select` and `MultiSelect` which fixes some of UX/UI issues in selecting users + + ### before + ![Screen Shot 2022-02-19 at 13 33 28](https://user-images.githubusercontent.com/27704687/154809737-8181a06c-4f20-48ea-90f7-01e828b9a452.png) + + ### after + ![Screen Shot 2022-02-19 at 13 30 58](https://user-images.githubusercontent.com/27704687/154809653-a8ec9a80-c0dd-4a25-9c00-0f96147d79e9.png) + +- Skip encryption for slash commands in E2E rooms ([#24475](https://github.com/RocketChat/Rocket.Chat/pull/24475)) + + Currently Slash Commands don't work in an E2EE room, as we encrypt the message before slash command is detected by the server, So removed encryption for slash commands in e2e rooms. + +- Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@ostjen](https://github.com/ostjen)) + + - Delete some keys that aren't being used (eg: User_left_female). + - Add new Teams' system messages: + - `added-user-to-team`: **added** @\user to this Team; + - `removed-user-from-team`: **removed** @\user from this Team; + - `user-converted-to-team`: **converted** #\room to a Team; + - `user-converted-to-channel`: **converted** #\room to a Channel; + - `user-removed-room-from-team`: **removed** @\user from this Team; + - `user-deleted-room-from-team`: **deleted** #\room from this Team; + - `user-added-room-to-team`: **deleted** #\room to this Team; + - Add the corresponding options to hide each new system message and the missing `ujt` and `ult` hide options. + +### 🐛 Bug fixes + + +- 2FA via email when logging in using OAuth ([#24572](https://github.com/RocketChat/Rocket.Chat/pull/24572)) + +- Add ?close to OAuth callback url ([#24381](https://github.com/RocketChat/Rocket.Chat/pull/24381)) + +- GDPR action to forget visitor data on request ([#24441](https://github.com/RocketChat/Rocket.Chat/pull/24441)) + +- Implement client errors on ddp-streamer ([#24310](https://github.com/RocketChat/Rocket.Chat/pull/24310)) + +- Inconsistent validation of user's access to rooms ([#24037](https://github.com/RocketChat/Rocket.Chat/pull/24037) by [@ostjen](https://github.com/ostjen)) + +- Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253)) + + * Fix users selecting by fixing their _id + * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone + * Remove `disabled={usersCount === 0}` on user Tab + +- OAuth mismatch redirect_uri error ([#24450](https://github.com/RocketChat/Rocket.Chat/pull/24450)) + +- Oembed request not respecting payload limit ([#24418](https://github.com/RocketChat/Rocket.Chat/pull/24418)) + +- Omnichannel managers can't join chats in progress ([#24553](https://github.com/RocketChat/Rocket.Chat/pull/24553)) + +- Outgoing webhook without scripts not saving messages ([#24401](https://github.com/RocketChat/Rocket.Chat/pull/24401)) + +- Prevent Apps Bridge to remove visitor status from room ([#24305](https://github.com/RocketChat/Rocket.Chat/pull/24305)) + +- Read receipts showing first messages of the room as read even if not read by everyone ([#24508](https://github.com/RocketChat/Rocket.Chat/pull/24508)) + +- respect `Accounts_Registration_Users_Default_Roles` setting ([#24173](https://github.com/RocketChat/Rocket.Chat/pull/24173)) + + - Fix `user` role being added as default regardless of the `Accounts_Registration_Users_Default_Roles` setting. + +- Room context tabs not working in Omnichannel current chats page ([#24559](https://github.com/RocketChat/Rocket.Chat/pull/24559)) + +- Skip admin info in setup wizard for servers with admin registered ([#24485](https://github.com/RocketChat/Rocket.Chat/pull/24485)) + +- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407)) + +- Slash commands previews not working ([#24387](https://github.com/RocketChat/Rocket.Chat/pull/24387) by [@ostjen](https://github.com/ostjen)) + +- Startup errors creating indexes ([#24409](https://github.com/RocketChat/Rocket.Chat/pull/24409)) + + Fix `bio` and `prid` startup index creation errors. + +- typo on register server tooltip of setup wizard ([#24466](https://github.com/RocketChat/Rocket.Chat/pull/24466)) + +
+🔍 Minor changes + + +- Bump @types/ws from 8.2.2 to 8.2.3 in /ee/server/services ([#24556](https://github.com/RocketChat/Rocket.Chat/pull/24556) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump adm-zip from 0.4.14 to 0.5.9 ([#24538](https://github.com/RocketChat/Rocket.Chat/pull/24538) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump body-parser from 1.19.0 to 1.19.1 in /ee/server/services ([#23963](https://github.com/RocketChat/Rocket.Chat/pull/23963) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump body-parser from 1.19.1 to 1.19.2 in /ee/server/services ([#24517](https://github.com/RocketChat/Rocket.Chat/pull/24517) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump cookie from 0.4.1 to 0.4.2 in /ee/server/services ([#24472](https://github.com/RocketChat/Rocket.Chat/pull/24472) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump date-fns from 2.24.0 to 2.28.0 ([#24058](https://github.com/RocketChat/Rocket.Chat/pull/24058) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump express from 4.17.1 to 4.17.2 in /ee/server/services ([#24469](https://github.com/RocketChat/Rocket.Chat/pull/24469) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump express from 4.17.2 to 4.17.3 in /ee/server/services ([#24522](https://github.com/RocketChat/Rocket.Chat/pull/24522) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump follow-redirects from 1.14.7 to 1.14.8 in /ee/server/services ([#24491](https://github.com/RocketChat/Rocket.Chat/pull/24491) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump jaeger-client from 3.18.1 to 3.19.0 in /ee/server/services ([#23961](https://github.com/RocketChat/Rocket.Chat/pull/23961) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pm2 from 5.1.2 to 5.2.0 in /ee/server/services ([#24537](https://github.com/RocketChat/Rocket.Chat/pull/24537) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump simple-get from 4.0.0 to 4.0.1 ([#24341](https://github.com/RocketChat/Rocket.Chat/pull/24341) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump sodium-native from 3.2.1 to 3.3.0 in /ee/server/services ([#23512](https://github.com/RocketChat/Rocket.Chat/pull/23512) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump underscore.string from 3.3.5 to 3.3.6 in /ee/server/services ([#24498](https://github.com/RocketChat/Rocket.Chat/pull/24498) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump url-parse from 1.5.3 to 1.5.7 ([#24528](https://github.com/RocketChat/Rocket.Chat/pull/24528) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump vm2 from 3.9.5 to 3.9.7 in /ee/server/services ([#24509](https://github.com/RocketChat/Rocket.Chat/pull/24509) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: `twoFactorRequired` signature ([#24518](https://github.com/RocketChat/Rocket.Chat/pull/24518)) + + Improved type checking for decorator `twoFactorRequired`. + +- Chore: Add description to global OTR setting ([#24333](https://github.com/RocketChat/Rocket.Chat/pull/24333) by [@pedrogssouza](https://github.com/pedrogssouza)) + +- Chore: Bump Fuselage packages ([#24573](https://github.com/RocketChat/Rocket.Chat/pull/24573)) + + It uses the last stable version of Fuselage packages. + +- Chore: bump fuselage version ([#24453](https://github.com/RocketChat/Rocket.Chat/pull/24453)) + +- Chore: Convert JS files to Typescript ([#24410](https://github.com/RocketChat/Rocket.Chat/pull/24410)) + + This pull request converts 26 more files from Javascript to Typescript, to check variable types and increase validation on the code. + +- Chore: Convert to typescript the me slashCommands files ([#24321](https://github.com/RocketChat/Rocket.Chat/pull/24321) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + Convert to typescript the me slashCommands files + +- Chore: Convert to typescript the mute and unmute slash commands files ([#24325](https://github.com/RocketChat/Rocket.Chat/pull/24325) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + Convert to typescript the mute and unmute slash commands files + +- Chore: Convert to typescript the slash commands create files ([#24306](https://github.com/RocketChat/Rocket.Chat/pull/24306) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + Convert Slash Commands create files to typescript. + +- Chore: Convert to typescript the slash commands invite files ([#24311](https://github.com/RocketChat/Rocket.Chat/pull/24311) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + Convert to typescript the slash commands invite files + +- Chore: Convert to typescript the unarchive slash commands files ([#24331](https://github.com/RocketChat/Rocket.Chat/pull/24331) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + Convert to typescript the unarchive slash commands files + +- Chore: Delete unused file (NewAdminInfoPage.js) ([#24196](https://github.com/RocketChat/Rocket.Chat/pull/24196)) + + Just removing a duplicated/unused file. + +- Chore: Improve PR title validation regex ([#24467](https://github.com/RocketChat/Rocket.Chat/pull/24467)) + +- Chore: Js to ts slash commands archive ([#24304](https://github.com/RocketChat/Rocket.Chat/pull/24304) by [@eduardofcabrera](https://github.com/eduardofcabrera)) + + Convert Slash Commands archive files to typescript + +- Chore: Remove storybook build job from CI ([#24530](https://github.com/RocketChat/Rocket.Chat/pull/24530)) + +- Chore: roomTypes: Stop mixing client and server code together ([#24536](https://github.com/RocketChat/Rocket.Chat/pull/24536)) + +- Chore: Run tests using microservices deployment on CI ([#24513](https://github.com/RocketChat/Rocket.Chat/pull/24513)) + +- Chore: Set Docker image tag to latest only when really latest ([#24366](https://github.com/RocketChat/Rocket.Chat/pull/24366)) + +- Chore: Unify ILivechatAgent with ILivechatAgentRecord ([#24406](https://github.com/RocketChat/Rocket.Chat/pull/24406)) + +- Chore: Update Apps-Engine ([#24568](https://github.com/RocketChat/Rocket.Chat/pull/24568)) + +- Chore: Update Apps-Engine ([#24651](https://github.com/RocketChat/Rocket.Chat/pull/24651)) + +- Chore: Update fuselage deps to match monolith versions ([#24501](https://github.com/RocketChat/Rocket.Chat/pull/24501)) + +- Chore: Update Meteor to 2.5.6 ([#24461](https://github.com/RocketChat/Rocket.Chat/pull/24461)) + +- Chore: Update ws package ([#24477](https://github.com/RocketChat/Rocket.Chat/pull/24477)) + +- Chore(deps-dev): Bump ts-node from 10.0.0 to 10.5.0 in /ee/server/services ([#24435](https://github.com/RocketChat/Rocket.Chat/pull/24435) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore(deps): Bump node-fetch from 2.6.1 to 2.6.7 in /ee/server/services ([#24299](https://github.com/RocketChat/Rocket.Chat/pull/24299) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- i18n: Language update from LingoHub 🤖 on 2022-01-31Z ([#24357](https://github.com/RocketChat/Rocket.Chat/pull/24357)) + +- i18n: Language update from LingoHub 🤖 on 2022-02-07Z ([#24429](https://github.com/RocketChat/Rocket.Chat/pull/24429)) + +- i18n: Language update from LingoHub 🤖 on 2022-02-14Z ([#24493](https://github.com/RocketChat/Rocket.Chat/pull/24493)) + +- i18n: Language update from LingoHub 🤖 on 2022-02-21Z ([#24558](https://github.com/RocketChat/Rocket.Chat/pull/24558)) + +- Merge master into develop & Set version to 4.5.0-develop ([#24363](https://github.com/RocketChat/Rocket.Chat/pull/24363)) + +- Regression: Add support to namespace within micro services ([#24581](https://github.com/RocketChat/Rocket.Chat/pull/24581)) + +- Regression: Admin Sidebar colors inverted. ([#24609](https://github.com/RocketChat/Rocket.Chat/pull/24609)) + +- Regression: Bunch of settings fixes for VoIP ([#24594](https://github.com/RocketChat/Rocket.Chat/pull/24594)) + +- Regression: Do not show toast on incoming voip calls ([#24619](https://github.com/RocketChat/Rocket.Chat/pull/24619)) + +- Regression: Encode registration info as JWT when signing key is provided ([#24626](https://github.com/RocketChat/Rocket.Chat/pull/24626)) + +- Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585)) + + - Fix `Mentioned room not found` error when importing rooms from Slack; + - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); + - Fix incorrect message count on imported rooms; + - Fix missing username on messages imported from Slack; + +- Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583)) + +- Regression: Extension List panel UI not aligned with designs ([#24645](https://github.com/RocketChat/Rocket.Chat/pull/24645)) + +- Regression: Fix double value on holdTime and empty msg on last message ([#24630](https://github.com/RocketChat/Rocket.Chat/pull/24630)) + +- Regression: Fix in-correct room status shown to agents ([#24592](https://github.com/RocketChat/Rocket.Chat/pull/24592)) + +- Regression: Fix incoming voip call ringtone is not ringing ([#24616](https://github.com/RocketChat/Rocket.Chat/pull/24616)) + +- Regression: Fix room not getting created due to null visitor status ([#24562](https://github.com/RocketChat/Rocket.Chat/pull/24562)) + +- Regression: Fix time fields and wrap up in Voip Room Contexual bar ([#24625](https://github.com/RocketChat/Rocket.Chat/pull/24625)) + +- Regression: Fix time format on Voip system messages ([#24603](https://github.com/RocketChat/Rocket.Chat/pull/24603)) + +- Regression: Fix translation for call started message ([#24615](https://github.com/RocketChat/Rocket.Chat/pull/24615)) + +- Regression: Fix wrong tab name for VoIP settings ([#24647](https://github.com/RocketChat/Rocket.Chat/pull/24647)) + +- Regression: Fixes in Voice Contextual Bar and Directory ([#24596](https://github.com/RocketChat/Rocket.Chat/pull/24596)) + +- Regression: If Asterisk suddenly goes down, server has no way to know. Causes server to get stuck. Needs restart ([#24624](https://github.com/RocketChat/Rocket.Chat/pull/24624)) + +- Regression: Mark all rooms as read modal closing instantly. ([#24610](https://github.com/RocketChat/Rocket.Chat/pull/24610)) + +- Regression: No audio when call comes from Skype/IP phone ([#24602](https://github.com/RocketChat/Rocket.Chat/pull/24602)) + + The audio was not rendered because of re-rendering of react element based on + queueCounter and roomInfo. queueCounter and roomInfo cause the dom to re-render when call gets accepted + because after accepting call, queueCounter changes or a room gets created. + The audio element gets recreated. But VoIP user probably holds the old one. + The behaviour is not predictable when such case happens. If everything gets cleanly setup, + even if the audio element goes headless, it still continues to play the remote audio. + But in other cases, it is unreferenced the one on dom has its srcObject as null. + This causes no audio. + + This fix provides a way to re-initialise the rendering elements in VoIP user + and calls this function on useEffect() if the re-render has happen. + +- Regression: Prevent button from losing state when rerendering ([#24648](https://github.com/RocketChat/Rocket.Chat/pull/24648)) + +- Regression: Prevent connect to asterisk when VoIP is disabled ([#24601](https://github.com/RocketChat/Rocket.Chat/pull/24601)) + +- Regression: Queue counter aggregator for incoming/hanged calls ([#24635](https://github.com/RocketChat/Rocket.Chat/pull/24635)) + +- Regression: Refresh server connection when MI server settings change ([#24649](https://github.com/RocketChat/Rocket.Chat/pull/24649)) + +- Regression: Server crashing if Voip credentials are invalid ([#24646](https://github.com/RocketChat/Rocket.Chat/pull/24646)) + +- Regression: VoIP service button displayed when VoIP is disabled ([#24598](https://github.com/RocketChat/Rocket.Chat/pull/24598)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@LucasFASouza](https://github.com/LucasFASouza) +- [@aswinidev](https://github.com/aswinidev) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@eduardofcabrera](https://github.com/eduardofcabrera) +- [@ostjen](https://github.com/ostjen) +- [@pedrogssouza](https://github.com/pedrogssouza) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@amolghode1981](https://github.com/amolghode1981) +- [@d-gubert](https://github.com/d-gubert) +- [@debdutdeb](https://github.com/debdutdeb) +- [@dougfabris](https://github.com/dougfabris) +- [@felipe-rod123](https://github.com/felipe-rod123) +- [@filipemarins](https://github.com/filipemarins) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@guijun13](https://github.com/guijun13) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@ujorgeleite](https://github.com/ujorgeleite) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.4.3 +`2022-04-07 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.2` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.30.0` + +### 🐛 Bug fixes + + +- NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) + +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) + + Modify Meteor's `HTTP.call` to add back proxy support + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.4.2 +`2022-02-09 · 1 🐛 · 2 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.2` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.30.0` + +### 🐛 Bug fixes + + +- OAuth mismatch redirect_uri error ([#24450](https://github.com/RocketChat/Rocket.Chat/pull/24450)) + +
+🔍 Minor changes + + +- Chore: bump fuselage version ([#24453](https://github.com/RocketChat/Rocket.Chat/pull/24453)) + +- Release 4.4.2 ([#24459](https://github.com/RocketChat/Rocket.Chat/pull/24459)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.4.1 +`2022-02-07 · 6 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.2` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.30.0` + +### 🐛 Bug fixes + + +- Add ?close to OAuth callback url ([#24381](https://github.com/RocketChat/Rocket.Chat/pull/24381)) + +- Oembed request not respecting payload limit ([#24418](https://github.com/RocketChat/Rocket.Chat/pull/24418)) + +- Outgoing webhook without scripts not saving messages ([#24401](https://github.com/RocketChat/Rocket.Chat/pull/24401)) + +- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407)) + +- Slash commands previews not working ([#24387](https://github.com/RocketChat/Rocket.Chat/pull/24387) by [@ostjen](https://github.com/ostjen)) + +- Startup errors creating indexes ([#24409](https://github.com/RocketChat/Rocket.Chat/pull/24409)) + + Fix `bio` and `prid` startup index creation errors. + +
+🔍 Minor changes + + +- Release 4.4.1 ([#24432](https://github.com/RocketChat/Rocket.Chat/pull/24432) by [@ostjen](https://github.com/ostjen)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@ostjen](https://github.com/ostjen) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 4.4.0 +`2022-01-28 · 4 🎉 · 13 🚀 · 29 🐛 · 44 🔍 · 34 👩‍💻👨‍💻` + +### Engine versions +- Node: `14.18.2` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.30.0` + +### 🎉 New features + + +- **EE:** Allow to filter departments by Business Units on Livechat ([#24162](https://github.com/RocketChat/Rocket.Chat/pull/24162)) + +- App empty states component, category filter and empty states error variation implementations ([#23818](https://github.com/RocketChat/Rocket.Chat/pull/23818)) + + Created and implemented the category filters component: + Demo gif: + ![categories_filter_demo](https://user-images.githubusercontent.com/43561537/148579731-1de83bf8-91ce-47e7-b6e5-7781384fdef9.gif) + + Created and implemented the empty states(States on fuselage) component: + Demo gif: + ![empty_states_demo](https://user-images.githubusercontent.com/43561537/148579930-49c2ff69-88f4-4a57-a24a-060868d76209.gif) + + Implemented a variations system for the empty states component and created a error message for network outage: + Demo gif: + ![empty_states_variation_demo](https://user-images.githubusercontent.com/43561537/148580047-39adf8ef-2ee0-4c3e-8709-5faea4a5e335.gif) + +- Apple Login ([#24060](https://github.com/RocketChat/Rocket.Chat/pull/24060)) + +- Enabling emoji on custom status ([#24170](https://github.com/RocketChat/Rocket.Chat/pull/24170)) + +### 🚀 Improvements + + +- Add Rocket.Chat version to User-Agent header for oembed requests ([#23605](https://github.com/RocketChat/Rocket.Chat/pull/23605) by [@sidmohanty11](https://github.com/sidmohanty11)) + +- Added a Reset Button in the Account Profile Page ([#24078](https://github.com/RocketChat/Rocket.Chat/pull/24078) by [@aswinidev](https://github.com/aswinidev)) + +- Admin page header buttons consistency ([#24168](https://github.com/RocketChat/Rocket.Chat/pull/24168)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/149371746-66e5e6e4-5c8e-46d7-b230-ecbc4502b665.png) + ![image](https://user-images.githubusercontent.com/27704687/149371759-c3d948af-d877-486c-a263-da12c0b70185.png) + ![image](https://user-images.githubusercontent.com/27704687/149371769-09b0623d-a5c5-43e0-a4ef-73ba0bcf1730.png) + ![image](https://user-images.githubusercontent.com/27704687/149371782-b1b898c7-3aad-47ee-8c5c-cf9cb816d72b.png) + ![image](https://user-images.githubusercontent.com/27704687/149371796-b88514d2-3c8d-4d9d-a45b-24f48783e95c.png) + + + ### after + ![Screen Shot 2022-01-13 at 13 38 00](https://user-images.githubusercontent.com/27704687/149371084-668d5f14-e03e-4cdd-8763-058db9c2f16c.png) + ![Screen Shot 2022-01-13 at 13 38 18](https://user-images.githubusercontent.com/27704687/149371126-23a059cb-efa7-4ffb-970b-da23d8742bb1.png) + ![Screen Shot 2022-01-13 at 13 38 38](https://user-images.githubusercontent.com/27704687/149371181-c8bbbbbd-ed6d-48b4-844f-09fdce0080b6.png) + ![Screen Shot 2022-01-13 at 13 38 59](https://user-images.githubusercontent.com/27704687/149371232-3d292f5e-e8b0-41e1-b065-90a80a5f08ce.png) + ![Screen Shot 2022-01-13 at 13 39 08](https://user-images.githubusercontent.com/27704687/149371263-64fd09e4-456e-48ee-9976-83f42b90e4d9.png) + +- Importer text for CSV upload file format ([#23817](https://github.com/RocketChat/Rocket.Chat/pull/23817) by [@ostjen](https://github.com/ostjen)) + +- lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen)) + + - On `statistics` object the property `get` is an async function now. + - We need to collect additional data of feature activation through the statistics collector. + - Some codes were splitted into another file just to organize. + +- Limit recent emojis to 27 ([#24210](https://github.com/RocketChat/Rocket.Chat/pull/24210)) + + Limits the recent emoji list to a maximum of 3 rows instead of listing every emoji you've used so far. + + ![image](https://user-images.githubusercontent.com/8591547/150033087-92721b76-9203-42fe-ac2e-5b9eca50edab.png) + +- Rewrite AddWebdavAccountModal to React Component ([#24070](https://github.com/RocketChat/Rocket.Chat/pull/24070)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/147777054-bf2f84e4-5226-4ebc-ab6e-287b83889b85.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/147769132-2b938ae8-aba3-4230-876d-572e46268b9a.png) + +- Rewrite Omnichannel Queue Page to React ([#24176](https://github.com/RocketChat/Rocket.Chat/pull/24176)) + + ![image](https://user-images.githubusercontent.com/17487063/149458880-03c201ab-11cd-4c71-82aa-51bd557d3b6e.png) + +- Rewrite roomNotFound to React Component ([#24044](https://github.com/RocketChat/Rocket.Chat/pull/24044)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/147608307-468e6955-5db4-40c5-86a7-91448ac03427.png) + ![image](https://user-images.githubusercontent.com/27704687/147608377-d979adf5-615f-4180-8587-449369bf87f8.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/149158027-e39bc0a0-4c33-465b-83e0-873e558a037b.png) + ![image](https://user-images.githubusercontent.com/27704687/149157692-3e73c0b4-1759-430c-b1c4-b521e47d774d.png) + +- Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676)) + + This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: + - A brand new visual design; + - Form validation improves; + - Allow users to navigate back to all steps; + - Optimized steps to register your workspace or keep standalone. And many more! + + + ![Kapture 2022-01-20 at 11 19 47](https://user-images.githubusercontent.com/27704687/150356868-425666b4-511f-4690-9ce5-e61b839b1d19.gif) + +- Show Channel Icons on Room Header & Info panels ([#24239](https://github.com/RocketChat/Rocket.Chat/pull/24239)) + + Updates Omnichannel Header & room Info component to render the source info + Built on top of https://github.com/RocketChat/Rocket.Chat/pull/24237 + +- Throw 404 error in invalid endpoints ([#24053](https://github.com/RocketChat/Rocket.Chat/pull/24053)) + + - Throw 404 error when trying to call invalid endpoints. + +- Throw 404 error in invalid endpoints" ([#24118](https://github.com/RocketChat/Rocket.Chat/pull/24118)) + +### 🐛 Bug fixes + + +- **APPS:** Action buttons not removed when app is disabled or uninstalled ([#24107](https://github.com/RocketChat/Rocket.Chat/pull/24107)) + + Fixes a problem where action buttons registered by any app would not be removed if the app was disabled or uninstalled + +- **APPS:** Prevents emails from being sent when apps framework is disabled ([#24105](https://github.com/RocketChat/Rocket.Chat/pull/24105)) + + Introduction of new event `IPreEmailSent` was breaking the email function when the Apps-Engine framework was disabled in the administration + +- **EE:** Agent cannot change status to Available despite being within open business hours ([#24112](https://github.com/RocketChat/Rocket.Chat/pull/24112)) + +- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142)) + + - Remove trailing slashes from Engagement Dashboard API requests; + +- App Framework Enable hanging indefinitely ([#24158](https://github.com/RocketChat/Rocket.Chat/pull/24158)) + +- Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241)) + + Fixes: + + - the app's name being rendered instead of the view's title, + - the room's information (`IRoom`) wasn't being sent to the app when a `block action` happened + + Fixed behavior with correct view title and room information included in the block action event: + + https://user-images.githubusercontent.com/733282/150420847-59bfcf8a-24a9-4dc5-8609-0d92dba38b70.mp4 + +- Avoid updating all rooms with visitor abandonment queries ([#24252](https://github.com/RocketChat/Rocket.Chat/pull/24252)) + +- Change canned response model index to match other definition ([#24235](https://github.com/RocketChat/Rocket.Chat/pull/24235)) + +- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090)) + + - Update use of `setRealName` function to `_setRealName`. + +- Custom Emoji Image preview ([#24117](https://github.com/RocketChat/Rocket.Chat/pull/24117) by [@sidmohanty11](https://github.com/sidmohanty11)) + + Before, + + ![custom-img-preview-rc3](https://user-images.githubusercontent.com/73601258/148431936-c82d4200-69b1-484b-8be2-d72f5c28202b.png) + + After, + + ![custom-img-preview-rc1](https://user-images.githubusercontent.com/73601258/148431955-8842a2e3-b9f3-4d68-b0d8-c5444419f767.png) + + also if any error, (for example - if we upload a video mp4 file) + + ![custom-img-preview-rc2](https://user-images.githubusercontent.com/73601258/148431998-64bc1fbb-9958-495c-89c1-61df06adec75.png) + +- Discussions not loading message history if not joined ([#24316](https://github.com/RocketChat/Rocket.Chat/pull/24316)) + +- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) + + It: + - Adds `Firefox ESR` to `browserslist`; + - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. + +- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) + + Right now, if we try to press enter for a new line on multi-line modal input... it auto triggers the submit event. This PR fixes this behaviour by not submitting the modal in case the enter was pressed within an input text with multiline expected + +- Errors on advanced sync prevent LDAP users from logging in ([#23958](https://github.com/RocketChat/Rocket.Chat/pull/23958) by [@ostjen](https://github.com/ostjen)) + +- Filter ability for admin room checkboxes ([#23970](https://github.com/RocketChat/Rocket.Chat/pull/23970) by [@sidmohanty11](https://github.com/sidmohanty11)) + + Now, + + https://user-images.githubusercontent.com/73601258/146380812-d3aa5561-64e1-4515-a639-3b6d87432ae4.mp4 + + Before, + + https://user-images.githubusercontent.com/73601258/146385538-85a70fce-9974-40e0-8757-eda1a5d411b7.mp4 + +- Fixed broken links in setup wizard ([#24248](https://github.com/RocketChat/Rocket.Chat/pull/24248) by [@Himanshu664](https://github.com/Himanshu664)) + +- Fixing the changing custom status behavior ([#24218](https://github.com/RocketChat/Rocket.Chat/pull/24218)) + +- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068)) + +- Make canned responses popup dependent on Canned_responses_enabled setting ([#23804](https://github.com/RocketChat/Rocket.Chat/pull/23804)) + +- MAU when using micro services ([#24204](https://github.com/RocketChat/Rocket.Chat/pull/24204)) + +- Message Erasure Type "Keep" Messages not working ([#24024](https://github.com/RocketChat/Rocket.Chat/pull/24024) by [@arshxyz](https://github.com/arshxyz)) + +- MongoError during startup saying "ns not found" ([#24015](https://github.com/RocketChat/Rocket.Chat/pull/24015)) + +- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039)) + +- Omnichannel enabled setting not working when creating rooms ([#24067](https://github.com/RocketChat/Rocket.Chat/pull/24067)) + +- openUserInfo not working after changing room types ([#24098](https://github.com/RocketChat/Rocket.Chat/pull/24098) by [@grahhnt](https://github.com/grahhnt)) + +- Password error should not be shown when selecting set random password ([#21181](https://github.com/RocketChat/Rocket.Chat/pull/21181)) + + We should not keep `password` as required field when we check set random password field. In this password should not be required + +- Solved Report Message Blank ([#24262](https://github.com/RocketChat/Rocket.Chat/pull/24262) by [@nishant23122000](https://github.com/nishant23122000)) + + After resolving issue #24261 : + + https://user-images.githubusercontent.com/53515714/150629459-5f0a9cf6-9b0e-417f-8fc1-44c810bd5428.mp4 + +- Wrong german translation for 2FA-Promt ([#24126](https://github.com/RocketChat/Rocket.Chat/pull/24126) by [@mbreslein-thd](https://github.com/mbreslein-thd)) + +- wrong new userInfo during user creation ([#24051](https://github.com/RocketChat/Rocket.Chat/pull/24051) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +
+🔍 Minor changes + + +- Add: Alpine image as option for build ([#12548](https://github.com/RocketChat/Rocket.Chat/pull/12548)) + +- Bump follow-redirects from 1.14.5 to 1.14.7 in /ee/server/services ([#24182](https://github.com/RocketChat/Rocket.Chat/pull/24182) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: add script to fix code with prettier ([#24054](https://github.com/RocketChat/Rocket.Chat/pull/24054)) + +- Chore: Apply generics to infer types of useForm hook ([#22400](https://github.com/RocketChat/Rocket.Chat/pull/22400)) + +- Chore: Bump fuselage hooks ([#24233](https://github.com/RocketChat/Rocket.Chat/pull/24233)) + +- Chore: Bump Livechat package version to 1.12.0 ([#24232](https://github.com/RocketChat/Rocket.Chat/pull/24232)) + +- Chore: Convert model LoginServiceConfiguration to raw ([#24187](https://github.com/RocketChat/Rocket.Chat/pull/24187)) + +- Chore: Fix Houston `getNodeNpmVersions` regex to correctly get Node and Npm complete versions ([#24111](https://github.com/RocketChat/Rocket.Chat/pull/24111)) + +- Chore: Include REG_TOKEN in docker-compose ([#24123](https://github.com/RocketChat/Rocket.Chat/pull/24123)) + +- Chore: Migrate useOutsideClick to fuselage-hooks ([#24133](https://github.com/RocketChat/Rocket.Chat/pull/24133)) + +- Chore: Move `callbacks` to /lib ([#23456](https://github.com/RocketChat/Rocket.Chat/pull/23456)) + + It moves to `/lib`, migrates to TypeScript, and deprecates the `callbacks` API. + +- Chore: Prettier for us all ([#24000](https://github.com/RocketChat/Rocket.Chat/pull/24000)) + +- Chore: Remove unused assets ([#24023](https://github.com/RocketChat/Rocket.Chat/pull/24023)) + +- Chore: Removing hubot from docker-compose ([#23591](https://github.com/RocketChat/Rocket.Chat/pull/23591)) + + Remove hubot from docker-compose. This is forcing everyone to spin up Hubot every time they deploy Rocket.Chat and not that many people are using it. So we are wasting resources on peoples machines by forcing it + +- Chore: Replace `isEmail` with `validateEmail` ([#24020](https://github.com/RocketChat/Rocket.Chat/pull/24020)) + + Follows #23816. + +- Chore: Replace Blaze templates ([#24165](https://github.com/RocketChat/Rocket.Chat/pull/24165)) + + It replaces some templates used by login and invitation flows with React components. It also drops `main` template, allowing `appLayout` to just handle components now. + +- Chore: Slash Commands Join to Typescript ([#24254](https://github.com/RocketChat/Rocket.Chat/pull/24254) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) + + Convert the slash commands .js files to .ts files. + +- Chore: Update Apps-Engine to 1.29.2 ([#24171](https://github.com/RocketChat/Rocket.Chat/pull/24171)) + +- Chore: Update Apps-Engine version ([#24335](https://github.com/RocketChat/Rocket.Chat/pull/24335)) + +- Chore: Update copyright notices ([#24022](https://github.com/RocketChat/Rocket.Chat/pull/24022)) + + Update date range in copyright notices to `2015-2022`. + +- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091)) + +- Chore: Update mem to 8.1.1 ([#23954](https://github.com/RocketChat/Rocket.Chat/pull/23954)) + +- Chore: Update Meteor to 2.5.3 ([#24075](https://github.com/RocketChat/Rocket.Chat/pull/24075)) + +- Chore: Update Omnichannel widget version to 1.11.2 ([#24169](https://github.com/RocketChat/Rocket.Chat/pull/24169)) + +- Chore: Update pino and pino-pretty ([#24242](https://github.com/RocketChat/Rocket.Chat/pull/24242)) + +- i18n: Language update from LingoHub 🤖 on 2022-01-10Z ([#24127](https://github.com/RocketChat/Rocket.Chat/pull/24127)) + +- i18n: Language update from LingoHub 🤖 on 2022-01-17Z ([#24193](https://github.com/RocketChat/Rocket.Chat/pull/24193)) + +- i18n: Language update from LingoHub 🤖 on 2022-01-24Z ([#24268](https://github.com/RocketChat/Rocket.Chat/pull/24268)) + +- Merge master into develop & Set version to 4.4.0-develop ([#24049](https://github.com/RocketChat/Rocket.Chat/pull/24049)) + +- Regression: Align Omni-Source icon sizes with designs ([#24269](https://github.com/RocketChat/Rocket.Chat/pull/24269)) + +- Regression: Create migration to fix index issue at boot ([#24289](https://github.com/RocketChat/Rocket.Chat/pull/24289)) + +- Regression: Discussion room crashing ([#24272](https://github.com/RocketChat/Rocket.Chat/pull/24272)) + +- Regression: Enable custom emoji on admin custom status page ([#24186](https://github.com/RocketChat/Rocket.Chat/pull/24186)) + +- Regression: Fix Alpine release tag ([#24259](https://github.com/RocketChat/Rocket.Chat/pull/24259)) + +- Regression: Fix Default Business hour overriding other Business Hours ([#24288](https://github.com/RocketChat/Rocket.Chat/pull/24288)) + +- Regression: Fix handling of http requests in apps bridge ([#24211](https://github.com/RocketChat/Rocket.Chat/pull/24211)) + + Changes made during Meteor upgrade broke HTTP requests made in Rocket.Chat Apps + +- Regression: Fix Inactive Departments still visible on Livechat ([#24267](https://github.com/RocketChat/Rocket.Chat/pull/24267)) + +- Regression: Fix incompatibility of apps http requests ([#24276](https://github.com/RocketChat/Rocket.Chat/pull/24276)) + + HTTP GET and HEAD requests made with an empty object as `data` were breaking, as the bridge converted this to the request's body as `'{}'` but meteor's new lib doesn't allow for body content on either of this request methods. + + To maintain compatibility, we forced an empty body whenever we have a GET or HEAD request. This was probably the case previously, with the body of requests made with this methods being ignored either before being sent or in the third party server receiving the request + +- Regression: Fix OmnichannelAppSourceRoomIcon sizes ([#24322](https://github.com/RocketChat/Rocket.Chat/pull/24322)) + +- Regression: Fix pino child log levels ([#24302](https://github.com/RocketChat/Rocket.Chat/pull/24302)) + +- Regression: Remove extra call to `useOutsideClick` hook not following the function signature ([#24243](https://github.com/RocketChat/Rocket.Chat/pull/24243)) + + It migrates `client/sidebar/header/actions/Search` component to TypeScript and mitigates a invalid call to `Array.prototype.every`: + + ![image](https://user-images.githubusercontent.com/2263066/150441397-3ff403b2-10c1-4a29-b37f-892d7d4a9252.png) + +- Regression: Standalone register path failing when saving data ([#24324](https://github.com/RocketChat/Rocket.Chat/pull/24324)) + +- Regression: Update tap-i18n package ([#24298](https://github.com/RocketChat/Rocket.Chat/pull/24298)) + + Fix the issue breaking IE11. + +- Release 4.3.3 ([#24340](https://github.com/RocketChat/Rocket.Chat/pull/24340)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@Himanshu664](https://github.com/Himanshu664) +- [@arshxyz](https://github.com/arshxyz) +- [@aswinidev](https://github.com/aswinidev) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@eduardofcabrera](https://github.com/eduardofcabrera) +- [@grahhnt](https://github.com/grahhnt) +- [@mbreslein-thd](https://github.com/mbreslein-thd) +- [@nishant23122000](https://github.com/nishant23122000) +- [@ostjen](https://github.com/ostjen) +- [@sidmohanty11](https://github.com/sidmohanty11) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@KevLehman](https://github.com/KevLehman) +- [@LuluGO](https://github.com/LuluGO) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@d-gubert](https://github.com/d-gubert) +- [@debdutdeb](https://github.com/debdutdeb) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.3.3 +`2022-01-28 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.12` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.29.2` + +### 🐛 Bug fixes + + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +
+🔍 Minor changes + + +- Release 4.3.3 ([#24340](https://github.com/RocketChat/Rocket.Chat/pull/24340)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@gronke](https://github.com/gronke) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.3.2 +`2022-01-19 · 5 🐛 · 1 🔍 · 10 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.29.2` + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142)) + + - Remove trailing slashes from Engagement Dashboard API requests; + +- App Framework Enable hanging indefinitely ([#24158](https://github.com/RocketChat/Rocket.Chat/pull/24158)) + +- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090)) + + - Update use of `setRealName` function to `_setRealName`. + +- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068)) + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +
+🔍 Minor changes + + +- Chore: Update Apps-Engine to 1.29.2 ([#24171](https://github.com/RocketChat/Rocket.Chat/pull/24171)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@gronke](https://github.com/gronke) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.3.1 +`2022-01-05 · 6 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.29.1` + +### 🐛 Bug fixes + + +- **APPS:** Action buttons not removed when app is disabled or uninstalled ([#24107](https://github.com/RocketChat/Rocket.Chat/pull/24107)) + + Fixes a problem where action buttons registered by any app would not be removed if the app was disabled or uninstalled + +- **APPS:** Prevents emails from being sent when apps framework is disabled ([#24105](https://github.com/RocketChat/Rocket.Chat/pull/24105)) + + Introduction of new event `IPreEmailSent` was breaking the email function when the Apps-Engine framework was disabled in the administration + +- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) + + It: + - Adds `Firefox ESR` to `browserslist`; + - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. + +- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) + + Right now, if we try to press enter for a new line on multi-line modal input... it auto triggers the submit event. This PR fixes this behaviour by not submitting the modal in case the enter was pressed within an input text with multiline expected + +- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039)) + +- Omnichannel enabled setting not working when creating rooms ([#24067](https://github.com/RocketChat/Rocket.Chat/pull/24067)) + +
+🔍 Minor changes + + +- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@murtaza98](https://github.com/murtaza98) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 4.3.0 +`2021-12-28 · 7 🎉 · 5 🚀 · 26 🐛 · 37 🔍 · 28 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.29.0` + +### 🎉 New features + + +- **APPS:** Add new email event for apps ([#23925](https://github.com/RocketChat/Rocket.Chat/pull/23925)) + + Introduces a new event called before an email is sent by the Mailer. Apps can intercept and modify the email that will be sent, or even prevent it from being sent altogether. For more details, check https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/461/files#diff-301e8a58164edbf315da2a43c4923f153dbc909573de1e60aa9f730f7488ac82 + +- **APPS:** Allow apps to open contextual bar ([#23843](https://github.com/RocketChat/Rocket.Chat/pull/23843)) + + Opens a contextual bar using app ui interactions (`CONTEXTUAL_BAR_OPEN`) + + https://user-images.githubusercontent.com/733282/146704076-d2d115f2-6ca6-4ed0-b450-81be580889a4.mp4 + +- **APPS:** Allow Rocket.Chat Apps to register custom action buttons ([#23679](https://github.com/RocketChat/Rocket.Chat/pull/23679)) + + Add an action button manager that allows apps to register custom action buttons that trigger interaction callbacks in them + +- **APPS:** getUserUnreadMessageCount Bridge ([#23972](https://github.com/RocketChat/Rocket.Chat/pull/23972)) + +- **APPS:** Possibility to set room closer via Apps LivechatBridge.closeRoom ([#21025](https://github.com/RocketChat/Rocket.Chat/pull/21025)) + + Add an optional param named `closer` into `LivechatBridge.closeRoom` so that it will be possible to close the room and send a close room message with the correct room closer. + If the param is not passed, use the room visitor as the room closer. + +- **EE:** Introduce fallback department support ([#23939](https://github.com/RocketChat/Rocket.Chat/pull/23939)) + +- Show Omnichannel room icon based on source definition ([#23912](https://github.com/RocketChat/Rocket.Chat/pull/23912)) + +### 🚀 Improvements + + +- Allow e-mail channel to be used without default department. ([#23945](https://github.com/RocketChat/Rocket.Chat/pull/23945)) + + Due to a missing condition in the e-mail input processing, Rocket.Chat was unable to receive e-mails from e-mail channels that did not have a default department. + +- Omnichannel Visitor Endpoints error handling ([#23819](https://github.com/RocketChat/Rocket.Chat/pull/23819)) + +- Replace SortListItem and CreateListItem with ListItem ([#24007](https://github.com/RocketChat/Rocket.Chat/pull/24007)) + +- Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879)) + + - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); + - Remove outdated translations (for this setting's description). + +- Webdav methods sanitization ([#23924](https://github.com/RocketChat/Rocket.Chat/pull/23924)) + + The improvement modify `server_url` and `user_id` params into `serverURL` and `userId` more suitable to our camelCase pattern. Also converts the webdav methods into .ts helping us to prevent issues in the next modal rewrites efforts. + +### 🐛 Bug fixes + + +- Add CSP to authorize auto-close of CAS login window ([#23215](https://github.com/RocketChat/Rocket.Chat/pull/23215) by [@goyome](https://github.com/goyome)) + + Add the hash of the JS inside the page that won't close ( window.close(); ) + +- Add missing .png to clipboard uploaded file name ([#23833](https://github.com/RocketChat/Rocket.Chat/pull/23833)) + +- broken `Word Placement Anywhere` and `Run on edits` toggles in integration page ([#23901](https://github.com/RocketChat/Rocket.Chat/pull/23901) by [@aswinidev](https://github.com/aswinidev)) + +- Broken links present in some languages ([#23987](https://github.com/RocketChat/Rocket.Chat/pull/23987) by [@aswinidev](https://github.com/aswinidev)) + +- Changes on department agents should mark form as dirty ([#19640](https://github.com/RocketChat/Rocket.Chat/pull/19640) by [@rafaelblink](https://github.com/rafaelblink)) + +- creating room with federated member ([#23347](https://github.com/RocketChat/Rocket.Chat/pull/23347) by [@qwertiko](https://github.com/qwertiko)) + +- Custom emoji route in admin ([#23882](https://github.com/RocketChat/Rocket.Chat/pull/23882) by [@sidmohanty11](https://github.com/sidmohanty11)) + + https://user-images.githubusercontent.com/73601258/144975689-912cfd73-da16-433c-899a-4d4ffac8e146.mp4 + +- Custom status doesn't update properly ([#23860](https://github.com/RocketChat/Rocket.Chat/pull/23860)) + +- DMs being created with username instead of user's name ([#23848](https://github.com/RocketChat/Rocket.Chat/pull/23848)) + +- Email notifications settings not being honored on new DMs ([#23574](https://github.com/RocketChat/Rocket.Chat/pull/23574) by [@ostjen](https://github.com/ostjen)) + +- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859)) + + - Fix `usersInRole` array used to send email to activate a user. + +- Fix no message size limit for method sendMessageLivechat ([#23558](https://github.com/RocketChat/Rocket.Chat/pull/23558)) + +- Headers already sent error when user data download is disabled ([#23805](https://github.com/RocketChat/Rocket.Chat/pull/23805)) + + When using the export message tool when trying to download the file using the link sent via email if the feature "Export User Data" is disabled an error was being thrown causing the request to halt. + + This is the error shown in the logs: + ``` + === UnHandledPromiseRejection === + Error [ERR_HTTP_HEADERS_SENT] [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client + at ServerResponse.setHeader (_http_outgoing.js:530:11) + at ServerResponse.res.setHeader (/app/bundle/programs/server/npm/node_modules/meteor/simple_json-routes/node_modules/connect/lib/patch.js:134:22) + at app/user-data-download/server/exportDownload.js:14:7 + at /app/bundle/programs/server/npm/node_modules/meteor/promise/node_modules/meteor-promise/fiber_pool.js:43:40 { + code: 'ERR_HTTP_HEADERS_SENT' + } + --------------------------------- + Errors like this can cause oplog processing errors. + Setting EXIT_UNHANDLEDPROMISEREJECTION will cause the process to exit allowing your service to automatically restart the process + Future node.js versions will automatically exit the process + ================================= + ``` + +- Jitsi call already ended ([#23904](https://github.com/RocketChat/Rocket.Chat/pull/23904) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + + - Fix Jitsi timeout update -- which caused the "Jitsi call already ended" error when trying to join a call some time after its creation; + +- LDAP Sync doing nothing when set to only import new users. ([#23823](https://github.com/RocketChat/Rocket.Chat/pull/23823)) + +- Missing custom user status ellipsis ([#23831](https://github.com/RocketChat/Rocket.Chat/pull/23831)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/144270229-baca14f5-e168-42b7-86d1-e7217be561a9.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/144274255-39216e69-8283-45c5-8a77-b835d284f655.png) + +- Missing edit icon in sequential thread messages ([#23948](https://github.com/RocketChat/Rocket.Chat/pull/23948)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/146083450-ca6d7197-dc55-4058-8212-943b42c82473.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/146083055-36c9731a-33c6-483a-93a5-1355d8689e3a.png) + +- Modal keeps state if reset too fast. ([#23791](https://github.com/RocketChat/Rocket.Chat/pull/23791)) + + ~Queued updates so the Modal has a chance to close.~ + Used a random key to ensure modal doesn't keep it's state. + +- OTR not working ([#23973](https://github.com/RocketChat/Rocket.Chat/pull/23973)) + + A rule on the user notification streamer was changed recently, and the check for writing on the streamer was wrong. Changed it to allow all logged users. + +- Popover position for arabic languages ([#23888](https://github.com/RocketChat/Rocket.Chat/pull/23888)) + +- Removing Edit message from messageBox on room changed ([#23910](https://github.com/RocketChat/Rocket.Chat/pull/23910)) + + Removing edit message from messageBox and local storage on messageBox destroyed. + +- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796)) + + Upgrades `sharp` to avoid a segmentation fault on CentOS 7 during startup related to `sharp.node` being loaded via `process.dlopen()`. + + Suggested as a fix for versions `4.0.x` and `4.1.x`. + +- teams.leave client usage ([#23959](https://github.com/RocketChat/Rocket.Chat/pull/23959)) + +- teams.removeMembers client usage ([#23857](https://github.com/RocketChat/Rocket.Chat/pull/23857)) + +- Translations for App Select Settings not working ([#23908](https://github.com/RocketChat/Rocket.Chat/pull/23908)) + + Derived from PR https://github.com/RocketChat/Rocket.Chat/pull/19238 + +- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861)) + + This PR solves a bug on the marketplace that was happening with WhatsApp where it was displaying a trial button even though it didn't have a free trial period. The new verification I've added checks if the app is subscription-based and then checks if it has 0 trial days in all of its tiers. If it does, it shows a subscribe button. If it doesn't, it displays a trial button. Also, I've exposed the itsEnterpriseOnly flag as an extra measure in the case of apps like Facebook Messenger that are enterprise-only and consequently should show the subscribe button. + Before: + ![image](https://user-images.githubusercontent.com/43561537/144687716-baef06ce-7a80-42fc-8393-b0283c0f349a.png) + After: + ![image](https://user-images.githubusercontent.com/43561537/144687924-1a3eb3a7-783f-4450-abd2-1efa0de64658.png) + +
+🔍 Minor changes + + +- Bump @rocket.chat/string-helpers from 0.29.0 to 0.30.1 in /ee/server/services ([#23526](https://github.com/RocketChat/Rocket.Chat/pull/23526) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump cookie-parser from 1.4.5 to 1.4.6 in /ee/server/services ([#23921](https://github.com/RocketChat/Rocket.Chat/pull/23921) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump mailparser from 3.2.0 to 3.4.0 ([#23466](https://github.com/RocketChat/Rocket.Chat/pull/23466) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump path-parse from 1.0.6 to 1.0.7 ([#23689](https://github.com/RocketChat/Rocket.Chat/pull/23689) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pm2 from 5.1.1 to 5.1.2 in /ee/server/services ([#23289](https://github.com/RocketChat/Rocket.Chat/pull/23289) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump thehanimo/pr-title-checker from 1.2 to 1.3.4 ([#23853](https://github.com/RocketChat/Rocket.Chat/pull/23853) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: added last login to users.list ([#23846](https://github.com/RocketChat/Rocket.Chat/pull/23846) by [@ostjen](https://github.com/ostjen)) + +- Chore: Bump fuselage 0.31.0 ([#24046](https://github.com/RocketChat/Rocket.Chat/pull/24046)) + +- Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816)) + + - Create lib for validating emails + - Modify places that validate emails to use the new central function + +- Chore: Change Menu props to accept next fuselage version ([#23839](https://github.com/RocketChat/Rocket.Chat/pull/23839)) + +- Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822)) + + - Create NPM script to add new migrations + - TODO: Infer next migration number from file list + +- Chore: Deleted LivechatPageVisited ([#23993](https://github.com/RocketChat/Rocket.Chat/pull/23993) by [@ostjen](https://github.com/ostjen)) + +- Chore: Enable prefer-optional-chain ESLint rule for TypeScript files ([#23786](https://github.com/RocketChat/Rocket.Chat/pull/23786)) + + > Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted. + > The more code you have, the more places there are for bugs to hide. The longer checkouts or compiles take. The longer it takes a new employee to make sense of your system. If you have to refactor there's more stuff to move around. + > Furthermore, more code often means less flexibility and functionality. This is counter-intuitive, but a lot of times a simple, elegant solution is faster and more general than the plodding mess of code produced by a programmer of lesser talent. + > Code is produced by engineers. To make more code requires more engineers. Engineers have n^2 communication costs, and all that code they add to the system, while expanding its capability, also increases a whole basket of costs. + > You should do whatever possible to increase the productivity of individual programmers in terms of the expressive power of the code they write. Less code to do the same thing (and possibly better). Less programmers to hire. Less organizational communication costs. + + — [Rich Skrenta][1] + + Mixing two problem domains in code is prone to errors. In this small example + + ```ts + declare const y: { z: unknown } | undefined; + + const x = y && y.z; + ``` + + we're (1) checking the nullity of `y` and (2) attributing `y.z` to `x`, where (2) is _clearly_ the main problem we're solving with code. The optional chaining is a good technique to handle nullity as a mere implementation detail: + + ```ts + declare const y: { z: unknown } | undefined; + + const x = y?.z; + ``` + + Attributing `y.z` to `x` is more easily readable than the nullity check of `y`. + + This PR aims to add `@typescript-eslint/prefer-optional-chain` rule to ESlint configuration at warning level. + +- Chore: Fix hasRole warning ([#23914](https://github.com/RocketChat/Rocket.Chat/pull/23914)) + +- Chore: Remove the `mobile-download-file` permission ([#23996](https://github.com/RocketChat/Rocket.Chat/pull/23996)) + + - Remove the `mobile-download-file` permission and its descriptions. + +- Chore: Replace new typography ([#23756](https://github.com/RocketChat/Rocket.Chat/pull/23756)) + +- Chore: Replace typography ([#24021](https://github.com/RocketChat/Rocket.Chat/pull/24021)) + +- Chore: Update Apps-Engine to latest ([#24045](https://github.com/RocketChat/Rocket.Chat/pull/24045)) + +- Chore: update docker image base to latest node 12 patch ([#23875](https://github.com/RocketChat/Rocket.Chat/pull/23875)) + +- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913)) + +- Chore: Update pino deps ([#23922](https://github.com/RocketChat/Rocket.Chat/pull/23922)) + +- Chore: Use only LivechatTriggerRaw model ([#23974](https://github.com/RocketChat/Rocket.Chat/pull/23974)) + +- i18n: Language update from LingoHub 🤖 on 2021-12-06Z ([#23873](https://github.com/RocketChat/Rocket.Chat/pull/23873)) + +- i18n: Language update from LingoHub 🤖 on 2021-12-13Z ([#23930](https://github.com/RocketChat/Rocket.Chat/pull/23930)) + +- i18n: Language update from LingoHub 🤖 on 2021-12-20Z ([#23991](https://github.com/RocketChat/Rocket.Chat/pull/23991)) + +- i18n: Language update from LingoHub 🤖 on 2021-12-27Z ([#24030](https://github.com/RocketChat/Rocket.Chat/pull/24030)) + +- Merge master into develop & Set version to 4.3.0-develop ([#23827](https://github.com/RocketChat/Rocket.Chat/pull/23827)) + +- Regression: Add migration for omni rooms with no source ([#24012](https://github.com/RocketChat/Rocket.Chat/pull/24012)) + + Add a migration to add source property to all the omnichannel rooms which don't have it yet. All these rooms will have source type as `other` + +- Regression: Add optional chaining to possibly undefined fields ([#24033](https://github.com/RocketChat/Rocket.Chat/pull/24033)) + +- Regression: addAction verification breaking rooms ([#24019](https://github.com/RocketChat/Rocket.Chat/pull/24019)) + +- Regression: Ensure room action buttons only appear inside menu ([#24035](https://github.com/RocketChat/Rocket.Chat/pull/24035)) + + Currently, action buttons registered by apps to appear in the ROOM_ACTION context show in the first position of the list, but since they don't have an icon they are effectively invisible in the tab bar. + + Here we change the order configuration of the button so we make sure it only shows inside the room menu + +- Regression: Fix omnichannel empty source usage ([#24008](https://github.com/RocketChat/Rocket.Chat/pull/24008)) + +- Regression: Let Meteor.absoluteUrl.defaultOptions.rootUrl as baseURI ([#24009](https://github.com/RocketChat/Rocket.Chat/pull/24009)) + +- Regression: Missing padding in popover with custom template ([#23877](https://github.com/RocketChat/Rocket.Chat/pull/23877)) + + ![Screen Shot 2021-12-06 at 14 16 40](https://user-images.githubusercontent.com/27704687/144891474-a5bf982e-56af-46df-b472-adf9d999ce02.png) + +- Regression: Remove dangling console.log ([#24034](https://github.com/RocketChat/Rocket.Chat/pull/24034)) + + A empty array have been printed to console due to a promise chained to `console.log` and `console.error` calls, probably for debugging purposes. + +- Regression: Remove self from fallback departments dropdown ([#24018](https://github.com/RocketChat/Rocket.Chat/pull/24018)) + +- Regression: Toolbox render item ([#23862](https://github.com/RocketChat/Rocket.Chat/pull/23862)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@aswinidev](https://github.com/aswinidev) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@goyome](https://github.com/goyome) +- [@ostjen](https://github.com/ostjen) +- [@qwertiko](https://github.com/qwertiko) +- [@rafaelblink](https://github.com/rafaelblink) +- [@sidmohanty11](https://github.com/sidmohanty11) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@cauefcr](https://github.com/cauefcr) +- [@d-gubert](https://github.com/d-gubert) +- [@debdutdeb](https://github.com/debdutdeb) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.2.2 +`2021-12-14 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.1` + +### 🐛 Bug fixes + + +- creating room with federated member ([#23347](https://github.com/RocketChat/Rocket.Chat/pull/23347) by [@qwertiko](https://github.com/qwertiko)) + +
+🔍 Minor changes + + +- Release 4.2.2 ([#23940](https://github.com/RocketChat/Rocket.Chat/pull/23940) by [@qwertiko](https://github.com/qwertiko)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@qwertiko](https://github.com/qwertiko) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + +# 4.2.1 +`2021-12-10 · 4 🐛 · 2 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.1` + +### 🐛 Bug fixes + + +- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859)) + + - Fix `usersInRole` array used to send email to activate a user. + +- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796)) + + Upgrades `sharp` to avoid a segmentation fault on CentOS 7 during startup related to `sharp.node` being loaded via `process.dlopen()`. + + Suggested as a fix for versions `4.0.x` and `4.1.x`. + +- teams.removeMembers client usage ([#23857](https://github.com/RocketChat/Rocket.Chat/pull/23857)) + +- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861)) + + This PR solves a bug on the marketplace that was happening with WhatsApp where it was displaying a trial button even though it didn't have a free trial period. The new verification I've added checks if the app is subscription-based and then checks if it has 0 trial days in all of its tiers. If it does, it shows a subscribe button. If it doesn't, it displays a trial button. Also, I've exposed the itsEnterpriseOnly flag as an extra measure in the case of apps like Facebook Messenger that are enterprise-only and consequently should show the subscribe button. + Before: + ![image](https://user-images.githubusercontent.com/43561537/144687716-baef06ce-7a80-42fc-8393-b0283c0f349a.png) + After: + ![image](https://user-images.githubusercontent.com/43561537/144687924-1a3eb3a7-783f-4450-abd2-1efa0de64658.png) + +
+🔍 Minor changes + + +- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913)) + +- Release 4.2.1 ([#23917](https://github.com/RocketChat/Rocket.Chat/pull/23917)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@dougfabris](https://github.com/dougfabris) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@rique223](https://github.com/rique223) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 4.2.0 +`2021-11-30 · 9 🎉 · 7 🚀 · 26 🐛 · 27 🔍 · 24 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.1` + +### 🎉 New features + + +- Allow Omnichannel statistics to be collected. ([#23694](https://github.com/RocketChat/Rocket.Chat/pull/23694)) + + This PR adds the possibility for business stakeholders to see what is actually being used of the Omnichannel integrations. + +- Allow registering by REG_TOKEN environment variable ([#23737](https://github.com/RocketChat/Rocket.Chat/pull/23737)) + + You can provide the REG_TOKEN environment variable containing a registration token and it will automatically register to your cloud account. This simplifies the registration flow + +- Audio and Video calling in Livechat ([#23004](https://github.com/RocketChat/Rocket.Chat/pull/23004) by [@Deepak-learner](https://github.com/Deepak-learner) & [@dhruvjain99](https://github.com/dhruvjain99)) + +- Enable LDAP manual sync to deployments without EE license ([#23761](https://github.com/RocketChat/Rocket.Chat/pull/23761)) + + Open the Enterprise LDAP API that executes background sync to be used without any Enterprise License and enforce 2FA requirements. + +- Permission for download/uploading files on mobile ([#23686](https://github.com/RocketChat/Rocket.Chat/pull/23686) by [@ostjen](https://github.com/ostjen)) + +- Permissions for interacting with Omnichannel Contact Center ([#23389](https://github.com/RocketChat/Rocket.Chat/pull/23389)) + + Adds a new permission, one that allows for control over user access to Omnichannel Contact Center, + +- Rate limiting for user registering ([#23732](https://github.com/RocketChat/Rocket.Chat/pull/23732) by [@ostjen](https://github.com/ostjen)) + +- REST endpoints to manage Omnichannel Business Units ([#23750](https://github.com/RocketChat/Rocket.Chat/pull/23750)) + + Basic documentation about endpoints can be found at https://www.postman.com/kaleman960/workspace/rocketchat-public-api/request/3865466-71502450-8c8f-42b4-8954-1cd3d01fcb0c + +- Show on-hold metrics on analytics pages and current chats ([#23498](https://github.com/RocketChat/Rocket.Chat/pull/23498)) + +### 🚀 Improvements + + +- Allow override of default department for SMS Livechat sessions ([#23626](https://github.com/RocketChat/Rocket.Chat/pull/23626) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547)) + + - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; + - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); + - Introduces `view-engagement-dashboard` permission. + +- Improve the add user drop down for add a user in create channel modal for UserAutoCompleteMultiple ([#23766](https://github.com/RocketChat/Rocket.Chat/pull/23766) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + Seeing only the name of the person you are not adding is not practical in my opinion because two people can have the same name. Moreover, you can't see the username of the person you want to add in the dropdown. So I changed that and created another selection of users to show the username as well. I made this change so that it would appear in the key place for creating a room and adding a user. + + Before: + + https://user-images.githubusercontent.com/45966964/115287805-faac8d00-a150-11eb-871f-147ab011ced0.mp4 + + + After: + + https://user-images.githubusercontent.com/45966964/115287664-d2249300-a150-11eb-8cf6-0e04730b425d.mp4 + +- MKP12 - New UI - Merge Apps and Marketplace Tabs and Content ([#23542](https://github.com/RocketChat/Rocket.Chat/pull/23542)) + + Merged the Marketplace and Apps page into a single page with a tabs component that changes between Markeplace and installed apps. + ![page merging](https://user-images.githubusercontent.com/43561537/138516558-f86d62e6-1a5c-4817-a229-a1b876323960.gif) + +- Re-naming department query param for Twilio ([#23725](https://github.com/RocketChat/Rocket.Chat/pull/23725)) + + Since the endpoint supports both, department ID and department Name, so we're renaming it to reflect the same. `departmentName` -> `department` + +- Reduce complexity in some functions ([#23387](https://github.com/RocketChat/Rocket.Chat/pull/23387)) + + Overhauls all places where eslint's `complexity` rule is disabled. + +- Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735)) + + It: + - Adds stricter types for `API`; + - Enables types for `urlParams`; + - Removes mandatory passage of `undefined` payload on client; + - Corrects some regressions; + - Reassures my belief in TypeScript supremacy. + +### 🐛 Bug fixes + + +- "to users" not working in export message ([#23576](https://github.com/RocketChat/Rocket.Chat/pull/23576) by [@ostjen](https://github.com/ostjen)) + +- **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588)) + + - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); + - Fix "Merge Roles" and "Channel Mapping" not being performed/updated on OAuth login. + +- **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673)) + + - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; + - Update "Channels" tab name to "Rooms". + +- **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703)) + +- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608)) + +- App update flow failing in HA setups ([#23607](https://github.com/RocketChat/Rocket.Chat/pull/23607)) + + The flow for app updates is broken in specific scenarios with HA setups. Here we change the method calls in the Apps-Engine to avoid race conditions + +- Apps scheduler "losing" jobs after server restart ([#23566](https://github.com/RocketChat/Rocket.Chat/pull/23566)) + + If a job is scheduled and the server restarted, said job won't be executed, giving the impression it's been lost. + + What happens is that the scheduler is only started when some app tries to schedule an app - if that happens, all jobs that are "late" will be executed; if that doesn't happen, no job will run. + + This PR starts the apps scheduler right after all apps have been loaded + +- Autofocus on search input in admin ([#23738](https://github.com/RocketChat/Rocket.Chat/pull/23738)) + + Removed "generic" autofocus on sidenav template. + +- Await promise to handle error when attempting to transfer a room ([#23739](https://github.com/RocketChat/Rocket.Chat/pull/23739)) + +- broken avatar preview when changing avatar ([#23659](https://github.com/RocketChat/Rocket.Chat/pull/23659) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +- Discussions created inside discussions ([#23733](https://github.com/RocketChat/Rocket.Chat/pull/23733)) + +- Fix typo in FR translation ([#23711](https://github.com/RocketChat/Rocket.Chat/pull/23711) by [@Cormoran96](https://github.com/Cormoran96)) + +- Fixed E2E default room settings not being honoured ([#23468](https://github.com/RocketChat/Rocket.Chat/pull/23468) by [@TheDigitalEagle](https://github.com/TheDigitalEagle) & [@ostjen](https://github.com/ostjen)) + +- LDAP users being disabled when an AD security policy is enabled ([#23820](https://github.com/RocketChat/Rocket.Chat/pull/23820)) + +- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627)) + +- Missing user roles in edit user tab ([#23734](https://github.com/RocketChat/Rocket.Chat/pull/23734)) + +- New specific endpoint for contactChatHistoryMessages with right permissions ([#23533](https://github.com/RocketChat/Rocket.Chat/pull/23533)) + + Anyone with 'View Omnichannel Rooms' permission can see the History Messages. + +- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487)) + + - Add a migration to update the `Accounts_Default_User_Preferences_pushNotifications` setting's value to the `Accounts_Default_User_Preferences_mobileNotifications` setting's value; + - Remove the `Accounts_Default_User_Preferences_mobileNotifications` setting (replaced by `Accounts_Default_User_Preferences_pushNotifications`); + - Rename 'mobileNotifications' user's preference to 'pushNotifications'. + +- Omnichannel business hours page breaking navigation ([#23595](https://github.com/RocketChat/Rocket.Chat/pull/23595) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +- Omnichannel contact center navigation ([#23691](https://github.com/RocketChat/Rocket.Chat/pull/23691)) + + Derives from: https://github.com/RocketChat/Rocket.Chat/pull/23656 + + This PR includes a different approach to solving navigation problems following the same code structure and UI definitions of other "ActionButtons" components in Sidebar. + +- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587)) + +- Omnichannel webhooks can't be saved ([#23641](https://github.com/RocketChat/Rocket.Chat/pull/23641) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661)) + +- PhotoSwipe crashing on show ([#23499](https://github.com/RocketChat/Rocket.Chat/pull/23499)) + + Waits for initial content to load before showing it. + +- Prevent UserAction.addStream without Subscription ([#23705](https://github.com/RocketChat/Rocket.Chat/pull/23705)) + + When you take an Omnichannel chat from queue, the guest's typing information will appear. + +- Registration not possible when any user is blocked for multiple failed logins ([#23565](https://github.com/RocketChat/Rocket.Chat/pull/23565) by [@ostjen](https://github.com/ostjen)) + +
+🔍 Minor changes + + +- Chore: add `no-bidi` rule ([#23695](https://github.com/RocketChat/Rocket.Chat/pull/23695)) + +- Chore: add index on appId + associations for apps_persistence collection ([#23675](https://github.com/RocketChat/Rocket.Chat/pull/23675)) + +- Chore: Api definitions ([#23701](https://github.com/RocketChat/Rocket.Chat/pull/23701)) + +- Chore: Bump Rocket.Chat@livechat to 1.10 ([#23768](https://github.com/RocketChat/Rocket.Chat/pull/23768)) + +- Chore: Convert Fiber models to async Step 1 ([#23633](https://github.com/RocketChat/Rocket.Chat/pull/23633)) + +- Chore: Generic Table ([#23745](https://github.com/RocketChat/Rocket.Chat/pull/23745)) + +- Chore: Mocha testing configuration ([#23706](https://github.com/RocketChat/Rocket.Chat/pull/23706)) + + We've been writing integration tests for the REST API quite regularly, but we can't say the same for UI-related modules. This PR is based on the assumption that _improving the developer experience on writing tests_ would increase our coverage and promote the adoption even for newcomers. + + Here as summary of the proposal: + + - Change Mocha configuration files: + - Add a base configuration (`.mocharc.base.json`); + - Rename the configuration for REST API tests (`mocha_end_to_end.opts.js -> .mocharc.api.js`); + - Add a configuration for client modules (`.mocharc.client.js`); + - Enable ESLint for them. + - Add a Mocha test command exclusive for client modules (`npm run testunit-client`); + - Enable fast watch mode: + - Configure `ts-node` to only transpile code (skip type checking); + - Define a list of files to be watched. + - Configure `mocha` environment on ESLint only for test files (required when using Mocha's globals); + - Adopt Chai as our assertion library: + - Unify the setup of Chai plugins (`chai-spies`, `chai-datetime`, `chai-dom`); + - Replace `assert` with `chai`; + - Replace `chai.expect` with `expect`. + - Enable integration tests with React components: + - Enable JSX support on our default Babel configuration; + - Adopt [testing library](https://testing-library.com/). + +- Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452)) + + - Move all external module declarations (definitions and augmentations) to `/definition/externals`; + - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; + - Use TypeScript as server code entrypoint. + +- Chore: Remove duplicated 'name' key from rate limiter logs ([#23771](https://github.com/RocketChat/Rocket.Chat/pull/23771)) + +- Chore: Remove useCallbacks ([#23696](https://github.com/RocketChat/Rocket.Chat/pull/23696)) + +- Chore: Type omnichannel models ([#23758](https://github.com/RocketChat/Rocket.Chat/pull/23758)) + +- Chore: Update settings.ts ([#23769](https://github.com/RocketChat/Rocket.Chat/pull/23769)) + +- i18n: Language update from LingoHub 🤖 on 2021-11-01Z ([#23603](https://github.com/RocketChat/Rocket.Chat/pull/23603)) + +- i18n: Language update from LingoHub 🤖 on 2021-11-29Z ([#23812](https://github.com/RocketChat/Rocket.Chat/pull/23812)) + +- Merge master into develop & Set version to 4.2.0-develop ([#23586](https://github.com/RocketChat/Rocket.Chat/pull/23586)) + +- Regression: Units endpoint to TS ([#23757](https://github.com/RocketChat/Rocket.Chat/pull/23757)) + +- Regression: "When is the chat busier" and "Users by time of day" charts are not working ([#23815](https://github.com/RocketChat/Rocket.Chat/pull/23815)) + + - Fix "When is the chat busier" (Hours) and "Users by time of day" charts, which weren't displaying any data; + +- Regression: Add @rocket.chat/emitter to EE services ([#23802](https://github.com/RocketChat/Rocket.Chat/pull/23802)) + +- Regression: Add trash to raw models ([#23774](https://github.com/RocketChat/Rocket.Chat/pull/23774)) + +- Regression: Current Chats not Filtering ([#23803](https://github.com/RocketChat/Rocket.Chat/pull/23803)) + +- Regression: Fix incorrect API path for livechat calls ([#23778](https://github.com/RocketChat/Rocket.Chat/pull/23778)) + +- Regression: Fix LDAP sync route ([#23775](https://github.com/RocketChat/Rocket.Chat/pull/23775)) + +- Regression: Fix sendMessagesToAdmins not in Fiber ([#23770](https://github.com/RocketChat/Rocket.Chat/pull/23770)) + +- Regression: Fix sort param on omnichannel endpoints ([#23789](https://github.com/RocketChat/Rocket.Chat/pull/23789)) + +- Regression: Improve AggregationCursor types ([#23692](https://github.com/RocketChat/Rocket.Chat/pull/23692)) + +- Regression: Include files on EE services build ([#23793](https://github.com/RocketChat/Rocket.Chat/pull/23793)) + +- Regression: Mark Livechat WebRTC video calling as alpha ([#23813](https://github.com/RocketChat/Rocket.Chat/pull/23813)) + + ![image](https://user-images.githubusercontent.com/34130764/143832378-82b99a72-23e8-4115-8b28-a0d210de598b.png) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@Cormoran96](https://github.com/Cormoran96) +- [@Deepak-learner](https://github.com/Deepak-learner) +- [@Jeanstaquet](https://github.com/Jeanstaquet) +- [@TheDigitalEagle](https://github.com/TheDigitalEagle) +- [@bhardwajaditya](https://github.com/bhardwajaditya) +- [@dhruvjain99](https://github.com/dhruvjain99) +- [@ostjen](https://github.com/ostjen) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@cauefcr](https://github.com/cauefcr) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 4.1.2 +`2021-11-08 · 3 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.1` + +### 🐛 Bug fixes + + +- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487)) + + - Add a migration to update the `Accounts_Default_User_Preferences_pushNotifications` setting's value to the `Accounts_Default_User_Preferences_mobileNotifications` setting's value; + - Remove the `Accounts_Default_User_Preferences_mobileNotifications` setting (replaced by `Accounts_Default_User_Preferences_pushNotifications`); + - Rename 'mobileNotifications' user's preference to 'pushNotifications'. + +- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587)) + +- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@renatobecker](https://github.com/renatobecker) + +# 4.1.1 +`2021-11-05 · 4 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.1` + +### 🐛 Bug fixes + + +- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608)) + +- App update flow failing in HA setups ([#23607](https://github.com/RocketChat/Rocket.Chat/pull/23607)) + + The flow for app updates is broken in specific scenarios with HA setups. Here we change the method calls in the Apps-Engine to avoid race conditions + +- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627)) + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.1.0 +`2021-10-28 · 1 🎉 · 4 🚀 · 25 🐛 · 38 🔍 · 23 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0` + +### 🎉 New features + + +- Stream to get individual presence updates ([#22950](https://github.com/RocketChat/Rocket.Chat/pull/22950)) + +### 🚀 Improvements + + +- Add markdown to custom fields in user Info ([#20947](https://github.com/RocketChat/Rocket.Chat/pull/20947)) + + Added markdown to custom fields to render links + +- Allow Omnichannel to handle huge queues ([#23392](https://github.com/RocketChat/Rocket.Chat/pull/23392)) + +- Make Livechat Instructions setting multi-line ([#23515](https://github.com/RocketChat/Rocket.Chat/pull/23515)) + + Since now we're supporting markdown text on this field (via this PR - https://github.com/RocketChat/Rocket.Chat.Livechat/pull/648), it would be nice to make this setting multiline so users can have more space to edit the text + ![image](https://user-images.githubusercontent.com/34130764/138146712-13e4968b-5312-4d53-b44c-b5699c5e49c1.png) + +- optimized groups.listAll response time ([#22941](https://github.com/RocketChat/Rocket.Chat/pull/22941) by [@ostjen](https://github.com/ostjen)) + + groups.listAll endpoint was having performance issues, specially when the total number of groups was high. This happened because the endpoint was loading all objects in memory then using splice to paginate, instead of paginating beforehand. + + Considering 70k groups, this was the performance improvement: + + before + ![image](https://user-images.githubusercontent.com/28611993/129601314-bdf89337-79fa-4446-9f44-95264af4adb3.png) + + after + ![image](https://user-images.githubusercontent.com/28611993/129601358-5872e166-f923-4c1c-b21d-eb9507365ecf.png) + +### 🐛 Bug fixes + + +- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) + + - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. + - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. + +- **ENTERPRISE:** Omnichannel agent is not leaving the room when a forwarded chat is queued ([#23404](https://github.com/RocketChat/Rocket.Chat/pull/23404)) + +- Admins can't update or reset user avatars when the "Allow User Avatar Change" setting is off ([#23228](https://github.com/RocketChat/Rocket.Chat/pull/23228)) + + - Allow admins (or any other user with the `edit-other-user-avatar` permission) to update or reset user avatars even when the "Allow User Avatar Change" setting is off. + +- Attachment buttons overlap in mobile view ([#23377](https://github.com/RocketChat/Rocket.Chat/pull/23377) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +- Avoid last admin deactivate itself ([#22949](https://github.com/RocketChat/Rocket.Chat/pull/22949) by [@ostjen](https://github.com/ostjen)) + + Co-authored-by: @Kartik18g + +- BigBlueButton integration error due to missing file import ([#23366](https://github.com/RocketChat/Rocket.Chat/pull/23366) by [@wolbernd](https://github.com/wolbernd)) + + Fixes BigBlueButton integration + +- Delay start of email inbox ([#23521](https://github.com/RocketChat/Rocket.Chat/pull/23521)) + +- imported migration v240 ([#23374](https://github.com/RocketChat/Rocket.Chat/pull/23374) by [@ostjen](https://github.com/ostjen)) + +- LDAP not stoping after wrong password ([#23382](https://github.com/RocketChat/Rocket.Chat/pull/23382)) + +- Markdown quote message style ([#23462](https://github.com/RocketChat/Rocket.Chat/pull/23462)) + + Before: + ![image](https://user-images.githubusercontent.com/17487063/137496669-3abecab4-cf90-45cb-8b1b-d9411a5682dd.png) + + After: + ![image](https://user-images.githubusercontent.com/17487063/137496905-fd727f90-f707-4ec6-8139-ba2eb1a2146e.png) + +- MONGO_OPTIONS being ignored for oplog connection ([#23314](https://github.com/RocketChat/Rocket.Chat/pull/23314) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- MongoDB deprecation link ([#23381](https://github.com/RocketChat/Rocket.Chat/pull/23381)) + +- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541)) + +- Omni-Webhook's retry mechanism going in infinite loop ([#23394](https://github.com/RocketChat/Rocket.Chat/pull/23394)) + +- Prevent starting Omni-Queue if Omnichannel is disabled ([#23396](https://github.com/RocketChat/Rocket.Chat/pull/23396)) + + Whenever the Routing system setting changes, and omnichannel is disabled, then we shouldn't start the queue. + +- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522)) + +- Read only description in team creation ([#23213](https://github.com/RocketChat/Rocket.Chat/pull/23213)) + + ![image](https://user-images.githubusercontent.com/27704687/133608433-8ca788a3-71a8-4d40-8c40-8156ab03c606.png) + + ![image](https://user-images.githubusercontent.com/27704687/133608400-4cdc7a67-95e5-46c6-8c65-29ab107cd314.png) + +- resumeToken not working ([#23379](https://github.com/RocketChat/Rocket.Chat/pull/23379)) + +- Rewrite missing webRTC feature ([#23172](https://github.com/RocketChat/Rocket.Chat/pull/23172)) + +- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) + + - Remove `roles` field update on `insertOrUpdateSAMLUser` function; + - Add SAML `syncRoles` event; + +- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) + +- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen)) + +- useEndpointAction replace by useEndpointActionExperimental ([#23469](https://github.com/RocketChat/Rocket.Chat/pull/23469)) + +- user/agent upload not working via Apps Engine after 3.16.0 ([#23393](https://github.com/RocketChat/Rocket.Chat/pull/23393)) + + Fixes #22974 + +- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378)) + + - Update `roles` and `type` fields only if they are specified in the data imported from LDAP (otherwise, no changes are applied). + +
+🔍 Minor changes + + +- Bump url-parse from 1.4.7 to 1.5.3 ([#23376](https://github.com/RocketChat/Rocket.Chat/pull/23376) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump: fuselage 0.30.1 ([#23391](https://github.com/RocketChat/Rocket.Chat/pull/23391)) + +- Chore: clean README ([#23342](https://github.com/RocketChat/Rocket.Chat/pull/23342) by [@AbhJ](https://github.com/AbhJ)) + +- Chore: Document REST API endpoints (banners) ([#23361](https://github.com/RocketChat/Rocket.Chat/pull/23361)) + + Describes endpoints for banners on REST API using a JSDoc annotation compatible with OpenAPI spec. + +- Chore: Document REST API endpoints (DNS) ([#23405](https://github.com/RocketChat/Rocket.Chat/pull/23405)) + + Describes endpoints for DNS on REST API using a JSDoc annotation compatible with OpenAPI spec. + +- Chore: Document REST API endpoints (E2E) ([#23430](https://github.com/RocketChat/Rocket.Chat/pull/23430)) + + Describes endpoints for end-to-end encryption on REST API using a JSDoc annotation compatible with OpenAPI spec. + +- Chore: Document REST API endpoints (Misc) ([#23428](https://github.com/RocketChat/Rocket.Chat/pull/23428)) + + Describes miscellaneous endpoints on REST API using a JSDoc annotation compatible with OpenAPI spec. + +- Chore: Ensure all permissions are created up to this point ([#23514](https://github.com/RocketChat/Rocket.Chat/pull/23514)) + +- Chore: Fix some TS warnings ([#23524](https://github.com/RocketChat/Rocket.Chat/pull/23524)) + +- Chore: Fixed a Typo in 11-admin.js test ([#23355](https://github.com/RocketChat/Rocket.Chat/pull/23355) by [@badbart](https://github.com/badbart)) + +- Chore: Improve watch OAuth settings logic ([#23505](https://github.com/RocketChat/Rocket.Chat/pull/23505)) + + Just prevent to perform 200 deletions for registers that not even exist + +- Chore: Make omnichannel settings dependent on omnichannel being enabled ([#23495](https://github.com/RocketChat/Rocket.Chat/pull/23495)) + +- Chore: Migrate some React components/hooks to TypeScript ([#23370](https://github.com/RocketChat/Rocket.Chat/pull/23370)) + + Just low-hanging fruits. + +- Chore: Move `addMinutesToADate` helper ([#23490](https://github.com/RocketChat/Rocket.Chat/pull/23490)) + +- Chore: Move `isEmail` helper ([#23489](https://github.com/RocketChat/Rocket.Chat/pull/23489)) + +- Chore: Move `isJSON` helper ([#23491](https://github.com/RocketChat/Rocket.Chat/pull/23491)) + +- Chore: Move components away from /app/ ([#23360](https://github.com/RocketChat/Rocket.Chat/pull/23360)) + + We currently do NOT recommend placing React components under `/app`. + +- Chore: Partially migrate 2FA client code to TypeScript ([#23419](https://github.com/RocketChat/Rocket.Chat/pull/23419)) + + Additionally, hides `toastr` behind an module to handle UI's toast notifications. + +- Chore: Remove dangling README file ([#23385](https://github.com/RocketChat/Rocket.Chat/pull/23385)) + + Removes the elderly `server/restapi/README.md`. + +- Chore: Replace `promises` helper ([#23488](https://github.com/RocketChat/Rocket.Chat/pull/23488)) + +- Chore: Startup Time ([#23210](https://github.com/RocketChat/Rocket.Chat/pull/23210)) + + The settings logic has been improved as a whole. + + All the logic to get the data from the env var was confusing. + + Setting default values was tricky to understand. + + Every time the server booted, all settings were updated and callbacks were called 2x or more (horrible for environments with multiple instances and generating a turbulent startup). + + `Settings.get(......, callback);` was deprecated. We now have better methods for each case. + +- Chore: Update Apps-Engine version ([#23375](https://github.com/RocketChat/Rocket.Chat/pull/23375)) + +- Chore: Update Livechat Package ([#23523](https://github.com/RocketChat/Rocket.Chat/pull/23523)) + +- Chore: Update pino and pino-pretty ([#23510](https://github.com/RocketChat/Rocket.Chat/pull/23510)) + +- Chore: Upgrade Storybook ([#23364](https://github.com/RocketChat/Rocket.Chat/pull/23364)) + +- i18n: Language update from LingoHub 🤖 on 2021-10-18Z ([#23486](https://github.com/RocketChat/Rocket.Chat/pull/23486)) + +- Merge master into develop & Set version to 4.1.0-develop ([#23362](https://github.com/RocketChat/Rocket.Chat/pull/23362)) + +- Regression: Debounce call based on params on omnichannel queue dispatch ([#23577](https://github.com/RocketChat/Rocket.Chat/pull/23577)) + +- Regression: Fix enterprise setting validation ([#23519](https://github.com/RocketChat/Rocket.Chat/pull/23519)) + +- Regression: Fix user typings style ([#23511](https://github.com/RocketChat/Rocket.Chat/pull/23511)) + +- Regression: Mail body contains `undefined` text ([#23552](https://github.com/RocketChat/Rocket.Chat/pull/23552)) + + ### Before + ![image](https://user-images.githubusercontent.com/2263066/138733018-10449892-5c2d-46fb-9355-00e98e0d6c9f.png) + + ### After + ![image](https://user-images.githubusercontent.com/2263066/138733074-a1b88a77-bf64-41c3-a6c3-ac9e1cb63de1.png) + +- Regression: Prevent settings from getting updated ([#23556](https://github.com/RocketChat/Rocket.Chat/pull/23556)) + +- Regression: Prevent Settings Unit Test Error ([#23506](https://github.com/RocketChat/Rocket.Chat/pull/23506)) + +- Regression: Routing method not available when called from listeners at startup ([#23568](https://github.com/RocketChat/Rocket.Chat/pull/23568)) + +- Regression: Settings order ([#23528](https://github.com/RocketChat/Rocket.Chat/pull/23528)) + +- Regression: Waiting_queue setting not being applied due to missing module key ([#23531](https://github.com/RocketChat/Rocket.Chat/pull/23531)) + +- Regression: watchByRegex without Fibers ([#23529](https://github.com/RocketChat/Rocket.Chat/pull/23529)) + +- Update the community open call link in README ([#23497](https://github.com/RocketChat/Rocket.Chat/pull/23497)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AbhJ](https://github.com/AbhJ) +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@badbart](https://github.com/badbart) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@ostjen](https://github.com/ostjen) +- [@wolbernd](https://github.com/wolbernd) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@Sing-Li](https://github.com/Sing-Li) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 4.0.5 +`2021-10-25 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0` + +### 🐛 Bug fixes + + +- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541)) + +
+🔍 Minor changes + + +- Release 4.0.5 ([#23554](https://github.com/RocketChat/Rocket.Chat/pull/23554)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.0.4 +`2021-10-21 · 2 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0` + +### 🐛 Bug fixes + + +- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522)) + +- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) + + - Remove `roles` field update on `insertOrUpdateSAMLUser` function; + - Add SAML `syncRoles` event; + +
+🔍 Minor changes + + +- Release 4.0.4 ([#23532](https://github.com/RocketChat/Rocket.Chat/pull/23532)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.0.3 +`2021-10-18 · 2 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0` + +### 🐛 Bug fixes + + +- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) + + - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. + - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. + +- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) + +
+🔍 Minor changes + + +- Release 4.0.3 ([#23496](https://github.com/RocketChat/Rocket.Chat/pull/23496)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@thassiov](https://github.com/thassiov) + +# 4.0.2 +`2021-10-14 · 4 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0` + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Omnichannel agent is not leaving the room when a forwarded chat is queued ([#23404](https://github.com/RocketChat/Rocket.Chat/pull/23404)) + +- Attachment buttons overlap in mobile view ([#23377](https://github.com/RocketChat/Rocket.Chat/pull/23377) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +- Prevent starting Omni-Queue if Omnichannel is disabled ([#23396](https://github.com/RocketChat/Rocket.Chat/pull/23396)) + + Whenever the Routing system setting changes, and omnichannel is disabled, then we shouldn't start the queue. + +- user/agent upload not working via Apps Engine after 3.16.0 ([#23393](https://github.com/RocketChat/Rocket.Chat/pull/23393)) + + Fixes #22974 + +
+🔍 Minor changes + + +- Release 4.0.2 ([#23460](https://github.com/RocketChat/Rocket.Chat/pull/23460) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@murtaza98](https://github.com/murtaza98) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 4.0.1 +`2021-10-06 · 7 🐛 · 2 🔍 · 7 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0` + +### 🐛 Bug fixes + + +- BigBlueButton integration error due to missing file import ([#23366](https://github.com/RocketChat/Rocket.Chat/pull/23366) by [@wolbernd](https://github.com/wolbernd)) + + Fixes BigBlueButton integration + +- imported migration v240 ([#23374](https://github.com/RocketChat/Rocket.Chat/pull/23374) by [@ostjen](https://github.com/ostjen)) + +- LDAP not stoping after wrong password ([#23382](https://github.com/RocketChat/Rocket.Chat/pull/23382)) + +- MongoDB deprecation link ([#23381](https://github.com/RocketChat/Rocket.Chat/pull/23381)) + +- resumeToken not working ([#23379](https://github.com/RocketChat/Rocket.Chat/pull/23379)) + +- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen)) + +- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378)) + + - Update `roles` and `type` fields only if they are specified in the data imported from LDAP (otherwise, no changes are applied). + +
+🔍 Minor changes + + +- Chore: Update Apps-Engine version ([#23375](https://github.com/RocketChat/Rocket.Chat/pull/23375)) + +- Release 4.0.1 ([#23386](https://github.com/RocketChat/Rocket.Chat/pull/23386) by [@ostjen](https://github.com/ostjen) & [@wolbernd](https://github.com/wolbernd)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@ostjen](https://github.com/ostjen) +- [@wolbernd](https://github.com/wolbernd) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 4.0.0 +`2021-10-01 · 15 ️️️⚠️ · 4 🎉 · 11 🚀 · 24 🐛 · 67 🔍 · 26 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.28.0-alpha.5428` + +### ⚠️ BREAKING CHANGES + + +- **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013)) + + - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; + - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; + - Split the data in multiple CSV files. + +- **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014)) + + - Fix CSV file downloaded in the Engagement Dashboard's New Users section; + - Add column headers to the CSV file downloaded from the Engagement Dashboard's New Users section. + +- **ENTERPRISE:** Missing headers in CSV files downloaded from the Engagement Dashboard ([#23223](https://github.com/RocketChat/Rocket.Chat/pull/23223)) + + - Add headers to all CSV files downloaded from the "Messages" and "Channels" tabs from the Engagement Dashboard; + - Add headers to the CSV file downloaded from the "Users by time of day" section (in the "Users" tab). + +- LDAP Refactoring ([#23171](https://github.com/RocketChat/Rocket.Chat/pull/23171)) + +- Moved advanced oAuth features to EE ([#23201](https://github.com/RocketChat/Rocket.Chat/pull/23201) by [@ostjen](https://github.com/ostjen)) + +- Moved role-sync and advanced SAML settings to EE ([#23107](https://github.com/RocketChat/Rocket.Chat/pull/23107) by [@ostjen](https://github.com/ostjen)) + +- Moved SAML custom field map to EE ([#23319](https://github.com/RocketChat/Rocket.Chat/pull/23319) by [@ostjen](https://github.com/ostjen)) + +- Remove cordova compatibility setting ([#23302](https://github.com/RocketChat/Rocket.Chat/pull/23302) by [@ostjen](https://github.com/ostjen)) + +- Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162)) + + The following REST endpoints were removed: + + - `/api/v1/emoji-custom` + - `/api/v1/info` + - `/api/v1/permissions` + - `/api/v1/permissions.list` + + The following Real time API Methods were removed: + + - `getFullUserData` + - `getServerInfo` + - `livechat:saveOfficeHours` + +- Remove Google Vision features ([#23160](https://github.com/RocketChat/Rocket.Chat/pull/23160)) + + Google Vision features like "block adult images" or label detection were not being maintained and totally broken. So we decided to remove its feature and maybe in the future release the same features as an app. + +- Remove old migrations up to version 2.4.14 ([#23277](https://github.com/RocketChat/Rocket.Chat/pull/23277)) + + To update to version 4.0.0 you'll need to be running at least version 3.0.0, otherwise you might loose some database migrations which might have unexpected effects. + + This aims to clean up the code, since upgrades jumping 2 major versions are too risky and hard to maintain, we'll keep only migration from that last major (in this case 3.x). + +- Remove patch info from endpoint /api/info for non-logged in users ([#16050](https://github.com/RocketChat/Rocket.Chat/pull/16050)) + +- Removed support of MongoDB 3.4; Deprecated MongoDB 3.6 and 4.0 ([#22907](https://github.com/RocketChat/Rocket.Chat/pull/22907) by [@ostjen](https://github.com/ostjen)) + +- Stop sending audio notifications via stream ([#23108](https://github.com/RocketChat/Rocket.Chat/pull/23108)) + + Remove audio preferences and make them tied to desktop notification preferences. + + TL;DR: new message sounds will play only if you receive a desktop notification. you'll still be able to chose to not play any sound though + +- Webhook will fail if user is not part of the channel ([#23310](https://github.com/RocketChat/Rocket.Chat/pull/23310)) + + Remove deprecated behavior added by https://github.com/RocketChat/Rocket.Chat/pull/18024 that accepts webhook integrations sending messages even if the user is not part of the channel. + + Starting from 4.0.0 the webhook request will fail with `error-not-allowed` error: + + ``` + {"success":false,"error":"error-not-allowed"} + ``` + +### 🎉 New features + + +- **APPS:** Get livechat's room transcript via bridge method ([#22985](https://github.com/RocketChat/Rocket.Chat/pull/22985)) + + Adds a new method for retrieving a room's transcript via a new method in the Livechat bridge + +- Add activity indicators for Uploading and Recording using new API; Support thread context; Deprecate the old typing API ([#22392](https://github.com/RocketChat/Rocket.Chat/pull/22392) by [@sumukhah](https://github.com/sumukhah)) + +- Omnichannel source identification fields ([#23090](https://github.com/RocketChat/Rocket.Chat/pull/23090)) + + This PR adds new fields to the room schema that aids in the identification of the source that created an Omnichannel room, which can be either via livechat widget, SMS, app, etc. + +- Seats Cap ([#23017](https://github.com/RocketChat/Rocket.Chat/pull/23017) by [@g-thome](https://github.com/g-thome)) + + - Adding New Members + - Awareness of seats usage while adding new members + - Seats Cap about to be reached + - Seats Cap reached + - Request more seats + - Warning Admins + - System telling admins max seats are about to exceed + - System telling admins max seats were exceed + - Metric on Info Page + - Request more seats + - Warning Members + - Invite link + - Block creating new invite links + - Block existing invite links (feedback on register process) + - Register to Workspaces + - Emails + - System telling admins max seats are about to exceed + - System telling admins max seats were exceed + +### 🚀 Improvements + + +- **APPS:** New storage strategy for Apps-Engine file packages ([#22657](https://github.com/RocketChat/Rocket.Chat/pull/22657)) + + This is an enabler for our initiative to support NPM packages in the Apps-Engine. + + Currently, the packages (zip files) for Rocket.Chat Apps are stored as a base64 encoded string in a document in the database, which constrains us due to the size limit of a document in MongoDB (16Mb). + + When we allow apps to include NPM packages, the size of the App package itself will be potentially _very large_ (I'm looking at you `node_modules`). Thus we'll be changing the strategy to store apps either with GridFS or the host's File System itself. + +- **APPS:** Return task ids when using the scheduler api ([#23023](https://github.com/RocketChat/Rocket.Chat/pull/23023)) + + In the methods that create tasks (`scheduleRecurring` and `scheduleOnce`) return the `id` of the document created in the database so the user can cancel each task individually. + +- Add missing pt-BR translations, fix typos and unify language ([#23176](https://github.com/RocketChat/Rocket.Chat/pull/23176) by [@gabrieloliverio](https://github.com/gabrieloliverio)) + +- Better text for auth banner ([#23256](https://github.com/RocketChat/Rocket.Chat/pull/23256) by [@g-thome](https://github.com/g-thome)) + + Change the text in the banner warning for auth changes + +- Canned response admin settings ([#23190](https://github.com/RocketChat/Rocket.Chat/pull/23190)) + +- Change log format to JSON ([#22975](https://github.com/RocketChat/Rocket.Chat/pull/22975)) + +- Change occurences of Livechat to Omnichannel in ES translations were applicable ([#23199](https://github.com/RocketChat/Rocket.Chat/pull/23199)) + +- Do not re-create General room on every server start ([#22957](https://github.com/RocketChat/Rocket.Chat/pull/22957)) + + - Check the `Show_Setup_Wizard` Setting's value to control whether the general room should be created. This channel will only be created if the `Show_Setup_Wizard` Setting is 'pending'. + +- Load code highlighting languages on demand and fixes on new message parser ([#23232](https://github.com/RocketChat/Rocket.Chat/pull/23232)) + + Now we have this setting called 'Code highlighting languages list' where you can define the languages that you want to be loaded by default. + +- Throw error if no appId is provided to useUIKitHandleAction ([#23221](https://github.com/RocketChat/Rocket.Chat/pull/23221)) + +- Use PaginatedSelectFiltered in department edition ([#23054](https://github.com/RocketChat/Rocket.Chat/pull/23054)) + +### 🐛 Bug fixes + + +- "Parent channel or group" search in discussions' creation throws "Unexpected end of JSON input" error ([#23076](https://github.com/RocketChat/Rocket.Chat/pull/23076)) + + - Use `encodeURIComponent()` to encode values received by `_generateQueryFromParams()`. + +- "Read Only" and "Allow Reacting" system messages are missing in rooms ([#23037](https://github.com/RocketChat/Rocket.Chat/pull/23037) by [@ostjen](https://github.com/ostjen)) + + - Add system message to notify changes on the **"Read Only"** setting; + - Add system message to notify changes on the **"Allow Reacting"** setting; + - Fix "Allow Reacting" setting's description (updated from "Only authorized users can write new messages" to "Only authorized users can react to messages"). + ![system-messages](https://user-images.githubusercontent.com/36537004/130883527-9eb47fcd-c8e5-41fb-af34-5d99bd0a6780.PNG) + +- Add check before placing chat on-hold to confirm that contact sent last message ([#23053](https://github.com/RocketChat/Rocket.Chat/pull/23053)) + +- Add missing custom fields to apps' users converter ([#21176](https://github.com/RocketChat/Rocket.Chat/pull/21176) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- Avoid bots to be marked as unavailable when log off/login ([#23262](https://github.com/RocketChat/Rocket.Chat/pull/23262)) + +- Can't edit profile information if any field update setting is disabled ([#23110](https://github.com/RocketChat/Rocket.Chat/pull/23110)) + + - Check which fields have been updated before throwing errors in `validateUserEditing`. + +- Inaccurate use of 'Mobile notifications' instead of 'Push notifications' in i18n strings ([#22978](https://github.com/RocketChat/Rocket.Chat/pull/22978) by [@ostjen](https://github.com/ostjen)) + + - Fix inaccurate use of 'Mobile notifications' (which is misleading in German) by 'Push notifications'; + - Update `'Notification_Mobile_Default_For'` key to `'Notification_Push_Default_For'` (and text to 'Send Push Notifications For' for English Language); + - Update `'Accounts_Default_User_Preferences_mobileNotifications'` key to `'Accounts_Default_User_Preferences_pushNotifications'`; + - Update `'Mobile_Notifications_Default_Alert'` key to `'Mobile_Push_Notifications_Default_Alert'`; + +- Logging out from other clients ([#23276](https://github.com/RocketChat/Rocket.Chat/pull/23276)) + +- Mark agents as unavailable when they logout ([#23219](https://github.com/RocketChat/Rocket.Chat/pull/23219)) + +- Modals is cutting pixels of the content ([#23243](https://github.com/RocketChat/Rocket.Chat/pull/23243)) + + Fuselage Dependency: [543](https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/543) + ![image](https://user-images.githubusercontent.com/27704687/134049227-3cd1deed-34ba-454f-a95e-e99b79a7a7b9.png) + +- Omnichannel On hold chats being forwarded to offline agents ([#23185](https://github.com/RocketChat/Rocket.Chat/pull/23185)) + +- Omnichannel transcript button without user's email ([#23150](https://github.com/RocketChat/Rocket.Chat/pull/23150)) + +- Prevent users to edit an existing role when adding a new one with the same name used before. ([#22407](https://github.com/RocketChat/Rocket.Chat/pull/22407) by [@lucassartor](https://github.com/lucassartor)) + + ### before + ![Peek 2021-07-13 16-31](https://user-images.githubusercontent.com/27704687/125513721-953d84f4-1c95-45ca-80e1-b00992b874f6.gif) + + ### after + ![Peek 2021-07-13 16-34](https://user-images.githubusercontent.com/27704687/125514098-91ee8014-51e5-4c62-9027-5538acf57d08.gif) + +- Remove doubled "Canned Responses" strings ([#23056](https://github.com/RocketChat/Rocket.Chat/pull/23056)) + + - Remove doubled canned response setting introduced in #22703 (by setting id change); + - Update "Canned Responses" keys to "Canned_Responses". + +- Remove margin from quote inside quote ([#21779](https://github.com/RocketChat/Rocket.Chat/pull/21779)) + + ![image](https://user-images.githubusercontent.com/17487063/116253926-4a89e600-a747-11eb-9172-f2ed1245fa1b.png) + +- Save department agents ([#23209](https://github.com/RocketChat/Rocket.Chat/pull/23209)) + +- Sidebar not closing when clicking in Home or Directory on mobile view ([#23218](https://github.com/RocketChat/Rocket.Chat/pull/23218)) + + ### Additional fixed + - Merge Burger menu components into a single component + - Show a badge with no-read messages in the Burger Button: + ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) + - remove useSidebarClose hook + +- Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261)) + + - Add missing key logs + - Stop queue (and logs) when livechat is disabled or when routing method does not support queue + - Stop ignoring offline bot agents from delegation (previously, if a bot was offline, even with "Assign new conversations to bot agent" enabled, bot will be ignored and chat will be left in limbo (since bot was assigned, but offline). + +- Toolbox click not working on Safari(iOS) ([#23244](https://github.com/RocketChat/Rocket.Chat/pull/23244)) + +- transfer message when tranferring room by Apps Engine ([#23074](https://github.com/RocketChat/Rocket.Chat/pull/23074) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- Update bugsnag package ([#23104](https://github.com/RocketChat/Rocket.Chat/pull/23104)) + +- User list not being updated after creation/deletion of user ([#23032](https://github.com/RocketChat/Rocket.Chat/pull/23032) by [@ostjen](https://github.com/ostjen)) + +- Wrap canned-responses endpoints with ee license ([#23204](https://github.com/RocketChat/Rocket.Chat/pull/23204)) + +- Wrong docs link on Omni-Webhook page ([#23117](https://github.com/RocketChat/Rocket.Chat/pull/23117)) + +
+🔍 Minor changes + + +- Bump @rocket.chat/string-helpers from 0.27.0 to 0.29.0 in /ee/server/services ([#23138](https://github.com/RocketChat/Rocket.Chat/pull/23138) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @storybook/react from 6.3.6 to 6.3.8 ([#23165](https://github.com/RocketChat/Rocket.Chat/pull/23165) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/cookie from 0.4.0 to 0.4.1 in /ee/server/services ([#22600](https://github.com/RocketChat/Rocket.Chat/pull/22600) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/ejson from 2.1.2 to 2.1.3 in /ee/server/services ([#23126](https://github.com/RocketChat/Rocket.Chat/pull/23126) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/express from 4.17.12 to 4.17.13 in /ee/server/services ([#22598](https://github.com/RocketChat/Rocket.Chat/pull/22598) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/imap from 0.8.34 to 0.8.35 ([#23122](https://github.com/RocketChat/Rocket.Chat/pull/23122) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump @types/ws from 7.4.6 to 7.4.7 in /ee/server/services ([#23095](https://github.com/RocketChat/Rocket.Chat/pull/23095) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump actions/stale from 3.0.19 to 4 ([#22673](https://github.com/RocketChat/Rocket.Chat/pull/22673) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump csv-parse from 4.16.0 to 4.16.3 ([#23120](https://github.com/RocketChat/Rocket.Chat/pull/23120) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump ejson from 2.2.1 to 2.2.2 in /ee/server/services ([#23236](https://github.com/RocketChat/Rocket.Chat/pull/23236) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump iconv-lite from 0.4.24 to 0.6.3 ([#22527](https://github.com/RocketChat/Rocket.Chat/pull/22527) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump image-size from 0.6.3 to 1.0.0 ([#22528](https://github.com/RocketChat/Rocket.Chat/pull/22528) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump ip-range-check from 0.0.2 to 0.2.0 ([#22532](https://github.com/RocketChat/Rocket.Chat/pull/22532) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump jsrsasign from 10.3.0 to 10.4.0 ([#23163](https://github.com/RocketChat/Rocket.Chat/pull/23163) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump juice from 5.2.0 to 8.0.0 ([#22177](https://github.com/RocketChat/Rocket.Chat/pull/22177) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump object-path from 0.11.5 to 0.11.6 ([#23088](https://github.com/RocketChat/Rocket.Chat/pull/23088) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump pm2 from 5.1.0 to 5.1.1 in /ee/server/services ([#23128](https://github.com/RocketChat/Rocket.Chat/pull/23128) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump stylelint-order from 2.2.1 to 4.1.0 ([#22036](https://github.com/RocketChat/Rocket.Chat/pull/22036) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump supertest from 6.1.3 to 6.1.6 ([#23139](https://github.com/RocketChat/Rocket.Chat/pull/23139) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump tar from 6.1.0 to 6.1.11 in /ee/server/services ([#23068](https://github.com/RocketChat/Rocket.Chat/pull/23068) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump xml-crypto from 2.1.2 to 2.1.3 ([#23141](https://github.com/RocketChat/Rocket.Chat/pull/23141) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: Change Ubuntu version to 20.04 on all GitHub Actions ([#23200](https://github.com/RocketChat/Rocket.Chat/pull/23200)) + +- Chore: client endpoints typings ([#23152](https://github.com/RocketChat/Rocket.Chat/pull/23152)) + +- Chore: Convert VerticalBar component to typescript ([#22542](https://github.com/RocketChat/Rocket.Chat/pull/22542)) + +- Chore: Environmental variable for marketplace url ([#22922](https://github.com/RocketChat/Rocket.Chat/pull/22922)) + +- Chore: Make SMTP empty on docker-compose so registration won't hang out of the box ([#23255](https://github.com/RocketChat/Rocket.Chat/pull/23255)) + +- Chore: Move client helpers ([#23178](https://github.com/RocketChat/Rocket.Chat/pull/23178)) + + Moves helper modules under `app/` to `client/lib/utils/`. + +- Chore: Re-enable session tests on local after removal of mongo-unit ([#23263](https://github.com/RocketChat/Rocket.Chat/pull/23263)) + +- Chore: Remove non-used dependencies ([#23109](https://github.com/RocketChat/Rocket.Chat/pull/23109)) + +- Chore: Remove wrong usages of `Meteor.wrapAsync` ([#23079](https://github.com/RocketChat/Rocket.Chat/pull/23079)) + +- Chore: Update Livechat widget to 1.9.4 ([#23198](https://github.com/RocketChat/Rocket.Chat/pull/23198)) + +- Chore: Update pino and pino-pretty ([#23269](https://github.com/RocketChat/Rocket.Chat/pull/23269)) + +- Chore: Update pino and pino-pretty ([#23157](https://github.com/RocketChat/Rocket.Chat/pull/23157)) + +- Chore: Upgrade limax ([#23187](https://github.com/RocketChat/Rocket.Chat/pull/23187)) + + Upgrades `limax` for faster slugify algorithm. + +- i18n: Language update from LingoHub 🤖 on 2021-08-30Z ([#23061](https://github.com/RocketChat/Rocket.Chat/pull/23061)) + +- i18n: Language update from LingoHub 🤖 on 2021-09-06Z ([#23123](https://github.com/RocketChat/Rocket.Chat/pull/23123)) + +- i18n: Language update from LingoHub 🤖 on 2021-09-13Z ([#23184](https://github.com/RocketChat/Rocket.Chat/pull/23184)) + +- Merge master into develop & Set version to 4.0.0 ([#23086](https://github.com/RocketChat/Rocket.Chat/pull/23086)) + +- Regression: "Join" button not working ([#23320](https://github.com/RocketChat/Rocket.Chat/pull/23320)) + +- Regression: `renderEmoji` helper referred as a template ([#23212](https://github.com/RocketChat/Rocket.Chat/pull/23212)) + +- Regression: Add default value when no cookies are present ([#23318](https://github.com/RocketChat/Rocket.Chat/pull/23318)) + +- Regression: Blank screen in Jitsi video calls ([#23322](https://github.com/RocketChat/Rocket.Chat/pull/23322)) + + - Fix Jitsi calls being disposed even when "Open in new window" setting is disabled; + - Fix misspelling on `CallJitsWithData.js` file name. + +- Regression: Create new loggers based on server log level ([#23297](https://github.com/RocketChat/Rocket.Chat/pull/23297)) + +- Regression: Fix app storage migration ([#23286](https://github.com/RocketChat/Rocket.Chat/pull/23286)) + + The previous version of this migration didn't take into consideration apps that were installed prior to [Rocket.Chat@3.8.0](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.8.0), which [removed the typescript compiler from the server](https://github.com/RocketChat/Rocket.Chat/pull/18687) and into the CLI. As a result, the zip files inside each installed app's document in the database had typescript files in them instead of the now required javascript files. + + As the new strategy of source code storage for apps changes the way the app is loaded, those zip files containing the source code are read everytime the app is started (or [in this particular case, updated](https://github.com/RocketChat/Rocket.Chat/pull/23286/files#diff-caf9f7a22478639e58d6514be039140a42ce1ab2d999c3efe5678c38ee36d0ccR43)), and as the zips' contents were wrong, the operation was failing. + + The fix extract the data from old apps and creates new zip files with the compiled `js` already present. + +- Regression: Fix Bugsnag not started error ([#23308](https://github.com/RocketChat/Rocket.Chat/pull/23308)) + +- Regression: Fix channel icons on queue ([#23304](https://github.com/RocketChat/Rocket.Chat/pull/23304)) + +- Regression: Fix user registration stuck ([#23254](https://github.com/RocketChat/Rocket.Chat/pull/23254)) + +- Regression: Fix view logs admin screen ([#23194](https://github.com/RocketChat/Rocket.Chat/pull/23194)) + +- Regression: invalid `call` import ([#23328](https://github.com/RocketChat/Rocket.Chat/pull/23328)) + +- Regression: invalid `call` import ([#23334](https://github.com/RocketChat/Rocket.Chat/pull/23334)) + +- Regression: LDAP Channel/Role Sync not working ([#23311](https://github.com/RocketChat/Rocket.Chat/pull/23311)) + +- Regression: LDAP Issues ([#23306](https://github.com/RocketChat/Rocket.Chat/pull/23306)) + +- Regression: LDAP Refactoring ([#23231](https://github.com/RocketChat/Rocket.Chat/pull/23231)) + +- Regression: LDAP User Data Sync not always working ([#23321](https://github.com/RocketChat/Rocket.Chat/pull/23321)) + +- Regression: LDAP: Handle base authentication and prevent crash ([#23331](https://github.com/RocketChat/Rocket.Chat/pull/23331)) + + When AD requires TLS the auth crashes the server if StartTLS is not set, the error shows at the end because the code was not waiting on this operation. + +- Regression: Log Sections not respecting Log Level setting ([#23230](https://github.com/RocketChat/Rocket.Chat/pull/23230)) + +- Regression: Missing i18n key ([#23282](https://github.com/RocketChat/Rocket.Chat/pull/23282)) + +- Regression: Properly trickle-down state from UsersPage to UsersTable ([#23196](https://github.com/RocketChat/Rocket.Chat/pull/23196)) + + Spotted by @gabriellsh. + +- Regression: Removed exclusive tests statement ([#23333](https://github.com/RocketChat/Rocket.Chat/pull/23333) by [@ostjen](https://github.com/ostjen)) + +- Regression: Request seats link ([#23312](https://github.com/RocketChat/Rocket.Chat/pull/23312)) + +- Regression: Request seats url ([#23317](https://github.com/RocketChat/Rocket.Chat/pull/23317)) + +- Regression: SAML identifier mapping ([#23330](https://github.com/RocketChat/Rocket.Chat/pull/23330)) + +- Regression: Seats Cap banner not being disabled if not enterprise ([#23278](https://github.com/RocketChat/Rocket.Chat/pull/23278)) + +- Regression: View Logs administration page crashing ([#23205](https://github.com/RocketChat/Rocket.Chat/pull/23205)) + + Fixes the `stdout.queue` endpoint; makes the components type-safe. + +- Regression: wrong settings order ([#23281](https://github.com/RocketChat/Rocket.Chat/pull/23281)) + +- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@g-thome](https://github.com/g-thome)) + +- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@g-thome](https://github.com/g-thome) +- [@gabrieloliverio](https://github.com/gabrieloliverio) +- [@lucassartor](https://github.com/lucassartor) +- [@ostjen](https://github.com/ostjen) +- [@sumukhah](https://github.com/sumukhah) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@casalsgh](https://github.com/casalsgh) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.18.2 +`2021-10-01 · 2 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🐛 Bug fixes + + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +- Update visitor info on email reception based on current inbox settings ([#23280](https://github.com/RocketChat/Rocket.Chat/pull/23280)) + +
+🔍 Minor changes + + +- Regression: Change some logs to new format ([#23307](https://github.com/RocketChat/Rocket.Chat/pull/23307)) + +- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.18.1 +`2021-09-06 · 1 🚀 · 1 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🚀 Improvements + + +- Change HTTP and Method logs to level INFO ([#23100](https://github.com/RocketChat/Rocket.Chat/pull/23100)) + +### 🐛 Bug fixes + + +- Change way emails are validated on livechat registerGuest method ([#23089](https://github.com/RocketChat/Rocket.Chat/pull/23089)) + +
+🔍 Minor changes + + +- Regression: Auth banner for EE ([#23091](https://github.com/RocketChat/Rocket.Chat/pull/23091) by [@g-thome](https://github.com/g-thome)) + + Dimisses auth banners assigned to EE admins and prevents new ones from appearing. + +- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@g-thome](https://github.com/g-thome)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@casalsgh](https://github.com/casalsgh) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.18.0 +`2021-08-31 · 5 🎉 · 7 🚀 · 20 🐛 · 19 🔍 · 25 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🎉 New features + + +- **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955)) + + - Add new settings to support closing chats that have been too long on waiting queue + - Moved old settings to new "Queue Management" section + - Fix issue when closing a livechat room that caused client to not to know if room was open or not + +- Banner for the updates regarding authentication services ([#23055](https://github.com/RocketChat/Rocket.Chat/pull/23055) by [@g-thome](https://github.com/g-thome)) + + Add a banner to inform admins about future authentication changes. This banner targets servers that use some sort of authentication service since they're the ones which this update concerns the most. + +- Report "Read Receipts" setting on stat collector ([#23033](https://github.com/RocketChat/Rocket.Chat/pull/23033)) + +- REST endpoint to delete a DM and allow DM for two other users ([#18022](https://github.com/RocketChat/Rocket.Chat/pull/18022) by [@abrom](https://github.com/abrom)) + + [NEW] Improve DM create/delete API management + +- Separate RegEx Settings for Channels and Usernames validation ([#21937](https://github.com/RocketChat/Rocket.Chat/pull/21937) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Now, there are 2 separate settings for validating names - One for **channels** and another for **usernames**. + + This change also removes the old `UTF8_Names_Validation` setting and adds 2 new settings `UTF8_User_Names_Validation` and `UTF8_Channel_Names_Validation`. + + https://user-images.githubusercontent.com/55396651/116969904-af5bb800-acd4-11eb-9fc4-dacac60cb08f.mp4 + +### 🚀 Improvements + + +- Add default permission 'start-discussion' and 'start-discussion-other-user' to app user ([#22577](https://github.com/RocketChat/Rocket.Chat/pull/22577)) + +- Create thumbnails from uploaded images ([#20907](https://github.com/RocketChat/Rocket.Chat/pull/20907)) + +- Exclude archived rooms from unread-message count ([#22515](https://github.com/RocketChat/Rocket.Chat/pull/22515) by [@nmagedman](https://github.com/nmagedman)) + +- Increase the verbosity of Omnichannel routing system debugging outputs ([#22977](https://github.com/RocketChat/Rocket.Chat/pull/22977)) + +- Rewrite File Upload Modal ([#22750](https://github.com/RocketChat/Rocket.Chat/pull/22750)) + + Image preview: + ![image](https://user-images.githubusercontent.com/40830821/127223432-dccd2182-aec0-430f-8d70-03ac88aec791.png) + + Video preview: + ![image](https://user-images.githubusercontent.com/40830821/127225982-f8b21840-0d9c-4aff-a354-16188c7ed66e.png) + + Files larger than 10mb: + ![image](https://user-images.githubusercontent.com/40830821/127222611-5265040f-a06b-4ec5-b528-89b40e6a9072.png) + +- Types from currentChatsPage.tsx ([#22967](https://github.com/RocketChat/Rocket.Chat/pull/22967)) + +- Use tag autocomplete in more places ([#22902](https://github.com/RocketChat/Rocket.Chat/pull/22902)) + + Use the proper autocomplete component for omnichannel tags, this adds proper sorting of results and better consistency. + +### 🐛 Bug fixes + + +- "Read Only" field description is incorrect when the option is checked ([#21868](https://github.com/RocketChat/Rocket.Chat/pull/21868) by [@epif4nio](https://github.com/epif4nio)) + +- "Users By Time of the Day" chart displays incorrect data for Local Timezone ([#22836](https://github.com/RocketChat/Rocket.Chat/pull/22836)) + + - Add local timezone conversion to the "Users By Time of the Day" chart in the Engagement Dashboard; + - Simplify date creations by using `endOf` and `startOf` methods. + +- Atlassian Crowd connection not working ([#22996](https://github.com/RocketChat/Rocket.Chat/pull/22996) by [@piotrkochan](https://github.com/piotrkochan)) + +- Audio recording doesn't stop in direct messages on channel switch ([#22880](https://github.com/RocketChat/Rocket.Chat/pull/22880)) + + - Cancel audio recordings on message bar destroy event. + ![test-22372](https://user-images.githubusercontent.com/36537004/128569780-d83747b0-fb9c-4dc6-9bc5-7ae573e720c8.gif) + +- Bad words falling if message is empty ([#22930](https://github.com/RocketChat/Rocket.Chat/pull/22930)) + +- Broken download link on uploaded files ([#22848](https://github.com/RocketChat/Rocket.Chat/pull/22848) by [@ostjen](https://github.com/ostjen)) + + Uploaded files had wrong download links when the deploy had a sub directory. This misbehavior was caused by the wrong usage of the rtrim method, the 2nd parameter is a list of chars, [not a string](https://www.php.net/manual/pt_BR/function.rtrim.php) (this method was inspired by php) + +- Can't access other administration menus after opening Engagement Dashboard ([#22870](https://github.com/RocketChat/Rocket.Chat/pull/22870) by [@ostjen](https://github.com/ostjen)) + +- Go command duplicating subfolder path on iframes. ([#22796](https://github.com/RocketChat/Rocket.Chat/pull/22796) by [@ostjen](https://github.com/ostjen)) + +- Manually approve new users is not applied to SAML users ([#22823](https://github.com/RocketChat/Rocket.Chat/pull/22823) by [@ostjen](https://github.com/ostjen)) + +- Production-environment dependencies ([#22868](https://github.com/RocketChat/Rocket.Chat/pull/22868)) + + `@rocket.chat/icons` was incorrectly referred as development dependency. + +- QuickActions for mobile screen ([#23016](https://github.com/RocketChat/Rocket.Chat/pull/23016)) + +- Registration not possible with TOTP and email verification ([#22778](https://github.com/RocketChat/Rocket.Chat/pull/22778) by [@ostjen](https://github.com/ostjen)) + +- Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850)) + + - Added new setting to manage timezones + - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) + - Change getAnalyticsBetweenDate query to filter out system messages instead of substracting them + +- Tab margin style ([#22851](https://github.com/RocketChat/Rocket.Chat/pull/22851)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/128103848-2a25ba7e-0e59-4502-9bcd-2569cad9379a.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/128103633-ec7b93fc-4667-4dc9-bad3-bfffaff3974e.png) + +- Threads and discussions searches don't display proper results ([#22914](https://github.com/RocketChat/Rocket.Chat/pull/22914)) + + - _Fix_ issue in discussions search (which wasn't working after a search with no results was made); + - _Improve_ discussions and threads searches: both searches (`chat.getDiscussions` and `chat.getThreadsList`) are now case insensitive (do NOT differ capital from lower letters) and match incomplete words or terms. + +- Threads List being requested more than expected ([#22879](https://github.com/RocketChat/Rocket.Chat/pull/22879)) + +- TypeError on Callout type prop ([#22790](https://github.com/RocketChat/Rocket.Chat/pull/22790) by [@hrahul2605](https://github.com/hrahul2605)) + +- User is still asked for 2FA confirmation even if it is deactivated ([#22801](https://github.com/RocketChat/Rocket.Chat/pull/22801) by [@ostjen](https://github.com/ostjen)) + +- User presence being processes even if presence monitor was disabled ([#22927](https://github.com/RocketChat/Rocket.Chat/pull/22927)) + +- users registered via third party apps bypass custom required fields ([#22396](https://github.com/RocketChat/Rocket.Chat/pull/22396) by [@g-thome](https://github.com/g-thome)) + + moves the custom fields from the initial registration form to the "pick a username" screen so that everyone is forced to fill the custom required fields + +
+🔍 Minor changes + + +- Bump: Fuselage 0.29.0 ([#23067](https://github.com/RocketChat/Rocket.Chat/pull/23067)) + +- Chore: Enable husky pre-push hook (back again) ([#22994](https://github.com/RocketChat/Rocket.Chat/pull/22994)) + +- Chore: Fix RHEL container build issue due to gpg keyserver deprecation ([#22672](https://github.com/RocketChat/Rocket.Chat/pull/22672) by [@jsm84](https://github.com/jsm84)) + + Changed gpg keyserver in RHEL Dockerfile to openpgp.org due to deprecation of the SKS keyserver network. + +- Chore: Fix typo in rtl.css ([#22431](https://github.com/RocketChat/Rocket.Chat/pull/22431) by [@eltociear](https://github.com/eltociear)) + +- Chore: Prevent new JS files being added ([#22972](https://github.com/RocketChat/Rocket.Chat/pull/22972)) + + We are moving our code base to TS, one way to help developers remember this is create a task that will notify you every time a new file is created. + +- Chore: Script to start Rocket.Chat in HA mode during development ([#22398](https://github.com/RocketChat/Rocket.Chat/pull/22398)) + + Sometimes we need to start Rocket.Chat in High-Availability mode (cluster) during development to test how a feature behaves or hunt down a bug. Currently, this involves a lot of commands with details that might be lost if you haven't done it in a while. + + This PR intends to provide a really simple way for us to start many instances of Rocket.Chat connected in a cluster. + +- Chore: Update Livechat widget to 1.9.4 ([#22990](https://github.com/RocketChat/Rocket.Chat/pull/22990)) + +- i18n: Language update from LingoHub 🤖 on 2021-08-09Z ([#22888](https://github.com/RocketChat/Rocket.Chat/pull/22888)) + +- i18n: Language update from LingoHub 🤖 on 2021-08-16Z ([#22937](https://github.com/RocketChat/Rocket.Chat/pull/22937)) + +- i18n: Language update from LingoHub 🤖 on 2021-08-23Z ([#23007](https://github.com/RocketChat/Rocket.Chat/pull/23007)) + +- Merge master into develop & Set version to 3.18.0-develop ([#22834](https://github.com/RocketChat/Rocket.Chat/pull/22834)) + +- Regression: Attachment not rendering on message ([#23046](https://github.com/RocketChat/Rocket.Chat/pull/23046)) + +- Regression: File upload name suggestion ([#22953](https://github.com/RocketChat/Rocket.Chat/pull/22953)) + + Before: + ![image](https://user-images.githubusercontent.com/40830821/129774936-ecdbe9a1-5e3f-4a0a-ad1e-6f13eb15c60b.png) + ![image](https://user-images.githubusercontent.com/40830821/129775011-fb0df01d-74e4-41ae-bb47-dcf4cc17735e.png) + + + After: + ![image](https://user-images.githubusercontent.com/40830821/129774877-928a8aa0-c003-4e57-8b33-ea6accc32774.png) + ![image](https://user-images.githubusercontent.com/40830821/129774972-d67debaf-0ce9-44fb-93cb-d7612dd18edf.png) + +- Regression: Fix creation of self-DMs ([#23015](https://github.com/RocketChat/Rocket.Chat/pull/23015)) + +- Regression: Logs were missing from Omnichannel callback methods ([#23048](https://github.com/RocketChat/Rocket.Chat/pull/23048)) + +- Regression: no-js-action bump version ([#22997](https://github.com/RocketChat/Rocket.Chat/pull/22997)) + +- Regression: readNow blocked by a invalid condition ([#22952](https://github.com/RocketChat/Rocket.Chat/pull/22952)) + +- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942)) + +- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@abrom](https://github.com/abrom) +- [@aditya-mitra](https://github.com/aditya-mitra) +- [@eltociear](https://github.com/eltociear) +- [@epif4nio](https://github.com/epif4nio) +- [@g-thome](https://github.com/g-thome) +- [@hrahul2605](https://github.com/hrahul2605) +- [@jsm84](https://github.com/jsm84) +- [@nmagedman](https://github.com/nmagedman) +- [@ostjen](https://github.com/ostjen) +- [@piotrkochan](https://github.com/piotrkochan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.17.2 +`2021-08-26 · 3 🐛 · 1 🔍 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🐛 Bug fixes + + +- applyChatRestictions callback not working for community version ([#22839](https://github.com/RocketChat/Rocket.Chat/pull/22839) by [@Shailesh351](https://github.com/Shailesh351)) + + Building on top of https://github.com/RocketChat/Rocket.Chat/pull/22838 + +- Error getting default agent when routing system algorithm is Auto Selection ([#22976](https://github.com/RocketChat/Rocket.Chat/pull/22976)) + +- Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991)) + + - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter + - Fixed an issue when both user & system setting to manange EE max number of chats allowed were set to 0 + +
+🔍 Minor changes + + +- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Shailesh351](https://github.com/Shailesh351) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.17.1 +`2021-08-16 · 5 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🐛 Bug fixes + + +- "Click to Join" button is not working if there are no muted users in the room ([#22871](https://github.com/RocketChat/Rocket.Chat/pull/22871)) + + - Add check to `room.muted` array so as to cover the case in which it is `undefined`; + +- Apps-Engine's scheduler failing to update run tasks ([#22882](https://github.com/RocketChat/Rocket.Chat/pull/22882)) + + [Agenda](https://github.com/agenda/agenda), the library that manages scheduling, depended on setting a job property named `nextRunAt` as `undefined` to signal whether it should be run on schedule or not. [Rocket.Chat's current Mongo driver](https://github.com/RocketChat/Rocket.Chat/pull/22399) ignores `undefined` values when updating documents and this was causing jobs to never stop running as Agenda couldn't clear that property (set them as `undefined`). + This updates Rocket.Chat's dependency on Agenda.js to point to [a fork that fixes the problem](https://github.com/RocketChat/agenda/releases/tag/3.1.2). + +- Close omnichannel conversations when agent is deactivated ([#22917](https://github.com/RocketChat/Rocket.Chat/pull/22917)) + +- Message update not working in some cases ([#22856](https://github.com/RocketChat/Rocket.Chat/pull/22856)) + +- Use correct param on saveBusinessHour method ([#22835](https://github.com/RocketChat/Rocket.Chat/pull/22835)) + +
+🔍 Minor changes + + +- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@d-gubert](https://github.com/d-gubert) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) + +# 3.17.0 +`2021-07-30 · 7 🎉 · 19 🚀 · 39 🐛 · 56 🔍 · 28 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🎉 New features + + +- `roles.delete` endpoint ([#22497](https://github.com/RocketChat/Rocket.Chat/pull/22497) by [@lucassartor](https://github.com/lucassartor)) + +- Collect data about LDAP, SAML, CAS and OAuth usage. ([#22719](https://github.com/RocketChat/Rocket.Chat/pull/22719)) + +- Convert Team to Channel ([#22476](https://github.com/RocketChat/Rocket.Chat/pull/22476)) + + ![image](https://user-images.githubusercontent.com/27704687/123525502-8558bd80-d6a7-11eb-8211-12633cb3b5c6.png) + +- Federation setup ([#22208](https://github.com/RocketChat/Rocket.Chat/pull/22208) by [@g-thome](https://github.com/g-thome)) + +- Logout other user endpoint ([#22661](https://github.com/RocketChat/Rocket.Chat/pull/22661) by [@ostjen](https://github.com/ostjen)) + +- Monitoring Track messages' round trip time ([#22676](https://github.com/RocketChat/Rocket.Chat/pull/22676)) + + Track messages' roundtrip time from backend saves time to the time when received back from the oplog allowing track of oplog slowness. + Prometheus metric: `rocketchat_messages_roundtrip_time` + +- REST endpoint to remove User from Role ([#20485](https://github.com/RocketChat/Rocket.Chat/pull/20485) by [@Cosnavel](https://github.com/Cosnavel) & [@lucassartor](https://github.com/lucassartor) & [@ostjen](https://github.com/ostjen)) + +### 🚀 Improvements + + +- Canned responses ([#22703](https://github.com/RocketChat/Rocket.Chat/pull/22703) by [@rafaelblink](https://github.com/rafaelblink)) + +- Change message deletion confirmation modal to toast ([#22544](https://github.com/RocketChat/Rocket.Chat/pull/22544)) + + Changed a timed modal for a toast message + ![image](https://user-images.githubusercontent.com/40830821/124192670-0646f900-da9c-11eb-941c-9ae35421f6ef.png) + +- Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705)) + + * Add `appId` field to the data saved by the Scheduler + * Add `appId` index to `rocketchat_apps_persistence` model + * Skip "trash collection" when deleting records from `rocketchat_apps_persistence` + * Add a new setting to control for how long we should keep logs from the apps + + ![image](https://user-images.githubusercontent.com/1810309/126246666-907f9d98-1d84-4dfe-a80a-7dd874d36fa8.png) + + + ![image](https://user-images.githubusercontent.com/1810309/126246655-2ce3cb5f-b2f5-456e-a9c4-beccd9b3ef41.png) + +- Make `shortcut` field of canned responses unique ([#22700](https://github.com/RocketChat/Rocket.Chat/pull/22700)) + +- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123)) + + Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments + +- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@rafaelblink](https://github.com/rafaelblink)) + + This uses the paginated multiselect for the EE tags selection, allowing more than 50 tags to be shown. + +- Preview message URLs only once ([#22516](https://github.com/RocketChat/Rocket.Chat/pull/22516) by [@nmagedman](https://github.com/nmagedman)) + +- Refactor `livechat.registerGuest` function ([#22684](https://github.com/RocketChat/Rocket.Chat/pull/22684)) + +- Replace OTR Icon on Contextual Bar & Update Icons ([#22377](https://github.com/RocketChat/Rocket.Chat/pull/22377)) + + ![image](https://user-images.githubusercontent.com/27704687/122999868-2cc2b100-d385-11eb-8f30-3f34998d0b5d.png) + +- Replace remaing discussion creation modals with React modal. ([#22448](https://github.com/RocketChat/Rocket.Chat/pull/22448)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/123840524-cbe72b80-d8e4-11eb-9ddb-23a9f9d90aac.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/123840219-74e15680-d8e4-11eb-95aa-00a990ffe0e7.png) + +- Return open room if available for visitors ([#22742](https://github.com/RocketChat/Rocket.Chat/pull/22742)) + +- Rewrite Enter Encryption Password Modal ([#22456](https://github.com/RocketChat/Rocket.Chat/pull/22456)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/123182889-bbf3c580-d466-11eb-8d4d-9cfc3d224e33.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/123182916-cada7800-d466-11eb-96ee-850be190d419.png) + + ### Aditional Improves: + - Added a visual validation in the password field + +- Rewrite OTR modals ([#22583](https://github.com/RocketChat/Rocket.Chat/pull/22583)) + + ![image](https://user-images.githubusercontent.com/40830821/124513267-cb510800-ddb0-11eb-8165-f103029c348f.png) + ![image](https://user-images.githubusercontent.com/40830821/124513354-04897800-ddb1-11eb-96f4-41fe906ca0d7.png) + ![image](https://user-images.githubusercontent.com/40830821/124513395-1b2fcf00-ddb1-11eb-83e4-3f8f9b4676ba.png) + +- Rewrite Save Encryption Password Modal ([#22447](https://github.com/RocketChat/Rocket.Chat/pull/22447)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/122980201-c337a800-d36e-11eb-8e2b-68534cea8e1e.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/122980409-f8dc9100-d36e-11eb-9c15-aff779c84a91.png) + +- Rewrite sidebar footer as React Component ([#22687](https://github.com/RocketChat/Rocket.Chat/pull/22687)) + +- Rewrite URL check modal ([#22540](https://github.com/RocketChat/Rocket.Chat/pull/22540)) + + ![image](https://user-images.githubusercontent.com/40830821/124157878-a3d80380-da6f-11eb-8bd8-03dffd14c658.png) + +- Sidebar icons margins ([#22498](https://github.com/RocketChat/Rocket.Chat/pull/22498)) + +- Update README.md ([#22462](https://github.com/RocketChat/Rocket.Chat/pull/22462)) + +- Wrong error message when trying to create a blocked username ([#22452](https://github.com/RocketChat/Rocket.Chat/pull/22452) by [@lucassartor](https://github.com/lucassartor)) + + When trying to create a user with a blocked username, the UI was showing generic error message that it wasn't very detailed. + + Old error message: + ![image](https://user-images.githubusercontent.com/49413772/123120080-6d203e80-d41a-11eb-8c87-64e34334c856.png) + + New error message: + ![aaa](https://user-images.githubusercontent.com/49413772/123120251-8c1ed080-d41a-11eb-8dc2-d7484923d851.PNG) + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Engagement Dashboard displaying incorrect data about active users ([#22381](https://github.com/RocketChat/Rocket.Chat/pull/22381)) + + - Fix sessions' and users' grouping in the Engagement Dashboard API endpoints; + - Fix the data displayed in the charts from the "Active users", "Users by time of day" and "When is the chat busier?" sections of the Engagement Dashboard; + - Replace label used to describe the amount of Active Users in the License section of the Info page. + +- **ENTERPRISE:** Make AutoSelect algo take current agent load in consideration ([#22611](https://github.com/RocketChat/Rocket.Chat/pull/22611)) + +- **ENTERPRISE:** Race condition on Omnichannel visitor abandoned callback ([#22413](https://github.com/RocketChat/Rocket.Chat/pull/22413)) + + As you can see [here](https://github.com/RocketChat/Rocket.Chat/blob/857791c39c97b51b5b6fd3718e0c816959a81c3b/ee/app/livechat-enterprise/server/lib/Helper.js#L127) the `predictedVisitorAbandonment` flag is not set if the room object doesn't have `v.lastMessageTs` property. So we need to always make sure the `v.lastMessageTs` is set before this method is called. + + Currently the `v.lastMessageTs` is being set in [this](https://github.com/RocketChat/Rocket.Chat/blob/857791c39c97b51b5b6fd3718e0c816959a81c3b/app/livechat/server/hooks/saveLastVisitorMessageTs.js#L4) (lets call this **hook-1**) hook which has `HIGH` priority + and the `predictedVisitorAbandonment` check is inturn performed in [this](https://github.com/RocketChat/Rocket.Chat/blob/857791c39c97b51b5b6fd3718e0c816959a81c3b/ee/app/livechat-enterprise/server/hooks/setPredictedVisitorAbandonmentTime.js#L5) (let call this **hook-2**) hook which is also `HIGH` priority. + + So ideally we'd except the **hook-1** to be called b4 **hook-2**, however currently since both of them are at same priority, there is no way to control which one is executed first. Hence in this PR, I'm making the priority of **hook-2** as `MEDIUM` to keeping the priority of **hook-1** the same as b4, i.e. `HIGH`. This should make sure that the **hook-1** is always executed b4 **hook-2** + +- Admin page crashing when commit hash is null ([#22057](https://github.com/RocketChat/Rocket.Chat/pull/22057) by [@cprice-kgi](https://github.com/cprice-kgi)) + + If the commit hash happens to be null, the administration page will still attempt to slice the value and display it. This causes the admin page to not display, and essentially crash the web app. This fixes it by checking for a null value first. + +- Blank screen in message auditing DM tab ([#22763](https://github.com/RocketChat/Rocket.Chat/pull/22763) by [@ostjen](https://github.com/ostjen)) + + The DM tab in message auditing was displaying a blank screen, instead of the actual tab. + + ![image](https://user-images.githubusercontent.com/28611993/127041404-dfca7f6a-2b8b-4c15-9cbd-c6238fac0063.png) + +- Bugs in AutoCompleteDepartment ([#22414](https://github.com/RocketChat/Rocket.Chat/pull/22414)) + +- Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170)) + + - Hide 'Call' buttons from the tab bar for muted users; + - Display an error when a muted user attempts to enter a call using the 'Click to Join!' button. + +- Can't see full user profile on team's room ([#22355](https://github.com/RocketChat/Rocket.Chat/pull/22355)) + + ### before + ![before](https://user-images.githubusercontent.com/27704687/121966860-bbac4980-cd45-11eb-8d48-2b0457110fc7.gif) + + ### after + ![after](https://user-images.githubusercontent.com/27704687/121966870-bea73a00-cd45-11eb-9c89-ec52ac17e20f.gif) + + ### aditional fix :rocket: + - unnecessary `TeamsMembers` component removed + +- Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor)) + + When trying to create a discussion using the top left sidebar modal with an role that don't have the `view-other-user-channels ` permission, an empty list would be shown, which is a wrong behavior. + Also, when being able to use this modal, discussions were listed as options, which is also a wrong behavior as there can't be nested discussions. + + This PR looks to fix both these issues. + + **Old behavior:** + ![old](https://user-images.githubusercontent.com/49413772/124960017-3c333280-dff2-11eb-86cd-b2638311517e.png) + + **New behavior:** + ![image](https://user-images.githubusercontent.com/49413772/124958882-05a8e800-dff1-11eb-8203-b34a4f1c98a0.png) + +- Channel is automatically getting added to the first option in move to team feature ([#22670](https://github.com/RocketChat/Rocket.Chat/pull/22670) by [@ostjen](https://github.com/ostjen)) + +- Channels or Teams deleted are not removed from the sidebar. ([#22613](https://github.com/RocketChat/Rocket.Chat/pull/22613) by [@ostjen](https://github.com/ostjen)) + +- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584)) + +- Confirm owner change process when deleting own account ([#22609](https://github.com/RocketChat/Rocket.Chat/pull/22609)) + +- Content-Security-Policy ignoring CDN configuration ([#22791](https://github.com/RocketChat/Rocket.Chat/pull/22791) by [@nmagedman](https://github.com/nmagedman)) + +- Create discussion modal - cancel button and invite users alignment ([#22718](https://github.com/RocketChat/Rocket.Chat/pull/22718) by [@ostjen](https://github.com/ostjen)) + + Changes in "open discussion" modal + + > Added cancel button + > Fixed alignment in invite user + + + ![image](https://user-images.githubusercontent.com/28611993/126388304-6ac76574-6924-426e-843d-afd53dc1c874.png) + +- crush in the getChannelHistory method ([#22667](https://github.com/RocketChat/Rocket.Chat/pull/22667) by [@MaestroArt](https://github.com/MaestroArt)) + +- Deleting own account asks for the username in the UI instead of the password ([#22405](https://github.com/RocketChat/Rocket.Chat/pull/22405)) + +- Emoji not rendered on attachments description ([#22437](https://github.com/RocketChat/Rocket.Chat/pull/22437)) + +- Error in permission check for getLivechatDepartmentByNameOrId method in Apps ([#22545](https://github.com/RocketChat/Rocket.Chat/pull/22545)) + + Update the Apps-Engine with a fix for the permission check on the `getLivechatDepartmentByNameOrId` method + +- Livechat apps permission error ([#22511](https://github.com/RocketChat/Rocket.Chat/pull/22511)) + + Updated Apps-Engine version fixes errors with apps using livechat features. + +- Livechat config endpoint is not returning all settings ([#22686](https://github.com/RocketChat/Rocket.Chat/pull/22686)) + +- Livechat webhook request without headers ([#22589](https://github.com/RocketChat/Rocket.Chat/pull/22589)) + +- Markdown for UiKit blocks ([#22619](https://github.com/RocketChat/Rocket.Chat/pull/22619)) + +- Omnichannel - Fix issue with modals on room preview mode. ([#22541](https://github.com/RocketChat/Rocket.Chat/pull/22541)) + +- Omnichannel/Twilio - When a file is sent as first message, chat is not queued ([#22590](https://github.com/RocketChat/Rocket.Chat/pull/22590)) + +- Prune messages not applying the user filter ([#22506](https://github.com/RocketChat/Rocket.Chat/pull/22506)) + +- Put title into AutocompleteDepartment components ([#22417](https://github.com/RocketChat/Rocket.Chat/pull/22417)) + + Dependencies: https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/475 + +- Quote message not working for Livechat visitors ([#22586](https://github.com/RocketChat/Rocket.Chat/pull/22586)) + + ### Before: + ![image](https://user-images.githubusercontent.com/34130764/124583613-de2b1180-de70-11eb-82aa-18564b317626.png) + ### After: + ![image](https://user-images.githubusercontent.com/34130764/124583775-12063700-de71-11eb-8ab5-b0169fac2d40.png) + +- Redirect to login after delete own account ([#22499](https://github.com/RocketChat/Rocket.Chat/pull/22499)) + + Redirect the user to login after delete own account + + ### Aditional fixes: + - Visual issue in password input on Delete Own Account Modal + + ### before + ![image](https://user-images.githubusercontent.com/27704687/123711503-f5ea1080-d846-11eb-96aa-8ed638ca665c.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/123711336-b3c0cf00-d846-11eb-9408-a686d8668ba5.png) + +- Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699)) + + - Fix 'not iterable' errors in the `normalizeMessage` function; + - Remove stack traces from errors thrown by the `jitsi:updateTimeout` (and other `Meteor.Error`s) method. + +- Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424)) + +- Sort AutocompleteDepartmentsMultiple ([#22419](https://github.com/RocketChat/Rocket.Chat/pull/22419)) + +- status message won't show up for other users ([#22110](https://github.com/RocketChat/Rocket.Chat/pull/22110) by [@g-thome](https://github.com/g-thome)) + + replace the current blaze block that queries the local session store by a react component that fetches memoized user data + +- Store department value correctly ([#22685](https://github.com/RocketChat/Rocket.Chat/pull/22685)) + +- Support ID param on createVisitor method ([#22772](https://github.com/RocketChat/Rocket.Chat/pull/22772)) + +- UIKit URL prop being ignored for buttons ([#22579](https://github.com/RocketChat/Rocket.Chat/pull/22579)) + +- Unnecessary space on members list footer ([#22514](https://github.com/RocketChat/Rocket.Chat/pull/22514)) + +- Use room's last message time when visitor did not send any message ([#22695](https://github.com/RocketChat/Rocket.Chat/pull/22695) by [@ericrosenthal](https://github.com/ericrosenthal)) + +- VisitorClientInfo not showing ([#22593](https://github.com/RocketChat/Rocket.Chat/pull/22593)) + + ![image](https://user-images.githubusercontent.com/17487063/124694887-87492a80-deb8-11eb-89a3-a0e407841a32.png) + +
+🔍 Minor changes + + +- [Fix] Omnichannel Real Time Monitoring charts not displaying all data ([#22363](https://github.com/RocketChat/Rocket.Chat/pull/22363)) + +- [Fix] Real Time Monitoring charts - chats-per-agent and chats-per-department - not visible ([#22406](https://github.com/RocketChat/Rocket.Chat/pull/22406)) + +- Bump actions/stale from 3.0.18 to 3.0.19 ([#22060](https://github.com/RocketChat/Rocket.Chat/pull/22060) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump glob-parent from 5.1.1 to 5.1.2 in /ee/server/services ([#22328](https://github.com/RocketChat/Rocket.Chat/pull/22328) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump: Fuselage 0.28.0 ([#22822](https://github.com/RocketChat/Rocket.Chat/pull/22822)) + +- Chore: [Snyk] Security upgrade node-gcm from 0.14.4 to 1.0.0 ([#22582](https://github.com/RocketChat/Rocket.Chat/pull/22582) by [@snyk-bot](https://github.com/snyk-bot)) + +- Chore: added pagination to search msg endpoint ([#22632](https://github.com/RocketChat/Rocket.Chat/pull/22632) by [@ostjen](https://github.com/ostjen)) + +- Chore: Create README.md ([#22615](https://github.com/RocketChat/Rocket.Chat/pull/22615)) + +- Chore: Enable Omnicahnnel by default ([#22697](https://github.com/RocketChat/Rocket.Chat/pull/22697) by [@ostjen](https://github.com/ostjen)) + +- Chore: Meteor 2.2 and bump dependencies ([#22399](https://github.com/RocketChat/Rocket.Chat/pull/22399)) + +- Chore: Remove JSON parse middleware ([#22454](https://github.com/RocketChat/Rocket.Chat/pull/22454)) + +- Chore: Remove Sodium from the main client ([#22459](https://github.com/RocketChat/Rocket.Chat/pull/22459)) + +- Chore: Review some dependencies ([#22522](https://github.com/RocketChat/Rocket.Chat/pull/22522)) + + Upgrade some development dependencies. + +- Chore: Support other pr titles ([#22494](https://github.com/RocketChat/Rocket.Chat/pull/22494)) + +- Chore: Upgrade Micro Services NPM dependencies ([#22561](https://github.com/RocketChat/Rocket.Chat/pull/22561)) + +- Chore: Upgrade NPM dependencies ([#22562](https://github.com/RocketChat/Rocket.Chat/pull/22562)) + +- Chore: Use projection instead of fields to avoid error log ([#22629](https://github.com/RocketChat/Rocket.Chat/pull/22629)) + +- Fix Closed chats doesn't shows who picked the call ([#22368](https://github.com/RocketChat/Rocket.Chat/pull/22368)) + +- i18n: Language update from LingoHub 🤖 on 2021-06-28Z ([#22491](https://github.com/RocketChat/Rocket.Chat/pull/22491)) + +- i18n: Language update from LingoHub 🤖 on 2021-07-05Z ([#22572](https://github.com/RocketChat/Rocket.Chat/pull/22572)) + +- Merge master into develop & Set version to 3.17.0-develop ([#22493](https://github.com/RocketChat/Rocket.Chat/pull/22493)) + +- Regression: Added missing translate keys for Federation ([#22810](https://github.com/RocketChat/Rocket.Chat/pull/22810)) + +- Regression: Allow users to search canned responses based on shortcut or content ([#22735](https://github.com/RocketChat/Rocket.Chat/pull/22735)) + +- Regression: Allow users to update canned responses scope ([#22738](https://github.com/RocketChat/Rocket.Chat/pull/22738)) + +- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620)) + +- Regression: Check for text before parse preview in create canned response form ([#22754](https://github.com/RocketChat/Rocket.Chat/pull/22754)) + +- Regression: Client crashing on startup ([#22610](https://github.com/RocketChat/Rocket.Chat/pull/22610)) + +- Regression: Create livechat-monitor permissions for Canned Responses ([#22781](https://github.com/RocketChat/Rocket.Chat/pull/22781)) + +- Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794)) + + - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; + - Downgrade `@nivo/line` version. + **Expected behavior:** + ![active-users-engagement-dashboard](https://user-images.githubusercontent.com/36537004/127372185-390dc42f-bc90-4841-a22b-731f0aafcafe.PNG) + +- Regression: Data in the "New Users" section is delayed in 1 day ([#22751](https://github.com/RocketChat/Rocket.Chat/pull/22751)) + + - Update nivo version (which was causing errors in the bar chart); + - Fix 1 day delay in '7 days' and '30 days' periods; + - Update tooltip theme. + +- Regression: Federation warnings on ci ([#22765](https://github.com/RocketChat/Rocket.Chat/pull/22765) by [@g-thome](https://github.com/g-thome)) + + fix some linting warnings on federation modal + +- Regression: Filter of canned responses in contextual-bar ([#22762](https://github.com/RocketChat/Rocket.Chat/pull/22762)) + +- Regression: fix canned responses filters for monitors ([#22782](https://github.com/RocketChat/Rocket.Chat/pull/22782)) + +- Regression: Fix canned responses permissions for monitors & managers ([#22793](https://github.com/RocketChat/Rocket.Chat/pull/22793)) + +- Regression: Fix ee microservices build ([#22656](https://github.com/RocketChat/Rocket.Chat/pull/22656)) + +- Regression: Fix empty canned responses table when searching ([#22743](https://github.com/RocketChat/Rocket.Chat/pull/22743)) + +- Regression: Fix empty tag field ([#22767](https://github.com/RocketChat/Rocket.Chat/pull/22767)) + +- Regression: fix non ee tag field on canned responses ([#22775](https://github.com/RocketChat/Rocket.Chat/pull/22775)) + +- Regression: fix outdated data on canned filters ([#22766](https://github.com/RocketChat/Rocket.Chat/pull/22766)) + +- Regression: Fix tooltip style in the "Busiest Chat Times" chart ([#22813](https://github.com/RocketChat/Rocket.Chat/pull/22813)) + + - Fix tooltip in the Engagement Dashboard's "Busiest Chat Times" chart (Hours). + + **Expected behavior:** + ![busiest-times-ed](https://user-images.githubusercontent.com/36537004/127527827-465397ed-f089-4fb7-9ab2-6fa8cea6abdf.PNG) + +- Regression: Fix users not being able to see the scope of the canned m… ([#22760](https://github.com/RocketChat/Rocket.Chat/pull/22760)) + +- Regression: Fixes empty department field on edit canned responses ([#22741](https://github.com/RocketChat/Rocket.Chat/pull/22741)) + + This fixes the empty department field when editing a canned response via table on omnichannel menu. this also convert some of the files to TS that were created in js initially, also created/adjusted some types + +- Regression: Internal Error when saving files using GridFS ([#22792](https://github.com/RocketChat/Rocket.Chat/pull/22792)) + +- Regression: observe-sequence version syntax broken on IE ([#22557](https://github.com/RocketChat/Rocket.Chat/pull/22557)) + +- Regression: Parse canned responses placeholders ([#22777](https://github.com/RocketChat/Rocket.Chat/pull/22777)) + +- Regression: Prevent custom status from being visible in sequential messages ([#22733](https://github.com/RocketChat/Rocket.Chat/pull/22733)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/126641946-866dae96-1983-43a5-b689-b24670473ad0.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/126641752-3163eb95-1cd4-4d99-a61a-4d06d9e7e13e.png) + +- Regression: Properly force newline in attachment fields ([#22727](https://github.com/RocketChat/Rocket.Chat/pull/22727)) + + I've incorrectly enforcing the newline character in attachment fields, resulting in "<br />" text being rendered. + +- Regression: Remove Tags from canned response filter ([#22779](https://github.com/RocketChat/Rocket.Chat/pull/22779)) + +- Regression: Replaced manual state control with a .once event ([#22800](https://github.com/RocketChat/Rocket.Chat/pull/22800)) + +- Regression: Rocket.Chat crashes on startup if there's a Custom OAuth service configured ([#22740](https://github.com/RocketChat/Rocket.Chat/pull/22740)) + +- Regression: roles.removeUserFromRole API not working with scoped roles. ([#22799](https://github.com/RocketChat/Rocket.Chat/pull/22799)) + +- Regression: Small UI changes Federation ([#22811](https://github.com/RocketChat/Rocket.Chat/pull/22811)) + +- Regression: Text wrap in MarkdownTextEditor and PreviewText ([#22798](https://github.com/RocketChat/Rocket.Chat/pull/22798)) + +- Regression: Translate scope on canned responses dashboard ([#22773](https://github.com/RocketChat/Rocket.Chat/pull/22773)) + +- Release 3.16.4 ([#22815](https://github.com/RocketChat/Rocket.Chat/pull/22815)) + +- revert the lastMessage fix for visitor abandonment ([#22720](https://github.com/RocketChat/Rocket.Chat/pull/22720) by [@ericrosenthal](https://github.com/ericrosenthal)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Cosnavel](https://github.com/Cosnavel) +- [@MaestroArt](https://github.com/MaestroArt) +- [@cprice-kgi](https://github.com/cprice-kgi) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@ericrosenthal](https://github.com/ericrosenthal) +- [@g-thome](https://github.com/g-thome) +- [@lucassartor](https://github.com/lucassartor) +- [@nmagedman](https://github.com/nmagedman) +- [@ostjen](https://github.com/ostjen) +- [@rafaelblink](https://github.com/rafaelblink) +- [@snyk-bot](https://github.com/snyk-bot) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@Faria-TechWrite](https://github.com/Faria-TechWrite) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.16.4 +`2021-07-30 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +
+🔍 Minor changes + + +- Release 3.16.4 ([#22815](https://github.com/RocketChat/Rocket.Chat/pull/22815)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + +# 3.16.3 +`2021-07-13 · 1 🐛 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🐛 Bug fixes + + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.16.2 +`2021-07-08 · 4 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.1` + +### 🐛 Bug fixes + + +- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584)) + +- Error in permission check for getLivechatDepartmentByNameOrId method in Apps ([#22545](https://github.com/RocketChat/Rocket.Chat/pull/22545)) + + Update the Apps-Engine with a fix for the permission check on the `getLivechatDepartmentByNameOrId` method + +- Livechat webhook request without headers ([#22589](https://github.com/RocketChat/Rocket.Chat/pull/22589)) + +- Markdown for UiKit blocks ([#22619](https://github.com/RocketChat/Rocket.Chat/pull/22619)) + +
+🔍 Minor changes + + +- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.16.1 +`2021-07-01 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.0` + +### 🐛 Bug fixes + + +- Livechat apps permission error ([#22511](https://github.com/RocketChat/Rocket.Chat/pull/22511)) + + Updated Apps-Engine version fixes errors with apps using livechat features. + +- Prune messages not applying the user filter ([#22506](https://github.com/RocketChat/Rocket.Chat/pull/22506)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.16.0 +`2021-06-28 · 5 🎉 · 13 🚀 · 44 🐛 · 26 🔍 · 23 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.27.0-alpha.5237` + +### 🎉 New features + + +- Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188)) + + - Add new `teams.converToChannel` endpoint; + - Update `ConvertToTeam` modal text (since this action can now be reversed); + - Remove corresponding team memberships when a team is deleted or converted to a channel; + +- Add setting to configure default role for user on manual registration ([#20650](https://github.com/RocketChat/Rocket.Chat/pull/20650) by [@lucassartor](https://github.com/lucassartor)) + + Add an `admin` setting to determine the initial `role` for new users who registered manually (through the register form and via API, not using an authentication service), normally all new users are assigned to the `user` role. + + The setting can be found in `Admin`->`Accounts`->`Registration`. + + ![image](https://user-images.githubusercontent.com/49413772/107252603-47b70900-6a14-11eb-9cc6-df76720b7365.png) + The setting initial value is false, so the default behaviour stays the same while creating a new server or upgrading one. + + https://user-images.githubusercontent.com/49413772/107253220-ddeb2f00-6a14-11eb-85b4-f770dbbe4970.mp4 + + Video showing an example of the setting being used and creating an new user with the default roles via API. + +- Content-Security-Policy for inline scripts ([#20724](https://github.com/RocketChat/Rocket.Chat/pull/20724)) + + Security policies were applied for inline scripts cases. Due to the libraries and components we use it is not possible to disable inline styles and images as they would break Oembeds and other libraries. + + + basically the inline scripts were moved to a js file + + and besides that some suggars syntax like `addScript` and `addStyle` were added, this way the application already takes care of inserting the elements and providing the content automatically. + +- Open modals in side effects outside React ([#22247](https://github.com/RocketChat/Rocket.Chat/pull/22247)) + +- Remove "Game Center" setting ([#22232](https://github.com/RocketChat/Rocket.Chat/pull/22232) by [@lolimay](https://github.com/lolimay)) + +### 🚀 Improvements + + +- **APPS:** Refactor bridges ([#21253](https://github.com/RocketChat/Rocket.Chat/pull/21253)) + + Make the bridge classes extend abstract classes provided by the engine instead of just implementing an interface. The new abstract classes feature proxy methods used for permission verification in each method. This is also offers space to add more behaviors before executing the actual bridge methods. + +- Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312)) + + Added 2 new settings: + - `Admin > Video Conference > Big Blue Button > Enable for teams` + - `Admin > Video Conference > Jitsi > Enable in teams` + +- Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097)) + +- Add modal to close chats when tags/comments are not required ([#22245](https://github.com/RocketChat/Rocket.Chat/pull/22245) by [@rafaelblink](https://github.com/rafaelblink)) + + When neither tags or comments are required to close a livechat, show this modal instead: + ![Screen Shot 2021-05-20 at 7 33 19 PM](https://user-images.githubusercontent.com/20868078/119057741-6af23c80-b9a3-11eb-902f-f8a7458ad11c.png) + +- Fallback messages on contextual bar ([#22376](https://github.com/RocketChat/Rocket.Chat/pull/22376)) + + ![image](https://user-images.githubusercontent.com/27704687/122301100-9569e380-ced6-11eb-992a-e3a7fd9d0d73.png) + +- Missing tests to `fname` and `prid` in the `rooms.createDiscussion` endpoint ([#22223](https://github.com/RocketChat/Rocket.Chat/pull/22223)) + + - Add tests to the values of `fname` and `prid` in the `rooms.createDiscussion` endpoint's results. + +- New indexes for Omnichannel-related collections ([#22367](https://github.com/RocketChat/Rocket.Chat/pull/22367)) + +- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123)) + + Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments + +- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@rafaelblink](https://github.com/rafaelblink)) + + This uses the paginated multiselect for the EE tags selection, allowing more than 50 tags to be shown. + +- Remove differentiation between public x private channels in sidebar ([#22160](https://github.com/RocketChat/Rocket.Chat/pull/22160)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/119752184-e7d55880-be72-11eb-9167-be2f305ddb3f.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/119752125-c8d6c680-be72-11eb-8444-2e0c7cb1c600.png) + +- Rewrite create direct modal ([#22209](https://github.com/RocketChat/Rocket.Chat/pull/22209)) + + ![image](https://user-images.githubusercontent.com/27704687/120384584-bb02c480-c2fc-11eb-8e8e-c197b08b5201.png) + +- Rewrite Create Discussion Modal (only through sidebar) ([#22224](https://github.com/RocketChat/Rocket.Chat/pull/22224)) + + This is only available by creating a new discussion when clicking on the sidebar button. Other places will be implemented afterwards. + + ![image](https://user-images.githubusercontent.com/40830821/120556093-6af63180-c3d2-11eb-97ea-63c5423049dc.png) + +- Send only relevant data via WebSocket ([#22258](https://github.com/RocketChat/Rocket.Chat/pull/22258)) + + Previously when any data changed on subscriptions or rooms we were getting fresh data from database, to also remove undesired fields, but sometimes the data that changed was not relevant so we were sending the whole object everytime **without** the fields that actually changed. This change aims to reduce this overhead and also send less data to clients. + +### 🐛 Bug fixes + + +- _updatedAt attribute not being automatically updated by raw models ([#22306](https://github.com/RocketChat/Rocket.Chat/pull/22306)) + +- **EE:** Canned responses can't be deleted ([#22095](https://github.com/RocketChat/Rocket.Chat/pull/22095) by [@rafaelblink](https://github.com/rafaelblink)) + + Deletion button has been removed from the edition option. + + ## Before + ![image](https://user-images.githubusercontent.com/2493803/119059416-9f1b2c80-b9a6-11eb-933a-4efa1ac0552a.png) + + ### After + ![Rocket Chat (2)](https://user-images.githubusercontent.com/2493803/119172517-72b1ef80-ba3c-11eb-9178-04a12176f312.gif) + +- **ENTERPRISE:** Omnichannel enterprise permissions being added back to its default roles ([#22322](https://github.com/RocketChat/Rocket.Chat/pull/22322)) + + Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup. + +- **ENTERPRISE:** Prevent Visitor Abandonment after forwarding chat ([#22243](https://github.com/RocketChat/Rocket.Chat/pull/22243)) + + Currently the Visitor Abandonment timer isn't affected when the chat is forwarded. However this is affecting the UX in certain situations like eg: A bot forwarding a chat to an human agent + ![image](https://user-images.githubusercontent.com/34130764/120896383-e4925780-c63e-11eb-937e-ffd7c4836159.png) + + To solve this issue, we'll now be stoping the Visitor Abandonment timer once a chat is forwarded. + +- **IMPROVE:** Prevent creation of duplicated roles and new `roles.update` endpoint ([#22279](https://github.com/RocketChat/Rocket.Chat/pull/22279) by [@lucassartor](https://github.com/lucassartor)) + + Currently, the action of updating a role is broken: because roles have their `_id` = `name`, when updating a role there's no way to validate if the user is trying to update or create a new role with a name that already exists - which causes wrong behaviors, such as roles with the same name and not being able to update them. + + To proper fix this, this PR looks to change the creation of roles. Now, roles have a unique `_id` value and there's a endpoint to update roles: `/api/v1/roles.update`. + + Doing so, it's possible to validate on both endpoints (`roles.create` and `roles.update`) to not allow roles with duplicated names. + + **OBS:** The unique id changes only reflect new roles, the standard roles (such as admin and user) still have `_id` = `name`, but new roles now **can't** have the same name as them. + +- `channels.history`, `groups.history` and `im.history` REST endpoints not respecting hide system message config ([#22364](https://github.com/RocketChat/Rocket.Chat/pull/22364)) + +- Apps not syncing status correctly on HA setups ([#22415](https://github.com/RocketChat/Rocket.Chat/pull/22415)) + + FIxes erros where, on HA setups, instances that DID NOT originate the action of uninstalling and updating an app would maintain the wrong status of apps when they received the notification of these events via Streamer. + +- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290)) + +- Auditing page not printing all messages ([#22272](https://github.com/RocketChat/Rocket.Chat/pull/22272)) + + Changed CSS so printed media from the auditing page includes all page content. + +- Can't delete file from Room's file list ([#22191](https://github.com/RocketChat/Rocket.Chat/pull/22191)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/120215931-bb239700-c20c-11eb-9494-d4bc017df390.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/120216113-f8882480-c20c-11eb-9afb-b127e66a43da.png) + +- Cancel button and success toast at Leave Team modal ([#22373](https://github.com/RocketChat/Rocket.Chat/pull/22373)) + +- Chore: `team.addMembers` doesn't add member to main team room ([#22169](https://github.com/RocketChat/Rocket.Chat/pull/22169) by [@lucassartor](https://github.com/lucassartor)) + + Fix `team.addMembers` endpoint as it currently doesn't work properly. The API call is adding members to a team's channels but not to the main team room. + +- Convert and Move team permission ([#22350](https://github.com/RocketChat/Rocket.Chat/pull/22350)) + + ### before + https://user-images.githubusercontent.com/45966964/114909360-5c04f100-9e1d-11eb-9363-f308e5d0be68.mp4 + + ### after + https://user-images.githubusercontent.com/45966964/114909388-61fad200-9e1d-11eb-9bbe-114b55954a9f.mp4 + +- CORS error while interacting with any action button on Livechat ([#22150](https://github.com/RocketChat/Rocket.Chat/pull/22150)) + +- DeepL supported languages ([#22326](https://github.com/RocketChat/Rocket.Chat/pull/22326) by [@mrsimpson](https://github.com/mrsimpson)) + +- Error generating Jitsi Token ([#22301](https://github.com/RocketChat/Rocket.Chat/pull/22301)) + +- Game center close button ([#22353](https://github.com/RocketChat/Rocket.Chat/pull/22353)) + + ![Peek 2021-06-14 18-19](https://user-images.githubusercontent.com/27704687/121960896-155c4600-cd3d-11eb-9be9-9712f4a1087b.gif) + +- Jitsi integration sending random "join now" messages ([#22277](https://github.com/RocketChat/Rocket.Chat/pull/22277)) + +- LDAP and SAML: changed usernames are not reflected on old data ([#22304](https://github.com/RocketChat/Rocket.Chat/pull/22304)) + +- Members tab visual issues ([#22138](https://github.com/RocketChat/Rocket.Chat/pull/22138)) + + ## Before + ![image](https://user-images.githubusercontent.com/27704687/119558283-95fbd800-bd77-11eb-91b4-91821f365bf3.png) + + ## After + ![image](https://user-images.githubusercontent.com/27704687/119558120-6947c080-bd77-11eb-8ecb-7fedc07afa82.png) + +- Memory leak generated by Stream Cast usage ([#22329](https://github.com/RocketChat/Rocket.Chat/pull/22329)) + + Stream Cast uses a different approach to broadcast data to the instances, it uses the DDP subscription method that requires a collection on the other side, if no collection exists with the given name `broadcast-stream` it caches in memory waiting for the collection to be set later. The cache is cleared only when a reconnection happens. + + This PR overrides the function that processes the data for that specific connection, preventing the cache and everything else to be processed since we already have our low-level listener to process the data. + +- Message box hiding on mobile view (Safari) ([#22212](https://github.com/RocketChat/Rocket.Chat/pull/22212)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/120404256-5b1c1600-c31c-11eb-96e9-860e4132db5f.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/120404406-acc4a080-c31c-11eb-9efb-c2ad88664fda.png) + +- Missing burger menu on direct messages ([#22211](https://github.com/RocketChat/Rocket.Chat/pull/22211)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/120403671-09bf5700-c31b-11eb-92a1-a2f589bd85fc.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/120403693-1643af80-c31b-11eb-8027-dbdc4f560647.png) + +- Missing Throbber while thread list is loading ([#22316](https://github.com/RocketChat/Rocket.Chat/pull/22316)) + + ### before + List was starting with no results even if there's results: + + ![image](https://user-images.githubusercontent.com/27704687/121606744-1e8ba100-ca25-11eb-9b31-706fb998d05f.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/121606635-e97f4e80-ca24-11eb-81f7-af8b0cc41c89.png) + +- Not possible to edit some messages inside threads ([#22325](https://github.com/RocketChat/Rocket.Chat/pull/22325)) + + ### Before + ![before](https://user-images.githubusercontent.com/27704687/121755733-4eeb4200-caee-11eb-9d77-1b498c38c478.gif) + + ### After + ![after](https://user-images.githubusercontent.com/27704687/121755736-514d9c00-caee-11eb-9897-78fcead172f2.gif) + +- Notifications not using user's name ([#22309](https://github.com/RocketChat/Rocket.Chat/pull/22309)) + +- OAuth login not working on electron app with temp sessions. ([#22401](https://github.com/RocketChat/Rocket.Chat/pull/22401)) + +- Omnichannel information panel is not displaying departments correctly ([#22155](https://github.com/RocketChat/Rocket.Chat/pull/22155)) + +- Permission check for teams.listRoomsOfUser ([#22313](https://github.com/RocketChat/Rocket.Chat/pull/22313)) + + If the user is trying to list his own channels, the permission check is skipped. + +- Read receipts are broken ([#22203](https://github.com/RocketChat/Rocket.Chat/pull/22203)) + +- Remove invalid check before sending notifications to Omnichannel online agents ([#22278](https://github.com/RocketChat/Rocket.Chat/pull/22278)) + +- Remove useless message options from Omnichannel Rooms ([#21549](https://github.com/RocketChat/Rocket.Chat/pull/21549) by [@rafaelblink](https://github.com/rafaelblink)) + +- Removed follow button from message box in threads ([#21019](https://github.com/RocketChat/Rocket.Chat/pull/21019) by [@Darshilp326](https://github.com/Darshilp326)) + + Removed follow button from message box as it was coinciding with audio/file message in threads. + +- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395)) + +- Sidebar not closing when clicking on a channel ([#22271](https://github.com/RocketChat/Rocket.Chat/pull/22271)) + + ### before + ![before](https://user-images.githubusercontent.com/27704687/121074843-c6e20100-c7aa-11eb-88db-76e39b57b064.gif) + + ### after + ![after](https://user-images.githubusercontent.com/27704687/121074860-cb0e1e80-c7aa-11eb-9e96-06d75044b763.gif) + +- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291)) + +- Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) + +- Unable to change protected role's description ([#22402](https://github.com/RocketChat/Rocket.Chat/pull/22402) by [@lucassartor](https://github.com/lucassartor)) + +- Undefined error when forwarding chats to offline department ([#22154](https://github.com/RocketChat/Rocket.Chat/pull/22154) by [@rafaelblink](https://github.com/rafaelblink)) + + ![Screen Shot 2021-05-26 at 5 29 17 PM](https://user-images.githubusercontent.com/59577424/119727520-c495b380-be48-11eb-88a2-158017c7ad0a.png) + + Omnichannel agents are facing the error shown above when forwarding chats to offline departments. + The error usually takes place when the routing system algorithm is **Manual Selection**. + +- Unread bar in channel flash quickly and then disappear ([#22275](https://github.com/RocketChat/Rocket.Chat/pull/22275)) + + ![unread_messages](https://user-images.githubusercontent.com/27704687/121092865-960dc600-c7c2-11eb-9074-81060d826811.gif) + +- User Info displaying own user. ([#22219](https://github.com/RocketChat/Rocket.Chat/pull/22219)) + +- Visitor info screen being updated multiple times ([#22482](https://github.com/RocketChat/Rocket.Chat/pull/22482)) + +- Web navigation breaks after visiting integrations admin page ([#21983](https://github.com/RocketChat/Rocket.Chat/pull/21983) by [@rexzing](https://github.com/rexzing)) + + Fix the navigation breaks issue after visiting the integrations administration page + +- Wrong member's contextualBar on direct multiple ([#21452](https://github.com/RocketChat/Rocket.Chat/pull/21452)) + + ![image](https://user-images.githubusercontent.com/27704687/113620310-893cec80-9630-11eb-83e2-0e8b2181cc42.png) + +
+🔍 Minor changes + + +- Bump: Fuselage 0.27.0 ([#22486](https://github.com/RocketChat/Rocket.Chat/pull/22486)) + +- Chore: Attachment Definitions and UiKitDefinitions ([#22354](https://github.com/RocketChat/Rocket.Chat/pull/22354)) + +- Chore: Bump node_modules cache key ([#22250](https://github.com/RocketChat/Rocket.Chat/pull/22250)) + +- Chore: Change modals for remove user from team && leave team ([#22141](https://github.com/RocketChat/Rocket.Chat/pull/22141)) + + ![image](https://user-images.githubusercontent.com/40830821/119576154-93f14380-bd8e-11eb-8885-f889f2939bf4.png) + ![image](https://user-images.githubusercontent.com/40830821/119576219-b5eac600-bd8e-11eb-832c-ea7a17a56bdd.png) + +- Chore: Check PR Title on every submission ([#22140](https://github.com/RocketChat/Rocket.Chat/pull/22140)) + +- Chore: Enable push gateway only if the server is registered ([#22346](https://github.com/RocketChat/Rocket.Chat/pull/22346) by [@lucassartor](https://github.com/lucassartor)) + + Currently, when creating an unregistered server, the default value of the push gateway setting is set to true and is disabled (it can't be changed unless the server is registered). This is a wrong behavior as an unregistered server **can't** use the push gateway. + + This PR creates a validation to check if the server is registered when enabling the push gateway. That way, even if the push gateway setting is turned on, but the server is unregistered, the push gateway **won't** work - it will behave like it is off. + +- Chore: Enforce TypeScript on Storybook ([#22317](https://github.com/RocketChat/Rocket.Chat/pull/22317)) + + Rewrite some Storybook stories in TypeScript, as an example. + +- Chore: Move getUserRoles to service and add cache ([#22345](https://github.com/RocketChat/Rocket.Chat/pull/22345)) + +- Chore: Remove Meter.wrapAsync from upload api ([#22286](https://github.com/RocketChat/Rocket.Chat/pull/22286)) + +- Chore: Remove not used scripts and its dependencies ([#22167](https://github.com/RocketChat/Rocket.Chat/pull/22167)) + +- Chore: Remove unnecessary modals replacing to GenericModal ([#21853](https://github.com/RocketChat/Rocket.Chat/pull/21853)) + +- Chore: Update delete team modal to new design ([#22127](https://github.com/RocketChat/Rocket.Chat/pull/22127)) + + Now the modal has only 2 steps (steps 1 and 2 were merged) + ![image](https://user-images.githubusercontent.com/40830821/119414580-2e398480-bcc6-11eb-9a47-515568257974.png) + +- Language update from LingoHub 🤖 on 2021-05-31Z ([#22196](https://github.com/RocketChat/Rocket.Chat/pull/22196)) + +- Language update from LingoHub 🤖 on 2021-06-14Z ([#22340](https://github.com/RocketChat/Rocket.Chat/pull/22340)) + +- Merge master into develop & Set version to 3.16.0-develop ([#22184](https://github.com/RocketChat/Rocket.Chat/pull/22184)) + +- Refactor few methods to improve Omnichannel flow ([#22321](https://github.com/RocketChat/Rocket.Chat/pull/22321)) + +- Regression: Api tests not running ([#22369](https://github.com/RocketChat/Rocket.Chat/pull/22369)) + +- Regression: Block-size property on firefox ([#22433](https://github.com/RocketChat/Rocket.Chat/pull/22433)) + +- Regression: CSP for external Media and Frames ([#22465](https://github.com/RocketChat/Rocket.Chat/pull/22465)) + +- Regression: Enable unregistered servers to use their own push gateway ([#22391](https://github.com/RocketChat/Rocket.Chat/pull/22391) by [@lucassartor](https://github.com/lucassartor)) + + https://github.com/RocketChat/Rocket.Chat/pull/22346 prevented unregistered servers from using the RC push gateway but was still blocking this servers from using their own push gateway, this PR looks to fix that. + +- Regression: Fix CORS in uikit endpoints ([#22214](https://github.com/RocketChat/Rocket.Chat/pull/22214)) + +- Regression: Fix livechat find departments ([#22472](https://github.com/RocketChat/Rocket.Chat/pull/22472)) + +- Regression: Missing flexDirection on select field ([#22300](https://github.com/RocketChat/Rocket.Chat/pull/22300)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/121425905-532a2a80-c949-11eb-885f-e8ddaf5c8d5c.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/121425770-283fd680-c949-11eb-8d94-86886f174599.png) + +- Regression: RoomProvider using wrong types ([#22370](https://github.com/RocketChat/Rocket.Chat/pull/22370)) + +- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483)) + +- Update README.md ([#22461](https://github.com/RocketChat/Rocket.Chat/pull/22461)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Darshilp326](https://github.com/Darshilp326) +- [@lolimay](https://github.com/lolimay) +- [@lucassartor](https://github.com/lucassartor) +- [@mrsimpson](https://github.com/mrsimpson) +- [@rafaelblink](https://github.com/rafaelblink) +- [@rexzing](https://github.com/rexzing) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@Faria-TechWrite](https://github.com/Faria-TechWrite) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.15.3 +`2021-07-01 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.26.0` + +### 🐛 Bug fixes + + +- Prune messages not applying the user filter ([#22506](https://github.com/RocketChat/Rocket.Chat/pull/22506)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.15.2 +`2021-06-27 · 3 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.26.0` + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Omnichannel enterprise permissions being added back to its default roles ([#22322](https://github.com/RocketChat/Rocket.Chat/pull/22322)) + + Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup. + +- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291)) + +- Visitor info screen being updated multiple times ([#22482](https://github.com/RocketChat/Rocket.Chat/pull/22482)) + +
+🔍 Minor changes + + +- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.15.1 +`2021-06-21 · 3 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.26.0` + +### 🐛 Bug fixes + + +- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290)) + +- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395)) + +- Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) + +
+🔍 Minor changes + + +- Release 3.15.1 ([#22432](https://github.com/RocketChat/Rocket.Chat/pull/22432)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.15.0 +`2021-05-28 · 8 🎉 · 12 🚀 · 62 🐛 · 47 🔍 · 34 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0, 4.2` +- Apps-Engine: `1.26.0` + +### 🎉 New features + + +- **APPS:** Ability for Rocket.Chat Apps to delete rooms ([#21875](https://github.com/RocketChat/Rocket.Chat/pull/21875) by [@lucassartor](https://github.com/lucassartor)) + + Adds a new `delete` method on the rooms bridge in order to trigger the deletion of rooms via the Apps-Engine. + +- **ENTERPRISE:** Introduce Load Rotation routing algorithm for Omnichannel ([#22090](https://github.com/RocketChat/Rocket.Chat/pull/22090) by [@rafaelblink](https://github.com/rafaelblink)) + + This PR introduces a new Auto Chat Distribution (ACD) algorithm for Omnichannel: **Load Rotation**. + The algorithm distributes chats to agents one by one, which means that when a new chat arrives, the agent with the oldest routing assignment time will be selected to serve the chat, regardless of the number of chats in progress each agent has. + + ![Screen Shot 2021-05-20 at 5 17 40 PM](https://user-images.githubusercontent.com/59577424/119043752-c61a3400-b98f-11eb-8543-f3176879af1d.png) + +- Back button for Omnichannel ([#21647](https://github.com/RocketChat/Rocket.Chat/pull/21647) by [@rafaelblink](https://github.com/rafaelblink)) + +- New Message Parser ([#21962](https://github.com/RocketChat/Rocket.Chat/pull/21962)) + + The objective is to put an end to the confusion that we face having multiple parsers, and the problems that this brings, it is still experimental then users need to choose to use it. + + The benefits are multiple. no more unexpected cases or grammatical collisions (in addition to more flexible nested cases like bold within link labels). + Besides, we no longer render raw html, instead we use components, so the xss attacks are over (the easy ones at least). Without further discoveries and at the fronted, we only reder what is delivered thus improving our performance. + This can be used in multiple places, (message, alert, sidenav and in the entire mobile application.) + +- Option to notify failed login attempts to a channel ([#21968](https://github.com/RocketChat/Rocket.Chat/pull/21968)) + +- Option to prevent users from using Invisible status ([#20084](https://github.com/RocketChat/Rocket.Chat/pull/20084) by [@lucassartor](https://github.com/lucassartor)) + + Add an `admin` option to allow/disallow the `Invisible` status option from all users. This option is available in the `Accounts` section. + + ![2021-01-06-11-55-22](https://user-images.githubusercontent.com/49413772/103782988-ebc52300-5016-11eb-8a29-dd540c21e11c.gif) + + If the option is turned off, the `users.setStatus` endpoint is also restricted from users trying to change their status to `Invisible`, throwing the following error: + ```json + { + "success": false, + "error": "Invisible status is disabled [error-not-allowed]", + "stack": "Error: Invisible status is disabled [error-not-allowed]\n at DDPCommon.MethodInvocation. (app/api/server/v1/users.js:425:13)\n at packages/dispatch_run-as-user.js:211:14\n at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)\n at Object.Meteor.runAsUser (packages/dispatch_run-as-user.js:210:33)\n at Object.post (app/api/server/v1/users.js:415:10)\n at app/api/server/api.js:394:82\n at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)\n at Object._internalRouteActionHandler [as action] (app/api/server/api.js:394:39)\n at Route.share.Route.Route._callEndpoint (packages/nimble_restivus/lib/route.coffee:150:32)\n at packages/nimble_restivus/lib/route.coffee:59:33\n at packages/simple_json-routes.js:98:9", + "errorType": "error-not-allowed", + "details": { + "method": "users.setStatus" + } + } + ``` + +- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@rafaelblink](https://github.com/rafaelblink)) + + REQUIRES https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/447 + + Adds infinite scrolling selects to the units edit/create with the ability to be filtered by text as well + + ![Screen Shot 2021-05-17 at 9 24 19 AM](https://user-images.githubusercontent.com/20868078/118487999-abc32a80-b6f1-11eb-8d58-d031111ea0fb.png) + + This Affects the monitors and departments inputs + +- Remove exif metadata from uploaded files ([#22044](https://github.com/RocketChat/Rocket.Chat/pull/22044)) + +### 🚀 Improvements + + +- Add groups to the directory channels list ([#21687](https://github.com/RocketChat/Rocket.Chat/pull/21687)) + + - Add groups (private channels) to the directory channels list. Only groups in which the logged user is subscribed are shown in the list. + +- Add support to queries in `channels.members` and `groups.members` endpoints ([#21414](https://github.com/RocketChat/Rocket.Chat/pull/21414)) + + - Add support to queries (within the `query` parameter) in `channels.members` and `groups.members` endpoints. + +- Add support to queries in the `im.members` endpoint ([#21471](https://github.com/RocketChat/Rocket.Chat/pull/21471)) + + - Add support to queries within the `name`, `username` and `status` parameters. + +- Add team members to channel when set as auto join ([#22056](https://github.com/RocketChat/Rocket.Chat/pull/22056) by [@g-thome](https://github.com/g-thome)) + + Create a channels.autojoin endpoint to set a channel as autojoin. Also make it so that old team members join this channel automatically + +- CAS popup login size input type ([#21907](https://github.com/RocketChat/Rocket.Chat/pull/21907) by [@Deepak-learner](https://github.com/Deepak-learner)) + +- Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor)) + + Currently, there are some inconsistencies and incorrect behaviors on the 2FA settings, such as: + + - When disabling the TOTP 2FA, all 2FA are disabled; + - There are no option to disable only the TOTP 2FA; + - If 2FA are disabled, the other settings aren't blocked (the e-mail 2FA setting, for example); + - It lacks some labels to warn the user of some specific 2FA options. + + This PR looks to fix those issues. + +- LDAP port setting input type to allow only numbers ([#21912](https://github.com/RocketChat/Rocket.Chat/pull/21912) by [@Deepak-learner](https://github.com/Deepak-learner)) + +- Missing modal on deleting a role ([#22020](https://github.com/RocketChat/Rocket.Chat/pull/22020)) + + ![image](https://user-images.githubusercontent.com/27704687/118047610-613c5980-b351-11eb-96c7-6b28ae24363e.png) + +- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@rafaelblink](https://github.com/rafaelblink)) + +- Prevent gallery to close when clicking on a non-zoomable image ([#21854](https://github.com/RocketChat/Rocket.Chat/pull/21854)) + +- Replace method to API Endpoint on Prune Messages ([#21836](https://github.com/RocketChat/Rocket.Chat/pull/21836)) + +- Support for Google OAuth for mobile app ([#22014](https://github.com/RocketChat/Rocket.Chat/pull/22014)) + +### 🐛 Bug fixes + + +- **APPS:** Scheduler duplicating recurrent tasks after server restart ([#21866](https://github.com/RocketChat/Rocket.Chat/pull/21866)) + + Reintroduces the old method for creating recurring tasks in the apps' scheduler bridge to ensure tasks won't be duplicated. + + By introducing the [`skipImmediate` property option](https://github.com/RocketChat/Rocket.Chat/pull/21353) at the [`scheduleRecurring`](https://github.com/RocketChat/Rocket.Chat/blob/f8171f464ed8a7487795651767695fb33a1c709e/app/apps/server/bridges/scheduler.js#L119) method, the `every` method from _agenda.js_, which ensured no duplicates were created, was removed in favor of a more manual procedure. The new procedure was not taking into account the management of duplicates and as a result multiple copies of the same task could be created and they would get executed at the same time. + + In the case of server restarts, every time this event happened and the app had the `startupSetting` configured to use _recurring tasks_, they would get recreated the same number of times. In the case of a server that restarts frequently (_n_ times), there would be the same (_n_) number of tasks duplicated (and running) in the system. + +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22128](https://github.com/RocketChat/Rocket.Chat/pull/22128)) + + Currently, Omnichannel Monitors just can't forward chats to a department that is part of a `Business Unit` they're not supervising. This issue is causing critical problems on customer operations since this behaviour is not by design. + The reason this issue is taking place is that, by design, Monitors just have access to departments related to the `Business Units` they're monitoring, but this restriction is designed only for Omnichannel management areas, which means in case the monitor is, also, an agent, they're supposed to be able to forward a chat to any available departments regardless the `Business Units` it's associated with. + So, initially, the restriction was implemented on the `Department Model` and, now, we're implementing the logic properly and introducing a new parameter to department endpoints, so the client will define which type of departments it needs. + +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142)) + +- Adding Custom Fields to show on user info check ([#20955](https://github.com/RocketChat/Rocket.Chat/pull/20955)) + + The setting custom fields to show under user info was not being used when rendering fields in user info. This pr adds those checks and only renders the fields mentioned under in admin -> accounts -> Custom Fields to Show in User Info. + +- Adding permission 'add-team-channel' for Team Channels Contextual bar ([#21591](https://github.com/RocketChat/Rocket.Chat/pull/21591)) + + Added 'add-team-channel' permission to the 2 buttons in team channels contextual bar, for adding channels to teams. + +- Adding retentionEnabledDefault check before showing warning message ([#20692](https://github.com/RocketChat/Rocket.Chat/pull/20692)) + + Added check for retentionEnabledDefault before showing prune warning message. + +- App crashes when downloads come from WebDAV and the server is not available ([#21985](https://github.com/RocketChat/Rocket.Chat/pull/21985)) + +- App license error detail message removed ([#22091](https://github.com/RocketChat/Rocket.Chat/pull/22091)) + + Banner in the App Detail page that showed a message explaining why the license validation had failed was removed previously, likely during the React rewrite. + + We're bringing it back. + +- Auto-join Tags misalignment ([#21980](https://github.com/RocketChat/Rocket.Chat/pull/21980)) + + Captura de Tela 2021-05-06 às 18 07 07 + +- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015)) + +- Contact Bar not reactive ([#22016](https://github.com/RocketChat/Rocket.Chat/pull/22016) by [@rafaelblink](https://github.com/rafaelblink)) + +- Convert a channel to Team Modal Visual Issues ([#21967](https://github.com/RocketChat/Rocket.Chat/pull/21967)) + + ![image](https://user-images.githubusercontent.com/27704687/117193225-fae79200-adb8-11eb-9f09-e8d328f3228b.png) + +- Correcting a the wrong Archived label in edit room ([#21717](https://github.com/RocketChat/Rocket.Chat/pull/21717) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + ![image](https://user-images.githubusercontent.com/45966964/116584997-3cd78a80-a918-11eb-81fa-8a7eb5318ae9.png) + + A label exists for Archived, and it has not been used. So I replaced it with the existing one. the label 'Archived' does not exist. + +- Custom OAuth not being completely deleted ([#21637](https://github.com/RocketChat/Rocket.Chat/pull/21637) by [@siva2204](https://github.com/siva2204)) + +- Directory Table's Sort Function ([#21921](https://github.com/RocketChat/Rocket.Chat/pull/21921)) + + ### TableRow Margin Issue: + ![image](https://user-images.githubusercontent.com/27704687/116907348-d6a07f80-ac17-11eb-9411-edfe0906bfe1.png) + + ### Table Sort Action Issue: + ![directory](https://user-images.githubusercontent.com/27704687/116907441-f20b8a80-ac17-11eb-8790-bfce19e89a67.gif) + +- Discussion names showing a random value ([#22172](https://github.com/RocketChat/Rocket.Chat/pull/22172)) + +- Dismiss button for save your encryption password dialog Issue#13557 ([#19872](https://github.com/RocketChat/Rocket.Chat/pull/19872) by [@savish28](https://github.com/savish28)) + +- Display Modes ([#22058](https://github.com/RocketChat/Rocket.Chat/pull/22058)) + +- Emails being sent with HTML entities getting escaped multiple times ([#21994](https://github.com/RocketChat/Rocket.Chat/pull/21994) by [@bhavayAnand9](https://github.com/bhavayAnand9)) + + fixes an issue where if password contains special HTML character like &, in the email it would end up something like `&amp;` + + + password was going through multiple escapeHTML function calls + `secure&123 => secure&123 => secure&amp;123 + ` + +- Error when you look at the members list of a room in which you are not a member ([#21952](https://github.com/RocketChat/Rocket.Chat/pull/21952) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + Before, when you look at the members of a room in which you are not a member the app crashed, i corrected this problem. + Indeed, there was a check on each currentSubscription. to see if it was not undefined except on currentSubscription.blocker + + https://user-images.githubusercontent.com/45966964/117087470-d3101400-ad4f-11eb-8f44-0ebca830a4d8.mp4 + +- errors when viewing a room that you're not subscribed to ([#21984](https://github.com/RocketChat/Rocket.Chat/pull/21984)) + +- Files list will not show deleted files. ([#21732](https://github.com/RocketChat/Rocket.Chat/pull/21732) by [@Darshilp326](https://github.com/Darshilp326)) + + When you delete files from the header option, deleted files will not be shown. + + https://user-images.githubusercontent.com/55157259/115730786-38552400-a3a4-11eb-9684-7f510920db66.mp4 + +- Fixed the fact that when a team was deleted, not all channels were unlinked from the team ([#21942](https://github.com/RocketChat/Rocket.Chat/pull/21942) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + Fixed the fact that when a team was deleted, not all channels were unlinked from the team. Only the first room of the rooms list was unlinked. + + After the fix, there is nos more errors: + + + https://user-images.githubusercontent.com/45966964/117055182-2a47c180-ad1b-11eb-806f-07fb3fa7ec12.mp4 + +- Fixing Jitsi call ended Issue. ([#21808](https://github.com/RocketChat/Rocket.Chat/pull/21808)) + + The new rewrite in react of contextual call component broke the Jitsi "click to join" messages. The issue being after 10 seconds of initiating the call, the message "click to join" always returned "Call Ended" even if the call was still going on. + This was due to the fact that after closing the contextual bar, the react component gets unmounted and we are not able to keep track of ongoing call and increase jitsi room timeout. + + This PR solves this issue by using the setInterval methods on component will unmount. When the call component unmounts, we keep on checking the state of jitsi call and based on conditions increase the jitsi room timeout. After the call is ended all setInterval calls are closed. + + This PR also removes the implementation of HEARTBEAT events of JitsiBridge. This is because this is no longer needed and all logic is being taken care of by the unmount function. + +- Handle NPS errors instead of throwing them ([#21945](https://github.com/RocketChat/Rocket.Chat/pull/21945)) + +- Header Tag Visual Issues ([#21991](https://github.com/RocketChat/Rocket.Chat/pull/21991)) + + ### Normal + ![image](https://user-images.githubusercontent.com/27704687/117504793-69635600-af59-11eb-8b79-9d8f631490ee.png) + + ### Hover + ![image](https://user-images.githubusercontent.com/27704687/117504934-97489a80-af59-11eb-87c3-0a62731e9ce3.png) + +- Horizontal scrollbar not showing on tables ([#21852](https://github.com/RocketChat/Rocket.Chat/pull/21852)) + +- IE11 support ([#21893](https://github.com/RocketChat/Rocket.Chat/pull/21893)) + +- iFrame size on embedded videos ([#21992](https://github.com/RocketChat/Rocket.Chat/pull/21992)) + + ### Before + ![image](https://user-images.githubusercontent.com/27704687/117508802-8bf86d80-af5f-11eb-9eb8-29e55b73eac5.png) + + ### After + ![image](https://user-images.githubusercontent.com/27704687/117508870-a4688800-af5f-11eb-9176-7f24de5fc424.png) + +- Incorrect error message when opening channel in anonymous read ([#22066](https://github.com/RocketChat/Rocket.Chat/pull/22066) by [@lucassartor](https://github.com/lucassartor)) + + Every time you open a public channel with threads in it when using anonymous read an `Incorrect User` error will be thrown. + This is an incorrect behaviour as everything that is public should be valid for an anonymous user. + + Some files are adapted to that and have already removed this kind of incorrect error, but there are some that need some fix, this PR aims to do that. + +- Incorrect Team's Info spacing ([#22021](https://github.com/RocketChat/Rocket.Chat/pull/22021)) + + ![image](https://user-images.githubusercontent.com/27704687/118049044-9053ca80-b353-11eb-8b21-7a309ec2ba7e.png) + +- Label's disabled color on Create New Modal ([#21975](https://github.com/RocketChat/Rocket.Chat/pull/21975)) + + Captura de Tela 2021-05-06 às 13 20 06 + +- Make the FR translation consistent with the 'room' translation + typos ([#21913](https://github.com/RocketChat/Rocket.Chat/pull/21913) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + In the FR translation files, there were two terms that were used to refer to **'room'**: + - 'salon' (149 times used) + + ![image](https://user-images.githubusercontent.com/45966964/116829860-ac62a980-aba6-11eb-8212-e6f15ed0af82.png) + + - 'salle' (46 times used) + + ![image](https://user-images.githubusercontent.com/45966964/116829871-be444c80-aba6-11eb-9b42-e213fee6586a.png) + + The problem is that both were used in the same context and sometimes even in the same option list. + However, since 'salon' is a better translation and was also in the majority, I used the translation 'salon' wherever 'salle' was marked. + + For example: + ![image](https://user-images.githubusercontent.com/45966964/116830523-1da45b80-abab-11eb-81f8-5225d51cecc6.png) + +- Maximum 25 channels can be loaded in the teams' channels list ([#21708](https://github.com/RocketChat/Rocket.Chat/pull/21708) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + Before a maximum 25 of channels was able to be displayed in the teams' channels list. + +- Missing margins on select team modal ([#21965](https://github.com/RocketChat/Rocket.Chat/pull/21965)) + + ![select_team](https://user-images.githubusercontent.com/27704687/117164325-e5fc0600-ad9a-11eb-861e-a246064b78b4.png) + +- Missing proper permissions on Teams Channels ([#21946](https://github.com/RocketChat/Rocket.Chat/pull/21946)) + +- No warning message is sent when user is removed from a team's main channel ([#21949](https://github.com/RocketChat/Rocket.Chat/pull/21949)) + + - Send a warning message to a team's main channel when a user is removed from the team; + - Trigger events while removing a user from a team's main channel; + - Fix `usersCount` field in the team's main room when a user is removed from the team (`usersCount` is now decreased by 1). + +- Not possible accept video call if "Hide right sidebar with click" is enabled ([#22175](https://github.com/RocketChat/Rocket.Chat/pull/22175)) + +- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969)) + +- Open a new DM throwing error 404 ([#22100](https://github.com/RocketChat/Rocket.Chat/pull/22100)) + + Adapts the `openRoom` function to the new signature of `createDirectMessage`. + +- Permission's scope on Teams Channels ([#22083](https://github.com/RocketChat/Rocket.Chat/pull/22083)) + + Allow moderators and owners to add or create channels on Teams Channels + +- Presence.get method ([#22129](https://github.com/RocketChat/Rocket.Chat/pull/22129)) + + closes #21873 + +- Prevent the userInfo tab to return 'User not found' each time if a certain member of a DM group has been deleted ([#21970](https://github.com/RocketChat/Rocket.Chat/pull/21970) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + Prevent the userInfo tab to return 'User not found' if a member of a DM group has been deleted. + This happens if the user that has been deleted is the one originally displayed on the userInfo tab in a DM group with >2 users. + + https://user-images.githubusercontent.com/45966964/117221081-db785580-ae08-11eb-9b33-2314a99eb037.mp4 + +- Prune messages not cleaning up unread threads ([#21326](https://github.com/RocketChat/Rocket.Chat/pull/21326) by [@renancleyson-dev](https://github.com/renancleyson-dev)) + + Fixes permanent unread messages when admin prune at least two different thread messages in the room that were unread by some user. + ![screencapture-localhost-3000-channel-general-thread-2021-03-26-13_17_16](https://user-images.githubusercontent.com/43624243/112678973-62b9cd00-8e4a-11eb-9af9-56f17cc66baf.png) + +- Redirect on remove user from channel by user profile tab ([#21951](https://github.com/RocketChat/Rocket.Chat/pull/21951)) + + ![redirect](https://user-images.githubusercontent.com/27704687/117078454-498d2180-ad10-11eb-9df2-936552a2b3ce.gif) + +- Remove referer header when requesting attachment data ([#21987](https://github.com/RocketChat/Rocket.Chat/pull/21987)) + +- Removed fields from User Info for which the user doesn't have permissions. ([#20923](https://github.com/RocketChat/Rocket.Chat/pull/20923) by [@Darshilp326](https://github.com/Darshilp326)) + + Removed LastLogin, CreatedAt and Roles for users who don't have permission. + + https://user-images.githubusercontent.com/55157259/109381351-f2c62e80-78ff-11eb-9289-e11072bf62f8.mp4 + +- Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint ([#21539](https://github.com/RocketChat/Rocket.Chat/pull/21539)) + + - Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint. + +- Scenarios where 2FA enforcement was not working properly ([#22017](https://github.com/RocketChat/Rocket.Chat/pull/22017)) + +- Tooltip pointer is blocking Text ([#21645](https://github.com/RocketChat/Rocket.Chat/pull/21645) by [@sumukhah](https://github.com/sumukhah)) + +- Unable to edit a 'direct' room setting in the admin due to the room name ([#21636](https://github.com/RocketChat/Rocket.Chat/pull/21636) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + When you are in the admin and want to change a room 'd' setting, it doesn't work because it takes into account the name that is set automatically and therefore tries to save that name. Since the name is not valid and should not be registered, we cannot change the setting for the 'd' room. + I made sure that when you want to change a setting in a 'd' room, that you don't take the name into account + + + https://user-images.githubusercontent.com/45966964/115150919-cd85af00-a06a-11eb-9667-ef3dcfc5adb6.mp4 + + + Behind the scene, the name is not saved + +- Unable to edit a user who does not have an email via the admin or via the user's profile ([#21626](https://github.com/RocketChat/Rocket.Chat/pull/21626) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + If a user does not have an email address, they cannot change it via their profile or via the admin. I fixed this issue. I have created several profiles and there was one that didn't have an email, I don't know how I did it, I am working on it. I had not modified the db to delete his email, hence the fix + + in admin + + https://user-images.githubusercontent.com/45966964/115112617-9b9b1c80-9f86-11eb-8e3a-950c3c1a1746.mp4 + + + + in the user profile + + https://user-images.githubusercontent.com/45966964/115112620-a0f86700-9f86-11eb-97b1-56eaba42216b.mp4 + +- Unable to get channels, sort by most recent message ([#21701](https://github.com/RocketChat/Rocket.Chat/pull/21701) by [@sumukhah](https://github.com/sumukhah)) + +- Unable to update app manually ([#21215](https://github.com/RocketChat/Rocket.Chat/pull/21215)) + + It allows for update of apps using a zip file. + + When installing apps using the zip file, either by url or the file form, if the app was already installed, an error would be thrown stating the condition and forbidding the installation. Now, when sending a zip file of an app that is already installed, the user is presented with the following modal: + + ![2021-04-30-113936_627x235_scrot](https://user-images.githubusercontent.com/733282/116711383-2cbbbb80-a9a9-11eb-8c77-22d6802cb9f5.png) + + If the app also requires permissions to be reviewed, the modal that handles permission reviews will be shown after this one is accepted. + +- Unpin message reactivity ([#22029](https://github.com/RocketChat/Rocket.Chat/pull/22029)) + + ![Peek 2021-05-13 11-18](https://user-images.githubusercontent.com/27704687/118138696-03555380-b3dd-11eb-8549-730fff0b4ea8.gif) + +- Uploading files from WebDAV ([#21948](https://github.com/RocketChat/Rocket.Chat/pull/21948)) + +- User Impersonation through sendMessage API ([#20391](https://github.com/RocketChat/Rocket.Chat/pull/20391) by [@lucassartor](https://github.com/lucassartor)) + + Create a new permission: `message-impersonate`. For new installs only bot role will have the permission and for updating installs the permission will also be given to user role, so it won't break running deployments. + + If a message is being sent with `avatar` or `alias` properties, it validates if the sender has the `message-impersonate` permission, if not, an error is throwed: + ```json + { + "success": false, + "error": "Not enough permission", + "stack": "Error: Not enough permission\n ..." + } + ``` + +- Visibility of burger menu on certain width ([#20736](https://github.com/RocketChat/Rocket.Chat/pull/20736)) + + Burger was not visible on a certain width, specifically between 600 to 780. if width is more than 780px sidebar is shown, if less than 600 then burger icon was shown. But it wasn't shown between 600px to 780 px. + It was because for showing burger icon we were only checking for `isMobile` which is lenght only less than 600. So i added one more check for condition if length is less than 780 px. + +- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947)) + + Fixes issue with the setting `Livechat_request_comment_when_closing_conversation` not working as intended + +- Workaround for Autolinker phone problem ([#21515](https://github.com/RocketChat/Rocket.Chat/pull/21515)) + +- Wrong color and size, thread list Metrics ([#21950](https://github.com/RocketChat/Rocket.Chat/pull/21950)) + + ![image](https://user-images.githubusercontent.com/40830821/117066452-1db57000-acff-11eb-9e75-956db65b2fb9.png) + +- Wrong icon on "Move to team" option in the channel info actions ([#21944](https://github.com/RocketChat/Rocket.Chat/pull/21944)) + + ![image](https://user-images.githubusercontent.com/40830821/117061659-d9bf6c80-acf8-11eb-8e29-be47e702dedd.png) + + Depends on https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/444 + +
+🔍 Minor changes + + +- [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043)) + +- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048)) + +- [FIXf] Parent Room Tag Overlapping ([#22009](https://github.com/RocketChat/Rocket.Chat/pull/22009)) + + ![tag](https://user-images.githubusercontent.com/27704687/117905720-069bf280-b2aa-11eb-81ed-a5b8c2152d54.gif) + +- Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo)) + + Added two more test cases to the slash-command test suite: + - 'should return an error when the command does not exist''; + - 'should return an error when no command is provided'; + +- Bump actions/stale from v3.0.8 to v3.0.18 ([#21877](https://github.com/RocketChat/Rocket.Chat/pull/21877) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump: Fuselage 0.26.0 ([#22178](https://github.com/RocketChat/Rocket.Chat/pull/22178)) + +- Chore: Add missing 'Teams' label in the i18n files for every languages ([#21751](https://github.com/RocketChat/Rocket.Chat/pull/21751) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + I added the missing Teams label in the i18n folder for EN, FR & NL + +- Chore: Add mongo 4.2 to array of mongo versions supported ([#21550](https://github.com/RocketChat/Rocket.Chat/pull/21550)) + + - MongoDB 4.2 is now supported + +- Chore: Bump message parser ([#22101](https://github.com/RocketChat/Rocket.Chat/pull/22101)) + +- Chore: Correct some spelling/typos in English for descriptions/modal ([#21832](https://github.com/RocketChat/Rocket.Chat/pull/21832) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + I found typos, spelling mistakes, I corrected them + +- Chore: Doc Client Readme ([#21588](https://github.com/RocketChat/Rocket.Chat/pull/21588) by [@umakantv](https://github.com/umakantv)) + +- Chore: fix invalid type name on TS file ([#21814](https://github.com/RocketChat/Rocket.Chat/pull/21814)) + +- Chore: Storybook organization and errors ([#21923](https://github.com/RocketChat/Rocket.Chat/pull/21923)) + +- Chore: Update Docker container references to use registry.rocket.chat endpoint ([#22080](https://github.com/RocketChat/Rocket.Chat/pull/22080) by [@aviaviavi](https://github.com/aviaviavi)) + + This change updates the Docker installation instructions to use the new registry.rocket.chat endpoint to pull the rocketchat/rocket.chat container. This is part of the rollout described here: https://rocket.chat/blog/product/docker-images-change/ + +- Chore: update fuselage && icons ([#22092](https://github.com/RocketChat/Rocket.Chat/pull/22092)) + +- i18n: Add missing translation string in account preference ([#21448](https://github.com/RocketChat/Rocket.Chat/pull/21448) by [@sumukhah](https://github.com/sumukhah)) + + "Test Desktop Notifications" was missing in translation, Added to the file. + Screenshot 2021-04-05 at 3 58 01 PM + + Screenshot 2021-04-05 at 3 58 32 PM + +- i18n: Correct a typo in German ([#21711](https://github.com/RocketChat/Rocket.Chat/pull/21711) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + +- Language update from LingoHub 🤖 on 2021-04-26Z ([#21801](https://github.com/RocketChat/Rocket.Chat/pull/21801)) + +- Language update from LingoHub 🤖 on 2021-05-03Z ([#21917](https://github.com/RocketChat/Rocket.Chat/pull/21917)) + +- Language update from LingoHub 🤖 on 2021-05-10Z ([#21998](https://github.com/RocketChat/Rocket.Chat/pull/21998)) + +- Language update from LingoHub 🤖 on 2021-05-18Z ([#22065](https://github.com/RocketChat/Rocket.Chat/pull/22065)) + +- Merge master into develop & Set version to 3.15.0-develop ([#21847](https://github.com/RocketChat/Rocket.Chat/pull/21847)) + +- Regression: Add "User left team" message type ([#22109](https://github.com/RocketChat/Rocket.Chat/pull/22109)) + + - Add 'ult' system message type, which is sent when a user leaves a team ("Has left the team."). + +- Regression: Add i18n to license error messages ([#22171](https://github.com/RocketChat/Rocket.Chat/pull/22171)) + +- Regression: Add impersonate permission to app role ([#22006](https://github.com/RocketChat/Rocket.Chat/pull/22006)) + +- regression: bump Rocket.Chat.Fuselage package with paginated selects ([#22059](https://github.com/RocketChat/Rocket.Chat/pull/22059)) + +- Regression: discussions display on sidebar ([#22157](https://github.com/RocketChat/Rocket.Chat/pull/22157)) + + ### group by type active + ![image](https://user-images.githubusercontent.com/27704687/119741996-37a92500-be5d-11eb-8b36-4067a7a229f1.png) + + ### group by type inactive + ![image](https://user-images.githubusercontent.com/27704687/119742054-56a7b700-be5d-11eb-8810-e31d4216f573.png) + +- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068)) + +- Regression: Fix new 'message-impersonate' permission blocking livechat messages ([#21961](https://github.com/RocketChat/Rocket.Chat/pull/21961)) + +- Regression: Fix send message validation ([#21982](https://github.com/RocketChat/Rocket.Chat/pull/21982)) + +- regression: Fix Users list in the Administration ([#22034](https://github.com/RocketChat/Rocket.Chat/pull/22034) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + The app crashed if no custom fields for user profiles have been created by the admin. I fixed this issue. This bug was introduced by a recent commit. + + https://user-images.githubusercontent.com/45966964/118210838-5b3a9b80-b46b-11eb-9fe5-5b813848190c.mp4 + +- Regression: Improve migration 225 ([#22099](https://github.com/RocketChat/Rocket.Chat/pull/22099)) + +- Regression: Make referrer header configurable ([#22126](https://github.com/RocketChat/Rocket.Chat/pull/22126)) + +- Regression: Match `name` or `fname` when fetching room to send notification for blocked log in attemps ([#22067](https://github.com/RocketChat/Rocket.Chat/pull/22067)) + +- regression: Migration 225 setting not being fetched correctly ([#22108](https://github.com/RocketChat/Rocket.Chat/pull/22108)) + +- Regression: Missing room scope on teams channels permission ([#22137](https://github.com/RocketChat/Rocket.Chat/pull/22137)) + +- regression: Misspelled property in migration 225 ([#22093](https://github.com/RocketChat/Rocket.Chat/pull/22093)) + +- Regression: not allowed to edit roles due to a new verification ([#22159](https://github.com/RocketChat/Rocket.Chat/pull/22159)) + + introduced by https://github.com/RocketChat/Rocket.Chat/pull/21905 + ![Peek 2021-05-26 22-21](https://user-images.githubusercontent.com/27704687/119750970-b9567e00-be70-11eb-9d52-04c8595950df.gif) + +- regression: Select Team Modal margin ([#22030](https://github.com/RocketChat/Rocket.Chat/pull/22030)) + + ![image](https://user-images.githubusercontent.com/27704687/118140652-f2a5dd00-b3de-11eb-8075-d0cac4b28650.png) + +- regression: UserInfoTab Broken ([#22019](https://github.com/RocketChat/Rocket.Chat/pull/22019)) + +- Regression: Visual issue on sort list item ([#22158](https://github.com/RocketChat/Rocket.Chat/pull/22158)) + + ### before + ![image](https://user-images.githubusercontent.com/27704687/119743703-d84d1400-be60-11eb-97cc-c8256b2c8b07.png) + + ### after + ![image](https://user-images.githubusercontent.com/27704687/119743638-b18edd80-be60-11eb-828d-22cc5e1b2f5b.png) + +- Release 3.14.2 ([#22135](https://github.com/RocketChat/Rocket.Chat/pull/22135)) + +- Release 3.14.4 ([#22181](https://github.com/RocketChat/Rocket.Chat/pull/22181)) + +- Remove memory leak from userData ([#22094](https://github.com/RocketChat/Rocket.Chat/pull/22094) by [@g-thome](https://github.com/g-thome)) + +- String helpers ([#21988](https://github.com/RocketChat/Rocket.Chat/pull/21988)) + + It uses string helpers from a external package (`@rocket.chat/string-helpers`). + +- Update Apps-Engine version ([#22176](https://github.com/RocketChat/Rocket.Chat/pull/22176)) + +- Upgrade to GitHub-native Dependabot ([#21874](https://github.com/RocketChat/Rocket.Chat/pull/21874) by [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Darshilp326](https://github.com/Darshilp326) +- [@Deepak-learner](https://github.com/Deepak-learner) +- [@EduardoPicolo](https://github.com/EduardoPicolo) +- [@Jeanstaquet](https://github.com/Jeanstaquet) +- [@aviaviavi](https://github.com/aviaviavi) +- [@bhavayAnand9](https://github.com/bhavayAnand9) +- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@g-thome](https://github.com/g-thome) +- [@lucassartor](https://github.com/lucassartor) +- [@rafaelblink](https://github.com/rafaelblink) +- [@renancleyson-dev](https://github.com/renancleyson-dev) +- [@savish28](https://github.com/savish28) +- [@siva2204](https://github.com/siva2204) +- [@sumukhah](https://github.com/sumukhah) +- [@umakantv](https://github.com/umakantv) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.14.5 +`2021-06-06 · 1 🚀 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.25.0` + +### 🚀 Improvements + + +- Send only relevant data via WebSocket ([#22258](https://github.com/RocketChat/Rocket.Chat/pull/22258)) + + Previously when any data changed on subscriptions or rooms we were getting fresh data from database, to also remove undesired fields, but sometimes the data that changed was not relevant so we were sending the whole object everytime **without** the fields that actually changed. This change aims to reduce this overhead and also send less data to clients. + +### 🐛 Bug fixes + + +- Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.14.4 +`2021-05-28 · 2 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.25.0` + +### 🐛 Bug fixes + + +- Discussion names showing a random value ([#22172](https://github.com/RocketChat/Rocket.Chat/pull/22172)) + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +
+🔍 Minor changes + + +- Release 3.14.4 ([#22181](https://github.com/RocketChat/Rocket.Chat/pull/22181)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.14.3 +`2021-05-26 · 1 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.25.0` + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142)) + +
+🔍 Minor changes + + +- Release 3.14.3 ([#22147](https://github.com/RocketChat/Rocket.Chat/pull/22147)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.14.2 +`2021-05-25 · 1 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.25.0` + +### 🐛 Bug fixes + + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +
+🔍 Minor changes + + +- Release 3.14.2 ([#22135](https://github.com/RocketChat/Rocket.Chat/pull/22135)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.14.1 +`2021-05-19 · 1 🎉 · 2 🚀 · 4 🐛 · 3 🔍 · 7 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.25.0` + +### 🎉 New features + + +- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@rafaelblink](https://github.com/rafaelblink)) + + REQUIRES https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/447 + + Adds infinite scrolling selects to the units edit/create with the ability to be filtered by text as well + + ![Screen Shot 2021-05-17 at 9 24 19 AM](https://user-images.githubusercontent.com/20868078/118487999-abc32a80-b6f1-11eb-8d58-d031111ea0fb.png) + + This Affects the monitors and departments inputs + +### 🚀 Improvements + + +- Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043)) + +- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@rafaelblink](https://github.com/rafaelblink)) + +### 🐛 Bug fixes + + +- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015)) + +- IE11 support ([#21893](https://github.com/RocketChat/Rocket.Chat/pull/21893)) + +- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969)) + +- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947)) + + Fixes issue with the setting `Livechat_request_comment_when_closing_conversation` not working as intended + +
+🔍 Minor changes + + +- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048)) + +- [Patch] [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22077](https://github.com/RocketChat/Rocket.Chat/pull/22077)) + +- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@rafaelblink](https://github.com/rafaelblink) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@dougfabris](https://github.com/dougfabris) +- [@ggazzo](https://github.com/ggazzo) +- [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.14.0 +`2021-04-28 · 9 🎉 · 9 🚀 · 55 🐛 · 38 🔍 · 30 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.22.1` +- NPM: `6.14.1` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.25.0` + +### 🎉 New features + + +- **APPS:** Method to fetch Livechat Departments ([#21690](https://github.com/RocketChat/Rocket.Chat/pull/21690)) + + New method in the livechat bridge that allows apps to fetch departments that are enabled and have agents assigned + +- **APPS:** onInstall and onUninstall events ([#21565](https://github.com/RocketChat/Rocket.Chat/pull/21565) by [@lucassartor](https://github.com/lucassartor)) + + Adding the `user` information when installing and uninstalling an App to the Apps-Engine. + +- **ENTERPRISE:** LDAP Teams Sync ([#21658](https://github.com/RocketChat/Rocket.Chat/pull/21658)) + +- **Enterprise:** Second layer encryption for data transport (alpha) ([#21692](https://github.com/RocketChat/Rocket.Chat/pull/21692)) + + The second layer encryption for data transport works implementing the ECDH algorithm where session keys are exchanged before the rest of the communication. This feature is **enterprise only** since it requires the micro-services architecture and it's in the early stage of tests as an **alpha** feature and documentation may not be available before the beta stage. + +- New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318)) + + This _small_ PR does the following: + + - Now **React** is the web client's first-class citizen, being **loaded before Blaze**. Thus, `BlazeLayout` calls render templates inside of a React component (`BlazeLayoutWrapper`); + - Main client startup code, including polyfills, is written in **TypeScript**; + - At the moment, routes are treated as regular startup code; it's expected that `FlowRouter` will be deprecated in favor of a new routing library; + - **React** was updated to major version **17**, deprecating the usage of `React` as namespace (e.g. use `memo()` instead of `React.memo()`); + - The `client/` and `ee/client/` directory are linted with a **custom ESLint configuration** that includes: + - **Prettier**; + - `react-hooks/*` rules for TypeScript files; + - `react/no-multi-comp`, enforcing the rule of **one single React component per module**; + - `react/display-name`, which enforces that **React components must have a name for debugging**; + - `import/named`, avoiding broken named imports. + - A bunch of components were refactored to match the new ESLint rules. + +- On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink)) + + ![image](https://user-images.githubusercontent.com/34130764/115442079-3a49a680-a22f-11eb-9ee8-6c705097cd57.png) + +- Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607)) + + - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); + - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; + - Add "Password History" setting -- when enabled, it blocks users from reusing their most recent passwords; + - Convert `comparePassword` file to TypeScript. + + ![Password_Change](https://user-images.githubusercontent.com/36537004/115035168-ac726200-9ea2-11eb-93c6-fc8182ba5f3f.png) + ![Password_History](https://user-images.githubusercontent.com/36537004/115035175-ad0af880-9ea2-11eb-9f40-94c6327a9854.png) + +- REST endpoint `teams.update` ([#21134](https://github.com/RocketChat/Rocket.Chat/pull/21134) by [@g-thome](https://github.com/g-thome)) + + add teams.update endpoint + +- Standard Importer Structure ([#18357](https://github.com/RocketChat/Rocket.Chat/pull/18357)) + +### 🚀 Improvements + + +- **APPS:** Scheduler option to skip immediate execution of recurring jobs ([#21353](https://github.com/RocketChat/Rocket.Chat/pull/21353) by [@lolimay](https://github.com/lolimay)) + + Create and schedule a task manually at `scheduleRecurring` method so the first iteration runs after the configured interval. This is accomplished by adding the setting `skipImmediate: true` when setting up the task. + +- Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016)) + + Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): + - admin; + - administrator; + - system; + - user. + ![create-channel](https://user-images.githubusercontent.com/36537004/110132223-b421ef80-7da9-11eb-82bc-f0d4e1df967f.png) + ![register-username](https://user-images.githubusercontent.com/36537004/110132234-b71ce000-7da9-11eb-904e-580233625951.png) + ![change-channel](https://user-images.githubusercontent.com/36537004/110143057-96f31e00-7db5-11eb-994a-39ae9e63392e.png) + ![change-username](https://user-images.githubusercontent.com/36537004/110143065-98244b00-7db5-11eb-9d13-afc5dc9866de.png) + +- add permission check when adding a channel to a team ([#21689](https://github.com/RocketChat/Rocket.Chat/pull/21689) by [@g-thome](https://github.com/g-thome)) + + add permission check for each room + +- Add proxy for data export ([#20998](https://github.com/RocketChat/Rocket.Chat/pull/20998)) + + Add a proxy for data export downloads (instead of just linking ufs urls) so we can have more control over its response. Also added a human readable message when the user tries to download the user-data unauthenticated. + +- Add support to range downloads on file system storage ([#21463](https://github.com/RocketChat/Rocket.Chat/pull/21463)) + +- Alert on team deletion ([#21617](https://github.com/RocketChat/Rocket.Chat/pull/21617)) + + Screen Shot 2021-04-16 at 7 03 30 PM + +- Do not require pre-configured tags in Omnichannel chats ([#21488](https://github.com/RocketChat/Rocket.Chat/pull/21488) by [@rafaelblink](https://github.com/rafaelblink)) + +- OEmbed details by requesting using the accept language header on the request ([#21686](https://github.com/RocketChat/Rocket.Chat/pull/21686)) + + - Send `Accept-Language` header on oembed requests + +- Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593)) + + - Create new MediaService (ideally, should be in charge of all media-related operations) + - Resize emojis to 128x128 + +### 🐛 Bug fixes + + +- **Enterprise:** Omnichannel simultaneous chat limit is not properly checking the limit by department ([#21839](https://github.com/RocketChat/Rocket.Chat/pull/21839)) + + The Omnichannel Concurrent Chat Limit feature is not working properly when checking the limit per department, the reason is that the algorithm that fetches the number of ongoing chats per agent wasn't considering the department of the subscriptions, hence, the number returned from DB was bigger than it should be. + +- Add tag input to Closing Chat modal ([#21462](https://github.com/RocketChat/Rocket.Chat/pull/21462) by [@rafaelblink](https://github.com/rafaelblink)) + +- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469)) + + - Fix Administration/Users pagination + +- Allow deletion of own account for passwordless accounts (e.g. OAUTH) ([#21119](https://github.com/RocketChat/Rocket.Chat/pull/21119) by [@wolbernd](https://github.com/wolbernd)) + +- Allows more than 25 discussions/files to be loaded in the contextualbar ([#21511](https://github.com/RocketChat/Rocket.Chat/pull/21511) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + In some places, you could not load more than 25 threads/discussions/files on the screen when searching the lists in the contextualbar. + Threads & list are numbered for a better view of the solution + + + https://user-images.githubusercontent.com/45966964/114222225-93335800-996e-11eb-833f-568e83129aae.mp4 + +- Allows more than 25 threads to be loaded, fixes #21507 ([#21508](https://github.com/RocketChat/Rocket.Chat/pull/21508) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + +- Allows to display more than 25 users maximum in the users list ([#21518](https://github.com/RocketChat/Rocket.Chat/pull/21518) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + Now when you scroll to the bottom of the users list, it shows more users. Before the fix, the limit for the query for loadMore was calculated so that no additional users could be loaded. + + Before + + https://user-images.githubusercontent.com/45966964/114249739-baece500-999b-11eb-9bb0-3a5bcee18ad8.mp4 + + After + + + https://user-images.githubusercontent.com/45966964/114249895-364e9680-999c-11eb-985c-47aedc763488.mp4 + +- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470)) + + Fixes the marketplace app installation not correctly displaying the permissions modal. + +- Archive permissions for room moderator ([#21563](https://github.com/RocketChat/Rocket.Chat/pull/21563)) + +- Attachment files are not rendered properly on SMS channels ([#21746](https://github.com/RocketChat/Rocket.Chat/pull/21746)) + +- Audio message same pattern as image message ([#21466](https://github.com/RocketChat/Rocket.Chat/pull/21466)) + + ![image](https://user-images.githubusercontent.com/17487063/113760168-4c363000-96ec-11eb-9138-0fbcedb3fa42.png) + +- Avoid sidebar being broke ([#21490](https://github.com/RocketChat/Rocket.Chat/pull/21490)) + +- Change margin size for quote messages ([#21461](https://github.com/RocketChat/Rocket.Chat/pull/21461)) + + ![image](https://user-images.githubusercontent.com/17487063/113723723-02d3e980-96c8-11eb-9bc7-70aab5ea8091.png) + +- Change team private info text ([#21535](https://github.com/RocketChat/Rocket.Chat/pull/21535)) + +- Change the active appearance for toolbox buttons ([#21416](https://github.com/RocketChat/Rocket.Chat/pull/21416)) + + ![image](https://user-images.githubusercontent.com/17487063/113359447-2d1b5500-931e-11eb-81fa-86f60fcee3a9.png) + +- Checking 'start-discussion' Permission for MessageBox Actions ([#21564](https://github.com/RocketChat/Rocket.Chat/pull/21564)) + + Permissions 'start-discussion-other-user' and 'start-discussion' are checked everywhere before letting anyone start any discussions, this permission check was missing for message box actions, so added it. + +- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink)) + +- Correcting the case there are no result in admin users list ([#21556](https://github.com/RocketChat/Rocket.Chat/pull/21556) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + I added a default case to the total when there are no result to the user's query + +- Discussions not showing in Safari ([#21270](https://github.com/RocketChat/Rocket.Chat/pull/21270) by [@Kartik18g](https://github.com/Kartik18g)) + +- Don't allow whitespace on bold, italic and strike ([#21483](https://github.com/RocketChat/Rocket.Chat/pull/21483)) + + Stops the original markdown rendered from rendering empty bold, italic and strike text. Stops `_ _`, `* *` and `~ ~` + +- Don't ask again modals blinking ([#21454](https://github.com/RocketChat/Rocket.Chat/pull/21454)) + + Made the check before opening the modal. + +- Duplicated header on admin's user contextualbar ([#21810](https://github.com/RocketChat/Rocket.Chat/pull/21810)) + + ![image](https://user-images.githubusercontent.com/27704687/116125858-5ff60600-a69c-11eb-9859-41f7393b78bf.png) + +- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink)) + +- Fix the bugs opening discussions ([#21557](https://github.com/RocketChat/Rocket.Chat/pull/21557) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + I added the right row export to display the discussions list + +- Generic Attachment broken somehow ([#21657](https://github.com/RocketChat/Rocket.Chat/pull/21657)) + +- Header component breaking if user is not part of teams room. ([#21465](https://github.com/RocketChat/Rocket.Chat/pull/21465)) + +- Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink)) + +- Margins on contextual bar information ([#21457](https://github.com/RocketChat/Rocket.Chat/pull/21457)) + + ### Room + **Before** + ![image](https://user-images.githubusercontent.com/27704687/115080812-ba8fa500-9ed9-11eb-9078-3625603bf92b.png) + + **After** + ![image](https://user-images.githubusercontent.com/27704687/115080966-e9a61680-9ed9-11eb-929f-6516c1563e99.png) + + ### Livechat + ![image](https://user-images.githubusercontent.com/27704687/113640101-1859fc80-9651-11eb-88f8-09a899953988.png) + +- Message Block ordering ([#21464](https://github.com/RocketChat/Rocket.Chat/pull/21464)) + + Reactions should come before reply button. + ![image](https://user-images.githubusercontent.com/40830821/113748926-6f0e1780-96df-11eb-93a5-ddcfa891413e.png) + +- Message link null corrupts message rendering ([#21579](https://github.com/RocketChat/Rocket.Chat/pull/21579) by [@g-thome](https://github.com/g-thome)) + + Additional checks on message_link field before rendering message contents + +- Omnichannel Activity Monitor closing chats returned to the queue ([#21782](https://github.com/RocketChat/Rocket.Chat/pull/21782)) + + Fix `VisitorInactivityMonitor` is still monitoring rooms that returned to `Queue Chats` + +- Omnichannel current chats and agents grid aren't sorting by status properly ([#21616](https://github.com/RocketChat/Rocket.Chat/pull/21616) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485)) + + The Omnichannel Queue Manager is returning outdated room object when delegating the chat to an agent, hence, our Livechat widget is affected and the agent assigned to the chat is not displayed on the widget, only after refreshing/reloading. + +- Omnichannel room information panel breaking due to lack of data verification ([#21608](https://github.com/RocketChat/Rocket.Chat/pull/21608) by [@rafaelblink](https://github.com/rafaelblink)) + +- public teams not appearing on spotlight search results ([#21495](https://github.com/RocketChat/Rocket.Chat/pull/21495)) + +- Remove all agent subscriptions when an Omnichannel chat is closed ([#21509](https://github.com/RocketChat/Rocket.Chat/pull/21509)) + +- Remove size prop from StatusBullet component ([#21428](https://github.com/RocketChat/Rocket.Chat/pull/21428)) + +- Rename Omnichannel Rooms, Inquiries and Subscriptions when the Contact Name changes ([#21513](https://github.com/RocketChat/Rocket.Chat/pull/21513) by [@rafaelblink](https://github.com/rafaelblink)) + +- Rename team not working properly ([#21552](https://github.com/RocketChat/Rocket.Chat/pull/21552)) + +- Selected channels are not showing in Teams ([#21669](https://github.com/RocketChat/Rocket.Chat/pull/21669) by [@sumukhah](https://github.com/sumukhah)) + +- Send alternative color to unread sidebar icon ([#21432](https://github.com/RocketChat/Rocket.Chat/pull/21432)) + + ![image](https://user-images.githubusercontent.com/17487063/113469819-08f76b00-9427-11eb-942e-783c186ba7cd.png) + +- Show direct rooms as readonly when one of the users is deactivated ([#21684](https://github.com/RocketChat/Rocket.Chat/pull/21684)) + +- Tag component is no longer rendering on Chat Room Information panel ([#21429](https://github.com/RocketChat/Rocket.Chat/pull/21429) by [@rafaelblink](https://github.com/rafaelblink)) + +- Team types in admin -> rooms. ([#21612](https://github.com/RocketChat/Rocket.Chat/pull/21612)) + + ![print](https://user-images.githubusercontent.com/40830821/115068327-82339b00-9ec8-11eb-8e37-726baf9d2db0.jpg) + +- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491)) + + - Fix teams.listRooms pagination for non-admin users + +- Too many request on loadHistory method ([#21594](https://github.com/RocketChat/Rocket.Chat/pull/21594)) + +- Toolbox icons order ([#21739](https://github.com/RocketChat/Rocket.Chat/pull/21739)) + +- Typos/missing elements in the French translation ([#21525](https://github.com/RocketChat/Rocket.Chat/pull/21525) by [@Jeanstaquet](https://github.com/Jeanstaquet)) + + - I have corrected some typos in the translation + - I added a translation for missing words + - I took the opportunity to correct a mistranslated word + - Test_Desktop_Notifications was missing in the EN and FR file + ![image](https://user-images.githubusercontent.com/45966964/114290186-e7792d80-9a7d-11eb-8164-3b5e72e93703.png) + +- Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489)) + + - Fix `updateMessage` to avoid parsing URLs inside markdown + - Honor `parseUrls` property when updating messages + +- Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534)) + +- User status out of sync ([#21656](https://github.com/RocketChat/Rocket.Chat/pull/21656)) + +- Wrong title on Omnichannel contact information panel ([#21682](https://github.com/RocketChat/Rocket.Chat/pull/21682) by [@rafaelblink](https://github.com/rafaelblink)) + +- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink)) + +- Wrong user in user info ([#21451](https://github.com/RocketChat/Rocket.Chat/pull/21451)) + + Fixed some race conditions in admin. + + Self DMs used to be created with the userId duplicated. Sometimes rooms can have 2 equal uids, but it's a self DM. Fixed a getter so this isn't a problem anymore. + +
+🔍 Minor changes + + +- Doc: Corrected links to documentation of rocket.chat README.md ([#20478](https://github.com/RocketChat/Rocket.Chat/pull/20478) by [@joshi008](https://github.com/joshi008)) + + The link for documentation in the readme was previously https://rocket.chat/docs/ while that was not working and according to the website it was https://docs.rocket.chat/ + The link for deployment methods in readme was corrected from https://rocket.chat/docs/installation/paas-deployments/ to https://docs.rocket.chat/installation/paas-deployments + Some more links to the documentations were giving 404 error which hence updated. + +- [Improve] Remove useless tabbar options from Omnichannel rooms ([#21561](https://github.com/RocketChat/Rocket.Chat/pull/21561) by [@rafaelblink](https://github.com/rafaelblink)) + +- A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527)) + + - The Meteor package **`kadira:blaze-layout` was removed**; + - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; + - The **`#react-root` element** is rendered on server-side instead of dynamically injected into the DOM tree; + - The **"page loading" throbber** is now rendered on the React tree; + - The **`renderRouteComponent` helper was removed**; + - Some code run without any criteria on **`main` template** module was moved into **client startup modules**; + - React portals used to embed Blaze templates have their own subscription (**`blazePortals`**); + - Some **route components were refactored** to remove a URL path trap originally disabled by `renderRouteComponent`; + - A new component to embed the DOM nodes generated by **`RoomManager`** was created. + +- Add ')' after Date and Time in DB migration ([#21519](https://github.com/RocketChat/Rocket.Chat/pull/21519) by [@im-adithya](https://github.com/im-adithya)) + +- Bump Apps-Engine version ([#21840](https://github.com/RocketChat/Rocket.Chat/pull/21840)) + +- bump fuselage ([#21841](https://github.com/RocketChat/Rocket.Chat/pull/21841)) + +- Bump Livechat Version ([#21694](https://github.com/RocketChat/Rocket.Chat/pull/21694)) + +- Chore: Add tests for teams.update REST endpoint ([#21653](https://github.com/RocketChat/Rocket.Chat/pull/21653) by [@g-thome](https://github.com/g-thome)) + + add more tests to this endpoint + +- Chore: Cache EE node_modules on CI ([#21831](https://github.com/RocketChat/Rocket.Chat/pull/21831)) + +- Chore: Do not stop animations on Test Mode ([#21484](https://github.com/RocketChat/Rocket.Chat/pull/21484)) + +- Chore: Increase testing coverage on password policy class ([#21482](https://github.com/RocketChat/Rocket.Chat/pull/21482)) + +- Chore: Meteor update to 2.1.1 ([#21494](https://github.com/RocketChat/Rocket.Chat/pull/21494)) + + Basically Node update to version 12.22.1 + + Meteor change log https://github.com/meteor/meteor/blob/devel/History.md#v211-2021-04-06 + +- Chore: Remove control character from room model operation ([#21493](https://github.com/RocketChat/Rocket.Chat/pull/21493)) + +- Fix typo in app/apps/README file ([#21204](https://github.com/RocketChat/Rocket.Chat/pull/21204) by [@sauravjoshi23](https://github.com/sauravjoshi23)) + +- Fix: Missing module `eventemitter3` for micro services ([#21611](https://github.com/RocketChat/Rocket.Chat/pull/21611)) + + - Fix error when running micro services after version 3.12 + - Fix build of docker image version latest for micro services + +- Language update from LingoHub 🤖 on 2021-04-05Z ([#21446](https://github.com/RocketChat/Rocket.Chat/pull/21446)) + +- Language update from LingoHub 🤖 on 2021-04-12Z ([#21530](https://github.com/RocketChat/Rocket.Chat/pull/21530)) + +- Language update from LingoHub 🤖 on 2021-04-19Z ([#21642](https://github.com/RocketChat/Rocket.Chat/pull/21642)) + +- Merge master into develop & Set version to 3.14.0-develop ([#21441](https://github.com/RocketChat/Rocket.Chat/pull/21441)) + +- QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778)) + + - Fixed canAccessRoom validation + - Added e2e tests + - Removed channels that user cannot add to the team from autocomplete suggestions + - Improved error messages + +- Regression: Bold, italic and strike render (Original markdown) ([#21747](https://github.com/RocketChat/Rocket.Chat/pull/21747)) + + Modified regex to avoid spaces between the marked text and the symbols. Also made it possible to apply the three markings at the same time, independing of order. + +- regression: Cannot enable e2e in direct room. ([#21650](https://github.com/RocketChat/Rocket.Chat/pull/21650)) + +- Regression: Change CI files hashes for caching ([#21776](https://github.com/RocketChat/Rocket.Chat/pull/21776)) + +- Regression: Edit user in admin breaking ([#21613](https://github.com/RocketChat/Rocket.Chat/pull/21613)) + +- Regression: Fix room not returning to the previous room after directory ([#21757](https://github.com/RocketChat/Rocket.Chat/pull/21757)) + +- Regression: Fix scroll to bottom ([#21731](https://github.com/RocketChat/Rocket.Chat/pull/21731)) + +- Regression: Fix services Docker image build ([#21750](https://github.com/RocketChat/Rocket.Chat/pull/21750)) + +- regression: Italic being parsed with surrounding non-whitespace text ([#21815](https://github.com/RocketChat/Rocket.Chat/pull/21815)) + +- Regression: Legacy Banner Position ([#21598](https://github.com/RocketChat/Rocket.Chat/pull/21598)) + + ### Before: + ![image](https://user-images.githubusercontent.com/27704687/114961773-dc3c4e00-9e3f-11eb-9a32-e882db3fbfbc.png) + + ### After + ![image](https://user-images.githubusercontent.com/27704687/114961673-a6976500-9e3f-11eb-9238-a12870d7db8f.png) + +- regression: Markdown broken on safari ([#21780](https://github.com/RocketChat/Rocket.Chat/pull/21780)) + +- Regression: Problem with Importer's logs ([#21812](https://github.com/RocketChat/Rocket.Chat/pull/21812)) + +- Regression: React + Blaze reconciliation ([#21567](https://github.com/RocketChat/Rocket.Chat/pull/21567)) + +- Regression: Reactivate direct conversations only if all involved users are active ([#21714](https://github.com/RocketChat/Rocket.Chat/pull/21714)) + +- Regression: Reconnection not working properly due to changes on ECHD Proxy ([#21741](https://github.com/RocketChat/Rocket.Chat/pull/21741)) + + The ECHD Proxy implements a delay on websocket connection, the first implementation lost the reference to auto reconnect functionality. + +- regression: Team Channels actions ([#21417](https://github.com/RocketChat/Rocket.Chat/pull/21417)) + +- Regression: team sync not accepting multiple teams ([#21768](https://github.com/RocketChat/Rocket.Chat/pull/21768)) + +- Regression: Unread Threads Header and List ([#21816](https://github.com/RocketChat/Rocket.Chat/pull/21816)) + +- Regression: Update fuselage for icons fix ([#21809](https://github.com/RocketChat/Rocket.Chat/pull/21809)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Jeanstaquet](https://github.com/Jeanstaquet) +- [@Kartik18g](https://github.com/Kartik18g) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) +- [@g-thome](https://github.com/g-thome) +- [@im-adithya](https://github.com/im-adithya) +- [@joshi008](https://github.com/joshi008) +- [@lolimay](https://github.com/lolimay) +- [@lucassartor](https://github.com/lucassartor) +- [@rafaelblink](https://github.com/rafaelblink) +- [@sauravjoshi23](https://github.com/sauravjoshi23) +- [@sumukhah](https://github.com/sumukhah) +- [@wolbernd](https://github.com/wolbernd) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@r0zbot](https://github.com/r0zbot) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.13.5 +`2021-05-27 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.21.0` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.24.1` + +### 🐛 Bug fixes + + +- Discussion names showing a random value ([#22172](https://github.com/RocketChat/Rocket.Chat/pull/22172)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.13.3 +`2021-04-20 · 2 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.21.0` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.24.1` + +### 🐛 Bug fixes + + +- Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491)) + + - Fix teams.listRooms pagination for non-admin users + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.13.2 +`2021-04-14 · 1 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.21.0` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.24.1` + +### 🐛 Bug fixes + + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +
+🔍 Minor changes + + +- Release 3.13.2 ([#21570](https://github.com/RocketChat/Rocket.Chat/pull/21570)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.13.1 +`2021-04-08 · 9 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.21.0` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.24.1` + +### 🐛 Bug fixes + + +- Add tag input to Closing Chat modal ([#21462](https://github.com/RocketChat/Rocket.Chat/pull/21462) by [@rafaelblink](https://github.com/rafaelblink)) + +- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469)) + + - Fix Administration/Users pagination + +- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470)) + + Fixes the marketplace app installation not correctly displaying the permissions modal. + +- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink)) + +- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink)) + +- Header component breaking if user is not part of teams room. ([#21465](https://github.com/RocketChat/Rocket.Chat/pull/21465)) + +- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485)) + + The Omnichannel Queue Manager is returning outdated room object when delegating the chat to an agent, hence, our Livechat widget is affected and the agent assigned to the chat is not displayed on the widget, only after refreshing/reloading. + +- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink)) + +
+🔍 Minor changes + + +- Release 3.13.1 ([#21486](https://github.com/RocketChat/Rocket.Chat/pull/21486) by [@rafaelblink](https://github.com/rafaelblink)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@rafaelblink](https://github.com/rafaelblink) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@thassiov](https://github.com/thassiov) + +# 3.13.0 +`2021-04-04 · 7 🎉 · 11 🚀 · 36 🐛 · 61 🔍 · 38 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.21.0` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.24.0` + +### 🎉 New features + + +- **APPS:** Map description as a room value in Apps ([#20811](https://github.com/RocketChat/Rocket.Chat/pull/20811) by [@lucassartor](https://github.com/lucassartor)) + + Add the `description` value of a `room` as a mapped value in the Apps-Engine. That way developers can get the `description` information from a `room` in their app. + +- **APPS:** New event interfaces for pre/post user leaving a room ([#20917](https://github.com/RocketChat/Rocket.Chat/pull/20917) by [@lucassartor](https://github.com/lucassartor)) + + Added events and errors that trigger when a user leaves a room. + That way it can communicate with the Apps-Engine by the `IPreRoomUserLeave` and `IPostRoomUserLeave` event interfaces. + +- **Enterprise:** Omnichannel On-Hold Queue ([#20945](https://github.com/RocketChat/Rocket.Chat/pull/20945)) + + ### About this feature + This feature has been introduced to deal with Inactive chats. A chat is considered Inactive if an Omnichannel End User (aka Visitor) has not replied back to an agent in some time. These types of inactive chats become very important when an organisation has a limit set for `Max Simultaneous Chats per agent` which is defined by the following setting :point_down: , as more number of Inactive chats would directly affect an agent's productivity. + ![image](https://user-images.githubusercontent.com/34130764/111533003-4d7ad980-878c-11eb-8c1c-2796678a07db.png) + + Before this feature, we only had one option to deal with such Inactive/Abandoned chats - which was to auto close abandoned chats via this setting :point_down: + ![image](https://user-images.githubusercontent.com/34130764/111534353-e65e2480-878d-11eb-82a5-71368064ef45.png) + + however closing a chat isn't a best option for some cases. Let me take an example to explain a scenario + + > An agent is assisting a customer for installing a very huge software which is likely to take more than 20-30 minutes to download. In such scenarios closing a chat isn't the best approach since even after the lengthy download the customer might still need some assist from the agent. + > So basically this chat is going to block the agent's queue until the customer is able to finish his time-consuming download task in which he/she doesn't require any agent's assistance. Due to the `Max Simultaneous Chats per agent` limit, the agent is also not able to use this extra time to help other customer thus affecting his overall productivity. + + **So how does the On-Hold feature solve this problem?** + With the On-Hold feature, an agent is now able to place a chat on-hold. On-Hold chats **don’t count towards the maximum number of concurrent chats** an agent can have. So in our above example, the agent can simply now place the customer on-hold for 20-30 minutes until the customer downloads the software and within this time, the agent can serve other customers - hence increasing the productivity of an agent. + + ---------------------------------------- + ### Working of the new On-Hold feature + + #### How can you place a chat on Hold ? + + A chat can be placed on-hold via 2 means + 1. Automatically place Abandoned chats On-hold + ![image](https://user-images.githubusercontent.com/34130764/111537074-06431780-8791-11eb-8d23-99f5d9f8ec45.png) + Via this :top: option you can define a timer which will get started when a customer sends a message. If we don't receive any message from the customer within this timer, the timer will get expired and the chat will be considered as Abandoned. + ![image](https://user-images.githubusercontent.com/34130764/111537346-53bf8480-8791-11eb-8dc7-260633b4e98f.png) + The via this :top: setting you can choose to automatically place this abandoned chat On Hold + 2. Manually place a chat On Hold + As an admin, you can allow an agent to manually place a chat on-hold. To do so, you'll need to turn on this :point_down: setting + ![image](https://user-images.githubusercontent.com/34130764/111537545-97b28980-8791-11eb-86fd-db45b87e9cc1.png) + Now an agent will be able to see a new `On Hold` button within their `Visitor Info Panel` like this :point_down: , provided the agent has sent the last message + ![image](https://user-images.githubusercontent.com/34130764/111537853-f24be580-8791-11eb-9561-d77ba430c625.png) + + #### How can you resume a On Hold chat ? + An On Hold chat can be resumed via 2 means + + 1. If the Customer sends a message + If the Customer / Omnichannel End User sends a message to the On Hold chat, the On Hold chat will get automatically resumed. + 2. Manually by agent + An Agent can manually resume the On Hold chat via clicking the `Resume` button in the bottom of a chat room. + ![image](https://user-images.githubusercontent.com/34130764/111538666-f88e9180-8792-11eb-8d14-01453b8e3db0.png) + + #### What would happen if the agent already reached maximum chats, and a On-Hold chat gets resumed ? + Based on how the chat was resumed, there are multiple cases are each case is dealt differently + + - If an agent manually tries to resume the On Hold chat, he/she will get an error saying `Maximum Simultaneous chat limit reached` + - If a customer replies back on an On Hold chat and the last serving agent has reached maximum capacity, then this customer will be placed on the queue again from where based on the Routing Algorithm selected, the chat will get transferred to any available agent + +- Ability to hide 'Room topic changed' system messages ([#21062](https://github.com/RocketChat/Rocket.Chat/pull/21062) by [@Tirieru](https://github.com/Tirieru)) + +- Add Omnichannel Livechat Trigger option for when user opens the chat window ([#20030](https://github.com/RocketChat/Rocket.Chat/pull/20030) by [@reda-alaoui](https://github.com/reda-alaoui)) + +- Quick action buttons for Omnichannel ([#21123](https://github.com/RocketChat/Rocket.Chat/pull/21123) by [@rafaelblink](https://github.com/rafaelblink)) + +- Teams ([#20966](https://github.com/RocketChat/Rocket.Chat/pull/20966) by [@g-thome](https://github.com/g-thome)) + + ## Teams + + + + You can easily group your users as Teams on Rocket.Chat. The feature takes the hassle out of managing multiple users one by one and allows you to handle them at the same time efficiently. + + + - Teams can be public or private and each team can have its own channels, which also can be public or private. + - It's possible to add existing channels to a Team or create new ones inside a Team. + - It's possible to invite people outside a Team to join Team's channels. + - It's possible to convert channels to Teams + - It's possible to add all team members to a channel at once + - Team members have roles + + + ![image](https://user-images.githubusercontent.com/70927132/113421955-4f56b680-93a2-11eb-80dc-9b70a3f09b3e.png) + + + + **Quickly onboard new users with Autojoin channels** + + Teams can have Auto-join channels – channels to which the team members are automatically added, so you don’t need to go through the manual process of adding users repetitively + + ![image](https://user-images.githubusercontent.com/70927132/113419284-81194e80-939d-11eb-9fff-aeb05cbc8089.png) + + **Instantly mention multiple members at once** (available in EE) + + With Teams, you don’t need to remember everyone’s name to communicate with a team quickly. Just mention a Team — @engineers, for instance — and all members will be instantly notified. + +### 🚀 Improvements + + +- Add spacing between elements in Profile Page ([#20742](https://github.com/RocketChat/Rocket.Chat/pull/20742) by [@cyberShaw](https://github.com/cyberShaw)) + +- Added modal-box for preview after recording audio. ([#20370](https://github.com/RocketChat/Rocket.Chat/pull/20370) by [@Darshilp326](https://github.com/Darshilp326)) + + A modal box will be displayed so that users can change the filename and add description. + + **Before** + + https://user-images.githubusercontent.com/55157259/105687301-4e2a8880-5f1e-11eb-873d-dc8a880a2fc8.mp4 + + **After** + + https://user-images.githubusercontent.com/55157259/105687342-597db400-5f1e-11eb-8b61-8f9d9ebad0c4.mp4 + +- Adds toast after follow/unfollow messages and following icon for followed messages without threads. ([#20025](https://github.com/RocketChat/Rocket.Chat/pull/20025) by [@RonLek](https://github.com/RonLek)) + + There was no alert on following/unfollowing a message previously. Also, it was impossible to make out a followed message with no threads from an unfollowed one. + + This PR would show an alert on following/unfollowing a message and also display a small bell icon (similar to the ones for starred and pinned messages) when a message with no thread is followed. + + https://user-images.githubusercontent.com/28918901/103813540-43e73e00-5086-11eb-8592-2877eb650f3e.mp4 + +- Back to threads list button on threads contextual bar ([#20882](https://github.com/RocketChat/Rocket.Chat/pull/20882)) + + ![image](https://user-images.githubusercontent.com/27704687/108926702-ad62e200-761d-11eb-8c18-5406246a6955.png) + +- Better new channel popover ([#21018](https://github.com/RocketChat/Rocket.Chat/pull/21018)) + +- grammatical typos in pull request template ([#21115](https://github.com/RocketChat/Rocket.Chat/pull/21115) by [@sumukhah](https://github.com/sumukhah)) + +- Improve Apps permission modal ([#21193](https://github.com/RocketChat/Rocket.Chat/pull/21193) by [@lucassartor](https://github.com/lucassartor)) + + Improve the UI of the Apps permission modal when installing an App that requires permissions. + + **New UI:** + ![after](https://user-images.githubusercontent.com/49413772/111685622-e817fe80-8806-11eb-998d-b56623560e74.PNG) + + **Old UI:** + ![before](https://user-images.githubusercontent.com/49413772/111685897-375e2f00-8807-11eb-814e-cb8060dc1830.PNG) + +- Make debug logs of Apps configurable via Log_Level setting in the Admin panel ([#21000](https://github.com/RocketChat/Rocket.Chat/pull/21000) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +- Re-design Omnichannel Room Info Panel ([#21199](https://github.com/RocketChat/Rocket.Chat/pull/21199) by [@rafaelblink](https://github.com/rafaelblink)) + +- Set description in create channel modal ([#21132](https://github.com/RocketChat/Rocket.Chat/pull/21132)) + +- Sort Users List In Case Insensitive Manner ([#20790](https://github.com/RocketChat/Rocket.Chat/pull/20790) by [@aditya-mitra](https://github.com/aditya-mitra)) + + The users listed in the admin panel were sorted in a case-sensitive manner , where the capitals came first and then the small letters (like - *A B C a b c*). This Change fixes this by sorting the names in a caseinsensitive manner (now - *A a B b C c*). + + ### Before + + ![before](https://user-images.githubusercontent.com/55396651/108189880-3fa74980-7137-11eb-99da-6498707b4bf8.png) + + + ### With This Change + + ![after](https://user-images.githubusercontent.com/55396651/108190177-9dd42c80-7137-11eb-8b4e-b7cef4ba512f.png) + +### 🐛 Bug fixes + + +- 'Chats in Progress' Section is not rendering when the routing algorithm is not Manual Selection ([#21324](https://github.com/RocketChat/Rocket.Chat/pull/21324)) + +- "Taken At" and "Average of Response Time" fields not rendering properly on Room Information panel ([#21365](https://github.com/RocketChat/Rocket.Chat/pull/21365) by [@rafaelblink](https://github.com/rafaelblink)) + +- **Apps:** Fix Game Center icon disappeared after the React refactor ([#21091](https://github.com/RocketChat/Rocket.Chat/pull/21091) by [@lolimay](https://github.com/lolimay)) + +- **APPS:** Warn message while installing app in air-gapped environment ([#20992](https://github.com/RocketChat/Rocket.Chat/pull/20992) by [@lucassartor](https://github.com/lucassartor)) + + Change **error** message to a **warn** message when uploading a `.zip` file app into a air-gapped environment. + + The **error** message was giving the impression for the user that the app wasn't properly being installed , which it wasn't the case: + ![error](https://user-images.githubusercontent.com/49413772/109855273-d3e4d680-7c36-11eb-824b-ad455d24710c.PNG) + + A more detailed **warn** message can fix that impression for the user: + ![warn](https://user-images.githubusercontent.com/49413772/109855383-f2e36880-7c36-11eb-8d61-c442980bd8fd.PNG) + +- Add missing `unreads` field to `users.info` REST endpoint ([#20905](https://github.com/RocketChat/Rocket.Chat/pull/20905)) + +- Added hideUnreadStatus check before showing unread messages on roomList ([#20867](https://github.com/RocketChat/Rocket.Chat/pull/20867)) + + Added hide unread counter check, if the show unread messages is turned off, now unread messages badge won't be shown to user. + +- Broken message fields attachment handling ([#21069](https://github.com/RocketChat/Rocket.Chat/pull/21069)) + + Avoids an `undefined` value to break a rendered attachment. + +- Correct direction for admin mapview text ([#20897](https://github.com/RocketChat/Rocket.Chat/pull/20897) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + ![Screenshot from 2021-02-25 02-49-21](https://user-images.githubusercontent.com/38764067/109068512-f8602080-7715-11eb-8e22-d610f9d046d8.png) + ![Screenshot from 2021-02-25 02-49-46](https://user-images.githubusercontent.com/38764067/109068516-fa29e400-7715-11eb-9119-1c79abce278f.png) + ![Screenshot from 2021-02-25 02-49-57](https://user-images.githubusercontent.com/38764067/109068519-fbf3a780-7715-11eb-8b3d-0dc32f898725.png) + + The text says the share button will be on the left of the messagebox once enabled. However, it actually is on the right. + +- Correct ignored message CSS ([#20928](https://github.com/RocketChat/Rocket.Chat/pull/20928) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + Modified the CSS to not affect the ignored sequential messages exactly like the non-ignored messages, which is what was causing the second and further ignored message o appear weirdly when unhidden one by one. + +- Correct Inline reactions behaviour ([#20743](https://github.com/RocketChat/Rocket.Chat/pull/20743) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + The $().data function was returning outdated values for re-assigned emoji buttons with new data. Changed that to use the .attr() function. This works perfectly. + +- Correct Typo - donwload to download ([#21096](https://github.com/RocketChat/Rocket.Chat/pull/21096) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Correct the spelling of _donwload_ to _download_ in `TitleLink` of Attachments. + +- Custom emojis to override default ([#20359](https://github.com/RocketChat/Rocket.Chat/pull/20359) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + Due to the sequence of the imports and how the emojiRenderer prioritizes lists, the custom emojis could not override the emojione emojis. Making two small changes fixed the issue. + + With the custom emoji for `:facepalm:` added, you can check out the result below: + ### Before + ![Screenshot from 2021-01-25 02-20-04](https://user-images.githubusercontent.com/38764067/105643088-dfb0e080-5eb3-11eb-8a00-582c53fbe9a4.png) + + ### After + ![Screenshot from 2021-01-25 02-18-58](https://user-images.githubusercontent.com/38764067/105643076-cdcf3d80-5eb3-11eb-84b8-5dbc4f1135df.png) + +- Empty URL in user avatar doesn't show error and enables save ([#20440](https://github.com/RocketChat/Rocket.Chat/pull/20440) by [@im-adithya](https://github.com/im-adithya)) + + Added toast and disabled save. + +- Ensure E2E is enabled/disabled on sending message ([#21084](https://github.com/RocketChat/Rocket.Chat/pull/21084)) + + Rooms which were encrypted somewhere in the past still could encrypt messages due to a race condition due to a query over `Subscriptions` collection. + +- Fix the search list showing the last channel ([#21160](https://github.com/RocketChat/Rocket.Chat/pull/21160) by [@shrinish123](https://github.com/shrinish123)) + + The search list now also properly shows the last channel + Before : + + ![searchlist](https://user-images.githubusercontent.com/56491104/111471487-f3a7ee80-874e-11eb-9c6e-19bbf0731d60.png) + + After : + ![search_final](https://user-images.githubusercontent.com/56491104/111471521-fe628380-874e-11eb-8fa3-d1edb57587e1.png) + +- Follow thread action on threads list ([#20881](https://github.com/RocketChat/Rocket.Chat/pull/20881)) + + https://user-images.githubusercontent.com/27704687/108925036-a4bcdc80-761a-11eb-83b8-2df8960f74cb.mp4 + +- Iframe flags for audio and video on the BigBlueButton integration ([#20879](https://github.com/RocketChat/Rocket.Chat/pull/20879) by [@fcecagno](https://github.com/fcecagno)) + +- Inactivity Time field displaying wrong information ([#21363](https://github.com/RocketChat/Rocket.Chat/pull/21363) by [@rafaelblink](https://github.com/rafaelblink)) + +- Incorrect time format of the Queue Time field on the room information page ([#21394](https://github.com/RocketChat/Rocket.Chat/pull/21394) by [@rafaelblink](https://github.com/rafaelblink)) + +- Make custom emoji file required ([#19583](https://github.com/RocketChat/Rocket.Chat/pull/19583) by [@m-shreyansh](https://github.com/m-shreyansh)) + +- Missing app permissions translation ([#21066](https://github.com/RocketChat/Rocket.Chat/pull/21066)) + + Add missing translations for some app permissions + +- Missing Keywords in Permissions ([#20354](https://github.com/RocketChat/Rocket.Chat/pull/20354) by [@im-adithya](https://github.com/im-adithya)) + + The keywords were added to the i18n folder. (Default only) + +- Multi Select isn't working in Export Messages ([#21236](https://github.com/RocketChat/Rocket.Chat/pull/21236) by [@PriyaBihani](https://github.com/PriyaBihani)) + + While exporting messages, we were not able to select multiple Users like this: + + https://user-images.githubusercontent.com/69837339/111953057-169a2000-8b0c-11eb-94a4-0e1657683f96.mp4 + + Now we can select multiple users: + + + https://user-images.githubusercontent.com/69837339/111953097-274a9600-8b0c-11eb-9177-bec388b042bd.mp4 + +- New Channel popover not closing ([#21080](https://github.com/RocketChat/Rocket.Chat/pull/21080)) + + https://user-images.githubusercontent.com/17487063/110828228-92c37680-8275-11eb-9fce-fb40765935a3.mp4 + +- OEmbedURLWidget - Show Full Embedded Text Description ([#20569](https://github.com/RocketChat/Rocket.Chat/pull/20569) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Embeds were cutoff when either _urls had a long description_. + This was handled by removing `overflow:hidden;text-overflow:ellipsis;` from the inline styles in [`oembedUrlWidget.html`](https://github.com/RocketChat/Rocket.Chat/blob/develop/app/oembed/client/oembedUrlWidget.html#L28). + + ### Earlier + + ![earlier](https://user-images.githubusercontent.com/55396651/107110825-00dcde00-6871-11eb-866e-13cabc5b0d05.png) + + ### Now + + ![now](https://user-images.githubusercontent.com/55396651/107110794-ca06c800-6870-11eb-9b3b-168679936612.png) + +- Reactions list showing users in reactions option of message action. ([#20753](https://github.com/RocketChat/Rocket.Chat/pull/20753) by [@Darshilp326](https://github.com/Darshilp326)) + + Reactions list shows emojis with respected users who have reacted with that emoji. + + https://user-images.githubusercontent.com/55157259/107857609-5870e000-6e55-11eb-8137-494a9f71b171.mp4 + +- Removing truncation from profile ([#20352](https://github.com/RocketChat/Rocket.Chat/pull/20352) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + Truncating text in profile view was making some information completely inaccessible. Removed it from the user status and the custom fields where if the information is longer, the user would actually want to see all of it. + + ### Before + ![Screenshot from 2021-01-24 20-54-44](https://user-images.githubusercontent.com/38764067/105634935-7e264d00-5e86-11eb-8a6c-9f2a363e0f6c.png) + + ### After + ![Screenshot from 2021-01-24 20-54-06](https://user-images.githubusercontent.com/38764067/105634940-82eb0100-5e86-11eb-8b90-e97a43c5e938.png) + +- Replace wrong field description on Room Information panel ([#21395](https://github.com/RocketChat/Rocket.Chat/pull/21395) by [@rafaelblink](https://github.com/rafaelblink)) + +- Reply count of message is decreased after a message from thread is deleted ([#19977](https://github.com/RocketChat/Rocket.Chat/pull/19977)) + + The reply count now is decreased if a message from a thread is deleted. + +- Set establishing to false if OTR timeouts ([#21183](https://github.com/RocketChat/Rocket.Chat/pull/21183) by [@Darshilp326](https://github.com/Darshilp326)) + + Set establishing false if OTR timeouts. + + https://user-images.githubusercontent.com/55157259/111617086-b30cab80-8808-11eb-8740-3b4ffacfc322.mp4 + +- Sidebar scroll missing full height ([#21071](https://github.com/RocketChat/Rocket.Chat/pull/21071)) + + ![image](https://user-images.githubusercontent.com/27704687/110708646-c05ae200-81d9-11eb-86da-1d6a2e99b6e5.png) + +- undefined in PruneMessages deleting DM ([#20873](https://github.com/RocketChat/Rocket.Chat/pull/20873) by [@vova-zush](https://github.com/vova-zush)) + + Fix undefined in Prune Messages in direct + +- Unexpected open or close visitor info ([#21094](https://github.com/RocketChat/Rocket.Chat/pull/21094)) + + The VisitorInfo component closes or open every time a new message was sent, this PR fix that. + +- Use the correct icons for DMs ([#21125](https://github.com/RocketChat/Rocket.Chat/pull/21125)) + +- Visitors.info endpoint being called multiple times ([#21350](https://github.com/RocketChat/Rocket.Chat/pull/21350) by [@rafaelblink](https://github.com/rafaelblink)) + +- Wrong license seats number administration info panel ([#21222](https://github.com/RocketChat/Rocket.Chat/pull/21222)) + + The administration info panel was showing the *total of users* as the number counted for the usage of the license seats. Now it's showing the correct number that is *active users*. This was not affecting the license validation on the server-side, only causing confusion for the administrators to check how the usage was being counted. + +
+🔍 Minor changes + + +- [Fix] Broken useEffect opened new BBB Tab twice ([#20770](https://github.com/RocketChat/Rocket.Chat/pull/20770) by [@Cosnavel](https://github.com/Cosnavel)) + +- Bump Livechat Widget ([#21264](https://github.com/RocketChat/Rocket.Chat/pull/21264)) + + Update Livechat version to 1.9.0 + +- Change the order of Sort Setup Wizard options ([#21073](https://github.com/RocketChat/Rocket.Chat/pull/21073)) + + Sort options in select fields of settings during Setup Wizard according to browser's locale. + +- Chore: Add tests for Meteor methods ([#20901](https://github.com/RocketChat/Rocket.Chat/pull/20901)) + + Add end-to-end tests for the following meteor methods + + - [x] public-settings:get + - [x] rooms:get + - [x] subscriptions:get + - [x] permissions:get + - [x] loadMissedMessages + - [x] loadHistory + - [x] listCustomUserStatus + - [x] getUserRoles + - [x] getRoomRoles (called by the API, already covered) + - [x] getMessages + - [x] getUsersOfRoom + - [x] loadNextMessages + - [x] getThreadMessages + +- Chore: Meteor update 2.1 ([#21061](https://github.com/RocketChat/Rocket.Chat/pull/21061)) + +- Chore: Remove `new Buffer` in favor of `Buffer.from` ([#20918](https://github.com/RocketChat/Rocket.Chat/pull/20918)) + + - Changes `new Buffer` to `Buffer.from` since the first one is deprecated. + +- EE Team Mentions ([#21418](https://github.com/RocketChat/Rocket.Chat/pull/21418)) + +- Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015)) + + Add test for + - settings/raw + - minimongo/comparisons + +- Improve: NPS survey fetch ([#21263](https://github.com/RocketChat/Rocket.Chat/pull/21263)) + +- Regression: New chat forwarding modal is not verifying mandatory values ([#21288](https://github.com/RocketChat/Rocket.Chat/pull/21288) by [@rafaelblink](https://github.com/rafaelblink)) + +- Regression: Add BreadCrumbs tag into auto-join items ([#21294](https://github.com/RocketChat/Rocket.Chat/pull/21294)) + +- Regression: Add call to eraseRoom method ([#21392](https://github.com/RocketChat/Rocket.Chat/pull/21392)) + + - Replace `removeById` by `eraseRoom` method's call (which not only deletes the room, but also erases its subscriptions and triggers some apps-engine events). + +- Regression: Add isLastOwner property on teams.listRoomsOfUser endpoint ([#21323](https://github.com/RocketChat/Rocket.Chat/pull/21323)) + +- Regression: Add number of team members to teams.list and teams.listAll ([#21361](https://github.com/RocketChat/Rocket.Chat/pull/21361) by [@g-thome](https://github.com/g-thome)) + +- Regression: Add scope to permission checks in Team's endpoints ([#21369](https://github.com/RocketChat/Rocket.Chat/pull/21369)) + + - Include scope (team's main room ID) in the permission checks; + - Remove the `teamName` parameter from the `members`, `addMembers`, `updateMember` and `removeMembers` methods (since `teamId` will always be defined). + +- Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327)) + + - Add support for queries (within the `query` parameter); + - Add support to pagination (`offset` and `count`) when an user doesn't have the permission to get all rooms. + +- Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351)) + + - Change `directory.js` to reduce function complexity + - Add `teams` type of item. Directory will return all public teams & private teams the user is part of. + +- Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295)) + + ![image](https://user-images.githubusercontent.com/27704687/112379914-7e489a80-8cc7-11eb-9b0b-e454bb05755d.png) + +- Regression: Change name-error description ([#21385](https://github.com/RocketChat/Rocket.Chat/pull/21385)) + +- Regression: Channel owner can't convert it into a team. ([#21349](https://github.com/RocketChat/Rocket.Chat/pull/21349)) + +- Regression: Contact Chat History component not visible ([#21316](https://github.com/RocketChat/Rocket.Chat/pull/21316)) + +- Regression: Delete team member from related team's rooms ([#21401](https://github.com/RocketChat/Rocket.Chat/pull/21401)) + +- regression: Directory - teams tab search ([#21419](https://github.com/RocketChat/Rocket.Chat/pull/21419)) + +- Regression: directory not showing public channels of public teams ([#21400](https://github.com/RocketChat/Rocket.Chat/pull/21400)) + +- regression: Discussion room crashing if not member of parent channel ([#21310](https://github.com/RocketChat/Rocket.Chat/pull/21310)) + +- Regression: Error clicking on non joined channels on team channel list ([#21422](https://github.com/RocketChat/Rocket.Chat/pull/21422)) + +- Regression: Fix channels not being added to team on creation ([#21370](https://github.com/RocketChat/Rocket.Chat/pull/21370)) + +- Regression: Fix Members List Icon ([#21433](https://github.com/RocketChat/Rocket.Chat/pull/21433)) + +- Regression: Fix non encrypted rooms failing sending messages ([#21287](https://github.com/RocketChat/Rocket.Chat/pull/21287)) + +- Regression: Fix reactivity on teamsMembers and roomMembers ([#21366](https://github.com/RocketChat/Rocket.Chat/pull/21366)) + +- Regression: Fix TeamsChannels reactivity ([#21384](https://github.com/RocketChat/Rocket.Chat/pull/21384)) + +- Regression: General improvement to Teams ([#21402](https://github.com/RocketChat/Rocket.Chat/pull/21402)) + +- Regression: header title tag style ([#21415](https://github.com/RocketChat/Rocket.Chat/pull/21415)) + + ![image](https://user-images.githubusercontent.com/27704687/113326208-bebf9e00-92ef-11eb-97f7-91ae978fc400.png) + +- Regression: Headers icon breaking DMs ([#21412](https://github.com/RocketChat/Rocket.Chat/pull/21412)) + +- Regression: invalid teams permission check. ([#21374](https://github.com/RocketChat/Rocket.Chat/pull/21374)) + +- Regression: Modify canAccessRoom to adapt to teams specification ([#21372](https://github.com/RocketChat/Rocket.Chat/pull/21372)) + +- Regression: New endpoint to list rooms available to be added to any team ([#21373](https://github.com/RocketChat/Rocket.Chat/pull/21373)) + +- Regression: Omnichannel agents can't access new action buttons ([#21306](https://github.com/RocketChat/Rocket.Chat/pull/21306)) + +- Regression: Permissions missing on new Room Edit and Contact Edit form ([#21315](https://github.com/RocketChat/Rocket.Chat/pull/21315) by [@rafaelblink](https://github.com/rafaelblink)) + +- Regression: Quick action button missing for Omnichannel On-Hold queue ([#21285](https://github.com/RocketChat/Rocket.Chat/pull/21285)) + + - Move the Manual On Hold button to the new Omnichannel Header + ![image](https://user-images.githubusercontent.com/34130764/112291749-6ae10380-8cb6-11eb-94cd-e05efc14b1bf.png) + ![image](https://user-images.githubusercontent.com/34130764/112304146-27d95d00-8cc3-11eb-85db-dde04a110dd1.png) + + - Minor fixes + +- regression: Remove Breadcrumbs and update Tag component ([#21399](https://github.com/RocketChat/Rocket.Chat/pull/21399)) + +- Regression: Remove channel action on add channel's modal don't work ([#21356](https://github.com/RocketChat/Rocket.Chat/pull/21356)) + + ![removechannel-on-add-existing-modal](https://user-images.githubusercontent.com/27704687/112911017-eda8fa80-90ca-11eb-9c24-47a70be0c314.gif) + + ![image](https://user-images.githubusercontent.com/27704687/112911052-02858e00-90cb-11eb-85a2-0ef1f5f9ffd9.png) + +- Regression: Remove primary color from button in TeamChannels component ([#21293](https://github.com/RocketChat/Rocket.Chat/pull/21293)) + +- regression: remove user modal not showing up ([#21348](https://github.com/RocketChat/Rocket.Chat/pull/21348)) + +- Regression: Removing user from team doesn't remove them from the team's room. ([#21291](https://github.com/RocketChat/Rocket.Chat/pull/21291)) + + - Remove subscription when calling `teams.removeMembers` + +- Regression: Room Edit form not rendering priority and custom fields ([#21309](https://github.com/RocketChat/Rocket.Chat/pull/21309) by [@rafaelblink](https://github.com/rafaelblink)) + +- Regression: rooms breaking after deleting a room from a team ([#21421](https://github.com/RocketChat/Rocket.Chat/pull/21421)) + +- regression: Sidebar reactivity ([#21296](https://github.com/RocketChat/Rocket.Chat/pull/21296)) + +- Regression: Team icons in mention ([#21367](https://github.com/RocketChat/Rocket.Chat/pull/21367)) + + ![image](https://user-images.githubusercontent.com/40830821/113044232-cd814600-9173-11eb-8f17-47c2d1438b75.png) + +- regression: Team info permissions ([#21387](https://github.com/RocketChat/Rocket.Chat/pull/21387)) + +- Regression: Teams should not have same name as users ([#21371](https://github.com/RocketChat/Rocket.Chat/pull/21371)) + +- regression: Unable to add users while creating a team ([#21354](https://github.com/RocketChat/Rocket.Chat/pull/21354)) + +- Regression: Unify Contact information displayed on the Room header and Room Info ([#21312](https://github.com/RocketChat/Rocket.Chat/pull/21312) by [@rafaelblink](https://github.com/rafaelblink)) + + ![image](https://user-images.githubusercontent.com/34130764/112586659-35592900-8e22-11eb-94be-32bdff7ca883.png) + + ![image](https://user-images.githubusercontent.com/2493803/112913130-788bf400-90cf-11eb-84c6-782b203e100a.png) + + ![image](https://user-images.githubusercontent.com/2493803/112913146-817cc580-90cf-11eb-87ad-ef79766be2b3.png) + +- Regression: Unify team actions to add a room to a team ([#21386](https://github.com/RocketChat/Rocket.Chat/pull/21386)) + +- Regression: unused names for team roles ([#21376](https://github.com/RocketChat/Rocket.Chat/pull/21376)) + +- Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328)) + + - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. + - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. + - Same changes apply to groups.invite + +- Regression: user actions in admin ([#21307](https://github.com/RocketChat/Rocket.Chat/pull/21307)) + +- Regression: View Channels button in Team info ([#21289](https://github.com/RocketChat/Rocket.Chat/pull/21289)) + +- Regression: When only 'teams' type is provided, show only rooms with teamMain on `rooms.adminRooms` endpoint ([#21322](https://github.com/RocketChat/Rocket.Chat/pull/21322)) + +- Release 3.13.0 ([#21437](https://github.com/RocketChat/Rocket.Chat/pull/21437) by [@PriyaBihani](https://github.com/PriyaBihani) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@fcecagno](https://github.com/fcecagno) & [@lucassartor](https://github.com/lucassartor) & [@shrinish123](https://github.com/shrinish123)) + +- Update Apps-Engine version ([#21398](https://github.com/RocketChat/Rocket.Chat/pull/21398)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Cosnavel](https://github.com/Cosnavel) +- [@Darshilp326](https://github.com/Darshilp326) +- [@PriyaBihani](https://github.com/PriyaBihani) +- [@RonLek](https://github.com/RonLek) +- [@Tirieru](https://github.com/Tirieru) +- [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@aditya-mitra](https://github.com/aditya-mitra) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) +- [@cyberShaw](https://github.com/cyberShaw) +- [@fcecagno](https://github.com/fcecagno) +- [@g-thome](https://github.com/g-thome) +- [@im-adithya](https://github.com/im-adithya) +- [@lolimay](https://github.com/lolimay) +- [@lucassartor](https://github.com/lucassartor) +- [@m-shreyansh](https://github.com/m-shreyansh) +- [@rafaelblink](https://github.com/rafaelblink) +- [@reda-alaoui](https://github.com/reda-alaoui) +- [@shrinish123](https://github.com/shrinish123) +- [@sumukhah](https://github.com/sumukhah) +- [@vova-zush](https://github.com/vova-zush) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@r0zbot](https://github.com/r0zbot) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.12.7 +`2021-05-27 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.23.0` + +### 🐛 Bug fixes + + +- Discussion names showing a random value ([#22172](https://github.com/RocketChat/Rocket.Chat/pull/22172)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.12.5 +`2021-04-20 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.23.0` + +### 🐛 Bug fixes + + +- Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) + +# 3.12.2 +`2021-03-26 · 2 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.23.0` + +### 🐛 Bug fixes + + +- Bump Livechat widget + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.12.1 +`2021-03-08 · 1 🚀 · 2 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.23.0` + +### 🚀 Improvements + + +- Close Call contextual bar after starting jitsi call. ([#21004](https://github.com/RocketChat/Rocket.Chat/pull/21004)) + + After jitsi call is started, if the call is started in a new window then we should close contextual tab bar. + So, when 'YES' is pressed on modal, we call handleClose function if openNewWindow is true, as call doesn't starts on tab bar, it starts on new window. + +### 🐛 Bug fixes + + +- Missing spaces on attachment ([#21020](https://github.com/RocketChat/Rocket.Chat/pull/21020)) + +- Stopping Jitsi reload ([#20973](https://github.com/RocketChat/Rocket.Chat/pull/20973)) + + The Function where Jitsi call is started gets called many times due to `room.usernames` dep of useMemo, this dep triggers reloading of this function many times. + So removing this dep from useMemo dependencies + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@tassoevan](https://github.com/tassoevan) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.12.0 +`2021-02-28 · 5 🎉 · 17 🚀 · 74 🐛 · 30 🔍 · 29 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.23.0` + +### 🎉 New features + + +- Button to unset Slackbridge's importIds ([#20549](https://github.com/RocketChat/Rocket.Chat/pull/20549)) + +- Cloud Workspace bridge ([#20838](https://github.com/RocketChat/Rocket.Chat/pull/20838)) + + Adds the new CloudWorkspace functionality. + + It allows apps to request the access token for the workspace it's installed on, so it can perform actions with other Rocket.Chat services, such as the Omni Gateway. + + https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/382 + +- Header with Breadcrumbs ([#20609](https://github.com/RocketChat/Rocket.Chat/pull/20609)) + + ![image](https://user-images.githubusercontent.com/27704687/106945019-1386d400-6706-11eb-90db-c12b50f260d5.png) + +- Statistics about language usage ([#20832](https://github.com/RocketChat/Rocket.Chat/pull/20832) by [@g-thome](https://github.com/g-thome)) + + track what languages get picked the most as preferred ui language. + +- useUserData Hook ([#20584](https://github.com/RocketChat/Rocket.Chat/pull/20584)) + +### 🚀 Improvements + + +- Add symbol to indicate apps' required settings in the UI ([#20447](https://github.com/RocketChat/Rocket.Chat/pull/20447)) + + - Apps are able to define **required** settings. These settings should not be left blank by the user and an error will be thrown and shown in the interface if an user attempts to save changes in the app details page leaving any required fields blank; + ![prt_screen_required_app_settings_warning](https://user-images.githubusercontent.com/36537004/106032964-e73cd900-60af-11eb-8eab-c11fd651b593.png) + + - A sign (*) is added to the label of app settings' fields that are required so as to highlight the fields which must not be left blank. + ![prt_screen_required_app_settings](https://user-images.githubusercontent.com/36537004/106014879-ae473900-609c-11eb-9b9e-95de7bbf20a5.png) + +- Add visual validation on users admin forms ([#20308](https://github.com/RocketChat/Rocket.Chat/pull/20308)) + +- Added auto-focus for better user-experience. ([#19954](https://github.com/RocketChat/Rocket.Chat/pull/19954) by [@Darshilp326](https://github.com/Darshilp326)) + +- Added disable button check for send invite button ([#20337](https://github.com/RocketChat/Rocket.Chat/pull/20337)) + + Added Disable check for send invite button. If the text field is empty button would be disabled, and after any valid email is filled, button would get enabled + +- Added key prop, removing unwanted warnings ([#20473](https://github.com/RocketChat/Rocket.Chat/pull/20473)) + + Removes warnings listed on the issue + +- Added Markdown links to custom status. ([#20470](https://github.com/RocketChat/Rocket.Chat/pull/20470)) + + Added markdown links to user's custom status. + +- Adds tooltip for sidebar header icons ([#19934](https://github.com/RocketChat/Rocket.Chat/pull/19934) by [@RonLek](https://github.com/RonLek)) + + Previously the header icons in the sidebar didn't show a tooltip when hovered over. This PR fixes that. + + ![Screenshot from 2020-12-22 15-17-41](https://user-images.githubusercontent.com/28918901/102874804-f2756700-4468-11eb-8324-b7f3194e62fe.png) + +- Better Presentation of Blockquotes ([#20750](https://github.com/RocketChat/Rocket.Chat/pull/20750) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Changed the values of `margin-top` and `margin-bottom` for *first* and *last* childs in blockquotes to increase readability. + + ### Before + + ![before](https://user-images.githubusercontent.com/55396651/107858662-3e3a0080-6e5b-11eb-8274-9bd956807235.png) + + ### Now + + ![now](https://user-images.githubusercontent.com/55396651/107858471-480f3400-6e5a-11eb-9ccb-3f1be2fed0a4.png) + +- Change header based on room type ([#20612](https://github.com/RocketChat/Rocket.Chat/pull/20612)) + + It brings more flexibility, allowing us to use different hooks and different components for each header + +- Check Livechat message length through REST API endpoint ([#20366](https://github.com/RocketChat/Rocket.Chat/pull/20366)) + + Added checks for message length for livechat message api, it shouldn't exceed specified character limit. + +- Customize announcement ([#20793](https://github.com/RocketChat/Rocket.Chat/pull/20793) by [@im-adithya](https://github.com/im-adithya)) + + Included new variables in customizable ones + +- Make message field required in Omnichannel Triggers form ([#20827](https://github.com/RocketChat/Rocket.Chat/pull/20827) by [@rafaelblink](https://github.com/rafaelblink)) + +- New chat started system message for Omnichannel conversations ([#20814](https://github.com/RocketChat/Rocket.Chat/pull/20814) by [@rafaelblink](https://github.com/rafaelblink)) + +- Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392)) + + Remove: + - react-window + - react-window-infinite-loader + - simplebar-react + + Include: + - react-virtuoso + - rc-scrollbars + +- Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778)) + +- Selector for default custom oauth key field ([#20573](https://github.com/RocketChat/Rocket.Chat/pull/20573) by [@paulobernardoaf](https://github.com/paulobernardoaf)) + +- Update rc-scrollbars ([#20733](https://github.com/RocketChat/Rocket.Chat/pull/20733)) + +### 🐛 Bug fixes + + +- - Cancel button on Room Notification don't close contextualBar ([#20237](https://github.com/RocketChat/Rocket.Chat/pull/20237)) + +- Add debouncing to add users search field. ([#20297](https://github.com/RocketChat/Rocket.Chat/pull/20297) by [@Darshilp326](https://github.com/Darshilp326)) + + BEFORE + + https://user-images.githubusercontent.com/55157259/105350722-98a3c080-5c11-11eb-82f3-d9a62a4fa50b.mp4 + + + AFTER + + https://user-images.githubusercontent.com/55157259/105350757-a2c5bf00-5c11-11eb-91db-25c0b9e01a28.mp4 + +- Add tooltips to Thread header buttons ([#20456](https://github.com/RocketChat/Rocket.Chat/pull/20456) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + Added tooltips to "Expand" and "Follow Message"/"Unfollow Message" in ThreadView for coherency. + +- Added Bio Structure for UserCard, rendering Skeleton View on loading Instead of [Object][Object] ([#20305](https://github.com/RocketChat/Rocket.Chat/pull/20305)) + + Added Bio Structure for rendering Skeleton View on loading UserCard. + +- Added check for view admin permission page ([#20403](https://github.com/RocketChat/Rocket.Chat/pull/20403)) + + Admin Permission page was visible to all, if you add admin/permissions after the base url. This should not be visible to all user, only people with certain permissions should be able to see this page. + I am also able to see permissions page for open workspace of Rocket chat. + ![image](https://user-images.githubusercontent.com/58601732/105829728-bfd00880-5fea-11eb-9121-6c53a752f140.png) + +- Adding the accidentally deleted tag template, used by other templates ([#20772](https://github.com/RocketChat/Rocket.Chat/pull/20772)) + + Adding back accidentally deleted tag Template. + +- Admin cannot clear user details like bio or nickname ([#20785](https://github.com/RocketChat/Rocket.Chat/pull/20785)) + + When the API users.update is called to update user data, it passes data to saveUser function. Here before saving data like bio or nickname we are checking if they are available or not. If data is available then we are saving it, but we are not doing anything when data isn't available. + + So unsetting data if data isn't available to save. Will also fix bio and other fields. :) + +- Admin Panel pages not visible in Safari ([#20912](https://github.com/RocketChat/Rocket.Chat/pull/20912)) + +- Announcement with multiple lines fixed. ([#20381](https://github.com/RocketChat/Rocket.Chat/pull/20381)) + + Announcements with multiple lines used to break UI for announcements bar. Fixed it by replacing all break lines in announcement with empty space (" ") . The announcement modal would work as usual and show all break lines. + +- Atlassian Crowd login with 2FA enabled ([#20834](https://github.com/RocketChat/Rocket.Chat/pull/20834)) + +- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585)) + + Added target = '_self' to attachment link, this seems to fix the problem, without this attribute, error page is displayed. + +- Blank Personal Access Token Bug ([#20193](https://github.com/RocketChat/Rocket.Chat/pull/20193) by [@RonLek](https://github.com/RonLek)) + + Adds error when personal access token is blank thereby disallowing the creation of one. + + https://user-images.githubusercontent.com/28918901/104483631-5adde100-55ee-11eb-9938-64146bce127e.mp4 + +- CAS login failing due to TOTP requirement ([#20840](https://github.com/RocketChat/Rocket.Chat/pull/20840)) + +- Changed password input field for password access in edit room info. ([#20356](https://github.com/RocketChat/Rocket.Chat/pull/20356) by [@Darshilp326](https://github.com/Darshilp326)) + + Password field would be secured with asterisks in edit room info + + https://user-images.githubusercontent.com/55157259/105641758-cad04f00-5eab-11eb-90de-0c91263edd55.mp4 + + . + +- Channel mentions showing user subscribed channels twice ([#20484](https://github.com/RocketChat/Rocket.Chat/pull/20484) by [@Darshilp326](https://github.com/Darshilp326)) + + Channel mention shows user subscribed channels twice. + + https://user-images.githubusercontent.com/55157259/106183033-b353d780-61c5-11eb-8aab-1dbb62b02ff8.mp4 + +- CORS config not accepting multiple origins ([#20696](https://github.com/RocketChat/Rocket.Chat/pull/20696) by [@g-thome](https://github.com/g-thome)) + + always include only one value in access-control-allow-origin + +- Custom OAuth provider creation from env vars ([#20014](https://github.com/RocketChat/Rocket.Chat/pull/20014) by [@pierreozoux](https://github.com/pierreozoux)) + +- Default Attachments - Remove Extra Margin in Field Attachments ([#20618](https://github.com/RocketChat/Rocket.Chat/pull/20618) by [@aditya-mitra](https://github.com/aditya-mitra)) + + A large amount of unnecessary margin which existed in the **Field Attachments inside the `DefaultAttachments`** has been fixed. + + ### Earlier + + ![earlier](https://user-images.githubusercontent.com/55396651/107056792-ba4b9d00-67f8-11eb-9153-05281416cddb.png) + + ### Now + + ![now](https://user-images.githubusercontent.com/55396651/107057196-3219c780-67f9-11eb-84db-e4a0addfc168.png) + +- Default Attachments - Show Full Attachment.Text with Markdown ([#20606](https://github.com/RocketChat/Rocket.Chat/pull/20606) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Removed truncating of text in `Attachment.Text`. + Added `Attachment.Text` to be parsed to markdown by default. + + ### Earlier + ![earlier](https://user-images.githubusercontent.com/55396651/106910781-92d8cf80-6727-11eb-82ec-818df7544ff0.png) + + ### Now + + ![now](https://user-images.githubusercontent.com/55396651/106910840-a126eb80-6727-11eb-8bd6-d86383dd9181.png) + +- Don't ask again not rendering ([#20745](https://github.com/RocketChat/Rocket.Chat/pull/20745)) + +- Download buttons on desktop app and CDN being ignored ([#20820](https://github.com/RocketChat/Rocket.Chat/pull/20820)) + +- E2E issues ([#20704](https://github.com/RocketChat/Rocket.Chat/pull/20704)) + +- ESLint Warning - react-hooks/exhaustive-deps ([#20586](https://github.com/RocketChat/Rocket.Chat/pull/20586) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Added the required dep (`label`) in `useMemo` to fix eslint warning `react-hooks/exhaustive-deps`. + +- Event emitter warning ([#20663](https://github.com/RocketChat/Rocket.Chat/pull/20663)) + +- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740)) + + Due to a wrong property name, external applications were not able to change the priority of Omnichannel Inquires. + +- Feedback on bulk invite ([#20339](https://github.com/RocketChat/Rocket.Chat/pull/20339) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + Resolved structure where no response was being received. Changed from callback to async/await. + Added error in case of empty submission, or if no valid emails were found. + + https://user-images.githubusercontent.com/38764067/105613964-dfe5a900-5deb-11eb-80f2-21fc8dee57c0.mp4 + +- Filters are not being applied correctly in Omnichannel Current Chats list ([#20320](https://github.com/RocketChat/Rocket.Chat/pull/20320) by [@rafaelblink](https://github.com/rafaelblink)) + + ### Before + ![image](https://user-images.githubusercontent.com/2493803/105537672-082cb500-5cd1-11eb-8f1b-1726ba60420a.png) + + ### After + ![image](https://user-images.githubusercontent.com/2493803/105537773-2d212800-5cd1-11eb-8746-048deb9502d9.png) + + ![image](https://user-images.githubusercontent.com/2493803/106494728-88090b00-6499-11eb-922e-5386107e2389.png) + + ![image](https://user-images.githubusercontent.com/2493803/106494751-90f9dc80-6499-11eb-901b-5e4dbdc678ba.png) + +- Fix Empty highlighted words field ([#20329](https://github.com/RocketChat/Rocket.Chat/pull/20329)) + + Able to Empty the highlighted text field in preferences + +- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654)) + +- height prop on departments agents table ([#20833](https://github.com/RocketChat/Rocket.Chat/pull/20833)) + + ![image](https://user-images.githubusercontent.com/27704687/108572412-fbf83f80-72f0-11eb-801a-5f659000325d.png) + +- Hide system messages not working on second save ([#20679](https://github.com/RocketChat/Rocket.Chat/pull/20679)) + +- Icon for OTR messages ([#20713](https://github.com/RocketChat/Rocket.Chat/pull/20713)) + +- Incorrect display of "Reply in Direct Message" in MessageAction ([#17968](https://github.com/RocketChat/Rocket.Chat/pull/17968) by [@abrom](https://github.com/abrom)) + + [FIX] Incorrect display of "Reply in Direct Message" in MessageAction + +- Increasing unread counter twice for new threads in DMs or with mentions ([#20666](https://github.com/RocketChat/Rocket.Chat/pull/20666)) + + - Unread messages count won't be incremented when the message sent is on a thread (thread count is treated different) + +- Links not opening in new tabs ([#20651](https://github.com/RocketChat/Rocket.Chat/pull/20651)) + +- List of Omnichannel triggers is not listing data ([#20624](https://github.com/RocketChat/Rocket.Chat/pull/20624) by [@rafaelblink](https://github.com/rafaelblink)) + + ### Before + ![image](https://user-images.githubusercontent.com/2493803/107095379-7308e080-67e7-11eb-8251-7e7ff891087a.png) + + + ### After + ![image](https://user-images.githubusercontent.com/2493803/107095261-3b019d80-67e7-11eb-8425-8612b03ac50a.png) + +- Livechat bridge permission checkers ([#20653](https://github.com/RocketChat/Rocket.Chat/pull/20653) by [@lolimay](https://github.com/lolimay)) + + Update to latest patch version of the Apps-Engine with a fix for the Livechat bridge, as seen in https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/379 + +- Mark messages inside a thread as unread ([#20726](https://github.com/RocketChat/Rocket.Chat/pull/20726) by [@im-adithya](https://github.com/im-adithya)) + + Added threads to mark unread action button. + +- Markdown prop variants ([#20767](https://github.com/RocketChat/Rocket.Chat/pull/20767)) + + A new prop variants on Markdown component: **inline** and **inlineWithoutBreaks** + +- Message payload from `__my_messages__` stream ([#20801](https://github.com/RocketChat/Rocket.Chat/pull/20801)) + +- Missing height on departments agents table ([#20739](https://github.com/RocketChat/Rocket.Chat/pull/20739)) + + ![image](https://user-images.githubusercontent.com/27704687/107807002-510ee100-6d46-11eb-86e9-d65da7ab4129.png) + +- Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744)) + + - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; + - The new setting is turned off (`false` value) by default. + +- New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670)) + +- Notification worker stopping on error ([#20605](https://github.com/RocketChat/Rocket.Chat/pull/20605)) + +- OAuth Login not working on Firefox ([#20722](https://github.com/RocketChat/Rocket.Chat/pull/20722)) + +- Omnichannel agents are unable to access the chat queue on the sidebar ([#20830](https://github.com/RocketChat/Rocket.Chat/pull/20830) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662)) + + The `Omnichannel Routing System` is no longer assigning chats to `bot` agents when the `bot` agent is the default agent of the inquiry. + +- Open Visitor Info when omnichannel chat was open ([#20868](https://github.com/RocketChat/Rocket.Chat/pull/20868)) + +- OTR issue ([#20592](https://github.com/RocketChat/Rocket.Chat/pull/20592)) + + Since the users are not being stored at the user collection anymore (thats a good thing actually), there is no such record to to fetch and show the username. + +- Quoted messages from message links when user has no permission ([#20815](https://github.com/RocketChat/Rocket.Chat/pull/20815)) + +- Regenerate token modal on top of 2FA modal ([#20798](https://github.com/RocketChat/Rocket.Chat/pull/20798)) + +- Regular status mutating custom status ([#20613](https://github.com/RocketChat/Rocket.Chat/pull/20613)) + +- Remove duplicate getCommonRoomEvents() event binding for pinnedMessages ([#20179](https://github.com/RocketChat/Rocket.Chat/pull/20179) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + The getCommonRoomEvents() returned functions were bound to the pinnedMessages template twice. This was causing some bugs, as detailed in the Issue mentioned below. + +- Remove duplicate getCommonRoomEvents() event binding for starredMessages ([#20185](https://github.com/RocketChat/Rocket.Chat/pull/20185) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + The getCommonRoomEvents() returned functions were bound to the starredMessages template twice. This was causing some bugs, as detailed in the Issue mentioned below. + I removed the top events call that only bound the getCommonRoomEvents(). Therefore, only one call for the same is left, which is at the end of the file. Having the events bound just once removes the bugs mentioned. + +- Remove warning problems from console ([#20800](https://github.com/RocketChat/Rocket.Chat/pull/20800)) + +- Removed tooltip in kebab menu options. ([#20498](https://github.com/RocketChat/Rocket.Chat/pull/20498) by [@Darshilp326](https://github.com/Darshilp326)) + + Removed tooltip as it was not needed. + + https://user-images.githubusercontent.com/55157259/106246146-a53ca000-6233-11eb-9874-cbd1b4331bc0.mp4 + +- Retry icon comes out of the div ([#20390](https://github.com/RocketChat/Rocket.Chat/pull/20390) by [@im-adithya](https://github.com/im-adithya)) + + Changed the height of the div container. + +- Room owner not being able to override global retention policy ([#20727](https://github.com/RocketChat/Rocket.Chat/pull/20727) by [@g-thome](https://github.com/g-thome)) + + use correct permissions to check if room owner can override global retention policy + +- Room Scroll to Bottom ([#20649](https://github.com/RocketChat/Rocket.Chat/pull/20649)) + +- Room's last message's update date format on IE ([#20680](https://github.com/RocketChat/Rocket.Chat/pull/20680)) + + The proposed change fixes a bug when updates the cached records on Internet Explorer and it breaks the sidebar as shown on the screenshot below: + + ![image](https://user-images.githubusercontent.com/27704687/107578007-f2285b00-6bd1-11eb-9250-1e76ae67f9c9.png) + +- Save user password and email from My Account ([#20737](https://github.com/RocketChat/Rocket.Chat/pull/20737)) + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +- Selected hide system messages would now be viewed in vertical bar. ([#20358](https://github.com/RocketChat/Rocket.Chat/pull/20358) by [@Darshilp326](https://github.com/Darshilp326)) + + All selected hide system messages are now in vertical Bar. + + https://user-images.githubusercontent.com/55157259/105642624-d5411780-5eb0-11eb-8848-93e4b02629cb.mp4 + +- Selected messages don't get unselected ([#20408](https://github.com/RocketChat/Rocket.Chat/pull/20408) by [@im-adithya](https://github.com/im-adithya)) + + https://user-images.githubusercontent.com/64399555/105844776-c157fb80-5fff-11eb-90cc-94e9f69649b6.mp4 + +- Sending user to home after logging in from resume token query param ([#20720](https://github.com/RocketChat/Rocket.Chat/pull/20720)) + + Do not redirect to `/home` anymore after logging in with `resumeToken`. + +- Server-side marked parsing ([#20665](https://github.com/RocketChat/Rocket.Chat/pull/20665)) + +- Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216)) + + - Fix: Slack Importer crashes when importing a large users.json file + - Fix: Slack importer crashes when messages have invalid mentions + - Skip listing all users on the preparation screen when the user count is too large. + - Split avatar download into a separate process. + - Update room's last message when the import is complete. + - Prevent invalid or duplicated channel names + - Improve message error handling. + - Reduce max allowed BSON size to avoid possible issues in some servers. + - Improve handling of very large channel files. + +- star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@bhavayAnand9](https://github.com/bhavayAnand9)) + +- Threads Issues ([#20725](https://github.com/RocketChat/Rocket.Chat/pull/20725)) + +- Typo in Message Character Limit ([#20426](https://github.com/RocketChat/Rocket.Chat/pull/20426) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Changed the spelling of *Characther* to *Character* + +- Unset tshow on deleted messages ([#20444](https://github.com/RocketChat/Rocket.Chat/pull/20444) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + When setting 'Message_ShowDeletedStatus' is set to true, deleting a message with `tshow: true` causes a bug on the frontend. This issue should, however, never be logically possible as a 'removed' message should not have tshow anyway. Hence, this PR unsets that when the message is set to "Message Removed". + +- Update NPS banner when changing score ([#20611](https://github.com/RocketChat/Rocket.Chat/pull/20611)) + +- User statuses in admin user info panel ([#20341](https://github.com/RocketChat/Rocket.Chat/pull/20341) by [@RonLek](https://github.com/RonLek)) + + Modifies user statuses in admin info panel based on their actual status instead of their `statusConnection`. This enables correct and consistent change in user statuses. + Also, bot users having status as online were classified as offline, with this change they are now correctly classified based on their corresponding statuses. + + https://user-images.githubusercontent.com/28918901/105624438-b8bcc500-5e47-11eb-8d1e-3a4180da1304.mp4 + +- Users autocomplete showing duplicated results ([#20481](https://github.com/RocketChat/Rocket.Chat/pull/20481) by [@Darshilp326](https://github.com/Darshilp326)) + + Added new query for outside room users so that room members are not shown twice. + + https://user-images.githubusercontent.com/55157259/106174582-33c10b00-61bb-11eb-9716-377ef7bba34e.mp4 + +
+🔍 Minor changes + + +- Added toast message after deleting file. ([#20661](https://github.com/RocketChat/Rocket.Chat/pull/20661) by [@Darshilp326](https://github.com/Darshilp326)) + + https://user-images.githubusercontent.com/55157259/107410849-d1a9c380-6b33-11eb-8d10-3d225dc7a9db.mp4 + +- Added types to Emitters ([#20819](https://github.com/RocketChat/Rocket.Chat/pull/20819)) + +- Bump Livechat Widget ([#20843](https://github.com/RocketChat/Rocket.Chat/pull/20843)) + + Update Livechat version to `1.8.0` . + +- Chore: Change error message when marking empty chat as unread ([#20250](https://github.com/RocketChat/Rocket.Chat/pull/20250) by [@lucassartor](https://github.com/lucassartor)) + +- Chore: Disable Sessions Aggregates tests locally ([#20607](https://github.com/RocketChat/Rocket.Chat/pull/20607)) + + Disable Session aggregates tests in local environments + For context, refer to: #20161 + +- Chore: Improve performance of messages’ watcher ([#20519](https://github.com/RocketChat/Rocket.Chat/pull/20519)) + +- Chore: Push correct Docker tag of service images ([#20706](https://github.com/RocketChat/Rocket.Chat/pull/20706)) + +- Chore: Remove node-sprite-generator dependency ([#20545](https://github.com/RocketChat/Rocket.Chat/pull/20545)) + +- Chore: Try building micro services early on CI ([#20046](https://github.com/RocketChat/Rocket.Chat/pull/20046)) + +- Chore: update RC with the latest fuselage-polyfills ([#20709](https://github.com/RocketChat/Rocket.Chat/pull/20709)) + +- Exclude user's own password from /me endpoint ([#20735](https://github.com/RocketChat/Rocket.Chat/pull/20735)) + +- Fix: Add network observe plug to snap ([#20852](https://github.com/RocketChat/Rocket.Chat/pull/20852)) + +- Improve: Add more API tests ([#20738](https://github.com/RocketChat/Rocket.Chat/pull/20738)) + + Add end-to-end tests for untested endpoints. + +- Language update from LingoHub 🤖 on 2021-02-15Z ([#20757](https://github.com/RocketChat/Rocket.Chat/pull/20757)) + +- Language update from LingoHub 🤖 on 2021-02-22Z ([#20853](https://github.com/RocketChat/Rocket.Chat/pull/20853)) + +- Merge master into develop & Set version to 3.12.0-develop ([#20533](https://github.com/RocketChat/Rocket.Chat/pull/20533)) + +- Mixed client and server code on Storybook ([#20799](https://github.com/RocketChat/Rocket.Chat/pull/20799)) + + For Storybook to work, we've mocked all modules under `**/server/`, thus making them suitable to hold all code that refers Node.js modules. This implies some duplication, between `client/` and `server/` modules, mediated by modules under `libs/`. + +- Regression: Discussions inside direct messages not rendering ([#20652](https://github.com/RocketChat/Rocket.Chat/pull/20652)) + +- Regression: Fix loadHistory method being called multiple times ([#20826](https://github.com/RocketChat/Rocket.Chat/pull/20826)) + +- Regression: Fix notification worker not firing ([#20829](https://github.com/RocketChat/Rocket.Chat/pull/20829)) + +- Regression: Fix scopes not being provided to getWorkspaceAccessToken ([#20871](https://github.com/RocketChat/Rocket.Chat/pull/20871)) + +- Regression: Header Styles ([#20616](https://github.com/RocketChat/Rocket.Chat/pull/20616)) + +- Regression: Keep user custom status after change presence ([#20869](https://github.com/RocketChat/Rocket.Chat/pull/20869)) + +- Regression: Messages not being encrypted E2E ([#20922](https://github.com/RocketChat/Rocket.Chat/pull/20922)) + +- Regression: Prevent Message Attachment rendering ([#20860](https://github.com/RocketChat/Rocket.Chat/pull/20860)) + +- Remove `uiKitText` reference ([#20625](https://github.com/RocketChat/Rocket.Chat/pull/20625)) + +- Rewrite: CreateChannel modal component ([#20617](https://github.com/RocketChat/Rocket.Chat/pull/20617)) + + ![image](https://user-images.githubusercontent.com/17487063/107058434-5f438700-67b3-11eb-8cf2-1ad3d5008aa8.png) + +- RoomFiles hook ([#20550](https://github.com/RocketChat/Rocket.Chat/pull/20550)) + +- Update Apps-Engine version ([#20921](https://github.com/RocketChat/Rocket.Chat/pull/20921)) + + Update the Apps-Engine to latest version for the release. + +- Wrong method used while starring ([#20508](https://github.com/RocketChat/Rocket.Chat/pull/20508) by [@im-adithya](https://github.com/im-adithya)) + + Changed the method from pinMessage to starMessage + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Darshilp326](https://github.com/Darshilp326) +- [@RonLek](https://github.com/RonLek) +- [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@abrom](https://github.com/abrom) +- [@aditya-mitra](https://github.com/aditya-mitra) +- [@bhavayAnand9](https://github.com/bhavayAnand9) +- [@g-thome](https://github.com/g-thome) +- [@im-adithya](https://github.com/im-adithya) +- [@lolimay](https://github.com/lolimay) +- [@lucassartor](https://github.com/lucassartor) +- [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@pierreozoux](https://github.com/pierreozoux) +- [@rafaelblink](https://github.com/rafaelblink) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@r0zbot](https://github.com/r0zbot) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.11.5 +`2021-04-20 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.22.2` + +### 🐛 Bug fixes + + +- Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) + +# 3.11.2 +`2021-02-28 · 3 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.22.2` + +### 🐛 Bug fixes + + +- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740)) + + Due to a wrong property name, external applications were not able to change the priority of Omnichannel Inquires. + +- Prevent Message Attachment rendering ([#20860](https://github.com/RocketChat/Rocket.Chat/pull/20860)) + +- Room owner not being able to override global retention policy ([#20727](https://github.com/RocketChat/Rocket.Chat/pull/20727) by [@g-thome](https://github.com/g-thome)) + + use correct permissions to check if room owner can override global retention policy + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) + +# 3.11.1 +`2021-02-10 · 5 🐛 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.22.2` + +### 🐛 Bug fixes + + +- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585)) + + Added target = '_self' to attachment link, this seems to fix the problem, without this attribute, error page is displayed. + +- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654)) + +- Livechat bridge permission checkers ([#20653](https://github.com/RocketChat/Rocket.Chat/pull/20653) by [@lolimay](https://github.com/lolimay)) + + Update to latest patch version of the Apps-Engine with a fix for the Livechat bridge, as seen in https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/379 + +- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662)) + + The `Omnichannel Routing System` is no longer assigning chats to `bot` agents when the `bot` agent is the default agent of the inquiry. + +- Update NPS banner when changing score ([#20611](https://github.com/RocketChat/Rocket.Chat/pull/20611)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@lolimay](https://github.com/lolimay) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.11.0 +`2021-01-31 · 8 🎉 · 9 🚀 · 52 🐛 · 44 🔍 · 32 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.22.1` + +### 🎉 New features + + +- **Apps:** Apps Permission System ([#20078](https://github.com/RocketChat/Rocket.Chat/pull/20078)) + +- **Apps:** IPreFileUpload event ([#20285](https://github.com/RocketChat/Rocket.Chat/pull/20285) by [@lolimay](https://github.com/lolimay)) + +- **ENTERPRISE:** Automatic transfer of unanswered conversations to another agent ([#20090](https://github.com/RocketChat/Rocket.Chat/pull/20090)) + +- **ENTERPRISE:** Omnichannel Contact Manager as preferred agent for routing ([#20244](https://github.com/RocketChat/Rocket.Chat/pull/20244)) + + If the `Contact-Manager` is assigned to a Visitor, the chat will automatically get transferred to the respective Contact-Manager, provided the Contact-Manager is online. In-case the Contact-Manager is offline, the chat will be transferred to any other online agent. + We have provided a setting to control this auto-assignment feature + ![image](https://user-images.githubusercontent.com/34130764/104880961-8104d780-5986-11eb-9d87-82b99814b028.png) + + Behavior based-on Routing method + + 1. Auto-selection, Load-Balancing, or External Service (`autoAssignAgent = true`) + This is straightforward, + - if the Contact-manager is online, the chat will be transferred to the Contact-Manger only + - if the Contact-manager is offline, the chat will be transferred to any other online-agent based on the Routing system + 2. Manual-selection (`autoAssignAgent = false`) + - If the Contact-Manager is online, the chat will appear in the Queue of Contact-Manager **ONLY** + - If the Contact-Manager is offline, the chat will appear in the Queue of all related Agents/Manager ( like it's done right now ) + +- Banner system and NPS ([#20221](https://github.com/RocketChat/Rocket.Chat/pull/20221)) + + More robust and scalable banner system for alerting users. + +- Email Inboxes for Omnichannel ([#20101](https://github.com/RocketChat/Rocket.Chat/pull/20101) by [@rafaelblink](https://github.com/rafaelblink)) + + With this new feature, email accounts will receive email messages(threads) which will be transformed into Omnichannel chats. It'll be possible to set up multiple email accounts, test the connection with email server(email provider) and define the behaviour of each account. + + https://user-images.githubusercontent.com/2493803/105430398-242d4980-5c32-11eb-835a-450c94837d23.mp4 + + ### New item on admin menu + + ![image](https://user-images.githubusercontent.com/2493803/105428723-bc293400-5c2e-11eb-8c02-e8d36ea82726.png) + + + ### Send test email tooltip + + ![image](https://user-images.githubusercontent.com/2493803/104366986-eaa16380-54f8-11eb-9ba7-831cfde2319c.png) + + + ### Inbox Info + + ![image](https://user-images.githubusercontent.com/2493803/104366796-ab731280-54f8-11eb-9941-a3cc8eb610e1.png) + + ### SMTP Info + + ![image](https://user-images.githubusercontent.com/2493803/104366868-c47bc380-54f8-11eb-969e-ccc29070957c.png) + + ### IMAP Info + + ![image](https://user-images.githubusercontent.com/2493803/104366897-cd6c9500-54f8-11eb-80c4-97d5b0c002d5.png) + + ### Messages + + ![image](https://user-images.githubusercontent.com/2493803/105428971-45d90180-5c2f-11eb-992a-022a3df94471.png) + +- Encrypted Discussions and new Encryption Permissions ([#20201](https://github.com/RocketChat/Rocket.Chat/pull/20201)) + +- Server Info page ([#19517](https://github.com/RocketChat/Rocket.Chat/pull/19517)) + +### 🚀 Improvements + + +- Add extra SAML settings to update room subs and add private room subs. ([#19489](https://github.com/RocketChat/Rocket.Chat/pull/19489) by [@tlskinneriv](https://github.com/tlskinneriv)) + + Added a SAML setting to support updating room subscriptions each time a user logs in via SAML. + Added a SAML setting to support including private rooms in SAML updated subscriptions (whether initial or on each logon). + +- Autofocus on directory ([#20509](https://github.com/RocketChat/Rocket.Chat/pull/20509)) + +- Don't use global search by default ([#19777](https://github.com/RocketChat/Rocket.Chat/pull/19777) by [@i-kychukov](https://github.com/i-kychukov) & [@ikyuchukov](https://github.com/ikyuchukov)) + + Global chat search is not set by default now. + +- Message Collection Hooks ([#20121](https://github.com/RocketChat/Rocket.Chat/pull/20121)) + + Integrating a list of messages into a React component imposes some challenges. Its content is provided by some REST API calls and live-updated by streamer events. To avoid too much coupling with React Hooks, the structures `RecordList`, `MessageList` and their derivatives are simple event emitters created and connected on components via some simple hooks, like `useThreadsList()` and `useRecordList()`. + +- Rewrite Announcement as React component ([#20172](https://github.com/RocketChat/Rocket.Chat/pull/20172)) + +- Rewrite Prune Messages as React component ([#19900](https://github.com/RocketChat/Rocket.Chat/pull/19900)) + +- Rewrite User Dropdown and Kebab menu. ([#20070](https://github.com/RocketChat/Rocket.Chat/pull/20070)) + + ![image](https://user-images.githubusercontent.com/40830821/103699786-3a74ad80-4f82-11eb-913e-2e09d5f7eac6.png) + +- Title for user avatar buttons ([#20083](https://github.com/RocketChat/Rocket.Chat/pull/20083) by [@sushant52](https://github.com/sushant52)) + + Made user avatar change buttons to be descriptive of what they do. + +- Tooltip added for Kebab menu on chat header ([#20116](https://github.com/RocketChat/Rocket.Chat/pull/20116)) + + Added the missing Tooltip for kebab menu on chat header. + ![tooltip after](https://user-images.githubusercontent.com/58601732/104031406-b07f4b80-51f2-11eb-87a4-1e8da78a254f.gif) + +### 🐛 Bug fixes + + +- "Open_thread" English tooltip correction ([#20164](https://github.com/RocketChat/Rocket.Chat/pull/20164) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + Remove unnecessary spaces from the translation key, and added English translation value for the key. + +- **Apps:** Don't show the "review permissions" modal when there's none to review ([#20506](https://github.com/RocketChat/Rocket.Chat/pull/20506)) + +- **ENTERPRISE:** Auditing RoomAutocomplete ([#20311](https://github.com/RocketChat/Rocket.Chat/pull/20311)) + +- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink)) + +- Actions from User Info panel ([#20073](https://github.com/RocketChat/Rocket.Chat/pull/20073) by [@Darshilp326](https://github.com/Darshilp326)) + + Users can be removed from channels without any error message. + +- Added context check for closing active tabbar for member-list ([#20228](https://github.com/RocketChat/Rocket.Chat/pull/20228)) + + When we click on a username and then click on see user's full profile, a tab gets active and shows us the user's profile, the problem occurs when the tab is still active and we try to see another user's profile. In this case, tabbar gets closed. + To resolve this, added context check for closing action of active tabbar. + +- Added Margin between status bullet and status label ([#20199](https://github.com/RocketChat/Rocket.Chat/pull/20199)) + + Added Margins between status bullet and status label + +- Added success message on saving notification preference. ([#20220](https://github.com/RocketChat/Rocket.Chat/pull/20220) by [@Darshilp326](https://github.com/Darshilp326)) + + Added success message after saving notification preferences. + + https://user-images.githubusercontent.com/55157259/104774617-03ca3e80-579d-11eb-8fa4-990b108dd8d9.mp4 + +- Admin User Info email verified status ([#20110](https://github.com/RocketChat/Rocket.Chat/pull/20110) by [@bdelwood](https://github.com/bdelwood)) + +- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink)) + +- Change header's favorite icon to filled star ([#20174](https://github.com/RocketChat/Rocket.Chat/pull/20174)) + + ### Before: + ![image](https://user-images.githubusercontent.com/27704687/104351819-a60bcd00-54e4-11eb-8b43-7d281a6e5dcb.png) + + ### After: + ![image](https://user-images.githubusercontent.com/27704687/104351632-67761280-54e4-11eb-87ba-25b940494bb5.png) + +- Changed success message for adding custom sound. ([#20272](https://github.com/RocketChat/Rocket.Chat/pull/20272) by [@Darshilp326](https://github.com/Darshilp326)) + + https://user-images.githubusercontent.com/55157259/105151351-daf2d200-5b2b-11eb-8223-eae5d60f770d.mp4 + +- Changed success message for ignoring member. ([#19996](https://github.com/RocketChat/Rocket.Chat/pull/19996) by [@Darshilp326](https://github.com/Darshilp326)) + + Different messages for ignoring/unignoring will be displayed. + + https://user-images.githubusercontent.com/55157259/103310307-4241c880-4a3d-11eb-8c6c-4c9b99d023db.mp4 + +- Creation of Omnichannel rooms not working correctly through the Apps when the agent parameter is set ([#19997](https://github.com/RocketChat/Rocket.Chat/pull/19997)) + +- Engagement dashboard graphs labels superposing each other ([#20267](https://github.com/RocketChat/Rocket.Chat/pull/20267)) + + Now after a certain breakpoint, the graphs should stack vertically, and overlapping text rotated. + + ![image](https://user-images.githubusercontent.com/40830821/105098926-93b40500-5a89-11eb-9a56-2fc3b1552914.png) + +- Fields overflowing page ([#20287](https://github.com/RocketChat/Rocket.Chat/pull/20287)) + + ### Before + ![image](https://user-images.githubusercontent.com/40830821/105246952-c1b14c00-5b52-11eb-8671-cff88edf242d.png) + + ### After + ![image](https://user-images.githubusercontent.com/40830821/105247125-0a690500-5b53-11eb-9f3c-d6a68108e336.png) + +- Fix error that occurs on changing archive status of room ([#20098](https://github.com/RocketChat/Rocket.Chat/pull/20098) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + This PR fixes an issue that happens when you try to edit the info of a room, and save changes after changing the value of "Archived". The archive functionality is handled separately from other room settings. The archived key is not used in the saveRoomSettings method but was still being sent over. Hence, the request was being considered invalid. I deleted the "archived" key from the data being sent in the request, making the request valid again. + +- Incorrect translations ZN ([#20245](https://github.com/RocketChat/Rocket.Chat/pull/20245) by [@moniang](https://github.com/moniang)) + +- Initial values update on Account Preferences ([#19938](https://github.com/RocketChat/Rocket.Chat/pull/19938)) + +- Invalid filters on the Omnichannel Analytics page ([#19899](https://github.com/RocketChat/Rocket.Chat/pull/19899)) + +- Jump to message ([#20265](https://github.com/RocketChat/Rocket.Chat/pull/20265)) + +- Livechat.RegisterGuest method removing unset fields ([#20124](https://github.com/RocketChat/Rocket.Chat/pull/20124) by [@rafaelblink](https://github.com/rafaelblink)) + + After changes made on https://github.com/RocketChat/Rocket.Chat/pull/19931, the `Livechat.RegisterGuest` method started removing properties from the visitor inappropriately. The properties that did not receive value were removed from the object. + Those changes were made to support the new Contact Form, but now the form has its own method to deal with Contact data so those changes are no longer necessary. + +- Markdown added for Header Room topic ([#20021](https://github.com/RocketChat/Rocket.Chat/pull/20021)) + + With the new 3.10.0 version update the Links in topic section below room name were not working, for more info refer issue #20018 + +- Messages being updated when not required after user changes his profile ([#20114](https://github.com/RocketChat/Rocket.Chat/pull/20114)) + +- Meteor errors not translating for toast messages ([#19993](https://github.com/RocketChat/Rocket.Chat/pull/19993)) + +- minWidth in FileIcon to prevent layout to broke ([#19942](https://github.com/RocketChat/Rocket.Chat/pull/19942)) + + ![image](https://user-images.githubusercontent.com/27704687/102934691-69b7f480-4483-11eb-995b-a8a9b72246aa.png) + +- Normalize messages for users in endpoint chat.getStarredMessages ([#19962](https://github.com/RocketChat/Rocket.Chat/pull/19962)) + +- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003)) + +- Omnichannel - Contact Center form is not validating custom fields properly ([#20196](https://github.com/RocketChat/Rocket.Chat/pull/20196) by [@rafaelblink](https://github.com/rafaelblink)) + + The contact form is accepting undefined values in required custom fields when creating or editing contacts, and, the errror message isn't following Rocket.chat design system. + + ### Before + ![image](https://user-images.githubusercontent.com/2493803/104522668-31688980-55dd-11eb-92c5-83f96073edc4.png) + + ### After + + #### New + ![image](https://user-images.githubusercontent.com/2493803/104770494-68f74300-574f-11eb-94a3-c8fd73365308.png) + + + #### Edit + ![image](https://user-images.githubusercontent.com/2493803/104770538-7b717c80-574f-11eb-829f-1ae304103369.png) + +- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093)) + +- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089)) + +- Profile picture changing with username ([#19992](https://github.com/RocketChat/Rocket.Chat/pull/19992)) + + ![bug avatar](https://user-images.githubusercontent.com/40830821/103305935-24e40e80-49eb-11eb-9e35-9bd4c167898a.gif) + +- Remove duplicate blaze events call for EmojiActions from roomOld ([#20159](https://github.com/RocketChat/Rocket.Chat/pull/20159) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + A few methods concerning Emojis are bound multiple times to the DOM using the Template events() call, once in the reactions init.js and the other time after they get exported from app/ui/client/views/app/lib/getCommonRoomEvents.js to whatever page binds all the functions. The getCommonRoomEvents methods are always bound, hence negating a need to bind in a lower-level component. + +- Room special name in prompts ([#20277](https://github.com/RocketChat/Rocket.Chat/pull/20277) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + The "Hide room" and "Leave Room" confirmation prompts use the "name" key from the room info. When the setting " + Allow Special Characters in Room Names" is enabled, the prompts show the normalized names instead of those that contain the special characters. + + Changed the value being used from name to fname, which always has the user-set name. + + Previous: + ![Screenshot from 2021-01-20 15-52-29](https://user-images.githubusercontent.com/38764067/105161642-9b31e780-5b37-11eb-8b0c-ec4b1414c948.png) + + Updated: + ![Screenshot from 2021-01-20 15-50-19](https://user-images.githubusercontent.com/38764067/105161627-966d3380-5b37-11eb-9812-3dd9352b4f95.png) + +- Room's list showing all rooms with same name ([#20176](https://github.com/RocketChat/Rocket.Chat/pull/20176)) + + Add a migration to fix the room's list for those who ran version 3.10.1 and got it scrambled when a new user was registered. + +- RoomManager validation broken on IE ([#20490](https://github.com/RocketChat/Rocket.Chat/pull/20490)) + +- Saving with blank email in edit user ([#20259](https://github.com/RocketChat/Rocket.Chat/pull/20259) by [@RonLek](https://github.com/RonLek)) + + Disallows showing a success popup when email field is made blank in Edit User and instead shows the relevant error popup. + + + https://user-images.githubusercontent.com/28918901/104960749-dbd81680-59fa-11eb-9c7b-2b257936f894.mp4 + +- Search list filter ([#19937](https://github.com/RocketChat/Rocket.Chat/pull/19937)) + +- Sidebar palette color broken on IE ([#20457](https://github.com/RocketChat/Rocket.Chat/pull/20457)) + + ![image](https://user-images.githubusercontent.com/27704687/106056093-0a29b600-60cd-11eb-8038-eabbc0d8fb03.png) + +- Status circle in profile section ([#20016](https://github.com/RocketChat/Rocket.Chat/pull/20016)) + + The Status Circle in status message text input is now centered vertically. + +- Tabbar is opened ([#20122](https://github.com/RocketChat/Rocket.Chat/pull/20122)) + +- Translate keyword for 'Showing results of' in tables ([#20134](https://github.com/RocketChat/Rocket.Chat/pull/20134) by [@Karting06](https://github.com/Karting06)) + + Change translation keyword in order to allow the translation of `Showing results %s - %s of %s` in tables. + +- Unable to reset password by Email if upper case character is pr… ([#19643](https://github.com/RocketChat/Rocket.Chat/pull/19643) by [@bhavayAnand9](https://github.com/bhavayAnand9)) + +- User Audio notification preference not being applied ([#20061](https://github.com/RocketChat/Rocket.Chat/pull/20061)) + +- User info 'Full Name' translation keyword ([#20028](https://github.com/RocketChat/Rocket.Chat/pull/20028) by [@Karting06](https://github.com/Karting06)) + + Fix the `Full Name` translation keyword, so that it can be translated. + +- User registration updating wrong subscriptions ([#20128](https://github.com/RocketChat/Rocket.Chat/pull/20128)) + +- Video call message not translated ([#18722](https://github.com/RocketChat/Rocket.Chat/pull/18722)) + + Fixed video call message not translated. + +- ViewLogs title translation keyword ([#20029](https://github.com/RocketChat/Rocket.Chat/pull/20029) by [@Karting06](https://github.com/Karting06)) + + Fix `View Logs` title translation keyword to enable translation of the title + +- White screen after 2FA code entered ([#20225](https://github.com/RocketChat/Rocket.Chat/pull/20225) by [@wggdeveloper](https://github.com/wggdeveloper)) + +- Wrong userId when open own user profile ([#20181](https://github.com/RocketChat/Rocket.Chat/pull/20181)) + +
+🔍 Minor changes + + +- Add translation of Edit Status in all languages ([#19916](https://github.com/RocketChat/Rocket.Chat/pull/19916) by [@sushant52](https://github.com/sushant52)) + + Closes [#19915](https://github.com/RocketChat/Rocket.Chat/issues/19915) + The profile options menu is well translated in many languages. However, Edit Status is the only button which is not well translated. With this change, the whole profile options will be properly translated in a lot of languages. + +- Bump axios from 0.18.0 to 0.18.1 ([#20055](https://github.com/RocketChat/Rocket.Chat/pull/20055) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: Add tests for the api/licenses.* endpoints ([#20041](https://github.com/RocketChat/Rocket.Chat/pull/20041) by [@lucassartor](https://github.com/lucassartor)) + + Adding api tests for the new `licenses.*` endpoints (`licenses.get` and `licenses.add`) + +- Chore: add tests to api/instances.get endpoint ([#19988](https://github.com/RocketChat/Rocket.Chat/pull/19988) by [@lucassartor](https://github.com/lucassartor)) + +- Chore: Change console.warning() to console.warn() ([#20200](https://github.com/RocketChat/Rocket.Chat/pull/20200) by [@lucassartor](https://github.com/lucassartor)) + +- chore: Change return button ([#20045](https://github.com/RocketChat/Rocket.Chat/pull/20045)) + +- Chore: Fix i18n duplicated keys ([#19998](https://github.com/RocketChat/Rocket.Chat/pull/19998)) + +- Chore: Recover and update Storybook ([#20047](https://github.com/RocketChat/Rocket.Chat/pull/20047)) + + It reenables Storybook's usage. + +- Language update from LingoHub 🤖 on 2020-12-30Z ([#20013](https://github.com/RocketChat/Rocket.Chat/pull/20013)) + +- Language update from LingoHub 🤖 on 2021-01-04Z ([#20034](https://github.com/RocketChat/Rocket.Chat/pull/20034)) + +- Language update from LingoHub 🤖 on 2021-01-11Z ([#20146](https://github.com/RocketChat/Rocket.Chat/pull/20146)) + +- Language update from LingoHub 🤖 on 2021-01-18Z ([#20246](https://github.com/RocketChat/Rocket.Chat/pull/20246)) + +- Regression: Add tests to new banners REST endpoints ([#20492](https://github.com/RocketChat/Rocket.Chat/pull/20492) by [@lucassartor](https://github.com/lucassartor)) + + Add tests for the new `banners.*` endpoints: `banners.getNew` and `banners.dismiss`. + +- Regression: Announcement bar not showing properly Markdown content ([#20290](https://github.com/RocketChat/Rocket.Chat/pull/20290)) + + **Before**: + ![image](https://user-images.githubusercontent.com/27704687/105273746-a4907380-5b7a-11eb-8121-aff665251c44.png) + + **After**: + ![image](https://user-images.githubusercontent.com/27704687/105274050-2e404100-5b7b-11eb-93b2-b6282a7bed95.png) + +- regression: Announcement link open in new tab ([#20435](https://github.com/RocketChat/Rocket.Chat/pull/20435)) + +- Regression: Apps-Engine - Convert streams to buffers on file upload ([#20523](https://github.com/RocketChat/Rocket.Chat/pull/20523)) + + This is an implementation to accommodate the changes in API for the `IPreFileUpload` hook in the Apps-Engine. Explanation on the reasoning for it is here https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/376 + +- Regression: Attachments ([#20291](https://github.com/RocketChat/Rocket.Chat/pull/20291)) + +- Regression: Bio page not rendering ([#20450](https://github.com/RocketChat/Rocket.Chat/pull/20450)) + +- Regression: Change sort icon ([#20177](https://github.com/RocketChat/Rocket.Chat/pull/20177)) + + ### Before + ![image](https://user-images.githubusercontent.com/40830821/104366414-1bcd6400-54f8-11eb-9fc7-c6f13f07a61e.png) + + ### After + ![image](https://user-images.githubusercontent.com/40830821/104366542-4cad9900-54f8-11eb-83ca-acb99899515a.png) + +- Regression: Custom field labels are not displayed properly on Omnichannel Contact Profile form ([#20393](https://github.com/RocketChat/Rocket.Chat/pull/20393) by [@rafaelblink](https://github.com/rafaelblink)) + + ### Before + ![image](https://user-images.githubusercontent.com/2493803/105780399-20116c80-5f4f-11eb-9620-0901472e453b.png) + + ![image](https://user-images.githubusercontent.com/2493803/105780420-2e5f8880-5f4f-11eb-8e93-8115ebc685be.png) + + ### After + + ![image](https://user-images.githubusercontent.com/2493803/105780832-1ccab080-5f50-11eb-8042-188dd0c41904.png) + + ![image](https://user-images.githubusercontent.com/2493803/105780911-500d3f80-5f50-11eb-96e0-7df3f179dbd5.png) + +- Regression: ESLint Warning - explicit-function-return-type ([#20434](https://github.com/RocketChat/Rocket.Chat/pull/20434) by [@aditya-mitra](https://github.com/aditya-mitra)) + + Added explicit Return Type (Promise) on the function to fix eslint warning (`explicit-function-return-type`) + +- Regression: Fix banners sync data types ([#20517](https://github.com/RocketChat/Rocket.Chat/pull/20517)) + +- Regression: Fix Cron statistics TypeError ([#20343](https://github.com/RocketChat/Rocket.Chat/pull/20343) by [@RonLek](https://github.com/RonLek)) + +- Regression: Fix duplicate email messages in multiple instances ([#20495](https://github.com/RocketChat/Rocket.Chat/pull/20495)) + +- Regression: Fix e2e paused state ([#20511](https://github.com/RocketChat/Rocket.Chat/pull/20511)) + +- Regression: Fixed update room avatar issue. ([#20433](https://github.com/RocketChat/Rocket.Chat/pull/20433) by [@Darshilp326](https://github.com/Darshilp326)) + + Users can now update their room avatar without any error. + + https://user-images.githubusercontent.com/55157259/105951602-560d3880-6096-11eb-97a5-b5eb9a28b58d.mp4 + +- Regression: Info Page Icon style and usage graph breaking ([#20180](https://github.com/RocketChat/Rocket.Chat/pull/20180)) + +- Regression: Lint warnings and some datepicker ([#20280](https://github.com/RocketChat/Rocket.Chat/pull/20280)) + +- Regression: NPS ([#20514](https://github.com/RocketChat/Rocket.Chat/pull/20514)) + +- Regression: reactAttachments cpu ([#20255](https://github.com/RocketChat/Rocket.Chat/pull/20255)) + +- Regression: Room not scrolling to bottom ([#20516](https://github.com/RocketChat/Rocket.Chat/pull/20516)) + +- Regression: Set image sizes based on rotation ([#20531](https://github.com/RocketChat/Rocket.Chat/pull/20531)) + +- Regression: Unread superposing announcement. ([#20306](https://github.com/RocketChat/Rocket.Chat/pull/20306)) + + ### Before + ![image](https://user-images.githubusercontent.com/40830821/105412619-c2f67d80-5c13-11eb-8204-5932ea880c8a.png) + + + ### After + ![image](https://user-images.githubusercontent.com/40830821/105411176-d1439a00-5c11-11eb-8d1b-ea27c8485214.png) + +- Regression: User Dropdown margin ([#20222](https://github.com/RocketChat/Rocket.Chat/pull/20222)) + +- Rewrite : Message Thread metrics ([#20051](https://github.com/RocketChat/Rocket.Chat/pull/20051)) + + ![image](https://user-images.githubusercontent.com/5263975/103585504-e904e980-4ec1-11eb-8d8c-3113ac812ead.png) + +- Rewrite Broadcast ([#20119](https://github.com/RocketChat/Rocket.Chat/pull/20119)) + + ![image](https://user-images.githubusercontent.com/5263975/104035912-7fcaf200-51b1-11eb-91df-228c23d97448.png) + +- Rewrite Discussion Metric ([#20117](https://github.com/RocketChat/Rocket.Chat/pull/20117)) + + https://user-images.githubusercontent.com/5263975/104031909-23190880-51ac-11eb-93dd-5d4b5295886d.mp4 + +- Rewrite Message action links ([#20123](https://github.com/RocketChat/Rocket.Chat/pull/20123)) + +- Rewrite: Message Attachments ([#20106](https://github.com/RocketChat/Rocket.Chat/pull/20106)) + + ![image](https://user-images.githubusercontent.com/5263975/104783709-69023d80-5765-11eb-968f-a2b93fdfb51e.png) + +- Security sync ([#20430](https://github.com/RocketChat/Rocket.Chat/pull/20430)) + +- Update "Industry" setting ([#20510](https://github.com/RocketChat/Rocket.Chat/pull/20510)) + +- Update Apps-Engine and permissions translations ([#20491](https://github.com/RocketChat/Rocket.Chat/pull/20491) by [@lolimay](https://github.com/lolimay)) + + Update Apps-Engine version and apply changes in translations for the changed permissions. Please review the texts on the translation files to make sure they're clear. + +- Update Apps-Engine version ([#20482](https://github.com/RocketChat/Rocket.Chat/pull/20482)) + + Update Apps-Engine version with some fixes for the current RC cycle. + +- Update password policy English translation ([#20118](https://github.com/RocketChat/Rocket.Chat/pull/20118) by [@zdumitru](https://github.com/zdumitru)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Darshilp326](https://github.com/Darshilp326) +- [@Karting06](https://github.com/Karting06) +- [@RonLek](https://github.com/RonLek) +- [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@aditya-mitra](https://github.com/aditya-mitra) +- [@bdelwood](https://github.com/bdelwood) +- [@bhavayAnand9](https://github.com/bhavayAnand9) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@i-kychukov](https://github.com/i-kychukov) +- [@ikyuchukov](https://github.com/ikyuchukov) +- [@lolimay](https://github.com/lolimay) +- [@lucassartor](https://github.com/lucassartor) +- [@moniang](https://github.com/moniang) +- [@rafaelblink](https://github.com/rafaelblink) +- [@sushant52](https://github.com/sushant52) +- [@tlskinneriv](https://github.com/tlskinneriv) +- [@wggdeveloper](https://github.com/wggdeveloper) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@yash-rajpal](https://github.com/yash-rajpal) + +# 3.10.5 +`2021-01-27 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- Security Hotfix + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.10.4 +`2021-01-14 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- Room's list showing all rooms with same name ([#20176](https://github.com/RocketChat/Rocket.Chat/pull/20176)) + + Add a migration to fix the room's list for those who ran version 3.10.1 and got it scrambled when a new user was registered. + +
+🔍 Minor changes + + +- Chore: Change console.warning() to console.warn() ([#20200](https://github.com/RocketChat/Rocket.Chat/pull/20200) by [@lucassartor](https://github.com/lucassartor)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@lucassartor](https://github.com/lucassartor) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.10.3 +`2021-01-09 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- User registration updating wrong subscriptions ([#20128](https://github.com/RocketChat/Rocket.Chat/pull/20128)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.10.2 +`2021-01-08 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- Tabbar is opened ([#20122](https://github.com/RocketChat/Rocket.Chat/pull/20122)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + +# 3.10.1 +`2021-01-08 · 11 🐛 · 7 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink)) + +- Actions from User Info panel ([#20073](https://github.com/RocketChat/Rocket.Chat/pull/20073) by [@Darshilp326](https://github.com/Darshilp326)) + + Users can be removed from channels without any error message. + +- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink)) + +- Creation of Omnichannel rooms not working correctly through the Apps when the agent parameter is set ([#19997](https://github.com/RocketChat/Rocket.Chat/pull/19997)) + +- Messages being updated when not required after user changes his profile ([#20114](https://github.com/RocketChat/Rocket.Chat/pull/20114)) + +- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003)) + +- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093)) + +- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089)) + +- User Audio notification preference not being applied ([#20061](https://github.com/RocketChat/Rocket.Chat/pull/20061)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Darshilp326](https://github.com/Darshilp326) +- [@rafaelblink](https://github.com/rafaelblink) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.10.0 +`2020-12-29 · 6 🎉 · 10 🚀 · 29 🐛 · 39 🔍 · 20 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🎉 New features + + +- Custom scroll ([#19701](https://github.com/RocketChat/Rocket.Chat/pull/19701)) + +- Omnichannel Contact Center (Directory) ([#19931](https://github.com/RocketChat/Rocket.Chat/pull/19931) by [@rafaelblink](https://github.com/rafaelblink)) + +- REST Endpoint `instances.get` ([#19926](https://github.com/RocketChat/Rocket.Chat/pull/19926) by [@g-thome](https://github.com/g-thome)) + + Returns an array of instances on the cluster. + +- REST endpoints to add and retrieve Enterprise licenses ([#19925](https://github.com/RocketChat/Rocket.Chat/pull/19925) by [@g-thome](https://github.com/g-thome)) + +- Update Checker Description ([#19892](https://github.com/RocketChat/Rocket.Chat/pull/19892)) + +- User preference for audio notifications ([#19924](https://github.com/RocketChat/Rocket.Chat/pull/19924)) + + ![image](https://user-images.githubusercontent.com/40830821/102808922-dfe32b00-439f-11eb-9268-6d0cf69dc64c.png) + +### 🚀 Improvements + + +- Removed useEndpointDataExperimental hook usage ([#19496](https://github.com/RocketChat/Rocket.Chat/pull/19496)) + +- Replace useClipboard ([#19764](https://github.com/RocketChat/Rocket.Chat/pull/19764)) + +- Replace usePrefersReducedMotion ([#19759](https://github.com/RocketChat/Rocket.Chat/pull/19759)) + +- Rewrite contextualbar OTR panel ([#19674](https://github.com/RocketChat/Rocket.Chat/pull/19674)) + +- Rewrite contextualbar RoomMembers - AddUsers as React Component ([#19803](https://github.com/RocketChat/Rocket.Chat/pull/19803)) + +- Rewrite contextualbar RoomMembers - InviteUsers ([#19694](https://github.com/RocketChat/Rocket.Chat/pull/19694)) + +- Rewrite contextualbar RoomMembers as React Component ([#19841](https://github.com/RocketChat/Rocket.Chat/pull/19841)) + +- Rewrite NotificationPreferences to React component ([#19672](https://github.com/RocketChat/Rocket.Chat/pull/19672)) + +- Rewrite Room Files as React Component ([#19580](https://github.com/RocketChat/Rocket.Chat/pull/19580)) + +- Show all screen when printing screen ([#19928](https://github.com/RocketChat/Rocket.Chat/pull/19928)) + +### 🐛 Bug fixes + + +- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762)) + +- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink)) + +- Add fallback message when show notification content is disabled ([#19516](https://github.com/RocketChat/Rocket.Chat/pull/19516) by [@youssef-md](https://github.com/youssef-md)) + +- Admin Users screen sorting showing deactivated users in wrong order ([#19898](https://github.com/RocketChat/Rocket.Chat/pull/19898)) + +- Custom Avatar ([#19805](https://github.com/RocketChat/Rocket.Chat/pull/19805)) + +- Download my data with file uploads ([#19862](https://github.com/RocketChat/Rocket.Chat/pull/19862)) + +- Emails not showing up in Admin/Users ([#19727](https://github.com/RocketChat/Rocket.Chat/pull/19727)) + +- File Tab Order ([#19729](https://github.com/RocketChat/Rocket.Chat/pull/19729)) + +- Forgot password endpoint return status ([#19842](https://github.com/RocketChat/Rocket.Chat/pull/19842) by [@g-thome](https://github.com/g-thome)) + +- Group DMs title when user changes his/her name ([#19834](https://github.com/RocketChat/Rocket.Chat/pull/19834) by [@g-thome](https://github.com/g-thome)) + +- Hightlights validation on Account Preferences page ([#19902](https://github.com/RocketChat/Rocket.Chat/pull/19902) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + + This PR fixes two issues in the account settings "preferences" panel. + Once set, the "Highlighted Words" setting cannot be reset to an empty string. This was fixed by changing the string validation from checking the length to checking the type of variable. + Secondly, it tracks the changes to correctly identify if changes after the last "save changes" action have been made, using an "updates" state variable, instead of just comparing against the initialValue that does not change on clicking "save changes". + +- Image preview for image URLs on messages ([#19734](https://github.com/RocketChat/Rocket.Chat/pull/19734) by [@g-thome](https://github.com/g-thome)) + +- Issue with oembed ([#19923](https://github.com/RocketChat/Rocket.Chat/pull/19923)) + +- Issue with oembed ([#19886](https://github.com/RocketChat/Rocket.Chat/pull/19886)) + +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) + +- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830)) + +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) + +- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945)) + +- RoomForeword ([#19875](https://github.com/RocketChat/Rocket.Chat/pull/19875)) + +- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746)) + +- Sidebar UI disappearing ([#19725](https://github.com/RocketChat/Rocket.Chat/pull/19725)) + +- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763)) + +- Spotify oEmbed ([#19825](https://github.com/RocketChat/Rocket.Chat/pull/19825)) + +- Startup error when using MongoDB with a password containing special characters ([#19749](https://github.com/RocketChat/Rocket.Chat/pull/19749)) + +- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935)) + +- UIKit Modal not scrolling ([#19690](https://github.com/RocketChat/Rocket.Chat/pull/19690)) + +- Update base image in Dockerfile.rhel ([#19036](https://github.com/RocketChat/Rocket.Chat/pull/19036) by [@andykrohg](https://github.com/andykrohg)) + +- User email showing [object Object] ([#19870](https://github.com/RocketChat/Rocket.Chat/pull/19870)) + +- User Info 'Local Time' translation keyword ([#19879](https://github.com/RocketChat/Rocket.Chat/pull/19879) by [@J4r3tt](https://github.com/J4r3tt)) + +
+🔍 Minor changes + + +- bump fuselage ([#19736](https://github.com/RocketChat/Rocket.Chat/pull/19736)) + +- Bump ini from 1.3.5 to 1.3.8 in /ee/server/services ([#19844](https://github.com/RocketChat/Rocket.Chat/pull/19844) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump systeminformation from 4.30.1 to 4.33.0 in /ee/server/services ([#19929](https://github.com/RocketChat/Rocket.Chat/pull/19929) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Chore: Fix Caddy download URL in Snaps ([#19912](https://github.com/RocketChat/Rocket.Chat/pull/19912)) + +- Chore: Add watch.settings to events whitelist ([#19850](https://github.com/RocketChat/Rocket.Chat/pull/19850)) + +- Chore: Change Youtube test to verify if has an iframe with max-width ([#19863](https://github.com/RocketChat/Rocket.Chat/pull/19863)) + +- Chore: Remove extra parentheses from return type ([#19598](https://github.com/RocketChat/Rocket.Chat/pull/19598) by [@ArnoSaine](https://github.com/ArnoSaine)) + +- Chore: Update Pull Request template ([#19768](https://github.com/RocketChat/Rocket.Chat/pull/19768)) + + Improve the template of Pull Requests in order to make it clear reducing duplicated information and removing the visible checklists that were generating noise and misunderstanding with the PR progress. + - Moved the checklists to inside comments + - Merge the changelog and proposed changes sections to have a single source of description that goes to the changelog + - Remove the screenshot section, they can be added inside the description + - Changed the proposed changes title to incentivizing the usage of images and videos + +- Frontend folder structure ([#19631](https://github.com/RocketChat/Rocket.Chat/pull/19631)) + +- Improve Docker container size by adding chown to ADD command ([#19796](https://github.com/RocketChat/Rocket.Chat/pull/19796)) + +- Improve: Report Weekly Active Users to statistics ([#19843](https://github.com/RocketChat/Rocket.Chat/pull/19843)) + + Add the fields `uniqueUsersOfLastWeek`, `uniqueDevicesOfLastWeek` and `uniqueOSOfLastWeek` to the statistics report among the daily and monthly already reported. + +- Language update from LingoHub 🤖 on 2020-12-21Z ([#19922](https://github.com/RocketChat/Rocket.Chat/pull/19922)) + +- Merge EE and Community translations and LingoHub manual sync ([#19723](https://github.com/RocketChat/Rocket.Chat/pull/19723)) + +- Merge master into develop & Set version to 3.10.0-develop ([#19720](https://github.com/RocketChat/Rocket.Chat/pull/19720)) + +- Message parsing and rendering - Phase 1 ([#19654](https://github.com/RocketChat/Rocket.Chat/pull/19654)) + +- Regression: "My Account" page doesn't load ([#19753](https://github.com/RocketChat/Rocket.Chat/pull/19753) by [@g-thome](https://github.com/g-thome)) + +- Regression: Add currently running instance to instances.get endpoint ([#19955](https://github.com/RocketChat/Rocket.Chat/pull/19955) by [@g-thome](https://github.com/g-thome)) + +- Regression: Add Members showing the wrong template ([#19748](https://github.com/RocketChat/Rocket.Chat/pull/19748)) + +- Regression: Add missing translations on the Omnichannel Contact Center(Directory) ([#19968](https://github.com/RocketChat/Rocket.Chat/pull/19968) by [@rafaelblink](https://github.com/rafaelblink)) + +- Regression: Admin Sidebar Scroll ([#19944](https://github.com/RocketChat/Rocket.Chat/pull/19944)) + +- Regression: Check permissions properly when fetching rooms in Omnichannel Directory ([#19951](https://github.com/RocketChat/Rocket.Chat/pull/19951) by [@rafaelblink](https://github.com/rafaelblink)) + +- Regression: contextualBar folder structure ([#19761](https://github.com/RocketChat/Rocket.Chat/pull/19761)) + +- Regression: Double Scrollbars on tables ([#19980](https://github.com/RocketChat/Rocket.Chat/pull/19980)) + + Before: + ![image](https://user-images.githubusercontent.com/40830821/103242719-0ec84680-4936-11eb-87a7-68b6eea8de7b.png) + + + After: + ![image](https://user-images.githubusercontent.com/40830821/103242680-ee988780-4935-11eb-99e2-a95de99f78f1.png) + +- Regression: Failed autolinker and markdown rendering ([#19831](https://github.com/RocketChat/Rocket.Chat/pull/19831)) + +- Regression: fix broken members list ([#19806](https://github.com/RocketChat/Rocket.Chat/pull/19806)) + +- Regression: Fix member list Actions ([#19876](https://github.com/RocketChat/Rocket.Chat/pull/19876)) + +- Regression: Fix oembed ([#19978](https://github.com/RocketChat/Rocket.Chat/pull/19978)) + +- Regression: Fix Room Files for DMs ([#19874](https://github.com/RocketChat/Rocket.Chat/pull/19874)) + +- Regression: Fix sorting indicators on Admin Users page ([#19950](https://github.com/RocketChat/Rocket.Chat/pull/19950)) + +- Regression: Header Styles fixes ([#19946](https://github.com/RocketChat/Rocket.Chat/pull/19946)) + +- Regression: Omnichannel Custom Fields Form no longer working after refactoring ([#19948](https://github.com/RocketChat/Rocket.Chat/pull/19948)) + + The Omnichannel `Custom Fields` form is not working anymore after some refactorings on client-side. + When the user clicks on `Custom Field` in the Omnichannel menu, a blank page appears. + +- Regression: polishing licenses endpoints ([#19981](https://github.com/RocketChat/Rocket.Chat/pull/19981) by [@g-thome](https://github.com/g-thome)) + +- Regression: roomInfo folder structure ([#19787](https://github.com/RocketChat/Rocket.Chat/pull/19787)) + +- Regression: RoomMembers Permission ([#19867](https://github.com/RocketChat/Rocket.Chat/pull/19867)) + +- Regression: User Info Context bar breaking. ([#19807](https://github.com/RocketChat/Rocket.Chat/pull/19807)) + +- Regression: UserCard "See full profile" link broken ([#19941](https://github.com/RocketChat/Rocket.Chat/pull/19941)) + +- Regression: UserInfoWithData endpoint variable ([#19816](https://github.com/RocketChat/Rocket.Chat/pull/19816)) + +- Remove Heroku from readme ([#19901](https://github.com/RocketChat/Rocket.Chat/pull/19901)) + +- Rewrite: Room Header ([#19808](https://github.com/RocketChat/Rocket.Chat/pull/19808)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@ArnoSaine](https://github.com/ArnoSaine) +- [@J4r3tt](https://github.com/J4r3tt) +- [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@andykrohg](https://github.com/andykrohg) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@g-thome](https://github.com/g-thome) +- [@rafaelblink](https://github.com/rafaelblink) +- [@youssef-md](https://github.com/youssef-md) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.9.4 +`2020-12-31 · 3 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830)) + +- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945)) + +- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935)) + +
+🔍 Minor changes + + +- Regression: Fix oembed ([#19978](https://github.com/RocketChat/Rocket.Chat/pull/19978)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.9.3 +`2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) + +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) + +# 3.9.2 +`2020-12-17 · 5 🐛 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.21.0-alpha.4235` + +### 🐛 Bug fixes + + +- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762)) + +- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink)) + +- Download my data with file uploads ([#19862](https://github.com/RocketChat/Rocket.Chat/pull/19862)) + +- Forgot password endpoint return status ([#19842](https://github.com/RocketChat/Rocket.Chat/pull/19842) by [@g-thome](https://github.com/g-thome)) + +- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) +- [@rafaelblink](https://github.com/rafaelblink) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@thassiov](https://github.com/thassiov) + +# 3.9.1 +`2020-12-05 · 5 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.20.0` + +### 🐛 Bug fixes + + +- Exception on certain login cases including SAML + +- Image preview for image URLs on messages ([#19734](https://github.com/RocketChat/Rocket.Chat/pull/19734) by [@g-thome](https://github.com/g-thome)) + +- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746)) + +- Sidebar UI disappearing ([#19725](https://github.com/RocketChat/Rocket.Chat/pull/19725)) + +- Startup error when using MongoDB with a password containing special characters ([#19749](https://github.com/RocketChat/Rocket.Chat/pull/19749)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@alansikora](https://github.com/alansikora) +- [@gabriellsh](https://github.com/gabriellsh) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.9.0 +`2020-11-28 · 2 🎉 · 16 🚀 · 27 🐛 · 31 🔍 · 21 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.20.0` + +### 🎉 New features + + +- 2 Factor Authentication when using OAuth and SAML ([#11726](https://github.com/RocketChat/Rocket.Chat/pull/11726) by [@Hudell](https://github.com/Hudell)) + +- Added setting to disable password changes for users who log in using SSO ([#10391](https://github.com/RocketChat/Rocket.Chat/pull/10391) by [@Hudell](https://github.com/Hudell)) + +### 🚀 Improvements + + +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Monitors page ([#19495](https://github.com/RocketChat/Rocket.Chat/pull/19495) by [@rafaelblink](https://github.com/rafaelblink)) + +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Priorities page ([#19512](https://github.com/RocketChat/Rocket.Chat/pull/19512) by [@rafaelblink](https://github.com/rafaelblink)) + +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Tags page ([#19510](https://github.com/RocketChat/Rocket.Chat/pull/19510) by [@rafaelblink](https://github.com/rafaelblink)) + +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Units page ([#19500](https://github.com/RocketChat/Rocket.Chat/pull/19500) by [@rafaelblink](https://github.com/rafaelblink)) + +- Add support to `replace` operation when using Change Stream ([#19579](https://github.com/RocketChat/Rocket.Chat/pull/19579)) + +- Bundle Size Client ([#19533](https://github.com/RocketChat/Rocket.Chat/pull/19533)) + + temporarily removes some codeblock languages + Moved some libraries to dynamic imports + Removed some shared code not used on the client side + +- Forward Omnichannel room to agent in another department ([#19576](https://github.com/RocketChat/Rocket.Chat/pull/19576) by [@mrfigueiredo](https://github.com/mrfigueiredo)) + +- KeyboardShortcuts as React component ([#19518](https://github.com/RocketChat/Rocket.Chat/pull/19518)) + +- Remove Box dependence from Tag and Badge components ([#19467](https://github.com/RocketChat/Rocket.Chat/pull/19467)) + +- Remove Box props from Avatar component ([#19491](https://github.com/RocketChat/Rocket.Chat/pull/19491)) + +- Rewrite Auto-Translate as a React component ([#19633](https://github.com/RocketChat/Rocket.Chat/pull/19633)) + +- Rewrite Room Info ([#19511](https://github.com/RocketChat/Rocket.Chat/pull/19511)) + +- SlackBridge threads performance improvement ([#19338](https://github.com/RocketChat/Rocket.Chat/pull/19338) by [@antkaz](https://github.com/antkaz)) + +- UI/UX enhancements in department pages following the design system ([#19421](https://github.com/RocketChat/Rocket.Chat/pull/19421) by [@rafaelblink](https://github.com/rafaelblink)) + +- UI/UX enhancements in Omnichannel Triggers page ([#19485](https://github.com/RocketChat/Rocket.Chat/pull/19485) by [@rafaelblink](https://github.com/rafaelblink)) + +- UI/UX enhancements in Omnichannnel Current Chats page ([#19397](https://github.com/RocketChat/Rocket.Chat/pull/19397) by [@rafaelblink](https://github.com/rafaelblink)) + +### 🐛 Bug fixes + + +- Allow username change if LDAP is enabled but their username is not linked to an LDAP field ([#19381](https://github.com/RocketChat/Rocket.Chat/pull/19381) by [@robertfromont](https://github.com/robertfromont)) + + LDAP users can change their username if the LDAP_Username_Field setting is blank. + +- Auto Translate ([#19599](https://github.com/RocketChat/Rocket.Chat/pull/19599)) + +- Channel actions not working when reduce motion is active ([#19638](https://github.com/RocketChat/Rocket.Chat/pull/19638)) + +- Column width was not following the design system in Omnichannel Departments page ([#19601](https://github.com/RocketChat/Rocket.Chat/pull/19601) by [@rafaelblink](https://github.com/rafaelblink)) + +- Engagement dashboard on old Mongo versions ([#19616](https://github.com/RocketChat/Rocket.Chat/pull/19616)) + +- Engagement dashboard: graphs adjustment ([#19450](https://github.com/RocketChat/Rocket.Chat/pull/19450)) + +- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561)) + +- Input without label and email ordering missing on Omnichannel Agents page ([#19414](https://github.com/RocketChat/Rocket.Chat/pull/19414) by [@rafaelblink](https://github.com/rafaelblink)) + +- Issue with drag and drop ([#19593](https://github.com/RocketChat/Rocket.Chat/pull/19593)) + +- LDAP Unique Identifier Field can not use operational attributes ([#19571](https://github.com/RocketChat/Rocket.Chat/pull/19571) by [@truongtx8](https://github.com/truongtx8)) + +- Omnichannel Analytics page doesn't have field labels ([#19400](https://github.com/RocketChat/Rocket.Chat/pull/19400) by [@rafaelblink](https://github.com/rafaelblink)) + +- Outgoing integrations without trigger words or with multiple commas ([#19488](https://github.com/RocketChat/Rocket.Chat/pull/19488) by [@g-thome](https://github.com/g-thome)) + +- Prevent headerRoom's click to open room/direct info ([#19596](https://github.com/RocketChat/Rocket.Chat/pull/19596)) + +- Regex was not working properly on visitors.search endpoint ([#19577](https://github.com/RocketChat/Rocket.Chat/pull/19577) by [@rafaelblink](https://github.com/rafaelblink)) + +- Restore Message View Mode Preference ([#19458](https://github.com/RocketChat/Rocket.Chat/pull/19458)) + + [FIX] Restore Message View Mode Preference + +- Role description not updating ([#19236](https://github.com/RocketChat/Rocket.Chat/pull/19236)) + +- Save button enabled by default in Omnichannel Business Hours Form ([#19493](https://github.com/RocketChat/Rocket.Chat/pull/19493) by [@rafaelblink](https://github.com/rafaelblink)) + +- Settings may not update internal cache immediately ([#19628](https://github.com/RocketChat/Rocket.Chat/pull/19628) by [@g-thome](https://github.com/g-thome)) + +- Setup Wizard User Creation Locking up ([#19509](https://github.com/RocketChat/Rocket.Chat/pull/19509)) + + [FIX] Setup Wizard User Creation Locking up + +- Size of embed Youtube on threads for small screens ([#19514](https://github.com/RocketChat/Rocket.Chat/pull/19514)) + +- The width of list columns was not following the design system in Omnichannel Agents page ([#19625](https://github.com/RocketChat/Rocket.Chat/pull/19625) by [@rafaelblink](https://github.com/rafaelblink)) + +- The width of list columns was not following the design system in Omnichannel Managers page ([#19624](https://github.com/RocketChat/Rocket.Chat/pull/19624) by [@rafaelblink](https://github.com/rafaelblink)) + +- TOTP Being ignored when changing our own avatar ([#19475](https://github.com/RocketChat/Rocket.Chat/pull/19475)) + + [FIX] TOTP Being ignored when changing our own avatar + +- Typo in custom oauth from environment variable ([#19570](https://github.com/RocketChat/Rocket.Chat/pull/19570)) + +- UI/UX issues on Omnichannel Managers page ([#19410](https://github.com/RocketChat/Rocket.Chat/pull/19410) by [@rafaelblink](https://github.com/rafaelblink)) + +- Unread count for all messages when mentioning an user ([#16884](https://github.com/RocketChat/Rocket.Chat/pull/16884) by [@subham103](https://github.com/subham103)) + +- Wrong margin of description field in Omnichannel Webhooks page ([#19487](https://github.com/RocketChat/Rocket.Chat/pull/19487) by [@rafaelblink](https://github.com/rafaelblink)) + +
+🔍 Minor changes + + +- [IMPROVES] Omnichannel - Custom Fields pages. ([#19473](https://github.com/RocketChat/Rocket.Chat/pull/19473) by [@rafaelblink](https://github.com/rafaelblink)) + +- Bump bcrypt from 4.0.1 to 5.0.0 in /ee/server/services ([#19387](https://github.com/RocketChat/Rocket.Chat/pull/19387) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump systeminformation from 4.27.3 to 4.30.1 in /ee/server/services ([#19543](https://github.com/RocketChat/Rocket.Chat/pull/19543) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump xml-crypto from 1.5.3 to 2.0.0 ([#19383](https://github.com/RocketChat/Rocket.Chat/pull/19383) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- chore: Debounce sidebar list ([#19590](https://github.com/RocketChat/Rocket.Chat/pull/19590)) + +- Fix Docker preview image build ([#19627](https://github.com/RocketChat/Rocket.Chat/pull/19627)) + +- Fix permission duplicated error on startup causing CI to halt ([#19653](https://github.com/RocketChat/Rocket.Chat/pull/19653) by [@g-thome](https://github.com/g-thome)) + +- Improve performance of migration 211 (adding mostImportantRole to sessions) ([#19700](https://github.com/RocketChat/Rocket.Chat/pull/19700)) + +- Improve REST endpoint to log user out from other clients ([#19642](https://github.com/RocketChat/Rocket.Chat/pull/19642)) + +- LingoHub based on develop ([#19592](https://github.com/RocketChat/Rocket.Chat/pull/19592)) + +- LingoHub based on develop ([#19131](https://github.com/RocketChat/Rocket.Chat/pull/19131)) + +- Manual LingoHub update ([#19620](https://github.com/RocketChat/Rocket.Chat/pull/19620)) + +- Merge master into develop & Set version to 3.9.0-develop ([#19534](https://github.com/RocketChat/Rocket.Chat/pull/19534)) + +- React Room Container ([#19634](https://github.com/RocketChat/Rocket.Chat/pull/19634)) + +- Regression: Collapsed messages container in safari ([#19668](https://github.com/RocketChat/Rocket.Chat/pull/19668)) + +- Regression: Fix Avatar x40 ([#19564](https://github.com/RocketChat/Rocket.Chat/pull/19564)) + +- Regression: Fix Custom OAuth 2FA ([#19691](https://github.com/RocketChat/Rocket.Chat/pull/19691)) + +- Regression: Fix LDAP 2FA not working when Login Fallback is off ([#19659](https://github.com/RocketChat/Rocket.Chat/pull/19659)) + +- Regression: Fix multiple react blazed template rendering at the same time ([#19679](https://github.com/RocketChat/Rocket.Chat/pull/19679)) + +- Regression: Fix wrong template on photoswipe ([#19575](https://github.com/RocketChat/Rocket.Chat/pull/19575)) + +- Regression: Issues with Safari ([#19671](https://github.com/RocketChat/Rocket.Chat/pull/19671)) + +- Regression: object-fit for image element and Box margin in AppAvatar component ([#19698](https://github.com/RocketChat/Rocket.Chat/pull/19698)) + +- REGRESSION: Photoswipe not working ([#19569](https://github.com/RocketChat/Rocket.Chat/pull/19569)) + +- Regression: Room Info Edit action ([#19581](https://github.com/RocketChat/Rocket.Chat/pull/19581)) + +- Regression: Room Info maxAgeDefault variable ([#19582](https://github.com/RocketChat/Rocket.Chat/pull/19582)) + +- Regression: URL preview problem ([#19685](https://github.com/RocketChat/Rocket.Chat/pull/19685)) + +- Regression: Verticalbar size ([#19670](https://github.com/RocketChat/Rocket.Chat/pull/19670)) + +- Release 3.8.2 ([#19705](https://github.com/RocketChat/Rocket.Chat/pull/19705) by [@g-thome](https://github.com/g-thome)) + +- Report DAU and MAU by role ([#19657](https://github.com/RocketChat/Rocket.Chat/pull/19657)) + +- Update Apps-Engine version ([#19639](https://github.com/RocketChat/Rocket.Chat/pull/19639)) + +- Update Apps-Engine version ([#19702](https://github.com/RocketChat/Rocket.Chat/pull/19702)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@antkaz](https://github.com/antkaz) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@g-thome](https://github.com/g-thome) +- [@mrfigueiredo](https://github.com/mrfigueiredo) +- [@rafaelblink](https://github.com/rafaelblink) +- [@robertfromont](https://github.com/robertfromont) +- [@subham103](https://github.com/subham103) +- [@truongtx8](https://github.com/truongtx8) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.8.5 +`2020-12-31 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.19.0` + +
+🔍 Minor changes + + +- Regression: Fix oembed ([#19978](https://github.com/RocketChat/Rocket.Chat/pull/19978)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.8.4 +`2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.19.0` + +### 🐛 Bug fixes + + +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) + +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) + +# 3.8.3 +`2020-12-05 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.19.0` + +### 🐛 Bug fixes + + +- Exception on certain login cases including SAML + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.8.2 +`2020-11-27 · 2 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.19.0` + +### 🐛 Bug fixes + + +- Room avatar update event doesn't properly broadcast room id ([#19684](https://github.com/RocketChat/Rocket.Chat/pull/19684) by [@g-thome](https://github.com/g-thome)) + +- Server crash while reading settings for allowed and blocked email domain lists ([#19683](https://github.com/RocketChat/Rocket.Chat/pull/19683) by [@g-thome](https://github.com/g-thome)) + +
+🔍 Minor changes + + +- Release 3.8.2 ([#19705](https://github.com/RocketChat/Rocket.Chat/pull/19705) by [@g-thome](https://github.com/g-thome)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@g-thome](https://github.com/g-thome) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.8.1 +`2020-11-19 · 3 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.19.0` + +### 🐛 Bug fixes + + +- Engagement dashboard on old Mongo versions ([#19616](https://github.com/RocketChat/Rocket.Chat/pull/19616)) + +- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561)) + +- Typo in custom oauth from environment variable ([#19570](https://github.com/RocketChat/Rocket.Chat/pull/19570)) + +
+🔍 Minor changes + + +- Fix Docker preview image build ([#19627](https://github.com/RocketChat/Rocket.Chat/pull/19627)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.8.0 +`2020-11-14 · 14 🎉 · 4 🚀 · 40 🐛 · 54 🔍 · 30 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.19.0` + +### 🎉 New features + + +- **Apps:** Add new typing bridge method (Typing-Indicator) ([#19228](https://github.com/RocketChat/Rocket.Chat/pull/19228) by [@lolimay](https://github.com/lolimay)) + +- **APPS:** New Scheduler API ([#19290](https://github.com/RocketChat/Rocket.Chat/pull/19290)) + +- **Apps:** Remove TS compiler ([#18687](https://github.com/RocketChat/Rocket.Chat/pull/18687)) + +- **Enterprise:** Micro services ([#19000](https://github.com/RocketChat/Rocket.Chat/pull/19000)) + +- Add enterprise data to statistics ([#19363](https://github.com/RocketChat/Rocket.Chat/pull/19363)) + +- Admin option to reset users’ 2FA ([#19341](https://github.com/RocketChat/Rocket.Chat/pull/19341)) + + Admins can reset the 2FA of other users if they have the permission `edit-other-user-totp` and the `Accounts > Two Factor Authentication > Enforce password fallback` setting is enabled. + +- Apps prometheus metrics ([#19320](https://github.com/RocketChat/Rocket.Chat/pull/19320)) + +- Audits search by User ([#19275](https://github.com/RocketChat/Rocket.Chat/pull/19275)) + +- Branding updated with new logos ([#19440](https://github.com/RocketChat/Rocket.Chat/pull/19440)) + +- feat(CAS): Adding option to enable/disable user creation from CAS auth ([#17154](https://github.com/RocketChat/Rocket.Chat/pull/17154) by [@jgribonvald](https://github.com/jgribonvald)) + +- OAuth groups to channels mapping ([#18146](https://github.com/RocketChat/Rocket.Chat/pull/18146) by [@arminfelder](https://github.com/arminfelder)) + +- Reaction view ([#18272](https://github.com/RocketChat/Rocket.Chat/pull/18272)) + +- Replace client-side event emitters ([#19368](https://github.com/RocketChat/Rocket.Chat/pull/19368)) + +- Whitelisting bad words ([#17120](https://github.com/RocketChat/Rocket.Chat/pull/17120) by [@aryankoul](https://github.com/aryankoul)) + +### 🚀 Improvements + + +- **APPS:** Apps list page on servers without internet connection ([#19088](https://github.com/RocketChat/Rocket.Chat/pull/19088)) + +- Display channel avatar on the Header ([#19132](https://github.com/RocketChat/Rocket.Chat/pull/19132) by [@ba-9](https://github.com/ba-9) & [@bhavayAnand9](https://github.com/bhavayAnand9)) + +- New sidebar layout ([#19089](https://github.com/RocketChat/Rocket.Chat/pull/19089)) + +- React Avatar Provider ([#19321](https://github.com/RocketChat/Rocket.Chat/pull/19321)) + +### 🐛 Bug fixes + + +- "Export Messages" only works for global roles ([#19264](https://github.com/RocketChat/Rocket.Chat/pull/19264)) + +- **ENTERPRISE:** Race condition on Omnichannel queues ([#19352](https://github.com/RocketChat/Rocket.Chat/pull/19352)) + +- 2FA required rendering blank page ([#19364](https://github.com/RocketChat/Rocket.Chat/pull/19364)) + +- Adding missing custom fields translation in my account's profile ([#19179](https://github.com/RocketChat/Rocket.Chat/pull/19179)) + +- Admin not working on IE11 ([#19348](https://github.com/RocketChat/Rocket.Chat/pull/19348)) + +- Admin Sidebar overflowing ([#19101](https://github.com/RocketChat/Rocket.Chat/pull/19101)) + +- Agent status offline and wrong i18n key ([#19199](https://github.com/RocketChat/Rocket.Chat/pull/19199)) + +- Anonymous users are counted on the server statistics and engagement dashboard ([#19263](https://github.com/RocketChat/Rocket.Chat/pull/19263)) + +- Broken user info when a user don't have an email address ([#19339](https://github.com/RocketChat/Rocket.Chat/pull/19339)) + +- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524)) + +- Cloud Register Allowing Empty Tokens ([#19501](https://github.com/RocketChat/Rocket.Chat/pull/19501)) + +- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519)) + +- Don't send room name on notification ([#19247](https://github.com/RocketChat/Rocket.Chat/pull/19247)) + +- Error preventing from removing users without a role ([#19204](https://github.com/RocketChat/Rocket.Chat/pull/19204) by [@RohitKumar-200](https://github.com/RohitKumar-200)) + +- Error when editing priority and required description ([#19170](https://github.com/RocketChat/Rocket.Chat/pull/19170)) + +- Integrations history page not reacting to changes. ([#19114](https://github.com/RocketChat/Rocket.Chat/pull/19114)) + +- Invalid attachments on User Data downloads ([#19203](https://github.com/RocketChat/Rocket.Chat/pull/19203)) + +- IRC Bridge not working ([#19009](https://github.com/RocketChat/Rocket.Chat/pull/19009)) + +- LDAP Sync Error Dup Key ([#19337](https://github.com/RocketChat/Rocket.Chat/pull/19337)) + +- Livechat Appearance label and reset button ([#19171](https://github.com/RocketChat/Rocket.Chat/pull/19171)) + +- Message actions on top of text ([#19316](https://github.com/RocketChat/Rocket.Chat/pull/19316)) + +- Missing "Bio" in user's profile view (#18821) ([#19166](https://github.com/RocketChat/Rocket.Chat/pull/19166)) + +- Non admin cannot add custom avatar to group ([#18960](https://github.com/RocketChat/Rocket.Chat/pull/18960) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Allow non-admins to change room avatar. + +- OAuth create via environment variable ([#19472](https://github.com/RocketChat/Rocket.Chat/pull/19472)) + +- Omnichannel - typo error label at current chats page ([#19379](https://github.com/RocketChat/Rocket.Chat/pull/19379) by [@rafaelblink](https://github.com/rafaelblink)) + +- Omnichannel auditing required field ([#19201](https://github.com/RocketChat/Rocket.Chat/pull/19201)) + +- Omnichannel: triggers page not rendering. ([#19134](https://github.com/RocketChat/Rocket.Chat/pull/19134)) + +- Performance issues when using new Oplog implementation ([#19181](https://github.com/RocketChat/Rocket.Chat/pull/19181)) + + A missing configuration was not limiting the new oplog tailing to pool the database frequently even when no data was available, leading to both node and mongodb process been consuming high CPU even with low usage. This case was happening for installations using `mmapv1` database engine or when no admin access was granted to the database user, both preventing the usage of the new [Change Streams](https://docs.mongodb.com/manual/changeStreams/) implementation and fallbacking to our custom oplog implementation in replacement to the Meteor's one what was able to be disabled and use the native implementation via the environmental variable `USE_NATIVE_OPLOG=true`. + +- Push notifications with lower priority for Android devices ([#19061](https://github.com/RocketChat/Rocket.Chat/pull/19061) by [@ceefour](https://github.com/ceefour)) + + fix(push): Set push notification priority to 'high' for FCM + +- Remove requirements to tag description and department ([#19169](https://github.com/RocketChat/Rocket.Chat/pull/19169)) + +- SAML login undefined error message ([#18649](https://github.com/RocketChat/Rocket.Chat/pull/18649) by [@galshiff](https://github.com/galshiff)) + + Fixed the SAML login undefined error message + +- Selecting the same department for multiple units ([#19168](https://github.com/RocketChat/Rocket.Chat/pull/19168)) + +- Server Errors on new Client Connections ([#19266](https://github.com/RocketChat/Rocket.Chat/pull/19266)) + +- Setting values being showed up in logs when using log level for debug ([#18239](https://github.com/RocketChat/Rocket.Chat/pull/18239)) + +- Thread List showing wrong items ([#19351](https://github.com/RocketChat/Rocket.Chat/pull/19351)) + +- Thread view in a channel user haven't joined (#19008) ([#19172](https://github.com/RocketChat/Rocket.Chat/pull/19172)) + +- Use etag on user info ([#19349](https://github.com/RocketChat/Rocket.Chat/pull/19349)) + +- UserCard Roles Description ([#19200](https://github.com/RocketChat/Rocket.Chat/pull/19200)) + +- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133)) + +- Wrong avatar urls when using providers ([#18929](https://github.com/RocketChat/Rocket.Chat/pull/18929)) + +
+🔍 Minor changes + + +- Build micro services Docker images with correct tags ([#19418](https://github.com/RocketChat/Rocket.Chat/pull/19418)) + +- Bump Livechat widget ([#19361](https://github.com/RocketChat/Rocket.Chat/pull/19361)) + +- Bump Livechat widget ([#19478](https://github.com/RocketChat/Rocket.Chat/pull/19478)) + +- Bump object-path from 0.11.4 to 0.11.5 ([#19298](https://github.com/RocketChat/Rocket.Chat/pull/19298) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Fix Indie Hosters install image ([#19192](https://github.com/RocketChat/Rocket.Chat/pull/19192) by [@aradhya-gupta](https://github.com/aradhya-gupta)) + +- Merge master into develop & Set version to 3.8.0-develop ([#19060](https://github.com/RocketChat/Rocket.Chat/pull/19060)) + +- Micro Services: Add metrics capability to Services ([#19448](https://github.com/RocketChat/Rocket.Chat/pull/19448)) + +- Micro Services: Create internal services and allowed services list ([#19427](https://github.com/RocketChat/Rocket.Chat/pull/19427)) + +- Micro Services: Do not wait forever for a service. Fail after 10s or 10 minutes if whitelisted ([#19484](https://github.com/RocketChat/Rocket.Chat/pull/19484)) + +- Micro Services: Fix logout issue ([#19423](https://github.com/RocketChat/Rocket.Chat/pull/19423)) + +- Micro Services: Prevent duplicated events ([#19435](https://github.com/RocketChat/Rocket.Chat/pull/19435)) + +- Non-idiomatic React code ([#19303](https://github.com/RocketChat/Rocket.Chat/pull/19303)) + +- Reassessment of client helpers ([#19249](https://github.com/RocketChat/Rocket.Chat/pull/19249)) + +- Refactor some React Pages and Components ([#19202](https://github.com/RocketChat/Rocket.Chat/pull/19202)) + +- Refactor: Omnichannel departments ([#18920](https://github.com/RocketChat/Rocket.Chat/pull/18920)) + +- Regression: `Leave Room` modal not closing ([#19460](https://github.com/RocketChat/Rocket.Chat/pull/19460)) + +- Regression: Agent Status leading to broken page ([#19409](https://github.com/RocketChat/Rocket.Chat/pull/19409)) + +- Regression: Allow apps to schedule jobs along with processor register ([#19416](https://github.com/RocketChat/Rocket.Chat/pull/19416)) + +- Regression: Attachment without title or description show "sent attachment" in view mode extended ([#19443](https://github.com/RocketChat/Rocket.Chat/pull/19443)) + +- Regression: Fix broadcast events when running as monolith ([#19498](https://github.com/RocketChat/Rocket.Chat/pull/19498)) + +- Regression: Fix ephemeral message stream ([#19513](https://github.com/RocketChat/Rocket.Chat/pull/19513)) + +- Regression: Fix livechat permission validations ([#19468](https://github.com/RocketChat/Rocket.Chat/pull/19468)) + +- Regression: Fix presence request logic ([#19527](https://github.com/RocketChat/Rocket.Chat/pull/19527)) + +- Regression: Fix presence status ([#19474](https://github.com/RocketChat/Rocket.Chat/pull/19474)) + +- Regression: Fix React warnings ([#19508](https://github.com/RocketChat/Rocket.Chat/pull/19508)) + +- Regression: Fix setting value not being sent over websocket ([#19477](https://github.com/RocketChat/Rocket.Chat/pull/19477)) + +- Regression: Fix stream-room-data payload ([#19407](https://github.com/RocketChat/Rocket.Chat/pull/19407)) + +- Regression: Fix Thread List order ([#19486](https://github.com/RocketChat/Rocket.Chat/pull/19486)) + +- Regression: Fix visitor field missing on subscription payload ([#19412](https://github.com/RocketChat/Rocket.Chat/pull/19412)) + +- Regression: GenericTable.HeaderCell does not accept on click anymore ([#19358](https://github.com/RocketChat/Rocket.Chat/pull/19358)) + +- Regression: Pass `unset` parameter of updated `userData` notification ([#19380](https://github.com/RocketChat/Rocket.Chat/pull/19380)) + +- Regression: Prevent network broker from starting when not needed ([#19532](https://github.com/RocketChat/Rocket.Chat/pull/19532)) + +- Regression: Reassessment of client helpers 'XYZ key should not contain .' ([#19310](https://github.com/RocketChat/Rocket.Chat/pull/19310)) + +- Regression: Rocket.Chat Apps updates always fail ([#19411](https://github.com/RocketChat/Rocket.Chat/pull/19411)) + +- Regression: Room item menu display delay ([#19401](https://github.com/RocketChat/Rocket.Chat/pull/19401)) + +- Regression: Sidebar message preview escaping html ([#19382](https://github.com/RocketChat/Rocket.Chat/pull/19382)) + +- Regression: Sidebar reactivity when read last messages ([#19449](https://github.com/RocketChat/Rocket.Chat/pull/19449)) + +- Regression: Thread component not updating its message list ([#19390](https://github.com/RocketChat/Rocket.Chat/pull/19390)) + +- Regression: Thread list misbehaving ([#19413](https://github.com/RocketChat/Rocket.Chat/pull/19413)) + +- Regression: Thread not showing for unloaded message ([#19402](https://github.com/RocketChat/Rocket.Chat/pull/19402)) + +- Regression: unable to mark room as read ([#19419](https://github.com/RocketChat/Rocket.Chat/pull/19419)) + +- Regression: User card closing ([#19322](https://github.com/RocketChat/Rocket.Chat/pull/19322)) + +- Remove legacy modal template ([#19276](https://github.com/RocketChat/Rocket.Chat/pull/19276)) + +- Remove legacy slider ([#19255](https://github.com/RocketChat/Rocket.Chat/pull/19255)) + +- Remove unecessary return at the send code api ([#19494](https://github.com/RocketChat/Rocket.Chat/pull/19494)) + +- Remove WeDeploy from README ([#19342](https://github.com/RocketChat/Rocket.Chat/pull/19342) by [@lucas-andre](https://github.com/lucas-andre)) + +- Rewrite: Reset Login Form ([#18237](https://github.com/RocketChat/Rocket.Chat/pull/18237)) + +- Unify ephemeral message events ([#19464](https://github.com/RocketChat/Rocket.Chat/pull/19464)) + +- Update Apps-Engine to latest release ([#19499](https://github.com/RocketChat/Rocket.Chat/pull/19499)) + +- Update Apps-Engine version ([#19385](https://github.com/RocketChat/Rocket.Chat/pull/19385)) + +- Update comment of "issue-close-app" ([#19078](https://github.com/RocketChat/Rocket.Chat/pull/19078)) + +- Update feature-request opening process on README ([#19240](https://github.com/RocketChat/Rocket.Chat/pull/19240) by [@brij1999](https://github.com/brij1999)) + +- Update Fuselage Version ([#19359](https://github.com/RocketChat/Rocket.Chat/pull/19359)) + +- Use GitHub Container Registry ([#19297](https://github.com/RocketChat/Rocket.Chat/pull/19297)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@FelipeParreira](https://github.com/FelipeParreira) +- [@RohitKumar-200](https://github.com/RohitKumar-200) +- [@aradhya-gupta](https://github.com/aradhya-gupta) +- [@arminfelder](https://github.com/arminfelder) +- [@aryankoul](https://github.com/aryankoul) +- [@ba-9](https://github.com/ba-9) +- [@bhavayAnand9](https://github.com/bhavayAnand9) +- [@brij1999](https://github.com/brij1999) +- [@ceefour](https://github.com/ceefour) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@galshiff](https://github.com/galshiff) +- [@jgribonvald](https://github.com/jgribonvald) +- [@lolimay](https://github.com/lolimay) +- [@lucas-andre](https://github.com/lucas-andre) +- [@rafaelblink](https://github.com/rafaelblink) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@dougfabris](https://github.com/dougfabris) +- [@frdmn](https://github.com/frdmn) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) + +# 3.7.4 +`2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.18.0` + +### 🐛 Bug fixes + + +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) + +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) + +# 3.7.3 +`2020-12-05 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.18.0` + +### 🐛 Bug fixes + + +- Exception on certain login cases including SAML + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.7.2 +`2020-11-13 · 4 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.18.0` + +### 🐛 Bug fixes + + +- Admin not working on IE11 ([#19348](https://github.com/RocketChat/Rocket.Chat/pull/19348)) + +- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524)) + +- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519)) + +- Update Polyfills and fix directory in IE ([#19525](https://github.com/RocketChat/Rocket.Chat/pull/19525)) + +
+🔍 Minor changes + + +- Release 3.7.2 ([#19529](https://github.com/RocketChat/Rocket.Chat/pull/19529)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@dougfabris](https://github.com/dougfabris) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.7.1 +`2020-10-09 · 6 🐛 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.18.0` + +### 🐛 Bug fixes + + +- Adding missing custom fields translation in my account's profile ([#19179](https://github.com/RocketChat/Rocket.Chat/pull/19179)) + +- Admin Sidebar overflowing ([#19101](https://github.com/RocketChat/Rocket.Chat/pull/19101)) + +- Missing "Bio" in user's profile view (#18821) ([#19166](https://github.com/RocketChat/Rocket.Chat/pull/19166)) + +- Omnichannel: triggers page not rendering. ([#19134](https://github.com/RocketChat/Rocket.Chat/pull/19134)) + +- Performance issues when using new Oplog implementation ([#19181](https://github.com/RocketChat/Rocket.Chat/pull/19181)) + + A missing configuration was not limiting the new oplog tailing to pool the database frequently even when no data was available, leading to both node and mongodb process been consuming high CPU even with low usage. This case was happening for installations using `mmapv1` database engine or when no admin access was granted to the database user, both preventing the usage of the new [Change Streams](https://docs.mongodb.com/manual/changeStreams/) implementation and fallbacking to our custom oplog implementation in replacement to the Meteor's one what was able to be disabled and use the native implementation via the environmental variable `USE_NATIVE_OPLOG=true`. + +- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@gabriellsh](https://github.com/gabriellsh) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.7.0 +`2020-09-28 · 10 🎉 · 3 🚀 · 39 🐛 · 26 🔍 · 22 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.18.4` +- NPM: `6.14.8` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.18.0` + +### 🎉 New features + + +- "Room avatar changed" system messages ([#18839](https://github.com/RocketChat/Rocket.Chat/pull/18839)) + +- **Apps:** Add a Livechat API - setCustomFields ([#18912](https://github.com/RocketChat/Rocket.Chat/pull/18912) by [@lolimay](https://github.com/lolimay)) + +- **Apps:** Add a new upload API ([#18955](https://github.com/RocketChat/Rocket.Chat/pull/18955) by [@lolimay](https://github.com/lolimay)) + +- **Apps:** Add support for new livechat guest's and room's events ([#18946](https://github.com/RocketChat/Rocket.Chat/pull/18946)) + +- **Apps:** Add support to the "encoding" option in http requests from Apps ([#19002](https://github.com/RocketChat/Rocket.Chat/pull/19002) by [@lolimay](https://github.com/lolimay)) + +- Apps-Engine v1.18.0 ([#19047](https://github.com/RocketChat/Rocket.Chat/pull/19047)) + +- Option to require settings on wizard UI via ENV variables ([#18974](https://github.com/RocketChat/Rocket.Chat/pull/18974)) + + [NEW] Option to require settings on wizard UI via ENV variables + +- Retention policy precision defined by a cron job expression ([#18975](https://github.com/RocketChat/Rocket.Chat/pull/18975)) + +- Send E2E encrypted messages’ content on push notifications ([#18882](https://github.com/RocketChat/Rocket.Chat/pull/18882)) + + Sends the content of end to end encrypted messages on Push Notifications allowing new versions of mobile apps to decrypt them and displays the content correctly. + +- UploadFS respects $TMPDIR environment variable ([#17012](https://github.com/RocketChat/Rocket.Chat/pull/17012) by [@d-sko](https://github.com/d-sko)) + +### 🚀 Improvements + + +- Add "Allow_Save_Media_to_Gallery" setting ([#18875](https://github.com/RocketChat/Rocket.Chat/pull/18875)) + + - Added a new setting to allow/disallow saving media to device's gallery on mobile client + +- Move jump to message outside menu ([#18928](https://github.com/RocketChat/Rocket.Chat/pull/18928)) + +- Stop re-sending push notifications rejected by the gateway ([#18608](https://github.com/RocketChat/Rocket.Chat/pull/18608)) + +### 🐛 Bug fixes + + +- "Download my data" popup showing HTML code. ([#18947](https://github.com/RocketChat/Rocket.Chat/pull/18947)) + +- "Save to WebDav" not working ([#18883](https://github.com/RocketChat/Rocket.Chat/pull/18883)) + +- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835)) + +- API call users.setStatus does not trigger status update of clients ([#18961](https://github.com/RocketChat/Rocket.Chat/pull/18961) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Notify logged users via WebSockets message when a user changes status via REST API. + +- Block user action ([#18950](https://github.com/RocketChat/Rocket.Chat/pull/18950)) + +- Can't change password ([#18836](https://github.com/RocketChat/Rocket.Chat/pull/18836)) + +- Create Custom OAuth services from environment variables ([#17377](https://github.com/RocketChat/Rocket.Chat/pull/17377) by [@mrtndwrd](https://github.com/mrtndwrd)) + +- Custom fields required if minLength set and no text typed. ([#18838](https://github.com/RocketChat/Rocket.Chat/pull/18838)) + +- Deactivate users that are the last owner of a room using REST API ([#18864](https://github.com/RocketChat/Rocket.Chat/pull/18864) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Allow for user deactivation through REST API (even if user is the last owner of a room) + +- Deactivated users show as offline ([#18767](https://github.com/RocketChat/Rocket.Chat/pull/18767)) + +- Dutch: add translations for missing variables ([#18814](https://github.com/RocketChat/Rocket.Chat/pull/18814) by [@Karting06](https://github.com/Karting06)) + +- e.sendToBottomIfNecessaryDebounced is not a function ([#18834](https://github.com/RocketChat/Rocket.Chat/pull/18834)) + +- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948)) + +- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978)) + +- File upload (Avatars, Emoji, Sounds) ([#18841](https://github.com/RocketChat/Rocket.Chat/pull/18841)) + +- French: Add missing __online__ var ([#18813](https://github.com/RocketChat/Rocket.Chat/pull/18813) by [@Karting06](https://github.com/Karting06)) + +- IE11 support livechat widget ([#18850](https://github.com/RocketChat/Rocket.Chat/pull/18850)) + +- If there is `ufs` somewhere in url the request to api always returns 404 ([#18874](https://github.com/RocketChat/Rocket.Chat/pull/18874) by [@FelipeParreira](https://github.com/FelipeParreira)) + +- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866)) + +- invite-all-from and invite-all-to commands don't work with multibyte room names ([#18919](https://github.com/RocketChat/Rocket.Chat/pull/18919) by [@FelipeParreira](https://github.com/FelipeParreira)) + +- Jitsi call start updating subscriptions ([#18837](https://github.com/RocketChat/Rocket.Chat/pull/18837)) + +- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994)) + +- Non-upload requests being passed to UFS proxy middleware ([#18931](https://github.com/RocketChat/Rocket.Chat/pull/18931) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Avoid non-upload request to be caught by UFS proxy middleware. + +- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795)) + +- Open room after guest registration ([#18755](https://github.com/RocketChat/Rocket.Chat/pull/18755)) + +- PDF not rendering ([#18956](https://github.com/RocketChat/Rocket.Chat/pull/18956)) + +- Purged threads still show as unread ([#18944](https://github.com/RocketChat/Rocket.Chat/pull/18944) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Remove threads from subscription (and update counter) when messages are purged (or threads are disabled). + +- Reaction buttons not behaving properly ([#18832](https://github.com/RocketChat/Rocket.Chat/pull/18832)) + +- Read receipts showing blank names and not marking messages as read ([#18918](https://github.com/RocketChat/Rocket.Chat/pull/18918) by [@wreiske](https://github.com/wreiske)) + +- Scrollbar mention ticks always rendering as white ([#18979](https://github.com/RocketChat/Rocket.Chat/pull/18979)) + +- Show custom fields of invalid type ([#18794](https://github.com/RocketChat/Rocket.Chat/pull/18794)) + +- Showing alerts during setup wizard ([#18862](https://github.com/RocketChat/Rocket.Chat/pull/18862)) + +- Spurious expert role in startup data ([#18667](https://github.com/RocketChat/Rocket.Chat/pull/18667)) + +- Stop adding push messages to queue if push is disabled ([#18830](https://github.com/RocketChat/Rocket.Chat/pull/18830)) + +- User administration throwing a blank page if user has no role ([#18851](https://github.com/RocketChat/Rocket.Chat/pull/18851)) + +- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852)) + +- User Info: Email and name/username display, alignment on big screens, make admin action ([#18976](https://github.com/RocketChat/Rocket.Chat/pull/18976)) + +- Users not being able to activate/deactivate E2E in DMs ([#18943](https://github.com/RocketChat/Rocket.Chat/pull/18943)) + + [FIX] Users not being able to activate/deactivate E2E in DMs + +- Version update check cron job ([#18916](https://github.com/RocketChat/Rocket.Chat/pull/18916) by [@wreiske](https://github.com/wreiske)) + +
+🔍 Minor changes + + +- Bump Livechat widget ([#18977](https://github.com/RocketChat/Rocket.Chat/pull/18977)) + +- Bump lodash.merge from 4.6.1 to 4.6.2 ([#18800](https://github.com/RocketChat/Rocket.Chat/pull/18800) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump marked from 0.6.3 to 0.7.0 ([#18801](https://github.com/RocketChat/Rocket.Chat/pull/18801) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Check i18n file for missing variables ([#18762](https://github.com/RocketChat/Rocket.Chat/pull/18762)) + +- Do not use deprecated express API ([#18686](https://github.com/RocketChat/Rocket.Chat/pull/18686)) + +- Fix french translations ([#18746](https://github.com/RocketChat/Rocket.Chat/pull/18746) by [@lsignac](https://github.com/lsignac)) + +- Fix saveRoomSettings method complexity ([#18840](https://github.com/RocketChat/Rocket.Chat/pull/18840)) + +- Fix: Missing WebDav upload errors logs ([#18849](https://github.com/RocketChat/Rocket.Chat/pull/18849)) + +- LingoHub based on develop ([#18973](https://github.com/RocketChat/Rocket.Chat/pull/18973)) + +- LingoHub based on develop ([#18828](https://github.com/RocketChat/Rocket.Chat/pull/18828)) + +- LingoHub based on develop ([#18761](https://github.com/RocketChat/Rocket.Chat/pull/18761)) + +- Merge master into develop & Set version to 3.7.0-develop ([#18752](https://github.com/RocketChat/Rocket.Chat/pull/18752) by [@thirsch](https://github.com/thirsch)) + +- New: Use database change streams when available ([#18892](https://github.com/RocketChat/Rocket.Chat/pull/18892)) + +- Obey to settings properties ([#19020](https://github.com/RocketChat/Rocket.Chat/pull/19020)) + +- Refactor: Admin permissions page ([#18932](https://github.com/RocketChat/Rocket.Chat/pull/18932)) + +- Refactor: Message Audit page & Audit logs ([#18808](https://github.com/RocketChat/Rocket.Chat/pull/18808)) + +- Refactor: Omnichannel Analytics ([#18766](https://github.com/RocketChat/Rocket.Chat/pull/18766)) + +- Refactor: Omnichannel Realtime Monitoring ([#18666](https://github.com/RocketChat/Rocket.Chat/pull/18666)) + +- Regression: Elements select & multiSelect not rendered correctly in the App Settings ([#19005](https://github.com/RocketChat/Rocket.Chat/pull/19005) by [@lolimay](https://github.com/lolimay)) + +- Regression: File upload via apps not working in some scenarios ([#18995](https://github.com/RocketChat/Rocket.Chat/pull/18995) by [@lolimay](https://github.com/lolimay)) + +- Regression: Fix login screen reactivity of external login providers ([#19033](https://github.com/RocketChat/Rocket.Chat/pull/19033)) + +- Regression: Handle MongoDB authentication issues ([#18993](https://github.com/RocketChat/Rocket.Chat/pull/18993)) + +- Replace copying assets on post-install with symlinks ([#18707](https://github.com/RocketChat/Rocket.Chat/pull/18707)) + +- Set some queries to prefer the secondary database ([#18887](https://github.com/RocketChat/Rocket.Chat/pull/18887)) + +- Update Meteor to 1.11 ([#18754](https://github.com/RocketChat/Rocket.Chat/pull/18754)) + +- Update Meteor to 1.11.1 ([#18959](https://github.com/RocketChat/Rocket.Chat/pull/18959)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@FelipeParreira](https://github.com/FelipeParreira) +- [@Karting06](https://github.com/Karting06) +- [@d-sko](https://github.com/d-sko) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@lolimay](https://github.com/lolimay) +- [@lsignac](https://github.com/lsignac) +- [@mrtndwrd](https://github.com/mrtndwrd) +- [@thirsch](https://github.com/thirsch) +- [@wreiske](https://github.com/wreiske) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@diegolmello](https://github.com/diegolmello) +- [@engelgabriel](https://github.com/engelgabriel) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) + +# 3.6.3 +`2020-09-25 · 4 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.17.0` + +### 🐛 Bug fixes + + +- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948)) + +- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978)) + +- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994)) + +- PDF not rendering ([#18956](https://github.com/RocketChat/Rocket.Chat/pull/18956)) + +
+🔍 Minor changes + + +- Obey to settings properties ([#19020](https://github.com/RocketChat/Rocket.Chat/pull/19020)) + +- Release 3.6.3 ([#19022](https://github.com/RocketChat/Rocket.Chat/pull/19022)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@alansikora](https://github.com/alansikora) +- [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.6.2 +`2020-09-18 · 7 🐛 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.17.0` + +### 🐛 Bug fixes + + +- Create Custom OAuth services from environment variables ([#17377](https://github.com/RocketChat/Rocket.Chat/pull/17377) by [@mrtndwrd](https://github.com/mrtndwrd)) + +- Deactivate users that are the last owner of a room using REST API ([#18864](https://github.com/RocketChat/Rocket.Chat/pull/18864) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Allow for user deactivation through REST API (even if user is the last owner of a room) + +- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866)) + +- invite-all-from and invite-all-to commands don't work with multibyte room names ([#18919](https://github.com/RocketChat/Rocket.Chat/pull/18919) by [@FelipeParreira](https://github.com/FelipeParreira)) + + Fix slash commands (invite-all-from and invite-all-to) to accept multi-byte room names. + +- Read receipts showing blank names and not marking messages as read ([#18918](https://github.com/RocketChat/Rocket.Chat/pull/18918) by [@wreiske](https://github.com/wreiske)) + +- Show custom fields of invalid type ([#18794](https://github.com/RocketChat/Rocket.Chat/pull/18794)) + +- Version update check cron job ([#18916](https://github.com/RocketChat/Rocket.Chat/pull/18916) by [@wreiske](https://github.com/wreiske)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@FelipeParreira](https://github.com/FelipeParreira) +- [@mrtndwrd](https://github.com/mrtndwrd) +- [@wreiske](https://github.com/wreiske) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.6.1 +`2020-09-11 · 7 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.17.0` + +### 🐛 Bug fixes + + +- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835)) + +- File upload (Avatars, Emoji, Sounds) ([#18841](https://github.com/RocketChat/Rocket.Chat/pull/18841)) + +- IE11 support livechat widget ([#18850](https://github.com/RocketChat/Rocket.Chat/pull/18850)) + +- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795)) + +- Showing alerts during setup wizard ([#18862](https://github.com/RocketChat/Rocket.Chat/pull/18862)) + +- User administration throwing a blank page if user has no role ([#18851](https://github.com/RocketChat/Rocket.Chat/pull/18851)) + +- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.6.0 +`2020-08-29 · 10 🎉 · 5 🚀 · 26 🐛 · 36 🔍 · 23 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.17.0` + +### 🎉 New features + + +- **APPS-ENGINE:** Implement new IPostLivechatRoomTransferred event ([#18625](https://github.com/RocketChat/Rocket.Chat/pull/18625)) + +- **Jitsi:** Setting to use room's name instead of room's id to generate the URL ([#17481](https://github.com/RocketChat/Rocket.Chat/pull/17481)) + +- **Omnichannel:** Ability to set character message limit on Livechat widget ([#18261](https://github.com/RocketChat/Rocket.Chat/pull/18261) by [@oguhpereira](https://github.com/oguhpereira)) + +- **Omnichannel:** Livechat widget support for rich messages via UiKit ([#18643](https://github.com/RocketChat/Rocket.Chat/pull/18643)) + +- **Omnichannel/API:** Endpoint `livechat/room.visitor` to change Omnichannel room's visitor ([#18528](https://github.com/RocketChat/Rocket.Chat/pull/18528)) + +- **Omnichannel/API:** Endpoint `livechat/visitors.search` to search Livechat visitors ([#18514](https://github.com/RocketChat/Rocket.Chat/pull/18514)) + +- Admin option to reset other users’ E2E encryption key ([#18642](https://github.com/RocketChat/Rocket.Chat/pull/18642)) + + Requires the 2FA password fallback enforcement enabled to work + +- Banner for servers in the middle of the cloud registration process ([#18623](https://github.com/RocketChat/Rocket.Chat/pull/18623)) + +- Export room messages as file or directly via email ([#18606](https://github.com/RocketChat/Rocket.Chat/pull/18606)) + +- Support for custom avatar images in channels ([#18443](https://github.com/RocketChat/Rocket.Chat/pull/18443)) + +### 🚀 Improvements + + +- **2FA:** Password enforcement setting and 2FA protection when saving settings or resetting E2E encryption ([#18640](https://github.com/RocketChat/Rocket.Chat/pull/18640)) + + - Increase the 2FA remembering time from 5min to 30min + - Add new setting to enforce 2FA password fallback (enabled only for new installations) + - Require 2FA to save settings and reset E2E Encryption keys + +- **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571)) + +- **Security:** Admin info page requires permission `view-statistics` ([#18408](https://github.com/RocketChat/Rocket.Chat/pull/18408)) + + Users now require the `view-statistics` permission to be access the `admin/info` page + +- **Slack bridge:** Add support to sync threads ([#15992](https://github.com/RocketChat/Rocket.Chat/pull/15992) by [@antkaz](https://github.com/antkaz)) + +- New component and better look for tooltips ([#18399](https://github.com/RocketChat/Rocket.Chat/pull/18399)) + +### 🐛 Bug fixes + + +- 2FA by Email setting showing for the user even when disabled by the admin ([#18473](https://github.com/RocketChat/Rocket.Chat/pull/18473)) + + The option to disable/enable the **Two-factor authentication via Email** at `Account > Security > Two Factor Authentication + ` was visible even when the setting **Enable Two Factor Authentication via Email** at `Admin > Accounts > Two Factor Authentication` was disabled leading to misbehavior since the functionality was disabled. + +- Agents enabledDepartment attribute not set on collection ([#18614](https://github.com/RocketChat/Rocket.Chat/pull/18614) by [@paulobernardoaf](https://github.com/paulobernardoaf)) + +- Anonymous users were created as inactive if the manual approval setting was enabled ([#17427](https://github.com/RocketChat/Rocket.Chat/pull/17427)) + +- Auto complete user suggestions ([#18437](https://github.com/RocketChat/Rocket.Chat/pull/18437)) + + Fixes the issue with broken user suggestions in threads when using `@` + +- Backdrop on front of modal. ([#18596](https://github.com/RocketChat/Rocket.Chat/pull/18596)) + +- Custom fields title when no custom fields ([#18374](https://github.com/RocketChat/Rocket.Chat/pull/18374)) + +- Emojis on thread replies ([#18407](https://github.com/RocketChat/Rocket.Chat/pull/18407)) + + Users can now see the emojis on thread replies + +- Enabling Apple OAuth crashes other OAuth services ([#18563](https://github.com/RocketChat/Rocket.Chat/pull/18563)) + +- Error when reading uploads from Livechat Visitor through the Apps Engine ([#18474](https://github.com/RocketChat/Rocket.Chat/pull/18474)) + +- findOrCreateInvite REST endpoint ignoring `days` and `maxUses` params ([#18565](https://github.com/RocketChat/Rocket.Chat/pull/18565)) + +- Invalid sample JSON on admin settings ([#18595](https://github.com/RocketChat/Rocket.Chat/pull/18595)) + +- MarkdownText usage ([#18621](https://github.com/RocketChat/Rocket.Chat/pull/18621)) + +- Marking room as read with unread threads still ([#18410](https://github.com/RocketChat/Rocket.Chat/pull/18410)) + +- Random generated password not matching the Password Policy ([#18475](https://github.com/RocketChat/Rocket.Chat/pull/18475)) + + Generates a password with all the possible requirements of the Password Policy and matching the size limitations when enabled. + +- React being loaded on the main bundle ([#18597](https://github.com/RocketChat/Rocket.Chat/pull/18597)) + +- Read receipts duplicate key error ([#18560](https://github.com/RocketChat/Rocket.Chat/pull/18560) by [@galshiff](https://github.com/galshiff)) + + Fixed receipt duplicate key error bug + +- Room Mentions on Threads ([#18336](https://github.com/RocketChat/Rocket.Chat/pull/18336)) + +- Sending notifications from senders without a name ([#18479](https://github.com/RocketChat/Rocket.Chat/pull/18479)) + +- SMS integration not storing media files ([#18491](https://github.com/RocketChat/Rocket.Chat/pull/18491)) + +- Thread reply disappearing and threads result on search ([#18349](https://github.com/RocketChat/Rocket.Chat/pull/18349)) + +- UIKit Select and Multiselects not working ([#18598](https://github.com/RocketChat/Rocket.Chat/pull/18598)) + +- Uncaught (in promise) undefined ([#18393](https://github.com/RocketChat/Rocket.Chat/pull/18393)) + +- UserCard and UserInfo not respecting the setting to use real names ([#18628](https://github.com/RocketChat/Rocket.Chat/pull/18628)) + +- UserCard avatar cache (avatarETag) ([#18466](https://github.com/RocketChat/Rocket.Chat/pull/18466)) + +- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594)) + +- Wrong rooms list order when last message date is missing ([#18639](https://github.com/RocketChat/Rocket.Chat/pull/18639)) + +
+🔍 Minor changes + + +- Add new enterprise bundle option `omnichannel-mobile-enterprise` ([#18533](https://github.com/RocketChat/Rocket.Chat/pull/18533)) + +- Add type checking to CI ([#18411](https://github.com/RocketChat/Rocket.Chat/pull/18411)) + +- Bump bcrypt from 3.0.7 to 5.0.0 ([#18622](https://github.com/RocketChat/Rocket.Chat/pull/18622) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Defer startup checks ([#18547](https://github.com/RocketChat/Rocket.Chat/pull/18547)) + +- Do not retry and log warning when push notification was not authorised ([#18562](https://github.com/RocketChat/Rocket.Chat/pull/18562)) + +- Explain why issue is closed when not using an issue template ([#18420](https://github.com/RocketChat/Rocket.Chat/pull/18420)) + +- Fix typo in setting description ([#18476](https://github.com/RocketChat/Rocket.Chat/pull/18476)) + +- Improve performance of client presence monitor ([#18645](https://github.com/RocketChat/Rocket.Chat/pull/18645)) + +- LingoHub based on develop ([#18586](https://github.com/RocketChat/Rocket.Chat/pull/18586)) + +- LingoHub based on develop ([#18516](https://github.com/RocketChat/Rocket.Chat/pull/18516)) + +- LingoHub based on develop ([#18465](https://github.com/RocketChat/Rocket.Chat/pull/18465)) + +- Merge master into develop & Set version to 3.6.0-develop ([#18401](https://github.com/RocketChat/Rocket.Chat/pull/18401) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@omarchehab98](https://github.com/omarchehab98) & [@paulobernardoaf](https://github.com/paulobernardoaf)) + +- Missing email notification when an admin resets your E2E key ([#18673](https://github.com/RocketChat/Rocket.Chat/pull/18673)) + +- Omnichannel Admin rewritten in React (#18438) ([#18438](https://github.com/RocketChat/Rocket.Chat/pull/18438)) + +- Prevent directory API to return emails if the user has no permission ([#18478](https://github.com/RocketChat/Rocket.Chat/pull/18478)) + +- Reduce Push Notifications retry from max 31 hours to max 31 minutes ([#18558](https://github.com/RocketChat/Rocket.Chat/pull/18558)) + + Previews logic was retring in **0.1s, 1s, 11s, 2m, 18m, 3h and 31h**, now it’s retrying in **1m, 3m, 7m, 15m and 31m** + +- Regression: Accept visitors for uikit interactions ([#18706](https://github.com/RocketChat/Rocket.Chat/pull/18706)) + +- Regression: Add remove popup to omnichannel custom fields ([#18719](https://github.com/RocketChat/Rocket.Chat/pull/18719)) + +- Regression: Agents Page issues ([#18684](https://github.com/RocketChat/Rocket.Chat/pull/18684)) + +- Regression: Bundle the package `hepburn` ([#18715](https://github.com/RocketChat/Rocket.Chat/pull/18715)) + +- Regression: Fix room avatar file name ([#18544](https://github.com/RocketChat/Rocket.Chat/pull/18544)) + +- Regression: Omnichannel Business Hours Issues ([#18723](https://github.com/RocketChat/Rocket.Chat/pull/18723)) + +- Regression: Omnichannel Current Chat issues ([#18718](https://github.com/RocketChat/Rocket.Chat/pull/18718)) + +- Regression: Omnichannel Tags and Units issues ([#18705](https://github.com/RocketChat/Rocket.Chat/pull/18705)) + +- Regression: Priorities Page issues ([#18685](https://github.com/RocketChat/Rocket.Chat/pull/18685)) + +- Regression: Revert silent: true ([#18671](https://github.com/RocketChat/Rocket.Chat/pull/18671)) + +- Regression: Split date fields on export messages contextual bar ([#18724](https://github.com/RocketChat/Rocket.Chat/pull/18724)) + +- Regression: Toast Messages ([#18674](https://github.com/RocketChat/Rocket.Chat/pull/18674)) + +- Regression: UI margins on Export Messages ([#18682](https://github.com/RocketChat/Rocket.Chat/pull/18682)) + +- Regression: Update checker not being disabled properly. ([#18676](https://github.com/RocketChat/Rocket.Chat/pull/18676)) + +- Regression: Use user autocomplete on export messages ([#18726](https://github.com/RocketChat/Rocket.Chat/pull/18726)) + +- Release 3.6.0 ([#18727](https://github.com/RocketChat/Rocket.Chat/pull/18727) by [@oguhpereira](https://github.com/oguhpereira) & [@thirsch](https://github.com/thirsch)) + +- Set default timeout of 20s for HTTP calls ([#18549](https://github.com/RocketChat/Rocket.Chat/pull/18549)) + +- Update Apps-Engine version ([#18641](https://github.com/RocketChat/Rocket.Chat/pull/18641)) + +- Update dependencies ([#18593](https://github.com/RocketChat/Rocket.Chat/pull/18593)) + +- Update README.md ([#18503](https://github.com/RocketChat/Rocket.Chat/pull/18503)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@antkaz](https://github.com/antkaz) +- [@densik](https://github.com/densik) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@dudizilla](https://github.com/dudizilla) +- [@galshiff](https://github.com/galshiff) +- [@oguhpereira](https://github.com/oguhpereira) +- [@omarchehab98](https://github.com/omarchehab98) +- [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@thirsch](https://github.com/thirsch) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@Sing-Li](https://github.com/Sing-Li) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@juliagrala](https://github.com/juliagrala) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.5.4 +`2020-08-24 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.16.0` + +### 🐛 Bug fixes + + +- MarkdownText usage ([#18621](https://github.com/RocketChat/Rocket.Chat/pull/18621)) + +
+🔍 Minor changes + + +- Release 3.5.4 ([#18665](https://github.com/RocketChat/Rocket.Chat/pull/18665)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.5.3 +`2020-08-19 · 3 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.16.0` + +### 🐛 Bug fixes + + +- React being loaded on the main bundle ([#18597](https://github.com/RocketChat/Rocket.Chat/pull/18597)) + +- UIKit Select and Multiselects not working ([#18598](https://github.com/RocketChat/Rocket.Chat/pull/18598)) + +- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594)) + +
+🔍 Minor changes + + +- Release 3.5.3 ([#18610](https://github.com/RocketChat/Rocket.Chat/pull/18610)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.5.2 +`2020-08-13 · 1 🐛 · 2 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.16.0` + +### 🐛 Bug fixes + + +- Sending notifications from senders without a name ([#18479](https://github.com/RocketChat/Rocket.Chat/pull/18479)) + +
+🔍 Minor changes + + +- Defer startup checks ([#18547](https://github.com/RocketChat/Rocket.Chat/pull/18547)) + +- Release 3.5.2 ([#18548](https://github.com/RocketChat/Rocket.Chat/pull/18548)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.5.1 +`2020-08-03 · 8 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.16.0` + +### 🐛 Bug fixes + + +- Appending 'false' to Jitsi URL ([#18430](https://github.com/RocketChat/Rocket.Chat/pull/18430)) + +- Can't send long messages as attachment ([#18355](https://github.com/RocketChat/Rocket.Chat/pull/18355)) + +- Error when updating omnichannel department without agents parameter ([#18428](https://github.com/RocketChat/Rocket.Chat/pull/18428)) + +- Invalid MIME type when uploading audio files ([#18426](https://github.com/RocketChat/Rocket.Chat/pull/18426)) + +- Migration 194 ([#18457](https://github.com/RocketChat/Rocket.Chat/pull/18457) by [@thirsch](https://github.com/thirsch)) + +- Multiple push notifications sent via native drivers ([#18442](https://github.com/RocketChat/Rocket.Chat/pull/18442)) + +- Omnichannel session monitor is not starting ([#18412](https://github.com/RocketChat/Rocket.Chat/pull/18412)) + +- Omnichannel Take Inquiry endpoint checking wrong permission ([#18446](https://github.com/RocketChat/Rocket.Chat/pull/18446)) + +
+🔍 Minor changes + + +- Release 3.5.1 ([#18452](https://github.com/RocketChat/Rocket.Chat/pull/18452) by [@thirsch](https://github.com/thirsch)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@thirsch](https://github.com/thirsch) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.5.0 +`2020-07-27 · 8 🎉 · 5 🚀 · 29 🐛 · 34 🔍 · 21 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.16.0` + +### 🎉 New features + + +- **ENTERPRISE:** Add support to license tags ([#18093](https://github.com/RocketChat/Rocket.Chat/pull/18093)) + + Enterprise installations will show tags on Admin panel with the type of the license applied. The tag will be visible on the top-left corner of the administration area as a badge helping administrators to identify which license they have. + +- **ENTERPRISE:** Push Notification Data Privacy ([#18254](https://github.com/RocketChat/Rocket.Chat/pull/18254)) + +- Added profile field to inform Nickname for users in order to be searchable ([#18260](https://github.com/RocketChat/Rocket.Chat/pull/18260)) + + Nickname is a new user field that can be used to better identify users when searching for someone to add in a channel or do a mention. Useful for large organizations or countries where name repetition is common. + +- External MP3 encoder worker for audio recording ([#18277](https://github.com/RocketChat/Rocket.Chat/pull/18277)) + +- Sign in with apple (iOS client only) ([#18258](https://github.com/RocketChat/Rocket.Chat/pull/18258) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) + + Add Sign in with Apple service for the iOS client-only, support for the Web and Android clients will land in future releases. + +- Update Apps-Engine version ([#18271](https://github.com/RocketChat/Rocket.Chat/pull/18271)) + +- Update Apps-Engine version ([#18212](https://github.com/RocketChat/Rocket.Chat/pull/18212)) + +- User profile and User card ([#18194](https://github.com/RocketChat/Rocket.Chat/pull/18194)) + +### 🚀 Improvements + + +- Change setting that blocks unauthenticated access to avatar to public ([#18316](https://github.com/RocketChat/Rocket.Chat/pull/18316) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) + +- Improve performance and remove agents when the department is removed ([#17049](https://github.com/RocketChat/Rocket.Chat/pull/17049)) + +- List dropdown ([#18081](https://github.com/RocketChat/Rocket.Chat/pull/18081)) + +- Mention autocomplete UI and performance improvements ([#18309](https://github.com/RocketChat/Rocket.Chat/pull/18309)) + + * New setting to configure the number of suggestions `Admin > Layout > User Interface > Number of users' autocomplete suggestions` (default 5) + * The UI shows whenever the user is not a member of the room + * The UI shows when the suggestion came from the last messages for quick selection/reply + * The suggestions follow this order: + * The user with the exact username and member of the room + * The user with the exact username but not a member of the room (if allowed to list non-members) + * The users containing the text in username, name or nickname and member of the room + * The users containing the text in username, name or nickname and not a member of the room (if allowed to list non-members) + +- Message action styles ([#18190](https://github.com/RocketChat/Rocket.Chat/pull/18190)) + +### 🐛 Bug fixes + + +- "Join" button on thread when room is read only ([#18314](https://github.com/RocketChat/Rocket.Chat/pull/18314)) + +- App details returns to apps table, instead of previous page. ([#18080](https://github.com/RocketChat/Rocket.Chat/pull/18080)) + +- Application not loading due to reverse proxy decoding API calls unnecessarily ([#18222](https://github.com/RocketChat/Rocket.Chat/pull/18222)) + +- Apps page loading indefinitely if no Markeplace data ([#18274](https://github.com/RocketChat/Rocket.Chat/pull/18274)) + +- Bug on entering token in connectivity services ([#18317](https://github.com/RocketChat/Rocket.Chat/pull/18317)) + +- Cannot open admin when server uses ROOT_URL with subpath (#18105) ([#18147](https://github.com/RocketChat/Rocket.Chat/pull/18147) by [@omarchehab98](https://github.com/omarchehab98)) + +- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238)) + +- Clipboard not working when permalinking a pinned message ([#18047](https://github.com/RocketChat/Rocket.Chat/pull/18047)) + +- Closing the admin does not return to last opened room ([#18308](https://github.com/RocketChat/Rocket.Chat/pull/18308)) + +- Corrects Typo in Analytics section of the admin page ([#17984](https://github.com/RocketChat/Rocket.Chat/pull/17984) by [@darigovresearch](https://github.com/darigovresearch)) + +- Delete user warning message undefined ([#18310](https://github.com/RocketChat/Rocket.Chat/pull/18310)) + +- Don't show agent info in the transcript if the setting is disabled ([#18044](https://github.com/RocketChat/Rocket.Chat/pull/18044) by [@antkaz](https://github.com/antkaz)) + +- Error when fetching a nonexistent business hour from the server ([#18315](https://github.com/RocketChat/Rocket.Chat/pull/18315)) + +- Few adjustments to accept fuselage theme ([#18009](https://github.com/RocketChat/Rocket.Chat/pull/18009)) + +- File uploads for unknown file types but nothing is blocked ([#18263](https://github.com/RocketChat/Rocket.Chat/pull/18263) by [@20051231](https://github.com/20051231)) + +- Fix sticky notifications not working ([#18285](https://github.com/RocketChat/Rocket.Chat/pull/18285)) + +- Geolocation permission being asked on load ([#18030](https://github.com/RocketChat/Rocket.Chat/pull/18030)) + +- Local Account login error when both LDAP and Email 2FA are enabled ([#18318](https://github.com/RocketChat/Rocket.Chat/pull/18318)) + +- Merge user custom fields on LDAP sync ([#17339](https://github.com/RocketChat/Rocket.Chat/pull/17339) by [@tobiasge](https://github.com/tobiasge)) + +- Misleading labels in Prune Messages ([#18006](https://github.com/RocketChat/Rocket.Chat/pull/18006)) + +- Missing Privacy Terms Cloud Register warning ([#18383](https://github.com/RocketChat/Rocket.Chat/pull/18383)) + +- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185)) + +- Push gateway and cloud integration ([#18377](https://github.com/RocketChat/Rocket.Chat/pull/18377)) + +- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224)) + +- SAML login saves invalid username when receiving multiple values ([#18213](https://github.com/RocketChat/Rocket.Chat/pull/18213)) + +- SlackBridge error ([#18320](https://github.com/RocketChat/Rocket.Chat/pull/18320)) + +- Update check not able to be disabled ([#18339](https://github.com/RocketChat/Rocket.Chat/pull/18339)) + + Update checker can now be disabled. + +- Update link URL at AppsWhatIsIt ([#18240](https://github.com/RocketChat/Rocket.Chat/pull/18240)) + +- View close uikit event sending wrong payload ([#18289](https://github.com/RocketChat/Rocket.Chat/pull/18289)) + +
+🔍 Minor changes + + +- Broken link on readme ([#18358](https://github.com/RocketChat/Rocket.Chat/pull/18358)) + +- LingoHub based on develop ([#18307](https://github.com/RocketChat/Rocket.Chat/pull/18307)) + +- LingoHub based on develop ([#18176](https://github.com/RocketChat/Rocket.Chat/pull/18176)) + +- Merge master into develop & Set version to 3.5.0-develop ([#18083](https://github.com/RocketChat/Rocket.Chat/pull/18083) by [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Move the development guidelines to our handbook ([#18026](https://github.com/RocketChat/Rocket.Chat/pull/18026)) + +- Regression - Profile page crashing for users without password ([#18287](https://github.com/RocketChat/Rocket.Chat/pull/18287)) + +- Regression: Account Sidebar not rendering properly ([#18288](https://github.com/RocketChat/Rocket.Chat/pull/18288)) + +- Regression: Admin User password ([#18350](https://github.com/RocketChat/Rocket.Chat/pull/18350)) + +- Regression: Close UserCard if action opens a new page ([#18319](https://github.com/RocketChat/Rocket.Chat/pull/18319)) + +- Regression: Edit messages after opening thread ([#18375](https://github.com/RocketChat/Rocket.Chat/pull/18375)) + +- Regression: Fix defaultFields for null values ([#18360](https://github.com/RocketChat/Rocket.Chat/pull/18360)) + +- Regression: Fix useUserSubscription usage ([#18378](https://github.com/RocketChat/Rocket.Chat/pull/18378)) + +- Regression: Mentions in thread title ([#18369](https://github.com/RocketChat/Rocket.Chat/pull/18369)) + +- Regression: Message actions under "unread messages" warning ([#18273](https://github.com/RocketChat/Rocket.Chat/pull/18273)) + +- Regression: MP3 worker ([#18371](https://github.com/RocketChat/Rocket.Chat/pull/18371)) + +- Regression: nickname field in user profile. ([#18359](https://github.com/RocketChat/Rocket.Chat/pull/18359)) + +- Regression: Notification with id-only isn't showed by iOS devices ([#18353](https://github.com/RocketChat/Rocket.Chat/pull/18353) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) + +- Regression: Preferences crashing when User has no preferences set. ([#18341](https://github.com/RocketChat/Rocket.Chat/pull/18341)) + +- Regression: Provide a fallback text when push notification is idOnly ([#18373](https://github.com/RocketChat/Rocket.Chat/pull/18373) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) + +- Regression: Remove calls to Console API in useForm hook ([#18244](https://github.com/RocketChat/Rocket.Chat/pull/18244)) + +- Regression: Return original message on push API ([#18386](https://github.com/RocketChat/Rocket.Chat/pull/18386)) + +- Regression: Thread Title not being escaped ([#18356](https://github.com/RocketChat/Rocket.Chat/pull/18356)) + +- Regression: User Status selector ([#18343](https://github.com/RocketChat/Rocket.Chat/pull/18343)) + +- Regression: Userinfo center avatar image ([#18354](https://github.com/RocketChat/Rocket.Chat/pull/18354)) + +- Regression: useStorage ([#18370](https://github.com/RocketChat/Rocket.Chat/pull/18370)) + +- Regression: useUserContext ([#18385](https://github.com/RocketChat/Rocket.Chat/pull/18385)) + +- Regression: Wrong background in disabled inputs ([#18372](https://github.com/RocketChat/Rocket.Chat/pull/18372)) + +- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98)) + +- Rewrite Contextual Bar Discussion List in React ([#18127](https://github.com/RocketChat/Rocket.Chat/pull/18127)) + +- Rewrite: My Account > Integrations rewritten ([#18290](https://github.com/RocketChat/Rocket.Chat/pull/18290)) + +- Rewrite: My Account using React ([#18106](https://github.com/RocketChat/Rocket.Chat/pull/18106)) + +- Update Apps Engine ([#18389](https://github.com/RocketChat/Rocket.Chat/pull/18389)) + +- Update Apps-Engine to Beta version ([#18294](https://github.com/RocketChat/Rocket.Chat/pull/18294)) + +- Update the API of React Hooks using Meteor's reactive system ([#18226](https://github.com/RocketChat/Rocket.Chat/pull/18226)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@20051231](https://github.com/20051231) +- [@antkaz](https://github.com/antkaz) +- [@cking-vonix](https://github.com/cking-vonix) +- [@darigovresearch](https://github.com/darigovresearch) +- [@djorkaeffalexandre](https://github.com/djorkaeffalexandre) +- [@lpilz](https://github.com/lpilz) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@omarchehab98](https://github.com/omarchehab98) +- [@tobiasge](https://github.com/tobiasge) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.4.2 +`2020-07-10 · 6 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.15.0` + +### 🐛 Bug fixes + + +- App details returns to apps table, instead of previous page. ([#18080](https://github.com/RocketChat/Rocket.Chat/pull/18080)) + +- Application not loading due to reverse proxy decoding API calls unnecessarily ([#18222](https://github.com/RocketChat/Rocket.Chat/pull/18222)) + +- Cannot open admin when server uses ROOT_URL with subpath (#18105) ([#18147](https://github.com/RocketChat/Rocket.Chat/pull/18147) by [@omarchehab98](https://github.com/omarchehab98)) + +- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238)) + +- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185)) + +- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224)) + +
+🔍 Minor changes + + +- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@omarchehab98](https://github.com/omarchehab98) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@rodrigok](https://github.com/rodrigok) + +# 3.4.1 +`2020-07-02 · 7 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.15.0` + +### 🐛 Bug fixes + + +- "Add reaction" icon missing when the viewport size is smaller than 500px ([#18110](https://github.com/RocketChat/Rocket.Chat/pull/18110) by [@dudizilla](https://github.com/dudizilla)) + +- Avatar ETag missing from User ([#18109](https://github.com/RocketChat/Rocket.Chat/pull/18109)) + +- Email notifications were still being sent for online users ([#18088](https://github.com/RocketChat/Rocket.Chat/pull/18088) by [@densik](https://github.com/densik)) + +- Jitsi opening twice ([#18111](https://github.com/RocketChat/Rocket.Chat/pull/18111)) + +- Not possible to read encrypted messages after disable E2E on channel level ([#18101](https://github.com/RocketChat/Rocket.Chat/pull/18101)) + +- Omnichannel close room callback returning promise ([#18102](https://github.com/RocketChat/Rocket.Chat/pull/18102)) + +- The livechat agent activity monitor wasn't being initialised because due to an internal error ([#18090](https://github.com/RocketChat/Rocket.Chat/pull/18090) by [@paulobernardoaf](https://github.com/paulobernardoaf)) + +
+🔍 Minor changes + + +- Release 3.4.1 ([#18134](https://github.com/RocketChat/Rocket.Chat/pull/18134) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@paulobernardoaf](https://github.com/paulobernardoaf)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@densik](https://github.com/densik) +- [@dudizilla](https://github.com/dudizilla) +- [@paulobernardoaf](https://github.com/paulobernardoaf) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.4.0 +`2020-06-30 · 18 🎉 · 19 🚀 · 42 🐛 · 52 🔍 · 52 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.15.0` + +### 🎉 New features + + +- **API:** Add `interation.update` endpoint ([#13618](https://github.com/RocketChat/Rocket.Chat/pull/13618) by [@tonobo](https://github.com/tonobo)) + +- **API:** Endpoint `groups.setEncrypted` ([#13477](https://github.com/RocketChat/Rocket.Chat/pull/13477)) + +- **API:** Endpoint `settings.addCustomOAuth` to create Custom OAuth services ([#14912](https://github.com/RocketChat/Rocket.Chat/pull/14912) by [@g-rauhoeft](https://github.com/g-rauhoeft)) + +- **API:** New endpoints to manage User Custom Status `custom-user-status.create`, custom-user-status.delete` and `custom-user-status.update` ([#16550](https://github.com/RocketChat/Rocket.Chat/pull/16550) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- **ENTERPRISE:** Download engagement data ([#17920](https://github.com/RocketChat/Rocket.Chat/pull/17920)) + +- **ENTERPRISE:** Omnichannel multiple business hours ([#17947](https://github.com/RocketChat/Rocket.Chat/pull/17947)) + +- Ability to configure Jitsi room options via new setting `URL Suffix` ([#17950](https://github.com/RocketChat/Rocket.Chat/pull/17950) by [@fthiery](https://github.com/fthiery)) + +- Accept variable `#{userdn}` on LDAP group filter ([#16273](https://github.com/RocketChat/Rocket.Chat/pull/16273) by [@ChrissW-R1](https://github.com/ChrissW-R1)) + +- Add ability to block failed login attempts by user and IP ([#17783](https://github.com/RocketChat/Rocket.Chat/pull/17783)) + +- Allows agents to send chat transcript to omnichannel end-users ([#17774](https://github.com/RocketChat/Rocket.Chat/pull/17774)) + +- Assign oldest active user as owner when deleting last room owner ([#16088](https://github.com/RocketChat/Rocket.Chat/pull/16088)) + +- Blocked Media Types setting ([#17617](https://github.com/RocketChat/Rocket.Chat/pull/17617)) + +- Highlight matching words in message search results ([#16166](https://github.com/RocketChat/Rocket.Chat/pull/16166) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Make ldap avatar source field customizable ([#12958](https://github.com/RocketChat/Rocket.Chat/pull/12958) by [@alexbartsch](https://github.com/alexbartsch)) + +- Reply notification email to sender's email when the Direct Reply feature is disabled ([#15767](https://github.com/RocketChat/Rocket.Chat/pull/15767) by [@localguru](https://github.com/localguru)) + +- Rewrite Apps ([#17906](https://github.com/RocketChat/Rocket.Chat/pull/17906)) + +- Setting to determine if the LDAP user active state should be synced ([#17645](https://github.com/RocketChat/Rocket.Chat/pull/17645)) + +- Skip Export Operations that haven't been updated in over a day ([#16135](https://github.com/RocketChat/Rocket.Chat/pull/16135)) + +### 🚀 Improvements + + +- **Federation:** Add support for _tcp and protocol DNS entries ([#17818](https://github.com/RocketChat/Rocket.Chat/pull/17818)) + +- **Performance:** Add new database indexes to improve data query performance ([#17839](https://github.com/RocketChat/Rocket.Chat/pull/17839)) + +- Add rate limiter to UiKit endpoints ([#17859](https://github.com/RocketChat/Rocket.Chat/pull/17859)) + +- Allow webhook message to respond in thread ([#17863](https://github.com/RocketChat/Rocket.Chat/pull/17863) by [@Karting06](https://github.com/Karting06)) + +- Change default upload settings to only block SVG files ([#17933](https://github.com/RocketChat/Rocket.Chat/pull/17933)) + +- Don't send emails to online users and remove delay when away/idle ([#17907](https://github.com/RocketChat/Rocket.Chat/pull/17907)) + +- Make the implementation of custom code easier by having placeholders for a custom folder ([#15106](https://github.com/RocketChat/Rocket.Chat/pull/15106) by [@justinr1234](https://github.com/justinr1234)) + +- Performance editing Admin settings ([#17916](https://github.com/RocketChat/Rocket.Chat/pull/17916)) + +- React hooks lint rules ([#17941](https://github.com/RocketChat/Rocket.Chat/pull/17941)) + +- Refactor Omnichannel Office Hours feature ([#17824](https://github.com/RocketChat/Rocket.Chat/pull/17824)) + +- Refactor Omnichannel Past Chats List ([#17346](https://github.com/RocketChat/Rocket.Chat/pull/17346) by [@nitinkumartiwari](https://github.com/nitinkumartiwari)) + +- Rewrite admin sidebar in React ([#17801](https://github.com/RocketChat/Rocket.Chat/pull/17801)) + +- Rewrite Federation Dashboard ([#17900](https://github.com/RocketChat/Rocket.Chat/pull/17900)) + +- SAML implementation ([#17742](https://github.com/RocketChat/Rocket.Chat/pull/17742)) + +- Slack import: Parse channel and user mentions ([#17637](https://github.com/RocketChat/Rocket.Chat/pull/17637)) + +- Split NOTIFICATIONS_SCHEDULE_DELAY into three separate variables ([#17669](https://github.com/RocketChat/Rocket.Chat/pull/17669) by [@jazztickets](https://github.com/jazztickets)) + + Email notification delay can now be customized with the following environment variables: + NOTIFICATIONS_SCHEDULE_DELAY_ONLINE + NOTIFICATIONS_SCHEDULE_DELAY_AWAY + NOTIFICATIONS_SCHEDULE_DELAY_OFFLINE + Setting the value to -1 disable notifications for that type. + +- Threads ([#17416](https://github.com/RocketChat/Rocket.Chat/pull/17416)) + +- Use REST for DDP calls by default ([#17934](https://github.com/RocketChat/Rocket.Chat/pull/17934)) + +- User avatar cache invalidation ([#17925](https://github.com/RocketChat/Rocket.Chat/pull/17925)) + +### 🐛 Bug fixes + + +- Add Authorization Bearer to allowed Headers ([#8566](https://github.com/RocketChat/Rocket.Chat/pull/8566) by [@Siedlerchr](https://github.com/Siedlerchr)) + +- Add missing i18n entry for LDAP connection test success message ([#17691](https://github.com/RocketChat/Rocket.Chat/pull/17691) by [@AbhinavTalari](https://github.com/AbhinavTalari)) + +- Added explicit server oembed provider for Twitter ([#17954](https://github.com/RocketChat/Rocket.Chat/pull/17954) by [@Cleod9](https://github.com/Cleod9)) + +- Autocomplete component is not working property when searching channels in the Livechat Departments form ([#17970](https://github.com/RocketChat/Rocket.Chat/pull/17970)) + +- Cannot react while "Allow reaction" is set to true ([#17964](https://github.com/RocketChat/Rocket.Chat/pull/17964)) + +- Channel/Room inconsistency for leave and hide options ([#10165](https://github.com/RocketChat/Rocket.Chat/pull/10165) by [@c0dzilla](https://github.com/c0dzilla)) + +- Close the user info context panel does not navigate back to the user's list ([#14085](https://github.com/RocketChat/Rocket.Chat/pull/14085) by [@mohamedar97](https://github.com/mohamedar97)) + +- Disabling `Json Web Tokens protection to file uploads` disables the File Upload protection entirely ([#16262](https://github.com/RocketChat/Rocket.Chat/pull/16262) by [@antkaz](https://github.com/antkaz)) + +- Discussion List paddings ([#17955](https://github.com/RocketChat/Rocket.Chat/pull/17955)) + +- Discussion not updating rooms list and not checking right permissions ([#17959](https://github.com/RocketChat/Rocket.Chat/pull/17959)) + +- Discussion sort option even with discussions disabled ([#17963](https://github.com/RocketChat/Rocket.Chat/pull/17963)) + +- double slashes in avatar url ([#17739](https://github.com/RocketChat/Rocket.Chat/pull/17739) by [@lolimay](https://github.com/lolimay)) + +- Duplicated password placeholder ([#17898](https://github.com/RocketChat/Rocket.Chat/pull/17898) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Encode custom oauth2 URL params ([#13373](https://github.com/RocketChat/Rocket.Chat/pull/13373) by [@InstinctBas](https://github.com/InstinctBas)) + +- Hide system message add/remove owner ([#17938](https://github.com/RocketChat/Rocket.Chat/pull/17938)) + +- Importers progress sending too much update events to clients ([#17857](https://github.com/RocketChat/Rocket.Chat/pull/17857)) + +- Link preview containing HTML encoded chars ([#16512](https://github.com/RocketChat/Rocket.Chat/pull/16512)) + +- Links being escaped twice leading to visible encoded characters ([#16481](https://github.com/RocketChat/Rocket.Chat/pull/16481)) + +- Markdown links not accepting URLs with parentheses ([#13605](https://github.com/RocketChat/Rocket.Chat/pull/13605) by [@knrt10](https://github.com/knrt10)) + +- Message action popup doesn't adjust itself on screen resize ([#16508](https://github.com/RocketChat/Rocket.Chat/pull/16508) by [@ritvikjain99](https://github.com/ritvikjain99)) + +- Missing i18n key for setting: Verify Email for External Accounts ([#18002](https://github.com/RocketChat/Rocket.Chat/pull/18002)) + +- Missing pinned icon indicator for messages pinned ([#16448](https://github.com/RocketChat/Rocket.Chat/pull/16448) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Missing User when forwarding Omnichannel conversations via Apps-Engine ([#17918](https://github.com/RocketChat/Rocket.Chat/pull/17918)) + +- New Omnichannel Past Chats list padding ([#17994](https://github.com/RocketChat/Rocket.Chat/pull/17994)) + +- No rotate option, to prevent image quality loss ([#15196](https://github.com/RocketChat/Rocket.Chat/pull/15196) by [@stleitner](https://github.com/stleitner)) + +- No Way to Display Password Policy on Password Reset Screen ([#16400](https://github.com/RocketChat/Rocket.Chat/pull/16400) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Not possible to translate the label of custom fields in user's Info ([#15595](https://github.com/RocketChat/Rocket.Chat/pull/15595) by [@antkaz](https://github.com/antkaz)) + +- Outgoing webhook: Excessive spacing between trigger words ([#17830](https://github.com/RocketChat/Rocket.Chat/pull/17830) by [@Karting06](https://github.com/Karting06)) + +- Profile save button not activates properly when changing the username field ([#16541](https://github.com/RocketChat/Rocket.Chat/pull/16541) by [@ritvikjain99](https://github.com/ritvikjain99)) + +- ReadOnly Rooms permission checks ([#17709](https://github.com/RocketChat/Rocket.Chat/pull/17709)) + +- Reorder hljs ([#17854](https://github.com/RocketChat/Rocket.Chat/pull/17854)) + +- Set `x-content-type-options: nosniff` header ([#16232](https://github.com/RocketChat/Rocket.Chat/pull/16232) by [@aviral243](https://github.com/aviral243)) + +- Some Login Buttons disappear after refreshing OAuth Services ([#17808](https://github.com/RocketChat/Rocket.Chat/pull/17808)) + +- Spotify embed link opens in same tab ([#13637](https://github.com/RocketChat/Rocket.Chat/pull/13637) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- StreamCast stream to server only streamers ([#17942](https://github.com/RocketChat/Rocket.Chat/pull/17942)) + +- UI is not rendering when trying to edit an user ([#17972](https://github.com/RocketChat/Rocket.Chat/pull/17972)) + +- Undesirable message updates after user saving profile ([#17930](https://github.com/RocketChat/Rocket.Chat/pull/17930)) + +- Update AmazonS3 file upload with error handling and sync operation ([#10372](https://github.com/RocketChat/Rocket.Chat/pull/10372) by [@madhavmalhotra3089](https://github.com/madhavmalhotra3089)) + +- User can resend email verification if email is invalid or is empty ([#16095](https://github.com/RocketChat/Rocket.Chat/pull/16095) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- User is prompted to reset their password when logging with OAuth ([#18001](https://github.com/RocketChat/Rocket.Chat/pull/18001)) + +- Video conferences being started by users without permission ([#17948](https://github.com/RocketChat/Rocket.Chat/pull/17948)) + +- When the message is too long declining to send as an attachment does not restore the content into the composer ([#16332](https://github.com/RocketChat/Rocket.Chat/pull/16332)) + +
+🔍 Minor changes + + +- Add Apps to control GitHub issues ([#17807](https://github.com/RocketChat/Rocket.Chat/pull/17807)) + +- Add Apps-Engine to Engine Versions on History ([#17810](https://github.com/RocketChat/Rocket.Chat/pull/17810)) + +- Always initialize CIRCLE_BRANCH env var on CI ([#17874](https://github.com/RocketChat/Rocket.Chat/pull/17874)) + +- Bump websocket-extensions from 0.1.3 to 0.1.4 ([#17837](https://github.com/RocketChat/Rocket.Chat/pull/17837) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Change some components' location ([#17893](https://github.com/RocketChat/Rocket.Chat/pull/17893)) + +- Chatpal: limit results to current room ([#17718](https://github.com/RocketChat/Rocket.Chat/pull/17718) by [@mrsimpson](https://github.com/mrsimpson)) + + Adds an option to Chatpal Search to limit results to the current room searched from + +- Do not build Docker image for fork PRs ([#17370](https://github.com/RocketChat/Rocket.Chat/pull/17370)) + +- Federation performance and bug fixes ([#17504](https://github.com/RocketChat/Rocket.Chat/pull/17504) by [@hyfen](https://github.com/hyfen)) + +- Fix invalid develop payload to release service ([#17799](https://github.com/RocketChat/Rocket.Chat/pull/17799)) + +- Fix typo "coorosponding" ([#17840](https://github.com/RocketChat/Rocket.Chat/pull/17840) by [@toshokan](https://github.com/toshokan)) + + Fix typo on English LDAP page + +- Fix typo on Contributing.md ([#17769](https://github.com/RocketChat/Rocket.Chat/pull/17769) by [@onurtemiz](https://github.com/onurtemiz)) + + Typo fixes on contributing page. + +- Fixes some italian wording ([#14008](https://github.com/RocketChat/Rocket.Chat/pull/14008) by [@dadokkio](https://github.com/dadokkio)) + +- LDAP typo ([#17835](https://github.com/RocketChat/Rocket.Chat/pull/17835) by [@thomas-mc-work](https://github.com/thomas-mc-work)) + +- LingoHub based on develop ([#17796](https://github.com/RocketChat/Rocket.Chat/pull/17796)) + +- Merge master into develop & Set version to 3.4.0-develop ([#17764](https://github.com/RocketChat/Rocket.Chat/pull/17764) by [@lpilz](https://github.com/lpilz) & [@mtmr0x](https://github.com/mtmr0x)) + +- Readme: Update Raspberry Pi 2 to Pi 4 ([#17031](https://github.com/RocketChat/Rocket.Chat/pull/17031) by [@EwoutH](https://github.com/EwoutH)) + +- Refactor components and views to Storybook compatibility ([#17800](https://github.com/RocketChat/Rocket.Chat/pull/17800)) + +- Regresion: Issue with reply button on broadcast channels ([#18057](https://github.com/RocketChat/Rocket.Chat/pull/18057)) + +- Regression - Incoming WebHook messages not showing up on the channel ([#18005](https://github.com/RocketChat/Rocket.Chat/pull/18005)) + +- Regression - Unable to edit status on the Edit User panel of the admin ([#18032](https://github.com/RocketChat/Rocket.Chat/pull/18032)) + +- Regression: Admin User Edit panel is broken ([#17992](https://github.com/RocketChat/Rocket.Chat/pull/17992)) + +- Regression: App info broken ([#17979](https://github.com/RocketChat/Rocket.Chat/pull/17979) by [@lolimay](https://github.com/lolimay)) + +- Regression: Cannot save avatar change on admin ([#17999](https://github.com/RocketChat/Rocket.Chat/pull/17999)) + +- Regression: Deprecate check permission on integrations ([#18024](https://github.com/RocketChat/Rocket.Chat/pull/18024)) + +- Regression: Favorite and Featured fields not triggering changes ([#18010](https://github.com/RocketChat/Rocket.Chat/pull/18010)) + +- Regression: Fix AWS S3 file retrieval ([#17982](https://github.com/RocketChat/Rocket.Chat/pull/17982)) + +- Regression: Fix exit-room on livechat ([#18067](https://github.com/RocketChat/Rocket.Chat/pull/18067)) + +- Regression: Fix mentions on thread preview ([#18071](https://github.com/RocketChat/Rocket.Chat/pull/18071)) + +- Regression: Fix setting reply-to email header ([#18008](https://github.com/RocketChat/Rocket.Chat/pull/18008)) + +- Regression: Fix threads badge color indicators ([#18048](https://github.com/RocketChat/Rocket.Chat/pull/18048)) + +- Regression: Fix update last message on delete ([#18077](https://github.com/RocketChat/Rocket.Chat/pull/18077)) + +- Regression: Fix wrong message grouping inside threads ([#18039](https://github.com/RocketChat/Rocket.Chat/pull/18039)) + +- Regression: Grouping Thread messages ([#18042](https://github.com/RocketChat/Rocket.Chat/pull/18042)) + +- Regression: Image Upload not working ([#17993](https://github.com/RocketChat/Rocket.Chat/pull/17993)) + +- Regression: Improve Omnichannel Business Hours ([#18050](https://github.com/RocketChat/Rocket.Chat/pull/18050)) + +- Regression: Improve the logic to get request IPs ([#18033](https://github.com/RocketChat/Rocket.Chat/pull/18033)) + +- Regression: Infinite loop in CodeSettingInput ([#17949](https://github.com/RocketChat/Rocket.Chat/pull/17949)) + +- Regression: Infinite render loop on Setup Wizard ([#18074](https://github.com/RocketChat/Rocket.Chat/pull/18074)) + +- Regression: Only add reply-to if sender has emails ([#17998](https://github.com/RocketChat/Rocket.Chat/pull/17998)) + +- Regression: Repair CodeMirror component reactivity ([#18037](https://github.com/RocketChat/Rocket.Chat/pull/18037)) + +- Regression: Reset section button ([#18007](https://github.com/RocketChat/Rocket.Chat/pull/18007)) + +- Regression: Room flickering if open a thread ([#18004](https://github.com/RocketChat/Rocket.Chat/pull/18004)) + +- Regression: Wrong padding and colors on some tabs ([#18068](https://github.com/RocketChat/Rocket.Chat/pull/18068)) + +- Release 3.3.3 ([#17875](https://github.com/RocketChat/Rocket.Chat/pull/17875)) + +- Remove unused accounts-js integration ([#17921](https://github.com/RocketChat/Rocket.Chat/pull/17921)) + +- Remove useLazyRef hook usage ([#18003](https://github.com/RocketChat/Rocket.Chat/pull/18003)) + +- Revert "Regression: Fix wrong message grouping inside threads" ([#18043](https://github.com/RocketChat/Rocket.Chat/pull/18043)) + +- Submit a payload to the release service when a release happens ([#17775](https://github.com/RocketChat/Rocket.Chat/pull/17775)) + +- Update Dockerfile to not depend on custom base image ([#17802](https://github.com/RocketChat/Rocket.Chat/pull/17802)) + +- Update stale bot to v3 and run every 6 hours ([#17958](https://github.com/RocketChat/Rocket.Chat/pull/17958)) + +- Upgrade Livechat Widget version to 1.6.0 ([#18070](https://github.com/RocketChat/Rocket.Chat/pull/18070)) + +- Wrap Info Page components with React.memo ([#17899](https://github.com/RocketChat/Rocket.Chat/pull/17899)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AbhinavTalari](https://github.com/AbhinavTalari) +- [@ChrissW-R1](https://github.com/ChrissW-R1) +- [@Cleod9](https://github.com/Cleod9) +- [@EwoutH](https://github.com/EwoutH) +- [@InstinctBas](https://github.com/InstinctBas) +- [@Karting06](https://github.com/Karting06) +- [@Siedlerchr](https://github.com/Siedlerchr) +- [@alexbartsch](https://github.com/alexbartsch) +- [@antkaz](https://github.com/antkaz) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@aviral243](https://github.com/aviral243) +- [@bhardwajaditya](https://github.com/bhardwajaditya) +- [@c0dzilla](https://github.com/c0dzilla) +- [@dadokkio](https://github.com/dadokkio) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@fthiery](https://github.com/fthiery) +- [@g-rauhoeft](https://github.com/g-rauhoeft) +- [@hyfen](https://github.com/hyfen) +- [@jazztickets](https://github.com/jazztickets) +- [@justinr1234](https://github.com/justinr1234) +- [@knrt10](https://github.com/knrt10) +- [@localguru](https://github.com/localguru) +- [@lolimay](https://github.com/lolimay) +- [@lpilz](https://github.com/lpilz) +- [@madhavmalhotra3089](https://github.com/madhavmalhotra3089) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@mohamedar97](https://github.com/mohamedar97) +- [@mrsimpson](https://github.com/mrsimpson) +- [@mtmr0x](https://github.com/mtmr0x) +- [@nitinkumartiwari](https://github.com/nitinkumartiwari) +- [@onurtemiz](https://github.com/onurtemiz) +- [@ritvikjain99](https://github.com/ritvikjain99) +- [@stleitner](https://github.com/stleitner) +- [@thomas-mc-work](https://github.com/thomas-mc-work) +- [@tonobo](https://github.com/tonobo) +- [@toshokan](https://github.com/toshokan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@Sing-Li](https://github.com/Sing-Li) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.3.3 +`2020-06-11 · 2 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.15.0` + +
+🔍 Minor changes + + +- Always initialize CIRCLE_BRANCH env var on CI ([#17874](https://github.com/RocketChat/Rocket.Chat/pull/17874)) + +- Release 3.3.3 ([#17875](https://github.com/RocketChat/Rocket.Chat/pull/17875)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.3.2 +`2020-06-10 · 3 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.15.0` + +
+🔍 Minor changes + + +- Fix invalid develop payload to release service ([#17799](https://github.com/RocketChat/Rocket.Chat/pull/17799)) + +- Release 3.3.2 ([#17870](https://github.com/RocketChat/Rocket.Chat/pull/17870)) + +- Submit a payload to the release service when a release happens ([#17775](https://github.com/RocketChat/Rocket.Chat/pull/17775)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@graywolf336](https://github.com/graywolf336) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.3.1 +`2020-06-10 · 8 🐛 · 4 🔍 · 10 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.15.0` + +### 🐛 Bug fixes + + +- Administration User page blank opening users without email ([#17836](https://github.com/RocketChat/Rocket.Chat/pull/17836) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Apps room events losing data ([#17827](https://github.com/RocketChat/Rocket.Chat/pull/17827)) + +- Email link "go to message" being incorrectly escaped ([#17803](https://github.com/RocketChat/Rocket.Chat/pull/17803)) + +- Error when re-installing an App ([#17789](https://github.com/RocketChat/Rocket.Chat/pull/17789)) + +- Logic for room type was inverted on Admin panel (#17851) ([#17853](https://github.com/RocketChat/Rocket.Chat/pull/17853) by [@cking-vonix](https://github.com/cking-vonix)) + + Fixed logic for public/private room types on room edit panel + +- Omnichannel message link is broken in email notifications ([#17843](https://github.com/RocketChat/Rocket.Chat/pull/17843)) + +- SAML LogoutRequest sending wrong NameID ([#17860](https://github.com/RocketChat/Rocket.Chat/pull/17860)) + +- Slack importer settings object ([#17776](https://github.com/RocketChat/Rocket.Chat/pull/17776) by [@lpilz](https://github.com/lpilz)) + +
+🔍 Minor changes + + +- [REGRESSION] Omnichannel visitor forward was applying wrong restrictions ([#17826](https://github.com/RocketChat/Rocket.Chat/pull/17826)) + +- Fix the update check not working ([#17809](https://github.com/RocketChat/Rocket.Chat/pull/17809)) + +- Release 3.3.1 ([#17865](https://github.com/RocketChat/Rocket.Chat/pull/17865) by [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Update Apps-Engine version ([#17804](https://github.com/RocketChat/Rocket.Chat/pull/17804)) + + Update Apps-Engine version + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cking-vonix](https://github.com/cking-vonix) +- [@lpilz](https://github.com/lpilz) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@graywolf336](https://github.com/graywolf336) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.3.0 +`2020-05-27 · 20 🎉 · 8 🚀 · 41 🐛 · 45 🔍 · 37 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.14.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🎉 New features + + +- **APPS-ENGINE:** Essentials mechanism ([#17656](https://github.com/RocketChat/Rocket.Chat/pull/17656)) + +- **Apps-Engine:** New Livechat event handlers ([#17033](https://github.com/RocketChat/Rocket.Chat/pull/17033) by [@lolimay](https://github.com/lolimay)) + +- **Apps-Engine:** New Room events ([#17487](https://github.com/RocketChat/Rocket.Chat/pull/17487)) + +- **ENTERPRISE:** Omnichannel Last-Chatted Agent Preferred option ([#17666](https://github.com/RocketChat/Rocket.Chat/pull/17666)) + + If activated, this feature will store the last agent that assisted each Omnichannel visitor when a conversation is taken. So, when a visitor returns(it works with any entry point, Livechat, Facebook, REST API, and so on) and starts a new chat, the routing system checks: + + 1 - The visitor object for any stored agent that the visitor has previously talked to; + 2 - If a previous agent is not found, the system will try to find a previous conversation of the same visitor. If a room is found, the system will get the previous agent from the room; + + After this process, if an agent has been found, the system will check the agent's availability to assist the new chat. If it's not available, then the routing system will get the next available agent in the queue. + +- **ENTERPRISE:** Support for custom Livechat registration form fields ([#17581](https://github.com/RocketChat/Rocket.Chat/pull/17581)) + +- **ENTERPRISE:** Support Omnichannel conversations auditing ([#17692](https://github.com/RocketChat/Rocket.Chat/pull/17692)) + +- Add Livechat website URL to the offline message e-mail ([#17429](https://github.com/RocketChat/Rocket.Chat/pull/17429)) + +- Add permissions to deal with Omnichannel custom fields ([#17567](https://github.com/RocketChat/Rocket.Chat/pull/17567)) + +- Add Permissions to deal with Omnichannel visitor past chats history ([#17580](https://github.com/RocketChat/Rocket.Chat/pull/17580)) + +- Add the ability to send Livechat offline messages to a channel ([#17442](https://github.com/RocketChat/Rocket.Chat/pull/17442)) + +- Added "Add custom emoji" link to emoji picker ([#16250](https://github.com/RocketChat/Rocket.Chat/pull/16250)) + +- Added custom fields to Add/Edit user ([#17681](https://github.com/RocketChat/Rocket.Chat/pull/17681)) + +- Admin refactor Second phase ([#17551](https://github.com/RocketChat/Rocket.Chat/pull/17551)) + +- Allow filtering Omnichannel analytics dashboards by department ([#17463](https://github.com/RocketChat/Rocket.Chat/pull/17463)) + +- API endpoint to fetch Omnichannel's room transfer history ([#17694](https://github.com/RocketChat/Rocket.Chat/pull/17694)) + +- Option to remove users from RocketChat if not found in Crowd ([#17619](https://github.com/RocketChat/Rocket.Chat/pull/17619) by [@ocanema](https://github.com/ocanema)) + +- Rewrite admin pages ([#17388](https://github.com/RocketChat/Rocket.Chat/pull/17388) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Screen Lock settings - mobile client ([#17523](https://github.com/RocketChat/Rocket.Chat/pull/17523) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) + +- Show user's status description by the usernames in messages list ([#14892](https://github.com/RocketChat/Rocket.Chat/pull/14892) by [@wreiske](https://github.com/wreiske)) + + ![image](https://user-images.githubusercontent.com/6295044/60321979-5d191580-994c-11e9-9cd6-15f4565ff0ae.png) + +- Unread bars on sidebar (#16853) ([#16862](https://github.com/RocketChat/Rocket.Chat/pull/16862) by [@juzser](https://github.com/juzser)) + +### 🚀 Improvements + + +- **Apps-Engine:** App user as the default notifier ([#17050](https://github.com/RocketChat/Rocket.Chat/pull/17050) by [@lolimay](https://github.com/lolimay)) + +- Add env var to configure Chatpal URL and remove it from beta ([#16665](https://github.com/RocketChat/Rocket.Chat/pull/16665) by [@tkurz](https://github.com/tkurz)) + +- Add new webhooks to the Omnichannel integration feature ([#17503](https://github.com/RocketChat/Rocket.Chat/pull/17503)) + +- Added divider between tables and paginations ([#17680](https://github.com/RocketChat/Rocket.Chat/pull/17680)) + +- Always shows the exact match first on user's and room's autocomplete for mentions and on sidebar search ([#16394](https://github.com/RocketChat/Rocket.Chat/pull/16394)) + +- Display status information in the Omnichannel Agents list ([#17701](https://github.com/RocketChat/Rocket.Chat/pull/17701)) + +- Starred Messages ([#17685](https://github.com/RocketChat/Rocket.Chat/pull/17685)) + +- Unused styles ([#17554](https://github.com/RocketChat/Rocket.Chat/pull/17554)) + +### 🐛 Bug fixes + + +- Agent's custom fields being leaked through the Livechat configuration endpoint ([#17640](https://github.com/RocketChat/Rocket.Chat/pull/17640)) + +- Allow owners to react inside broadcast channels ([#17687](https://github.com/RocketChat/Rocket.Chat/pull/17687) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Avatar url provider ignoring subfolders ([#17675](https://github.com/RocketChat/Rocket.Chat/pull/17675)) + +- Can't click on room's actions menu of sidebar list when in search mode ([#16548](https://github.com/RocketChat/Rocket.Chat/pull/16548) by [@ritvikjain99](https://github.com/ritvikjain99)) + +- Change email verification label ([#17450](https://github.com/RocketChat/Rocket.Chat/pull/17450)) + +- Default filters on Omnichannel Current Chats screen not showing on first load ([#17522](https://github.com/RocketChat/Rocket.Chat/pull/17522)) + +- Directory search user placeholder ([#17652](https://github.com/RocketChat/Rocket.Chat/pull/17652) by [@zdumitru](https://github.com/zdumitru)) + +- Do not allow passwords on private channels ([#15642](https://github.com/RocketChat/Rocket.Chat/pull/15642)) + +- Elements of "Personal Access Tokens" section out of alignment and unusable on very small screens ([#17129](https://github.com/RocketChat/Rocket.Chat/pull/17129) by [@Nikhil713](https://github.com/Nikhil713)) + +- Email configs not updating after setting changes ([#17578](https://github.com/RocketChat/Rocket.Chat/pull/17578)) + +- Emoji picker search broken ([#17570](https://github.com/RocketChat/Rocket.Chat/pull/17570)) + +- Error during data export for DMs ([#17577](https://github.com/RocketChat/Rocket.Chat/pull/17577) by [@mtmr0x](https://github.com/mtmr0x)) + +- Federation attachment URL for audio and video files ([#16430](https://github.com/RocketChat/Rocket.Chat/pull/16430) by [@qwertiko](https://github.com/qwertiko)) + +- Hyper.sh went out of business in early 2019 ([#17622](https://github.com/RocketChat/Rocket.Chat/pull/17622) by [@fbartels](https://github.com/fbartels)) + +- Increasing highlight time in 3 seconds ([#17540](https://github.com/RocketChat/Rocket.Chat/pull/17540) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Invalid CSS syntax ([#17541](https://github.com/RocketChat/Rocket.Chat/pull/17541)) + +- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508)) + +- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579)) + +- Mail Messages > Cannot mail own user ([#17625](https://github.com/RocketChat/Rocket.Chat/pull/17625)) + +- Marketplace tiered pricing plan wording ([#17644](https://github.com/RocketChat/Rocket.Chat/pull/17644)) + +- Missing dropdown to select custom status color on user's profile ([#16537](https://github.com/RocketChat/Rocket.Chat/pull/16537) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Not redirecting to `First Channel After Login` on register ([#17664](https://github.com/RocketChat/Rocket.Chat/pull/17664)) + +- Notification sounds ([#17616](https://github.com/RocketChat/Rocket.Chat/pull/17616)) + + * Global CDN config was ignored when loading the sound files + * Upload of custom sounds wasn't getting the file extension correctly + * Some translations were missing + * Edit and delete of custom sounds were not working correctly + +- Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553)) + +- Omnichannel room priorities system messages were create on every saved room info ([#17479](https://github.com/RocketChat/Rocket.Chat/pull/17479)) + +- Password reset/change accepting current password as new password ([#16331](https://github.com/RocketChat/Rocket.Chat/pull/16331) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Push settings enabled when push gateway is selected ([#17582](https://github.com/RocketChat/Rocket.Chat/pull/17582)) + +- Queued Omnichannel webhook being triggered unnecessarily ([#17661](https://github.com/RocketChat/Rocket.Chat/pull/17661)) + +- Reactions may present empty names of who reacted when using Real Names ([#17536](https://github.com/RocketChat/Rocket.Chat/pull/17536)) + + When changing usernames the reactions became outdated since it's not possible to update the usernames stored there, so when the server users Real Name setting enabled the system process all messages before return to the clients and get the names of the usernames to show since the usernames are outdated the names will not be found. Now the usernames will be displayed when the name can't be found as a temporary fix until we change the architecture of the data to fix the issue. + +- Relative image path in oembededUrlWidget ([#15902](https://github.com/RocketChat/Rocket.Chat/pull/15902) by [@machester4](https://github.com/machester4)) + +- Remove a non working setting "Notification Duration" ([#15737](https://github.com/RocketChat/Rocket.Chat/pull/15737)) + +- Remove deprecated Omnichannel Knowledge Base feature ([#17387](https://github.com/RocketChat/Rocket.Chat/pull/17387)) + +- remove multiple options from dontAskMeAgain ([#17514](https://github.com/RocketChat/Rocket.Chat/pull/17514) by [@TaimurAzhar](https://github.com/TaimurAzhar)) + +- Replace obsolete X-FRAME-OPTIONS header on Livechat route ([#17419](https://github.com/RocketChat/Rocket.Chat/pull/17419)) + +- Replace postcss Meteor package ([#15929](https://github.com/RocketChat/Rocket.Chat/pull/15929)) + +- Resolve 'app already exists' error on app update ([#17544](https://github.com/RocketChat/Rocket.Chat/pull/17544)) + +- SAML IDP initiated logout error ([#17482](https://github.com/RocketChat/Rocket.Chat/pull/17482)) + +- Secret Registration not properly validating Invite Token ([#17618](https://github.com/RocketChat/Rocket.Chat/pull/17618)) + +- Slack importer Link handling ([#17595](https://github.com/RocketChat/Rocket.Chat/pull/17595) by [@lpilz](https://github.com/lpilz)) + +- UI KIT Modal Width ([#17697](https://github.com/RocketChat/Rocket.Chat/pull/17697)) + +- Uncessary updates on Settings, Roles and Permissions on startup ([#17160](https://github.com/RocketChat/Rocket.Chat/pull/17160)) + +
+🔍 Minor changes + + +- Add engine versions for houston with templates ([#17403](https://github.com/RocketChat/Rocket.Chat/pull/17403)) + +- Add snapcraft files to be bumped with Houston ([#17611](https://github.com/RocketChat/Rocket.Chat/pull/17611)) + +- Add some missing metadata information ([#17524](https://github.com/RocketChat/Rocket.Chat/pull/17524)) + +- Bump jquery from 3.3.1 to 3.5.0 ([#17486](https://github.com/RocketChat/Rocket.Chat/pull/17486) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Deprecate compatibility cordova setting ([#17586](https://github.com/RocketChat/Rocket.Chat/pull/17586)) + +- DPlatform is deprecated and the replacement does not support rocket.chat ([#17040](https://github.com/RocketChat/Rocket.Chat/pull/17040) by [@ryjones](https://github.com/ryjones)) + +- Fix typo "You aren't part of any channel yet" ([#17498](https://github.com/RocketChat/Rocket.Chat/pull/17498) by [@huzaifahj](https://github.com/huzaifahj)) + +- Improve: New PR Template ([#16968](https://github.com/RocketChat/Rocket.Chat/pull/16968) by [@regalstreak](https://github.com/regalstreak)) + +- Improve: Remove index files from action-links, accounts and assets ([#17607](https://github.com/RocketChat/Rocket.Chat/pull/17607)) + +- Improve: Remove uncessary RegExp query by email ([#17654](https://github.com/RocketChat/Rocket.Chat/pull/17654)) + +- LingoHub based on develop ([#17693](https://github.com/RocketChat/Rocket.Chat/pull/17693)) + +- LingoHub based on develop ([#17520](https://github.com/RocketChat/Rocket.Chat/pull/17520)) + +- Livechat iframe allow microphone and camera ([#9956](https://github.com/RocketChat/Rocket.Chat/pull/9956) by [@kolorafa](https://github.com/kolorafa)) + +- Merge master into develop & Set version to 3.3.0-develop ([#17468](https://github.com/RocketChat/Rocket.Chat/pull/17468)) + +- Meteor update to version 1.10.2 ([#17533](https://github.com/RocketChat/Rocket.Chat/pull/17533)) + +- RegExp improvements suggested by LGTM ([#17500](https://github.com/RocketChat/Rocket.Chat/pull/17500)) + +- Regression: Fix error when performing Omnichannel queue checking ([#17700](https://github.com/RocketChat/Rocket.Chat/pull/17700)) + +- Regression: Add missing return to afterSaveMessage callbacks ([#17715](https://github.com/RocketChat/Rocket.Chat/pull/17715)) + +- Regression: Adjusting spaces between OAuth login buttons ([#17745](https://github.com/RocketChat/Rocket.Chat/pull/17745) by [@dudizilla](https://github.com/dudizilla)) + +- Regression: Click to join button not working ([#17705](https://github.com/RocketChat/Rocket.Chat/pull/17705)) + +- Regression: Do not show custom status inside sequential messages ([#17613](https://github.com/RocketChat/Rocket.Chat/pull/17613)) + +- Regression: Fix Avatar Url Provider when CDN_PREFIX_ALL is false ([#17542](https://github.com/RocketChat/Rocket.Chat/pull/17542)) + +- Regression: Fix error preventing creation of group DMs ([#17726](https://github.com/RocketChat/Rocket.Chat/pull/17726)) + +- Regression: Fix incorrect imports of the Apps-Engine ([#17695](https://github.com/RocketChat/Rocket.Chat/pull/17695)) + +- Regression: Fix Unread bar design ([#17750](https://github.com/RocketChat/Rocket.Chat/pull/17750) by [@dudizilla](https://github.com/dudizilla)) + +- Regression: Force unread-rooms bar to appears over the room list ([#17728](https://github.com/RocketChat/Rocket.Chat/pull/17728) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Regression: Integrations edit/history crashing ([#17702](https://github.com/RocketChat/Rocket.Chat/pull/17702)) + +- Regression: Outgoing List ([#17667](https://github.com/RocketChat/Rocket.Chat/pull/17667)) + +- Regression: Override via env for string settings not working ([#17576](https://github.com/RocketChat/Rocket.Chat/pull/17576)) + +- Regression: Pressing enter on search reloads the page - admin pages ([#17663](https://github.com/RocketChat/Rocket.Chat/pull/17663)) + +- Regression: RegExp callbacks of settings were not being called ([#17552](https://github.com/RocketChat/Rocket.Chat/pull/17552)) + +- Regression: Removed status border on mentions list ([#17741](https://github.com/RocketChat/Rocket.Chat/pull/17741) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Regression: Scroll on admin user info ([#17711](https://github.com/RocketChat/Rocket.Chat/pull/17711)) + +- Regression: Set retryWrites=false as default Mongo options ([#17683](https://github.com/RocketChat/Rocket.Chat/pull/17683)) + +- Regression: Status presence color ([#17707](https://github.com/RocketChat/Rocket.Chat/pull/17707) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Regression: status-color-online ([#17684](https://github.com/RocketChat/Rocket.Chat/pull/17684)) + +- Regression: Threads list was fetching all threads ([#17716](https://github.com/RocketChat/Rocket.Chat/pull/17716)) + +- Regression: User edit form missing fields ([#17699](https://github.com/RocketChat/Rocket.Chat/pull/17699)) + +- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x)) + +- Remove unnecessary setting redefinition ([#17587](https://github.com/RocketChat/Rocket.Chat/pull/17587)) + +- Update Apps-Engine version ([#17706](https://github.com/RocketChat/Rocket.Chat/pull/17706)) + +- Update Contributing Guide ([#17653](https://github.com/RocketChat/Rocket.Chat/pull/17653)) + +- Update Fuselage version ([#17708](https://github.com/RocketChat/Rocket.Chat/pull/17708)) + +- Upgrade Livechat Widget version to 1.5.0 ([#17710](https://github.com/RocketChat/Rocket.Chat/pull/17710)) + +- Use Users.findOneByAppId instead of querying directly ([#16480](https://github.com/RocketChat/Rocket.Chat/pull/16480) by [@lolimay](https://github.com/lolimay)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Nikhil713](https://github.com/Nikhil713) +- [@TaimurAzhar](https://github.com/TaimurAzhar) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@djorkaeffalexandre](https://github.com/djorkaeffalexandre) +- [@dudizilla](https://github.com/dudizilla) +- [@fbartels](https://github.com/fbartels) +- [@huzaifahj](https://github.com/huzaifahj) +- [@juzser](https://github.com/juzser) +- [@kolorafa](https://github.com/kolorafa) +- [@lolimay](https://github.com/lolimay) +- [@lpilz](https://github.com/lpilz) +- [@machester4](https://github.com/machester4) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@mtmr0x](https://github.com/mtmr0x) +- [@ocanema](https://github.com/ocanema) +- [@qwertiko](https://github.com/qwertiko) +- [@regalstreak](https://github.com/regalstreak) +- [@ritvikjain99](https://github.com/ritvikjain99) +- [@ritwizsinha](https://github.com/ritwizsinha) +- [@ryjones](https://github.com/ryjones) +- [@tkurz](https://github.com/tkurz) +- [@wreiske](https://github.com/wreiske) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) + +# 3.2.2 +`2020-05-11 · 7 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Email configs not updating after setting changes ([#17578](https://github.com/RocketChat/Rocket.Chat/pull/17578)) + +- Emoji picker search broken ([#17570](https://github.com/RocketChat/Rocket.Chat/pull/17570)) + +- Error during data export for DMs ([#17577](https://github.com/RocketChat/Rocket.Chat/pull/17577) by [@mtmr0x](https://github.com/mtmr0x)) + +- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508)) + +- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579)) + +- Push settings enabled when push gateway is selected ([#17582](https://github.com/RocketChat/Rocket.Chat/pull/17582)) + +- Reactions may present empty names of who reacted when using Real Names ([#17536](https://github.com/RocketChat/Rocket.Chat/pull/17536)) + + When changing usernames the reactions became outdated since it's not possible to update the usernames stored there, so when the server users Real Name setting enabled the system process all messages before return to the clients and get the names of the usernames to show since the usernames are outdated the names will not be found. Now the usernames will be displayed when the name can't be found as a temporary fix until we change the architecture of the data to fix the issue. + +
+🔍 Minor changes + + +- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@mtmr0x](https://github.com/mtmr0x) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.2.1 +`2020-05-01 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- LDAP login error on Enterprise version ([#17497](https://github.com/RocketChat/Rocket.Chat/pull/17497)) + +
+🔍 Minor changes + + +- Release 3.2.1 ([#17506](https://github.com/RocketChat/Rocket.Chat/pull/17506)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.2.0 +`2020-04-27 · 19 🎉 · 10 🚀 · 34 🐛 · 19 🔍 · 34 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🎉 New features + + +- **ENTERPRISE:** Allows to set a group of departments accepted for forwarding chats ([#17335](https://github.com/RocketChat/Rocket.Chat/pull/17335)) + +- **ENTERPRISE:** Auto close abandoned Omnichannel rooms ([#17055](https://github.com/RocketChat/Rocket.Chat/pull/17055)) + +- **ENTERPRISE:** Omnichannel queue priorities ([#17141](https://github.com/RocketChat/Rocket.Chat/pull/17141)) + +- **ENTERPRISE:** Restrict the permissions configuration for guest users ([#17333](https://github.com/RocketChat/Rocket.Chat/pull/17333)) + + The **Guest** role is blocked for edition on the EE version. This will allow the EE customers to receive licenses with extra seats for Guests for free. The CE version continues to have the Guest role configurable. + +- Add ability to set tags in the Omnichannel room closing dialog ([#17254](https://github.com/RocketChat/Rocket.Chat/pull/17254)) + +- Add Color variable to left sidebar ([#16806](https://github.com/RocketChat/Rocket.Chat/pull/16806)) + +- Add MMS support to Voxtelesys ([#17217](https://github.com/RocketChat/Rocket.Chat/pull/17217) by [@john08burke](https://github.com/john08burke)) + +- Adds ability for Rocket.Chat Apps to create discussions ([#16683](https://github.com/RocketChat/Rocket.Chat/pull/16683) by [@lolimay](https://github.com/lolimay)) + +- Allow to send Agent custom fields through the Omnichannel CRM integration ([#16286](https://github.com/RocketChat/Rocket.Chat/pull/16286)) + +- Allow to set a comment when forwarding Omnichannel chats ([#17353](https://github.com/RocketChat/Rocket.Chat/pull/17353)) + +- Better Push and Email Notification logic ([#17357](https://github.com/RocketChat/Rocket.Chat/pull/17357)) + + We are still using the same logic to define which notifications every new message will generate, it takes some servers' settings, users's preferences and subscriptions' settings in consideration to determine who will receive each notification type (desktop, audio, email and mobile push), but now it doesn't check the user's status (online, away, offline) for email and mobile push notifications but send those notifications to a new queue with the following rules: + + - When the user is online the notification is scheduled to be sent in 120 seconds + - When the user is away the notification is scheduled to be sent in 120 seconds minus the amount of time he is away + - When the user is offline the notification is scheduled to be sent right away + - When the user reads a channel all the notifications for that user are removed (clear queue) + - When a notification is processed to be sent to a user and there are other scheduled notifications: + - All the scheduled notifications for that user are rescheduled to now + - The current notification goes back to the queue to be processed ordered by creation date + +- Buttons to check/uncheck all users and channels on import ([#17207](https://github.com/RocketChat/Rocket.Chat/pull/17207)) + +- Default favorite channels ([#16025](https://github.com/RocketChat/Rocket.Chat/pull/16025)) + +- Enable the IDP to choose the best authnContext ([#17222](https://github.com/RocketChat/Rocket.Chat/pull/17222) by [@felipecrp](https://github.com/felipecrp)) + +- Error page when browser is not supported ([#17372](https://github.com/RocketChat/Rocket.Chat/pull/17372)) + +- Feature/custom oauth mail field and interpolation for mapped fields ([#15690](https://github.com/RocketChat/Rocket.Chat/pull/15690) by [@benkroeger](https://github.com/benkroeger)) + +- Federation event for when users left rooms ([#17091](https://github.com/RocketChat/Rocket.Chat/pull/17091)) + +- Make the header for rooms clickable ([#16762](https://github.com/RocketChat/Rocket.Chat/pull/16762) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + +- Support importing Slack threads ([#17130](https://github.com/RocketChat/Rocket.Chat/pull/17130) by [@lpilz](https://github.com/lpilz)) + +### 🚀 Improvements + + +- Add `file-title` and `file-desc` as new filter tag options on message search ([#16858](https://github.com/RocketChat/Rocket.Chat/pull/16858) by [@subham103](https://github.com/subham103)) + +- Add possibility to sort the Omnichannel current chats list by column ([#17347](https://github.com/RocketChat/Rocket.Chat/pull/17347)) + +- Administration -> Mailer Rewrite. ([#17191](https://github.com/RocketChat/Rocket.Chat/pull/17191)) + +- Administration Pages root rewritten ([#17209](https://github.com/RocketChat/Rocket.Chat/pull/17209)) + +- Change the SAML metadata order to conform to XSD specification ([#15488](https://github.com/RocketChat/Rocket.Chat/pull/15488) by [@fcrespo82](https://github.com/fcrespo82)) + +- Filter markdown in notifications ([#9995](https://github.com/RocketChat/Rocket.Chat/pull/9995) by [@c0dzilla](https://github.com/c0dzilla)) + +- Increase decoupling between React components and Blaze templates ([#16642](https://github.com/RocketChat/Rocket.Chat/pull/16642)) + +- Move CSS imports to `/app` modules ([#17261](https://github.com/RocketChat/Rocket.Chat/pull/17261)) + +- Redesign Administration > Import ([#17289](https://github.com/RocketChat/Rocket.Chat/pull/17289)) + +- User gets UI feedback when message is pinned or unpinned ([#16056](https://github.com/RocketChat/Rocket.Chat/pull/16056) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +### 🐛 Bug fixes + + +- "Invalid Invite" message when registration is disabled ([#17226](https://github.com/RocketChat/Rocket.Chat/pull/17226)) + +- 2FA not showing codes for Spanish translation ([#17378](https://github.com/RocketChat/Rocket.Chat/pull/17378) by [@RavenSystem](https://github.com/RavenSystem)) + +- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275)) + +- Admin panel custom sounds, multiple sound playback fix and added single play/pause button ([#16215](https://github.com/RocketChat/Rocket.Chat/pull/16215) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Allow Screensharing in BBB Iframe ([#17290](https://github.com/RocketChat/Rocket.Chat/pull/17290) by [@wolbernd](https://github.com/wolbernd)) + +- Avatar on sidebar when showing real names ([#17286](https://github.com/RocketChat/Rocket.Chat/pull/17286)) + +- Can not save Unread Tray Icon Alert user preference ([#16313](https://github.com/RocketChat/Rocket.Chat/pull/16313) by [@taiju271](https://github.com/taiju271)) + +- Change wording to start DM from info panel ([#8799](https://github.com/RocketChat/Rocket.Chat/pull/8799)) + +- CSV Importer fails when there are no users to import ([#16790](https://github.com/RocketChat/Rocket.Chat/pull/16790)) + +- Directory default tab ([#17283](https://github.com/RocketChat/Rocket.Chat/pull/17283)) + +- Discussions created from inside DMs were not working and some errors accessing recently created rooms ([#17282](https://github.com/RocketChat/Rocket.Chat/pull/17282)) + +- Email not verified message ([#16236](https://github.com/RocketChat/Rocket.Chat/pull/16236)) + +- Fixed email sort button in directory -> users ([#16606](https://github.com/RocketChat/Rocket.Chat/pull/16606) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Global event click-message-link not fired ([#16771](https://github.com/RocketChat/Rocket.Chat/pull/16771)) + +- Import slack's multiple direct messages as direct rooms instead of private groups ([#17206](https://github.com/RocketChat/Rocket.Chat/pull/17206)) + +- In Create a New Channel, input should be focused on channel name instead of invite users ([#16405](https://github.com/RocketChat/Rocket.Chat/pull/16405) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302)) + +- No maxlength(120) defined for custom user status ([#16534](https://github.com/RocketChat/Rocket.Chat/pull/16534) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288)) + +- Popover component doesn't have scroll ([#17198](https://github.com/RocketChat/Rocket.Chat/pull/17198) by [@Nikhil713](https://github.com/Nikhil713)) + +- Prevent user from getting stuck on login, if there is some bad fname ([#17331](https://github.com/RocketChat/Rocket.Chat/pull/17331)) + +- Red color error outline is not removed after password update on profile details ([#16536](https://github.com/RocketChat/Rocket.Chat/pull/16536) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Remove properties from users.info response ([#17238](https://github.com/RocketChat/Rocket.Chat/pull/17238)) + +- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278)) + +- SAML Idp Initiated Logout Error ([#17324](https://github.com/RocketChat/Rocket.Chat/pull/17324)) + +- Search valid for emoji with dual name ([#16887](https://github.com/RocketChat/Rocket.Chat/pull/16887) by [@subham103](https://github.com/subham103)) + +- Show active admin and user account menu item ([#17047](https://github.com/RocketChat/Rocket.Chat/pull/17047) by [@hullen](https://github.com/hullen)) + +- Spotify embed and collapsed ([#17356](https://github.com/RocketChat/Rocket.Chat/pull/17356) by [@ffauvel](https://github.com/ffauvel)) + +- Threads: Hide Usernames hides Full names. ([#16959](https://github.com/RocketChat/Rocket.Chat/pull/16959)) + +- Translation for nl ([#16742](https://github.com/RocketChat/Rocket.Chat/pull/16742) by [@CC007](https://github.com/CC007)) + +- Unsafe React portals mount/unmount ([#17265](https://github.com/RocketChat/Rocket.Chat/pull/17265)) + +- Update ru.i18n.json ([#16869](https://github.com/RocketChat/Rocket.Chat/pull/16869) by [@1rV1N-git](https://github.com/1rV1N-git)) + +- User search on directory not working correctly ([#17299](https://github.com/RocketChat/Rocket.Chat/pull/17299)) + +- Variable rendering problem on Import recent history page ([#15997](https://github.com/RocketChat/Rocket.Chat/pull/15997) by [@ritwizsinha](https://github.com/ritwizsinha)) + +
+🔍 Minor changes + + +- [CHORE] Move polyfills to client/ ([#17266](https://github.com/RocketChat/Rocket.Chat/pull/17266)) + +- Apply $and helper to message template ([#17280](https://github.com/RocketChat/Rocket.Chat/pull/17280)) + +- Bump https-proxy-agent from 2.2.1 to 2.2.4 ([#17323](https://github.com/RocketChat/Rocket.Chat/pull/17323) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Complement Guest role restrictions for Enterprise ([#17393](https://github.com/RocketChat/Rocket.Chat/pull/17393)) + +- Fix moving-to-a-single-codebase link in README ([#17297](https://github.com/RocketChat/Rocket.Chat/pull/17297) by [@Krinkle](https://github.com/Krinkle)) + +- Improve: Better Push Notification code ([#17338](https://github.com/RocketChat/Rocket.Chat/pull/17338)) + +- LingoHub based on develop ([#17365](https://github.com/RocketChat/Rocket.Chat/pull/17365)) + +- LingoHub based on develop ([#17274](https://github.com/RocketChat/Rocket.Chat/pull/17274)) + +- Mailer Scrollbar ([#17322](https://github.com/RocketChat/Rocket.Chat/pull/17322)) + +- Merge master into develop & Set version to 3.2.0-develop ([#17241](https://github.com/RocketChat/Rocket.Chat/pull/17241) by [@1rV1N-git](https://github.com/1rV1N-git)) + +- New hooks for RouterContext ([#17305](https://github.com/RocketChat/Rocket.Chat/pull/17305)) + +- Regression: Import data pagination ([#17355](https://github.com/RocketChat/Rocket.Chat/pull/17355)) + +- Regression: Storybook ([#17321](https://github.com/RocketChat/Rocket.Chat/pull/17321)) + +- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde)) + +- Remove `@typescript-eslint/explicit-function-return-type` rule ([#17428](https://github.com/RocketChat/Rocket.Chat/pull/17428)) + +- Remove set as alias setting ([#16343](https://github.com/RocketChat/Rocket.Chat/pull/16343)) + +- Static props for Administration route components ([#17285](https://github.com/RocketChat/Rocket.Chat/pull/17285)) + +- Update Apps-Engine to stable version ([#17287](https://github.com/RocketChat/Rocket.Chat/pull/17287)) + +- Upgrade file storage packages ([#17107](https://github.com/RocketChat/Rocket.Chat/pull/17107)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@1rV1N-git](https://github.com/1rV1N-git) +- [@CC007](https://github.com/CC007) +- [@Krinkle](https://github.com/Krinkle) +- [@Nikhil713](https://github.com/Nikhil713) +- [@RavenSystem](https://github.com/RavenSystem) +- [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@benkroeger](https://github.com/benkroeger) +- [@c0dzilla](https://github.com/c0dzilla) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@fastrde](https://github.com/fastrde) +- [@fcrespo82](https://github.com/fcrespo82) +- [@felipecrp](https://github.com/felipecrp) +- [@ffauvel](https://github.com/ffauvel) +- [@hullen](https://github.com/hullen) +- [@john08burke](https://github.com/john08burke) +- [@lolimay](https://github.com/lolimay) +- [@lpilz](https://github.com/lpilz) +- [@ritwizsinha](https://github.com/ritwizsinha) +- [@subham103](https://github.com/subham103) +- [@taiju271](https://github.com/taiju271) +- [@wolbernd](https://github.com/wolbernd) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.1.3 +`2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Email configs not updating after setting changes ([#17578](https://github.com/RocketChat/Rocket.Chat/pull/17578)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 3.1.2 +`2020-04-27 · 8 🐛 · 3 🔍 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Allowing blocking a user on channels ([#17406](https://github.com/RocketChat/Rocket.Chat/pull/17406)) + +- Bot Agents not being able to get Omnichannel Inquiries ([#17404](https://github.com/RocketChat/Rocket.Chat/pull/17404)) + +- Empty Incoming webhook script field ([#17422](https://github.com/RocketChat/Rocket.Chat/pull/17422)) + +- LDAP error when trying to add room with spaces in the name ([#17453](https://github.com/RocketChat/Rocket.Chat/pull/17453)) + +- LDAP Sync error ([#17417](https://github.com/RocketChat/Rocket.Chat/pull/17417) by [@fastrde](https://github.com/fastrde)) + +- New user added by admin doesn't receive random password email ([#17249](https://github.com/RocketChat/Rocket.Chat/pull/17249)) + +- Omnichannel room info panel opening whenever a message is sent ([#17348](https://github.com/RocketChat/Rocket.Chat/pull/17348)) + +- Web Client memory leak caused by the Emoji rendering ([#17320](https://github.com/RocketChat/Rocket.Chat/pull/17320)) + +
+🔍 Minor changes + + +- Regression: Add missing cacheKey to mem ([#17430](https://github.com/RocketChat/Rocket.Chat/pull/17430)) + +- Regression: Fix mem usage with more than one argument ([#17391](https://github.com/RocketChat/Rocket.Chat/pull/17391)) + +- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@fastrde](https://github.com/fastrde) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.1.1 +`2020-04-14 · 8 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275)) + +- Avatar on sidebar when showing real names ([#17286](https://github.com/RocketChat/Rocket.Chat/pull/17286)) + +- Directory default tab ([#17283](https://github.com/RocketChat/Rocket.Chat/pull/17283)) + +- Discussions created from inside DMs were not working and some errors accessing recently created rooms ([#17282](https://github.com/RocketChat/Rocket.Chat/pull/17282)) + +- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302)) + +- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288)) + +- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278)) + +- User search on directory not working correctly ([#17299](https://github.com/RocketChat/Rocket.Chat/pull/17299)) + +
+🔍 Minor changes + + +- Update Apps-Engine to stable version ([#17287](https://github.com/RocketChat/Rocket.Chat/pull/17287)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.1.0 +`2020-04-09 · 23 🎉 · 22 🚀 · 71 🐛 · 86 🔍 · 41 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.16.1` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🎉 New features + + +- **ENTERPRISE:** Engagement Dashboard ([#16960](https://github.com/RocketChat/Rocket.Chat/pull/16960)) + +- Add default chat closing tags in Omnichannel departments ([#16859](https://github.com/RocketChat/Rocket.Chat/pull/16859)) + +- Add omnichannel external frame feature ([#17038](https://github.com/RocketChat/Rocket.Chat/pull/17038)) + +- Add update method for user bridge ([#17077](https://github.com/RocketChat/Rocket.Chat/pull/17077)) + +- Allow to set default department and location sharing on SMS / WhatsApp integration ([#16557](https://github.com/RocketChat/Rocket.Chat/pull/16557)) + +- API `users.deactivateIdle` for mass-disabling of idle users ([#16849](https://github.com/RocketChat/Rocket.Chat/pull/16849)) + +- API `users.logoutOtherClient` to logout from other locations ([#16193](https://github.com/RocketChat/Rocket.Chat/pull/16193) by [@jschirrmacher](https://github.com/jschirrmacher)) + +- Direct message between multiple users ([#16761](https://github.com/RocketChat/Rocket.Chat/pull/16761)) + +- Directory page refactored, new user's bio field ([#17043](https://github.com/RocketChat/Rocket.Chat/pull/17043)) + +- Enterprise Edition ([#16944](https://github.com/RocketChat/Rocket.Chat/pull/16944)) + +- Experimental Game Center (externalComponents implementation) ([#15123](https://github.com/RocketChat/Rocket.Chat/pull/15123) by [@lolimay](https://github.com/lolimay)) + +- Home button on sidebar ([#17052](https://github.com/RocketChat/Rocket.Chat/pull/17052)) + +- Merge Sort List and View Mode menus and improve its UI/UX ([#17103](https://github.com/RocketChat/Rocket.Chat/pull/17103)) + + ![image](https://user-images.githubusercontent.com/5263975/78036622-e8db2a80-7340-11ea-91d0-65728eabdcb6.png) + +- Open the Visitor Info panel automatically when the agent enters an Omnichannel room ([#16496](https://github.com/RocketChat/Rocket.Chat/pull/16496)) + +- Route to get updated roles after a date ([#16610](https://github.com/RocketChat/Rocket.Chat/pull/16610) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- SAML config to allow clock drift ([#16751](https://github.com/RocketChat/Rocket.Chat/pull/16751) by [@localguru](https://github.com/localguru)) + +- Save default filters in the Omnichannel Current Chats list ([#16653](https://github.com/RocketChat/Rocket.Chat/pull/16653)) + +- Settings to enable E2E encryption for Private and Direct Rooms by default ([#16928](https://github.com/RocketChat/Rocket.Chat/pull/16928)) + +- Sort channel directory listing by latest message ([#16604](https://github.com/RocketChat/Rocket.Chat/pull/16604) by [@subham103](https://github.com/subham103)) + +- Synchronize saml roles to local user (#16152) ([#16158](https://github.com/RocketChat/Rocket.Chat/pull/16158) by [@col-panic](https://github.com/col-panic)) + +- Translation via MS translate ([#16363](https://github.com/RocketChat/Rocket.Chat/pull/16363) by [@mrsimpson](https://github.com/mrsimpson)) + + Adds Microsoft's translation service (https://translator.microsoft.com/) as a provider for translation of messages. + In addition to implementing the interface (similar to google and DeepL), a small change has been done in order to display the translation provider on the UI. + +- Two Factor authentication via email ([#15949](https://github.com/RocketChat/Rocket.Chat/pull/15949)) + +- Update Meteor to 1.9.2 and Node to 12.16.1 ([#16718](https://github.com/RocketChat/Rocket.Chat/pull/16718)) + +### 🚀 Improvements + + +- Ability to change offline message button link on emails notifications ([#16784](https://github.com/RocketChat/Rocket.Chat/pull/16784)) + +- Accept open formarts of text, spreadsheet, presentation for upload by default ([#16502](https://github.com/RocketChat/Rocket.Chat/pull/16502)) + +- Add option to require authentication on user's shield endpoint ([#16845](https://github.com/RocketChat/Rocket.Chat/pull/16845)) + +- Added autofocus to Directory ([#16217](https://github.com/RocketChat/Rocket.Chat/pull/16217) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Added timer in video message recorder ([#16221](https://github.com/RocketChat/Rocket.Chat/pull/16221) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Allow login of non LDAP users when LDAP is enabled ([#16949](https://github.com/RocketChat/Rocket.Chat/pull/16949)) + +- Apps Engine: Reduce some stream calls and remove a find user from the app's status changes ([#17115](https://github.com/RocketChat/Rocket.Chat/pull/17115)) + +- Change sidebar sort mode to activity by default ([#17189](https://github.com/RocketChat/Rocket.Chat/pull/17189)) + +- Contextual bar autofocus ([#16915](https://github.com/RocketChat/Rocket.Chat/pull/16915)) + +- Displays `Nothing found` on admin sidebar when search returns nothing ([#16255](https://github.com/RocketChat/Rocket.Chat/pull/16255) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Fallback content-type as application/octet-stream for FileSystem uploads ([#16776](https://github.com/RocketChat/Rocket.Chat/pull/16776) by [@georgmu](https://github.com/georgmu)) + +- First data load from existing data on engagement dashboard ([#17035](https://github.com/RocketChat/Rocket.Chat/pull/17035)) + +- Increase the push throughput to prevent queuing ([#17194](https://github.com/RocketChat/Rocket.Chat/pull/17194)) + +- Omnichannel aggregations performance improvements ([#16755](https://github.com/RocketChat/Rocket.Chat/pull/16755)) + +- Removed the 'reply in thread' from thread replies ([#16630](https://github.com/RocketChat/Rocket.Chat/pull/16630) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Rename client-side term "Livechat" to "Omnichannel" ([#16752](https://github.com/RocketChat/Rocket.Chat/pull/16752)) + +- Repeat “Reply In Thread” and “Add Reaction” inside the message actions menu ([#17073](https://github.com/RocketChat/Rocket.Chat/pull/17073)) + +- Replace the Department select component by an Autocomplete input in Omnichannel UI ([#16669](https://github.com/RocketChat/Rocket.Chat/pull/16669)) + +- Send files over REST API ([#16617](https://github.com/RocketChat/Rocket.Chat/pull/16617)) + +- Tab Bar actions reorder ([#17072](https://github.com/RocketChat/Rocket.Chat/pull/17072)) + +- Use `rocket.cat` as default bot If `InternalHubot_Username` is undefined ([#16371](https://github.com/RocketChat/Rocket.Chat/pull/16371) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- User gets feedback when a message has been starred or unstarred ([#13860](https://github.com/RocketChat/Rocket.Chat/pull/13860) by [@fliptrail](https://github.com/fliptrail)) + +### 🐛 Bug fixes + + +- "Jump to message" is rendered twice when message is starred. ([#16170](https://github.com/RocketChat/Rocket.Chat/pull/16170) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- `users.setStatus` API was ignoring the user from params when trying to set status of other users ([#16128](https://github.com/RocketChat/Rocket.Chat/pull/16128) by [@rm-yakovenko](https://github.com/rm-yakovenko)) + +- Additional scroll when contextual bar is open ([#16667](https://github.com/RocketChat/Rocket.Chat/pull/16667)) + +- Admin height if the blue banner is opened ([#16629](https://github.com/RocketChat/Rocket.Chat/pull/16629)) + +- Admins can't sort users by email in directory view ([#15796](https://github.com/RocketChat/Rocket.Chat/pull/15796) by [@sneakson](https://github.com/sneakson)) + +- Ancestral departments were not updated when an Omnichannel room is forwarded to another department ([#16958](https://github.com/RocketChat/Rocket.Chat/pull/16958)) + +- Block user option inside admin view ([#16626](https://github.com/RocketChat/Rocket.Chat/pull/16626)) + +- Cannot edit Profile when Full Name is empty and not required ([#16744](https://github.com/RocketChat/Rocket.Chat/pull/16744)) + +- Cannot pin on direct messages ([#16759](https://github.com/RocketChat/Rocket.Chat/pull/16759) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Cannot unfollow message from thread's panel ([#16560](https://github.com/RocketChat/Rocket.Chat/pull/16560) by [@subham103](https://github.com/subham103)) + +- CAS ignores username attribute map ([#16942](https://github.com/RocketChat/Rocket.Chat/pull/16942) by [@pmayer](https://github.com/pmayer)) + +- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618)) + +- Clear unread red line when the ESC key is pressed ([#16668](https://github.com/RocketChat/Rocket.Chat/pull/16668)) + +- Color setting editing issues ([#16706](https://github.com/RocketChat/Rocket.Chat/pull/16706)) + +- Custom OAuth Bug ([#16811](https://github.com/RocketChat/Rocket.Chat/pull/16811)) + +- Data converters overriding fields added by apps ([#16639](https://github.com/RocketChat/Rocket.Chat/pull/16639)) + +- Deleting messages while searching causes the whole room chat to disappear ([#16568](https://github.com/RocketChat/Rocket.Chat/pull/16568) by [@karimelghazouly](https://github.com/karimelghazouly)) + +- Discussions were not inheriting the public status of parent's channel ([#17070](https://github.com/RocketChat/Rocket.Chat/pull/17070)) + +- Display user status along with icon ([#16875](https://github.com/RocketChat/Rocket.Chat/pull/16875) by [@Nikhil713](https://github.com/Nikhil713)) + +- Emit livechat events to instace only ([#17086](https://github.com/RocketChat/Rocket.Chat/pull/17086)) + +- Error when websocket received status update event ([#17089](https://github.com/RocketChat/Rocket.Chat/pull/17089)) + +- Explicitly set text of confirmation button ([#16138](https://github.com/RocketChat/Rocket.Chat/pull/16138) by [@jschirrmacher](https://github.com/jschirrmacher)) + +- Facebook integration missing visitor data after registerGuest ([#16810](https://github.com/RocketChat/Rocket.Chat/pull/16810) by [@antkaz](https://github.com/antkaz)) + +- Federation delete room event not being dispatched ([#16861](https://github.com/RocketChat/Rocket.Chat/pull/16861) by [@1rV1N-git](https://github.com/1rV1N-git)) + +- Federation Event ROOM_ADD_USER not being dispatched ([#16878](https://github.com/RocketChat/Rocket.Chat/pull/16878) by [@1rV1N-git](https://github.com/1rV1N-git)) + +- File uploads out of threads are not visible in regular message view ([#16416](https://github.com/RocketChat/Rocket.Chat/pull/16416) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Flextab information is not working when clicking on visitor or agent username in Omnichannel messages ([#16797](https://github.com/RocketChat/Rocket.Chat/pull/16797) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- ie11 support ([#16682](https://github.com/RocketChat/Rocket.Chat/pull/16682)) + +- Integrations page pagination ([#16838](https://github.com/RocketChat/Rocket.Chat/pull/16838)) + +- Invite links counting users already joined ([#16591](https://github.com/RocketChat/Rocket.Chat/pull/16591) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787)) + +- Language country has been ignored on translation load ([#16757](https://github.com/RocketChat/Rocket.Chat/pull/16757)) + + Languages including country variations like `pt-BR` were ignoring the country party because the user's preference has been saved in lowercase `pt-br` causing the language to not match the available languages. Now we enforce the uppercase of the country part when loading the language. + +- LDAP sync admin action was not syncing existent users ([#16671](https://github.com/RocketChat/Rocket.Chat/pull/16671)) + +- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623)) + +- Login with LinkedIn not mapping name and picture correctly ([#16955](https://github.com/RocketChat/Rocket.Chat/pull/16955)) + +- Manual Register use correct state for determining registered ([#16726](https://github.com/RocketChat/Rocket.Chat/pull/16726)) + +- Member's list only filtering users already on screen ([#17110](https://github.com/RocketChat/Rocket.Chat/pull/17110)) + +- Messages doesn't send to Slack via SlackBridge after renaming channel ([#16565](https://github.com/RocketChat/Rocket.Chat/pull/16565) by [@antkaz](https://github.com/antkaz)) + +- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132)) + +- Omnichannel Inquiry names not being updated when the guest name changes ([#16782](https://github.com/RocketChat/Rocket.Chat/pull/16782)) + +- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603)) + +- Option BYPASS_OPLOG_VALIDATION not working ([#17143](https://github.com/RocketChat/Rocket.Chat/pull/17143)) + +- Pinned messages wouldn't collapse ([#16188](https://github.com/RocketChat/Rocket.Chat/pull/16188)) + +- Pressing Cancel while 'deleting by edit' message blocks sending messages ([#16315](https://github.com/RocketChat/Rocket.Chat/pull/16315) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Prune message saying `files deleted` and `messages deleted` even when singular message or file in prune ([#16322](https://github.com/RocketChat/Rocket.Chat/pull/16322) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Public channel cannot be accessed via URL when 'Allow Anonymous Read' is active ([#16914](https://github.com/RocketChat/Rocket.Chat/pull/16914) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Race conditions on/before login ([#16989](https://github.com/RocketChat/Rocket.Chat/pull/16989)) + +- Random errors on SAML logout ([#17227](https://github.com/RocketChat/Rocket.Chat/pull/17227)) + +- Real-time data rendering on Omnichannel room info panel ([#16783](https://github.com/RocketChat/Rocket.Chat/pull/16783)) + +- Regression: Jitsi on external window infinite loop ([#16625](https://github.com/RocketChat/Rocket.Chat/pull/16625)) + +- Regression: New 'app' role with no permissions when updating to 3.0.0 ([#16637](https://github.com/RocketChat/Rocket.Chat/pull/16637)) + +- Remove Reply in DM from Omnichannel rooms ([#16957](https://github.com/RocketChat/Rocket.Chat/pull/16957) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Remove spaces from i18n placeholders to show Personal access token ([#16724](https://github.com/RocketChat/Rocket.Chat/pull/16724) by [@harakiwi1](https://github.com/harakiwi1)) + +- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723)) + +- Room event emitter passing an invalid parameter when finding removed subscriptions ([#17224](https://github.com/RocketChat/Rocket.Chat/pull/17224)) + +- SAML login errors not showing on UI ([#17219](https://github.com/RocketChat/Rocket.Chat/pull/17219)) + +- Show error message if password and confirm password not equal ([#16247](https://github.com/RocketChat/Rocket.Chat/pull/16247) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Slackbridge-import command doesn't work ([#16645](https://github.com/RocketChat/Rocket.Chat/pull/16645) by [@antkaz](https://github.com/antkaz)) + +- SlackBridge: Get all channels from Slack via REST API ([#16767](https://github.com/RocketChat/Rocket.Chat/pull/16767) by [@antkaz](https://github.com/antkaz)) + +- Slash command preview: Wrong item being selected, Horizontal scroll ([#16750](https://github.com/RocketChat/Rocket.Chat/pull/16750)) + +- Text formatted to remain within button even on screen resize ([#14136](https://github.com/RocketChat/Rocket.Chat/pull/14136)) + +- There is no option to pin a thread message by admin ([#16457](https://github.com/RocketChat/Rocket.Chat/pull/16457) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699)) + +- UiKit not updating new actionIds received as responses from actions ([#16624](https://github.com/RocketChat/Rocket.Chat/pull/16624)) + +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) + +- Verification email body ([#17062](https://github.com/RocketChat/Rocket.Chat/pull/17062) by [@GOVINDDIXIT](https://github.com/GOVINDDIXIT)) + +- WebRTC echo while talking ([#17145](https://github.com/RocketChat/Rocket.Chat/pull/17145) by [@1rV1N-git](https://github.com/1rV1N-git) & [@ndroo](https://github.com/ndroo)) + +- When trying to quote messages inside threads the quote would be sent to room instead to the thread ([#16925](https://github.com/RocketChat/Rocket.Chat/pull/16925)) + +- Wrong message count statistics in Admin info page ([#16680](https://github.com/RocketChat/Rocket.Chat/pull/16680) by [@subham103](https://github.com/subham103)) + +- Wrong SAML Response Signature Validation ([#16922](https://github.com/RocketChat/Rocket.Chat/pull/16922)) + +- Wrong thread messages display in contextual bar ([#16835](https://github.com/RocketChat/Rocket.Chat/pull/16835) by [@ritwizsinha](https://github.com/ritwizsinha)) + +
+🔍 Minor changes + + +- [Apps] Lazy load categories and marketplaceVersion in admin - apps page ([#16258](https://github.com/RocketChat/Rocket.Chat/pull/16258) by [@lolimay](https://github.com/lolimay)) + +- [CHORE] Changed remaining SelectInput's to Select ([#16719](https://github.com/RocketChat/Rocket.Chat/pull/16719)) + +- [CHORE] Look for Storybook stories on `app/` too ([#16595](https://github.com/RocketChat/Rocket.Chat/pull/16595)) + +- [CHORE] Update snap install instructions ([#16720](https://github.com/RocketChat/Rocket.Chat/pull/16720)) + +- [CHORE] Use REST API for sending audio messages ([#17237](https://github.com/RocketChat/Rocket.Chat/pull/17237)) + +- Add an index to the name field for omnichannel department ([#16953](https://github.com/RocketChat/Rocket.Chat/pull/16953)) + +- Add Enterprise Edition license ([#16801](https://github.com/RocketChat/Rocket.Chat/pull/16801)) + +- Add lint to `.less` files ([#16893](https://github.com/RocketChat/Rocket.Chat/pull/16893)) + +- Add methods to include room types on dashboard ([#16576](https://github.com/RocketChat/Rocket.Chat/pull/16576)) + +- Add new Omnichannel department forwarding callback ([#16779](https://github.com/RocketChat/Rocket.Chat/pull/16779)) + +- Add some missing ES translations ([#16120](https://github.com/RocketChat/Rocket.Chat/pull/16120) by [@ivanape](https://github.com/ivanape)) + +- Add statistics and metrics about push queue ([#17208](https://github.com/RocketChat/Rocket.Chat/pull/17208)) + +- Add User’s index for field `appId` ([#17075](https://github.com/RocketChat/Rocket.Chat/pull/17075)) + +- Add wrapper to make Meteor methods calls over REST ([#17092](https://github.com/RocketChat/Rocket.Chat/pull/17092)) + +- Added border to page header ([#16792](https://github.com/RocketChat/Rocket.Chat/pull/16792)) + +- Bump acorn from 6.0.7 to 6.4.1 ([#16876](https://github.com/RocketChat/Rocket.Chat/pull/16876) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Change license version requested ([#16956](https://github.com/RocketChat/Rocket.Chat/pull/16956)) + +- Changed Opt_In message, removed translations ([#16631](https://github.com/RocketChat/Rocket.Chat/pull/16631)) + +- Collect metrics about meteor facts ([#17216](https://github.com/RocketChat/Rocket.Chat/pull/17216)) + +- Fix Docker preview image ([#16736](https://github.com/RocketChat/Rocket.Chat/pull/16736)) + +- Fix self DMs created during release candidate ([#17239](https://github.com/RocketChat/Rocket.Chat/pull/17239)) + +- Fix StreamCast info ([#16995](https://github.com/RocketChat/Rocket.Chat/pull/16995)) + +- Fix: 2FA DDP method not getting code on API call that doesn’t requires 2FA ([#16998](https://github.com/RocketChat/Rocket.Chat/pull/16998)) + +- fix: add option to mount media on snap ([#13591](https://github.com/RocketChat/Rocket.Chat/pull/13591) by [@knrt10](https://github.com/knrt10)) + +- Fix: Adding margin to click to load text ([#16210](https://github.com/RocketChat/Rocket.Chat/pull/16210) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Fix: Console error on login ([#16704](https://github.com/RocketChat/Rocket.Chat/pull/16704)) + +- Fix: Correctly aligned input element of custom user status component ([#16151](https://github.com/RocketChat/Rocket.Chat/pull/16151) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Fix: Error message on startup of multiple instances related to the metrics’ server ([#17152](https://github.com/RocketChat/Rocket.Chat/pull/17152)) + +- Fix: Huge amount of hasLicense calls to the server ([#17169](https://github.com/RocketChat/Rocket.Chat/pull/17169)) + +- Fix: Last message of Group DMs not showing the sender ([#17059](https://github.com/RocketChat/Rocket.Chat/pull/17059)) + +- Fix: Make the AppLivechatBridge.createMessage works properly as a promise ([#16941](https://github.com/RocketChat/Rocket.Chat/pull/16941)) + +- Fix: Missing checks for Troubleshoot > Disable Notifications ([#17155](https://github.com/RocketChat/Rocket.Chat/pull/17155)) + +- Fix: Notifications of Group DM were not showing the room name ([#17058](https://github.com/RocketChat/Rocket.Chat/pull/17058)) + +- Fix: Padding required in the Facebook Messenger option in Livechat ([#16202](https://github.com/RocketChat/Rocket.Chat/pull/16202) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Fix: Removed some hardcoded texts ([#16304](https://github.com/RocketChat/Rocket.Chat/pull/16304) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Fix: StreamCast was not working correctly ([#16983](https://github.com/RocketChat/Rocket.Chat/pull/16983)) + +- Fixed Line break incorrectly being called apostrophe in code ([#16918](https://github.com/RocketChat/Rocket.Chat/pull/16918) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) + +- Fixed translate variable in UnarchiveRoom Modal ([#16310](https://github.com/RocketChat/Rocket.Chat/pull/16310) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Improve room types usage ([#16753](https://github.com/RocketChat/Rocket.Chat/pull/16753)) + +- Improve: Apps-engine E2E tests ([#16781](https://github.com/RocketChat/Rocket.Chat/pull/16781)) + +- LingoHub based on develop ([#16837](https://github.com/RocketChat/Rocket.Chat/pull/16837)) + +- LingoHub based on develop ([#16640](https://github.com/RocketChat/Rocket.Chat/pull/16640)) + +- Merge master into develop & Set version to 3.1.0-develop ([#16609](https://github.com/RocketChat/Rocket.Chat/pull/16609)) + +- Metrics: New metrics, performance and size improvements ([#17183](https://github.com/RocketChat/Rocket.Chat/pull/17183)) + +- New metric to track oplog queue ([#17142](https://github.com/RocketChat/Rocket.Chat/pull/17142)) + +- New Troubleshoot section for disabling features ([#17114](https://github.com/RocketChat/Rocket.Chat/pull/17114)) + +- Redirected to home when a room has been deleted instead of getting broken link(blank page) of deleted room ([#16227](https://github.com/RocketChat/Rocket.Chat/pull/16227) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Reduce notifyUser propagation ([#17088](https://github.com/RocketChat/Rocket.Chat/pull/17088)) + +- Regression: `users.setStatus` throwing an error if message is empty ([#17036](https://github.com/RocketChat/Rocket.Chat/pull/17036)) + +- Regression: Admin create user button ([#17186](https://github.com/RocketChat/Rocket.Chat/pull/17186)) + +- Regression: Block users was not possible for 1:1 DMs ([#17105](https://github.com/RocketChat/Rocket.Chat/pull/17105)) + +- Regression: Broken Search if users without DM subscriptions are listed ([#17074](https://github.com/RocketChat/Rocket.Chat/pull/17074)) + +- Regression: Can't login with 2FA over REST API when 2FA via Email is enabled ([#17128](https://github.com/RocketChat/Rocket.Chat/pull/17128) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) + +- Regression: Check Omnichannel routing system before emitting queue changes ([#17087](https://github.com/RocketChat/Rocket.Chat/pull/17087)) + +- Regression: Collapsible elements didn't respect attachment parameter. ([#16994](https://github.com/RocketChat/Rocket.Chat/pull/16994)) + +- Regression: Direct message creation by REST ([#17109](https://github.com/RocketChat/Rocket.Chat/pull/17109)) + +- Regression: Do not refresh statistics when opening the info panel ([#17060](https://github.com/RocketChat/Rocket.Chat/pull/17060)) + +- Regression: Files were been deleted when deleting users as last members of private rooms ([#17111](https://github.com/RocketChat/Rocket.Chat/pull/17111)) + +- Regression: Fix auditing for Multiple Direct Messages ([#17192](https://github.com/RocketChat/Rocket.Chat/pull/17192)) + +- Regression: Fix calling readmessage after mark as unread ([#17193](https://github.com/RocketChat/Rocket.Chat/pull/17193)) + +- Regression: fix design review of Directory ([#17133](https://github.com/RocketChat/Rocket.Chat/pull/17133)) + +- Regression: Fix engagement dashboard urls, fixing Flowrouter imports ([#17127](https://github.com/RocketChat/Rocket.Chat/pull/17127)) + +- Regression: fix fuselage import, remove directory css ([#17116](https://github.com/RocketChat/Rocket.Chat/pull/17116)) + +- Regression: Fix issue with opening rooms ([#17028](https://github.com/RocketChat/Rocket.Chat/pull/17028)) + +- Regression: Fix omnichannel icon missing on sidebar ([#16775](https://github.com/RocketChat/Rocket.Chat/pull/16775)) + +- Regression: Fix removing user not removing his 1-on-1 DMs ([#17057](https://github.com/RocketChat/Rocket.Chat/pull/17057)) + +- Regression: fix scroll after room loads ([#17188](https://github.com/RocketChat/Rocket.Chat/pull/17188)) + +- Regression: Fix users raw model ([#17204](https://github.com/RocketChat/Rocket.Chat/pull/17204)) + +- Regression: IE11 Support ([#17125](https://github.com/RocketChat/Rocket.Chat/pull/17125)) + +- Regression: Invite links working for group DMs ([#17056](https://github.com/RocketChat/Rocket.Chat/pull/17056)) + +- Regression: OmniChannel agent activity monitor was counting time wrongly ([#16979](https://github.com/RocketChat/Rocket.Chat/pull/16979)) + +- Regression: omnichannel manual queued sidebarlist ([#17048](https://github.com/RocketChat/Rocket.Chat/pull/17048)) + +- Regression: Omnichannel notification on new conversations displaying incorrect information ([#16346](https://github.com/RocketChat/Rocket.Chat/pull/16346)) + +- Regression: Overwrite model functions on EE only when license applied ([#17061](https://github.com/RocketChat/Rocket.Chat/pull/17061)) + +- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017)) + +- Regression: Remove old and closed Omnichannel inquiries ([#17113](https://github.com/RocketChat/Rocket.Chat/pull/17113)) + +- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999)) + +- Regression: Show upload errors ([#16681](https://github.com/RocketChat/Rocket.Chat/pull/16681)) + +- Regression: Small fixes for Game Center ([#17018](https://github.com/RocketChat/Rocket.Chat/pull/17018)) + +- Regression: Wrong size of Directory search/sort icons and Sort Channels menu not showing on production build ([#17118](https://github.com/RocketChat/Rocket.Chat/pull/17118)) + +- Release 3.0.12 ([#17158](https://github.com/RocketChat/Rocket.Chat/pull/17158)) + +- Removing Trailing Space ([#16470](https://github.com/RocketChat/Rocket.Chat/pull/16470) by [@aryamanpuri](https://github.com/aryamanpuri)) + +- Single codebase announcement ([#17081](https://github.com/RocketChat/Rocket.Chat/pull/17081)) + +- Update cypress to version 4.0.2 ([#16685](https://github.com/RocketChat/Rocket.Chat/pull/16685)) + +- Update presence package ([#16786](https://github.com/RocketChat/Rocket.Chat/pull/16786)) + +- Upgrade Livechat Widget version to 1.4.0 ([#16950](https://github.com/RocketChat/Rocket.Chat/pull/16950)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@1rV1N-git](https://github.com/1rV1N-git) +- [@GOVINDDIXIT](https://github.com/GOVINDDIXIT) +- [@Nikhil713](https://github.com/Nikhil713) +- [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@antkaz](https://github.com/antkaz) +- [@aryamanpuri](https://github.com/aryamanpuri) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@col-panic](https://github.com/col-panic) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@djorkaeffalexandre](https://github.com/djorkaeffalexandre) +- [@fliptrail](https://github.com/fliptrail) +- [@georgmu](https://github.com/georgmu) +- [@harakiwi1](https://github.com/harakiwi1) +- [@ivanape](https://github.com/ivanape) +- [@jschirrmacher](https://github.com/jschirrmacher) +- [@karimelghazouly](https://github.com/karimelghazouly) +- [@knrt10](https://github.com/knrt10) +- [@localguru](https://github.com/localguru) +- [@lolimay](https://github.com/lolimay) +- [@mrsimpson](https://github.com/mrsimpson) +- [@ndroo](https://github.com/ndroo) +- [@pmayer](https://github.com/pmayer) +- [@ritwizsinha](https://github.com/ritwizsinha) +- [@rm-yakovenko](https://github.com/rm-yakovenko) +- [@sneakson](https://github.com/sneakson) +- [@subham103](https://github.com/subham103) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@PrajvalRaval](https://github.com/PrajvalRaval) +- [@Rodriq](https://github.com/Rodriq) +- [@Sing-Li](https://github.com/Sing-Li) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 3.0.13 +`2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Email configs not updating after setting changes ([#17578](https://github.com/RocketChat/Rocket.Chat/pull/17578)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 3.0.12 +`2020-04-03 · 3 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Fix: Error message on startup of multiple instances related to the metrics’ server ([#17152](https://github.com/RocketChat/Rocket.Chat/pull/17152)) + +- Fix: Missing checks for Troubleshoot > Disable Notifications ([#17155](https://github.com/RocketChat/Rocket.Chat/pull/17155)) + +- Release 3.0.12 ([#17158](https://github.com/RocketChat/Rocket.Chat/pull/17158)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.11 +`2020-04-02 · 2 🐛 · 2 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132)) + +- Option BYPASS_OPLOG_VALIDATION not working ([#17143](https://github.com/RocketChat/Rocket.Chat/pull/17143)) + +
+🔍 Minor changes + + +- New metric to track oplog queue ([#17142](https://github.com/RocketChat/Rocket.Chat/pull/17142)) + +- Release 3.0.11 ([#17148](https://github.com/RocketChat/Rocket.Chat/pull/17148)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.10 +`2020-04-01 · 1 🚀 · 2 🐛 · 4 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🚀 Improvements + + +- Apps Engine: Reduce some stream calls and remove a find user from the app's status changes ([#17115](https://github.com/RocketChat/Rocket.Chat/pull/17115)) + +### 🐛 Bug fixes + + +- Federation delete room event not being dispatched ([#16861](https://github.com/RocketChat/Rocket.Chat/pull/16861) by [@1rV1N-git](https://github.com/1rV1N-git)) + +- Federation Event ROOM_ADD_USER not being dispatched ([#16878](https://github.com/RocketChat/Rocket.Chat/pull/16878) by [@1rV1N-git](https://github.com/1rV1N-git)) + +
+🔍 Minor changes + + +- Add User’s index for field `appId` ([#17075](https://github.com/RocketChat/Rocket.Chat/pull/17075)) + +- New Troubleshoot section for disabling features ([#17114](https://github.com/RocketChat/Rocket.Chat/pull/17114)) + +- Regression: Do not refresh statistics when opening the info panel ([#17060](https://github.com/RocketChat/Rocket.Chat/pull/17060)) + +- Release 3.0.10 ([#17126](https://github.com/RocketChat/Rocket.Chat/pull/17126) by [@1rV1N-git](https://github.com/1rV1N-git)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@1rV1N-git](https://github.com/1rV1N-git) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.9 +`2020-03-31 · 1 🐛 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Apps Engine notifyRoom sending notification to wrong users ([#17093](https://github.com/RocketChat/Rocket.Chat/pull/17093)) + +
+🔍 Minor changes + + +- Release 3.0.9 ([#17094](https://github.com/RocketChat/Rocket.Chat/pull/17094)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.8 +`2020-03-30 · 2 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Emit livechat events to instace only ([#17086](https://github.com/RocketChat/Rocket.Chat/pull/17086)) + +- Error when websocket received status update event ([#17089](https://github.com/RocketChat/Rocket.Chat/pull/17089)) + +
+🔍 Minor changes + + +- Reduce notifyUser propagation ([#17088](https://github.com/RocketChat/Rocket.Chat/pull/17088)) + +- Regression: Remove model observe that was used to control the status of the Omnichannel agents ([#17078](https://github.com/RocketChat/Rocket.Chat/pull/17078)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.7 +`2020-03-25 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@renatobecker](https://github.com/renatobecker) + +# 3.0.6 +`2020-03-25 · 1 🐛 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787)) + +
+🔍 Minor changes + + +- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@renatobecker](https://github.com/renatobecker) + +# 3.0.5 +`2020-03-24 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Race conditions on/before login ([#16989](https://github.com/RocketChat/Rocket.Chat/pull/16989)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.4 +`2020-03-16 · 1 🚀 · 2 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🚀 Improvements + + +- Send files over REST API ([#16617](https://github.com/RocketChat/Rocket.Chat/pull/16617)) + +### 🐛 Bug fixes + + +- Integrations page pagination ([#16838](https://github.com/RocketChat/Rocket.Chat/pull/16838)) + +- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.3 +`2020-03-02 · 5 🐛 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618)) + +- Language country has been ignored on translation load ([#16757](https://github.com/RocketChat/Rocket.Chat/pull/16757)) + +- LDAP sync admin action was not syncing existent users ([#16671](https://github.com/RocketChat/Rocket.Chat/pull/16671)) + +- Manual Register use correct state for determining registered ([#16726](https://github.com/RocketChat/Rocket.Chat/pull/16726)) + +- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) + +# 3.0.2 +`2020-02-21 · 4 🐛 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Clear unread red line when the ESC key is pressed ([#16668](https://github.com/RocketChat/Rocket.Chat/pull/16668)) + +- ie11 support ([#16682](https://github.com/RocketChat/Rocket.Chat/pull/16682)) + +- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603)) + +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.1 +`2020-02-19 · 7 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Admin height if the blue banner is opened ([#16629](https://github.com/RocketChat/Rocket.Chat/pull/16629)) + +- Block user option inside admin view ([#16626](https://github.com/RocketChat/Rocket.Chat/pull/16626)) + +- Data converters overriding fields added by apps ([#16639](https://github.com/RocketChat/Rocket.Chat/pull/16639)) + +- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623)) + +- Regression: Jitsi on external window infinite loop ([#16625](https://github.com/RocketChat/Rocket.Chat/pull/16625)) + +- Regression: New 'app' role with no permissions when updating to 3.0.0 ([#16637](https://github.com/RocketChat/Rocket.Chat/pull/16637)) + +- UiKit not updating new actionIds received as responses from actions ([#16624](https://github.com/RocketChat/Rocket.Chat/pull/16624)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 3.0.0 +`2020-02-14 · 7 ️️️⚠️ · 10 🎉 · 11 🚀 · 41 🐛 · 49 🔍 · 21 👩‍💻👨‍💻` + +### Engine versions +- Node: `12.14.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### ⚠️ BREAKING CHANGES + + +- Change apps/icon endpoint to return app's icon and use it to show on Ui Kit modal ([#16522](https://github.com/RocketChat/Rocket.Chat/pull/16522)) + +- Filter System messages per room ([#16369](https://github.com/RocketChat/Rocket.Chat/pull/16369) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Hide system messages ([#16243](https://github.com/RocketChat/Rocket.Chat/pull/16243) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Remove deprecated publications ([#16351](https://github.com/RocketChat/Rocket.Chat/pull/16351)) + +- Removed room counter from sidebar ([#16036](https://github.com/RocketChat/Rocket.Chat/pull/16036)) + +- TLS v1.0 and TLS v1.1 were disabled by due to NodeJS update to v12. You can still enable them by using flags like `--tls-min-v1.0` and `--tls-min-v1.1` + +- Upgrade to Meteor 1.9 and NodeJS 12 ([#16252](https://github.com/RocketChat/Rocket.Chat/pull/16252)) + +### 🎉 New features + + +- Add GUI for customFields in Omnichannel conversations ([#15840](https://github.com/RocketChat/Rocket.Chat/pull/15840) by [@antkaz](https://github.com/antkaz)) + +- Button to download admin server info ([#16059](https://github.com/RocketChat/Rocket.Chat/pull/16059)) + +- Check the Omnichannel service status per Department ([#16425](https://github.com/RocketChat/Rocket.Chat/pull/16425) by [@lolimay](https://github.com/lolimay)) + +- Create a user for the Apps during installation ([#15896](https://github.com/RocketChat/Rocket.Chat/pull/15896) by [@Cool-fire](https://github.com/Cool-fire) & [@lolimay](https://github.com/lolimay)) + +- Enforce plain text emails converting from HTML when no text version supplied ([#16063](https://github.com/RocketChat/Rocket.Chat/pull/16063)) + +- Setting to only send plain text emails ([#16065](https://github.com/RocketChat/Rocket.Chat/pull/16065)) + +- Setting Top navbar in embedded mode ([#16064](https://github.com/RocketChat/Rocket.Chat/pull/16064)) + +- Sort the Omnichannel Chat list according to the user preferences ([#16437](https://github.com/RocketChat/Rocket.Chat/pull/16437)) + +- UiKit - Interactive UI elements for Rocket.Chat Apps ([#16048](https://github.com/RocketChat/Rocket.Chat/pull/16048)) + +- update on mongo, node and caddy on snap ([#16167](https://github.com/RocketChat/Rocket.Chat/pull/16167)) + +### 🚀 Improvements + + +- Changes App user's status when the app was enabled/disabled ([#16392](https://github.com/RocketChat/Rocket.Chat/pull/16392) by [@lolimay](https://github.com/lolimay)) + +- Improve function to check if setting has changed ([#16181](https://github.com/RocketChat/Rocket.Chat/pull/16181)) + +- Log as info level when Method Rate Limiters are reached ([#16446](https://github.com/RocketChat/Rocket.Chat/pull/16446)) + +- Major overhaul on data importers ([#16279](https://github.com/RocketChat/Rocket.Chat/pull/16279)) + +- Prevent "App user" from being deleted by the admin ([#16373](https://github.com/RocketChat/Rocket.Chat/pull/16373) by [@lolimay](https://github.com/lolimay)) + +- Remove NRR ([#16071](https://github.com/RocketChat/Rocket.Chat/pull/16071)) + +- Request user presence on demand ([#16348](https://github.com/RocketChat/Rocket.Chat/pull/16348)) + +- Set the color of the cancel button on modals to #bdbebf for enhanced visibiity ([#15913](https://github.com/RocketChat/Rocket.Chat/pull/15913) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Show more information related to the Omnichannel room closing data ([#16414](https://github.com/RocketChat/Rocket.Chat/pull/16414)) + +- Status Text form validation ([#16121](https://github.com/RocketChat/Rocket.Chat/pull/16121)) + +- Update katex version ([#16393](https://github.com/RocketChat/Rocket.Chat/pull/16393)) + +### 🐛 Bug fixes + + +- "User not found" for direct messages ([#16047](https://github.com/RocketChat/Rocket.Chat/pull/16047)) + +- `stdout` streamer infinite loop ([#16452](https://github.com/RocketChat/Rocket.Chat/pull/16452)) + +- Adding 'lang' tag ([#16375](https://github.com/RocketChat/Rocket.Chat/pull/16375) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- api-bypass-rate-limiter permission was not working ([#16080](https://github.com/RocketChat/Rocket.Chat/pull/16080)) + +- App removal was moving logs to the trash collection ([#16362](https://github.com/RocketChat/Rocket.Chat/pull/16362)) + +- auto translate cache ([#15768](https://github.com/RocketChat/Rocket.Chat/pull/15768) by [@vickyokrm](https://github.com/vickyokrm)) + +- Break message-attachment text to the next line ([#16039](https://github.com/RocketChat/Rocket.Chat/pull/16039) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Bug on starting Jitsi video calls , multiple messages ([#16601](https://github.com/RocketChat/Rocket.Chat/pull/16601)) + +- Container heights ([#16388](https://github.com/RocketChat/Rocket.Chat/pull/16388)) + +- Do not stop on DM imports if one of users was not found ([#16547](https://github.com/RocketChat/Rocket.Chat/pull/16547)) + +- Drag and drop disabled when file upload is disabled ([#16049](https://github.com/RocketChat/Rocket.Chat/pull/16049) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Embedded style when using 'go' command ([#16051](https://github.com/RocketChat/Rocket.Chat/pull/16051)) + +- Error when successfully joining room by invite link ([#16571](https://github.com/RocketChat/Rocket.Chat/pull/16571)) + +- FileUpload.getBuffer was not working through the Apps-Engine ([#16234](https://github.com/RocketChat/Rocket.Chat/pull/16234)) + +- Highlight freezing the UI ([#16378](https://github.com/RocketChat/Rocket.Chat/pull/16378)) + +- Integrations admin page ([#16183](https://github.com/RocketChat/Rocket.Chat/pull/16183)) + +- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233)) + +- Introduce AppLivechatBridge.isOnlineAsync method ([#16467](https://github.com/RocketChat/Rocket.Chat/pull/16467)) + +- Invite links proxy URLs not working when using CDN ([#16581](https://github.com/RocketChat/Rocket.Chat/pull/16581)) + +- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176)) + +- Livechat Widget version 1.3.1 ([#16580](https://github.com/RocketChat/Rocket.Chat/pull/16580)) + +- Login change language button ([#16085](https://github.com/RocketChat/Rocket.Chat/pull/16085) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Mail Msg Cancel button not closing the flexbar ([#16263](https://github.com/RocketChat/Rocket.Chat/pull/16263) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Missing edited icon in newly created messages ([#16484](https://github.com/RocketChat/Rocket.Chat/pull/16484)) + +- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433)) + +- Read Message after receive a message and the room is opened ([#16473](https://github.com/RocketChat/Rocket.Chat/pull/16473)) + +- Readme Help wanted section ([#16197](https://github.com/RocketChat/Rocket.Chat/pull/16197)) + +- Result of get avatar from url can be null ([#16123](https://github.com/RocketChat/Rocket.Chat/pull/16123)) + +- Role tags missing - Description field explanation ([#16356](https://github.com/RocketChat/Rocket.Chat/pull/16356) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Rooms not being marked as read sometimes ([#16397](https://github.com/RocketChat/Rocket.Chat/pull/16397)) + +- SafePorts: Ports 80, 8080 & 443 linked to respective protocols (#16108) ([#16108](https://github.com/RocketChat/Rocket.Chat/pull/16108)) + +- Save password without confirmation ([#16060](https://github.com/RocketChat/Rocket.Chat/pull/16060) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Send message with pending messages ([#16474](https://github.com/RocketChat/Rocket.Chat/pull/16474)) + +- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147)) + +- Slack CSV User Importer ([#16253](https://github.com/RocketChat/Rocket.Chat/pull/16253)) + +- The "click to load" text is hard-coded and not translated. ([#16142](https://github.com/RocketChat/Rocket.Chat/pull/16142) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Thread message icon overlapping text ([#16083](https://github.com/RocketChat/Rocket.Chat/pull/16083)) + +- Unknown error when sending message if 'Set a User Name to Alias in Message' setting is enabled ([#16347](https://github.com/RocketChat/Rocket.Chat/pull/16347)) + +- User stuck after reset password ([#16184](https://github.com/RocketChat/Rocket.Chat/pull/16184)) + +- Video message sent to wrong room ([#16113](https://github.com/RocketChat/Rocket.Chat/pull/16113)) + +- When copying invite links, multiple toastr messages ([#16578](https://github.com/RocketChat/Rocket.Chat/pull/16578)) + +
+🔍 Minor changes + + +- Add breaking notice regarding TLS ([#16575](https://github.com/RocketChat/Rocket.Chat/pull/16575)) + +- Add Cloud Info to translation dictionary ([#16122](https://github.com/RocketChat/Rocket.Chat/pull/16122) by [@aviral243](https://github.com/aviral243)) + +- Add missing translations ([#16150](https://github.com/RocketChat/Rocket.Chat/pull/16150) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Add Ui Kit container ([#16503](https://github.com/RocketChat/Rocket.Chat/pull/16503)) + +- Catch zip errors on import file load ([#16494](https://github.com/RocketChat/Rocket.Chat/pull/16494)) + +- Disable PR Docker image build ([#16141](https://github.com/RocketChat/Rocket.Chat/pull/16141)) + +- Exclude federated and app users from active user count ([#16489](https://github.com/RocketChat/Rocket.Chat/pull/16489)) + +- Fix assets download on CI ([#16352](https://github.com/RocketChat/Rocket.Chat/pull/16352)) + +- Fix github actions accessing the github registry ([#16521](https://github.com/RocketChat/Rocket.Chat/pull/16521) by [@mrsimpson](https://github.com/mrsimpson)) + +- Fix index creation for apps_logs collection ([#16401](https://github.com/RocketChat/Rocket.Chat/pull/16401)) + +- Fix Preview Docker image build ([#16379](https://github.com/RocketChat/Rocket.Chat/pull/16379)) + +- Fix tests ([#16469](https://github.com/RocketChat/Rocket.Chat/pull/16469)) + +- Fix: License missing from manual register handler ([#16505](https://github.com/RocketChat/Rocket.Chat/pull/16505)) + +- LingoHub based on develop ([#16450](https://github.com/RocketChat/Rocket.Chat/pull/16450)) + +- Lint: Resolve complexity warnings ([#16114](https://github.com/RocketChat/Rocket.Chat/pull/16114)) + +- Merge master into develop & Set version to 2.5.0-develop ([#16107](https://github.com/RocketChat/Rocket.Chat/pull/16107)) + +- Regression: allow private channels to hide system messages ([#16483](https://github.com/RocketChat/Rocket.Chat/pull/16483)) + +- Regression: App deletion wasn’t returning the correct information ([#16360](https://github.com/RocketChat/Rocket.Chat/pull/16360)) + +- Regression: Fix app user status change for non-existing user ([#16458](https://github.com/RocketChat/Rocket.Chat/pull/16458)) + +- Regression: fix read unread messages ([#16562](https://github.com/RocketChat/Rocket.Chat/pull/16562)) + +- Regression: Fix sending a message not scrolling to bottom ([#16451](https://github.com/RocketChat/Rocket.Chat/pull/16451)) + +- Regression: Fix sequential messages grouping ([#16386](https://github.com/RocketChat/Rocket.Chat/pull/16386)) + +- Regression: Fix status bar margins ([#16438](https://github.com/RocketChat/Rocket.Chat/pull/16438)) + +- Regression: Fix uikit modal closing on click ([#16475](https://github.com/RocketChat/Rocket.Chat/pull/16475)) + +- Regression: Fix undefined presence after reconnect ([#16477](https://github.com/RocketChat/Rocket.Chat/pull/16477)) + +- Regression: Modal onSubmit ([#16556](https://github.com/RocketChat/Rocket.Chat/pull/16556)) + +- Regression: prevent submit modal ([#16488](https://github.com/RocketChat/Rocket.Chat/pull/16488)) + +- Regression: Rate limiter was not working due to Meteor internal changes ([#16361](https://github.com/RocketChat/Rocket.Chat/pull/16361)) + +- Regression: recent opened rooms being marked as read ([#16442](https://github.com/RocketChat/Rocket.Chat/pull/16442)) + +- Regression: Send app info along with interaction payload to the UI ([#16511](https://github.com/RocketChat/Rocket.Chat/pull/16511)) + +- Regression: send file modal not working via keyboard ([#16607](https://github.com/RocketChat/Rocket.Chat/pull/16607)) + +- Regression: Ui Kit messaging issues (#16513) ([#16513](https://github.com/RocketChat/Rocket.Chat/pull/16513)) + +- Regression: UIKit - Send container info on block actions triggered on a message ([#16514](https://github.com/RocketChat/Rocket.Chat/pull/16514)) + +- Regression: UIkit input states ([#16552](https://github.com/RocketChat/Rocket.Chat/pull/16552)) + +- Regression: UIKit missing select states: error/disabled ([#16540](https://github.com/RocketChat/Rocket.Chat/pull/16540)) + +- Regression: UIKit update modal actions ([#16570](https://github.com/RocketChat/Rocket.Chat/pull/16570)) + +- Regression: update package-lock ([#16528](https://github.com/RocketChat/Rocket.Chat/pull/16528)) + +- Regression: Update Uikit ([#16515](https://github.com/RocketChat/Rocket.Chat/pull/16515)) + +- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444)) + +- Release 2.4.9 ([#16544](https://github.com/RocketChat/Rocket.Chat/pull/16544)) + +- Remove users.info being called without need ([#16504](https://github.com/RocketChat/Rocket.Chat/pull/16504)) + +- Revert importer streamed uploads ([#16465](https://github.com/RocketChat/Rocket.Chat/pull/16465)) + +- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395)) + +- Send build artifacts to S3 ([#16237](https://github.com/RocketChat/Rocket.Chat/pull/16237)) + +- Update apps engine to 1.12.0-beta.2496 ([#16398](https://github.com/RocketChat/Rocket.Chat/pull/16398)) + +- Update Apps-Engine version ([#16584](https://github.com/RocketChat/Rocket.Chat/pull/16584)) + +- Update presence package to 2.6.1 ([#16486](https://github.com/RocketChat/Rocket.Chat/pull/16486)) + +- Use base64 for import files upload to prevent file corruption ([#16516](https://github.com/RocketChat/Rocket.Chat/pull/16516)) + +- Use GitHub Actions to store builds ([#16443](https://github.com/RocketChat/Rocket.Chat/pull/16443)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Cool-fire](https://github.com/Cool-fire) +- [@antkaz](https://github.com/antkaz) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@aviral243](https://github.com/aviral243) +- [@lolimay](https://github.com/lolimay) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@mrsimpson](https://github.com/mrsimpson) +- [@ritwizsinha](https://github.com/ritwizsinha) +- [@vickyokrm](https://github.com/vickyokrm) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 2.4.14 +`2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` +- Apps-Engine: `1.11.2` + +### 🐛 Bug fixes + + +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) + +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) + +# 2.4.12 +`2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Email configs not updating after setting changes ([#17578](https://github.com/RocketChat/Rocket.Chat/pull/17578)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 2.4.10 +`2020-02-20 · 1 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.9 +`2020-02-10 · 1 🐛 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- `stdout` streamer infinite loop ([#16452](https://github.com/RocketChat/Rocket.Chat/pull/16452)) + +
+🔍 Minor changes + + +- Release 2.4.9 ([#16544](https://github.com/RocketChat/Rocket.Chat/pull/16544)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.8 +`2020-02-07 · 2 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Release 2.4.8 ([#16506](https://github.com/RocketChat/Rocket.Chat/pull/16506)) + +- Update presence package to 2.6.1 ([#16486](https://github.com/RocketChat/Rocket.Chat/pull/16486)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.7 +`2020-02-03 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433)) + +
+🔍 Minor changes + + +- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@ggazzo](https://github.com/ggazzo) + +# 2.4.6 +`2020-01-31 · 3 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Fix index creation for apps_logs collection ([#16401](https://github.com/RocketChat/Rocket.Chat/pull/16401)) + +- Release 2.4.6 ([#16402](https://github.com/RocketChat/Rocket.Chat/pull/16402)) + +- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.5 +`2020-01-29 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Release 2.4.5 ([#16380](https://github.com/RocketChat/Rocket.Chat/pull/16380)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.4 +`2020-01-29 · 1 🐛 · 2 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- App removal was moving logs to the trash collection ([#16362](https://github.com/RocketChat/Rocket.Chat/pull/16362)) + +
+🔍 Minor changes + + +- Regression: Rate limiter was not working due to Meteor internal changes ([#16361](https://github.com/RocketChat/Rocket.Chat/pull/16361)) + +- Release 2.4.4 ([#16377](https://github.com/RocketChat/Rocket.Chat/pull/16377)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.3 +`2020-01-28 · 2 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176)) + +- Unknown error when sending message if 'Set a User Name to Alias in Message' setting is enabled ([#16347](https://github.com/RocketChat/Rocket.Chat/pull/16347)) + +
+🔍 Minor changes + + +- Release 2.4.3 ([#16358](https://github.com/RocketChat/Rocket.Chat/pull/16358)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.2 +`2020-01-17 · 4 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233)) + +- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147)) + +- Slack CSV User Importer ([#16253](https://github.com/RocketChat/Rocket.Chat/pull/16253)) + +- User stuck after reset password ([#16184](https://github.com/RocketChat/Rocket.Chat/pull/16184)) + +
+🔍 Minor changes + + +- Release 2.4.2 ([#16274](https://github.com/RocketChat/Rocket.Chat/pull/16274)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 2.4.1 +`2020-01-10 · 3 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Add missing password field back to administration area ([#16171](https://github.com/RocketChat/Rocket.Chat/pull/16171)) + +- Enable apps change properties of the sender on the message as before ([#16189](https://github.com/RocketChat/Rocket.Chat/pull/16189)) + +- JS errors on Administration page ([#16139](https://github.com/RocketChat/Rocket.Chat/pull/16139) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +
+🔍 Minor changes + + +- Release 2.4.1 ([#16195](https://github.com/RocketChat/Rocket.Chat/pull/16195) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.4.0 +`2019-12-27 · 4 🎉 · 28 🚀 · 29 🐛 · 19 🔍 · 22 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.17.0` +- NPM: `6.13.4` +- MongoDB: `3.4, 3.6, 4.0` + +### 🎉 New features + + +- Apps-Engine event for when a livechat room is closed ([#15837](https://github.com/RocketChat/Rocket.Chat/pull/15837) by [@lolimay](https://github.com/lolimay)) + +- Do not print emails in console on production mode ([#15928](https://github.com/RocketChat/Rocket.Chat/pull/15928)) + +- Invite links: share a link to invite users ([#15933](https://github.com/RocketChat/Rocket.Chat/pull/15933)) + +- Logout other clients when changing password ([#15927](https://github.com/RocketChat/Rocket.Chat/pull/15927)) + +### 🚀 Improvements + + +- Add deprecate warning in some unused publications ([#15935](https://github.com/RocketChat/Rocket.Chat/pull/15935)) + +- Livechat realtime dashboard ([#15792](https://github.com/RocketChat/Rocket.Chat/pull/15792)) + +- Move 'Reply in Thread' button from menu to message actions ([#15685](https://github.com/RocketChat/Rocket.Chat/pull/15685) by [@antkaz](https://github.com/antkaz)) + +- Notify logged agents when their departments change ([#16033](https://github.com/RocketChat/Rocket.Chat/pull/16033)) + +- Replace adminRooms publication by REST ([#15948](https://github.com/RocketChat/Rocket.Chat/pull/15948)) + +- Replace customSounds publication by REST ([#15907](https://github.com/RocketChat/Rocket.Chat/pull/15907)) + +- Replace discussionsOfARoom publication by REST ([#15908](https://github.com/RocketChat/Rocket.Chat/pull/15908)) + +- Replace forgotten livechat:departmentAgents subscriptions ([#15970](https://github.com/RocketChat/Rocket.Chat/pull/15970)) + +- Replace fullEmojiData publication by REST ([#15901](https://github.com/RocketChat/Rocket.Chat/pull/15901)) + +- Replace fullUserData publication by REST ([#15650](https://github.com/RocketChat/Rocket.Chat/pull/15650)) + +- Replace fullUserStatusData publication by REST ([#15942](https://github.com/RocketChat/Rocket.Chat/pull/15942)) + +- Replace integrations and integrationHistory publications by REST ([#15885](https://github.com/RocketChat/Rocket.Chat/pull/15885)) + +- Replace livechat:customFields to REST ([#15496](https://github.com/RocketChat/Rocket.Chat/pull/15496)) + +- Replace livechat:inquiry publication by REST and Streamer ([#15977](https://github.com/RocketChat/Rocket.Chat/pull/15977)) + +- Replace livechat:managers publication by REST ([#15944](https://github.com/RocketChat/Rocket.Chat/pull/15944)) + +- Replace livechat:officeHour publication to REST ([#15503](https://github.com/RocketChat/Rocket.Chat/pull/15503)) + +- Replace livechat:queue subscription ([#15612](https://github.com/RocketChat/Rocket.Chat/pull/15612)) + +- Replace livechat:rooms publication by REST ([#15968](https://github.com/RocketChat/Rocket.Chat/pull/15968)) + +- Replace livechat:visitorHistory publication by REST ([#15943](https://github.com/RocketChat/Rocket.Chat/pull/15943)) + +- Replace oauth publications by REST ([#15878](https://github.com/RocketChat/Rocket.Chat/pull/15878)) + +- Replace roles publication by REST ([#15910](https://github.com/RocketChat/Rocket.Chat/pull/15910)) + +- Replace stdout publication by REST ([#16004](https://github.com/RocketChat/Rocket.Chat/pull/16004)) + +- Replace userAutocomplete publication by REST ([#15956](https://github.com/RocketChat/Rocket.Chat/pull/15956)) + +- Replace userData subscriptions by REST ([#15916](https://github.com/RocketChat/Rocket.Chat/pull/15916)) + +- Replace webdavAccounts publication by REST ([#15926](https://github.com/RocketChat/Rocket.Chat/pull/15926)) + +- Sorting on livechat analytics queries were wrong ([#16021](https://github.com/RocketChat/Rocket.Chat/pull/16021)) + +- Update ui for Roles field ([#15888](https://github.com/RocketChat/Rocket.Chat/pull/15888) by [@antkaz](https://github.com/antkaz)) + +- Validate user identity on send message process ([#15887](https://github.com/RocketChat/Rocket.Chat/pull/15887)) + +### 🐛 Bug fixes + + +- Add time format for latest message on the sidebar ([#15930](https://github.com/RocketChat/Rocket.Chat/pull/15930) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Added Join button to Read Only rooms. ([#16016](https://github.com/RocketChat/Rocket.Chat/pull/16016)) + +- Admin menu not showing after renamed integration permissions ([#15937](https://github.com/RocketChat/Rocket.Chat/pull/15937) by [@n-se](https://github.com/n-se)) + +- Admin Setting descriptions and Storybook ([#15994](https://github.com/RocketChat/Rocket.Chat/pull/15994)) + +- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934)) + +- Auto load image user preference ([#15895](https://github.com/RocketChat/Rocket.Chat/pull/15895)) + +- Changed renderMessage priority, fixed Katex on/off setting ([#16012](https://github.com/RocketChat/Rocket.Chat/pull/16012)) + +- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898)) + +- Don't throw an error when a message is prevented from apps engine ([#15850](https://github.com/RocketChat/Rocket.Chat/pull/15850) by [@wreiske](https://github.com/wreiske)) + +- Dropzone being stuck when dragging to thread ([#16006](https://github.com/RocketChat/Rocket.Chat/pull/16006)) + +- Empty security section when 2fa is disabled ([#16009](https://github.com/RocketChat/Rocket.Chat/pull/16009)) + +- Error of bind environment on user data export ([#15985](https://github.com/RocketChat/Rocket.Chat/pull/15985)) + +- Fix sort livechat rooms ([#16001](https://github.com/RocketChat/Rocket.Chat/pull/16001)) + +- Guest's name field missing when forwarding livechat rooms ([#15991](https://github.com/RocketChat/Rocket.Chat/pull/15991)) + +- Importer: Variable name appearing instead of it's value ([#16010](https://github.com/RocketChat/Rocket.Chat/pull/16010) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Incorrect translation key on Livechat Appearance template ([#15975](https://github.com/RocketChat/Rocket.Chat/pull/15975) by [@ritwizsinha](https://github.com/ritwizsinha)) + +- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957)) + +- Livechat build without NodeJS installed ([#15903](https://github.com/RocketChat/Rocket.Chat/pull/15903) by [@localguru](https://github.com/localguru)) + +- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915)) + +- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897)) + +- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966)) + +- Message list scrolling to bottom on reactions ([#16018](https://github.com/RocketChat/Rocket.Chat/pull/16018) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- new message popup ([#16017](https://github.com/RocketChat/Rocket.Chat/pull/16017) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- Registration form was hidden when login form was disabled ([#16062](https://github.com/RocketChat/Rocket.Chat/pull/16062)) + +- SAML logout error ([#15978](https://github.com/RocketChat/Rocket.Chat/pull/15978)) + +- Server crash on sync with no response ([#15919](https://github.com/RocketChat/Rocket.Chat/pull/15919)) + +- Thread Replies in Search ([#15841](https://github.com/RocketChat/Rocket.Chat/pull/15841)) + +- width of upload-progress-text ([#16023](https://github.com/RocketChat/Rocket.Chat/pull/16023) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- z-index of new message button ([#16013](https://github.com/RocketChat/Rocket.Chat/pull/16013) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +
+🔍 Minor changes + + +- [CHORE] Replace findOne with findOneById methods (Omnichannel) ([#15894](https://github.com/RocketChat/Rocket.Chat/pull/15894)) + +- Change migration number 169 <-> 170 ([#15940](https://github.com/RocketChat/Rocket.Chat/pull/15940)) + +- Check package-lock consistency with package.json on CI ([#15961](https://github.com/RocketChat/Rocket.Chat/pull/15961)) + +- Enable typescript lint ([#15979](https://github.com/RocketChat/Rocket.Chat/pull/15979)) + +- Fix 'How it all started' link on README ([#15962](https://github.com/RocketChat/Rocket.Chat/pull/15962) by [@zdumitru](https://github.com/zdumitru)) + +- Fix typo in Italian translation ([#15998](https://github.com/RocketChat/Rocket.Chat/pull/15998) by [@iannuzzelli](https://github.com/iannuzzelli)) + +- Fixed Grammatical Mistakes. ([#15570](https://github.com/RocketChat/Rocket.Chat/pull/15570) by [@breaking-let](https://github.com/breaking-let)) + +- GitHub CI ([#15918](https://github.com/RocketChat/Rocket.Chat/pull/15918)) + +- LingoHub based on develop ([#15988](https://github.com/RocketChat/Rocket.Chat/pull/15988)) + +- LingoHub based on develop ([#15939](https://github.com/RocketChat/Rocket.Chat/pull/15939)) + +- Merge master into develop & Set version to 3.0.0-develop ([#15872](https://github.com/RocketChat/Rocket.Chat/pull/15872)) + +- Meteor update to 1.8.2 ([#15873](https://github.com/RocketChat/Rocket.Chat/pull/15873)) + +- Regression: Missing button to copy Invite links ([#16084](https://github.com/RocketChat/Rocket.Chat/pull/16084)) + +- Regression: Update components ([#16053](https://github.com/RocketChat/Rocket.Chat/pull/16053)) + +- Remove unnecessary cron starts ([#15989](https://github.com/RocketChat/Rocket.Chat/pull/15989)) + +- Some performance improvements ([#15886](https://github.com/RocketChat/Rocket.Chat/pull/15886)) + +- Update Meteor to 1.8.3 ([#16037](https://github.com/RocketChat/Rocket.Chat/pull/16037)) + +- Update NodeJS to 8.17.0 ([#16043](https://github.com/RocketChat/Rocket.Chat/pull/16043)) + +- Upgrade limax to 2.0.0 ([#16020](https://github.com/RocketChat/Rocket.Chat/pull/16020)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@antkaz](https://github.com/antkaz) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@breaking-let](https://github.com/breaking-let) +- [@iannuzzelli](https://github.com/iannuzzelli) +- [@localguru](https://github.com/localguru) +- [@lolimay](https://github.com/lolimay) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@n-se](https://github.com/n-se) +- [@ritwizsinha](https://github.com/ritwizsinha) +- [@wreiske](https://github.com/wreiske) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 2.3.3 +`2020-01-10 · 1 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` + +### 🐛 Bug fixes + + +- Add missing password field back to administration area ([#16171](https://github.com/RocketChat/Rocket.Chat/pull/16171)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 2.3.2 +`2019-12-12 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957)) + +- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) + +# 2.3.1 +`2019-12-09 · 6 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Admin menu not showing after renamed integration permissions ([#15937](https://github.com/RocketChat/Rocket.Chat/pull/15937) by [@n-se](https://github.com/n-se)) + +- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934)) + +- Auto load image user preference ([#15895](https://github.com/RocketChat/Rocket.Chat/pull/15895)) + +- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898)) + +- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915)) + +- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@n-se](https://github.com/n-se) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) + +# 2.3.0 +`2019-11-27 · 13 🎉 · 17 🚀 · 26 🐛 · 17 🔍 · 17 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🎉 New features + + +- Add a new stream to emit and listen room data events ([#15770](https://github.com/RocketChat/Rocket.Chat/pull/15770)) + +- Add ability to users reset their own E2E key ([#15777](https://github.com/RocketChat/Rocket.Chat/pull/15777)) + +- add delete-own-message permission ([#15512](https://github.com/RocketChat/Rocket.Chat/pull/15512)) + +- Add forms to view and edit Livechat agents info ([#15703](https://github.com/RocketChat/Rocket.Chat/pull/15703)) + +- Allow Regexes on SAML user field mapping ([#15743](https://github.com/RocketChat/Rocket.Chat/pull/15743)) + +- Livechat analytics ([#15230](https://github.com/RocketChat/Rocket.Chat/pull/15230)) + +- Livechat analytics functions ([#15666](https://github.com/RocketChat/Rocket.Chat/pull/15666)) + +- Notify users when their email address change ([#15828](https://github.com/RocketChat/Rocket.Chat/pull/15828)) + +- Option for admins to set a random password to a user ([#15818](https://github.com/RocketChat/Rocket.Chat/pull/15818)) + +- Option on livechat departments to ensure a chat has tags before closing ([#15752](https://github.com/RocketChat/Rocket.Chat/pull/15752)) + +- SAML login without popup windows ([#15836](https://github.com/RocketChat/Rocket.Chat/pull/15836)) + +- Setting to dismiss desktop notification only after interaction ([#14807](https://github.com/RocketChat/Rocket.Chat/pull/14807) by [@mpdbl](https://github.com/mpdbl)) + +- Workspace Manual Registration ([#15442](https://github.com/RocketChat/Rocket.Chat/pull/15442)) + +### 🚀 Improvements + + +- Add more fields to iframe integration event `unread-changed-by-subscription` ([#15786](https://github.com/RocketChat/Rocket.Chat/pull/15786)) + +- Administration UI - React and Fuselage components ([#15452](https://github.com/RocketChat/Rocket.Chat/pull/15452)) + +- Allow dragging of images and text from browsers ([#15691](https://github.com/RocketChat/Rocket.Chat/pull/15691)) + +- dynamic import livechat views ([#15775](https://github.com/RocketChat/Rocket.Chat/pull/15775)) + +- Lazyload Chart.js ([#15764](https://github.com/RocketChat/Rocket.Chat/pull/15764)) + +- Lazyload qrcode lib ([#15741](https://github.com/RocketChat/Rocket.Chat/pull/15741)) + +- Make push notification batchsize and interval configurable ([#15804](https://github.com/RocketChat/Rocket.Chat/pull/15804) by [@Exordian](https://github.com/Exordian)) + +- Remove "EmojiCustom" unused subscription ([#15658](https://github.com/RocketChat/Rocket.Chat/pull/15658)) + +- remove computations inside messageAttachment ([#15716](https://github.com/RocketChat/Rocket.Chat/pull/15716)) + +- Replace livechat:departmentAgents subscription to REST ([#15529](https://github.com/RocketChat/Rocket.Chat/pull/15529)) + +- Replace livechat:externalMessages publication by REST ([#15643](https://github.com/RocketChat/Rocket.Chat/pull/15643)) + +- Replace livechat:pagesvisited publication by REST ([#15629](https://github.com/RocketChat/Rocket.Chat/pull/15629)) + +- Replace livechat:visitorInfo publication by REST ([#15639](https://github.com/RocketChat/Rocket.Chat/pull/15639)) + +- Replace personalAccessTokens publication by REST ([#15644](https://github.com/RocketChat/Rocket.Chat/pull/15644)) + +- Replace snippetedMessage publication by REST ([#15679](https://github.com/RocketChat/Rocket.Chat/pull/15679)) + +- Replace snipptedMessages publication by REST ([#15678](https://github.com/RocketChat/Rocket.Chat/pull/15678)) + +- Unfollow own threads ([#15740](https://github.com/RocketChat/Rocket.Chat/pull/15740)) + +### 🐛 Bug fixes + + +- Add button to reset.css ([#15773](https://github.com/RocketChat/Rocket.Chat/pull/15773)) + +- Add livechat agents into departments ([#15732](https://github.com/RocketChat/Rocket.Chat/pull/15732)) + +- Apply server side filters on Livechat lists ([#15717](https://github.com/RocketChat/Rocket.Chat/pull/15717)) + +- Block Show_Setup_Wizard Option ([#15623](https://github.com/RocketChat/Rocket.Chat/pull/15623)) + +- Changed cmsPage Style ([#15632](https://github.com/RocketChat/Rocket.Chat/pull/15632)) + +- Channel notification audio preferences ([#15771](https://github.com/RocketChat/Rocket.Chat/pull/15771)) + +- Duplicate label 'Hide Avatars' in accounts ([#15694](https://github.com/RocketChat/Rocket.Chat/pull/15694) by [@rajvaibhavdubey](https://github.com/rajvaibhavdubey)) + +- Edit in thread ([#15640](https://github.com/RocketChat/Rocket.Chat/pull/15640)) + +- Error when exporting user data ([#15654](https://github.com/RocketChat/Rocket.Chat/pull/15654)) + +- Forward Livechat UI and the related permissions ([#15718](https://github.com/RocketChat/Rocket.Chat/pull/15718)) + +- Ignore file uploads from message box if text/plain content is being pasted ([#15631](https://github.com/RocketChat/Rocket.Chat/pull/15631)) + +- line-height to show entire letters ([#15581](https://github.com/RocketChat/Rocket.Chat/pull/15581) by [@nstseek](https://github.com/nstseek)) + +- Livechat transfer history messages ([#15780](https://github.com/RocketChat/Rocket.Chat/pull/15780)) + +- Livechat webhook broken when sending an image ([#15699](https://github.com/RocketChat/Rocket.Chat/pull/15699) by [@tatosjb](https://github.com/tatosjb)) + +- Mentions before blockquote ([#15774](https://github.com/RocketChat/Rocket.Chat/pull/15774)) + +- Missing Privacy Policy Agree on register ([#15832](https://github.com/RocketChat/Rocket.Chat/pull/15832)) + +- Not valid relative URLs on message attachments ([#15651](https://github.com/RocketChat/Rocket.Chat/pull/15651)) + +- Null value at Notifications Preferences tab ([#15638](https://github.com/RocketChat/Rocket.Chat/pull/15638)) + +- Pasting images on reply as thread ([#15811](https://github.com/RocketChat/Rocket.Chat/pull/15811)) + +- Prevent agent last message undefined ([#15809](https://github.com/RocketChat/Rocket.Chat/pull/15809)) + +- Push: fix notification priority for google (FCM) ([#15803](https://github.com/RocketChat/Rocket.Chat/pull/15803) by [@Exordian](https://github.com/Exordian)) + +- REST endpoint `chat.syncMessages` returning an error with deleted messages ([#15824](https://github.com/RocketChat/Rocket.Chat/pull/15824)) + +- Sending messages to livechat rooms without a subscription ([#15707](https://github.com/RocketChat/Rocket.Chat/pull/15707)) + +- Sidebar font color was not respecting theming ([#15745](https://github.com/RocketChat/Rocket.Chat/pull/15745) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) + +- typo on PT-BR translation ([#15645](https://github.com/RocketChat/Rocket.Chat/pull/15645)) + +- Use Media Devices API to guess if a microphone is not available ([#15636](https://github.com/RocketChat/Rocket.Chat/pull/15636)) + +
+🔍 Minor changes + + +- [CHORE] Add lingohub to readme ([#15849](https://github.com/RocketChat/Rocket.Chat/pull/15849)) + +- [REGRESSION] Add livechat room type to the room's file list ([#15795](https://github.com/RocketChat/Rocket.Chat/pull/15795)) + +- Fix Livechat duplicated templates error ([#15869](https://github.com/RocketChat/Rocket.Chat/pull/15869)) + +- Fix notification migration ([#15783](https://github.com/RocketChat/Rocket.Chat/pull/15783)) + +- Improve LDAP Login Fallback setting description in portuguese ([#15655](https://github.com/RocketChat/Rocket.Chat/pull/15655)) + +- Improvements to random password field on user edit/creation ([#15870](https://github.com/RocketChat/Rocket.Chat/pull/15870)) + +- LingoHub based on develop ([#15822](https://github.com/RocketChat/Rocket.Chat/pull/15822)) + +- LingoHub based on develop ([#15763](https://github.com/RocketChat/Rocket.Chat/pull/15763)) + +- LingoHub based on develop ([#15728](https://github.com/RocketChat/Rocket.Chat/pull/15728)) + +- LingoHub based on develop ([#15688](https://github.com/RocketChat/Rocket.Chat/pull/15688)) + +- Merge master into develop & Set version to 2.3.0-develop ([#15683](https://github.com/RocketChat/Rocket.Chat/pull/15683)) + +- Regression: fix admin instances info page ([#15772](https://github.com/RocketChat/Rocket.Chat/pull/15772)) + +- Regression: Fix hide avatars in side bar preference ([#15709](https://github.com/RocketChat/Rocket.Chat/pull/15709)) + +- Regression: messageAttachments inside messageAttachments not receiving settings ([#15733](https://github.com/RocketChat/Rocket.Chat/pull/15733)) + +- Remove unused permission to reset users' E2E key ([#15860](https://github.com/RocketChat/Rocket.Chat/pull/15860)) + +- Remove yarn.lock ([#15689](https://github.com/RocketChat/Rocket.Chat/pull/15689)) + +- Update moment-timezone ([#15729](https://github.com/RocketChat/Rocket.Chat/pull/15729)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Exordian](https://github.com/Exordian) +- [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@mpdbl](https://github.com/mpdbl) +- [@nstseek](https://github.com/nstseek) +- [@rajvaibhavdubey](https://github.com/rajvaibhavdubey) +- [@tatosjb](https://github.com/tatosjb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 2.2.1 +`2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Markdown link parser ([#15794](https://github.com/RocketChat/Rocket.Chat/pull/15794)) + +- Updating an app via "Update" button errors out with "App already exists" ([#15814](https://github.com/RocketChat/Rocket.Chat/pull/15814)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) + +# 2.2.0 +`2019-10-27 · 14 🎉 · 16 🚀 · 24 🐛 · 28 🔍 · 27 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🎉 New features + + +- Accept GIFs and SVGs for Avatars converting them to PNG and keep transparency of PNGs ([#11385](https://github.com/RocketChat/Rocket.Chat/pull/11385)) + +- Add new Livechat appearance setting to set the conversation finished message ([#15577](https://github.com/RocketChat/Rocket.Chat/pull/15577)) + +- Add option to enable X-Frame-options header to avoid loading inside any Iframe ([#14698](https://github.com/RocketChat/Rocket.Chat/pull/14698)) + +- Add users.requestDataDownload API endpoint ([#14428](https://github.com/RocketChat/Rocket.Chat/pull/14428) by [@Hudell](https://github.com/Hudell) & [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- Added file type filter to RoomFiles ([#15289](https://github.com/RocketChat/Rocket.Chat/pull/15289) by [@juanpetterson](https://github.com/juanpetterson)) + +- Assign new Livechat conversations to bot agents first ([#15317](https://github.com/RocketChat/Rocket.Chat/pull/15317)) + +- Check if agent can receive new livechat conversations when its status is away/idle ([#15451](https://github.com/RocketChat/Rocket.Chat/pull/15451)) + +- close emoji box using Keyboard Escape key ([#13956](https://github.com/RocketChat/Rocket.Chat/pull/13956) by [@mohamedar97](https://github.com/mohamedar97)) + +- Import DMs from CSV files ([#15534](https://github.com/RocketChat/Rocket.Chat/pull/15534)) + +- Import SAML language and auto join SAML channels ([#14203](https://github.com/RocketChat/Rocket.Chat/pull/14203) by [@Hudell](https://github.com/Hudell) & [@unixtam](https://github.com/unixtam)) + +- Remove all closed Livechat chats ([#13991](https://github.com/RocketChat/Rocket.Chat/pull/13991) by [@knrt10](https://github.com/knrt10)) + +- Separate integration roles ([#13902](https://github.com/RocketChat/Rocket.Chat/pull/13902)) + +- Thread support to apps slashcommands and slashcommand previews ([#15574](https://github.com/RocketChat/Rocket.Chat/pull/15574)) + +- Update livechat widget version to 1.2.5 ([#15600](https://github.com/RocketChat/Rocket.Chat/pull/15600)) + +### 🚀 Improvements + + +- Cache hasPermissions ([#15589](https://github.com/RocketChat/Rocket.Chat/pull/15589)) + +- Detach React components from Meteor API ([#15482](https://github.com/RocketChat/Rocket.Chat/pull/15482)) + +- Disable edit visitor's phone number in SMS conversations ([#15593](https://github.com/RocketChat/Rocket.Chat/pull/15593)) + +- Lazyload Katex Package ([#15398](https://github.com/RocketChat/Rocket.Chat/pull/15398)) + +- Replace `livechat:departments` publication by REST Calls ([#15478](https://github.com/RocketChat/Rocket.Chat/pull/15478)) + +- Replace `livechat:triggers` publication by REST calls ([#15507](https://github.com/RocketChat/Rocket.Chat/pull/15507)) + +- Replace livechat:agents pub by REST calls ([#15490](https://github.com/RocketChat/Rocket.Chat/pull/15490)) + +- Replace livechat:appearance pub to REST ([#15510](https://github.com/RocketChat/Rocket.Chat/pull/15510)) + +- Replace livechat:integration publication by REST ([#15607](https://github.com/RocketChat/Rocket.Chat/pull/15607)) + +- Replace mentionedMessages publication to REST ([#15540](https://github.com/RocketChat/Rocket.Chat/pull/15540)) + +- Replace pinned messages subscription ([#15544](https://github.com/RocketChat/Rocket.Chat/pull/15544)) + +- Replace roomFilesWithSearchText subscription ([#15550](https://github.com/RocketChat/Rocket.Chat/pull/15550)) + +- Replace some livechat:rooms subscriptions ([#15532](https://github.com/RocketChat/Rocket.Chat/pull/15532)) + +- Replace starred messages subscription ([#15548](https://github.com/RocketChat/Rocket.Chat/pull/15548)) + +- Secure cookies when using HTTPS connection ([#15500](https://github.com/RocketChat/Rocket.Chat/pull/15500)) + +- Update Fuselage components on SetupWizard ([#15457](https://github.com/RocketChat/Rocket.Chat/pull/15457)) + +### 🐛 Bug fixes + + +- Add a header for the createAt column in the Directory ([#15556](https://github.com/RocketChat/Rocket.Chat/pull/15556) by [@antkaz](https://github.com/antkaz)) + +- Add permissions for slashCommands ([#15525](https://github.com/RocketChat/Rocket.Chat/pull/15525) by [@antkaz](https://github.com/antkaz)) + +- Adding "Promise.await" in "livechat/message" endpoint ([#15541](https://github.com/RocketChat/Rocket.Chat/pull/15541) by [@rodrigokamada](https://github.com/rodrigokamada)) + +- adjustments for tooltips to show room name instead of id ([#14084](https://github.com/RocketChat/Rocket.Chat/pull/14084) by [@mohamedar97](https://github.com/mohamedar97)) + +- Compact view ([#15416](https://github.com/RocketChat/Rocket.Chat/pull/15416)) + +- Deny editing visitor's phone number in SMS conversations ([#15602](https://github.com/RocketChat/Rocket.Chat/pull/15602)) + +- Dynamic import of JS files were not working correctly ([#15598](https://github.com/RocketChat/Rocket.Chat/pull/15598)) + +- Emoji are rendered in URL ([#15516](https://github.com/RocketChat/Rocket.Chat/pull/15516) by [@oguhpereira](https://github.com/oguhpereira)) + +- Exposing some fields on server logs at debug level ([#15514](https://github.com/RocketChat/Rocket.Chat/pull/15514)) + +- Fix a typo on Alpha API `e2e.setUserPublicAndPivateKeys` renaming to `e2e.setUserPublicAndPrivateKeys` ([#13334](https://github.com/RocketChat/Rocket.Chat/pull/13334)) + +- Incorrect display of the button "Invite users" ([#15594](https://github.com/RocketChat/Rocket.Chat/pull/15594)) + +- Issues saving audio notifications ([#15428](https://github.com/RocketChat/Rocket.Chat/pull/15428) by [@scrivna](https://github.com/scrivna)) + +- Japanese translation for run import ([#15515](https://github.com/RocketChat/Rocket.Chat/pull/15515) by [@yusukeh0710](https://github.com/yusukeh0710)) + +- leak on stdout listeners ([#15586](https://github.com/RocketChat/Rocket.Chat/pull/15586)) + +- Method saveUser is not using password policy ([#15445](https://github.com/RocketChat/Rocket.Chat/pull/15445)) + +- Missing ending slash on publicFilePath of fileUpload ([#15506](https://github.com/RocketChat/Rocket.Chat/pull/15506)) + +- Promise await for sendMessage in livechat/messages endpoint ([#15460](https://github.com/RocketChat/Rocket.Chat/pull/15460) by [@hmagarotto](https://github.com/hmagarotto)) + +- Read Recepts was not working ([#15603](https://github.com/RocketChat/Rocket.Chat/pull/15603)) + +- Registration/login page now mobile friendly (#15422) ([#15520](https://github.com/RocketChat/Rocket.Chat/pull/15520) by [@nstseek](https://github.com/nstseek)) + +- Reset password was allowing empty values leading to an impossibility to login ([#15444](https://github.com/RocketChat/Rocket.Chat/pull/15444)) + +- Self-XSS in validation functionality ([#15564](https://github.com/RocketChat/Rocket.Chat/pull/15564)) + +- Showing announcement back ([#15615](https://github.com/RocketChat/Rocket.Chat/pull/15615)) + +- Typo in autotranslate method ([#15344](https://github.com/RocketChat/Rocket.Chat/pull/15344) by [@Montel](https://github.com/Montel)) + +- Update apps engine rooms converter to use transformMappedData ([#15546](https://github.com/RocketChat/Rocket.Chat/pull/15546)) + +
+🔍 Minor changes + + +- [CHORE] remove 'bulk-create-c' permission ([#15517](https://github.com/RocketChat/Rocket.Chat/pull/15517) by [@antkaz](https://github.com/antkaz)) + +- [CHORE] Split logger classes to avoid cyclic dependencies ([#15559](https://github.com/RocketChat/Rocket.Chat/pull/15559)) + +- [CHORE] Update latest Livechat widget version to 1.2.2 ([#15592](https://github.com/RocketChat/Rocket.Chat/pull/15592)) + +- [CHORE] Update latest Livechat widget version to 1.2.4 ([#15596](https://github.com/RocketChat/Rocket.Chat/pull/15596)) + +- [FEATURE] Rest API upload file returns message object ([#13821](https://github.com/RocketChat/Rocket.Chat/pull/13821) by [@knrt10](https://github.com/knrt10)) + +- [REGRESSION] Fix remove department from list ([#15591](https://github.com/RocketChat/Rocket.Chat/pull/15591)) + +- Chore: Add Client Setup Information to Issue Template ([#15625](https://github.com/RocketChat/Rocket.Chat/pull/15625)) + +- docs: remove rocket chat launcher link ([#15477](https://github.com/RocketChat/Rocket.Chat/pull/15477) by [@RafaelGSS](https://github.com/RafaelGSS)) + +- LingoHub based on develop ([#15487](https://github.com/RocketChat/Rocket.Chat/pull/15487)) + +- Livechat Issues ([#15473](https://github.com/RocketChat/Rocket.Chat/pull/15473)) + +- Merge master into develop ([#15680](https://github.com/RocketChat/Rocket.Chat/pull/15680) by [@knrt10](https://github.com/knrt10)) + +- Merge master into develop & Set version to 2.2.0-develop ([#15622](https://github.com/RocketChat/Rocket.Chat/pull/15622)) + +- Merge master into develop & Set version to 2.2.0-develop ([#15469](https://github.com/RocketChat/Rocket.Chat/pull/15469)) + +- Move publication deprecation warnings ([#15676](https://github.com/RocketChat/Rocket.Chat/pull/15676)) + +- New: Add dev dependency david badge to README ([#9058](https://github.com/RocketChat/Rocket.Chat/pull/9058) by [@robbyoconnor](https://github.com/robbyoconnor)) + +- Regression: add stdout publication back ([#15614](https://github.com/RocketChat/Rocket.Chat/pull/15614)) + +- Regression: AppRoomsConverter on Livechat rooms ([#15646](https://github.com/RocketChat/Rocket.Chat/pull/15646)) + +- Regression: Fix broken message formatting box ([#15599](https://github.com/RocketChat/Rocket.Chat/pull/15599)) + +- Regression: Fix package-lock.json ([#15561](https://github.com/RocketChat/Rocket.Chat/pull/15561)) + +- Regression: fix unknown role breaking hasPermission ([#15641](https://github.com/RocketChat/Rocket.Chat/pull/15641)) + +- Regression: hasPermission ignoring subscription roles ([#15652](https://github.com/RocketChat/Rocket.Chat/pull/15652)) + +- Regression: Move import to avoid circular dependencies ([#15628](https://github.com/RocketChat/Rocket.Chat/pull/15628)) + +- Regression: Remove reference to obsolete template helper ([#15675](https://github.com/RocketChat/Rocket.Chat/pull/15675)) + +- Release 2.1.2 ([#15667](https://github.com/RocketChat/Rocket.Chat/pull/15667) by [@knrt10](https://github.com/knrt10)) + +- Remove unneeded nginx file ([#15483](https://github.com/RocketChat/Rocket.Chat/pull/15483)) + +- Reply HTTP requests with `X-XSS-Protection: 1` header ([#15498](https://github.com/RocketChat/Rocket.Chat/pull/15498)) + +- Revert fix package-lock.json ([#15563](https://github.com/RocketChat/Rocket.Chat/pull/15563)) + +- Updating license term ([#15476](https://github.com/RocketChat/Rocket.Chat/pull/15476)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@Montel](https://github.com/Montel) +- [@RafaelGSS](https://github.com/RafaelGSS) +- [@antkaz](https://github.com/antkaz) +- [@hmagarotto](https://github.com/hmagarotto) +- [@juanpetterson](https://github.com/juanpetterson) +- [@knrt10](https://github.com/knrt10) +- [@mohamedar97](https://github.com/mohamedar97) +- [@nstseek](https://github.com/nstseek) +- [@oguhpereira](https://github.com/oguhpereira) +- [@robbyoconnor](https://github.com/robbyoconnor) +- [@rodrigokamada](https://github.com/rodrigokamada) +- [@scrivna](https://github.com/scrivna) +- [@ubarsaiyan](https://github.com/ubarsaiyan) +- [@unixtam](https://github.com/unixtam) +- [@yusukeh0710](https://github.com/yusukeh0710) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@mar-v](https://github.com/mar-v) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 2.1.3 +`2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Markdown link parser ([#15794](https://github.com/RocketChat/Rocket.Chat/pull/15794)) + +- Updating an app via "Update" button errors out with "App already exists" ([#15814](https://github.com/RocketChat/Rocket.Chat/pull/15814)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) + +# 2.1.2 +`2019-10-25 · 3 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Channel Announcements not working ([#14635](https://github.com/RocketChat/Rocket.Chat/pull/14635) by [@knrt10](https://github.com/knrt10)) + +- Exception when sending email of messages attachments undefined ([#15657](https://github.com/RocketChat/Rocket.Chat/pull/15657)) + +- Read Receipts were not working properly with subscriptions without ls ([#15656](https://github.com/RocketChat/Rocket.Chat/pull/15656)) + +
+🔍 Minor changes + + +- Release 2.1.2 ([#15667](https://github.com/RocketChat/Rocket.Chat/pull/15667) by [@knrt10](https://github.com/knrt10)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@knrt10](https://github.com/knrt10) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@tassoevan](https://github.com/tassoevan) + +# 2.1.1 +`2019-10-17 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Dynamic import of JS files were not working correctly ([#15598](https://github.com/RocketChat/Rocket.Chat/pull/15598)) + +- Read Recepts was not working ([#15603](https://github.com/RocketChat/Rocket.Chat/pull/15603)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) + +# 2.1.0 +`2019-09-27 · 1 ️️️⚠️ · 13 🎉 · 12 🚀 · 22 🐛 · 22 🔍 · 20 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.15.1` +- NPM: `6.9.0` +- MongoDB: `3.4, 3.6, 4.0` + +### ⚠️ BREAKING CHANGES + + +- Deprecate old CORS API access for Cordova mobile app ([#15322](https://github.com/RocketChat/Rocket.Chat/pull/15322)) + +### 🎉 New features + + +- Add ability to disable email notifications globally ([#9667](https://github.com/RocketChat/Rocket.Chat/pull/9667) by [@ferdifly](https://github.com/ferdifly)) + +- Add JWT to uploaded files urls ([#15297](https://github.com/RocketChat/Rocket.Chat/pull/15297)) + +- Allow file sharing through Twilio(WhatsApp) integration ([#15415](https://github.com/RocketChat/Rocket.Chat/pull/15415)) + +- Apps engine Livechat ([#14626](https://github.com/RocketChat/Rocket.Chat/pull/14626)) + +- Expand SAML Users Role Settings ([#15277](https://github.com/RocketChat/Rocket.Chat/pull/15277) by [@Hudell](https://github.com/Hudell)) + +- Guess a user's name from SAML credentials ([#15240](https://github.com/RocketChat/Rocket.Chat/pull/15240) by [@mrsimpson](https://github.com/mrsimpson)) + +- Livechat setting to show/hide Agent Information on the widget ([#15216](https://github.com/RocketChat/Rocket.Chat/pull/15216)) + +- Only Load CodeMirror code when it is needed ([#15351](https://github.com/RocketChat/Rocket.Chat/pull/15351)) + +- Provide site-url to outgoing integrations ([#15238](https://github.com/RocketChat/Rocket.Chat/pull/15238) by [@mrsimpson](https://github.com/mrsimpson)) + +- SAML User Data Mapping ([#15404](https://github.com/RocketChat/Rocket.Chat/pull/15404)) + +- Setting to configure SAML context comparison ([#15229](https://github.com/RocketChat/Rocket.Chat/pull/15229)) + +- Setting to remove message contents from email notifications ([#15406](https://github.com/RocketChat/Rocket.Chat/pull/15406)) + +- Validate NotBefore and NotOnOrAfter SAML assertions ([#15226](https://github.com/RocketChat/Rocket.Chat/pull/15226)) + +### 🚀 Improvements + + +- A11y: Buttons, Images, Popups ([#15405](https://github.com/RocketChat/Rocket.Chat/pull/15405)) + +- Add CustomSounds.play() helper ([#15256](https://github.com/RocketChat/Rocket.Chat/pull/15256)) + +- Add missing indices used by read receipts ([#15316](https://github.com/RocketChat/Rocket.Chat/pull/15316)) + +- Add possibility of renaming a discussion ([#15122](https://github.com/RocketChat/Rocket.Chat/pull/15122)) + +- Administration UI ([#15401](https://github.com/RocketChat/Rocket.Chat/pull/15401)) + +- AvatarBlockUnauthenticatedAccess do not call user.find if you dont have to ([#15355](https://github.com/RocketChat/Rocket.Chat/pull/15355)) + +- Change default user's preference for notifications to 'All messages' ([#15420](https://github.com/RocketChat/Rocket.Chat/pull/15420)) + +- improve autolinker flow ([#15340](https://github.com/RocketChat/Rocket.Chat/pull/15340)) + +- Make the agents field optional when updating Livechat departments ([#15400](https://github.com/RocketChat/Rocket.Chat/pull/15400)) + +- Remove global Blaze helpers ([#15414](https://github.com/RocketChat/Rocket.Chat/pull/15414)) + +- Replace LESS autoprefixer plugin ([#15260](https://github.com/RocketChat/Rocket.Chat/pull/15260)) + +- User data export ([#15294](https://github.com/RocketChat/Rocket.Chat/pull/15294) by [@Hudell](https://github.com/Hudell)) + +### 🐛 Bug fixes + + +- Add ENV VAR to enable users create token feature ([#15334](https://github.com/RocketChat/Rocket.Chat/pull/15334)) + +- CAS users can take control of Rocket.Chat accounts ([#15346](https://github.com/RocketChat/Rocket.Chat/pull/15346)) + +- Delivering real-time messages to users that left a room ([#15389](https://github.com/RocketChat/Rocket.Chat/pull/15389)) + +- Don't allow email violating whitelist addresses ([#15339](https://github.com/RocketChat/Rocket.Chat/pull/15339)) + +- Double send bug on message box ([#15409](https://github.com/RocketChat/Rocket.Chat/pull/15409)) + +- Duplicate Channels in Search-bar ([#15056](https://github.com/RocketChat/Rocket.Chat/pull/15056)) + +- Empty custom emojis on emoji picker ([#15392](https://github.com/RocketChat/Rocket.Chat/pull/15392)) + +- Federation messages notifications ([#15418](https://github.com/RocketChat/Rocket.Chat/pull/15418)) + +- Fix file uploads JWT ([#15412](https://github.com/RocketChat/Rocket.Chat/pull/15412)) + +- Grammatical error in Not Found page ([#15382](https://github.com/RocketChat/Rocket.Chat/pull/15382)) + +- LDAP usernames get additional '.' if they contain numbers ([#14644](https://github.com/RocketChat/Rocket.Chat/pull/14644) by [@Hudell](https://github.com/Hudell)) + +- Limit exposed fields on some users. endpoints ([#15327](https://github.com/RocketChat/Rocket.Chat/pull/15327)) + +- Message box not centered ([#15367](https://github.com/RocketChat/Rocket.Chat/pull/15367)) + +- Notify admin was generating errors when Rocket.Cat user was edited or deleted ([#15387](https://github.com/RocketChat/Rocket.Chat/pull/15387)) + +- Property "permission" in slash commands of custom apps (#14739) ([#14741](https://github.com/RocketChat/Rocket.Chat/pull/14741) by [@ifantom](https://github.com/ifantom)) + +- Prune messages by cron if room not updated ([#15252](https://github.com/RocketChat/Rocket.Chat/pull/15252)) + +- Reduce Message cache time to 500ms ([#15295](https://github.com/RocketChat/Rocket.Chat/pull/15295) by [@vickyokrm](https://github.com/vickyokrm)) + +- REST API to return only public custom fields ([#15292](https://github.com/RocketChat/Rocket.Chat/pull/15292)) + +- REST endpoint `users.setPreferences` to not override all user's preferences ([#15288](https://github.com/RocketChat/Rocket.Chat/pull/15288)) + +- Set the DEFAULT_ECDH_CURVE to auto (#15245) ([#15365](https://github.com/RocketChat/Rocket.Chat/pull/15365) by [@dlundgren](https://github.com/dlundgren)) + +- Subscription record not having the `ls` field ([#14544](https://github.com/RocketChat/Rocket.Chat/pull/14544)) + +- User Profile Time Format ([#15385](https://github.com/RocketChat/Rocket.Chat/pull/15385)) + +
+🔍 Minor changes + + +- [CHORE] Move pathFor helper to templateHelpers directory ([#15255](https://github.com/RocketChat/Rocket.Chat/pull/15255)) + +- [CHORE] Remove obsolete modal template ([#15257](https://github.com/RocketChat/Rocket.Chat/pull/15257)) + +- [Fix] Missing space between last username & 'and' word in react notification ([#15384](https://github.com/RocketChat/Rocket.Chat/pull/15384) by [@zdumitru](https://github.com/zdumitru)) + +- Add a missing 'Discussion' translation key ([#14029](https://github.com/RocketChat/Rocket.Chat/pull/14029) by [@ura14h](https://github.com/ura14h)) + +- Fix typo in LDAP User Search setting description ([#15228](https://github.com/RocketChat/Rocket.Chat/pull/15228)) + +- Improve Polish translation ([#14060](https://github.com/RocketChat/Rocket.Chat/pull/14060) by [@stepek](https://github.com/stepek)) + +- Improve text of the search bar description ([#15353](https://github.com/RocketChat/Rocket.Chat/pull/15353)) + +- LingoHub based on develop ([#15377](https://github.com/RocketChat/Rocket.Chat/pull/15377)) + +- Merge master into develop & Set version to 2.1.0-develop ([#15357](https://github.com/RocketChat/Rocket.Chat/pull/15357)) + +- Regression: API CORS not working after Cordova being disabled by default ([#15443](https://github.com/RocketChat/Rocket.Chat/pull/15443)) + +- Regression: Favorite room button ([#15426](https://github.com/RocketChat/Rocket.Chat/pull/15426)) + +- Regression: Fix Commit Section when there is no commit info ([#15436](https://github.com/RocketChat/Rocket.Chat/pull/15436)) + +- Regression: Fix DDP metrics ([#15368](https://github.com/RocketChat/Rocket.Chat/pull/15368)) + +- Regression: Fix invalid version string error on marketplace screen ([#15437](https://github.com/RocketChat/Rocket.Chat/pull/15437)) + +- Regression: Messagebox height changing when typing ([#15380](https://github.com/RocketChat/Rocket.Chat/pull/15380)) + +- Regression: Prevent parsing empty custom field setting ([#15413](https://github.com/RocketChat/Rocket.Chat/pull/15413)) + +- Regression: setup wizard dynamic import using relative url ([#15432](https://github.com/RocketChat/Rocket.Chat/pull/15432)) + +- Remove GraphQL dependencies left ([#15356](https://github.com/RocketChat/Rocket.Chat/pull/15356)) + +- Remove log ADMIN_PASS environment variable ([#15307](https://github.com/RocketChat/Rocket.Chat/pull/15307)) + +- Update Apps-Engine version to final version ([#15458](https://github.com/RocketChat/Rocket.Chat/pull/15458)) + +- Update Meteor to 1.8.1 ([#15358](https://github.com/RocketChat/Rocket.Chat/pull/15358)) + +- Use version 2 of the DeepL API ([#15364](https://github.com/RocketChat/Rocket.Chat/pull/15364) by [@vickyokrm](https://github.com/vickyokrm)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@dlundgren](https://github.com/dlundgren) +- [@ferdifly](https://github.com/ferdifly) +- [@ifantom](https://github.com/ifantom) +- [@mrsimpson](https://github.com/mrsimpson) +- [@stepek](https://github.com/stepek) +- [@ura14h](https://github.com/ura14h) +- [@vickyokrm](https://github.com/vickyokrm) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 2.0.1 +`2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Markdown link parser ([#15794](https://github.com/RocketChat/Rocket.Chat/pull/15794)) + +- Updating an app via "Update" button errors out with "App already exists" ([#15814](https://github.com/RocketChat/Rocket.Chat/pull/15814)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) + +# 2.0.0 +`2019-09-12 · 7 ️️️⚠️ · 14 🎉 · 6 🚀 · 19 🐛 · 39 🔍 · 26 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.4, 3.6, 4.0` + +### ⚠️ BREAKING CHANGES + + +- Federation refactor with addition of chained events ([#15206](https://github.com/RocketChat/Rocket.Chat/pull/15206)) + +- Remove GraphQL and grant packages ([#15192](https://github.com/RocketChat/Rocket.Chat/pull/15192)) + +- Remove old livechat client ([#15133](https://github.com/RocketChat/Rocket.Chat/pull/15133)) + +- Remove publication `roomSubscriptionsByRole` ([#15193](https://github.com/RocketChat/Rocket.Chat/pull/15193)) + +- Remove publication `usersInRole` ([#15194](https://github.com/RocketChat/Rocket.Chat/pull/15194)) + +- Remove support of MongoDB 3.2 and deprecate MongoDB 3.4 ([#15199](https://github.com/RocketChat/Rocket.Chat/pull/15199)) + +- Replace tap:i18n to add support to 3-digit locales ([#15109](https://github.com/RocketChat/Rocket.Chat/pull/15109)) + +### 🎉 New features + + +- Add autotranslate Rest endpoints ([#14885](https://github.com/RocketChat/Rocket.Chat/pull/14885)) + +- Add Mobex to the list of SMS service providers ([#14655](https://github.com/RocketChat/Rocket.Chat/pull/14655) by [@zolbayars](https://github.com/zolbayars)) + +- Assume that Rocket.Chat runs behind one proxy by default (HTTP_FORWARDED_COUNT=1) ([#15214](https://github.com/RocketChat/Rocket.Chat/pull/15214)) + +- Custom message popups ([#15117](https://github.com/RocketChat/Rocket.Chat/pull/15117) by [@Hudell](https://github.com/Hudell)) + +- Endpoint to fetch livechat rooms with several filters ([#15155](https://github.com/RocketChat/Rocket.Chat/pull/15155)) + +- Granular permissions for settings ([#8942](https://github.com/RocketChat/Rocket.Chat/pull/8942) by [@mrsimpson](https://github.com/mrsimpson)) + +- Integrate DEEPL translation service to RC core ([#12174](https://github.com/RocketChat/Rocket.Chat/pull/12174) by [@mrsimpson](https://github.com/mrsimpson) & [@vickyokrm](https://github.com/vickyokrm)) + +- Jitsi meet room access via a token ([#12259](https://github.com/RocketChat/Rocket.Chat/pull/12259) by [@rrzharikov](https://github.com/rrzharikov)) + +- LDAP User Groups, Roles, and Channel Synchronization ([#14278](https://github.com/RocketChat/Rocket.Chat/pull/14278) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) + +- Option to hide the button of Custom OAuth on login screen ([#15053](https://github.com/RocketChat/Rocket.Chat/pull/15053)) + +- Options for SAML auth for individual organizations needs ([#14275](https://github.com/RocketChat/Rocket.Chat/pull/14275) by [@Deltachaos](https://github.com/Deltachaos) & [@Hudell](https://github.com/Hudell)) + +- Rest API Endpoint to get pinned messages from a room ([#13864](https://github.com/RocketChat/Rocket.Chat/pull/13864) by [@thayannevls](https://github.com/thayannevls)) + +- Setup Wizard and Page not found, using React components ([#15204](https://github.com/RocketChat/Rocket.Chat/pull/15204)) + +- Support multiple push gateways ([#14902](https://github.com/RocketChat/Rocket.Chat/pull/14902) by [@cardoso](https://github.com/cardoso)) + +### 🚀 Improvements + + +- Add asset extension validation ([#15088](https://github.com/RocketChat/Rocket.Chat/pull/15088)) + +- Add limit of 50 user's resume tokens ([#15102](https://github.com/RocketChat/Rocket.Chat/pull/15102)) + +- Add possibility to use commands inside threads through Rest API ([#15167](https://github.com/RocketChat/Rocket.Chat/pull/15167)) + +- Livechat User Management Improvements ([#14736](https://github.com/RocketChat/Rocket.Chat/pull/14736) by [@Hudell](https://github.com/Hudell)) + +- Message tooltips as everyone else ([#15135](https://github.com/RocketChat/Rocket.Chat/pull/15135)) + +- Refactoring the queuing and routing processes of new livechats ([#15003](https://github.com/RocketChat/Rocket.Chat/pull/15003)) + +### 🐛 Bug fixes + + +- "Discussion" label in Sidebar not hidden, when Discussions are disabled (#14660) ([#14682](https://github.com/RocketChat/Rocket.Chat/pull/14682) by [@ifantom](https://github.com/ifantom)) + +- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172)) + +- cachedcollection calling multiple times SYNC ([#15104](https://github.com/RocketChat/Rocket.Chat/pull/15104)) + +- Forget user session on window close ([#15205](https://github.com/RocketChat/Rocket.Chat/pull/15205)) + +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) + +- IE11 baseURI ([#15319](https://github.com/RocketChat/Rocket.Chat/pull/15319)) + +- IE11 modal, menu action and edit user page ([#15201](https://github.com/RocketChat/Rocket.Chat/pull/15201)) + +- Mark room as read logic ([#15174](https://github.com/RocketChat/Rocket.Chat/pull/15174)) + +- Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) + +- Prevent to create discussion with empty name ([#14507](https://github.com/RocketChat/Rocket.Chat/pull/14507)) + +- Rate limit incoming integrations (webhooks) ([#15038](https://github.com/RocketChat/Rocket.Chat/pull/15038) by [@mrsimpson](https://github.com/mrsimpson)) + +- Redirect on app manual install ([#15306](https://github.com/RocketChat/Rocket.Chat/pull/15306)) + +- Remove new hidden file and fix for .env files for Snap ([#15120](https://github.com/RocketChat/Rocket.Chat/pull/15120)) + +- Search message wrongly grouping messages ([#15094](https://github.com/RocketChat/Rocket.Chat/pull/15094)) + +- TabBar not loading template titles ([#15177](https://github.com/RocketChat/Rocket.Chat/pull/15177) by [@Hudell](https://github.com/Hudell)) + +- Threads contextual bar button visible even with threads disabled ([#14956](https://github.com/RocketChat/Rocket.Chat/pull/14956) by [@cesarmal](https://github.com/cesarmal)) + +- Typo in 'access-permissions_description' ja translation ([#15162](https://github.com/RocketChat/Rocket.Chat/pull/15162) by [@NatsumiKubo](https://github.com/NatsumiKubo)) + +- User's auto complete showing everyone on the server ([#15212](https://github.com/RocketChat/Rocket.Chat/pull/15212)) + +- Webdav crash ([#14918](https://github.com/RocketChat/Rocket.Chat/pull/14918)) + +
+🔍 Minor changes + + +- Add new step to build Docker image from PRs for production again ([#15124](https://github.com/RocketChat/Rocket.Chat/pull/15124)) + +- Add oplog events metrics ([#15249](https://github.com/RocketChat/Rocket.Chat/pull/15249)) + +- Add wreiske to authorized users in catbot ([#15147](https://github.com/RocketChat/Rocket.Chat/pull/15147)) + +- Allow file upload paths on attachments URLs ([#15121](https://github.com/RocketChat/Rocket.Chat/pull/15121)) + +- Change notifications file imports to server ([#15184](https://github.com/RocketChat/Rocket.Chat/pull/15184)) + +- Federation improvements ([#15234](https://github.com/RocketChat/Rocket.Chat/pull/15234)) + +- Federation migration and additional improvements ([#15336](https://github.com/RocketChat/Rocket.Chat/pull/15336)) + +- Fix apps list error ([#15258](https://github.com/RocketChat/Rocket.Chat/pull/15258)) + +- Fix automated test for manual user activation ([#14978](https://github.com/RocketChat/Rocket.Chat/pull/14978) by [@mrsimpson](https://github.com/mrsimpson)) + +- Fix get IP for rate limiter ([#15262](https://github.com/RocketChat/Rocket.Chat/pull/15262)) + +- Fix v148 migration ([#15285](https://github.com/RocketChat/Rocket.Chat/pull/15285)) + +- Improve url validation inside message object ([#15074](https://github.com/RocketChat/Rocket.Chat/pull/15074)) + +- LingoHub based on develop ([#15218](https://github.com/RocketChat/Rocket.Chat/pull/15218)) + +- LingoHub based on develop ([#15166](https://github.com/RocketChat/Rocket.Chat/pull/15166)) + +- LingoHub based on develop ([#15115](https://github.com/RocketChat/Rocket.Chat/pull/15115)) + +- Merge master into develop & Set version to 1.4.0-develop ([#15097](https://github.com/RocketChat/Rocket.Chat/pull/15097)) + +- NEW: Apps enable after app installed ([#15202](https://github.com/RocketChat/Rocket.Chat/pull/15202)) + +- Regression: addPermissionToRole argument as string ([#15267](https://github.com/RocketChat/Rocket.Chat/pull/15267)) + +- Regression: cachedCollection wrong callback parameters ([#15136](https://github.com/RocketChat/Rocket.Chat/pull/15136)) + +- Regression: Double error toast on Setup Wizard ([#15268](https://github.com/RocketChat/Rocket.Chat/pull/15268)) + +- Regression: Errors on the console preventing some settings to be saved ([#15310](https://github.com/RocketChat/Rocket.Chat/pull/15310)) + +- Regression: Fix assets extension detection ([#15231](https://github.com/RocketChat/Rocket.Chat/pull/15231)) + +- Regression: fix typo permisson to permission ([#15217](https://github.com/RocketChat/Rocket.Chat/pull/15217)) + +- Regression: Fix wrong import and minor code improvements ([#15352](https://github.com/RocketChat/Rocket.Chat/pull/15352)) + +- Regression: last message doesn't update after reconnect ([#15329](https://github.com/RocketChat/Rocket.Chat/pull/15329)) + +- Regression: New Livechat methods and processes ([#15242](https://github.com/RocketChat/Rocket.Chat/pull/15242)) + +- Regression: Remove duplicated permission changes emitter ([#15321](https://github.com/RocketChat/Rocket.Chat/pull/15321)) + +- Regression: remove livechat cache from circle ci ([#15183](https://github.com/RocketChat/Rocket.Chat/pull/15183)) + +- Regression: Remove old scripts of Setup Wizard ([#15263](https://github.com/RocketChat/Rocket.Chat/pull/15263)) + +- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176)) + +- Remove GPG file ([#15146](https://github.com/RocketChat/Rocket.Chat/pull/15146)) + +- removed unwanted code ([#15078](https://github.com/RocketChat/Rocket.Chat/pull/15078) by [@httpsOmkar](https://github.com/httpsOmkar)) + +- Switch outdated roadmap to point to milestones ([#15156](https://github.com/RocketChat/Rocket.Chat/pull/15156)) + +- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173)) + +- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154)) + +- Update Livechat to 1.1.6 ([#15186](https://github.com/RocketChat/Rocket.Chat/pull/15186)) + +- Update presence package ([#15178](https://github.com/RocketChat/Rocket.Chat/pull/15178)) + +- Update pt-BR.i18n.json ([#15083](https://github.com/RocketChat/Rocket.Chat/pull/15083) by [@lucassmacedo](https://github.com/lucassmacedo)) + +- Update to version 2.0.0-develop ([#15142](https://github.com/RocketChat/Rocket.Chat/pull/15142)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Deltachaos](https://github.com/Deltachaos) +- [@Hudell](https://github.com/Hudell) +- [@NatsumiKubo](https://github.com/NatsumiKubo) +- [@cardoso](https://github.com/cardoso) +- [@cesarmal](https://github.com/cesarmal) +- [@httpsOmkar](https://github.com/httpsOmkar) +- [@ifantom](https://github.com/ifantom) +- [@lucassmacedo](https://github.com/lucassmacedo) +- [@mrsimpson](https://github.com/mrsimpson) +- [@rrzharikov](https://github.com/rrzharikov) +- [@thayannevls](https://github.com/thayannevls) +- [@vickyokrm](https://github.com/vickyokrm) +- [@wreiske](https://github.com/wreiske) +- [@zolbayars](https://github.com/zolbayars) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.3.5 +`2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- Apps-Engine: `1.5.1` + +### 🐛 Bug fixes + + +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) + +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) + +# 1.3.3 +`2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Markdown link parser ([#15794](https://github.com/RocketChat/Rocket.Chat/pull/15794)) + +- Updating an app via "Update" button errors out with "App already exists" ([#15814](https://github.com/RocketChat/Rocket.Chat/pull/15814)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) + +# 1.3.2 +`2019-08-14 · 3 🐛 · 3 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172)) + +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) + +- Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) + +
+🔍 Minor changes + + +- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176)) + +- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173)) + +- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.3.1 +`2019-08-08 · 2 🐛 · 2 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Custom emoji table scroll ([#15119](https://github.com/RocketChat/Rocket.Chat/pull/15119)) + +- Direct Message names not visible on Admin panel ([#15114](https://github.com/RocketChat/Rocket.Chat/pull/15114)) + +
+🔍 Minor changes + + +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) + +- Release 1.3.1 ([#15148](https://github.com/RocketChat/Rocket.Chat/pull/15148)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 1.3.0 +`2019-08-02 · 9 🎉 · 6 🚀 · 32 🐛 · 32 🔍 · 29 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🎉 New features + + +- Accept multiple redirect URIs on OAuth Apps ([#14935](https://github.com/RocketChat/Rocket.Chat/pull/14935) by [@Hudell](https://github.com/Hudell)) + +- Deprecate MongoDB version 3.2 ([#15025](https://github.com/RocketChat/Rocket.Chat/pull/15025)) + +- Options to filter discussion and livechat on Admin > Rooms ([#15019](https://github.com/RocketChat/Rocket.Chat/pull/15019)) + +- Setting to configure custom authn context on SAML requests ([#14675](https://github.com/RocketChat/Rocket.Chat/pull/14675) by [@Hudell](https://github.com/Hudell)) + +- Setting to prevent Livechat agents online when Office Hours are closed ([#14921](https://github.com/RocketChat/Rocket.Chat/pull/14921)) + +- Settings to further customize GitLab OAuth ([#15014](https://github.com/RocketChat/Rocket.Chat/pull/15014) by [@Hudell](https://github.com/Hudell)) + +- Show helpful error when oplog is missing ([#14954](https://github.com/RocketChat/Rocket.Chat/pull/14954) by [@justinr1234](https://github.com/justinr1234)) + +- Subscription enabled marketplace ([#14948](https://github.com/RocketChat/Rocket.Chat/pull/14948)) + +- Webdav File Picker ([#14879](https://github.com/RocketChat/Rocket.Chat/pull/14879) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +### 🚀 Improvements + + +- Add descriptions on user data download buttons and popup info ([#14852](https://github.com/RocketChat/Rocket.Chat/pull/14852)) + +- Add flag to identify remote federation users ([#15004](https://github.com/RocketChat/Rocket.Chat/pull/15004)) + +- Connectivity Services License Sync ([#15022](https://github.com/RocketChat/Rocket.Chat/pull/15022)) + +- Extract federation config to its own file ([#14992](https://github.com/RocketChat/Rocket.Chat/pull/14992)) + +- Remove too specific helpers isFirefox() and isChrome() ([#14963](https://github.com/RocketChat/Rocket.Chat/pull/14963)) + +- Update tabs markup ([#14964](https://github.com/RocketChat/Rocket.Chat/pull/14964)) + +### 🐛 Bug fixes + + +- 50 custom emoji limit ([#14951](https://github.com/RocketChat/Rocket.Chat/pull/14951)) + +- Allow storing the navigation history of unregistered Livechat visitors ([#14970](https://github.com/RocketChat/Rocket.Chat/pull/14970)) + +- Always displaying jumbomojis when using "marked" markdown ([#14861](https://github.com/RocketChat/Rocket.Chat/pull/14861) by [@brakhane](https://github.com/brakhane)) + +- Chrome doesn't load additional search results when bottom is reached ([#14965](https://github.com/RocketChat/Rocket.Chat/pull/14965)) + +- Custom User Status throttled by rate limiter ([#15001](https://github.com/RocketChat/Rocket.Chat/pull/15001) by [@Hudell](https://github.com/Hudell)) + +- CustomOauth Identity Step errors displayed in HTML format ([#15000](https://github.com/RocketChat/Rocket.Chat/pull/15000) by [@Hudell](https://github.com/Hudell)) + +- Edit message with arrow up key if not last message ([#15021](https://github.com/RocketChat/Rocket.Chat/pull/15021)) + +- Edit permissions screen ([#14950](https://github.com/RocketChat/Rocket.Chat/pull/14950)) + +- eternal loading file list ([#14952](https://github.com/RocketChat/Rocket.Chat/pull/14952)) + +- Invite users auto complete cropping results ([#15020](https://github.com/RocketChat/Rocket.Chat/pull/15020)) + +- Jump to message missing in Starred Messages ([#14949](https://github.com/RocketChat/Rocket.Chat/pull/14949)) + +- LDAP login with customField sync ([#14808](https://github.com/RocketChat/Rocket.Chat/pull/14808) by [@magicbelette](https://github.com/magicbelette)) + +- Livechat dashboard average and reaction time labels ([#14845](https://github.com/RocketChat/Rocket.Chat/pull/14845) by [@anandpathak](https://github.com/anandpathak)) + +- load more messages ([#14967](https://github.com/RocketChat/Rocket.Chat/pull/14967)) + +- Loading indicator positioning ([#14968](https://github.com/RocketChat/Rocket.Chat/pull/14968)) + +- Message attachments not allowing float numbers ([#14412](https://github.com/RocketChat/Rocket.Chat/pull/14412)) + +- Method `getUsersOfRoom` not returning offline users if limit is not defined ([#14753](https://github.com/RocketChat/Rocket.Chat/pull/14753)) + +- Not being able to mention users with "all" and "here" usernames - do not allow users register that usernames ([#14468](https://github.com/RocketChat/Rocket.Chat/pull/14468) by [@hamidrezabstn](https://github.com/hamidrezabstn)) + +- Not sanitized message types ([#15054](https://github.com/RocketChat/Rocket.Chat/pull/15054)) + +- Opening Livechat messages on mobile apps ([#14785](https://github.com/RocketChat/Rocket.Chat/pull/14785) by [@zolbayars](https://github.com/zolbayars)) + +- OTR key icon missing on messages ([#14953](https://github.com/RocketChat/Rocket.Chat/pull/14953)) + +- Prevent error on trying insert message with duplicated id ([#14945](https://github.com/RocketChat/Rocket.Chat/pull/14945)) + +- Russian grammatical errors ([#14622](https://github.com/RocketChat/Rocket.Chat/pull/14622) by [@BehindLoader](https://github.com/BehindLoader)) + +- SAML login by giving displayName priority over userName for fullName ([#14880](https://github.com/RocketChat/Rocket.Chat/pull/14880) by [@pkolmann](https://github.com/pkolmann)) + +- setupWizard calling multiple getSetupWizardParameters ([#15060](https://github.com/RocketChat/Rocket.Chat/pull/15060)) + +- SVG uploads crashing process ([#15006](https://github.com/RocketChat/Rocket.Chat/pull/15006) by [@snoopotic](https://github.com/snoopotic)) + +- Typo in german translation ([#14833](https://github.com/RocketChat/Rocket.Chat/pull/14833) by [@Le-onardo](https://github.com/Le-onardo)) + +- Users staying online after logout ([#14966](https://github.com/RocketChat/Rocket.Chat/pull/14966)) + +- users.setStatus REST endpoint not allowing reset status message ([#14916](https://github.com/RocketChat/Rocket.Chat/pull/14916) by [@cardoso](https://github.com/cardoso)) + +- Video recorder message echo ([#14671](https://github.com/RocketChat/Rocket.Chat/pull/14671) by [@vova-zush](https://github.com/vova-zush)) + +- Wrong custom status displayed on room leader panel ([#14958](https://github.com/RocketChat/Rocket.Chat/pull/14958) by [@Hudell](https://github.com/Hudell)) + +- Wrong label order on room settings ([#14960](https://github.com/RocketChat/Rocket.Chat/pull/14960) by [@Hudell](https://github.com/Hudell)) + +
+🔍 Minor changes + + +- [IMPROVEMENT] patch to improve emoji render ([#14722](https://github.com/RocketChat/Rocket.Chat/pull/14722)) + +- Add missing French translation ([#15013](https://github.com/RocketChat/Rocket.Chat/pull/15013) by [@commiaI](https://github.com/commiaI)) + +- Always convert the sha256 password to lowercase on checking ([#14941](https://github.com/RocketChat/Rocket.Chat/pull/14941)) + +- Bump jquery from 3.3.1 to 3.4.0 in /packages/rocketchat-livechat/.app ([#14922](https://github.com/RocketChat/Rocket.Chat/pull/14922) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump juice version to 5.2.0 ([#14974](https://github.com/RocketChat/Rocket.Chat/pull/14974)) + +- Bump marked from 0.5.2 to 0.6.1 ([#14969](https://github.com/RocketChat/Rocket.Chat/pull/14969) by [@dependabot[bot]](https://github.com/dependabot[bot])) + +- Bump node-rsa version to 1.0.5 ([#14976](https://github.com/RocketChat/Rocket.Chat/pull/14976)) + +- Bump photoswipe version to 4.1.3 ([#14977](https://github.com/RocketChat/Rocket.Chat/pull/14977)) + +- Callbacks perf ([#14915](https://github.com/RocketChat/Rocket.Chat/pull/14915)) + +- Extract canSendMessage function ([#14909](https://github.com/RocketChat/Rocket.Chat/pull/14909)) + +- Fix statistics error for apps on first load ([#15026](https://github.com/RocketChat/Rocket.Chat/pull/15026)) + +- Improve Docker compose readability ([#14457](https://github.com/RocketChat/Rocket.Chat/pull/14457) by [@NateScarlet](https://github.com/NateScarlet)) + +- Improve: Get public key for marketplace ([#14851](https://github.com/RocketChat/Rocket.Chat/pull/14851)) + +- improve: relocate some of wizard info to register ([#14884](https://github.com/RocketChat/Rocket.Chat/pull/14884)) + +- Merge master into develop & Set version to 1.3.0-develop ([#14889](https://github.com/RocketChat/Rocket.Chat/pull/14889) by [@Hudell](https://github.com/Hudell)) + +- New: Apps and integrations statistics ([#14878](https://github.com/RocketChat/Rocket.Chat/pull/14878)) + +- Regression: Apps and Marketplace UI issues ([#15045](https://github.com/RocketChat/Rocket.Chat/pull/15045)) + +- Regression: displaying errors for apps not installed from Marketplace ([#15075](https://github.com/RocketChat/Rocket.Chat/pull/15075)) + +- Regression: fix code style, setup wizard error and profile page header ([#15041](https://github.com/RocketChat/Rocket.Chat/pull/15041)) + +- Regression: Framework version being attached to a request that doesn't require it ([#15039](https://github.com/RocketChat/Rocket.Chat/pull/15039)) + +- Regression: getSetupWizardParameters ([#15067](https://github.com/RocketChat/Rocket.Chat/pull/15067)) + +- Regression: Improve apps bridges for HA setup ([#15080](https://github.com/RocketChat/Rocket.Chat/pull/15080)) + +- Regression: Marketplace app pricing plan description ([#15076](https://github.com/RocketChat/Rocket.Chat/pull/15076)) + +- Regression: patch to improve emoji render ([#14980](https://github.com/RocketChat/Rocket.Chat/pull/14980)) + +- Regression: uninstall subscribed app modal ([#15077](https://github.com/RocketChat/Rocket.Chat/pull/15077)) + +- Regression: Webdav File Picker search and fixed overflows ([#15027](https://github.com/RocketChat/Rocket.Chat/pull/15027) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- Release 1.2.1 ([#14898](https://github.com/RocketChat/Rocket.Chat/pull/14898)) + +- Remove unused dependency (lokijs) ([#14973](https://github.com/RocketChat/Rocket.Chat/pull/14973)) + +- Remove unused Meteor dependency (yasinuslu:blaze-meta) ([#14971](https://github.com/RocketChat/Rocket.Chat/pull/14971)) + +- Split oplog emitters in files ([#14917](https://github.com/RocketChat/Rocket.Chat/pull/14917)) + +- Update Livechat widget ([#15046](https://github.com/RocketChat/Rocket.Chat/pull/15046)) + +- Wrong text when reporting a message ([#14515](https://github.com/RocketChat/Rocket.Chat/pull/14515) by [@zdumitru](https://github.com/zdumitru)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@BehindLoader](https://github.com/BehindLoader) +- [@Hudell](https://github.com/Hudell) +- [@Le-onardo](https://github.com/Le-onardo) +- [@NateScarlet](https://github.com/NateScarlet) +- [@anandpathak](https://github.com/anandpathak) +- [@brakhane](https://github.com/brakhane) +- [@cardoso](https://github.com/cardoso) +- [@commiaI](https://github.com/commiaI) +- [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@hamidrezabstn](https://github.com/hamidrezabstn) +- [@justinr1234](https://github.com/justinr1234) +- [@magicbelette](https://github.com/magicbelette) +- [@pkolmann](https://github.com/pkolmann) +- [@snoopotic](https://github.com/snoopotic) +- [@ubarsaiyan](https://github.com/ubarsaiyan) +- [@vova-zush](https://github.com/vova-zush) +- [@zdumitru](https://github.com/zdumitru) +- [@zolbayars](https://github.com/zolbayars) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.2.4 +`2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +# 1.2.2 +`2019-07-29 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Not sanitized message types ([#15054](https://github.com/RocketChat/Rocket.Chat/pull/15054)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + +# 1.2.1 +`2019-06-28 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Not showing local app on App Details ([#14894](https://github.com/RocketChat/Rocket.Chat/pull/14894)) + +
+🔍 Minor changes + + +- Release 1.2.1 ([#14898](https://github.com/RocketChat/Rocket.Chat/pull/14898)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 1.2.0 +`2019-06-27 · 8 🎉 · 4 🚀 · 13 🐛 · 9 🔍 · 21 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🎉 New features + + +- Add Livechat inquiries endpoints ([#14779](https://github.com/RocketChat/Rocket.Chat/pull/14779)) + +- Add loading animation to webdav file picker ([#14759](https://github.com/RocketChat/Rocket.Chat/pull/14759) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- Add tmid property to outgoing integration ([#14699](https://github.com/RocketChat/Rocket.Chat/pull/14699)) + +- changed mongo version for snap from 3.2.7 to 3.4.20 ([#14838](https://github.com/RocketChat/Rocket.Chat/pull/14838)) + +- Configuration to limit amount of livechat inquiries displayed ([#14690](https://github.com/RocketChat/Rocket.Chat/pull/14690)) + +- Custom User Status ([#13933](https://github.com/RocketChat/Rocket.Chat/pull/13933) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) + +- Endpoint to anonymously read channel's messages ([#14714](https://github.com/RocketChat/Rocket.Chat/pull/14714)) + +- Show App bundles and its apps ([#14886](https://github.com/RocketChat/Rocket.Chat/pull/14886)) + +### 🚀 Improvements + + +- Add an optional rocketchat-protocol DNS entry for Federation ([#14589](https://github.com/RocketChat/Rocket.Chat/pull/14589)) + +- Adds link to download generated user data file ([#14175](https://github.com/RocketChat/Rocket.Chat/pull/14175) by [@Hudell](https://github.com/Hudell)) + +- Layout of livechat manager pages to new style ([#13900](https://github.com/RocketChat/Rocket.Chat/pull/13900)) + +- Use configurable colors on sidebar items ([#14624](https://github.com/RocketChat/Rocket.Chat/pull/14624)) + +### 🐛 Bug fixes + + +- Assume microphone is available ([#14710](https://github.com/RocketChat/Rocket.Chat/pull/14710)) + +- Custom status fixes ([#14853](https://github.com/RocketChat/Rocket.Chat/pull/14853) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) + +- Direct reply delete config and description ([#14493](https://github.com/RocketChat/Rocket.Chat/pull/14493) by [@ruKurz](https://github.com/ruKurz)) + +- Error when using Download My Data or Export My Data ([#14645](https://github.com/RocketChat/Rocket.Chat/pull/14645) by [@Hudell](https://github.com/Hudell)) + +- Gap of messages when loading history when using threads ([#14837](https://github.com/RocketChat/Rocket.Chat/pull/14837)) + +- Import Chart.js error ([#14471](https://github.com/RocketChat/Rocket.Chat/pull/14471) by [@Hudell](https://github.com/Hudell) & [@sonbn0](https://github.com/sonbn0)) + +- Increasing time to rate limit in shield.svg endpoint and add a setting to disable API rate limiter ([#14709](https://github.com/RocketChat/Rocket.Chat/pull/14709)) + +- LinkedIn OAuth login ([#14887](https://github.com/RocketChat/Rocket.Chat/pull/14887) by [@Hudell](https://github.com/Hudell)) + +- Move the set Avatar call on user creation to make sure the user has username ([#14665](https://github.com/RocketChat/Rocket.Chat/pull/14665)) + +- Name is undefined in some emails ([#14533](https://github.com/RocketChat/Rocket.Chat/pull/14533)) + +- Removes E2E action button, icon and banner when E2E is disabled. ([#14810](https://github.com/RocketChat/Rocket.Chat/pull/14810)) + +- users typing forever ([#14724](https://github.com/RocketChat/Rocket.Chat/pull/14724)) + +- Wrong filter field when filtering current Livechats ([#14569](https://github.com/RocketChat/Rocket.Chat/pull/14569)) + +
+🔍 Minor changes + + +- Add custom fileupload whitelist property ([#14754](https://github.com/RocketChat/Rocket.Chat/pull/14754)) + +- Allow debugging of cached collections by name ([#14859](https://github.com/RocketChat/Rocket.Chat/pull/14859)) + +- Extract permissions functions ([#14777](https://github.com/RocketChat/Rocket.Chat/pull/14777)) + +- Fix not fully extracted pieces ([#14805](https://github.com/RocketChat/Rocket.Chat/pull/14805)) + +- Merge master into develop & Set version to 1.2.0-develop ([#14656](https://github.com/RocketChat/Rocket.Chat/pull/14656) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@thaiphv](https://github.com/thaiphv)) + +- Regression: Allow debugging of cached collections by name ([#14862](https://github.com/RocketChat/Rocket.Chat/pull/14862)) + +- Regression: Fix desktop notifications not being sent ([#14860](https://github.com/RocketChat/Rocket.Chat/pull/14860)) + +- Regression: Fix file upload ([#14804](https://github.com/RocketChat/Rocket.Chat/pull/14804)) + +- Regression: thread loading parent msg if is not loaded ([#14839](https://github.com/RocketChat/Rocket.Chat/pull/14839)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AnBo83](https://github.com/AnBo83) +- [@Hudell](https://github.com/Hudell) +- [@knrt10](https://github.com/knrt10) +- [@lolimay](https://github.com/lolimay) +- [@mohamedar97](https://github.com/mohamedar97) +- [@ruKurz](https://github.com/ruKurz) +- [@sonbn0](https://github.com/sonbn0) +- [@thaiphv](https://github.com/thaiphv) +- [@ubarsaiyan](https://github.com/ubarsaiyan) +- [@wreiske](https://github.com/wreiske) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@PrajvalRaval](https://github.com/PrajvalRaval) +- [@alansikora](https://github.com/alansikora) +- [@engelgabriel](https://github.com/engelgabriel) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.1.5 +`2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +# 1.1.4 +`2019-07-29 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Not sanitized message types ([#15054](https://github.com/RocketChat/Rocket.Chat/pull/15054)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + +# 1.1.3 +`2019-06-21 · 1 🐛 · 2 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Gap of messages when loading history when using threads ([#14837](https://github.com/RocketChat/Rocket.Chat/pull/14837)) + +
+🔍 Minor changes + + +- Regression: thread loading parent msg if is not loaded ([#14839](https://github.com/RocketChat/Rocket.Chat/pull/14839)) + +- Release 1.1.3 ([#14850](https://github.com/RocketChat/Rocket.Chat/pull/14850)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 1.1.2 +`2019-06-17 · 3 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Anonymous chat read ([#14717](https://github.com/RocketChat/Rocket.Chat/pull/14717)) + +- User Real Name being erased when not modified ([#14711](https://github.com/RocketChat/Rocket.Chat/pull/14711) by [@Hudell](https://github.com/Hudell)) + +- User status information on User Info panel ([#14763](https://github.com/RocketChat/Rocket.Chat/pull/14763)) + +
+🔍 Minor changes + + +- Release 1.1.2 ([#14823](https://github.com/RocketChat/Rocket.Chat/pull/14823) by [@Hudell](https://github.com/Hudell)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 1.1.1 +`2019-05-30 · 2 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Load messages after disconnect and message box scroll missing ([#14668](https://github.com/RocketChat/Rocket.Chat/pull/14668)) + +- SAML login error. ([#14686](https://github.com/RocketChat/Rocket.Chat/pull/14686) by [@Hudell](https://github.com/Hudell)) + +
+🔍 Minor changes + + +- Removing unnecesary federation configs ([#14674](https://github.com/RocketChat/Rocket.Chat/pull/14674)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@alansikora](https://github.com/alansikora) +- [@ggazzo](https://github.com/ggazzo) + +# 1.1.0 +`2019-05-27 · 5 🎉 · 10 🚀 · 59 🐛 · 35 🔍 · 28 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🎉 New features + + +- Add pause and reset button when adding custom sound ([#13615](https://github.com/RocketChat/Rocket.Chat/pull/13615) by [@knrt10](https://github.com/knrt10)) + +- Custom user name field from Custom OAuth ([#14381](https://github.com/RocketChat/Rocket.Chat/pull/14381) by [@mjovanovic0](https://github.com/mjovanovic0)) + +- Missing "view-outside-room_description" translation key ([#13680](https://github.com/RocketChat/Rocket.Chat/pull/13680) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- Returns custom emojis through the Livechat REST API ([#14370](https://github.com/RocketChat/Rocket.Chat/pull/14370)) + +- Setting option to mark as containing a secret/password ([#10273](https://github.com/RocketChat/Rocket.Chat/pull/10273)) + +### 🚀 Improvements + + +- Added flag `skipActiveUsersToBeReady` to not wait the load of `active users` to present the Web interface ([#14431](https://github.com/RocketChat/Rocket.Chat/pull/14431)) + +- Allow change Discussion's properties ([#14389](https://github.com/RocketChat/Rocket.Chat/pull/14389)) + +- Change user presence events to Meteor Streams ([#14488](https://github.com/RocketChat/Rocket.Chat/pull/14488)) + +- Don't show unread count badge in burger menu if it is from the opened room ([#12971](https://github.com/RocketChat/Rocket.Chat/pull/12971)) + +- Don't use regex to find users ([#14397](https://github.com/RocketChat/Rocket.Chat/pull/14397)) + +- jump to selected message on open thread ([#14460](https://github.com/RocketChat/Rocket.Chat/pull/14460)) + +- Livechat CRM secret token optional ([#14022](https://github.com/RocketChat/Rocket.Chat/pull/14022)) + +- Message rendering time ([#14252](https://github.com/RocketChat/Rocket.Chat/pull/14252)) + +- SAML login process refactoring ([#12891](https://github.com/RocketChat/Rocket.Chat/pull/12891) by [@kukkjanos](https://github.com/kukkjanos)) + +- Upgrade EmojiOne to JoyPixels 4.5.0 ([#13807](https://github.com/RocketChat/Rocket.Chat/pull/13807) by [@wreiske](https://github.com/wreiske)) + +### 🐛 Bug fixes + + +- "Blank page" on safari 10.x ([#14651](https://github.com/RocketChat/Rocket.Chat/pull/14651)) + +- `Alphabetical` translation in DE ([#14490](https://github.com/RocketChat/Rocket.Chat/pull/14490) by [@AnBo83](https://github.com/AnBo83)) + +- Allow data URLs in isURL/getURL helpers ([#14464](https://github.com/RocketChat/Rocket.Chat/pull/14464)) + +- Avatar images on old Livechat client ([#14590](https://github.com/RocketChat/Rocket.Chat/pull/14590) by [@arminfelder](https://github.com/arminfelder)) + +- Bell was too small on threads ([#14394](https://github.com/RocketChat/Rocket.Chat/pull/14394)) + +- Broken layout when sidebar is open on IE/Edge ([#14567](https://github.com/RocketChat/Rocket.Chat/pull/14567)) + +- Channel Leader Bar is in the way of Thread Header ([#14443](https://github.com/RocketChat/Rocket.Chat/pull/14443)) + +- Channel names on Directory got cut on small screens ([#14542](https://github.com/RocketChat/Rocket.Chat/pull/14542)) + +- Channel settings form to textarea for Topic and Description ([#13328](https://github.com/RocketChat/Rocket.Chat/pull/13328) by [@supra08](https://github.com/supra08)) + +- Custom scripts descriptions were not clear enough ([#14516](https://github.com/RocketChat/Rocket.Chat/pull/14516)) + +- Discussion name being invalid ([#14442](https://github.com/RocketChat/Rocket.Chat/pull/14442)) + +- Downloading files when running in sub directory ([#14485](https://github.com/RocketChat/Rocket.Chat/pull/14485) by [@miolane](https://github.com/miolane)) + +- Duplicated link to jump to message ([#14505](https://github.com/RocketChat/Rocket.Chat/pull/14505)) + +- E2E messages not decrypting in message threads ([#14580](https://github.com/RocketChat/Rocket.Chat/pull/14580)) + +- Edit Message when down arrow is pressed. ([#14369](https://github.com/RocketChat/Rocket.Chat/pull/14369) by [@Kailash0311](https://github.com/Kailash0311)) + +- Elements in User Info require some padding ([#13640](https://github.com/RocketChat/Rocket.Chat/pull/13640) by [@mushroomgenie](https://github.com/mushroomgenie)) + +- Error 400 on send a reply to an old thread ([#14402](https://github.com/RocketChat/Rocket.Chat/pull/14402)) + +- Error when accessing an invalid file upload url ([#14282](https://github.com/RocketChat/Rocket.Chat/pull/14282) by [@wreiske](https://github.com/wreiske)) + +- Error when accessing avatar with no token ([#14293](https://github.com/RocketChat/Rocket.Chat/pull/14293)) + +- Escape unrecognized slash command message ([#14432](https://github.com/RocketChat/Rocket.Chat/pull/14432)) + +- Exception on crowd sync due to a wrong logging method ([#14405](https://github.com/RocketChat/Rocket.Chat/pull/14405)) + +- Fallback to mongo version that doesn't require clusterMonitor role ([#14403](https://github.com/RocketChat/Rocket.Chat/pull/14403)) + +- Fix redirect to First channel after login ([#14434](https://github.com/RocketChat/Rocket.Chat/pull/14434)) + +- IE11 support ([#14422](https://github.com/RocketChat/Rocket.Chat/pull/14422)) + +- Ignored messages ([#14465](https://github.com/RocketChat/Rocket.Chat/pull/14465)) + +- Inject code at the end of tag ([#14623](https://github.com/RocketChat/Rocket.Chat/pull/14623)) + +- Mailer breaking if user doesn't have an email address ([#14614](https://github.com/RocketChat/Rocket.Chat/pull/14614)) + +- Main thread title on replies ([#14372](https://github.com/RocketChat/Rocket.Chat/pull/14372)) + +- Mentions message missing 'jump to message' action ([#14430](https://github.com/RocketChat/Rocket.Chat/pull/14430)) + +- Messages on thread panel were receiving wrong context/subscription ([#14404](https://github.com/RocketChat/Rocket.Chat/pull/14404)) + +- Messages on threads disappearing ([#14393](https://github.com/RocketChat/Rocket.Chat/pull/14393)) + +- more message actions to threads context(follow, unfollow, copy, delete) ([#14387](https://github.com/RocketChat/Rocket.Chat/pull/14387)) + +- Multiple Slack Importer Bugs ([#12084](https://github.com/RocketChat/Rocket.Chat/pull/12084) by [@Hudell](https://github.com/Hudell)) + +- New day separator overlapping above system message ([#14362](https://github.com/RocketChat/Rocket.Chat/pull/14362)) + +- No feedback when adding users that already exists in a room ([#14534](https://github.com/RocketChat/Rocket.Chat/pull/14534) by [@gsunit](https://github.com/gsunit)) + +- Optional exit on Unhandled Promise Rejection ([#14291](https://github.com/RocketChat/Rocket.Chat/pull/14291)) + +- Popup cloud console in new window ([#14296](https://github.com/RocketChat/Rocket.Chat/pull/14296)) + +- Pressing Enter in User Search field at channel causes reload ([#14388](https://github.com/RocketChat/Rocket.Chat/pull/14388)) + +- preview pdf its not working ([#14419](https://github.com/RocketChat/Rocket.Chat/pull/14419)) + +- Remove Livechat guest data was removing more rooms than expected ([#14509](https://github.com/RocketChat/Rocket.Chat/pull/14509)) + +- RocketChat client sending out video call requests unnecessarily ([#14496](https://github.com/RocketChat/Rocket.Chat/pull/14496)) + +- Role `user` has being added after email verification even for non anonymous users ([#14263](https://github.com/RocketChat/Rocket.Chat/pull/14263)) + +- Role name spacing on Permissions page ([#14625](https://github.com/RocketChat/Rocket.Chat/pull/14625)) + +- Room name was undefined in some info dialogs ([#14415](https://github.com/RocketChat/Rocket.Chat/pull/14415)) + +- SAML credentialToken removal was preventing mobile from being able to authenticate ([#14345](https://github.com/RocketChat/Rocket.Chat/pull/14345)) + +- Save custom emoji with special characters causes some errors ([#14456](https://github.com/RocketChat/Rocket.Chat/pull/14456)) + +- Send replyTo for livechat offline messages ([#14568](https://github.com/RocketChat/Rocket.Chat/pull/14568)) + +- Several problems with read-only rooms and muted users ([#11311](https://github.com/RocketChat/Rocket.Chat/pull/11311) by [@Hudell](https://github.com/Hudell)) + +- Showing the id instead of the name of custom notification sound ([#13660](https://github.com/RocketChat/Rocket.Chat/pull/13660) by [@knrt10](https://github.com/knrt10)) + +- Startup error in registration check ([#14286](https://github.com/RocketChat/Rocket.Chat/pull/14286)) + +- Stream not connecting connect when using subdir and multi-instance ([#14376](https://github.com/RocketChat/Rocket.Chat/pull/14376)) + +- Switch oplog required doc link to more accurate link ([#14288](https://github.com/RocketChat/Rocket.Chat/pull/14288)) + +- Unnecessary meteor.defer on openRoom ([#14396](https://github.com/RocketChat/Rocket.Chat/pull/14396)) + +- Unread property of the room's lastMessage object was being wrong some times ([#13919](https://github.com/RocketChat/Rocket.Chat/pull/13919)) + +- Users actions in administration were returning error ([#14400](https://github.com/RocketChat/Rocket.Chat/pull/14400)) + +- Verify if the user is requesting your own information in users.info ([#14242](https://github.com/RocketChat/Rocket.Chat/pull/14242)) + +- Wrong header at Apps admin section ([#14290](https://github.com/RocketChat/Rocket.Chat/pull/14290)) + +- Wrong token name was generating error on Gitlab OAuth login ([#14379](https://github.com/RocketChat/Rocket.Chat/pull/14379)) + +- You must join to view messages in this channel ([#14461](https://github.com/RocketChat/Rocket.Chat/pull/14461)) + +
+🔍 Minor changes + + +- [Fix] broken logo url in app.json ([#14572](https://github.com/RocketChat/Rocket.Chat/pull/14572) by [@jaredmoody](https://github.com/jaredmoody)) + +- [IMPROVEMENT] Add tooltip to to notify user the purpose of back button in discussion ([#13872](https://github.com/RocketChat/Rocket.Chat/pull/13872) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- [IMPROVEMENT] Don't group messages with different alias ([#14257](https://github.com/RocketChat/Rocket.Chat/pull/14257) by [@jungeonkim](https://github.com/jungeonkim)) + +- [REGRESSION] Fix Slack bridge channel owner on channel creation ([#14565](https://github.com/RocketChat/Rocket.Chat/pull/14565)) + +- Add digitalocean button to readme ([#14583](https://github.com/RocketChat/Rocket.Chat/pull/14583)) + +- Add missing german translations ([#14386](https://github.com/RocketChat/Rocket.Chat/pull/14386) by [@mrsimpson](https://github.com/mrsimpson)) + +- Allow removing description, topic and annoucement of rooms(set as empty string) ([#13682](https://github.com/RocketChat/Rocket.Chat/pull/13682)) + +- Ci improvements ([#14600](https://github.com/RocketChat/Rocket.Chat/pull/14600)) + +- eslint errors currently on develop ([#14518](https://github.com/RocketChat/Rocket.Chat/pull/14518) by [@Hudell](https://github.com/Hudell)) + +- Federation i18n message changes ([#14595](https://github.com/RocketChat/Rocket.Chat/pull/14595)) + +- fix discussions: remove restriction for editing room info, server side ([#14039](https://github.com/RocketChat/Rocket.Chat/pull/14039) by [@mrsimpson](https://github.com/mrsimpson)) + +- Fix emoji replacing some chars ([#14570](https://github.com/RocketChat/Rocket.Chat/pull/14570)) + +- Fix i18n files keys sort ([#14433](https://github.com/RocketChat/Rocket.Chat/pull/14433)) + +- Fix thumbs up emoji shortname ([#14581](https://github.com/RocketChat/Rocket.Chat/pull/14581)) + +- Fix: Add emoji shortnames to emoji's list ([#14576](https://github.com/RocketChat/Rocket.Chat/pull/14576)) + +- Fix: emoji render performance for alias ([#14593](https://github.com/RocketChat/Rocket.Chat/pull/14593)) + +- Fix: Message body was not being updated when user disabled nrr message ([#14390](https://github.com/RocketChat/Rocket.Chat/pull/14390)) + +- Fixes on DAU and MAU aggregations ([#14418](https://github.com/RocketChat/Rocket.Chat/pull/14418)) + +- Google Plus account is no longer accessible ([#14503](https://github.com/RocketChat/Rocket.Chat/pull/14503) by [@zdumitru](https://github.com/zdumitru)) + +- Improve German translations ([#14351](https://github.com/RocketChat/Rocket.Chat/pull/14351) by [@mrsimpson](https://github.com/mrsimpson)) + +- Improvement: Permissions table ([#14646](https://github.com/RocketChat/Rocket.Chat/pull/14646)) + +- LingoHub based on develop ([#14561](https://github.com/RocketChat/Rocket.Chat/pull/14561)) + +- LingoHub based on develop ([#14478](https://github.com/RocketChat/Rocket.Chat/pull/14478)) + +- LingoHub based on develop ([#14426](https://github.com/RocketChat/Rocket.Chat/pull/14426)) + +- LingoHub based on develop ([#14643](https://github.com/RocketChat/Rocket.Chat/pull/14643)) + +- Merge master into develop & Set version to 1.1.0-develop ([#14317](https://github.com/RocketChat/Rocket.Chat/pull/14317) by [@wreiske](https://github.com/wreiske)) + +- Merge master into develop & Set version to 1.1.0-develop ([#14294](https://github.com/RocketChat/Rocket.Chat/pull/14294)) + +- MsgTyping refactor ([#14495](https://github.com/RocketChat/Rocket.Chat/pull/14495)) + +- New eslint rules ([#14332](https://github.com/RocketChat/Rocket.Chat/pull/14332)) + +- Refactor WebRTC class ([#13736](https://github.com/RocketChat/Rocket.Chat/pull/13736)) + +- Regression: Handle missing emojis ([#14641](https://github.com/RocketChat/Rocket.Chat/pull/14641)) + +- Regression: unit tests were being skipped ([#14543](https://github.com/RocketChat/Rocket.Chat/pull/14543)) + +- Remove specific eslint rules ([#14459](https://github.com/RocketChat/Rocket.Chat/pull/14459)) + +- Removed unnecessary DDP unblocks ([#13641](https://github.com/RocketChat/Rocket.Chat/pull/13641)) + +- Update Meteor Streamer package ([#14551](https://github.com/RocketChat/Rocket.Chat/pull/14551)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AnBo83](https://github.com/AnBo83) +- [@Hudell](https://github.com/Hudell) +- [@Kailash0311](https://github.com/Kailash0311) +- [@arminfelder](https://github.com/arminfelder) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@bhardwajaditya](https://github.com/bhardwajaditya) +- [@gsunit](https://github.com/gsunit) +- [@jaredmoody](https://github.com/jaredmoody) +- [@jungeonkim](https://github.com/jungeonkim) +- [@knrt10](https://github.com/knrt10) +- [@kukkjanos](https://github.com/kukkjanos) +- [@miolane](https://github.com/miolane) +- [@mjovanovic0](https://github.com/mjovanovic0) +- [@mrsimpson](https://github.com/mrsimpson) +- [@mushroomgenie](https://github.com/mushroomgenie) +- [@supra08](https://github.com/supra08) +- [@wreiske](https://github.com/wreiske) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.0.5 +`2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +# 1.0.4 +`2019-07-29 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Not sanitized message types ([#15054](https://github.com/RocketChat/Rocket.Chat/pull/15054)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + +# 1.0.3 +`2019-05-09 · 1 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +
+🔍 Minor changes + + +- Release 1.0.3 ([#14446](https://github.com/RocketChat/Rocket.Chat/pull/14446) by [@mrsimpson](https://github.com/mrsimpson)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@mrsimpson](https://github.com/mrsimpson) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.0.2 +`2019-04-30 · 2 🚀 · 8 🐛 · 6 🔍 · 10 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🚀 Improvements + + +- Better error message when not able to get MongoDB Version ([#14320](https://github.com/RocketChat/Rocket.Chat/pull/14320)) + +- i18n of threads and discussion buttons ([#14334](https://github.com/RocketChat/Rocket.Chat/pull/14334)) + +### 🐛 Bug fixes + + +- Audio notification for messages on DM ([#14336](https://github.com/RocketChat/Rocket.Chat/pull/14336)) + +- Duplicate thread message after editing ([#14330](https://github.com/RocketChat/Rocket.Chat/pull/14330)) + +- Missing i18n for some new Permissions ([#14011](https://github.com/RocketChat/Rocket.Chat/pull/14011) by [@lolimay](https://github.com/lolimay)) + +- New day separator rendered over thread reply ([#14328](https://github.com/RocketChat/Rocket.Chat/pull/14328)) + +- Remove reference to inexistent field when deleting message in thread ([#14311](https://github.com/RocketChat/Rocket.Chat/pull/14311)) + +- show roles on message ([#14313](https://github.com/RocketChat/Rocket.Chat/pull/14313)) + +- Unread line and new day separator were not aligned ([#14338](https://github.com/RocketChat/Rocket.Chat/pull/14338)) + +- View Logs admin page was broken and not rendering color logs ([#14316](https://github.com/RocketChat/Rocket.Chat/pull/14316)) + +
+🔍 Minor changes + + +- [Fix] group name appears instead of the room id ([#14075](https://github.com/RocketChat/Rocket.Chat/pull/14075) by [@mohamedar97](https://github.com/mohamedar97)) + +- [Regression] Anonymous user fix ([#14301](https://github.com/RocketChat/Rocket.Chat/pull/14301) by [@knrt10](https://github.com/knrt10)) + +- Add cross-browser select arrow positioning ([#14318](https://github.com/RocketChat/Rocket.Chat/pull/14318)) + +- Coerces the MongoDB version string ([#14299](https://github.com/RocketChat/Rocket.Chat/pull/14299) by [@thaiphv](https://github.com/thaiphv)) + +- i18n: Update German strings ([#14182](https://github.com/RocketChat/Rocket.Chat/pull/14182) by [@AnBo83](https://github.com/AnBo83)) + +- Release 1.0.2 ([#14339](https://github.com/RocketChat/Rocket.Chat/pull/14339) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@thaiphv](https://github.com/thaiphv)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AnBo83](https://github.com/AnBo83) +- [@knrt10](https://github.com/knrt10) +- [@lolimay](https://github.com/lolimay) +- [@mohamedar97](https://github.com/mohamedar97) +- [@thaiphv](https://github.com/thaiphv) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 1.0.1 +`2019-04-28 · 7 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Error when accessing an invalid file upload url ([#14282](https://github.com/RocketChat/Rocket.Chat/pull/14282) by [@wreiske](https://github.com/wreiske)) + +- Error when accessing avatar with no token ([#14293](https://github.com/RocketChat/Rocket.Chat/pull/14293)) + +- Optional exit on Unhandled Promise Rejection ([#14291](https://github.com/RocketChat/Rocket.Chat/pull/14291)) + +- Popup cloud console in new window ([#14296](https://github.com/RocketChat/Rocket.Chat/pull/14296)) + +- Startup error in registration check ([#14286](https://github.com/RocketChat/Rocket.Chat/pull/14286)) + +- Switch oplog required doc link to more accurate link ([#14288](https://github.com/RocketChat/Rocket.Chat/pull/14288)) + +- Wrong header at Apps admin section ([#14290](https://github.com/RocketChat/Rocket.Chat/pull/14290)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@wreiske](https://github.com/wreiske) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@rodrigok](https://github.com/rodrigok) + +# 1.0.0 +`2019-04-28 · 4 ️️️⚠️ · 34 🎉 · 33 🚀 · 107 🐛 · 174 🔍 · 60 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### ⚠️ BREAKING CHANGES + + +- Prevent start if incompatible mongo version ([#13927](https://github.com/RocketChat/Rocket.Chat/pull/13927)) + +- Remove deprecated file upload engine Slingshot ([#13724](https://github.com/RocketChat/Rocket.Chat/pull/13724)) + +- Remove internal hubot package ([#13522](https://github.com/RocketChat/Rocket.Chat/pull/13522)) + +- Require OPLOG/REPLICASET to run Rocket.Chat ([#14227](https://github.com/RocketChat/Rocket.Chat/pull/14227)) + +### 🎉 New features + + +- - Add setting to request a comment when closing Livechat room ([#13983](https://github.com/RocketChat/Rocket.Chat/pull/13983) by [@knrt10](https://github.com/knrt10)) + +- Add an option to delete file in files list ([#13815](https://github.com/RocketChat/Rocket.Chat/pull/13815)) + +- Add e-mail field on Livechat Departments ([#13775](https://github.com/RocketChat/Rocket.Chat/pull/13775)) + +- Add GET method to fetch Livechat message through REST API ([#14147](https://github.com/RocketChat/Rocket.Chat/pull/14147)) + +- Add message action to copy message to input as reply ([#12626](https://github.com/RocketChat/Rocket.Chat/pull/12626) by [@mrsimpson](https://github.com/mrsimpson)) + +- Add missing remove add leader channel ([#13315](https://github.com/RocketChat/Rocket.Chat/pull/13315) by [@Montel](https://github.com/Montel)) + +- Add offset parameter to channels.history, groups.history, dm.history ([#13310](https://github.com/RocketChat/Rocket.Chat/pull/13310) by [@xbolshe](https://github.com/xbolshe)) + +- Add parseUrls field to the apps message converter ([#13248](https://github.com/RocketChat/Rocket.Chat/pull/13248)) + +- Add support to updatedSince parameter in emoji-custom.list and deprecated old endpoint ([#13510](https://github.com/RocketChat/Rocket.Chat/pull/13510)) + +- Add Voxtelesys to list of SMS providers ([#13697](https://github.com/RocketChat/Rocket.Chat/pull/13697) by [@jhnburke8](https://github.com/jhnburke8) & [@john08burke](https://github.com/john08burke)) + +- allow drop files on thread ([#14214](https://github.com/RocketChat/Rocket.Chat/pull/14214)) + +- Allow sending long messages as attachments ([#13819](https://github.com/RocketChat/Rocket.Chat/pull/13819)) + +- Bosnian lang (BS) ([#13635](https://github.com/RocketChat/Rocket.Chat/pull/13635) by [@fliptrail](https://github.com/fliptrail)) + +- Chatpal: Enable custom search parameters ([#13829](https://github.com/RocketChat/Rocket.Chat/pull/13829) by [@Peym4n](https://github.com/Peym4n)) + +- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525)) + +- Discussions ([#13541](https://github.com/RocketChat/Rocket.Chat/pull/13541) by [@mrsimpson](https://github.com/mrsimpson) & [@vickyokrm](https://github.com/vickyokrm)) + +- Federation ([#12370](https://github.com/RocketChat/Rocket.Chat/pull/12370)) + +- legal notice page ([#12472](https://github.com/RocketChat/Rocket.Chat/pull/12472) by [@localguru](https://github.com/localguru)) + +- Limit all DDP/Websocket requests (configurable via admin panel) ([#13311](https://github.com/RocketChat/Rocket.Chat/pull/13311)) + +- Marketplace integration with Rocket.Chat Cloud ([#13809](https://github.com/RocketChat/Rocket.Chat/pull/13809)) + +- Multiple slackbridges ([#11346](https://github.com/RocketChat/Rocket.Chat/pull/11346) by [@Hudell](https://github.com/Hudell) & [@kable-wilmoth](https://github.com/kable-wilmoth)) + +- option to not use nrr (experimental) ([#14224](https://github.com/RocketChat/Rocket.Chat/pull/14224)) + +- Permission to assign roles ([#13597](https://github.com/RocketChat/Rocket.Chat/pull/13597)) + +- Provide new Livechat client as community feature ([#13723](https://github.com/RocketChat/Rocket.Chat/pull/13723)) + +- reply with a file ([#12095](https://github.com/RocketChat/Rocket.Chat/pull/12095) by [@rssilva](https://github.com/rssilva)) + +- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308)) + +- Rest endpoints of discussions ([#13987](https://github.com/RocketChat/Rocket.Chat/pull/13987)) + +- Rest threads ([#14045](https://github.com/RocketChat/Rocket.Chat/pull/14045)) + +- Set up livechat connections created from new client ([#14236](https://github.com/RocketChat/Rocket.Chat/pull/14236)) + +- Show department field on Livechat visitor panel ([#13530](https://github.com/RocketChat/Rocket.Chat/pull/13530)) + +- Threads V 1.0 ([#13996](https://github.com/RocketChat/Rocket.Chat/pull/13996)) + +- Update message actions ([#14268](https://github.com/RocketChat/Rocket.Chat/pull/14268)) + +- User avatars from external source ([#7929](https://github.com/RocketChat/Rocket.Chat/pull/7929) by [@mjovanovic0](https://github.com/mjovanovic0)) + +- users.setActiveStatus endpoint in rest api ([#13443](https://github.com/RocketChat/Rocket.Chat/pull/13443) by [@thayannevls](https://github.com/thayannevls)) + +### 🚀 Improvements + + +- Add decoding for commonName (cn) and displayName attributes for SAML ([#12347](https://github.com/RocketChat/Rocket.Chat/pull/12347) by [@pkolmann](https://github.com/pkolmann)) + +- Add department field on find guest method ([#13491](https://github.com/RocketChat/Rocket.Chat/pull/13491)) + +- Add index for room's ts ([#13726](https://github.com/RocketChat/Rocket.Chat/pull/13726)) + +- Add permission to change other user profile avatar ([#13884](https://github.com/RocketChat/Rocket.Chat/pull/13884) by [@knrt10](https://github.com/knrt10)) + +- Admin ui ([#13393](https://github.com/RocketChat/Rocket.Chat/pull/13393)) + +- Allow custom rocketchat username for crowd users and enable login via email/crowd_username ([#12981](https://github.com/RocketChat/Rocket.Chat/pull/12981) by [@steerben](https://github.com/steerben)) + +- Attachment download caching ([#14137](https://github.com/RocketChat/Rocket.Chat/pull/14137) by [@wreiske](https://github.com/wreiske)) + +- Deprecate fixCordova helper ([#13598](https://github.com/RocketChat/Rocket.Chat/pull/13598)) + +- Disable X-Powered-By header in all known express middlewares ([#13388](https://github.com/RocketChat/Rocket.Chat/pull/13388)) + +- End to end tests ([#13401](https://github.com/RocketChat/Rocket.Chat/pull/13401)) + +- Filter agents with autocomplete input instead of select element ([#13730](https://github.com/RocketChat/Rocket.Chat/pull/13730)) + +- Get avatar from oauth ([#14131](https://github.com/RocketChat/Rocket.Chat/pull/14131)) + +- Ignore agent status when queuing incoming livechats via Guest Pool ([#13818](https://github.com/RocketChat/Rocket.Chat/pull/13818)) + +- Include more information to help with bug reports and debugging ([#14047](https://github.com/RocketChat/Rocket.Chat/pull/14047)) + +- Join channels by sending a message or join button (#13752) ([#13752](https://github.com/RocketChat/Rocket.Chat/pull/13752) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- KaTeX and Autolinker message rendering ([#11698](https://github.com/RocketChat/Rocket.Chat/pull/11698)) + +- Line height on static content pages ([#11673](https://github.com/RocketChat/Rocket.Chat/pull/11673) by [@timkinnane](https://github.com/timkinnane)) + +- new icons ([#13289](https://github.com/RocketChat/Rocket.Chat/pull/13289)) + +- New sidebar item badges, mention links, and ticks ([#14030](https://github.com/RocketChat/Rocket.Chat/pull/14030)) + +- OAuth Role Sync ([#13761](https://github.com/RocketChat/Rocket.Chat/pull/13761) by [@hypery2k](https://github.com/hypery2k)) + +- Remove dangling side-nav styles ([#13584](https://github.com/RocketChat/Rocket.Chat/pull/13584)) + +- Remove setting to show a livechat is waiting ([#13992](https://github.com/RocketChat/Rocket.Chat/pull/13992)) + +- Remove unnecessary "File Upload". ([#13743](https://github.com/RocketChat/Rocket.Chat/pull/13743) by [@knrt10](https://github.com/knrt10)) + +- Replace livechat inquiry dialog with preview room ([#13986](https://github.com/RocketChat/Rocket.Chat/pull/13986)) + +- Replaces color #13679A to #1d74f5 ([#13796](https://github.com/RocketChat/Rocket.Chat/pull/13796) by [@fliptrail](https://github.com/fliptrail)) + +- Send `uniqueID` to all clients so Jitsi rooms can be created correctly ([#13342](https://github.com/RocketChat/Rocket.Chat/pull/13342)) + +- Show rooms with mentions on unread category even with hide counter ([#13948](https://github.com/RocketChat/Rocket.Chat/pull/13948)) + +- UI of page not found ([#13757](https://github.com/RocketChat/Rocket.Chat/pull/13757) by [@fliptrail](https://github.com/fliptrail)) + +- UI of Permissions page ([#13732](https://github.com/RocketChat/Rocket.Chat/pull/13732) by [@fliptrail](https://github.com/fliptrail)) + +- Update deleteUser errors to be more semantic ([#12380](https://github.com/RocketChat/Rocket.Chat/pull/12380) by [@timkinnane](https://github.com/timkinnane)) + +- Update the Apps Engine version to v1.4.1 ([#14072](https://github.com/RocketChat/Rocket.Chat/pull/14072)) + +- Update to MongoDB 4.0 in docker-compose file ([#13396](https://github.com/RocketChat/Rocket.Chat/pull/13396) by [@ngulden](https://github.com/ngulden)) + +- Use SessionId for credential token in SAML request ([#13791](https://github.com/RocketChat/Rocket.Chat/pull/13791) by [@MohammedEssehemy](https://github.com/MohammedEssehemy)) + +### 🐛 Bug fixes + + +- .bin extension added to attached file names ([#13468](https://github.com/RocketChat/Rocket.Chat/pull/13468) by [@Hudell](https://github.com/Hudell)) + +- Ability to activate an app installed by zip even offline ([#13563](https://github.com/RocketChat/Rocket.Chat/pull/13563)) + +- Add custom MIME types for *.ico extension ([#13969](https://github.com/RocketChat/Rocket.Chat/pull/13969)) + +- Add retries to docker-compose.yml, to wait for MongoDB to be ready ([#13199](https://github.com/RocketChat/Rocket.Chat/pull/13199) by [@tiangolo](https://github.com/tiangolo)) + +- Adds Proper Language display name for many languages ([#13714](https://github.com/RocketChat/Rocket.Chat/pull/13714) by [@fliptrail](https://github.com/fliptrail)) + +- Align burger menu in header with content matching room header ([#14265](https://github.com/RocketChat/Rocket.Chat/pull/14265)) + +- allow user to logout before set username ([#13439](https://github.com/RocketChat/Rocket.Chat/pull/13439)) + +- Apps converters delete fields on message attachments ([#14028](https://github.com/RocketChat/Rocket.Chat/pull/14028)) + +- Attachments without dates were showing December 31, 1970 ([#13428](https://github.com/RocketChat/Rocket.Chat/pull/13428) by [@wreiske](https://github.com/wreiske)) + +- Audio message recording ([#13727](https://github.com/RocketChat/Rocket.Chat/pull/13727)) + +- Audio message recording issues ([#13486](https://github.com/RocketChat/Rocket.Chat/pull/13486)) + +- Auto hide Livechat room from sidebar on close ([#13824](https://github.com/RocketChat/Rocket.Chat/pull/13824) by [@knrt10](https://github.com/knrt10)) + +- Auto-translate toggle not updating rendered messages ([#14262](https://github.com/RocketChat/Rocket.Chat/pull/14262)) + +- Autogrow not working properly for many message boxes ([#14163](https://github.com/RocketChat/Rocket.Chat/pull/14163)) + +- Avatar fonts for PNG and JPG ([#13681](https://github.com/RocketChat/Rocket.Chat/pull/13681)) + +- Avatar image being shrinked on autocomplete ([#13914](https://github.com/RocketChat/Rocket.Chat/pull/13914)) + +- Block User Icon ([#13630](https://github.com/RocketChat/Rocket.Chat/pull/13630) by [@knrt10](https://github.com/knrt10)) + +- Bugfix markdown Marked link new tab ([#13245](https://github.com/RocketChat/Rocket.Chat/pull/13245) by [@DeviaVir](https://github.com/DeviaVir)) + +- Change localStorage keys to work when server is running in a subdir ([#13968](https://github.com/RocketChat/Rocket.Chat/pull/13968)) + +- Change userId of rate limiter, change to logged user ([#13442](https://github.com/RocketChat/Rocket.Chat/pull/13442)) + +- Changing Room name updates the webhook ([#13672](https://github.com/RocketChat/Rocket.Chat/pull/13672) by [@knrt10](https://github.com/knrt10)) + +- Check settings for name requirement before validating ([#14021](https://github.com/RocketChat/Rocket.Chat/pull/14021)) + +- Closing sidebar when room menu is clicked. ([#13842](https://github.com/RocketChat/Rocket.Chat/pull/13842) by [@Kailash0311](https://github.com/Kailash0311)) + +- Corrects UI background of forced F2A Authentication ([#13670](https://github.com/RocketChat/Rocket.Chat/pull/13670) by [@fliptrail](https://github.com/fliptrail)) + +- Custom Oauth login not working with accessToken ([#14113](https://github.com/RocketChat/Rocket.Chat/pull/14113) by [@knrt10](https://github.com/knrt10)) + +- Custom Oauth store refresh and id tokens with expiresIn ([#14121](https://github.com/RocketChat/Rocket.Chat/pull/14121) by [@ralfbecker](https://github.com/ralfbecker)) + +- Directory and Apps logs page ([#13938](https://github.com/RocketChat/Rocket.Chat/pull/13938)) + +- Display first message when taking Livechat inquiry ([#13896](https://github.com/RocketChat/Rocket.Chat/pull/13896)) + +- Do not allow change avatars of another users without permission ([#13629](https://github.com/RocketChat/Rocket.Chat/pull/13629)) + +- Emoji detection at line breaks ([#13447](https://github.com/RocketChat/Rocket.Chat/pull/13447) by [@savish28](https://github.com/savish28)) + +- Empty result when getting badge count notification ([#14244](https://github.com/RocketChat/Rocket.Chat/pull/14244)) + +- Error when recording data into the connection object ([#13553](https://github.com/RocketChat/Rocket.Chat/pull/13553)) + +- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341)) + +- Fix issue cannot filter channels by name ([#12952](https://github.com/RocketChat/Rocket.Chat/pull/12952) by [@huydang284](https://github.com/huydang284)) + +- Fix rendering of links in the announcement modal ([#13250](https://github.com/RocketChat/Rocket.Chat/pull/13250) by [@supra08](https://github.com/supra08)) + +- Fix snap refresh hook ([#13702](https://github.com/RocketChat/Rocket.Chat/pull/13702)) + +- Fix wrong this scope in Notifications ([#13515](https://github.com/RocketChat/Rocket.Chat/pull/13515)) + +- Fixed grammatical error. ([#13559](https://github.com/RocketChat/Rocket.Chat/pull/13559) by [@gsunit](https://github.com/gsunit)) + +- Fixed rocketchat-oembed meta fragment pulling ([#13056](https://github.com/RocketChat/Rocket.Chat/pull/13056) by [@wreiske](https://github.com/wreiske)) + +- Fixed text for "bulk-register-user" ([#11558](https://github.com/RocketChat/Rocket.Chat/pull/11558) by [@the4ndy](https://github.com/the4ndy)) + +- Fixing rooms find by type and name ([#11451](https://github.com/RocketChat/Rocket.Chat/pull/11451) by [@hmagarotto](https://github.com/hmagarotto)) + +- Focus on input when emoji picker box is open was not working ([#13981](https://github.com/RocketChat/Rocket.Chat/pull/13981)) + +- Forwarded Livechat visitor name is not getting updated on the sidebar ([#13783](https://github.com/RocketChat/Rocket.Chat/pull/13783) by [@zolbayars](https://github.com/zolbayars)) + +- Get next Livechat agent endpoint ([#13485](https://github.com/RocketChat/Rocket.Chat/pull/13485)) + +- Groups endpoints permission validations ([#13994](https://github.com/RocketChat/Rocket.Chat/pull/13994)) + +- Handle showing/hiding input in messageBox ([#13564](https://github.com/RocketChat/Rocket.Chat/pull/13564)) + +- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell)) + +- Hipchat Enterprise Importer not generating subscriptions ([#13293](https://github.com/RocketChat/Rocket.Chat/pull/13293) by [@Hudell](https://github.com/Hudell)) + +- Image attachment re-renders on message update ([#14207](https://github.com/RocketChat/Rocket.Chat/pull/14207) by [@Kailash0311](https://github.com/Kailash0311)) + +- Improve cloud section ([#13820](https://github.com/RocketChat/Rocket.Chat/pull/13820)) + +- In home screen Rocket.Chat+ is dispalyed as Rocket.Chat ([#13784](https://github.com/RocketChat/Rocket.Chat/pull/13784) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Legal pages' style ([#13677](https://github.com/RocketChat/Rocket.Chat/pull/13677)) + +- Limit App’s HTTP calls to 500ms ([#13949](https://github.com/RocketChat/Rocket.Chat/pull/13949)) + +- linear-gradient background on safari ([#13363](https://github.com/RocketChat/Rocket.Chat/pull/13363)) + +- link of k8s deploy ([#13612](https://github.com/RocketChat/Rocket.Chat/pull/13612) by [@Mr-Linus](https://github.com/Mr-Linus)) + +- Links and upload paths when running in a subdir ([#13982](https://github.com/RocketChat/Rocket.Chat/pull/13982)) + +- Livechat office hours ([#14031](https://github.com/RocketChat/Rocket.Chat/pull/14031)) + +- Livechat user registration in another department ([#10695](https://github.com/RocketChat/Rocket.Chat/pull/10695)) + +- Loading theme CSS on first server startup ([#13953](https://github.com/RocketChat/Rocket.Chat/pull/13953)) + +- Loading user list from room messages ([#13769](https://github.com/RocketChat/Rocket.Chat/pull/13769)) + +- mention-links not being always resolved ([#11745](https://github.com/RocketChat/Rocket.Chat/pull/11745) by [@mrsimpson](https://github.com/mrsimpson)) + +- Message updating by Apps ([#13294](https://github.com/RocketChat/Rocket.Chat/pull/13294)) + +- Minor issues detected after testing the new Livechat client ([#13521](https://github.com/RocketChat/Rocket.Chat/pull/13521)) + +- Missing connection headers on Livechat REST API ([#14130](https://github.com/RocketChat/Rocket.Chat/pull/14130)) + +- Mobile view and re-enable E2E tests ([#13322](https://github.com/RocketChat/Rocket.Chat/pull/13322)) + +- No new room created when conversation is closed ([#13753](https://github.com/RocketChat/Rocket.Chat/pull/13753) by [@knrt10](https://github.com/knrt10)) + +- Non-latin room names and other slugifications ([#13467](https://github.com/RocketChat/Rocket.Chat/pull/13467)) + +- Normalize TAPi18n language string on Livechat widget ([#14012](https://github.com/RocketChat/Rocket.Chat/pull/14012)) + +- Obey audio notification preferences ([#14188](https://github.com/RocketChat/Rocket.Chat/pull/14188)) + +- Opening a Livechat room from another agent ([#13951](https://github.com/RocketChat/Rocket.Chat/pull/13951)) + +- OTR dialog issue ([#13755](https://github.com/RocketChat/Rocket.Chat/pull/13755) by [@knrt10](https://github.com/knrt10)) + +- Partially messaging formatting for bold letters ([#13599](https://github.com/RocketChat/Rocket.Chat/pull/13599) by [@knrt10](https://github.com/knrt10)) + +- Pass token for cloud register ([#13350](https://github.com/RocketChat/Rocket.Chat/pull/13350)) + +- Preview of image uploads were not working when apps framework is enable ([#13303](https://github.com/RocketChat/Rocket.Chat/pull/13303)) + +- Race condition on the loading of Apps on the admin page ([#13587](https://github.com/RocketChat/Rocket.Chat/pull/13587)) + +- Rate Limiter was limiting communication between instances ([#13326](https://github.com/RocketChat/Rocket.Chat/pull/13326)) + +- Read Receipt for Livechat Messages fixed ([#13832](https://github.com/RocketChat/Rocket.Chat/pull/13832) by [@knrt10](https://github.com/knrt10)) + +- Real names were not displayed in the reactions (API/UI) ([#13495](https://github.com/RocketChat/Rocket.Chat/pull/13495)) + +- Receiving agent for new livechats from REST API ([#14103](https://github.com/RocketChat/Rocket.Chat/pull/14103)) + +- Remove Room info for Direct Messages (#9383) ([#12429](https://github.com/RocketChat/Rocket.Chat/pull/12429) by [@vinade](https://github.com/vinade)) + +- Remove spaces in some i18n files ([#13801](https://github.com/RocketChat/Rocket.Chat/pull/13801)) + +- renderField template to correct short property usage ([#14148](https://github.com/RocketChat/Rocket.Chat/pull/14148)) + +- REST endpoint for creating custom emojis ([#13306](https://github.com/RocketChat/Rocket.Chat/pull/13306)) + +- Restart required to apply changes in API Rate Limiter settings ([#13451](https://github.com/RocketChat/Rocket.Chat/pull/13451)) + +- Right arrows in default HTML content ([#13502](https://github.com/RocketChat/Rocket.Chat/pull/13502)) + +- SAML certificate settings don't follow a pattern ([#14179](https://github.com/RocketChat/Rocket.Chat/pull/14179) by [@Hudell](https://github.com/Hudell)) + +- Setup wizard calling 'saveSetting' for each field/setting ([#13349](https://github.com/RocketChat/Rocket.Chat/pull/13349)) + +- Sidenav does not open on some admin pages ([#14010](https://github.com/RocketChat/Rocket.Chat/pull/14010)) + +- Sidenav mouse hover was slow ([#13482](https://github.com/RocketChat/Rocket.Chat/pull/13482)) + +- Slackbridge private channels ([#14273](https://github.com/RocketChat/Rocket.Chat/pull/14273) by [@Hudell](https://github.com/Hudell) & [@nylen](https://github.com/nylen)) + +- Small improvements on message box ([#13444](https://github.com/RocketChat/Rocket.Chat/pull/13444)) + +- Some Safari bugs ([#13895](https://github.com/RocketChat/Rocket.Chat/pull/13895)) + +- Stop livestream ([#13676](https://github.com/RocketChat/Rocket.Chat/pull/13676)) + +- Support for handling SAML LogoutRequest SLO ([#14074](https://github.com/RocketChat/Rocket.Chat/pull/14074)) + +- Theme CSS loading in subdir env ([#14015](https://github.com/RocketChat/Rocket.Chat/pull/14015)) + +- Translation interpolations for many languages ([#13751](https://github.com/RocketChat/Rocket.Chat/pull/13751) by [@fliptrail](https://github.com/fliptrail)) + +- Typo in a referrer header in inject.js file ([#13469](https://github.com/RocketChat/Rocket.Chat/pull/13469) by [@algomaster99](https://github.com/algomaster99)) + +- Update bad-words to 3.0.2 ([#13705](https://github.com/RocketChat/Rocket.Chat/pull/13705) by [@trivoallan](https://github.com/trivoallan)) + +- Updating a message from apps if keep history is on ([#14129](https://github.com/RocketChat/Rocket.Chat/pull/14129)) + +- User is unable to enter multiple emojis by clicking on the emoji icon ([#13744](https://github.com/RocketChat/Rocket.Chat/pull/13744) by [@Kailash0311](https://github.com/Kailash0311)) + +- users.getPreferences when the user doesn't have any preferences ([#13532](https://github.com/RocketChat/Rocket.Chat/pull/13532) by [@thayannevls](https://github.com/thayannevls)) + +- VIDEO/JITSI multiple calls before video call ([#13855](https://github.com/RocketChat/Rocket.Chat/pull/13855)) + +- View All members button now not in direct room ([#14081](https://github.com/RocketChat/Rocket.Chat/pull/14081) by [@knrt10](https://github.com/knrt10)) + +- WebRTC wasn't working duo to design and browser's APIs changes ([#13675](https://github.com/RocketChat/Rocket.Chat/pull/13675)) + +- wrong importing of e2e ([#13863](https://github.com/RocketChat/Rocket.Chat/pull/13863)) + +- Wrong permalink when running in subdir ([#13746](https://github.com/RocketChat/Rocket.Chat/pull/13746) by [@ura14h](https://github.com/ura14h)) + +- wrong width/height for tile_70 (mstile 70x70 (png)) ([#13851](https://github.com/RocketChat/Rocket.Chat/pull/13851) by [@ulf-f](https://github.com/ulf-f)) + +
+🔍 Minor changes + + +- Convert rocketchat-apps to main module structure ([#13409](https://github.com/RocketChat/Rocket.Chat/pull/13409)) + +- Convert rocketchat-lib to main module structure ([#13415](https://github.com/RocketChat/Rocket.Chat/pull/13415)) + +- Fix some imports from wrong packages, remove exports and files unused in rc-ui ([#13422](https://github.com/RocketChat/Rocket.Chat/pull/13422)) + +- Import missed functions to remove dependency of RC namespace ([#13414](https://github.com/RocketChat/Rocket.Chat/pull/13414)) + +- Remove dependency of RC namespace in livechat/client ([#13370](https://github.com/RocketChat/Rocket.Chat/pull/13370)) + +- Remove dependency of RC namespace in rc-integrations and importer-hipchat-enterprise ([#13386](https://github.com/RocketChat/Rocket.Chat/pull/13386)) + +- Remove dependency of RC namespace in rc-livechat/server/publications ([#13383](https://github.com/RocketChat/Rocket.Chat/pull/13383)) + +- Remove dependency of RC namespace in rc-message-pin and message-snippet ([#13343](https://github.com/RocketChat/Rocket.Chat/pull/13343)) + +- Remove dependency of RC namespace in rc-oembed and rc-otr ([#13345](https://github.com/RocketChat/Rocket.Chat/pull/13345)) + +- Remove dependency of RC namespace in rc-reactions, retention-policy and search ([#13347](https://github.com/RocketChat/Rocket.Chat/pull/13347)) + +- Remove dependency of RC namespace in rc-slash-archiveroom, create, help, hide, invite, inviteall and join ([#13356](https://github.com/RocketChat/Rocket.Chat/pull/13356)) + +- Remove dependency of RC namespace in rc-smarsh-connector, sms and spotify ([#13358](https://github.com/RocketChat/Rocket.Chat/pull/13358)) + +- Remove dependency of RC namespace in rc-statistics and tokenpass ([#13359](https://github.com/RocketChat/Rocket.Chat/pull/13359)) + +- Remove dependency of RC namespace in rc-ui-master, ui-message- user-data-download and version-check ([#13365](https://github.com/RocketChat/Rocket.Chat/pull/13365)) + +- Remove dependency of RC namespace in rc-ui, ui-account and ui-admin ([#13361](https://github.com/RocketChat/Rocket.Chat/pull/13361)) + +- Remove dependency of RC namespace in rc-videobridge and webdav ([#13366](https://github.com/RocketChat/Rocket.Chat/pull/13366)) + +- Remove dependency of RC namespace in root client folder, imports/message-read-receipt and imports/personal-access-tokens ([#13389](https://github.com/RocketChat/Rocket.Chat/pull/13389)) + +- Remove dependency of RC namespace in root server folder - step 1 ([#13390](https://github.com/RocketChat/Rocket.Chat/pull/13390)) + +- Remove dependency of RC namespace in root server folder - step 4 ([#13400](https://github.com/RocketChat/Rocket.Chat/pull/13400)) + +- Remove functions from globals ([#13421](https://github.com/RocketChat/Rocket.Chat/pull/13421)) + +- Remove LIvechat global variable from RC namespace ([#13378](https://github.com/RocketChat/Rocket.Chat/pull/13378)) + +- Remove unused files and code in rc-lib - step 1 ([#13416](https://github.com/RocketChat/Rocket.Chat/pull/13416)) + +- Remove unused files and code in rc-lib - step 3 ([#13420](https://github.com/RocketChat/Rocket.Chat/pull/13420)) + +- Remove unused files in rc-lib - step 2 ([#13419](https://github.com/RocketChat/Rocket.Chat/pull/13419)) + +- [BUG] Icon Fixed for Knowledge base on Livechat ([#13806](https://github.com/RocketChat/Rocket.Chat/pull/13806) by [@knrt10](https://github.com/knrt10)) + +- [New] Reply privately to group messages ([#14150](https://github.com/RocketChat/Rocket.Chat/pull/14150) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- [Regression] Fix integrations message example ([#14111](https://github.com/RocketChat/Rocket.Chat/pull/14111)) + +- [REGRESSION] Fix variable name references in message template ([#14184](https://github.com/RocketChat/Rocket.Chat/pull/14184)) + +- [REGRESSION] Messages sent by livechat's guests are losing sender info ([#14174](https://github.com/RocketChat/Rocket.Chat/pull/14174)) + +- [Regression] Personal Access Token list fixed ([#14216](https://github.com/RocketChat/Rocket.Chat/pull/14216) by [@knrt10](https://github.com/knrt10)) + +- Add better positioning for tooltips on edges ([#13472](https://github.com/RocketChat/Rocket.Chat/pull/13472)) + +- Add Houston config ([#13707](https://github.com/RocketChat/Rocket.Chat/pull/13707)) + +- Add pagination to getUsersOfRoom ([#12834](https://github.com/RocketChat/Rocket.Chat/pull/12834) by [@Hudell](https://github.com/Hudell)) + +- Add support to search for all users in directory ([#13803](https://github.com/RocketChat/Rocket.Chat/pull/13803)) + +- Added federation ping, loopback and dashboard ([#14007](https://github.com/RocketChat/Rocket.Chat/pull/14007)) + +- Adds French translation of Personal Access Token ([#13779](https://github.com/RocketChat/Rocket.Chat/pull/13779) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Allow set env var METEOR_OPLOG_TOO_FAR_BEHIND ([#14017](https://github.com/RocketChat/Rocket.Chat/pull/14017)) + +- Broken styles in Administration's contextual bar ([#14222](https://github.com/RocketChat/Rocket.Chat/pull/14222)) + +- Change dynamic dependency of FileUpload in Messages models ([#13776](https://github.com/RocketChat/Rocket.Chat/pull/13776)) + +- Change the way to resolve DNS for Federation ([#13695](https://github.com/RocketChat/Rocket.Chat/pull/13695)) + +- Convert imports to relative paths ([#13740](https://github.com/RocketChat/Rocket.Chat/pull/13740)) + +- Convert rc-nrr and slashcommands open to main module structure ([#13520](https://github.com/RocketChat/Rocket.Chat/pull/13520)) + +- created function to allow change default values, fix loading search users ([#14177](https://github.com/RocketChat/Rocket.Chat/pull/14177)) + +- Depack: Use mainModule for root files ([#13508](https://github.com/RocketChat/Rocket.Chat/pull/13508)) + +- Depackaging ([#13483](https://github.com/RocketChat/Rocket.Chat/pull/13483)) + +- Deprecate /api/v1/info in favor of /api/info ([#13798](https://github.com/RocketChat/Rocket.Chat/pull/13798)) + +- ESLint: Add more import rules ([#14226](https://github.com/RocketChat/Rocket.Chat/pull/14226)) + +- Exit process on unhandled rejection ([#14220](https://github.com/RocketChat/Rocket.Chat/pull/14220)) + +- Faster CI build for PR ([#14171](https://github.com/RocketChat/Rocket.Chat/pull/14171)) + +- Fix debug logging not being enabled by the setting ([#13979](https://github.com/RocketChat/Rocket.Chat/pull/13979)) + +- Fix discussions issues after room deletion and translation actions not being shown ([#14018](https://github.com/RocketChat/Rocket.Chat/pull/14018)) + +- Fix messages losing thread titles on editing or reaction and improve message actions ([#14051](https://github.com/RocketChat/Rocket.Chat/pull/14051)) + +- Fix missing dependencies on stretch CI image ([#13910](https://github.com/RocketChat/Rocket.Chat/pull/13910)) + +- Fix modal scroll ([#14052](https://github.com/RocketChat/Rocket.Chat/pull/14052)) + +- Fix race condition of lastMessage set ([#14041](https://github.com/RocketChat/Rocket.Chat/pull/14041)) + +- Fix room re-rendering ([#14044](https://github.com/RocketChat/Rocket.Chat/pull/14044)) + +- Fix sending message from action buttons in messages ([#14101](https://github.com/RocketChat/Rocket.Chat/pull/14101)) + +- Fix sending notifications to mentions on threads and discussion email sender ([#14043](https://github.com/RocketChat/Rocket.Chat/pull/14043)) + +- Fix shield indentation ([#14048](https://github.com/RocketChat/Rocket.Chat/pull/14048)) + +- Fix threads rendering performance ([#14059](https://github.com/RocketChat/Rocket.Chat/pull/14059)) + +- Fix threads tests ([#14180](https://github.com/RocketChat/Rocket.Chat/pull/14180)) + +- Fix top bar unread message counter ([#14102](https://github.com/RocketChat/Rocket.Chat/pull/14102)) + +- Fix update apps capability of updating messages ([#14118](https://github.com/RocketChat/Rocket.Chat/pull/14118)) + +- Fix wrong imports ([#13601](https://github.com/RocketChat/Rocket.Chat/pull/13601)) + +- Fix: addRoomAccessValidator method created for Threads ([#13789](https://github.com/RocketChat/Rocket.Chat/pull/13789)) + +- Fix: Error when version check endpoint was returning invalid data ([#14089](https://github.com/RocketChat/Rocket.Chat/pull/14089)) + +- Fix: Missing export in cloud package ([#13282](https://github.com/RocketChat/Rocket.Chat/pull/13282)) + +- Fix: Mongo.setConnectionOptions was not being set correctly ([#13586](https://github.com/RocketChat/Rocket.Chat/pull/13586)) + +- Fix: Remove message class `sequential` if `new-day` is present ([#14116](https://github.com/RocketChat/Rocket.Chat/pull/14116)) + +- Fix: Skip thread notifications on message edit ([#14100](https://github.com/RocketChat/Rocket.Chat/pull/14100)) + +- Fix: Some german translations ([#13299](https://github.com/RocketChat/Rocket.Chat/pull/13299) by [@soenkef](https://github.com/soenkef)) + +- Fix: Tests were not exiting RC instances ([#14054](https://github.com/RocketChat/Rocket.Chat/pull/14054)) + +- Force some words to translate in other languages ([#13367](https://github.com/RocketChat/Rocket.Chat/pull/13367) by [@soltanabadiyan](https://github.com/soltanabadiyan)) + +- Force unstyling of blockquote under .message-body--unstyled ([#14274](https://github.com/RocketChat/Rocket.Chat/pull/14274)) + +- Improve message validation ([#14266](https://github.com/RocketChat/Rocket.Chat/pull/14266)) + +- Improve: Decrease padding for app buy modal ([#13984](https://github.com/RocketChat/Rocket.Chat/pull/13984)) + +- Improve: Marketplace auth inside Rocket.Chat instead of inside the iframe. ([#14258](https://github.com/RocketChat/Rocket.Chat/pull/14258)) + +- Improve: Send cloud token to Federation Hub ([#13651](https://github.com/RocketChat/Rocket.Chat/pull/13651)) + +- Improve: Support search and adding federated users through regular endpoints ([#13936](https://github.com/RocketChat/Rocket.Chat/pull/13936)) + +- Increment user counter on DMs ([#14185](https://github.com/RocketChat/Rocket.Chat/pull/14185)) + +- LingoHub based on develop ([#13964](https://github.com/RocketChat/Rocket.Chat/pull/13964)) + +- LingoHub based on develop ([#13891](https://github.com/RocketChat/Rocket.Chat/pull/13891)) + +- LingoHub based on develop ([#13839](https://github.com/RocketChat/Rocket.Chat/pull/13839)) + +- LingoHub based on develop ([#13623](https://github.com/RocketChat/Rocket.Chat/pull/13623)) + +- LingoHub based on develop ([#14046](https://github.com/RocketChat/Rocket.Chat/pull/14046)) + +- LingoHub based on develop ([#14178](https://github.com/RocketChat/Rocket.Chat/pull/14178)) + +- Lingohub sync and additional fixes ([#13825](https://github.com/RocketChat/Rocket.Chat/pull/13825)) + +- Merge master into develop & Set version to 1.0.0-develop ([#13435](https://github.com/RocketChat/Rocket.Chat/pull/13435) by [@Hudell](https://github.com/Hudell) & [@TkTech](https://github.com/TkTech) & [@theundefined](https://github.com/theundefined)) + +- Move LDAP Escape to login handler ([#14234](https://github.com/RocketChat/Rocket.Chat/pull/14234)) + +- Move mongo config away from cors package ([#13531](https://github.com/RocketChat/Rocket.Chat/pull/13531)) + +- Move rc-livechat server models to rc-models ([#13384](https://github.com/RocketChat/Rocket.Chat/pull/13384)) + +- New threads layout ([#14269](https://github.com/RocketChat/Rocket.Chat/pull/14269)) + +- OpenShift custom OAuth support ([#13925](https://github.com/RocketChat/Rocket.Chat/pull/13925) by [@bsharrow](https://github.com/bsharrow)) + +- Prevent click on reply thread to trigger flex tab closing ([#14215](https://github.com/RocketChat/Rocket.Chat/pull/14215)) + +- Prevent error for ldap login with invalid characters ([#14160](https://github.com/RocketChat/Rocket.Chat/pull/14160)) + +- Prevent error on normalize thread message for preview ([#14170](https://github.com/RocketChat/Rocket.Chat/pull/14170)) + +- Prioritize user-mentions badge ([#14057](https://github.com/RocketChat/Rocket.Chat/pull/14057)) + +- Proper thread quote, clear message box on send, and other nice things to have ([#14049](https://github.com/RocketChat/Rocket.Chat/pull/14049)) + +- Regression: Active room was not being marked ([#14276](https://github.com/RocketChat/Rocket.Chat/pull/14276)) + +- Regression: Add debounce on admin users search to avoid blocking by DDP Rate Limiter ([#13529](https://github.com/RocketChat/Rocket.Chat/pull/13529)) + +- Regression: Add missing translations used in Apps pages ([#13674](https://github.com/RocketChat/Rocket.Chat/pull/13674)) + +- Regression: Admin embedded layout ([#14229](https://github.com/RocketChat/Rocket.Chat/pull/14229)) + +- Regression: Broken UI for messages ([#14223](https://github.com/RocketChat/Rocket.Chat/pull/14223)) + +- Regression: Cursor position set to beginning when editing a message ([#14245](https://github.com/RocketChat/Rocket.Chat/pull/14245)) + +- Regression: Discussions - Invite users and DM ([#13646](https://github.com/RocketChat/Rocket.Chat/pull/13646)) + +- Regression: Discussions were not showing on Tab Bar ([#14050](https://github.com/RocketChat/Rocket.Chat/pull/14050) by [@knrt10](https://github.com/knrt10)) + +- Regression: Exception on notification when adding someone in room via mention ([#14251](https://github.com/RocketChat/Rocket.Chat/pull/14251)) + +- Regression: fix app pages styles ([#13567](https://github.com/RocketChat/Rocket.Chat/pull/13567)) + +- Regression: Fix autolinker that was not parsing urls correctly ([#13497](https://github.com/RocketChat/Rocket.Chat/pull/13497)) + +- Regression: fix drop file ([#14225](https://github.com/RocketChat/Rocket.Chat/pull/14225)) + +- Regression: Fix embedded layout ([#13574](https://github.com/RocketChat/Rocket.Chat/pull/13574)) + +- Regression: fix grouping for reactive message ([#14246](https://github.com/RocketChat/Rocket.Chat/pull/14246)) + +- Regression: Fix icon for DMs ([#13679](https://github.com/RocketChat/Rocket.Chat/pull/13679)) + +- Regression: Fix wrong imports in rc-models ([#13516](https://github.com/RocketChat/Rocket.Chat/pull/13516)) + +- Regression: grouping messages on threads ([#14238](https://github.com/RocketChat/Rocket.Chat/pull/14238)) + +- Regression: Message box does not go back to initial state after sending a message ([#14161](https://github.com/RocketChat/Rocket.Chat/pull/14161)) + +- Regression: Message box geolocation was throwing error ([#13496](https://github.com/RocketChat/Rocket.Chat/pull/13496)) + +- Regression: Missing settings import at `packages/rocketchat-livechat/server/methods/saveAppearance.js` ([#13573](https://github.com/RocketChat/Rocket.Chat/pull/13573)) + +- Regression: Not updating subscriptions and not showing desktop notifcations ([#13509](https://github.com/RocketChat/Rocket.Chat/pull/13509)) + +- Regression: Prevent startup errors for mentions parsing ([#14219](https://github.com/RocketChat/Rocket.Chat/pull/14219)) + +- Regression: Prune Threads ([#13683](https://github.com/RocketChat/Rocket.Chat/pull/13683)) + +- Regression: Remove border from unstyled message body ([#14235](https://github.com/RocketChat/Rocket.Chat/pull/14235)) + +- Regression: removed backup files ([#13729](https://github.com/RocketChat/Rocket.Chat/pull/13729)) + +- Regression: Role creation and deletion error fixed ([#14097](https://github.com/RocketChat/Rocket.Chat/pull/14097) by [@knrt10](https://github.com/knrt10)) + +- Regression: Sidebar create new channel hover text ([#13658](https://github.com/RocketChat/Rocket.Chat/pull/13658) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- Regression: System messages styling ([#14189](https://github.com/RocketChat/Rocket.Chat/pull/14189)) + +- Regression: Table admin pages ([#13411](https://github.com/RocketChat/Rocket.Chat/pull/13411)) + +- Regression: Template error ([#13410](https://github.com/RocketChat/Rocket.Chat/pull/13410)) + +- Regression: Threads styles improvement ([#13741](https://github.com/RocketChat/Rocket.Chat/pull/13741)) + +- Regression: User autocomplete was not listing users from correct room ([#14125](https://github.com/RocketChat/Rocket.Chat/pull/14125)) + +- Regression: User Discussions join message ([#13656](https://github.com/RocketChat/Rocket.Chat/pull/13656) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- Regression: wrong expression at messageBox.actions.remove() ([#14192](https://github.com/RocketChat/Rocket.Chat/pull/14192)) + +- Remove bitcoin link in Readme.md since the link is broken ([#13935](https://github.com/RocketChat/Rocket.Chat/pull/13935) by [@ashwaniYDV](https://github.com/ashwaniYDV)) + +- Remove dependency of RC namespace in rc-livechat/imports, lib, server/api, server/hooks and server/lib ([#13379](https://github.com/RocketChat/Rocket.Chat/pull/13379)) + +- Remove dependency of RC namespace in rc-livechat/server/methods ([#13382](https://github.com/RocketChat/Rocket.Chat/pull/13382)) + +- Remove dependency of RC namespace in rc-livechat/server/models ([#13377](https://github.com/RocketChat/Rocket.Chat/pull/13377)) + +- Remove dependency of RC namespace in rc-oauth2-server and message-star ([#13344](https://github.com/RocketChat/Rocket.Chat/pull/13344)) + +- Remove dependency of RC namespace in rc-setup-wizard, slackbridge and asciiarts ([#13348](https://github.com/RocketChat/Rocket.Chat/pull/13348)) + +- Remove dependency of RC namespace in rc-slash-kick, leave, me, msg, mute, open, topic and unarchiveroom ([#13357](https://github.com/RocketChat/Rocket.Chat/pull/13357)) + +- Remove dependency of RC namespace in rc-ui-clean-history, ui-admin and ui-login ([#13362](https://github.com/RocketChat/Rocket.Chat/pull/13362)) + +- Remove dependency of RC namespace in rc-wordpress, chatpal-search and irc ([#13492](https://github.com/RocketChat/Rocket.Chat/pull/13492)) + +- Remove dependency of RC namespace in root server folder - step 2 ([#13397](https://github.com/RocketChat/Rocket.Chat/pull/13397)) + +- Remove dependency of RC namespace in root server folder - step 3 ([#13398](https://github.com/RocketChat/Rocket.Chat/pull/13398)) + +- Remove dependency of RC namespace in root server folder - step 5 ([#13402](https://github.com/RocketChat/Rocket.Chat/pull/13402)) + +- Remove dependency of RC namespace in root server folder - step 6 ([#13405](https://github.com/RocketChat/Rocket.Chat/pull/13405)) + +- Remove Npm.depends and Npm.require except those that are inside package.js ([#13518](https://github.com/RocketChat/Rocket.Chat/pull/13518)) + +- Remove Package references ([#13523](https://github.com/RocketChat/Rocket.Chat/pull/13523)) + +- Remove Sandstorm support ([#13773](https://github.com/RocketChat/Rocket.Chat/pull/13773)) + +- Remove some bad references to messageBox ([#13954](https://github.com/RocketChat/Rocket.Chat/pull/13954)) + +- Remove some index.js files routing for server/client files ([#13772](https://github.com/RocketChat/Rocket.Chat/pull/13772)) + +- Remove unused files ([#13833](https://github.com/RocketChat/Rocket.Chat/pull/13833)) + +- Remove unused files ([#13725](https://github.com/RocketChat/Rocket.Chat/pull/13725)) + +- Remove unused style ([#13834](https://github.com/RocketChat/Rocket.Chat/pull/13834)) + +- Removed old templates ([#13406](https://github.com/RocketChat/Rocket.Chat/pull/13406)) + +- Removing (almost) every dynamic imports ([#13767](https://github.com/RocketChat/Rocket.Chat/pull/13767)) + +- Rename Cloud to Connectivity Services & split Apps in Apps and Marketplace ([#14211](https://github.com/RocketChat/Rocket.Chat/pull/14211)) + +- Rename Threads to Discussion ([#13782](https://github.com/RocketChat/Rocket.Chat/pull/13782)) + +- Settings: disable reset button ([#14026](https://github.com/RocketChat/Rocket.Chat/pull/14026)) + +- Settings: hiding reset button for readonly fields ([#14025](https://github.com/RocketChat/Rocket.Chat/pull/14025)) + +- Show discussion avatar ([#14053](https://github.com/RocketChat/Rocket.Chat/pull/14053)) + +- Small improvements to federation callbacks/hooks ([#13946](https://github.com/RocketChat/Rocket.Chat/pull/13946)) + +- Smaller thread replies and system messages ([#14099](https://github.com/RocketChat/Rocket.Chat/pull/14099)) + +- Unify mime-type package configuration ([#14217](https://github.com/RocketChat/Rocket.Chat/pull/14217)) + +- Unstuck observers every minute ([#14076](https://github.com/RocketChat/Rocket.Chat/pull/14076)) + +- Update badges and mention links colors ([#14071](https://github.com/RocketChat/Rocket.Chat/pull/14071)) + +- Update eslint config ([#13966](https://github.com/RocketChat/Rocket.Chat/pull/13966)) + +- Update husky config ([#13687](https://github.com/RocketChat/Rocket.Chat/pull/13687)) + +- Update Meteor 1.8.0.2 ([#13519](https://github.com/RocketChat/Rocket.Chat/pull/13519)) + +- Update preview Dockerfile to use Stretch dependencies ([#13947](https://github.com/RocketChat/Rocket.Chat/pull/13947)) + +- Use CircleCI Debian Stretch images ([#13906](https://github.com/RocketChat/Rocket.Chat/pull/13906)) + +- Use main message as thread tab title ([#14213](https://github.com/RocketChat/Rocket.Chat/pull/14213)) + +- Use own logic to get thread infos via REST ([#14210](https://github.com/RocketChat/Rocket.Chat/pull/14210)) + +- User remove role dialog fixed ([#13874](https://github.com/RocketChat/Rocket.Chat/pull/13874) by [@bhardwajaditya](https://github.com/bhardwajaditya)) + +- Wait port release to finish tests ([#14066](https://github.com/RocketChat/Rocket.Chat/pull/14066)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@DeviaVir](https://github.com/DeviaVir) +- [@Hudell](https://github.com/Hudell) +- [@Kailash0311](https://github.com/Kailash0311) +- [@MohammedEssehemy](https://github.com/MohammedEssehemy) +- [@Montel](https://github.com/Montel) +- [@Mr-Linus](https://github.com/Mr-Linus) +- [@Peym4n](https://github.com/Peym4n) +- [@TkTech](https://github.com/TkTech) +- [@algomaster99](https://github.com/algomaster99) +- [@ashwaniYDV](https://github.com/ashwaniYDV) +- [@bhardwajaditya](https://github.com/bhardwajaditya) +- [@bsharrow](https://github.com/bsharrow) +- [@fliptrail](https://github.com/fliptrail) +- [@gsunit](https://github.com/gsunit) +- [@hmagarotto](https://github.com/hmagarotto) +- [@huydang284](https://github.com/huydang284) +- [@hypery2k](https://github.com/hypery2k) +- [@jhnburke8](https://github.com/jhnburke8) +- [@john08burke](https://github.com/john08burke) +- [@kable-wilmoth](https://github.com/kable-wilmoth) +- [@knrt10](https://github.com/knrt10) +- [@localguru](https://github.com/localguru) +- [@mjovanovic0](https://github.com/mjovanovic0) +- [@mrsimpson](https://github.com/mrsimpson) +- [@ngulden](https://github.com/ngulden) +- [@nylen](https://github.com/nylen) +- [@pkolmann](https://github.com/pkolmann) +- [@ralfbecker](https://github.com/ralfbecker) +- [@rssilva](https://github.com/rssilva) +- [@savish28](https://github.com/savish28) +- [@soenkef](https://github.com/soenkef) +- [@soltanabadiyan](https://github.com/soltanabadiyan) +- [@steerben](https://github.com/steerben) +- [@supra08](https://github.com/supra08) +- [@thayannevls](https://github.com/thayannevls) +- [@the4ndy](https://github.com/the4ndy) +- [@theundefined](https://github.com/theundefined) +- [@tiangolo](https://github.com/tiangolo) +- [@timkinnane](https://github.com/timkinnane) +- [@trivoallan](https://github.com/trivoallan) +- [@ulf-f](https://github.com/ulf-f) +- [@ura14h](https://github.com/ura14h) +- [@vickyokrm](https://github.com/vickyokrm) +- [@vinade](https://github.com/vinade) +- [@wreiske](https://github.com/wreiske) +- [@xbolshe](https://github.com/xbolshe) +- [@zolbayars](https://github.com/zolbayars) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.74.3 +`2019-02-13 · 3 🚀 · 11 🐛 · 3 🔍 · 9 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🚀 Improvements + + +- Add API option "permissionsRequired" ([#13430](https://github.com/RocketChat/Rocket.Chat/pull/13430)) + +- Allow configure Prometheus port per process via Environment Variable ([#13436](https://github.com/RocketChat/Rocket.Chat/pull/13436)) + +- Open rooms quicker ([#13417](https://github.com/RocketChat/Rocket.Chat/pull/13417)) + +### 🐛 Bug fixes + + +- "Test Desktop Notifications" not triggering a notification ([#13457](https://github.com/RocketChat/Rocket.Chat/pull/13457)) + +- Invalid condition on getting next livechat agent over REST API endpoint ([#13360](https://github.com/RocketChat/Rocket.Chat/pull/13360)) + +- Invalid push gateway configuration, requires the uniqueId ([#13423](https://github.com/RocketChat/Rocket.Chat/pull/13423)) + +- Misaligned upload progress bar "cancel" button ([#13407](https://github.com/RocketChat/Rocket.Chat/pull/13407)) + +- Not translated emails ([#13452](https://github.com/RocketChat/Rocket.Chat/pull/13452)) + +- Notify private settings changes even on public settings changed ([#13369](https://github.com/RocketChat/Rocket.Chat/pull/13369)) + +- Properly escape custom emoji names for pattern matching ([#13408](https://github.com/RocketChat/Rocket.Chat/pull/13408)) + +- Several Problems on HipChat Importer ([#13336](https://github.com/RocketChat/Rocket.Chat/pull/13336) by [@Hudell](https://github.com/Hudell)) + +- Translated and incorrect i18n variables ([#13463](https://github.com/RocketChat/Rocket.Chat/pull/13463) by [@leonboot](https://github.com/leonboot)) + +- Update Russian localization ([#13244](https://github.com/RocketChat/Rocket.Chat/pull/13244) by [@BehindLoader](https://github.com/BehindLoader)) + +- XML-decryption module not found ([#13437](https://github.com/RocketChat/Rocket.Chat/pull/13437) by [@Hudell](https://github.com/Hudell)) + +
+🔍 Minor changes + + +- Regression: Remove console.log on email translations ([#13456](https://github.com/RocketChat/Rocket.Chat/pull/13456)) + +- Release 0.74.3 ([#13474](https://github.com/RocketChat/Rocket.Chat/pull/13474) by [@BehindLoader](https://github.com/BehindLoader) & [@Hudell](https://github.com/Hudell) & [@leonboot](https://github.com/leonboot)) + +- Room loading improvements ([#13471](https://github.com/RocketChat/Rocket.Chat/pull/13471)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@BehindLoader](https://github.com/BehindLoader) +- [@Hudell](https://github.com/Hudell) +- [@leonboot](https://github.com/leonboot) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.74.2 +`2019-02-05 · 1 🚀 · 3 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🚀 Improvements + + +- Send `uniqueID` to all clients so Jitsi rooms can be created correctly ([#13342](https://github.com/RocketChat/Rocket.Chat/pull/13342)) + +### 🐛 Bug fixes + + +- Pass token for cloud register ([#13350](https://github.com/RocketChat/Rocket.Chat/pull/13350)) + +- Rate Limiter was limiting communication between instances ([#13326](https://github.com/RocketChat/Rocket.Chat/pull/13326)) + +- Setup wizard calling 'saveSetting' for each field/setting ([#13349](https://github.com/RocketChat/Rocket.Chat/pull/13349)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.74.1 +`2019-02-01 · 4 🎉 · 7 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🎉 New features + + +- Add parseUrls field to the apps message converter ([#13248](https://github.com/RocketChat/Rocket.Chat/pull/13248)) + +- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525)) + +- Limit all DDP/Websocket requests (configurable via admin panel) ([#13311](https://github.com/RocketChat/Rocket.Chat/pull/13311)) + +- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308)) + +### 🐛 Bug fixes + + +- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341)) + +- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell)) + +- Hipchat Enterprise Importer not generating subscriptions ([#13293](https://github.com/RocketChat/Rocket.Chat/pull/13293) by [@Hudell](https://github.com/Hudell)) + +- Message updating by Apps ([#13294](https://github.com/RocketChat/Rocket.Chat/pull/13294)) + +- Mobile view and re-enable E2E tests ([#13322](https://github.com/RocketChat/Rocket.Chat/pull/13322)) + +- Preview of image uploads were not working when apps framework is enable ([#13303](https://github.com/RocketChat/Rocket.Chat/pull/13303)) + +- REST endpoint for creating custom emojis ([#13306](https://github.com/RocketChat/Rocket.Chat/pull/13306)) + +
+🔍 Minor changes + + +- Fix: Missing export in cloud package ([#13282](https://github.com/RocketChat/Rocket.Chat/pull/13282)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.74.0 +`2019-01-28 · 11 🎉 · 11 🚀 · 15 🐛 · 36 🔍 · 22 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🎉 New features + + +- Add Allow Methods directive to CORS ([#13073](https://github.com/RocketChat/Rocket.Chat/pull/13073)) + +- Add create, update and delete endpoint for custom emojis ([#13160](https://github.com/RocketChat/Rocket.Chat/pull/13160)) + +- Add new Livechat REST endpoint to update the visitor's status ([#13108](https://github.com/RocketChat/Rocket.Chat/pull/13108)) + +- Add rate limiter to REST endpoints ([#11251](https://github.com/RocketChat/Rocket.Chat/pull/11251)) + +- Added an option to disable email when activate and deactivate users ([#13183](https://github.com/RocketChat/Rocket.Chat/pull/13183)) + +- Added endpoint to update timeout of the jitsi video conference ([#13167](https://github.com/RocketChat/Rocket.Chat/pull/13167)) + +- Added stream to notify when agent status change ([#13076](https://github.com/RocketChat/Rocket.Chat/pull/13076)) + +- Cloud Integration ([#13013](https://github.com/RocketChat/Rocket.Chat/pull/13013)) + +- Display total number of files and total upload size in admin ([#13184](https://github.com/RocketChat/Rocket.Chat/pull/13184)) + +- Livechat GDPR compliance ([#12982](https://github.com/RocketChat/Rocket.Chat/pull/12982)) + +- SAML: Adds possibility to decrypt encrypted assertions ([#12153](https://github.com/RocketChat/Rocket.Chat/pull/12153) by [@gerbsen](https://github.com/gerbsen)) + +### 🚀 Improvements + + +- Add "Apps Engine Version" to Administration > Info ([#13169](https://github.com/RocketChat/Rocket.Chat/pull/13169)) + +- Adds history log for all Importers and improves HipChat import performance ([#13083](https://github.com/RocketChat/Rocket.Chat/pull/13083) by [@Hudell](https://github.com/Hudell)) + +- Adds the "showConnecting" property to Livechat Config payload ([#13158](https://github.com/RocketChat/Rocket.Chat/pull/13158)) + +- Change the way the app detail screen shows support link when it's an email ([#13129](https://github.com/RocketChat/Rocket.Chat/pull/13129)) + +- Dutch translations ([#12294](https://github.com/RocketChat/Rocket.Chat/pull/12294) by [@Jeroeny](https://github.com/Jeroeny)) + +- Inject metrics on callbacks ([#13266](https://github.com/RocketChat/Rocket.Chat/pull/13266)) + +- New Livechat statistics added to statistics collector ([#13168](https://github.com/RocketChat/Rocket.Chat/pull/13168)) + +- Persian translations ([#13114](https://github.com/RocketChat/Rocket.Chat/pull/13114) by [@behnejad](https://github.com/behnejad)) + +- Process alerts from update checking ([#13194](https://github.com/RocketChat/Rocket.Chat/pull/13194)) + +- Return room type field on Livechat findRoom method ([#13078](https://github.com/RocketChat/Rocket.Chat/pull/13078)) + +- Return visitorEmails field on Livechat findGuest method ([#13097](https://github.com/RocketChat/Rocket.Chat/pull/13097)) + +### 🐛 Bug fixes + + +- #11692 - Suppress error when drop collection in migration to suit to … ([#13091](https://github.com/RocketChat/Rocket.Chat/pull/13091) by [@Xuhao](https://github.com/Xuhao)) + +- Avatars with transparency were being converted to black ([#13181](https://github.com/RocketChat/Rocket.Chat/pull/13181)) + +- Change input type of e2e to password ([#13077](https://github.com/RocketChat/Rocket.Chat/pull/13077) by [@supra08](https://github.com/supra08)) + +- Change webdav creation, due to changes in the npm lib after last update ([#13170](https://github.com/RocketChat/Rocket.Chat/pull/13170)) + +- Emoticons not displayed in room topic ([#12858](https://github.com/RocketChat/Rocket.Chat/pull/12858) by [@alexbartsch](https://github.com/alexbartsch)) + +- Invite command was not accpeting @ in username ([#12927](https://github.com/RocketChat/Rocket.Chat/pull/12927) by [@piotrkochan](https://github.com/piotrkochan)) + +- LDAP login of new users overwriting `fname` from all subscriptions ([#13203](https://github.com/RocketChat/Rocket.Chat/pull/13203)) + +- Notifications for mentions not working on large rooms and don't emit desktop notifications for offline users ([#13067](https://github.com/RocketChat/Rocket.Chat/pull/13067)) + +- Remove ES6 code from Livechat widget script ([#13105](https://github.com/RocketChat/Rocket.Chat/pull/13105)) + +- Remove unused code for Cordova ([#13188](https://github.com/RocketChat/Rocket.Chat/pull/13188)) + +- REST api client base url on subdir ([#13180](https://github.com/RocketChat/Rocket.Chat/pull/13180)) + +- REST API endpoint `users.getPersonalAccessTokens` error when user has no access tokens ([#13150](https://github.com/RocketChat/Rocket.Chat/pull/13150)) + +- Snap upgrade add post-refresh hook ([#13153](https://github.com/RocketChat/Rocket.Chat/pull/13153)) + +- Update Message: Does not show edited when message was not edited. ([#13053](https://github.com/RocketChat/Rocket.Chat/pull/13053) by [@Kailash0311](https://github.com/Kailash0311)) + +- User status on header and user info are not translated ([#13096](https://github.com/RocketChat/Rocket.Chat/pull/13096)) + +
+🔍 Minor changes + + +- Remove dependency of RocketChat namespace and push-notifications ([#13137](https://github.com/RocketChat/Rocket.Chat/pull/13137)) + +- Change apps engine persistence bridge method to updateByAssociations ([#13239](https://github.com/RocketChat/Rocket.Chat/pull/13239)) + +- Convert rocketchat-file-upload to main module structure ([#13094](https://github.com/RocketChat/Rocket.Chat/pull/13094)) + +- Convert rocketchat-ui-master to main module structure ([#13107](https://github.com/RocketChat/Rocket.Chat/pull/13107)) + +- Convert rocketchat-ui-sidenav to main module structure ([#13098](https://github.com/RocketChat/Rocket.Chat/pull/13098)) + +- Convert rocketchat-webrtc to main module structure ([#13117](https://github.com/RocketChat/Rocket.Chat/pull/13117)) + +- Convert rocketchat:ui to main module structure ([#13132](https://github.com/RocketChat/Rocket.Chat/pull/13132)) + +- Globals/main module custom oauth ([#13037](https://github.com/RocketChat/Rocket.Chat/pull/13037)) + +- Globals/move rocketchat notifications ([#13035](https://github.com/RocketChat/Rocket.Chat/pull/13035)) + +- Language: Edit typo "Обновлить" ([#13177](https://github.com/RocketChat/Rocket.Chat/pull/13177) by [@zpavlig](https://github.com/zpavlig)) + +- LingoHub based on develop ([#13201](https://github.com/RocketChat/Rocket.Chat/pull/13201)) + +- Merge master into develop & Set version to 0.74.0-develop ([#13050](https://github.com/RocketChat/Rocket.Chat/pull/13050) by [@Hudell](https://github.com/Hudell) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan)) + +- Move rocketchat models ([#13027](https://github.com/RocketChat/Rocket.Chat/pull/13027)) + +- Move rocketchat promises ([#13039](https://github.com/RocketChat/Rocket.Chat/pull/13039)) + +- Move rocketchat settings to specific package ([#13026](https://github.com/RocketChat/Rocket.Chat/pull/13026)) + +- Move some function to utils ([#13122](https://github.com/RocketChat/Rocket.Chat/pull/13122)) + +- Move some ui function to ui-utils ([#13123](https://github.com/RocketChat/Rocket.Chat/pull/13123)) + +- Move UI Collections to rocketchat:models ([#13064](https://github.com/RocketChat/Rocket.Chat/pull/13064)) + +- Move/create rocketchat callbacks ([#13034](https://github.com/RocketChat/Rocket.Chat/pull/13034)) + +- Move/create rocketchat metrics ([#13032](https://github.com/RocketChat/Rocket.Chat/pull/13032)) + +- Regression: Fix audio message upload ([#13224](https://github.com/RocketChat/Rocket.Chat/pull/13224)) + +- Regression: Fix emoji search ([#13207](https://github.com/RocketChat/Rocket.Chat/pull/13207)) + +- Regression: Fix export AudioRecorder ([#13192](https://github.com/RocketChat/Rocket.Chat/pull/13192)) + +- Regression: fix rooms model's collection name ([#13146](https://github.com/RocketChat/Rocket.Chat/pull/13146)) + +- Regression: fix upload permissions ([#13157](https://github.com/RocketChat/Rocket.Chat/pull/13157)) + +- Release 0.74.0 ([#13270](https://github.com/RocketChat/Rocket.Chat/pull/13270) by [@Xuhao](https://github.com/Xuhao) & [@supra08](https://github.com/supra08)) + +- Remove dependency between lib and authz ([#13066](https://github.com/RocketChat/Rocket.Chat/pull/13066)) + +- Remove dependency between RocketChat namespace and migrations ([#13133](https://github.com/RocketChat/Rocket.Chat/pull/13133)) + +- Remove dependency of RocketChat namespace and custom-sounds ([#13136](https://github.com/RocketChat/Rocket.Chat/pull/13136)) + +- Remove dependency of RocketChat namespace and logger ([#13135](https://github.com/RocketChat/Rocket.Chat/pull/13135)) + +- Remove dependency of RocketChat namespace inside rocketchat:ui ([#13131](https://github.com/RocketChat/Rocket.Chat/pull/13131)) + +- Remove directly dependency between lib and e2e ([#13115](https://github.com/RocketChat/Rocket.Chat/pull/13115)) + +- Remove directly dependency between rocketchat:lib and emoji ([#13118](https://github.com/RocketChat/Rocket.Chat/pull/13118)) + +- Remove incorrect pt-BR translation ([#13074](https://github.com/RocketChat/Rocket.Chat/pull/13074)) + +- Rocketchat mailer ([#13036](https://github.com/RocketChat/Rocket.Chat/pull/13036)) + +- Test only MongoDB with oplog versions 3.2 and 4.0 for PRs ([#13119](https://github.com/RocketChat/Rocket.Chat/pull/13119)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@Jeroeny](https://github.com/Jeroeny) +- [@Kailash0311](https://github.com/Kailash0311) +- [@Xuhao](https://github.com/Xuhao) +- [@alexbartsch](https://github.com/alexbartsch) +- [@behnejad](https://github.com/behnejad) +- [@gerbsen](https://github.com/gerbsen) +- [@ohmonster](https://github.com/ohmonster) +- [@piotrkochan](https://github.com/piotrkochan) +- [@supra08](https://github.com/supra08) +- [@zpavlig](https://github.com/zpavlig) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@d-gubert](https://github.com/d-gubert) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.73.2 +`2019-01-07 · 1 🎉 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🎉 New features + + +- Cloud Integration ([#13013](https://github.com/RocketChat/Rocket.Chat/pull/13013)) + +
+🔍 Minor changes + + +- Release 0.73.2 ([#13086](https://github.com/RocketChat/Rocket.Chat/pull/13086)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@graywolf336](https://github.com/graywolf336) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.73.1 +`2018-12-28 · 1 🐛 · 3 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### 🐛 Bug fixes + + +- Default importer path ([#13045](https://github.com/RocketChat/Rocket.Chat/pull/13045)) + +
+🔍 Minor changes + + +- Execute tests with versions 3.2, 3.4, 3.6 and 4.0 of MongoDB ([#13049](https://github.com/RocketChat/Rocket.Chat/pull/13049)) + +- Regression: Get room's members list not working on MongoDB 3.2 ([#13051](https://github.com/RocketChat/Rocket.Chat/pull/13051)) + +- Release 0.73.1 ([#13052](https://github.com/RocketChat/Rocket.Chat/pull/13052)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.73.0 +`2018-12-28 · 1 ️️️⚠️ · 16 🎉 · 25 🚀 · 60 🐛 · 165 🔍 · 39 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` + +### ⚠️ BREAKING CHANGES + + +- Update to Meteor to 1.8 ([#12468](https://github.com/RocketChat/Rocket.Chat/pull/12468)) + +### 🎉 New features + + +- /api/v1/spotlight: return joinCodeRequired field for rooms ([#12651](https://github.com/RocketChat/Rocket.Chat/pull/12651) by [@cardoso](https://github.com/cardoso)) + +- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309)) + +- Add query parameter support to emoji-custom endpoint ([#12754](https://github.com/RocketChat/Rocket.Chat/pull/12754)) + +- Added a link to contributing.md ([#12856](https://github.com/RocketChat/Rocket.Chat/pull/12856) by [@sanketsingh24](https://github.com/sanketsingh24)) + +- Added chat.getDeletedMessages since specific date ([#13010](https://github.com/RocketChat/Rocket.Chat/pull/13010)) + +- Config hooks for snap ([#12351](https://github.com/RocketChat/Rocket.Chat/pull/12351)) + +- Create new permission.listAll endpoint to be able to use updatedSince parameter ([#12748](https://github.com/RocketChat/Rocket.Chat/pull/12748)) + +- Download button for each file in fileslist ([#12874](https://github.com/RocketChat/Rocket.Chat/pull/12874) by [@alexbartsch](https://github.com/alexbartsch)) + +- Include message type & id in push notification payload ([#12771](https://github.com/RocketChat/Rocket.Chat/pull/12771) by [@cardoso](https://github.com/cardoso)) + +- Livechat registration form message ([#12597](https://github.com/RocketChat/Rocket.Chat/pull/12597)) + +- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378)) + +- Mandatory 2fa for role ([#9748](https://github.com/RocketChat/Rocket.Chat/pull/9748) by [@Hudell](https://github.com/Hudell) & [@karlprieb](https://github.com/karlprieb)) + +- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623)) + +- Option to reset e2e key ([#12483](https://github.com/RocketChat/Rocket.Chat/pull/12483) by [@Hudell](https://github.com/Hudell)) + +- Setting to configure robots.txt content ([#12547](https://github.com/RocketChat/Rocket.Chat/pull/12547) by [@Hudell](https://github.com/Hudell)) + +- Syncloud deploy option ([#12867](https://github.com/RocketChat/Rocket.Chat/pull/12867) by [@cyberb](https://github.com/cyberb)) + +### 🚀 Improvements + + +- Accept Slash Commands via Action Buttons when `msg_in_chat_window: true` ([#13009](https://github.com/RocketChat/Rocket.Chat/pull/13009)) + +- Add CTRL modifier for keyboard shortcut ([#12525](https://github.com/RocketChat/Rocket.Chat/pull/12525) by [@nicolasbock](https://github.com/nicolasbock)) + +- Add missing translation keys. ([#12722](https://github.com/RocketChat/Rocket.Chat/pull/12722) by [@ura14h](https://github.com/ura14h)) + +- Add more methods to deal with rooms via Rocket.Chat.Apps ([#12680](https://github.com/RocketChat/Rocket.Chat/pull/12680)) + +- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561)) + +- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105)) + +- Adding debugging instructions in README ([#12989](https://github.com/RocketChat/Rocket.Chat/pull/12989) by [@hypery2k](https://github.com/hypery2k)) + +- Allow apps to update persistence by association ([#12714](https://github.com/RocketChat/Rocket.Chat/pull/12714)) + +- Allow transfer Livechats to online agents only ([#13008](https://github.com/RocketChat/Rocket.Chat/pull/13008)) + +- Atlassian Crowd settings and option to sync user data ([#12616](https://github.com/RocketChat/Rocket.Chat/pull/12616)) + +- Better query for finding subscriptions that need a new E2E Key ([#12692](https://github.com/RocketChat/Rocket.Chat/pull/12692) by [@Hudell](https://github.com/Hudell)) + +- border-radius to use --border-radius ([#12675](https://github.com/RocketChat/Rocket.Chat/pull/12675)) + +- CircleCI to use MongoDB 4.0 for testing ([#12618](https://github.com/RocketChat/Rocket.Chat/pull/12618)) + +- Do not emit settings if there are no changes ([#12904](https://github.com/RocketChat/Rocket.Chat/pull/12904)) + +- Emoji search on messageBox behaving like emojiPicker's search (#9607) ([#12452](https://github.com/RocketChat/Rocket.Chat/pull/12452) by [@vinade](https://github.com/vinade)) + +- German translations ([#12471](https://github.com/RocketChat/Rocket.Chat/pull/12471) by [@mrsimpson](https://github.com/mrsimpson)) + +- Hipchat Enterprise Importer ([#12985](https://github.com/RocketChat/Rocket.Chat/pull/12985) by [@Hudell](https://github.com/Hudell)) + +- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522)) + +- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563)) + +- Japanese translations ([#12382](https://github.com/RocketChat/Rocket.Chat/pull/12382) by [@ura14h](https://github.com/ura14h)) + +- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@vinade](https://github.com/vinade)) + +- Returning an open room object in the Livechat config endpoint ([#12865](https://github.com/RocketChat/Rocket.Chat/pull/12865)) + +- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock)) + +- Use MongoBD aggregation to get users from a room ([#12566](https://github.com/RocketChat/Rocket.Chat/pull/12566)) + +- Username suggestion logic ([#12779](https://github.com/RocketChat/Rocket.Chat/pull/12779)) + +### 🐛 Bug fixes + + +- `Disabled` word translation to Chinese ([#12260](https://github.com/RocketChat/Rocket.Chat/pull/12260) by [@AndreamApp](https://github.com/AndreamApp)) + +- `Disabled` word translation to Spanish ([#12406](https://github.com/RocketChat/Rocket.Chat/pull/12406) by [@Ismaw34](https://github.com/Ismaw34)) + +- Admin styles ([#12614](https://github.com/RocketChat/Rocket.Chat/pull/12614)) + +- Admin styles ([#12602](https://github.com/RocketChat/Rocket.Chat/pull/12602)) + +- Autotranslate icon on message action menu ([#12585](https://github.com/RocketChat/Rocket.Chat/pull/12585)) + +- Avoiding links with highlighted words ([#12123](https://github.com/RocketChat/Rocket.Chat/pull/12123) by [@rssilva](https://github.com/rssilva)) + +- cannot reset password ([#12903](https://github.com/RocketChat/Rocket.Chat/pull/12903) by [@Hudell](https://github.com/Hudell)) + +- CAS Login not working with renamed users ([#12860](https://github.com/RocketChat/Rocket.Chat/pull/12860) by [@Hudell](https://github.com/Hudell)) + +- Change field checks in RocketChat.saveStreamingOptions ([#12973](https://github.com/RocketChat/Rocket.Chat/pull/12973)) + +- Change JSON to EJSON.parse query to support type Date ([#12706](https://github.com/RocketChat/Rocket.Chat/pull/12706)) + +- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb)) + +- Check for object falsehood before referencing properties in saveRoomSettings ([#12972](https://github.com/RocketChat/Rocket.Chat/pull/12972)) + +- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632)) + +- Correct roomName value in Mail Messages (#12363) ([#12453](https://github.com/RocketChat/Rocket.Chat/pull/12453) by [@vinade](https://github.com/vinade)) + +- Crowd sync was being stopped when a user was not found ([#12930](https://github.com/RocketChat/Rocket.Chat/pull/12930) by [@piotrkochan](https://github.com/piotrkochan)) + +- Data Import not working ([#12866](https://github.com/RocketChat/Rocket.Chat/pull/12866) by [@Hudell](https://github.com/Hudell)) + +- DE translation for idle-time-limit ([#12637](https://github.com/RocketChat/Rocket.Chat/pull/12637) by [@pfuender](https://github.com/pfuender)) + +- Download files without extension wasn't possible ([#13033](https://github.com/RocketChat/Rocket.Chat/pull/13033)) + +- E2E`s password reaveal text is always `>%S` when language is zh ([#12795](https://github.com/RocketChat/Rocket.Chat/pull/12795) by [@lvyue](https://github.com/lvyue)) + +- Email sending with GDPR user data ([#12487](https://github.com/RocketChat/Rocket.Chat/pull/12487)) + +- Emoji picker is not in viewport on small screens ([#12457](https://github.com/RocketChat/Rocket.Chat/pull/12457) by [@ramrami](https://github.com/ramrami)) + +- Exception in getSingleMessage ([#12970](https://github.com/RocketChat/Rocket.Chat/pull/12970) by [@tsukiRep](https://github.com/tsukiRep)) + +- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643)) + +- Fix set avatar http call, to avoid SSL errors ([#12790](https://github.com/RocketChat/Rocket.Chat/pull/12790)) + +- Fix users.setPreferences endpoint, set language correctly ([#12734](https://github.com/RocketChat/Rocket.Chat/pull/12734)) + +- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408)) + +- Fixed Anonymous Registration ([#12633](https://github.com/RocketChat/Rocket.Chat/pull/12633) by [@wreiske](https://github.com/wreiske)) + +- German translation for for API_EmbedIgnoredHosts label ([#12518](https://github.com/RocketChat/Rocket.Chat/pull/12518) by [@mbrodala](https://github.com/mbrodala)) + +- Google Cloud Storage storage provider ([#12843](https://github.com/RocketChat/Rocket.Chat/pull/12843)) + +- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507)) + +- high cpu usage ~ svg icon ([#12677](https://github.com/RocketChat/Rocket.Chat/pull/12677) by [@ph1p](https://github.com/ph1p)) + +- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570)) + +- Incorrect parameter name in Livechat stream ([#12851](https://github.com/RocketChat/Rocket.Chat/pull/12851)) + +- Inherit font family in message user card ([#13004](https://github.com/RocketChat/Rocket.Chat/pull/13004)) + +- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900)) + +- Manage own integrations permissions check ([#12397](https://github.com/RocketChat/Rocket.Chat/pull/12397)) + +- multiple rooms-changed ([#12940](https://github.com/RocketChat/Rocket.Chat/pull/12940)) + +- Nested Markdown blocks not parsed properly ([#12998](https://github.com/RocketChat/Rocket.Chat/pull/12998) by [@Hudell](https://github.com/Hudell)) + +- Padding for message box in embedded layout ([#12556](https://github.com/RocketChat/Rocket.Chat/pull/12556)) + +- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882)) + +- Pin and unpin message were not checking permissions ([#12739](https://github.com/RocketChat/Rocket.Chat/pull/12739)) + +- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558)) + +- Provide better Dutch translations 🇳🇱 ([#12792](https://github.com/RocketChat/Rocket.Chat/pull/12792) by [@mathysie](https://github.com/mathysie)) + +- Readable validation on the apps engine environment bridge ([#12994](https://github.com/RocketChat/Rocket.Chat/pull/12994)) + +- Remove sharp's deprecation warnings on image upload ([#12980](https://github.com/RocketChat/Rocket.Chat/pull/12980)) + +- Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) + +- Revert Jitsi external API to an asset ([#12954](https://github.com/RocketChat/Rocket.Chat/pull/12954)) + +- Some deprecation issues for media recording ([#12948](https://github.com/RocketChat/Rocket.Chat/pull/12948)) + +- Some icons were missing ([#12913](https://github.com/RocketChat/Rocket.Chat/pull/12913)) + +- Spotlight being called while in background ([#12957](https://github.com/RocketChat/Rocket.Chat/pull/12957)) + +- Spotlight method being called multiple times ([#12536](https://github.com/RocketChat/Rocket.Chat/pull/12536)) + +- Stop click event propagation on mention link or user card ([#12983](https://github.com/RocketChat/Rocket.Chat/pull/12983)) + +- Stream of my_message wasn't sending the room information ([#12914](https://github.com/RocketChat/Rocket.Chat/pull/12914)) + +- stream room-changed ([#12411](https://github.com/RocketChat/Rocket.Chat/pull/12411)) + +- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713)) + +- Use web.browser.legacy bundle for Livechat script ([#12975](https://github.com/RocketChat/Rocket.Chat/pull/12975)) + +- User data download fails when a room has been deleted. ([#12829](https://github.com/RocketChat/Rocket.Chat/pull/12829) by [@Hudell](https://github.com/Hudell)) + +- Version check update notification ([#12905](https://github.com/RocketChat/Rocket.Chat/pull/12905)) + +- Webdav integration account settings were being shown even when Webdav was disabled ([#12569](https://github.com/RocketChat/Rocket.Chat/pull/12569) by [@karakayasemi](https://github.com/karakayasemi)) + +- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539)) + +
+🔍 Minor changes + + +- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594)) + +- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604)) + +- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666)) + +- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679)) + +- Convert rocketchat-mentions-flextab to main module structure ([#12757](https://github.com/RocketChat/Rocket.Chat/pull/12757)) + +- Convert rocketchat-reactions to main module structure ([#12888](https://github.com/RocketChat/Rocket.Chat/pull/12888)) + +- Convert rocketchat-ui-account to main module structure ([#12842](https://github.com/RocketChat/Rocket.Chat/pull/12842)) + +- Convert rocketchat-ui-flextab to main module structure ([#12859](https://github.com/RocketChat/Rocket.Chat/pull/12859)) + +- [DOCS] Remove Cordova links, include F-Droid download button and few other adjustments ([#12583](https://github.com/RocketChat/Rocket.Chat/pull/12583) by [@rafaelks](https://github.com/rafaelks)) + +- Add check to make sure releases was updated ([#12791](https://github.com/RocketChat/Rocket.Chat/pull/12791)) + +- Added "npm install" to quick start for developers ([#12374](https://github.com/RocketChat/Rocket.Chat/pull/12374) by [@wreiske](https://github.com/wreiske)) + +- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647)) + +- Bump Apps Engine to 1.3.0 ([#12705](https://github.com/RocketChat/Rocket.Chat/pull/12705)) + +- Change `chat.getDeletedMessages` to get messages after informed date and return only message's _id ([#13021](https://github.com/RocketChat/Rocket.Chat/pull/13021)) + +- changed maxRoomsOpen ([#12949](https://github.com/RocketChat/Rocket.Chat/pull/12949)) + +- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485)) + +- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605)) + +- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486)) + +- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491)) + +- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495)) + +- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501)) + +- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503)) + +- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506)) + +- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510)) + +- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521)) + +- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523)) + +- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529)) + +- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530)) + +- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531)) + +- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532)) + +- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537)) + +- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538)) + +- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595)) + +- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596)) + +- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599)) + +- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600)) + +- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601)) + +- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603)) + +- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606)) + +- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607)) + +- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644)) + +- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642)) + +- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646)) + +- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649)) + +- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657)) + +- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658)) + +- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659)) + +- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661)) + +- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662)) + +- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663)) + +- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664)) + +- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665)) + +- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669)) + +- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670)) + +- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671)) + +- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672)) + +- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674)) + +- Convert rocketchat-katex to main module structure ([#12895](https://github.com/RocketChat/Rocket.Chat/pull/12895)) + +- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678)) + +- Convert rocketchat-livechat to main module structure ([#12942](https://github.com/RocketChat/Rocket.Chat/pull/12942)) + +- Convert rocketchat-logger to main module structure and remove Logger from eslintrc ([#12995](https://github.com/RocketChat/Rocket.Chat/pull/12995)) + +- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682)) + +- Convert rocketchat-mapview to main module structure ([#12701](https://github.com/RocketChat/Rocket.Chat/pull/12701)) + +- Convert rocketchat-markdown to main module structure ([#12755](https://github.com/RocketChat/Rocket.Chat/pull/12755)) + +- Convert rocketchat-mentions to main module structure ([#12756](https://github.com/RocketChat/Rocket.Chat/pull/12756)) + +- Convert rocketchat-message-action to main module structure ([#12759](https://github.com/RocketChat/Rocket.Chat/pull/12759)) + +- Convert rocketchat-message-attachments to main module structure ([#12760](https://github.com/RocketChat/Rocket.Chat/pull/12760)) + +- Convert rocketchat-message-mark-as-unread to main module structure ([#12766](https://github.com/RocketChat/Rocket.Chat/pull/12766)) + +- Convert rocketchat-message-pin to main module structure ([#12767](https://github.com/RocketChat/Rocket.Chat/pull/12767)) + +- Convert rocketchat-message-snippet to main module structure ([#12768](https://github.com/RocketChat/Rocket.Chat/pull/12768)) + +- Convert rocketchat-message-star to main module structure ([#12770](https://github.com/RocketChat/Rocket.Chat/pull/12770)) + +- Convert rocketchat-migrations to main-module structure ([#12772](https://github.com/RocketChat/Rocket.Chat/pull/12772)) + +- Convert rocketchat-oauth2-server-config to main module structure ([#12773](https://github.com/RocketChat/Rocket.Chat/pull/12773)) + +- Convert rocketchat-oembed to main module structure ([#12775](https://github.com/RocketChat/Rocket.Chat/pull/12775)) + +- Convert rocketchat-otr to main module structure ([#12777](https://github.com/RocketChat/Rocket.Chat/pull/12777)) + +- Convert rocketchat-push-notifications to main module structure ([#12778](https://github.com/RocketChat/Rocket.Chat/pull/12778)) + +- Convert rocketchat-retention-policy to main module structure ([#12797](https://github.com/RocketChat/Rocket.Chat/pull/12797)) + +- Convert rocketchat-sandstorm to main module structure ([#12799](https://github.com/RocketChat/Rocket.Chat/pull/12799)) + +- Convert rocketchat-search to main module structure ([#12801](https://github.com/RocketChat/Rocket.Chat/pull/12801)) + +- Convert rocketchat-setup-wizard to main module structure ([#12806](https://github.com/RocketChat/Rocket.Chat/pull/12806)) + +- Convert rocketchat-slackbridge to main module structure ([#12807](https://github.com/RocketChat/Rocket.Chat/pull/12807)) + +- Convert rocketchat-slashcomands-archiveroom to main module structure ([#12810](https://github.com/RocketChat/Rocket.Chat/pull/12810)) + +- Convert rocketchat-slashcommands-asciiarts to main module structure ([#12808](https://github.com/RocketChat/Rocket.Chat/pull/12808)) + +- Convert rocketchat-slashcommands-create to main module structure ([#12811](https://github.com/RocketChat/Rocket.Chat/pull/12811)) + +- Convert rocketchat-slashcommands-help to main module structure ([#12812](https://github.com/RocketChat/Rocket.Chat/pull/12812)) + +- Convert rocketchat-slashcommands-hide to main module structure ([#12813](https://github.com/RocketChat/Rocket.Chat/pull/12813)) + +- Convert rocketchat-slashcommands-invite to main module structure ([#12814](https://github.com/RocketChat/Rocket.Chat/pull/12814)) + +- Convert rocketchat-slashcommands-inviteall to main module structure ([#12815](https://github.com/RocketChat/Rocket.Chat/pull/12815)) + +- Convert rocketchat-slashcommands-join to main module structure ([#12816](https://github.com/RocketChat/Rocket.Chat/pull/12816)) + +- Convert rocketchat-slashcommands-kick to main module structure ([#12817](https://github.com/RocketChat/Rocket.Chat/pull/12817)) + +- Convert rocketchat-slashcommands-leave to main module structure ([#12821](https://github.com/RocketChat/Rocket.Chat/pull/12821)) + +- Convert rocketchat-slashcommands-me to main module structure ([#12822](https://github.com/RocketChat/Rocket.Chat/pull/12822)) + +- Convert rocketchat-slashcommands-msg to main module structure ([#12823](https://github.com/RocketChat/Rocket.Chat/pull/12823)) + +- Convert rocketchat-slashcommands-mute to main module structure ([#12824](https://github.com/RocketChat/Rocket.Chat/pull/12824)) + +- Convert rocketchat-slashcommands-open to main module structure ([#12825](https://github.com/RocketChat/Rocket.Chat/pull/12825)) + +- Convert rocketchat-slashcommands-topic to main module structure ([#12826](https://github.com/RocketChat/Rocket.Chat/pull/12826)) + +- Convert rocketchat-slashcommands-unarchiveroom to main module structure ([#12827](https://github.com/RocketChat/Rocket.Chat/pull/12827)) + +- Convert rocketchat-slider to main module structure ([#12828](https://github.com/RocketChat/Rocket.Chat/pull/12828)) + +- Convert rocketchat-smarsh-connector to main module structure ([#12830](https://github.com/RocketChat/Rocket.Chat/pull/12830)) + +- Convert rocketchat-sms to main module structure ([#12831](https://github.com/RocketChat/Rocket.Chat/pull/12831)) + +- Convert rocketchat-spotify to main module structure ([#12832](https://github.com/RocketChat/Rocket.Chat/pull/12832)) + +- Convert rocketchat-statistics to main module structure ([#12833](https://github.com/RocketChat/Rocket.Chat/pull/12833)) + +- Convert rocketchat-theme to main module structure ([#12896](https://github.com/RocketChat/Rocket.Chat/pull/12896)) + +- Convert rocketchat-token-login to main module structure ([#12837](https://github.com/RocketChat/Rocket.Chat/pull/12837)) + +- Convert rocketchat-tokenpass to main module structure ([#12838](https://github.com/RocketChat/Rocket.Chat/pull/12838)) + +- Convert rocketchat-tooltip to main module structure ([#12839](https://github.com/RocketChat/Rocket.Chat/pull/12839)) + +- Convert rocketchat-ui-admin to main module structure ([#12844](https://github.com/RocketChat/Rocket.Chat/pull/12844)) + +- Convert rocketchat-ui-clean-history to main module structure ([#12846](https://github.com/RocketChat/Rocket.Chat/pull/12846)) + +- Convert rocketchat-ui-login to main module structure ([#12861](https://github.com/RocketChat/Rocket.Chat/pull/12861)) + +- Convert rocketchat-ui-message to main module structure ([#12871](https://github.com/RocketChat/Rocket.Chat/pull/12871)) + +- Convert rocketchat-ui-vrecord to main module structure ([#12875](https://github.com/RocketChat/Rocket.Chat/pull/12875)) + +- Convert rocketchat-user-data-dowload to main module structure ([#12877](https://github.com/RocketChat/Rocket.Chat/pull/12877)) + +- Convert rocketchat-version-check to main module structure ([#12879](https://github.com/RocketChat/Rocket.Chat/pull/12879)) + +- Convert rocketchat-videobridge to main module structure ([#12881](https://github.com/RocketChat/Rocket.Chat/pull/12881)) + +- Convert rocketchat-webdav to main module structure ([#12886](https://github.com/RocketChat/Rocket.Chat/pull/12886)) + +- Convert rocketchat-wordpress to main module structure ([#12887](https://github.com/RocketChat/Rocket.Chat/pull/12887)) + +- Dependencies update ([#12624](https://github.com/RocketChat/Rocket.Chat/pull/12624)) + +- Fix CI deploy job ([#12803](https://github.com/RocketChat/Rocket.Chat/pull/12803)) + +- Fix crowd error with import of SyncedCron ([#12641](https://github.com/RocketChat/Rocket.Chat/pull/12641)) + +- Fix CSS import order ([#12524](https://github.com/RocketChat/Rocket.Chat/pull/12524)) + +- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509)) + +- Fix punctuation, spelling, and grammar ([#12451](https://github.com/RocketChat/Rocket.Chat/pull/12451) by [@imronras](https://github.com/imronras)) + +- Fix some Ukrainian translations ([#12712](https://github.com/RocketChat/Rocket.Chat/pull/12712) by [@zdumitru](https://github.com/zdumitru)) + +- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625)) + +- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645)) + +- Fix: Developers not being able to debug root files in VSCode ([#12440](https://github.com/RocketChat/Rocket.Chat/pull/12440) by [@mrsimpson](https://github.com/mrsimpson)) + +- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699)) + +- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707)) + +- Fix: snap push from ci ([#12883](https://github.com/RocketChat/Rocket.Chat/pull/12883)) + +- German translation typo fix for Reacted_with ([#12761](https://github.com/RocketChat/Rocket.Chat/pull/12761) by [@localguru](https://github.com/localguru)) + +- Improve Importer code quality ([#13020](https://github.com/RocketChat/Rocket.Chat/pull/13020) by [@Hudell](https://github.com/Hudell)) + +- Improve: Add missing translation keys. ([#12708](https://github.com/RocketChat/Rocket.Chat/pull/12708) by [@ura14h](https://github.com/ura14h)) + +- LingoHub based on develop ([#13014](https://github.com/RocketChat/Rocket.Chat/pull/13014)) + +- LingoHub based on develop ([#12684](https://github.com/RocketChat/Rocket.Chat/pull/12684)) + +- LingoHub based on develop ([#12470](https://github.com/RocketChat/Rocket.Chat/pull/12470)) + +- Merge master into develop & Set version to 0.72.0-develop ([#12460](https://github.com/RocketChat/Rocket.Chat/pull/12460) by [@Hudell](https://github.com/Hudell)) + +- Merge master into develop & Set version to 0.73.0-develop ([#12776](https://github.com/RocketChat/Rocket.Chat/pull/12776)) + +- Move globals of test to a specific eslintrc file ([#12959](https://github.com/RocketChat/Rocket.Chat/pull/12959)) + +- Move isFirefox and isChrome functions to rocketchat-utils ([#13011](https://github.com/RocketChat/Rocket.Chat/pull/13011)) + +- Move tapi18n t and isRtl functions from ui to utils ([#13005](https://github.com/RocketChat/Rocket.Chat/pull/13005)) + +- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735)) + +- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736)) + +- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737)) + +- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729)) + +- Regression: List of custom emojis wasn't working ([#13031](https://github.com/RocketChat/Rocket.Chat/pull/13031)) + +- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901)) + +- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan)) + +- Removal of EJSON, Accounts, Email, HTTP, Random, ReactiveDict, ReactiveVar, SHA256 and WebApp global variables ([#12377](https://github.com/RocketChat/Rocket.Chat/pull/12377)) + +- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410)) + +- Removal of Meteor global variable ([#12371](https://github.com/RocketChat/Rocket.Chat/pull/12371)) + +- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467)) + +- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433)) + +- Remove /* globals */ from files wave-1 ([#12984](https://github.com/RocketChat/Rocket.Chat/pull/12984)) + +- Remove /* globals */ wave 2 ([#12988](https://github.com/RocketChat/Rocket.Chat/pull/12988)) + +- Remove /* globals */ wave 3 ([#12997](https://github.com/RocketChat/Rocket.Chat/pull/12997)) + +- Remove /* globals */ wave 4 ([#12999](https://github.com/RocketChat/Rocket.Chat/pull/12999)) + +- Remove conventional changelog cli, we are using our own cli now (Houston) ([#12798](https://github.com/RocketChat/Rocket.Chat/pull/12798)) + +- Remove global ServiceConfiguration ([#12960](https://github.com/RocketChat/Rocket.Chat/pull/12960)) + +- Remove global toastr ([#12961](https://github.com/RocketChat/Rocket.Chat/pull/12961)) + +- Remove rocketchat-tutum package ([#12840](https://github.com/RocketChat/Rocket.Chat/pull/12840)) + +- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426)) + +- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650)) + +- Revert imports of css, reAdd them to the addFiles function ([#12934](https://github.com/RocketChat/Rocket.Chat/pull/12934)) + +- Update Apps Engine to 1.3.1 ([#12741](https://github.com/RocketChat/Rocket.Chat/pull/12741)) + +- Update npm dependencies ([#12465](https://github.com/RocketChat/Rocket.Chat/pull/12465)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AndreamApp](https://github.com/AndreamApp) +- [@Hudell](https://github.com/Hudell) +- [@Ismaw34](https://github.com/Ismaw34) +- [@alexbartsch](https://github.com/alexbartsch) +- [@cardoso](https://github.com/cardoso) +- [@cyberb](https://github.com/cyberb) +- [@hypery2k](https://github.com/hypery2k) +- [@imronras](https://github.com/imronras) +- [@karakayasemi](https://github.com/karakayasemi) +- [@karlprieb](https://github.com/karlprieb) +- [@localguru](https://github.com/localguru) +- [@lvyue](https://github.com/lvyue) +- [@mathysie](https://github.com/mathysie) +- [@mbrodala](https://github.com/mbrodala) +- [@mrsimpson](https://github.com/mrsimpson) +- [@nicolasbock](https://github.com/nicolasbock) +- [@pfuender](https://github.com/pfuender) +- [@ph1p](https://github.com/ph1p) +- [@piotrkochan](https://github.com/piotrkochan) +- [@rafaelks](https://github.com/rafaelks) +- [@ramrami](https://github.com/ramrami) +- [@rssilva](https://github.com/rssilva) +- [@sanketsingh24](https://github.com/sanketsingh24) +- [@tsukiRep](https://github.com/tsukiRep) +- [@ura14h](https://github.com/ura14h) +- [@vinade](https://github.com/vinade) +- [@wreiske](https://github.com/wreiske) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@d-gubert](https://github.com/d-gubert) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.72.3 +`2018-12-12 · 1 🔍 · 5 👩‍💻👨‍💻` + +
+🔍 Minor changes + + +- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@piotrkochan](https://github.com/piotrkochan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@tassoevan](https://github.com/tassoevan) + +# 0.72.2 +`2018-12-10 · 3 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### 🐛 Bug fixes + + +- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900)) + +- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882)) + +- Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) + +
+🔍 Minor changes + + +- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.72.1 +`2018-12-05 · 4 🐛 · 3 🔍 · 8 👩‍💻👨‍💻` + +### 🐛 Bug fixes + + +- API users.info returns caller rooms and not requested user ones ([#12727](https://github.com/RocketChat/Rocket.Chat/pull/12727) by [@piotrkochan](https://github.com/piotrkochan)) + +- Change spread operator to Array.from for Edge browser ([#12818](https://github.com/RocketChat/Rocket.Chat/pull/12818) by [@ohmonster](https://github.com/ohmonster)) + +- Emoji as avatar ([#12805](https://github.com/RocketChat/Rocket.Chat/pull/12805)) + +- Missing HipChat Enterprise Importer ([#12847](https://github.com/RocketChat/Rocket.Chat/pull/12847) by [@Hudell](https://github.com/Hudell)) + +
+🔍 Minor changes + + +- Bump Apps-Engine version ([#12848](https://github.com/RocketChat/Rocket.Chat/pull/12848)) + +- Change file order in rocketchat-cors ([#12804](https://github.com/RocketChat/Rocket.Chat/pull/12804)) + +- Release 0.72.1 ([#12850](https://github.com/RocketChat/Rocket.Chat/pull/12850) by [@Hudell](https://github.com/Hudell) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@ohmonster](https://github.com/ohmonster) +- [@piotrkochan](https://github.com/piotrkochan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@d-gubert](https://github.com/d-gubert) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.72.0 +`2018-11-28 · 2 ️️️⚠️ · 6 🎉 · 16 🚀 · 22 🐛 · 79 🔍 · 25 👩‍💻👨‍💻` + +### ⚠️ BREAKING CHANGES + + +- Support for Cordova (Rocket.Chat Legacy app) has reached End-of-life, support has been discontinued + +- Update to Meteor to 1.8 ([#12468](https://github.com/RocketChat/Rocket.Chat/pull/12468)) + +### 🎉 New features + + +- /api/v1/spotlight: return joinCodeRequired field for rooms ([#12651](https://github.com/RocketChat/Rocket.Chat/pull/12651) by [@cardoso](https://github.com/cardoso)) + +- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309)) + +- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378)) + +- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623)) + +- Option to reset e2e key ([#12483](https://github.com/RocketChat/Rocket.Chat/pull/12483) by [@Hudell](https://github.com/Hudell)) + +- Setting to configure robots.txt content ([#12547](https://github.com/RocketChat/Rocket.Chat/pull/12547) by [@Hudell](https://github.com/Hudell)) + +### 🚀 Improvements + + +- Add CTRL modifier for keyboard shortcut ([#12525](https://github.com/RocketChat/Rocket.Chat/pull/12525) by [@nicolasbock](https://github.com/nicolasbock)) + +- Add more methods to deal with rooms via Rocket.Chat.Apps ([#12680](https://github.com/RocketChat/Rocket.Chat/pull/12680)) + +- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561)) + +- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105)) + +- Allow apps to update persistence by association ([#12714](https://github.com/RocketChat/Rocket.Chat/pull/12714)) + +- Atlassian Crowd settings and option to sync user data ([#12616](https://github.com/RocketChat/Rocket.Chat/pull/12616)) + +- Better query for finding subscriptions that need a new E2E Key ([#12692](https://github.com/RocketChat/Rocket.Chat/pull/12692) by [@Hudell](https://github.com/Hudell)) + +- border-radius to use --border-radius ([#12675](https://github.com/RocketChat/Rocket.Chat/pull/12675)) + +- CircleCI to use MongoDB 4.0 for testing ([#12618](https://github.com/RocketChat/Rocket.Chat/pull/12618)) + +- Emoji search on messageBox behaving like emojiPicker's search (#9607) ([#12452](https://github.com/RocketChat/Rocket.Chat/pull/12452) by [@vinade](https://github.com/vinade)) + +- German translations ([#12471](https://github.com/RocketChat/Rocket.Chat/pull/12471) by [@mrsimpson](https://github.com/mrsimpson)) + +- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522)) + +- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563)) + +- Japanese translations ([#12382](https://github.com/RocketChat/Rocket.Chat/pull/12382) by [@ura14h](https://github.com/ura14h)) + +- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@vinade](https://github.com/vinade)) + +- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock)) + +### 🐛 Bug fixes + + +- `Disabled` word translation to Chinese ([#12260](https://github.com/RocketChat/Rocket.Chat/pull/12260) by [@AndreamApp](https://github.com/AndreamApp)) + +- `Disabled` word translation to Spanish ([#12406](https://github.com/RocketChat/Rocket.Chat/pull/12406) by [@Ismaw34](https://github.com/Ismaw34)) + +- Admin styles ([#12614](https://github.com/RocketChat/Rocket.Chat/pull/12614)) + +- Admin styles ([#12602](https://github.com/RocketChat/Rocket.Chat/pull/12602)) + +- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb)) + +- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632)) + +- Correct roomName value in Mail Messages (#12363) ([#12453](https://github.com/RocketChat/Rocket.Chat/pull/12453) by [@vinade](https://github.com/vinade)) + +- DE translation for idle-time-limit ([#12637](https://github.com/RocketChat/Rocket.Chat/pull/12637) by [@pfuender](https://github.com/pfuender)) + +- Emoji picker is not in viewport on small screens ([#12457](https://github.com/RocketChat/Rocket.Chat/pull/12457) by [@ramrami](https://github.com/ramrami)) + +- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643)) + +- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408)) + +- Fixed Anonymous Registration ([#12633](https://github.com/RocketChat/Rocket.Chat/pull/12633) by [@wreiske](https://github.com/wreiske)) + +- German translation for for API_EmbedIgnoredHosts label ([#12518](https://github.com/RocketChat/Rocket.Chat/pull/12518) by [@mbrodala](https://github.com/mbrodala)) + +- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507)) + +- high cpu usage ~ svg icon ([#12677](https://github.com/RocketChat/Rocket.Chat/pull/12677) by [@ph1p](https://github.com/ph1p)) + +- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570)) + +- Manage own integrations permissions check ([#12397](https://github.com/RocketChat/Rocket.Chat/pull/12397)) + +- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558)) + +- Spotlight method being called multiple times ([#12536](https://github.com/RocketChat/Rocket.Chat/pull/12536)) + +- stream room-changed ([#12411](https://github.com/RocketChat/Rocket.Chat/pull/12411)) + +- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713)) + +- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539)) + +
+🔍 Minor changes + + +- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594)) + +- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604)) + +- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666)) + +- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679)) + +- [DOCS] Remove Cordova links, include F-Droid download button and few other adjustments ([#12583](https://github.com/RocketChat/Rocket.Chat/pull/12583) by [@rafaelks](https://github.com/rafaelks)) + +- Added "npm install" to quick start for developers ([#12374](https://github.com/RocketChat/Rocket.Chat/pull/12374) by [@wreiske](https://github.com/wreiske)) + +- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647)) + +- Bump Apps Engine to 1.3.0 ([#12705](https://github.com/RocketChat/Rocket.Chat/pull/12705)) + +- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485)) + +- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605)) + +- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486)) + +- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491)) + +- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495)) + +- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501)) + +- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503)) + +- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506)) + +- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510)) + +- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521)) + +- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523)) + +- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529)) + +- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530)) + +- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531)) + +- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532)) + +- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537)) + +- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538)) + +- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595)) + +- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596)) + +- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599)) + +- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600)) + +- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601)) + +- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603)) + +- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606)) + +- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607)) + +- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644)) + +- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642)) + +- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646)) + +- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649)) + +- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657)) + +- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658)) + +- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659)) + +- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661)) + +- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662)) + +- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663)) + +- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664)) + +- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665)) + +- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669)) + +- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670)) + +- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671)) + +- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672)) + +- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674)) + +- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678)) + +- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682)) + +- Fix crowd error with import of SyncedCron ([#12641](https://github.com/RocketChat/Rocket.Chat/pull/12641)) + +- Fix CSS import order ([#12524](https://github.com/RocketChat/Rocket.Chat/pull/12524)) + +- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509)) + +- Fix punctuation, spelling, and grammar ([#12451](https://github.com/RocketChat/Rocket.Chat/pull/12451) by [@imronras](https://github.com/imronras)) + +- Fix some Ukrainian translations ([#12712](https://github.com/RocketChat/Rocket.Chat/pull/12712) by [@zdumitru](https://github.com/zdumitru)) + +- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625)) + +- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645)) + +- Fix: Developers not being able to debug root files in VSCode ([#12440](https://github.com/RocketChat/Rocket.Chat/pull/12440) by [@mrsimpson](https://github.com/mrsimpson)) + +- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699)) + +- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707)) + +- Improve: Add missing translation keys. ([#12708](https://github.com/RocketChat/Rocket.Chat/pull/12708) by [@ura14h](https://github.com/ura14h)) + +- LingoHub based on develop ([#12684](https://github.com/RocketChat/Rocket.Chat/pull/12684)) + +- LingoHub based on develop ([#12470](https://github.com/RocketChat/Rocket.Chat/pull/12470)) + +- Merge master into develop & Set version to 0.72.0-develop ([#12460](https://github.com/RocketChat/Rocket.Chat/pull/12460) by [@Hudell](https://github.com/Hudell)) + +- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735)) + +- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736)) + +- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737)) + +- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729)) + +- Removal of EJSON, Accounts, Email, HTTP, Random, ReactiveDict, ReactiveVar, SHA256 and WebApp global variables ([#12377](https://github.com/RocketChat/Rocket.Chat/pull/12377)) + +- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410)) + +- Removal of Meteor global variable ([#12371](https://github.com/RocketChat/Rocket.Chat/pull/12371)) + +- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467)) + +- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433)) + +- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426)) + +- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650)) + +- Update Apps Engine to 1.3.1 ([#12741](https://github.com/RocketChat/Rocket.Chat/pull/12741)) + +- Update npm dependencies ([#12465](https://github.com/RocketChat/Rocket.Chat/pull/12465)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AndreamApp](https://github.com/AndreamApp) +- [@Hudell](https://github.com/Hudell) +- [@Ismaw34](https://github.com/Ismaw34) +- [@cardoso](https://github.com/cardoso) +- [@imronras](https://github.com/imronras) +- [@karlprieb](https://github.com/karlprieb) +- [@mbrodala](https://github.com/mbrodala) +- [@mrsimpson](https://github.com/mrsimpson) +- [@nicolasbock](https://github.com/nicolasbock) +- [@pfuender](https://github.com/pfuender) +- [@ph1p](https://github.com/ph1p) +- [@rafaelks](https://github.com/rafaelks) +- [@ramrami](https://github.com/ramrami) +- [@ura14h](https://github.com/ura14h) +- [@vinade](https://github.com/vinade) +- [@wreiske](https://github.com/wreiske) +- [@zdumitru](https://github.com/zdumitru) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@ggazzo](https://github.com/ggazzo) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.71.2 +`2018-12-10 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.71.1 +`2018-10-31 · 1 🐛 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Email sending with GDPR user data ([#12487](https://github.com/RocketChat/Rocket.Chat/pull/12487)) + +
+🔍 Minor changes + + +- Release 0.71.1 ([#12499](https://github.com/RocketChat/Rocket.Chat/pull/12499)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.71.0 +`2018-10-27 · 2 ️️️⚠️ · 5 🎉 · 5 🚀 · 23 🐛 · 9 🔍 · 20 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- Add expiration to API login tokens and fix duplicate login tokens created by LDAP ([#12186](https://github.com/RocketChat/Rocket.Chat/pull/12186)) + +- Update `lastMessage` rooms property and convert the "starred" property, to the same format ([#12266](https://github.com/RocketChat/Rocket.Chat/pull/12266)) + +### 🎉 New features + + +- Ability to disable user presence monitor ([#12353](https://github.com/RocketChat/Rocket.Chat/pull/12353)) + +- Add "help wanted" section to Readme ([#12432](https://github.com/RocketChat/Rocket.Chat/pull/12432) by [@isabellarussell](https://github.com/isabellarussell)) + +- Add delete channel mutation to GraphQL API ([#11860](https://github.com/RocketChat/Rocket.Chat/pull/11860)) + +- PDF message attachment preview (client side rendering) ([#10519](https://github.com/RocketChat/Rocket.Chat/pull/10519) by [@kb0304](https://github.com/kb0304)) + +- sidenav size on large screens ([#12372](https://github.com/RocketChat/Rocket.Chat/pull/12372)) + +### 🚀 Improvements + + +- Add missing livechat i18n keys ([#12330](https://github.com/RocketChat/Rocket.Chat/pull/12330) by [@MarcosEllys](https://github.com/MarcosEllys)) + +- Allow the imports to accept any file type ([#12425](https://github.com/RocketChat/Rocket.Chat/pull/12425)) + +- Avoid unnecessary calls to Meteor.user() on client ([#11212](https://github.com/RocketChat/Rocket.Chat/pull/11212)) + +- Livechat room closure endpoints ([#12360](https://github.com/RocketChat/Rocket.Chat/pull/12360)) + +- Set Livechat department before register guest ([#12161](https://github.com/RocketChat/Rocket.Chat/pull/12161)) + +### 🐛 Bug fixes + + +- Add image dimensions to attachment even when no reorientation is required ([#11521](https://github.com/RocketChat/Rocket.Chat/pull/11521)) + +- Apps not being able to state how the action buttons are aligned ([#12391](https://github.com/RocketChat/Rocket.Chat/pull/12391)) + +- Attachment actions not being collapsable ([#12436](https://github.com/RocketChat/Rocket.Chat/pull/12436)) + +- Attachment timestamp from and to Apps system not working ([#12445](https://github.com/RocketChat/Rocket.Chat/pull/12445)) + +- avatar?_dc=undefined ([#12365](https://github.com/RocketChat/Rocket.Chat/pull/12365)) + +- Blockstack errors in IE 11 ([#12338](https://github.com/RocketChat/Rocket.Chat/pull/12338)) + +- Cast env var setting to int based on option type ([#12194](https://github.com/RocketChat/Rocket.Chat/pull/12194) by [@crazy-max](https://github.com/crazy-max)) + +- Custom OAuth Configuration can't be removed ([#12256](https://github.com/RocketChat/Rocket.Chat/pull/12256) by [@Hudell](https://github.com/Hudell)) + +- Date range check on livechat analytics ([#12345](https://github.com/RocketChat/Rocket.Chat/pull/12345) by [@teresy](https://github.com/teresy)) + +- E2E alert shows up when encryption is disabled ([#12272](https://github.com/RocketChat/Rocket.Chat/pull/12272) by [@Hudell](https://github.com/Hudell)) + +- E2E: Decrypting UTF-8 encoded messages ([#12398](https://github.com/RocketChat/Rocket.Chat/pull/12398) by [@pmmaga](https://github.com/pmmaga)) + +- Edit room name with uppercase letters ([#12235](https://github.com/RocketChat/Rocket.Chat/pull/12235) by [@nikeee](https://github.com/nikeee)) + +- email api TAPi18n is undefined ([#12373](https://github.com/RocketChat/Rocket.Chat/pull/12373)) + +- iframe login token not checked ([#12158](https://github.com/RocketChat/Rocket.Chat/pull/12158) by [@nimetu](https://github.com/nimetu)) + +- Ignore errors when creating image preview for uploads ([#12424](https://github.com/RocketChat/Rocket.Chat/pull/12424)) + +- Invalid destructuring on Livechat API endpoint ([#12354](https://github.com/RocketChat/Rocket.Chat/pull/12354)) + +- Last message not updating after message delete if show deleted status is on ([#12350](https://github.com/RocketChat/Rocket.Chat/pull/12350)) + +- Links in home layout ([#12355](https://github.com/RocketChat/Rocket.Chat/pull/12355) by [@upiksaleh](https://github.com/upiksaleh)) + +- Modal confirm on enter ([#12283](https://github.com/RocketChat/Rocket.Chat/pull/12283)) + +- Remove e2e from users endpoint responses ([#12344](https://github.com/RocketChat/Rocket.Chat/pull/12344)) + +- REST `users.setAvatar` endpoint wasn't allowing update the avatar of other users even with correct permissions ([#11431](https://github.com/RocketChat/Rocket.Chat/pull/11431)) + +- Slack importer: image previews not showing ([#11875](https://github.com/RocketChat/Rocket.Chat/pull/11875) by [@Hudell](https://github.com/Hudell) & [@madguy02](https://github.com/madguy02)) + +- users.register endpoint to not create an user if username already being used ([#12297](https://github.com/RocketChat/Rocket.Chat/pull/12297)) + +
+🔍 Minor changes + + +- Apps: Room’s usernames was not working ([#12409](https://github.com/RocketChat/Rocket.Chat/pull/12409)) + +- Fix: Add wizard opt-in fields ([#12298](https://github.com/RocketChat/Rocket.Chat/pull/12298)) + +- Fix: update check on err.details ([#12346](https://github.com/RocketChat/Rocket.Chat/pull/12346) by [@teresy](https://github.com/teresy)) + +- Fix: wrong saveUser permission validations ([#12384](https://github.com/RocketChat/Rocket.Chat/pull/12384)) + +- Improve: Drop database between running tests on CI ([#12358](https://github.com/RocketChat/Rocket.Chat/pull/12358)) + +- Regression: Change `starred` message property from object to array ([#12405](https://github.com/RocketChat/Rocket.Chat/pull/12405)) + +- Regression: do not render pdf preview on safari <= 12 ([#12375](https://github.com/RocketChat/Rocket.Chat/pull/12375)) + +- Regression: Fix email headers not being used ([#12392](https://github.com/RocketChat/Rocket.Chat/pull/12392)) + +- Update Apps Framework to version 1.2.1 ([#12442](https://github.com/RocketChat/Rocket.Chat/pull/12442)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@MarcosEllys](https://github.com/MarcosEllys) +- [@crazy-max](https://github.com/crazy-max) +- [@isabellarussell](https://github.com/isabellarussell) +- [@kb0304](https://github.com/kb0304) +- [@madguy02](https://github.com/madguy02) +- [@nikeee](https://github.com/nikeee) +- [@nimetu](https://github.com/nimetu) +- [@pmmaga](https://github.com/pmmaga) +- [@teresy](https://github.com/teresy) +- [@upiksaleh](https://github.com/upiksaleh) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@Sing-Li](https://github.com/Sing-Li) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.70.5 +`2018-12-10 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.70.4 +`2018-10-09 · 1 🐛 · 2 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Modal confirm on enter ([#12283](https://github.com/RocketChat/Rocket.Chat/pull/12283)) + +
+🔍 Minor changes + + +- Fix: Add wizard opt-in fields ([#12298](https://github.com/RocketChat/Rocket.Chat/pull/12298)) + +- Release 0.70.4 ([#12299](https://github.com/RocketChat/Rocket.Chat/pull/12299)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.70.3 +`2018-10-08 · 1 🐛 · 2 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- E2E alert shows up when encryption is disabled ([#12272](https://github.com/RocketChat/Rocket.Chat/pull/12272) by [@Hudell](https://github.com/Hudell)) + +
+🔍 Minor changes + + +- Release 0.70.2 ([#12276](https://github.com/RocketChat/Rocket.Chat/pull/12276) by [@Hudell](https://github.com/Hudell)) + +- Release 0.70.3 ([#12281](https://github.com/RocketChat/Rocket.Chat/pull/12281)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.70.1 +`2018-10-05 · 8 🐛 · 5 🔍 · 11 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- E2E data not cleared on logout ([#12254](https://github.com/RocketChat/Rocket.Chat/pull/12254) by [@Hudell](https://github.com/Hudell)) + +- E2E password request not closing after entering password ([#12232](https://github.com/RocketChat/Rocket.Chat/pull/12232) by [@Hudell](https://github.com/Hudell)) + +- Emails' logo and links ([#12241](https://github.com/RocketChat/Rocket.Chat/pull/12241)) + +- Livechat CRM integration running when disabled ([#12242](https://github.com/RocketChat/Rocket.Chat/pull/12242)) + +- Livechat integration with RDStation ([#12257](https://github.com/RocketChat/Rocket.Chat/pull/12257)) + +- Livechat triggers being registered twice after setting department via API ([#12255](https://github.com/RocketChat/Rocket.Chat/pull/12255) by [@edzluhan](https://github.com/edzluhan)) + +- Message editing was duplicating reply quotes ([#12263](https://github.com/RocketChat/Rocket.Chat/pull/12263)) + +- Set default action for Setup Wizard form submit ([#12240](https://github.com/RocketChat/Rocket.Chat/pull/12240)) + +
+🔍 Minor changes + + +- Add reetp to the issues' bot whitelist ([#12227](https://github.com/RocketChat/Rocket.Chat/pull/12227) by [@theorenck](https://github.com/theorenck)) + +- Fix: Remove semver satisfies from Apps details that is already done my marketplace ([#12268](https://github.com/RocketChat/Rocket.Chat/pull/12268)) + +- Merge master into develop & Set version to 0.71.0-develop ([#12264](https://github.com/RocketChat/Rocket.Chat/pull/12264) by [@cardoso](https://github.com/cardoso) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@timkinnane](https://github.com/timkinnane)) + +- Regression: fix modal submit ([#12233](https://github.com/RocketChat/Rocket.Chat/pull/12233)) + +- Release 0.70.1 ([#12270](https://github.com/RocketChat/Rocket.Chat/pull/12270) by [@Hudell](https://github.com/Hudell) & [@edzluhan](https://github.com/edzluhan) & [@theorenck](https://github.com/theorenck)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@cardoso](https://github.com/cardoso) +- [@edzluhan](https://github.com/edzluhan) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@theorenck](https://github.com/theorenck) +- [@timkinnane](https://github.com/timkinnane) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.70.0 +`2018-09-28 · 2 ️️️⚠️ · 18 🎉 · 3 🚀 · 35 🐛 · 19 🔍 · 32 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- **IMPROVE:** New emails design ([#12009](https://github.com/RocketChat/Rocket.Chat/pull/12009)) + +- Update the default port of the Prometheus exporter ([#11351](https://github.com/RocketChat/Rocket.Chat/pull/11351) by [@thaiphv](https://github.com/thaiphv)) + +### 🎉 New features + + +- Add Livechat Analytics permission ([#12184](https://github.com/RocketChat/Rocket.Chat/pull/12184)) + +- Allow multiple subcommands in MIGRATION_VERSION env variable ([#11184](https://github.com/RocketChat/Rocket.Chat/pull/11184) by [@arch119](https://github.com/arch119)) + +- Apps are enabled by default now ([#12189](https://github.com/RocketChat/Rocket.Chat/pull/12189)) + +- Apps: Add handlers for message updates ([#11993](https://github.com/RocketChat/Rocket.Chat/pull/11993) by [@cardoso](https://github.com/cardoso)) + +- Apps: API provider ([#11938](https://github.com/RocketChat/Rocket.Chat/pull/11938)) + +- Blockstack as decentralized auth provider ([#12047](https://github.com/RocketChat/Rocket.Chat/pull/12047) by [@timkinnane](https://github.com/timkinnane)) + +- Customizable default directory view ([#11965](https://github.com/RocketChat/Rocket.Chat/pull/11965) by [@ohmonster](https://github.com/ohmonster)) + +- Informal German translations ([#9984](https://github.com/RocketChat/Rocket.Chat/pull/9984) by [@mrsimpson](https://github.com/mrsimpson)) + +- Livechat Analytics and Reports ([#11238](https://github.com/RocketChat/Rocket.Chat/pull/11238) by [@pkgodara](https://github.com/pkgodara)) + +- Livechat notifications on new incoming inquiries for guest-pool ([#10588](https://github.com/RocketChat/Rocket.Chat/pull/10588) by [@mrsimpson](https://github.com/mrsimpson)) + +- Livechat REST endpoints ([#11900](https://github.com/RocketChat/Rocket.Chat/pull/11900)) + +- Livechat trigger option to run only once ([#12068](https://github.com/RocketChat/Rocket.Chat/pull/12068) by [@edzluhan](https://github.com/edzluhan)) + +- REST endpoint to set groups' announcement ([#11905](https://github.com/RocketChat/Rocket.Chat/pull/11905)) + +- REST endpoints to create roles and assign roles to users ([#11855](https://github.com/RocketChat/Rocket.Chat/pull/11855) by [@aferreira44](https://github.com/aferreira44)) + +- REST endpoints to get moderators from groups and channels ([#11909](https://github.com/RocketChat/Rocket.Chat/pull/11909)) + +- Support for end to end encryption ([#10094](https://github.com/RocketChat/Rocket.Chat/pull/10094) by [@mrinaldhar](https://github.com/mrinaldhar)) + +- User preference for 24- or 12-hour clock ([#11169](https://github.com/RocketChat/Rocket.Chat/pull/11169) by [@vynmera](https://github.com/vynmera)) + +- WebDAV Integration (User file provider) ([#11679](https://github.com/RocketChat/Rocket.Chat/pull/11679) by [@karakayasemi](https://github.com/karakayasemi)) + +### 🚀 Improvements + + +- BigBlueButton joinViaHtml5 and video icon on sidebar ([#12107](https://github.com/RocketChat/Rocket.Chat/pull/12107)) + +- Cache livechat get agent trigger call ([#12083](https://github.com/RocketChat/Rocket.Chat/pull/12083)) + +- Use eslint-config package ([#12044](https://github.com/RocketChat/Rocket.Chat/pull/12044)) + +### 🐛 Bug fixes + + +- Adding scroll bar to read receipts modal ([#11919](https://github.com/RocketChat/Rocket.Chat/pull/11919) by [@rssilva](https://github.com/rssilva)) + +- Allow user with "bulk-register-user" permission to send invitations ([#12112](https://github.com/RocketChat/Rocket.Chat/pull/12112) by [@mrsimpson](https://github.com/mrsimpson)) + +- app engine verbose log typo ([#12126](https://github.com/RocketChat/Rocket.Chat/pull/12126) by [@williamriancho](https://github.com/williamriancho)) + +- App updates were not being shown correctly ([#11893](https://github.com/RocketChat/Rocket.Chat/pull/11893)) + +- Apps being able to see hidden settings ([#12159](https://github.com/RocketChat/Rocket.Chat/pull/12159)) + +- Apps: Add missing reactions and actions properties to app message object ([#11780](https://github.com/RocketChat/Rocket.Chat/pull/11780)) + +- Broken slack compatible webhook ([#11742](https://github.com/RocketChat/Rocket.Chat/pull/11742)) + +- Changing Mentions.userMentionRegex pattern to include
tag ([#12043](https://github.com/RocketChat/Rocket.Chat/pull/12043) by [@rssilva](https://github.com/rssilva)) + +- Close popover on shortcuts and writing ([#11562](https://github.com/RocketChat/Rocket.Chat/pull/11562)) + +- Direct messages leaking into logs ([#11863](https://github.com/RocketChat/Rocket.Chat/pull/11863) by [@Hudell](https://github.com/Hudell)) + +- Double output of message actions ([#11902](https://github.com/RocketChat/Rocket.Chat/pull/11902) by [@timkinnane](https://github.com/timkinnane)) + +- Duplicate email and auto-join on mentions ([#12168](https://github.com/RocketChat/Rocket.Chat/pull/12168)) + +- Duplicated message buttons ([#11853](https://github.com/RocketChat/Rocket.Chat/pull/11853) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- Files list missing from popover menu when owner of room ([#11565](https://github.com/RocketChat/Rocket.Chat/pull/11565)) + +- Fixing spacement between tags and words on some labels ([#12018](https://github.com/RocketChat/Rocket.Chat/pull/12018) by [@rssilva](https://github.com/rssilva)) + +- Fixing translation on 'yesterday' word when calling timeAgo function ([#11946](https://github.com/RocketChat/Rocket.Chat/pull/11946) by [@rssilva](https://github.com/rssilva)) + +- Hipchat import was failing when importing messages from a non existent user ([#11892](https://github.com/RocketChat/Rocket.Chat/pull/11892)) + +- Hipchat importer was not importing users without emails and uploaded files ([#11910](https://github.com/RocketChat/Rocket.Chat/pull/11910)) + +- Horizontal scroll on user info tab ([#12102](https://github.com/RocketChat/Rocket.Chat/pull/12102) by [@rssilva](https://github.com/rssilva)) + +- Internal error when cross-origin with CORS is disabled ([#11953](https://github.com/RocketChat/Rocket.Chat/pull/11953)) + +- IRC Federation no longer working ([#11906](https://github.com/RocketChat/Rocket.Chat/pull/11906) by [@Hudell](https://github.com/Hudell)) + +- Livechat agent joining on pick from guest pool ([#12097](https://github.com/RocketChat/Rocket.Chat/pull/12097) by [@mrsimpson](https://github.com/mrsimpson)) + +- Login error message not obvious if user not activated ([#11785](https://github.com/RocketChat/Rocket.Chat/pull/11785) by [@crazy-max](https://github.com/crazy-max)) + +- Markdown ampersand escape on links ([#12140](https://github.com/RocketChat/Rocket.Chat/pull/12140) by [@rssilva](https://github.com/rssilva)) + +- Message reaction in GraphQL API ([#11967](https://github.com/RocketChat/Rocket.Chat/pull/11967)) + +- Not able to set per-channel retention policies if no global policy is set for this channel type ([#11927](https://github.com/RocketChat/Rocket.Chat/pull/11927) by [@vynmera](https://github.com/vynmera)) + +- Permission check on joinRoom for private room ([#11857](https://github.com/RocketChat/Rocket.Chat/pull/11857) by [@timkinnane](https://github.com/timkinnane)) + +- Position of popover component on mobile ([#12038](https://github.com/RocketChat/Rocket.Chat/pull/12038)) + +- Prevent form submission in Files List search ([#11999](https://github.com/RocketChat/Rocket.Chat/pull/11999)) + +- Re-add the eye-off icon ([#12079](https://github.com/RocketChat/Rocket.Chat/pull/12079) by [@MIKI785](https://github.com/MIKI785)) + +- Real Name on Direct Messages ([#12154](https://github.com/RocketChat/Rocket.Chat/pull/12154)) + +- Saving user preferences ([#12170](https://github.com/RocketChat/Rocket.Chat/pull/12170)) + +- Typo in a configuration key for SlackBridge excluded bot names ([#11872](https://github.com/RocketChat/Rocket.Chat/pull/11872) by [@TobiasKappe](https://github.com/TobiasKappe)) + +- video message recording, issue #11651 ([#12031](https://github.com/RocketChat/Rocket.Chat/pull/12031) by [@flaviogrossi](https://github.com/flaviogrossi)) + +- Wrong build path in install.sh ([#11879](https://github.com/RocketChat/Rocket.Chat/pull/11879)) + +
+🔍 Minor changes + + +- Better organize package.json ([#12115](https://github.com/RocketChat/Rocket.Chat/pull/12115)) + +- Fix the style lint ([#11991](https://github.com/RocketChat/Rocket.Chat/pull/11991)) + +- Fix using wrong variable ([#12114](https://github.com/RocketChat/Rocket.Chat/pull/12114)) + +- Fix: Add e2e doc to the alert ([#12187](https://github.com/RocketChat/Rocket.Chat/pull/12187)) + +- Fix: Change wording on e2e to make a little more clear ([#12124](https://github.com/RocketChat/Rocket.Chat/pull/12124)) + +- Fix: e2e password visible on always-on alert message. ([#12139](https://github.com/RocketChat/Rocket.Chat/pull/12139) by [@Hudell](https://github.com/Hudell)) + +- Fix: Message changing order when been edited with apps enabled ([#12188](https://github.com/RocketChat/Rocket.Chat/pull/12188)) + +- Improve: Decrypt last message ([#12173](https://github.com/RocketChat/Rocket.Chat/pull/12173)) + +- Improve: Do not start E2E Encryption when accessing admin as embedded ([#12192](https://github.com/RocketChat/Rocket.Chat/pull/12192)) + +- Improve: E2E setting description and alert ([#12191](https://github.com/RocketChat/Rocket.Chat/pull/12191)) + +- Improve: Expose apps enable setting at `General > Apps` ([#12196](https://github.com/RocketChat/Rocket.Chat/pull/12196)) + +- Improve: Moved the e2e password request to an alert instead of a popup ([#12172](https://github.com/RocketChat/Rocket.Chat/pull/12172) by [@Hudell](https://github.com/Hudell)) + +- Improve: Rename E2E methods ([#12175](https://github.com/RocketChat/Rocket.Chat/pull/12175) by [@Hudell](https://github.com/Hudell)) + +- Improve: Switch e2e doc to target _blank ([#12195](https://github.com/RocketChat/Rocket.Chat/pull/12195)) + +- LingoHub based on develop ([#11936](https://github.com/RocketChat/Rocket.Chat/pull/11936)) + +- Merge master into develop & Set version to 0.70.0-develop ([#11921](https://github.com/RocketChat/Rocket.Chat/pull/11921) by [@Hudell](https://github.com/Hudell) & [@c0dzilla](https://github.com/c0dzilla) & [@rndmh3ro](https://github.com/rndmh3ro) & [@ubarsaiyan](https://github.com/ubarsaiyan) & [@vynmera](https://github.com/vynmera)) + +- New: Option to change E2E key ([#12169](https://github.com/RocketChat/Rocket.Chat/pull/12169) by [@Hudell](https://github.com/Hudell)) + +- Regression: fix message box autogrow ([#12138](https://github.com/RocketChat/Rocket.Chat/pull/12138)) + +- Regression: Modal height ([#12122](https://github.com/RocketChat/Rocket.Chat/pull/12122)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@MIKI785](https://github.com/MIKI785) +- [@TobiasKappe](https://github.com/TobiasKappe) +- [@aferreira44](https://github.com/aferreira44) +- [@arch119](https://github.com/arch119) +- [@c0dzilla](https://github.com/c0dzilla) +- [@cardoso](https://github.com/cardoso) +- [@crazy-max](https://github.com/crazy-max) +- [@edzluhan](https://github.com/edzluhan) +- [@flaviogrossi](https://github.com/flaviogrossi) +- [@karakayasemi](https://github.com/karakayasemi) +- [@mrinaldhar](https://github.com/mrinaldhar) +- [@mrsimpson](https://github.com/mrsimpson) +- [@ohmonster](https://github.com/ohmonster) +- [@pkgodara](https://github.com/pkgodara) +- [@rndmh3ro](https://github.com/rndmh3ro) +- [@rssilva](https://github.com/rssilva) +- [@thaiphv](https://github.com/thaiphv) +- [@timkinnane](https://github.com/timkinnane) +- [@ubarsaiyan](https://github.com/ubarsaiyan) +- [@vynmera](https://github.com/vynmera) +- [@williamriancho](https://github.com/williamriancho) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.69.2 +`2018-09-11 · 1 🎉 · 4 🐛 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🎉 New features + + +- Include room name in stream for bots ([#11812](https://github.com/RocketChat/Rocket.Chat/pull/11812) by [@timkinnane](https://github.com/timkinnane)) + +### 🐛 Bug fixes + + +- Apps: setting with 'code' type only saving last line ([#11992](https://github.com/RocketChat/Rocket.Chat/pull/11992) by [@cardoso](https://github.com/cardoso)) + +- Hidden admin sidenav on embedded layout ([#12025](https://github.com/RocketChat/Rocket.Chat/pull/12025)) + +- Reset password link error if already logged in ([#12022](https://github.com/RocketChat/Rocket.Chat/pull/12022)) + +- Update user information not possible by admin if disabled to users ([#11955](https://github.com/RocketChat/Rocket.Chat/pull/11955) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cardoso](https://github.com/cardoso) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@timkinnane](https://github.com/timkinnane) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.69.1 +`2018-08-31 · 4 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- App updates were not being shown correctly ([#11893](https://github.com/RocketChat/Rocket.Chat/pull/11893)) + +- Duplicated message buttons ([#11853](https://github.com/RocketChat/Rocket.Chat/pull/11853) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- Hipchat import was failing when importing messages from a non existent user ([#11892](https://github.com/RocketChat/Rocket.Chat/pull/11892)) + +- Hipchat importer was not importing users without emails and uploaded files ([#11910](https://github.com/RocketChat/Rocket.Chat/pull/11910)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@ubarsaiyan](https://github.com/ubarsaiyan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 0.69.0 +`2018-08-28 · 10 🎉 · 8 🚀 · 45 🐛 · 12 🔍 · 27 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🎉 New features + + +- Beta support for Big Blue Button video conferencing system ([#11837](https://github.com/RocketChat/Rocket.Chat/pull/11837)) + +- Internal marketplace for apps ([#11864](https://github.com/RocketChat/Rocket.Chat/pull/11864) by [@gdelavald](https://github.com/gdelavald) & [@rssilva](https://github.com/rssilva)) + +- Make font of unread items bolder for better contrast ([#8602](https://github.com/RocketChat/Rocket.Chat/pull/8602) by [@ausminternet](https://github.com/ausminternet)) + +- Personal access tokens for users to create API tokens ([#11638](https://github.com/RocketChat/Rocket.Chat/pull/11638)) + +- REST endpoint to manage server assets ([#11697](https://github.com/RocketChat/Rocket.Chat/pull/11697)) + +- Rich message text and image buttons ([#11473](https://github.com/RocketChat/Rocket.Chat/pull/11473) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- Setting to block unauthenticated access to avatars ([#9749](https://github.com/RocketChat/Rocket.Chat/pull/9749) by [@Hudell](https://github.com/Hudell)) + +- Setting to enable/disable slack bridge reactions ([#10217](https://github.com/RocketChat/Rocket.Chat/pull/10217) by [@Hudell](https://github.com/Hudell) & [@kable-wilmoth](https://github.com/kable-wilmoth)) + +- Setting to set a JS/CSS CDN ([#11779](https://github.com/RocketChat/Rocket.Chat/pull/11779)) + +- Slackbridge: send attachment notifications ([#10269](https://github.com/RocketChat/Rocket.Chat/pull/10269) by [@Hudell](https://github.com/Hudell) & [@kable-wilmoth](https://github.com/kable-wilmoth)) + +### 🚀 Improvements + + +- Add nyan rocket on Rocket.Chat preview Docker image ([#11684](https://github.com/RocketChat/Rocket.Chat/pull/11684)) + +- Add template tag #{userdn} to filter LDAP group member format ([#11662](https://github.com/RocketChat/Rocket.Chat/pull/11662) by [@crazy-max](https://github.com/crazy-max)) + +- Escape parameters before send them to email template ([#11644](https://github.com/RocketChat/Rocket.Chat/pull/11644)) + +- Messagebox fix performance ([#11686](https://github.com/RocketChat/Rocket.Chat/pull/11686)) + +- Reducing `saveUser` code complexity ([#11645](https://github.com/RocketChat/Rocket.Chat/pull/11645) by [@Hudell](https://github.com/Hudell)) + +- Role tag UI ([#11674](https://github.com/RocketChat/Rocket.Chat/pull/11674) by [@timkinnane](https://github.com/timkinnane)) + +- Start storing Livechat department within rooms ([#11733](https://github.com/RocketChat/Rocket.Chat/pull/11733)) + +- Warn about push settings that need server restart ([#11784](https://github.com/RocketChat/Rocket.Chat/pull/11784)) + +### 🐛 Bug fixes + + +- "User is typing" not working in new Livechat session ([#11670](https://github.com/RocketChat/Rocket.Chat/pull/11670)) + +- App's i18nAlert is only being displayed as "i18nAlert" ([#11802](https://github.com/RocketChat/Rocket.Chat/pull/11802)) + +- Apply Cordova fix in lazy-loaded images sources ([#11807](https://github.com/RocketChat/Rocket.Chat/pull/11807)) + +- Broken logo on setup wizard ([#11708](https://github.com/RocketChat/Rocket.Chat/pull/11708)) + +- Cannot set property 'input' of undefined ([#11775](https://github.com/RocketChat/Rocket.Chat/pull/11775)) + +- Closed connections being storing on db ([#11709](https://github.com/RocketChat/Rocket.Chat/pull/11709)) + +- Code tag duplicating characters ([#11467](https://github.com/RocketChat/Rocket.Chat/pull/11467) by [@vynmera](https://github.com/vynmera)) + +- Custom sound uploader not working in Firefox and IE ([#11139](https://github.com/RocketChat/Rocket.Chat/pull/11139) by [@vynmera](https://github.com/vynmera)) + +- Default server language not being applied ([#11719](https://github.com/RocketChat/Rocket.Chat/pull/11719)) + +- Delete removed user's subscriptions ([#10700](https://github.com/RocketChat/Rocket.Chat/pull/10700) by [@Hudell](https://github.com/Hudell)) + +- directory search table not clickable lines ([#11809](https://github.com/RocketChat/Rocket.Chat/pull/11809)) + +- Escape meta data before inject in head tag ([#11730](https://github.com/RocketChat/Rocket.Chat/pull/11730)) + +- Fix links in `onTableItemClick` of the directroy page ([#11543](https://github.com/RocketChat/Rocket.Chat/pull/11543) by [@ura14h](https://github.com/ura14h)) + +- Fix permalink of message when running system with subdir ([#11781](https://github.com/RocketChat/Rocket.Chat/pull/11781) by [@ura14h](https://github.com/ura14h)) + +- Fixing timeAgo function on directory ([#11728](https://github.com/RocketChat/Rocket.Chat/pull/11728) by [@rssilva](https://github.com/rssilva)) + +- Incorrect migration version in v130.js ([#11544](https://github.com/RocketChat/Rocket.Chat/pull/11544) by [@c0dzilla](https://github.com/c0dzilla)) + +- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830)) + +- Livechat rooms starting with two unread message counter ([#11834](https://github.com/RocketChat/Rocket.Chat/pull/11834)) + +- LiveChat switch department not working ([#11011](https://github.com/RocketChat/Rocket.Chat/pull/11011)) + +- Login logo now centered on small screens ([#11626](https://github.com/RocketChat/Rocket.Chat/pull/11626) by [@wreiske](https://github.com/wreiske)) + +- Message attachments was not respecting sort and lost spacing ([#11740](https://github.com/RocketChat/Rocket.Chat/pull/11740)) + +- minor fixes in hungarian i18n ([#11797](https://github.com/RocketChat/Rocket.Chat/pull/11797) by [@Atisom](https://github.com/Atisom)) + +- minor fixes in i18n ([#11761](https://github.com/RocketChat/Rocket.Chat/pull/11761) by [@Atisom](https://github.com/Atisom)) + +- Missing chat history for users without permission `preview-c-room` ([#11639](https://github.com/RocketChat/Rocket.Chat/pull/11639) by [@Hudell](https://github.com/Hudell)) + +- Missing twitter:image and og:image tags ([#11687](https://github.com/RocketChat/Rocket.Chat/pull/11687)) + +- permissions name no break ([#11836](https://github.com/RocketChat/Rocket.Chat/pull/11836)) + +- Prune translation on room info panel ([#11635](https://github.com/RocketChat/Rocket.Chat/pull/11635)) + +- Prune translations in German ([#11631](https://github.com/RocketChat/Rocket.Chat/pull/11631) by [@rndmh3ro](https://github.com/rndmh3ro)) + +- Push notifications stuck after db failure ([#11667](https://github.com/RocketChat/Rocket.Chat/pull/11667)) + +- re-adding margin to menu icon on header ([#11778](https://github.com/RocketChat/Rocket.Chat/pull/11778) by [@rssilva](https://github.com/rssilva)) + +- Regression in prune by user, and update lastMessage ([#11646](https://github.com/RocketChat/Rocket.Chat/pull/11646) by [@vynmera](https://github.com/vynmera)) + +- Removed hardcoded values. ([#11627](https://github.com/RocketChat/Rocket.Chat/pull/11627) by [@Hudell](https://github.com/Hudell)) + +- Render Attachment Pretext When Markdown Specified ([#11578](https://github.com/RocketChat/Rocket.Chat/pull/11578) by [@glstewart17](https://github.com/glstewart17)) + +- REST `im.members` endpoint not working without sort parameter ([#11821](https://github.com/RocketChat/Rocket.Chat/pull/11821)) + +- REST endpoints to update user not respecting some settings ([#11474](https://github.com/RocketChat/Rocket.Chat/pull/11474)) + +- Results pagination on /directory REST endpoint ([#11551](https://github.com/RocketChat/Rocket.Chat/pull/11551)) + +- Return room ID for groups where user joined ([#11703](https://github.com/RocketChat/Rocket.Chat/pull/11703) by [@timkinnane](https://github.com/timkinnane)) + +- Revoked `view-d-room` permission logics ([#11522](https://github.com/RocketChat/Rocket.Chat/pull/11522) by [@Hudell](https://github.com/Hudell)) + +- SAML is flooding logfile ([#11643](https://github.com/RocketChat/Rocket.Chat/pull/11643) by [@Hudell](https://github.com/Hudell)) + +- SAML login not working when user has multiple emails ([#11642](https://github.com/RocketChat/Rocket.Chat/pull/11642) by [@Hudell](https://github.com/Hudell)) + +- Searching by `undefined` via REST when using `query` param ([#11657](https://github.com/RocketChat/Rocket.Chat/pull/11657)) + +- Some assets were pointing to nonexistent path ([#11796](https://github.com/RocketChat/Rocket.Chat/pull/11796)) + +- Translations were not unique per app allowing conflicts among apps ([#11878](https://github.com/RocketChat/Rocket.Chat/pull/11878)) + +- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625)) + +- wrong create date of channels and users on directory view ([#11682](https://github.com/RocketChat/Rocket.Chat/pull/11682) by [@gsperezb](https://github.com/gsperezb)) + +
+🔍 Minor changes + + +- Add new eslint rules (automatically fixed) ([#11800](https://github.com/RocketChat/Rocket.Chat/pull/11800)) + +- Additional eslint rules ([#11804](https://github.com/RocketChat/Rocket.Chat/pull/11804)) + +- App engine merge ([#11835](https://github.com/RocketChat/Rocket.Chat/pull/11835)) + +- Do not remove package-lock.json of livechat package ([#11816](https://github.com/RocketChat/Rocket.Chat/pull/11816)) + +- Fixed deutsch message pruning translations ([#11691](https://github.com/RocketChat/Rocket.Chat/pull/11691) by [@TheReal1604](https://github.com/TheReal1604)) + +- Fixed the Finnish translation and removed some profanities ([#11794](https://github.com/RocketChat/Rocket.Chat/pull/11794) by [@jukper](https://github.com/jukper)) + +- LingoHub based on develop ([#11838](https://github.com/RocketChat/Rocket.Chat/pull/11838)) + +- Merge master into develop & Set version to 0.69.0-develop ([#11606](https://github.com/RocketChat/Rocket.Chat/pull/11606)) + +- Regression: Fix livechat code issues after new lint rules ([#11814](https://github.com/RocketChat/Rocket.Chat/pull/11814)) + +- Regression: Fix purge message's translations ([#11590](https://github.com/RocketChat/Rocket.Chat/pull/11590)) + +- Regression: role tag background, unread item font and message box autogrow ([#11861](https://github.com/RocketChat/Rocket.Chat/pull/11861)) + +- Run eslint and unit tests on pre-push hook ([#11815](https://github.com/RocketChat/Rocket.Chat/pull/11815)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Atisom](https://github.com/Atisom) +- [@Hudell](https://github.com/Hudell) +- [@TheReal1604](https://github.com/TheReal1604) +- [@ausminternet](https://github.com/ausminternet) +- [@c0dzilla](https://github.com/c0dzilla) +- [@crazy-max](https://github.com/crazy-max) +- [@gdelavald](https://github.com/gdelavald) +- [@glstewart17](https://github.com/glstewart17) +- [@gsperezb](https://github.com/gsperezb) +- [@jukper](https://github.com/jukper) +- [@kable-wilmoth](https://github.com/kable-wilmoth) +- [@rndmh3ro](https://github.com/rndmh3ro) +- [@rssilva](https://github.com/rssilva) +- [@timkinnane](https://github.com/timkinnane) +- [@ubarsaiyan](https://github.com/ubarsaiyan) +- [@ura14h](https://github.com/ura14h) +- [@vynmera](https://github.com/vynmera) +- [@wreiske](https://github.com/wreiske) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.68.5 +`2018-08-23 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@renatobecker](https://github.com/renatobecker) + +# 0.68.4 +`2018-08-10 · 3 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Broken logo on setup wizard ([#11708](https://github.com/RocketChat/Rocket.Chat/pull/11708)) + +- Default server language not being applied ([#11719](https://github.com/RocketChat/Rocket.Chat/pull/11719)) + +- Regression in prune by user, and update lastMessage ([#11646](https://github.com/RocketChat/Rocket.Chat/pull/11646) by [@vynmera](https://github.com/vynmera)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@vynmera](https://github.com/vynmera) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.68.3 +`2018-08-01 · 5 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Missing chat history for users without permission `preview-c-room` ([#11639](https://github.com/RocketChat/Rocket.Chat/pull/11639) by [@Hudell](https://github.com/Hudell)) + +- Prune translation on room info panel ([#11635](https://github.com/RocketChat/Rocket.Chat/pull/11635)) + +- Prune translations in German ([#11631](https://github.com/RocketChat/Rocket.Chat/pull/11631) by [@rndmh3ro](https://github.com/rndmh3ro)) + +- SAML login not working when user has multiple emails ([#11642](https://github.com/RocketChat/Rocket.Chat/pull/11642) by [@Hudell](https://github.com/Hudell)) + +- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625)) + +
+🔍 Minor changes + + +- Release 0.68.3 ([#11650](https://github.com/RocketChat/Rocket.Chat/pull/11650) by [@Hudell](https://github.com/Hudell) & [@rndmh3ro](https://github.com/rndmh3ro)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@rndmh3ro](https://github.com/rndmh3ro) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.68.2 +`2018-07-31 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Incorrect migration version in v130.js ([#11544](https://github.com/RocketChat/Rocket.Chat/pull/11544) by [@c0dzilla](https://github.com/c0dzilla)) + +
+🔍 Minor changes + + +- Release 0.68.2 ([#11630](https://github.com/RocketChat/Rocket.Chat/pull/11630) by [@c0dzilla](https://github.com/c0dzilla)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@c0dzilla](https://github.com/c0dzilla) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.68.1 +`2018-07-31 · 2 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- `Jump to message` search result action ([#11613](https://github.com/RocketChat/Rocket.Chat/pull/11613)) + +- HipChat importer wasn’t compatible with latest exports ([#11597](https://github.com/RocketChat/Rocket.Chat/pull/11597)) + +
+🔍 Minor changes + + +- Release 0.68.1 ([#11616](https://github.com/RocketChat/Rocket.Chat/pull/11616)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@engelgabriel](https://github.com/engelgabriel) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.68.0 +`2018-07-27 · 2 ️️️⚠️ · 13 🎉 · 3 🚀 · 23 🐛 · 10 🔍 · 21 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- Remove deprecated /user.roles endpoint ([#11493](https://github.com/RocketChat/Rocket.Chat/pull/11493)) + +- Update GraphQL dependencies ([#11430](https://github.com/RocketChat/Rocket.Chat/pull/11430)) + +### 🎉 New features + + +- Accept resumeToken as query param to log in ([#11443](https://github.com/RocketChat/Rocket.Chat/pull/11443)) + +- Add /roles.list REST endpoint to retrieve all server roles ([#11500](https://github.com/RocketChat/Rocket.Chat/pull/11500)) + +- Add /users.deleteOwnAccount REST endpoint to an user delete his own account ([#11488](https://github.com/RocketChat/Rocket.Chat/pull/11488)) + +- Livechat File Upload ([#10514](https://github.com/RocketChat/Rocket.Chat/pull/10514)) + +- Make WebRTC not enabled by default ([#11489](https://github.com/RocketChat/Rocket.Chat/pull/11489)) + +- Message retention policy and pruning ([#11236](https://github.com/RocketChat/Rocket.Chat/pull/11236) by [@vynmera](https://github.com/vynmera)) + +- Privacy for custom user fields ([#11332](https://github.com/RocketChat/Rocket.Chat/pull/11332) by [@vynmera](https://github.com/vynmera)) + +- Replaced old logo with the new ones ([#11491](https://github.com/RocketChat/Rocket.Chat/pull/11491) by [@brunosquadros](https://github.com/brunosquadros)) + +- Room files search form ([#11486](https://github.com/RocketChat/Rocket.Chat/pull/11486)) + +- search only default tone emoji Popup search ([#10017](https://github.com/RocketChat/Rocket.Chat/pull/10017) by [@Joe-mcgee](https://github.com/Joe-mcgee)) + +- Send user status to client ([#11303](https://github.com/RocketChat/Rocket.Chat/pull/11303) by [@HappyTobi](https://github.com/HappyTobi)) + +- Setting to disable 2FA globally ([#11328](https://github.com/RocketChat/Rocket.Chat/pull/11328) by [@Hudell](https://github.com/Hudell)) + +- Sorting channels by number of users in directory ([#9972](https://github.com/RocketChat/Rocket.Chat/pull/9972) by [@arungalva](https://github.com/arungalva)) + +### 🚀 Improvements + + +- Allow markdown in room topic, announcement, and description including single quotes ([#11408](https://github.com/RocketChat/Rocket.Chat/pull/11408)) + +- Set default max upload size to 100mb ([#11327](https://github.com/RocketChat/Rocket.Chat/pull/11327) by [@cardoso](https://github.com/cardoso)) + +- Typing indicators now use Real Names ([#11164](https://github.com/RocketChat/Rocket.Chat/pull/11164) by [@vynmera](https://github.com/vynmera)) + +### 🐛 Bug fixes + + +- Add customFields property to /me REST endpoint response ([#11496](https://github.com/RocketChat/Rocket.Chat/pull/11496)) + +- broadcast channel reply ([#11462](https://github.com/RocketChat/Rocket.Chat/pull/11462)) + +- Check for channels property on message object before parsing mentions ([#11527](https://github.com/RocketChat/Rocket.Chat/pull/11527)) + +- Decrease room leader bar z-index ([#11450](https://github.com/RocketChat/Rocket.Chat/pull/11450)) + +- empty blockquote ([#11526](https://github.com/RocketChat/Rocket.Chat/pull/11526)) + +- Fixed svg for older chrome browsers bug #11414 ([#11416](https://github.com/RocketChat/Rocket.Chat/pull/11416) by [@tpDBL](https://github.com/tpDBL)) + +- Invalid permalink URLs for Direct Messages ([#11507](https://github.com/RocketChat/Rocket.Chat/pull/11507) by [@Hudell](https://github.com/Hudell)) + +- Loading and setting fixes for i18n and RTL ([#11363](https://github.com/RocketChat/Rocket.Chat/pull/11363)) + +- Marked parser breaking announcements and mentions at the start of messages ([#11357](https://github.com/RocketChat/Rocket.Chat/pull/11357) by [@vynmera](https://github.com/vynmera)) + +- Mixed case channel slugs ([#9449](https://github.com/RocketChat/Rocket.Chat/pull/9449) by [@soundstorm](https://github.com/soundstorm)) + +- New favicons size too small ([#11524](https://github.com/RocketChat/Rocket.Chat/pull/11524) by [@brunosquadros](https://github.com/brunosquadros)) + +- Only escape HTML from details in toast error messages ([#11459](https://github.com/RocketChat/Rocket.Chat/pull/11459)) + +- Record popup ([#11349](https://github.com/RocketChat/Rocket.Chat/pull/11349)) + +- Refinements in message popup mentions ([#11441](https://github.com/RocketChat/Rocket.Chat/pull/11441)) + +- Remove title attribute from sidebar items ([#11298](https://github.com/RocketChat/Rocket.Chat/pull/11298)) + +- Render reply preview with message as a common message ([#11534](https://github.com/RocketChat/Rocket.Chat/pull/11534)) + +- RocketChat.settings.get causing memory leak (sometimes) ([#11487](https://github.com/RocketChat/Rocket.Chat/pull/11487)) + +- SAML issues ([#11135](https://github.com/RocketChat/Rocket.Chat/pull/11135) by [@Hudell](https://github.com/Hudell) & [@arminfelder](https://github.com/arminfelder)) + +- Send Livechat back to Guest Pool ([#10731](https://github.com/RocketChat/Rocket.Chat/pull/10731)) + +- Snap font issue for sharp ([#11514](https://github.com/RocketChat/Rocket.Chat/pull/11514)) + +- Unlimited upload file size not working ([#11471](https://github.com/RocketChat/Rocket.Chat/pull/11471) by [@Hudell](https://github.com/Hudell)) + +- Unreads counter for new rooms on /channels.counters REST endpoint ([#11531](https://github.com/RocketChat/Rocket.Chat/pull/11531)) + +- Wrap custom fields in user profile to new line ([#10119](https://github.com/RocketChat/Rocket.Chat/pull/10119) by [@PhpXp](https://github.com/PhpXp) & [@karlprieb](https://github.com/karlprieb)) + +
+🔍 Minor changes + + +- LingoHub based on develop ([#11587](https://github.com/RocketChat/Rocket.Chat/pull/11587)) + +- Merge master into develop & Set version to 0.68.0-develop ([#11536](https://github.com/RocketChat/Rocket.Chat/pull/11536)) + +- Regression: Add missing LiveChat permission to allow removing closed rooms ([#11423](https://github.com/RocketChat/Rocket.Chat/pull/11423)) + +- Regression: Fix purge message's translations ([#11590](https://github.com/RocketChat/Rocket.Chat/pull/11590)) + +- Regression: Make message popup user mentions reactive again ([#11567](https://github.com/RocketChat/Rocket.Chat/pull/11567)) + +- Regression: nonReactive to nonreactive ([#11550](https://github.com/RocketChat/Rocket.Chat/pull/11550)) + +- Regression: Remove safe area margins from logos ([#11508](https://github.com/RocketChat/Rocket.Chat/pull/11508) by [@brunosquadros](https://github.com/brunosquadros)) + +- Regression: Update cachedCollection version ([#11561](https://github.com/RocketChat/Rocket.Chat/pull/11561)) + +- Revert: Mixed case channel slugs #9449 ([#11537](https://github.com/RocketChat/Rocket.Chat/pull/11537)) + +- Update release issue template to use Houston CLI ([#11499](https://github.com/RocketChat/Rocket.Chat/pull/11499)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@HappyTobi](https://github.com/HappyTobi) +- [@Hudell](https://github.com/Hudell) +- [@Joe-mcgee](https://github.com/Joe-mcgee) +- [@PhpXp](https://github.com/PhpXp) +- [@arminfelder](https://github.com/arminfelder) +- [@arungalva](https://github.com/arungalva) +- [@brunosquadros](https://github.com/brunosquadros) +- [@cardoso](https://github.com/cardoso) +- [@karlprieb](https://github.com/karlprieb) +- [@soundstorm](https://github.com/soundstorm) +- [@tpDBL](https://github.com/tpDBL) +- [@vynmera](https://github.com/vynmera) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.67.0 +`2018-07-20 · 1 ️️️⚠️ · 1 🎉 · 2 🚀 · 15 🐛 · 7 🔍 · 11 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- Remove cache layer and internal calculated property `room.usernames` ([#10749](https://github.com/RocketChat/Rocket.Chat/pull/10749)) + +### 🎉 New features + + +- Additional Livechat iFrame API's ([#10918](https://github.com/RocketChat/Rocket.Chat/pull/10918)) + +### 🚀 Improvements + + +- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254)) + +- Stop sort callbacks on run ([#11330](https://github.com/RocketChat/Rocket.Chat/pull/11330)) + +### 🐛 Bug fixes + + +- All messages notifications via email were sent as mention alert ([#11398](https://github.com/RocketChat/Rocket.Chat/pull/11398)) + +- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266)) + +- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406)) + +- Livestream muted when audio only option was enabled ([#11267](https://github.com/RocketChat/Rocket.Chat/pull/11267) by [@gdelavald](https://github.com/gdelavald)) + +- Message attachment's fields with different sizes ([#11342](https://github.com/RocketChat/Rocket.Chat/pull/11342)) + +- Message popup responsiveness in slash commands ([#11313](https://github.com/RocketChat/Rocket.Chat/pull/11313)) + +- Notification preferences being lost when switching view mode ([#11295](https://github.com/RocketChat/Rocket.Chat/pull/11295)) + +- Outgoing integrations were stopping the oplog tailing sometimes ([#11333](https://github.com/RocketChat/Rocket.Chat/pull/11333)) + +- Parse inline code without space before initial backtick ([#9754](https://github.com/RocketChat/Rocket.Chat/pull/9754) by [@c0dzilla](https://github.com/c0dzilla) & [@gdelavald](https://github.com/gdelavald)) + +- Remove file snap store doesn't like ([#11365](https://github.com/RocketChat/Rocket.Chat/pull/11365)) + +- SAML attributes with periods are not properly read. ([#11315](https://github.com/RocketChat/Rocket.Chat/pull/11315) by [@Hudell](https://github.com/Hudell)) + +- Some updates were returning errors when based on queries with position operators ([#11335](https://github.com/RocketChat/Rocket.Chat/pull/11335)) + +- sort fname sidenav ([#11358](https://github.com/RocketChat/Rocket.Chat/pull/11358)) + +- SVG icons code ([#11319](https://github.com/RocketChat/Rocket.Chat/pull/11319)) + +- web app manifest errors as reported by Chrome DevTools ([#9991](https://github.com/RocketChat/Rocket.Chat/pull/9991) by [@justinribeiro](https://github.com/justinribeiro)) + +
+🔍 Minor changes + + +- Fix dependency issue in redhat image ([#11497](https://github.com/RocketChat/Rocket.Chat/pull/11497)) + +- Merge master into develop & Set version to 0.67.0-develop ([#11417](https://github.com/RocketChat/Rocket.Chat/pull/11417)) + +- Merge master into develop & Set version to 0.67.0-develop ([#11399](https://github.com/RocketChat/Rocket.Chat/pull/11399)) + +- Merge master into develop & Set version to 0.67.0-develop ([#11348](https://github.com/RocketChat/Rocket.Chat/pull/11348) by [@Hudell](https://github.com/Hudell) & [@gdelavald](https://github.com/gdelavald)) + +- Merge master into develop & Set version to 0.67.0-develop ([#11290](https://github.com/RocketChat/Rocket.Chat/pull/11290)) + +- Regression: Fix migration 125 checking for settings field ([#11364](https://github.com/RocketChat/Rocket.Chat/pull/11364)) + +- Send setting Allow_Marketing_Emails to statistics collector ([#11359](https://github.com/RocketChat/Rocket.Chat/pull/11359)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@c0dzilla](https://github.com/c0dzilla) +- [@gdelavald](https://github.com/gdelavald) +- [@justinribeiro](https://github.com/justinribeiro) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.66.3 +`2018-07-09 · 2 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- All messages notifications via email were sent as mention alert ([#11398](https://github.com/RocketChat/Rocket.Chat/pull/11398)) + +- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) + +# 0.66.2 +`2018-07-06 · 2 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266)) + +- Remove file snap store doesn't like ([#11365](https://github.com/RocketChat/Rocket.Chat/pull/11365)) + +
+🔍 Minor changes + + +- Regression: Fix migration 125 checking for settings field ([#11364](https://github.com/RocketChat/Rocket.Chat/pull/11364)) + +- Send setting Allow_Marketing_Emails to statistics collector ([#11359](https://github.com/RocketChat/Rocket.Chat/pull/11359)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.66.1 +`2018-07-04 · 1 🚀 · 5 🐛 · 6 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### 🚀 Improvements + + +- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254)) + +### 🐛 Bug fixes + + +- Livestream muted when audio only option was enabled ([#11267](https://github.com/RocketChat/Rocket.Chat/pull/11267) by [@gdelavald](https://github.com/gdelavald)) + +- Notification preferences being lost when switching view mode ([#11295](https://github.com/RocketChat/Rocket.Chat/pull/11295)) + +- Outgoing integrations were stopping the oplog tailing sometimes ([#11333](https://github.com/RocketChat/Rocket.Chat/pull/11333)) + +- SAML attributes with periods are not properly read. ([#11315](https://github.com/RocketChat/Rocket.Chat/pull/11315) by [@Hudell](https://github.com/Hudell)) + +- Some updates were returning errors when based on queries with position operators ([#11335](https://github.com/RocketChat/Rocket.Chat/pull/11335)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@gdelavald](https://github.com/gdelavald) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.66.0 +`2018-06-27 · 1 ️️️⚠️ · 23 🎉 · 3 🚀 · 59 🐛 · 47 🔍 · 45 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.3` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- Always remove the field `services` from user data responses in REST API ([#10799](https://github.com/RocketChat/Rocket.Chat/pull/10799)) + +### 🎉 New features + + +- Add input to set time for avatar cache control ([#10958](https://github.com/RocketChat/Rocket.Chat/pull/10958)) + +- Add prometheus port config ([#11115](https://github.com/RocketChat/Rocket.Chat/pull/11115) by [@brylie](https://github.com/brylie) & [@stuartpb](https://github.com/stuartpb) & [@thaiphv](https://github.com/thaiphv)) + +- Button to remove closed LiveChat rooms ([#10301](https://github.com/RocketChat/Rocket.Chat/pull/10301)) + +- Changes all 'mergeChannels' to 'groupByType'. ([#10055](https://github.com/RocketChat/Rocket.Chat/pull/10055) by [@mikaelmello](https://github.com/mikaelmello)) + +- Command /hide to hide channels ([#10727](https://github.com/RocketChat/Rocket.Chat/pull/10727) by [@mikaelmello](https://github.com/mikaelmello)) + +- Custom login wallpapers ([#11025](https://github.com/RocketChat/Rocket.Chat/pull/11025) by [@vynmera](https://github.com/vynmera)) + +- Direct Reply: separate Reply-To email from account username field ([#10988](https://github.com/RocketChat/Rocket.Chat/pull/10988) by [@pkgodara](https://github.com/pkgodara)) + +- Disconnect users from websocket when away from the login screen for 10min ([#11086](https://github.com/RocketChat/Rocket.Chat/pull/11086)) + +- Do not wait method calls response on websocket before next method call ([#11087](https://github.com/RocketChat/Rocket.Chat/pull/11087)) + +- Don't ask me again checkbox on hide room modal ([#10973](https://github.com/RocketChat/Rocket.Chat/pull/10973) by [@karlprieb](https://github.com/karlprieb)) + +- Make supplying an AWS access key and secret optional for S3 uploads ([#10673](https://github.com/RocketChat/Rocket.Chat/pull/10673) by [@saplla](https://github.com/saplla)) + +- Option to trace Methods and Subscription calls ([#11085](https://github.com/RocketChat/Rocket.Chat/pull/11085)) + +- Reduce the amount of DDP API calls on login screen ([#11083](https://github.com/RocketChat/Rocket.Chat/pull/11083)) + +- Replace variable 'mergeChannels' with 'groupByType'. ([#10954](https://github.com/RocketChat/Rocket.Chat/pull/10954) by [@mikaelmello](https://github.com/mikaelmello)) + +- REST API endpoint `channels.setDefault` ([#10941](https://github.com/RocketChat/Rocket.Chat/pull/10941) by [@vynmera](https://github.com/vynmera)) + +- REST API endpoints `permissions.list` and `permissions.update`. Deprecated endpoint `permissions` ([#10975](https://github.com/RocketChat/Rocket.Chat/pull/10975) by [@vynmera](https://github.com/vynmera)) + +- Send LiveChat visitor navigation history as messages ([#10091](https://github.com/RocketChat/Rocket.Chat/pull/10091)) + +- Set Document Domain property in IFrame ([#9751](https://github.com/RocketChat/Rocket.Chat/pull/9751) by [@kb0304](https://github.com/kb0304)) + +- Support for dynamic slack and rocket.chat channels ([#10205](https://github.com/RocketChat/Rocket.Chat/pull/10205) by [@Hudell](https://github.com/Hudell) & [@kable-wilmoth](https://github.com/kable-wilmoth)) + +- Update katex to v0.9.0 ([#8402](https://github.com/RocketChat/Rocket.Chat/pull/8402) by [@pitamar](https://github.com/pitamar)) + +- Update WeDeploy deployment ([#10841](https://github.com/RocketChat/Rocket.Chat/pull/10841) by [@jonnilundy](https://github.com/jonnilundy)) + +- WebDAV(Nextcloud/ownCloud) Storage Server Option ([#11027](https://github.com/RocketChat/Rocket.Chat/pull/11027) by [@karakayasemi](https://github.com/karakayasemi)) + +- Youtube Broadcasting ([#10127](https://github.com/RocketChat/Rocket.Chat/pull/10127) by [@gdelavald](https://github.com/gdelavald)) + +### 🚀 Improvements + + +- Listing of apps in the admin page ([#11166](https://github.com/RocketChat/Rocket.Chat/pull/11166) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- UI design for Tables and tabs component on Directory ([#11026](https://github.com/RocketChat/Rocket.Chat/pull/11026) by [@karlprieb](https://github.com/karlprieb)) + +- User mentions ([#11001](https://github.com/RocketChat/Rocket.Chat/pull/11001) by [@vynmera](https://github.com/vynmera)) + +### 🐛 Bug fixes + + +- "blank messages" on iOS < 11 ([#11221](https://github.com/RocketChat/Rocket.Chat/pull/11221)) + +- "blank" screen on iOS < 11 ([#11199](https://github.com/RocketChat/Rocket.Chat/pull/11199)) + +- /groups.invite not allow a user to invite even with permission ([#11010](https://github.com/RocketChat/Rocket.Chat/pull/11010) by [@Hudell](https://github.com/Hudell)) + +- Add parameter to REST chat.react endpoint, to make it work like a setter ([#10447](https://github.com/RocketChat/Rocket.Chat/pull/10447)) + +- Allow inviting livechat managers to the same LiveChat room ([#10956](https://github.com/RocketChat/Rocket.Chat/pull/10956)) + +- Application crashing on startup when trying to log errors to `exceptions` channel ([#10934](https://github.com/RocketChat/Rocket.Chat/pull/10934)) + +- Armhf snap build ([#11268](https://github.com/RocketChat/Rocket.Chat/pull/11268)) + +- avoid send presence without login ([#11074](https://github.com/RocketChat/Rocket.Chat/pull/11074)) + +- Build for Sandstorm missing dependence for capnp ([#11056](https://github.com/RocketChat/Rocket.Chat/pull/11056) by [@peterlee0127](https://github.com/peterlee0127)) + +- Can't access the `/account/profile` ([#11089](https://github.com/RocketChat/Rocket.Chat/pull/11089)) + +- Cannot read property 'debug' of undefined when trying to use REST API ([#10805](https://github.com/RocketChat/Rocket.Chat/pull/10805) by [@haffla](https://github.com/haffla)) + +- Confirm password on set new password user profile ([#11095](https://github.com/RocketChat/Rocket.Chat/pull/11095)) + +- Default selected language ([#11150](https://github.com/RocketChat/Rocket.Chat/pull/11150)) + +- Exception in metrics generation ([#11072](https://github.com/RocketChat/Rocket.Chat/pull/11072)) + +- Exception thrown on avatar validation ([#11009](https://github.com/RocketChat/Rocket.Chat/pull/11009) by [@Hudell](https://github.com/Hudell)) + +- Failure to download user data ([#11190](https://github.com/RocketChat/Rocket.Chat/pull/11190) by [@Hudell](https://github.com/Hudell)) + +- flex-tab icons missing ([#11049](https://github.com/RocketChat/Rocket.Chat/pull/11049)) + +- Generated random password visible to the user ([#11096](https://github.com/RocketChat/Rocket.Chat/pull/11096)) + +- HipChat Cloud import fails to import rooms ([#11188](https://github.com/RocketChat/Rocket.Chat/pull/11188) by [@Hudell](https://github.com/Hudell)) + +- Icons svg xml structure ([#10771](https://github.com/RocketChat/Rocket.Chat/pull/10771) by [@timkinnane](https://github.com/timkinnane)) + +- Idle time limit wasn’t working as expected ([#11084](https://github.com/RocketChat/Rocket.Chat/pull/11084)) + +- Image lazy load was breaking attachments ([#10904](https://github.com/RocketChat/Rocket.Chat/pull/10904)) + +- Incomplete email notification link ([#10928](https://github.com/RocketChat/Rocket.Chat/pull/10928)) + +- Internal Server Error on first login with CAS integration ([#11257](https://github.com/RocketChat/Rocket.Chat/pull/11257) by [@Hudell](https://github.com/Hudell)) + +- LDAP was accepting login with empty passwords for certain AD configurations ([#11264](https://github.com/RocketChat/Rocket.Chat/pull/11264)) + +- Leave room wasn't working as expected ([#10851](https://github.com/RocketChat/Rocket.Chat/pull/10851)) + +- Link previews not being removed from messages after removed on editing ([#11063](https://github.com/RocketChat/Rocket.Chat/pull/11063)) + +- LiveChat appearance changes not being saved ([#11111](https://github.com/RocketChat/Rocket.Chat/pull/11111)) + +- Livechat icon with status ([#11177](https://github.com/RocketChat/Rocket.Chat/pull/11177)) + +- Livechat visitor not being prompted for transcript when himself is closing the chat ([#10767](https://github.com/RocketChat/Rocket.Chat/pull/10767)) + +- Message_AllowedMaxSize fails for emoji sequences ([#10431](https://github.com/RocketChat/Rocket.Chat/pull/10431) by [@c0dzilla](https://github.com/c0dzilla)) + +- Missing language constants ([#11173](https://github.com/RocketChat/Rocket.Chat/pull/11173) by [@rw4lll](https://github.com/rw4lll)) + +- Notification not working for group mentions and not respecting ignored users ([#11024](https://github.com/RocketChat/Rocket.Chat/pull/11024)) + +- open conversation from room info ([#11050](https://github.com/RocketChat/Rocket.Chat/pull/11050)) + +- Overlapping of search text and cancel search icon (X) ([#10294](https://github.com/RocketChat/Rocket.Chat/pull/10294) by [@taeven](https://github.com/taeven)) + +- Popover position ([#11113](https://github.com/RocketChat/Rocket.Chat/pull/11113)) + +- Preview of large images not resizing to fit the area and having scrollbars ([#10998](https://github.com/RocketChat/Rocket.Chat/pull/10998) by [@vynmera](https://github.com/vynmera)) + +- Reaction Toggle was not working when omitting the last parameter from the API (DDP and REST) ([#11276](https://github.com/RocketChat/Rocket.Chat/pull/11276) by [@Hudell](https://github.com/Hudell)) + +- Remove failed upload messages when switching rooms ([#11132](https://github.com/RocketChat/Rocket.Chat/pull/11132)) + +- Remove outdated 2FA warning for mobile clients ([#10916](https://github.com/RocketChat/Rocket.Chat/pull/10916) by [@cardoso](https://github.com/cardoso)) + +- remove sidebar on embedded view ([#11183](https://github.com/RocketChat/Rocket.Chat/pull/11183)) + +- Rendering of emails and mentions in messages ([#11165](https://github.com/RocketChat/Rocket.Chat/pull/11165)) + +- REST API: Add more test cases for `/login` ([#10999](https://github.com/RocketChat/Rocket.Chat/pull/10999)) + +- REST endpoint `users.updateOwnBasicInfo` was not returning errors for invalid names and trying to save custom fields when empty ([#11204](https://github.com/RocketChat/Rocket.Chat/pull/11204)) + +- Room creation error due absence of subscriptions ([#11178](https://github.com/RocketChat/Rocket.Chat/pull/11178)) + +- Rooms list sorting by activity multiple re-renders and case sensitive sorting alphabetically ([#9959](https://github.com/RocketChat/Rocket.Chat/pull/9959) by [@JoseRenan](https://github.com/JoseRenan) & [@karlprieb](https://github.com/karlprieb)) + +- set-toolbar-items postMessage ([#11109](https://github.com/RocketChat/Rocket.Chat/pull/11109)) + +- Some typos in the error message names ([#11136](https://github.com/RocketChat/Rocket.Chat/pull/11136) by [@vynmera](https://github.com/vynmera)) + +- Strange msg when setting room announcement, topic or description to be empty ([#11012](https://github.com/RocketChat/Rocket.Chat/pull/11012) by [@vynmera](https://github.com/vynmera)) + +- The process was freezing in some cases when HTTP calls exceeds timeout on integrations ([#11253](https://github.com/RocketChat/Rocket.Chat/pull/11253)) + +- title and value attachments are optionals on sendMessage method ([#11021](https://github.com/RocketChat/Rocket.Chat/pull/11021)) + +- Update capnproto dependence for Sandstorm Build ([#11263](https://github.com/RocketChat/Rocket.Chat/pull/11263) by [@peterlee0127](https://github.com/peterlee0127)) + +- Update ja.i18n.json ([#11020](https://github.com/RocketChat/Rocket.Chat/pull/11020) by [@Hudell](https://github.com/Hudell) & [@noobbbbb](https://github.com/noobbbbb)) + +- Update Sandstorm build config ([#10867](https://github.com/RocketChat/Rocket.Chat/pull/10867) by [@ocdtrekkie](https://github.com/ocdtrekkie)) + +- Users model was not receiving options ([#11129](https://github.com/RocketChat/Rocket.Chat/pull/11129)) + +- Various lang fixes [RU] ([#10095](https://github.com/RocketChat/Rocket.Chat/pull/10095) by [@rw4lll](https://github.com/rw4lll)) + +- Wordpress oauth configuration not loading properly ([#11187](https://github.com/RocketChat/Rocket.Chat/pull/11187) by [@Hudell](https://github.com/Hudell)) + +- Wordpress OAuth not providing enough info to log in ([#11152](https://github.com/RocketChat/Rocket.Chat/pull/11152) by [@Hudell](https://github.com/Hudell)) + +- Wrong font-family order ([#11191](https://github.com/RocketChat/Rocket.Chat/pull/11191) by [@Hudell](https://github.com/Hudell) & [@myfonj](https://github.com/myfonj)) + +
+🔍 Minor changes + + +- [FIX Readme] Nodejs + Python version spicifications ([#11181](https://github.com/RocketChat/Rocket.Chat/pull/11181) by [@mahdiyari](https://github.com/mahdiyari)) + +- Add Dockerfile with MongoDB ([#10971](https://github.com/RocketChat/Rocket.Chat/pull/10971)) + +- Add verification to make sure the user exists in REST insert object helper ([#11008](https://github.com/RocketChat/Rocket.Chat/pull/11008)) + +- Build Docker image on CI ([#11076](https://github.com/RocketChat/Rocket.Chat/pull/11076)) + +- Changed 'confirm password' placeholder text on user registration form ([#9969](https://github.com/RocketChat/Rocket.Chat/pull/9969) by [@kumarnitj](https://github.com/kumarnitj)) + +- Develop sync commits ([#10909](https://github.com/RocketChat/Rocket.Chat/pull/10909) by [@nsuchy](https://github.com/nsuchy) & [@rafaelks](https://github.com/rafaelks)) + +- Develop sync2 ([#10908](https://github.com/RocketChat/Rocket.Chat/pull/10908) by [@nsuchy](https://github.com/nsuchy) & [@rafaelks](https://github.com/rafaelks)) + +- Fix Docker image build on tags ([#11271](https://github.com/RocketChat/Rocket.Chat/pull/11271)) + +- Fix Docker image for develop commits ([#11093](https://github.com/RocketChat/Rocket.Chat/pull/11093)) + +- Fix PR Docker image creation by splitting in two build jobs ([#11107](https://github.com/RocketChat/Rocket.Chat/pull/11107)) + +- Fix readme typo ([#5](https://github.com/RocketChat/Rocket.Chat/pull/5) by [@filipealva](https://github.com/filipealva)) + +- IRC Federation: RFC2813 implementation (ngIRCd) ([#10113](https://github.com/RocketChat/Rocket.Chat/pull/10113) by [@Hudell](https://github.com/Hudell) & [@cpitman](https://github.com/cpitman) & [@lindoelio](https://github.com/lindoelio)) + +- LingoHub based on develop ([#11208](https://github.com/RocketChat/Rocket.Chat/pull/11208)) + +- LingoHub based on develop ([#11062](https://github.com/RocketChat/Rocket.Chat/pull/11062)) + +- LingoHub based on develop ([#11054](https://github.com/RocketChat/Rocket.Chat/pull/11054)) + +- LingoHub based on develop ([#11053](https://github.com/RocketChat/Rocket.Chat/pull/11053)) + +- LingoHub based on develop ([#11051](https://github.com/RocketChat/Rocket.Chat/pull/11051)) + +- LingoHub based on develop ([#11045](https://github.com/RocketChat/Rocket.Chat/pull/11045)) + +- LingoHub based on develop ([#11044](https://github.com/RocketChat/Rocket.Chat/pull/11044)) + +- LingoHub based on develop ([#11043](https://github.com/RocketChat/Rocket.Chat/pull/11043)) + +- LingoHub based on develop ([#11042](https://github.com/RocketChat/Rocket.Chat/pull/11042)) + +- LingoHub based on develop ([#11039](https://github.com/RocketChat/Rocket.Chat/pull/11039)) + +- LingoHub based on develop ([#11035](https://github.com/RocketChat/Rocket.Chat/pull/11035)) + +- LingoHub based on develop ([#11246](https://github.com/RocketChat/Rocket.Chat/pull/11246)) + +- Merge master into develop & Set version to 0.66.0-develop ([#11277](https://github.com/RocketChat/Rocket.Chat/pull/11277) by [@Hudell](https://github.com/Hudell) & [@brylie](https://github.com/brylie) & [@stuartpb](https://github.com/stuartpb)) + +- Merge master into develop & Set version to 0.66.0-develop ([#10903](https://github.com/RocketChat/Rocket.Chat/pull/10903) by [@nsuchy](https://github.com/nsuchy) & [@rafaelks](https://github.com/rafaelks)) + +- New history source format & add Node and NPM versions ([#11237](https://github.com/RocketChat/Rocket.Chat/pull/11237)) + +- NPM Dependencies Update ([#10913](https://github.com/RocketChat/Rocket.Chat/pull/10913)) + +- Regression: check username or usersCount on browseChannels ([#11216](https://github.com/RocketChat/Rocket.Chat/pull/11216)) + +- Regression: Directory css ([#11206](https://github.com/RocketChat/Rocket.Chat/pull/11206) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Directory sort users, fix null results, text for empty results ([#11224](https://github.com/RocketChat/Rocket.Chat/pull/11224)) + +- Regression: Directory user table infinite scroll doesn't working ([#11200](https://github.com/RocketChat/Rocket.Chat/pull/11200) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Fix directory table loading ([#11223](https://github.com/RocketChat/Rocket.Chat/pull/11223) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Fix latest and release-candidate docker images building ([#11215](https://github.com/RocketChat/Rocket.Chat/pull/11215)) + +- Regression: Prometheus was not being enabled in some cases ([#11249](https://github.com/RocketChat/Rocket.Chat/pull/11249)) + +- Regression: Sending message with a mention is not showing to sender ([#11211](https://github.com/RocketChat/Rocket.Chat/pull/11211)) + +- Regression: sidebar sorting was being wrong in some cases where the rooms records were returned before the subscriptions ([#11273](https://github.com/RocketChat/Rocket.Chat/pull/11273)) + +- Regression: Skip operations if no actions on livechat migration ([#11232](https://github.com/RocketChat/Rocket.Chat/pull/11232)) + +- Regression: sorting direct message by asc on favorites group ([#11090](https://github.com/RocketChat/Rocket.Chat/pull/11090)) + +- Remove wrong and not needed time unit ([#10807](https://github.com/RocketChat/Rocket.Chat/pull/10807) by [@cliffparnitzky](https://github.com/cliffparnitzky)) + +- Renaming username.username to username.value for clarity ([#10986](https://github.com/RocketChat/Rocket.Chat/pull/10986)) + +- Speed up the build time by removing JSON Minify from i18n package ([#11097](https://github.com/RocketChat/Rocket.Chat/pull/11097)) + +- Update Documentation: README.md ([#10207](https://github.com/RocketChat/Rocket.Chat/pull/10207) by [@rakhi2104](https://github.com/rakhi2104)) + +- Update issue templates ([#11070](https://github.com/RocketChat/Rocket.Chat/pull/11070)) + +- update meteor to 1.6.1 for sandstorm build ([#10131](https://github.com/RocketChat/Rocket.Chat/pull/10131) by [@peterlee0127](https://github.com/peterlee0127)) + +- Update Meteor to 1.6.1.3 ([#11247](https://github.com/RocketChat/Rocket.Chat/pull/11247)) + +- Update v126.js ([#11103](https://github.com/RocketChat/Rocket.Chat/pull/11103)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@JoseRenan](https://github.com/JoseRenan) +- [@brylie](https://github.com/brylie) +- [@c0dzilla](https://github.com/c0dzilla) +- [@cardoso](https://github.com/cardoso) +- [@cliffparnitzky](https://github.com/cliffparnitzky) +- [@cpitman](https://github.com/cpitman) +- [@filipealva](https://github.com/filipealva) +- [@gdelavald](https://github.com/gdelavald) +- [@haffla](https://github.com/haffla) +- [@jonnilundy](https://github.com/jonnilundy) +- [@kable-wilmoth](https://github.com/kable-wilmoth) +- [@karakayasemi](https://github.com/karakayasemi) +- [@karlprieb](https://github.com/karlprieb) +- [@kb0304](https://github.com/kb0304) +- [@kumarnitj](https://github.com/kumarnitj) +- [@lindoelio](https://github.com/lindoelio) +- [@mahdiyari](https://github.com/mahdiyari) +- [@mikaelmello](https://github.com/mikaelmello) +- [@myfonj](https://github.com/myfonj) +- [@noobbbbb](https://github.com/noobbbbb) +- [@nsuchy](https://github.com/nsuchy) +- [@ocdtrekkie](https://github.com/ocdtrekkie) +- [@peterlee0127](https://github.com/peterlee0127) +- [@pitamar](https://github.com/pitamar) +- [@pkgodara](https://github.com/pkgodara) +- [@rafaelks](https://github.com/rafaelks) +- [@rakhi2104](https://github.com/rakhi2104) +- [@rw4lll](https://github.com/rw4lll) +- [@saplla](https://github.com/saplla) +- [@stuartpb](https://github.com/stuartpb) +- [@taeven](https://github.com/taeven) +- [@thaiphv](https://github.com/thaiphv) +- [@timkinnane](https://github.com/timkinnane) +- [@vynmera](https://github.com/vynmera) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) + +# 0.65.2 +`2018-06-16 · 1 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- i18n - add semantic markup ([#9534](https://github.com/RocketChat/Rocket.Chat/pull/9534) by [@brylie](https://github.com/brylie)) + +
+🔍 Minor changes + + +- Release 0.65.1 ([#10947](https://github.com/RocketChat/Rocket.Chat/pull/10947)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@brylie](https://github.com/brylie) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@engelgabriel](https://github.com/engelgabriel) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.65.1 +`2018-05-30 · 5 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Application crashing on startup when trying to log errors to `exceptions` channel ([#10934](https://github.com/RocketChat/Rocket.Chat/pull/10934)) + +- Image lazy load was breaking attachments ([#10904](https://github.com/RocketChat/Rocket.Chat/pull/10904)) + +- Incomplete email notification link ([#10928](https://github.com/RocketChat/Rocket.Chat/pull/10928)) + +- Leave room wasn't working as expected ([#10851](https://github.com/RocketChat/Rocket.Chat/pull/10851)) + +- Livechat not loading ([#10940](https://github.com/RocketChat/Rocket.Chat/pull/10940)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.65.0 +`2018-05-28 · 17 🎉 · 24 🐛 · 30 🔍 · 25 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +### 🎉 New features + + +- Add more options for Wordpress OAuth configuration ([#10724](https://github.com/RocketChat/Rocket.Chat/pull/10724) by [@Hudell](https://github.com/Hudell)) + +- Add permission `view-broadcast-member-list` ([#10753](https://github.com/RocketChat/Rocket.Chat/pull/10753) by [@cardoso](https://github.com/cardoso)) + +- Add REST API endpoint `users.getUsernameSuggestion` to get username suggestion ([#10702](https://github.com/RocketChat/Rocket.Chat/pull/10702)) + +- Add REST API endpoints `channels.counters`, `groups.counters and `im.counters` ([#9679](https://github.com/RocketChat/Rocket.Chat/pull/9679) by [@xbolshe](https://github.com/xbolshe)) + +- Add REST API endpoints `channels.setCustomFields` and `groups.setCustomFields` ([#9733](https://github.com/RocketChat/Rocket.Chat/pull/9733) by [@xbolshe](https://github.com/xbolshe)) + +- Add REST endpoint `subscriptions.unread` to mark messages as unread ([#10778](https://github.com/RocketChat/Rocket.Chat/pull/10778)) + +- Add REST endpoints `channels.roles` & `groups.roles` ([#10607](https://github.com/RocketChat/Rocket.Chat/pull/10607) by [@cardoso](https://github.com/cardoso) & [@rafaelks](https://github.com/rafaelks)) + +- Implement a local password policy ([#9857](https://github.com/RocketChat/Rocket.Chat/pull/9857)) + +- Improvements to notifications logic ([#10686](https://github.com/RocketChat/Rocket.Chat/pull/10686)) + +- Lazy load image attachments ([#10608](https://github.com/RocketChat/Rocket.Chat/pull/10608) by [@karlprieb](https://github.com/karlprieb)) + +- Now is possible to access files using header authorization (`x-user-id` and `x-auth-token`) ([#10741](https://github.com/RocketChat/Rocket.Chat/pull/10741)) + +- Options to enable/disable each Livechat registration form field ([#10584](https://github.com/RocketChat/Rocket.Chat/pull/10584)) + +- REST API endpoint `/me` now returns all the settings, including the default values ([#10662](https://github.com/RocketChat/Rocket.Chat/pull/10662)) + +- REST API endpoint `settings` now allow set colors and trigger actions ([#10488](https://github.com/RocketChat/Rocket.Chat/pull/10488) by [@ThomasRoehl](https://github.com/ThomasRoehl)) + +- Return the result of the `/me` endpoint within the result of the `/login` endpoint ([#10677](https://github.com/RocketChat/Rocket.Chat/pull/10677)) + +- Setup Wizard ([#10523](https://github.com/RocketChat/Rocket.Chat/pull/10523) by [@karlprieb](https://github.com/karlprieb)) + +- View pinned message's attachment ([#10214](https://github.com/RocketChat/Rocket.Chat/pull/10214) by [@c0dzilla](https://github.com/c0dzilla) & [@karlprieb](https://github.com/karlprieb)) + +### 🐛 Bug fixes + + +- Broadcast channels were showing reply button for deleted messages and generating wrong reply links some times ([#10835](https://github.com/RocketChat/Rocket.Chat/pull/10835)) + +- Cancel button wasn't working while uploading file ([#10715](https://github.com/RocketChat/Rocket.Chat/pull/10715) by [@Mr-Gryphon](https://github.com/Mr-Gryphon) & [@karlprieb](https://github.com/karlprieb)) + +- Channel owner was being set as muted when creating a read-only channel ([#10665](https://github.com/RocketChat/Rocket.Chat/pull/10665)) + +- Enabling `Collapse Embedded Media by Default` was hiding replies and quotes ([#10427](https://github.com/RocketChat/Rocket.Chat/pull/10427) by [@c0dzilla](https://github.com/c0dzilla)) + +- Horizontally align items in preview message ([#10883](https://github.com/RocketChat/Rocket.Chat/pull/10883) by [@gdelavald](https://github.com/gdelavald)) + +- Improve desktop notification formatting ([#10445](https://github.com/RocketChat/Rocket.Chat/pull/10445) by [@Sameesunkaria](https://github.com/Sameesunkaria)) + +- Internal Error when requesting user data download ([#10837](https://github.com/RocketChat/Rocket.Chat/pull/10837) by [@Hudell](https://github.com/Hudell)) + +- Layout badge cutting on unread messages for long names ([#10846](https://github.com/RocketChat/Rocket.Chat/pull/10846) by [@kos4live](https://github.com/kos4live)) + +- Livechat managers were not being able to send messages in some cases ([#10663](https://github.com/RocketChat/Rocket.Chat/pull/10663)) + +- Livechat settings not appearing correctly ([#10612](https://github.com/RocketChat/Rocket.Chat/pull/10612)) + +- Message box emoji icon was flickering when typing a text ([#10678](https://github.com/RocketChat/Rocket.Chat/pull/10678) by [@gdelavald](https://github.com/gdelavald)) + +- Missing attachment description when Rocket.Chat Apps were enabled ([#10705](https://github.com/RocketChat/Rocket.Chat/pull/10705) by [@Hudell](https://github.com/Hudell)) + +- Missing option to disable/enable System Messages ([#10704](https://github.com/RocketChat/Rocket.Chat/pull/10704)) + +- Missing pagination fields in the response of REST /directory endpoint ([#10840](https://github.com/RocketChat/Rocket.Chat/pull/10840)) + +- Not escaping special chars on mentions ([#10793](https://github.com/RocketChat/Rocket.Chat/pull/10793) by [@erhan-](https://github.com/erhan-)) + +- Private settings were not being cleared from client cache in some cases ([#10625](https://github.com/RocketChat/Rocket.Chat/pull/10625) by [@Hudell](https://github.com/Hudell)) + +- Regression: Empty content on announcement modal ([#10733](https://github.com/RocketChat/Rocket.Chat/pull/10733) by [@gdelavald](https://github.com/gdelavald)) + +- Remove outdated translations of Internal Hubot's description of Scripts to Load that were pointing to a non existent address ([#10448](https://github.com/RocketChat/Rocket.Chat/pull/10448) by [@Hudell](https://github.com/Hudell)) + +- SAML wasn't working correctly when running multiple instances ([#10681](https://github.com/RocketChat/Rocket.Chat/pull/10681) by [@Hudell](https://github.com/Hudell)) + +- Send a message when muted returns inconsistent result in chat.sendMessage ([#10720](https://github.com/RocketChat/Rocket.Chat/pull/10720)) + +- Slack-Bridge bug when migrating to 0.64.1 ([#10875](https://github.com/RocketChat/Rocket.Chat/pull/10875)) + +- The first users was not set as admin some times ([#10878](https://github.com/RocketChat/Rocket.Chat/pull/10878)) + +- UI was not disabling the actions when users has had no permissions to create channels or add users to rooms ([#10564](https://github.com/RocketChat/Rocket.Chat/pull/10564) by [@cfunkles](https://github.com/cfunkles) & [@chuckAtCataworx](https://github.com/chuckAtCataworx)) + +- User's preference `Unread on Top` wasn't working for LiveChat rooms ([#10734](https://github.com/RocketChat/Rocket.Chat/pull/10734)) + +
+🔍 Minor changes + + +- Add `npm run postinstall` into example build script ([#10524](https://github.com/RocketChat/Rocket.Chat/pull/10524) by [@peccu](https://github.com/peccu)) + +- Add badge back to push notifications ([#10779](https://github.com/RocketChat/Rocket.Chat/pull/10779)) + +- Add setting and expose prometheus on port 9100 ([#10766](https://github.com/RocketChat/Rocket.Chat/pull/10766)) + +- Apps: Command previews are clickable & Apps Framework is controlled via a setting ([#10853](https://github.com/RocketChat/Rocket.Chat/pull/10853)) + +- Apps: Command Previews, Message and Room Removal Events ([#10822](https://github.com/RocketChat/Rocket.Chat/pull/10822)) + +- Better metric for notifications ([#10786](https://github.com/RocketChat/Rocket.Chat/pull/10786)) + +- Correct links in README file ([#10674](https://github.com/RocketChat/Rocket.Chat/pull/10674) by [@winterstefan](https://github.com/winterstefan)) + +- Develop sync ([#10815](https://github.com/RocketChat/Rocket.Chat/pull/10815) by [@nsuchy](https://github.com/nsuchy) & [@rafaelks](https://github.com/rafaelks)) + +- Fix: Clarify the wording of the release issue template ([#10520](https://github.com/RocketChat/Rocket.Chat/pull/10520)) + +- Fix: Manage apps layout was a bit confuse ([#10882](https://github.com/RocketChat/Rocket.Chat/pull/10882) by [@gdelavald](https://github.com/gdelavald)) + +- Fix: Regression in REST API endpoint `/me` ([#10833](https://github.com/RocketChat/Rocket.Chat/pull/10833)) + +- Fix: Regression Lazyload fix shuffle avatars ([#10887](https://github.com/RocketChat/Rocket.Chat/pull/10887)) + +- Fix: Regression on users avatar in admin pages ([#10836](https://github.com/RocketChat/Rocket.Chat/pull/10836)) + +- Fix: typo on error message for push token API ([#10857](https://github.com/RocketChat/Rocket.Chat/pull/10857) by [@rafaelks](https://github.com/rafaelks)) + +- Improvement to push notifications on direct messages ([#10788](https://github.com/RocketChat/Rocket.Chat/pull/10788)) + +- LingoHub based on develop ([#10691](https://github.com/RocketChat/Rocket.Chat/pull/10691)) + +- LingoHub based on develop ([#10886](https://github.com/RocketChat/Rocket.Chat/pull/10886)) + +- Major dependencies update ([#10661](https://github.com/RocketChat/Rocket.Chat/pull/10661)) + +- More improvements on send notifications logic ([#10736](https://github.com/RocketChat/Rocket.Chat/pull/10736)) + +- Prevent setup wizard redirects ([#10811](https://github.com/RocketChat/Rocket.Chat/pull/10811)) + +- Prometheus: Add metric to track hooks time ([#10798](https://github.com/RocketChat/Rocket.Chat/pull/10798)) + +- Prometheus: Fix notification metric ([#10803](https://github.com/RocketChat/Rocket.Chat/pull/10803)) + +- Prometheus: Improve metric names ([#10789](https://github.com/RocketChat/Rocket.Chat/pull/10789)) + +- Regression: Autorun of wizard was not destroyed after completion ([#10802](https://github.com/RocketChat/Rocket.Chat/pull/10802)) + +- Regression: Fix email notification preference not showing correct selected value ([#10847](https://github.com/RocketChat/Rocket.Chat/pull/10847)) + +- Regression: Fix notifications for direct messages ([#10760](https://github.com/RocketChat/Rocket.Chat/pull/10760)) + +- Regression: Fix wrong wizard field name ([#10804](https://github.com/RocketChat/Rocket.Chat/pull/10804)) + +- Regression: Make settings `Site_Name` and `Language` public again ([#10848](https://github.com/RocketChat/Rocket.Chat/pull/10848)) + +- Release 0.65.0 ([#10893](https://github.com/RocketChat/Rocket.Chat/pull/10893) by [@Hudell](https://github.com/Hudell) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) + +- Wizard improvements ([#10776](https://github.com/RocketChat/Rocket.Chat/pull/10776)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@Mr-Gryphon](https://github.com/Mr-Gryphon) +- [@Sameesunkaria](https://github.com/Sameesunkaria) +- [@ThomasRoehl](https://github.com/ThomasRoehl) +- [@c0dzilla](https://github.com/c0dzilla) +- [@cardoso](https://github.com/cardoso) +- [@cfunkles](https://github.com/cfunkles) +- [@chuckAtCataworx](https://github.com/chuckAtCataworx) +- [@erhan-](https://github.com/erhan-) +- [@gdelavald](https://github.com/gdelavald) +- [@karlprieb](https://github.com/karlprieb) +- [@kos4live](https://github.com/kos4live) +- [@nsuchy](https://github.com/nsuchy) +- [@peccu](https://github.com/peccu) +- [@rafaelks](https://github.com/rafaelks) +- [@winterstefan](https://github.com/winterstefan) +- [@xbolshe](https://github.com/xbolshe) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.64.2 +`2018-05-18 · 1 🔍 · 12 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +
+🔍 Minor changes + + +- Release 0.64.2 ([#10812](https://github.com/RocketChat/Rocket.Chat/pull/10812) by [@Hudell](https://github.com/Hudell) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@Sameesunkaria](https://github.com/Sameesunkaria) +- [@cardoso](https://github.com/cardoso) +- [@erhan-](https://github.com/erhan-) +- [@gdelavald](https://github.com/gdelavald) +- [@karlprieb](https://github.com/karlprieb) +- [@peccu](https://github.com/peccu) +- [@winterstefan](https://github.com/winterstefan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.64.1 +`2018-05-03 · 1 🎉 · 2 🐛 · 4 🔍 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +### 🎉 New features + + +- Store the last sent message to show bellow the room's name by default ([#10597](https://github.com/RocketChat/Rocket.Chat/pull/10597)) + +### 🐛 Bug fixes + + +- E-mails were hidden some information ([#10615](https://github.com/RocketChat/Rocket.Chat/pull/10615)) + +- Regression on 0.64.0 was freezing the application when posting some URLs ([#10627](https://github.com/RocketChat/Rocket.Chat/pull/10627)) + +
+🔍 Minor changes + + +- Dependencies update ([#10648](https://github.com/RocketChat/Rocket.Chat/pull/10648)) + +- Regression: Updating an App on multi-instance servers wasn't working ([#10611](https://github.com/RocketChat/Rocket.Chat/pull/10611)) + +- Release 0.64.1 ([#10660](https://github.com/RocketChat/Rocket.Chat/pull/10660) by [@saplla](https://github.com/saplla)) + +- Support passing extra connection options to the Mongo driver ([#10529](https://github.com/RocketChat/Rocket.Chat/pull/10529) by [@saplla](https://github.com/saplla)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@saplla](https://github.com/saplla) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@engelgabriel](https://github.com/engelgabriel) +- [@graywolf336](https://github.com/graywolf336) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.64.0 +`2018-04-28 · 2 ️️️⚠️ · 18 🎉 · 44 🐛 · 31 🔍 · 30 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- The property "settings" is no longer available to regular users via rest api ([#10411](https://github.com/RocketChat/Rocket.Chat/pull/10411)) + +- Validate incoming message schema ([#9922](https://github.com/RocketChat/Rocket.Chat/pull/9922)) + +### 🎉 New features + + +- Add information regarding Zapier and Bots to the integrations page ([#10574](https://github.com/RocketChat/Rocket.Chat/pull/10574)) + +- Add internal API to handle room announcements ([#10396](https://github.com/RocketChat/Rocket.Chat/pull/10396) by [@gdelavald](https://github.com/gdelavald)) + +- Add message preview when quoting another message ([#10437](https://github.com/RocketChat/Rocket.Chat/pull/10437) by [@gdelavald](https://github.com/gdelavald)) + +- Automatically trigger Redhat registry build when tagging new release ([#10414](https://github.com/RocketChat/Rocket.Chat/pull/10414)) + +- Body of the payload on an incoming webhook is included on the request object ([#10259](https://github.com/RocketChat/Rocket.Chat/pull/10259) by [@Hudell](https://github.com/Hudell)) + +- Broadcast Channels ([#9950](https://github.com/RocketChat/Rocket.Chat/pull/9950)) + +- GDPR - Right to access and Data Portability ([#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906) by [@Hudell](https://github.com/Hudell)) + +- Livechat setting to customize ended conversation message ([#10108](https://github.com/RocketChat/Rocket.Chat/pull/10108)) + +- Option to ignore users on channels ([#10517](https://github.com/RocketChat/Rocket.Chat/pull/10517) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- Option to mute group mentions (@all and @here) ([#10502](https://github.com/RocketChat/Rocket.Chat/pull/10502) by [@Hudell](https://github.com/Hudell)) + +- Prevent the browser to autocomplete some setting fields ([#10439](https://github.com/RocketChat/Rocket.Chat/pull/10439) by [@gdelavald](https://github.com/gdelavald)) + +- REST API endpoint `/directory` ([#10442](https://github.com/RocketChat/Rocket.Chat/pull/10442)) + +- REST API endpoint `rooms.favorite` to favorite and unfavorite rooms ([#10342](https://github.com/RocketChat/Rocket.Chat/pull/10342)) + +- REST endpoint to recover forgotten password ([#10371](https://github.com/RocketChat/Rocket.Chat/pull/10371)) + +- REST endpoint to report messages ([#10354](https://github.com/RocketChat/Rocket.Chat/pull/10354)) + +- Search Provider Framework ([#10110](https://github.com/RocketChat/Rocket.Chat/pull/10110) by [@tkurz](https://github.com/tkurz)) + +- Shows user's real name on autocomplete popup ([#10444](https://github.com/RocketChat/Rocket.Chat/pull/10444) by [@gdelavald](https://github.com/gdelavald)) + +- Twilio MMS support for LiveChat integration ([#7964](https://github.com/RocketChat/Rocket.Chat/pull/7964) by [@t3hchipmunk](https://github.com/t3hchipmunk)) + +### 🐛 Bug fixes + + +- "Highlight Words" wasn't working with more than one word ([#10083](https://github.com/RocketChat/Rocket.Chat/pull/10083) by [@gdelavald](https://github.com/gdelavald) & [@nemaniarjun](https://github.com/nemaniarjun)) + +- "Idle Time Limit" using milliseconds instead of seconds ([#9824](https://github.com/RocketChat/Rocket.Chat/pull/9824) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Add user object to responses in /*.files Rest endpoints ([#10480](https://github.com/RocketChat/Rocket.Chat/pull/10480)) + +- Autocomplete list when inviting a user was partial hidden ([#10409](https://github.com/RocketChat/Rocket.Chat/pull/10409) by [@karlprieb](https://github.com/karlprieb)) + +- Button on user info contextual bar scrolling with the content ([#10358](https://github.com/RocketChat/Rocket.Chat/pull/10358) by [@karlprieb](https://github.com/karlprieb) & [@okaybroda](https://github.com/okaybroda)) + +- Button to delete rooms by the owners wasn't appearing ([#10438](https://github.com/RocketChat/Rocket.Chat/pull/10438) by [@karlprieb](https://github.com/karlprieb)) + +- Custom fields was misaligned in registration form ([#10463](https://github.com/RocketChat/Rocket.Chat/pull/10463) by [@dschuan](https://github.com/dschuan)) + +- Directory sort and column sizes were wrong ([#10403](https://github.com/RocketChat/Rocket.Chat/pull/10403) by [@karlprieb](https://github.com/karlprieb)) + +- Dropdown elements were using old styles ([#10482](https://github.com/RocketChat/Rocket.Chat/pull/10482) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Empty panel after changing a user's username ([#10404](https://github.com/RocketChat/Rocket.Chat/pull/10404) by [@Hudell](https://github.com/Hudell)) + +- Error messages weren't been displayed when email verification fails ([#10446](https://github.com/RocketChat/Rocket.Chat/pull/10446) by [@Hudell](https://github.com/Hudell) & [@karlprieb](https://github.com/karlprieb)) + +- GitLab authentication scope was too open, reduced to read only access ([#10225](https://github.com/RocketChat/Rocket.Chat/pull/10225) by [@rafaelks](https://github.com/rafaelks)) + +- Incoming integrations being able to trigger an empty message with a GET ([#9576](https://github.com/RocketChat/Rocket.Chat/pull/9576)) + +- Integrations with room data not having the usernames filled in ([#10576](https://github.com/RocketChat/Rocket.Chat/pull/10576)) + +- Links being embedded inside of blockquotes ([#10496](https://github.com/RocketChat/Rocket.Chat/pull/10496) by [@gdelavald](https://github.com/gdelavald)) + +- Livechat desktop notifications not being displayed ([#10221](https://github.com/RocketChat/Rocket.Chat/pull/10221)) + +- Livechat translation files being ignored ([#10369](https://github.com/RocketChat/Rocket.Chat/pull/10369)) + +- Member list search with no results ([#10599](https://github.com/RocketChat/Rocket.Chat/pull/10599)) + +- Message view mode setting was missing at user's preferences ([#10395](https://github.com/RocketChat/Rocket.Chat/pull/10395) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@karlprieb](https://github.com/karlprieb)) + +- Messages was grouping wrong some times when server is slow ([#10472](https://github.com/RocketChat/Rocket.Chat/pull/10472) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- Missing "Administration" menu for user with manage-emoji permission ([#10171](https://github.com/RocketChat/Rocket.Chat/pull/10171) by [@c0dzilla](https://github.com/c0dzilla) & [@karlprieb](https://github.com/karlprieb)) + +- Missing "Administration" menu for users with some administration permissions ([#10551](https://github.com/RocketChat/Rocket.Chat/pull/10551) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Missing i18n translation key for "Unread" ([#10387](https://github.com/RocketChat/Rocket.Chat/pull/10387) by [@Hudell](https://github.com/Hudell)) + +- Missing page "not found" ([#6673](https://github.com/RocketChat/Rocket.Chat/pull/6673) by [@Prakharsvnit](https://github.com/Prakharsvnit) & [@karlprieb](https://github.com/karlprieb)) + +- Missing RocketApps input types ([#10394](https://github.com/RocketChat/Rocket.Chat/pull/10394) by [@karlprieb](https://github.com/karlprieb)) + +- Missing user data on files uploaded through the API ([#10473](https://github.com/RocketChat/Rocket.Chat/pull/10473) by [@Hudell](https://github.com/Hudell)) + +- Owner unable to delete channel or group from APIs ([#9729](https://github.com/RocketChat/Rocket.Chat/pull/9729) by [@c0dzilla](https://github.com/c0dzilla)) + +- Profile image was not being shown in user's directory search ([#10399](https://github.com/RocketChat/Rocket.Chat/pull/10399) by [@karlprieb](https://github.com/karlprieb) & [@lunaticmonk](https://github.com/lunaticmonk)) + +- Remove a user from the user's list when creating a new channel removes the wrong user ([#10423](https://github.com/RocketChat/Rocket.Chat/pull/10423) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- Rename method to clean history of messages ([#10498](https://github.com/RocketChat/Rocket.Chat/pull/10498)) + +- Renaming agent's username within Livechat's department ([#10344](https://github.com/RocketChat/Rocket.Chat/pull/10344)) + +- REST API OAuth services endpoint were missing fields and flag to indicate custom services ([#10299](https://github.com/RocketChat/Rocket.Chat/pull/10299)) + +- REST spotlight API wasn't allowing searches with # and @ ([#10410](https://github.com/RocketChat/Rocket.Chat/pull/10410)) + +- Room's name was cutting instead of having ellipses on sidebar ([#10430](https://github.com/RocketChat/Rocket.Chat/pull/10430)) + +- Russian translation of "False" ([#10418](https://github.com/RocketChat/Rocket.Chat/pull/10418) by [@strangerintheq](https://github.com/strangerintheq)) + +- Snaps installations are breaking on avatar requests ([#10390](https://github.com/RocketChat/Rocket.Chat/pull/10390)) + +- Stop Firefox announcement overflowing viewport ([#10503](https://github.com/RocketChat/Rocket.Chat/pull/10503) by [@brendangadd](https://github.com/brendangadd)) + +- Switch buttons were cutting in RTL mode ([#10558](https://github.com/RocketChat/Rocket.Chat/pull/10558)) + +- The 'channel.messages' REST API Endpoint error ([#10485](https://github.com/RocketChat/Rocket.Chat/pull/10485) by [@rafaelks](https://github.com/rafaelks)) + +- Unique identifier file not really being unique ([#10341](https://github.com/RocketChat/Rocket.Chat/pull/10341) by [@abernix](https://github.com/abernix)) + +- Updated OpenShift Template to take an Image as a Param ([#9946](https://github.com/RocketChat/Rocket.Chat/pull/9946) by [@christianh814](https://github.com/christianh814)) + +- Wordpress oAuth authentication wasn't behaving correctly ([#10550](https://github.com/RocketChat/Rocket.Chat/pull/10550) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Wrong column positions in the directory search for users ([#10454](https://github.com/RocketChat/Rocket.Chat/pull/10454) by [@karlprieb](https://github.com/karlprieb) & [@lunaticmonk](https://github.com/lunaticmonk)) + +- Wrong positioning of popover when using RTL languages ([#10428](https://github.com/RocketChat/Rocket.Chat/pull/10428) by [@karlprieb](https://github.com/karlprieb)) + +
+🔍 Minor changes + + +- [OTHER] Develop sync ([#10487](https://github.com/RocketChat/Rocket.Chat/pull/10487)) + +- [OTHER] More Listeners for Apps & Utilize Promises inside Apps ([#10335](https://github.com/RocketChat/Rocket.Chat/pull/10335)) + +- [OTHER] Removed the developer warning on the rest api ([#10441](https://github.com/RocketChat/Rocket.Chat/pull/10441)) + +- Add some missing translations ([#10435](https://github.com/RocketChat/Rocket.Chat/pull/10435) by [@gdelavald](https://github.com/gdelavald)) + +- Change Docker-Compose to use mmapv1 storage engine for mongo ([#10336](https://github.com/RocketChat/Rocket.Chat/pull/10336)) + +- Deps update ([#10549](https://github.com/RocketChat/Rocket.Chat/pull/10549)) + +- Develop sync ([#10505](https://github.com/RocketChat/Rocket.Chat/pull/10505) by [@nsuchy](https://github.com/nsuchy) & [@rafaelks](https://github.com/rafaelks)) + +- Development: Add Visual Studio Code debugging configuration ([#10586](https://github.com/RocketChat/Rocket.Chat/pull/10586)) + +- Fix and improve vietnamese translation ([#10397](https://github.com/RocketChat/Rocket.Chat/pull/10397) by [@TDiNguyen](https://github.com/TDiNguyen) & [@tttt-conan](https://github.com/tttt-conan)) + +- Fix: Remove "secret" from REST endpoint /settings.oauth response ([#10513](https://github.com/RocketChat/Rocket.Chat/pull/10513)) + +- Included missing lib for migrations ([#10532](https://github.com/RocketChat/Rocket.Chat/pull/10532) by [@Hudell](https://github.com/Hudell)) + +- LingoHub based on develop ([#10545](https://github.com/RocketChat/Rocket.Chat/pull/10545)) + +- Master into Develop Branch Sync ([#10376](https://github.com/RocketChat/Rocket.Chat/pull/10376)) + +- New issue template for *Release Process* ([#10234](https://github.com/RocketChat/Rocket.Chat/pull/10234)) + +- Regression: /api/v1/settings.oauth not returning clientId for Twitter ([#10560](https://github.com/RocketChat/Rocket.Chat/pull/10560) by [@cardoso](https://github.com/cardoso)) + +- Regression: /api/v1/settings.oauth not sending needed info for SAML & CAS ([#10596](https://github.com/RocketChat/Rocket.Chat/pull/10596) by [@cardoso](https://github.com/cardoso)) + +- Regression: Apps and Livechats not getting along well with each other ([#10598](https://github.com/RocketChat/Rocket.Chat/pull/10598)) + +- Regression: Attachments and fields incorrectly failing on validation ([#10573](https://github.com/RocketChat/Rocket.Chat/pull/10573)) + +- Regression: Fix announcement bar being displayed without content ([#10554](https://github.com/RocketChat/Rocket.Chat/pull/10554) by [@gdelavald](https://github.com/gdelavald)) + +- Regression: Inconsistent response of settings.oauth endpoint ([#10553](https://github.com/RocketChat/Rocket.Chat/pull/10553)) + +- Regression: Remove added mentions on quote/reply ([#10571](https://github.com/RocketChat/Rocket.Chat/pull/10571) by [@gdelavald](https://github.com/gdelavald)) + +- Regression: Revert announcement structure ([#10544](https://github.com/RocketChat/Rocket.Chat/pull/10544) by [@gdelavald](https://github.com/gdelavald)) + +- Regression: Rocket.Chat App author link opens in same window ([#10575](https://github.com/RocketChat/Rocket.Chat/pull/10575) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Regression: Rooms and Apps weren't playing nice with each other ([#10559](https://github.com/RocketChat/Rocket.Chat/pull/10559)) + +- Regression: Upload was not working ([#10543](https://github.com/RocketChat/Rocket.Chat/pull/10543)) + +- Regression: Various search provider fixes ([#10591](https://github.com/RocketChat/Rocket.Chat/pull/10591) by [@tkurz](https://github.com/tkurz)) + +- Regression: Webhooks breaking due to restricted test ([#10555](https://github.com/RocketChat/Rocket.Chat/pull/10555)) + +- Release 0.64.0 ([#10613](https://github.com/RocketChat/Rocket.Chat/pull/10613) by [@TwizzyDizzy](https://github.com/TwizzyDizzy) & [@christianh814](https://github.com/christianh814) & [@gdelavald](https://github.com/gdelavald) & [@tttt-conan](https://github.com/tttt-conan)) + +- Remove @core team mention from Pull Request template ([#10384](https://github.com/RocketChat/Rocket.Chat/pull/10384)) + +- Update allowed labels for bot ([#10360](https://github.com/RocketChat/Rocket.Chat/pull/10360) by [@TwizzyDizzy](https://github.com/TwizzyDizzy)) + +- Use Node 8.9 for CI build ([#10405](https://github.com/RocketChat/Rocket.Chat/pull/10405)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@Prakharsvnit](https://github.com/Prakharsvnit) +- [@TDiNguyen](https://github.com/TDiNguyen) +- [@TwizzyDizzy](https://github.com/TwizzyDizzy) +- [@abernix](https://github.com/abernix) +- [@brendangadd](https://github.com/brendangadd) +- [@c0dzilla](https://github.com/c0dzilla) +- [@cardoso](https://github.com/cardoso) +- [@christianh814](https://github.com/christianh814) +- [@dschuan](https://github.com/dschuan) +- [@gdelavald](https://github.com/gdelavald) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@karlprieb](https://github.com/karlprieb) +- [@lunaticmonk](https://github.com/lunaticmonk) +- [@nemaniarjun](https://github.com/nemaniarjun) +- [@nsuchy](https://github.com/nsuchy) +- [@okaybroda](https://github.com/okaybroda) +- [@rafaelks](https://github.com/rafaelks) +- [@strangerintheq](https://github.com/strangerintheq) +- [@t3hchipmunk](https://github.com/t3hchipmunk) +- [@tkurz](https://github.com/tkurz) +- [@tttt-conan](https://github.com/tttt-conan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.63.3 +`2018-04-18 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +
+🔍 Minor changes + + +- Release 0.63.3 ([#10504](https://github.com/RocketChat/Rocket.Chat/pull/10504) by [@rafaelks](https://github.com/rafaelks)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@rafaelks](https://github.com/rafaelks) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@graywolf336](https://github.com/graywolf336) + +# 0.63.2 +`2018-04-17 · 2 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +
+🔍 Minor changes + + +- add redhat dockerfile to master ([#10408](https://github.com/RocketChat/Rocket.Chat/pull/10408)) + +- Release 0.63.2 ([#10476](https://github.com/RocketChat/Rocket.Chat/pull/10476)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@graywolf336](https://github.com/graywolf336) + +# 0.63.1 +`2018-04-07 · 1 🔍 · 7 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +
+🔍 Minor changes + + +- Release 0.63.1 ([#10374](https://github.com/RocketChat/Rocket.Chat/pull/10374) by [@TechyPeople](https://github.com/TechyPeople) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@tttt-conan](https://github.com/tttt-conan)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@TechyPeople](https://github.com/TechyPeople) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@tttt-conan](https://github.com/tttt-conan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@graywolf336](https://github.com/graywolf336) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.63.0 +`2018-04-04 · 1 ️️️⚠️ · 18 🎉 · 36 🐛 · 20 🔍 · 25 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.11.1` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- Removed Private History Route ([#10103](https://github.com/RocketChat/Rocket.Chat/pull/10103) by [@Hudell](https://github.com/Hudell)) + +### 🎉 New features + + +- Add leave public channel & leave private channel permissions ([#9584](https://github.com/RocketChat/Rocket.Chat/pull/9584) by [@kb0304](https://github.com/kb0304)) + +- Add option to login via REST using Facebook and Twitter tokens ([#9816](https://github.com/RocketChat/Rocket.Chat/pull/9816)) + +- Add REST endpoint to get the list of custom emojis ([#9629](https://github.com/RocketChat/Rocket.Chat/pull/9629)) + +- Added endpoint to get the list of available oauth services ([#10144](https://github.com/RocketChat/Rocket.Chat/pull/10144)) + +- Added endpoint to retrieve mentions of a channel ([#10105](https://github.com/RocketChat/Rocket.Chat/pull/10105)) + +- Added GET/POST channels.notifications ([#10128](https://github.com/RocketChat/Rocket.Chat/pull/10128)) + +- Announcement bar color wasn't using color from theming variables ([#9367](https://github.com/RocketChat/Rocket.Chat/pull/9367) by [@cyclops24](https://github.com/cyclops24) & [@karlprieb](https://github.com/karlprieb)) + +- Audio recording as mp3 and better ui for recording ([#9726](https://github.com/RocketChat/Rocket.Chat/pull/9726) by [@kb0304](https://github.com/kb0304)) + +- Endpoint to retrieve message read receipts ([#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907)) + +- GDPR Right to be forgotten/erased ([#9947](https://github.com/RocketChat/Rocket.Chat/pull/9947) by [@Hudell](https://github.com/Hudell)) + +- Improve history generation ([#10319](https://github.com/RocketChat/Rocket.Chat/pull/10319)) + +- Interface to install and manage RocketChat Apps (alpha) ([#10246](https://github.com/RocketChat/Rocket.Chat/pull/10246)) + +- Livechat messages rest APIs ([#10054](https://github.com/RocketChat/Rocket.Chat/pull/10054) by [@hmagarotto](https://github.com/hmagarotto)) + +- Livechat webhook request on message ([#9870](https://github.com/RocketChat/Rocket.Chat/pull/9870) by [@hmagarotto](https://github.com/hmagarotto)) + +- Reply preview ([#10086](https://github.com/RocketChat/Rocket.Chat/pull/10086) by [@ubarsaiyan](https://github.com/ubarsaiyan)) + +- REST API method to set room's announcement (channels.setAnnouncement) ([#9742](https://github.com/RocketChat/Rocket.Chat/pull/9742) by [@TopHattedCat](https://github.com/TopHattedCat)) + +- Setting to configure max delta for 2fa ([#9732](https://github.com/RocketChat/Rocket.Chat/pull/9732) by [@Hudell](https://github.com/Hudell)) + +- Support for agent's phone field ([#10123](https://github.com/RocketChat/Rocket.Chat/pull/10123)) + +### 🐛 Bug fixes + + +- "View All Members" button inside channel's "User Info" is over sized ([#10012](https://github.com/RocketChat/Rocket.Chat/pull/10012) by [@karlprieb](https://github.com/karlprieb)) + +- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240)) + +- Able to react with invalid emoji ([#8667](https://github.com/RocketChat/Rocket.Chat/pull/8667) by [@mutdmour](https://github.com/mutdmour)) + +- Apostrophe-containing URL misparsed ([#9739](https://github.com/RocketChat/Rocket.Chat/pull/9739) by [@lunaticmonk](https://github.com/lunaticmonk)) + +- Apostrophe-containing URL misparsed" ([#10242](https://github.com/RocketChat/Rocket.Chat/pull/10242)) + +- Audio Message UI fixes ([#10303](https://github.com/RocketChat/Rocket.Chat/pull/10303) by [@kb0304](https://github.com/kb0304)) + +- Avatar input was accepting not supported image types ([#10011](https://github.com/RocketChat/Rocket.Chat/pull/10011) by [@karlprieb](https://github.com/karlprieb)) + +- Broken video call accept dialog ([#9872](https://github.com/RocketChat/Rocket.Chat/pull/9872) by [@ramrami](https://github.com/ramrami)) + +- Browser was auto-filling values when editing another user profile ([#9932](https://github.com/RocketChat/Rocket.Chat/pull/9932) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Cannot answer to a livechat as a manager if agent has not answered yet ([#10082](https://github.com/RocketChat/Rocket.Chat/pull/10082) by [@kb0304](https://github.com/kb0304)) + +- Download links was duplicating Sub Paths ([#10029](https://github.com/RocketChat/Rocket.Chat/pull/10029)) + +- Dynamic CSS script isn't working on older browsers ([#10152](https://github.com/RocketChat/Rocket.Chat/pull/10152) by [@karlprieb](https://github.com/karlprieb)) + +- Extended view mode on sidebar ([#10160](https://github.com/RocketChat/Rocket.Chat/pull/10160) by [@karlprieb](https://github.com/karlprieb)) + +- File had redirect delay when using external storage services and no option to proxy only avatars ([#10272](https://github.com/RocketChat/Rocket.Chat/pull/10272)) + +- Incoming Webhooks were missing the raw content ([#10258](https://github.com/RocketChat/Rocket.Chat/pull/10258) by [@Hudell](https://github.com/Hudell)) + +- Initial loading feedback was missing ([#10028](https://github.com/RocketChat/Rocket.Chat/pull/10028) by [@karlprieb](https://github.com/karlprieb)) + +- Inline code following a url leads to autolinking of code with url ([#10163](https://github.com/RocketChat/Rocket.Chat/pull/10163) by [@c0dzilla](https://github.com/c0dzilla)) + +- Message editing is crashing the server when read receipts are enabled ([#10061](https://github.com/RocketChat/Rocket.Chat/pull/10061)) + +- Missing pt-BR translations ([#10262](https://github.com/RocketChat/Rocket.Chat/pull/10262)) + +- Missing sidebar default options on admin ([#10016](https://github.com/RocketChat/Rocket.Chat/pull/10016) by [@karlprieb](https://github.com/karlprieb)) + +- Missing Translation Key on Reactions ([#10270](https://github.com/RocketChat/Rocket.Chat/pull/10270) by [@bernardoetrevisan](https://github.com/bernardoetrevisan)) + +- Name of files in file upload list cuts down at bottom due to overflow ([#9672](https://github.com/RocketChat/Rocket.Chat/pull/9672) by [@lunaticmonk](https://github.com/lunaticmonk)) + +- Nextcloud as custom oauth provider wasn't mapping data correctly ([#10090](https://github.com/RocketChat/Rocket.Chat/pull/10090) by [@pierreozoux](https://github.com/pierreozoux)) + +- No pattern for user's status text capitalization ([#9783](https://github.com/RocketChat/Rocket.Chat/pull/9783) by [@lunaticmonk](https://github.com/lunaticmonk)) + +- Popover divs don't scroll if they overflow the viewport ([#9860](https://github.com/RocketChat/Rocket.Chat/pull/9860) by [@Joe-mcgee](https://github.com/Joe-mcgee)) + +- Reactions not working on mobile ([#10104](https://github.com/RocketChat/Rocket.Chat/pull/10104)) + +- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009)) + +- Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist ([#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) by [@trongthanh](https://github.com/trongthanh)) + +- Unable to mention after newline in message ([#10078](https://github.com/RocketChat/Rocket.Chat/pull/10078) by [@c0dzilla](https://github.com/c0dzilla)) + +- Update preferences of users with settings: null was crashing the server ([#10076](https://github.com/RocketChat/Rocket.Chat/pull/10076)) + +- User preferences can't be saved when roles are hidden in admin settings ([#10051](https://github.com/RocketChat/Rocket.Chat/pull/10051) by [@Hudell](https://github.com/Hudell)) + +- User status missing on user info ([#9866](https://github.com/RocketChat/Rocket.Chat/pull/9866) by [@lunaticmonk](https://github.com/lunaticmonk)) + +- user status on sidenav ([#10222](https://github.com/RocketChat/Rocket.Chat/pull/10222)) + +- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719)) + +- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224)) + +- Wrong switch button border color ([#10081](https://github.com/RocketChat/Rocket.Chat/pull/10081) by [@kb0304](https://github.com/kb0304)) + +
+🔍 Minor changes + + +- [OTHER] Reactivate all tests ([#10036](https://github.com/RocketChat/Rocket.Chat/pull/10036)) + +- [OTHER] Reactivate API tests ([#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844) by [@karlprieb](https://github.com/karlprieb)) + +- Add a few listener supports for the Rocket.Chat Apps ([#10154](https://github.com/RocketChat/Rocket.Chat/pull/10154)) + +- Add forums as a place to suggest, discuss and upvote features ([#10148](https://github.com/RocketChat/Rocket.Chat/pull/10148) by [@SeanPackham](https://github.com/SeanPackham)) + +- Bump snap version to include security fix ([#10313](https://github.com/RocketChat/Rocket.Chat/pull/10313)) + +- Fix caddy download link to pull from github ([#10260](https://github.com/RocketChat/Rocket.Chat/pull/10260)) + +- Fix snap install. Remove execstack from sharp, and bypass grpc error ([#10015](https://github.com/RocketChat/Rocket.Chat/pull/10015)) + +- Fix tests breaking randomly ([#10065](https://github.com/RocketChat/Rocket.Chat/pull/10065)) + +- Fix typo for Nextcloud login ([#10159](https://github.com/RocketChat/Rocket.Chat/pull/10159) by [@pierreozoux](https://github.com/pierreozoux)) + +- Fix: chat.react api not accepting previous emojis ([#10290](https://github.com/RocketChat/Rocket.Chat/pull/10290)) + +- Fix: inputs for rocketchat apps ([#10274](https://github.com/RocketChat/Rocket.Chat/pull/10274)) + +- Fix: possible errors on rocket.chat side of the apps ([#10252](https://github.com/RocketChat/Rocket.Chat/pull/10252)) + +- Fix: Reaction endpoint/api only working with regular emojis ([#10323](https://github.com/RocketChat/Rocket.Chat/pull/10323)) + +- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257)) + +- Fix: Scroll on content page ([#10300](https://github.com/RocketChat/Rocket.Chat/pull/10300)) + +- LingoHub based on develop ([#10243](https://github.com/RocketChat/Rocket.Chat/pull/10243)) + +- Release 0.63.0 ([#10324](https://github.com/RocketChat/Rocket.Chat/pull/10324) by [@Hudell](https://github.com/Hudell) & [@Joe-mcgee](https://github.com/Joe-mcgee) & [@TopHattedCat](https://github.com/TopHattedCat) & [@hmagarotto](https://github.com/hmagarotto) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@karlprieb](https://github.com/karlprieb) & [@kb0304](https://github.com/kb0304) & [@lunaticmonk](https://github.com/lunaticmonk) & [@ramrami](https://github.com/ramrami)) + +- Rename migration name on 108 to match file name ([#10237](https://github.com/RocketChat/Rocket.Chat/pull/10237)) + +- Start 0.63.0-develop / develop sync from master ([#9985](https://github.com/RocketChat/Rocket.Chat/pull/9985)) + +- Update Meteor to 1.6.1.1 ([#10314](https://github.com/RocketChat/Rocket.Chat/pull/10314)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Hudell](https://github.com/Hudell) +- [@Joe-mcgee](https://github.com/Joe-mcgee) +- [@SeanPackham](https://github.com/SeanPackham) +- [@TopHattedCat](https://github.com/TopHattedCat) +- [@bernardoetrevisan](https://github.com/bernardoetrevisan) +- [@c0dzilla](https://github.com/c0dzilla) +- [@cyclops24](https://github.com/cyclops24) +- [@hmagarotto](https://github.com/hmagarotto) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@karlprieb](https://github.com/karlprieb) +- [@kb0304](https://github.com/kb0304) +- [@lunaticmonk](https://github.com/lunaticmonk) +- [@mutdmour](https://github.com/mutdmour) +- [@pierreozoux](https://github.com/pierreozoux) +- [@ramrami](https://github.com/ramrami) +- [@trongthanh](https://github.com/trongthanh) +- [@ubarsaiyan](https://github.com/ubarsaiyan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.62.2 +`2018-03-09 · 6 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.4` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Download links was duplicating Sub Paths ([#10029](https://github.com/RocketChat/Rocket.Chat/pull/10029)) + +- Message editing is crashing the server when read receipts are enabled ([#10061](https://github.com/RocketChat/Rocket.Chat/pull/10061)) + +- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009)) + +- Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist ([#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) by [@trongthanh](https://github.com/trongthanh)) + +- Update preferences of users with settings: null was crashing the server ([#10076](https://github.com/RocketChat/Rocket.Chat/pull/10076)) + +- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719)) + +
+🔍 Minor changes + + +- Release 0.62.2 ([#10087](https://github.com/RocketChat/Rocket.Chat/pull/10087)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@trongthanh](https://github.com/trongthanh) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.62.1 +`2018-03-03 · 4 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.4` +- NPM: `5.6.0` + +### 🐛 Bug fixes + + +- Delete user without username was removing direct rooms of all users ([#9986](https://github.com/RocketChat/Rocket.Chat/pull/9986)) + +- Empty sidenav when sorting by activity and there is a subscription without room ([#9960](https://github.com/RocketChat/Rocket.Chat/pull/9960)) + +- New channel page on medium size screens ([#9988](https://github.com/RocketChat/Rocket.Chat/pull/9988) by [@karlprieb](https://github.com/karlprieb)) + +- Two factor authentication modal was not showing ([#9982](https://github.com/RocketChat/Rocket.Chat/pull/9982)) + +
+🔍 Minor changes + + +- Release 0.62.1 ([#9989](https://github.com/RocketChat/Rocket.Chat/pull/9989)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@karlprieb](https://github.com/karlprieb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.62.0 +`2018-02-27 · 1 ️️️⚠️ · 24 🎉 · 32 🐛 · 26 🔍 · 39 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.4` +- NPM: `5.6.0` + +### ⚠️ BREAKING CHANGES + + +- Remove Graphics/Image Magick support ([#9711](https://github.com/RocketChat/Rocket.Chat/pull/9711)) + +### 🎉 New features + + +- Add documentation requirement to PRs ([#9658](https://github.com/RocketChat/Rocket.Chat/pull/9658) by [@SeanPackham](https://github.com/SeanPackham)) + +- Add route to get user shield/badge ([#9549](https://github.com/RocketChat/Rocket.Chat/pull/9549) by [@kb0304](https://github.com/kb0304)) + +- Add user settings / preferences API endpoint ([#9457](https://github.com/RocketChat/Rocket.Chat/pull/9457) by [@jgtoriginal](https://github.com/jgtoriginal)) + +- Alert admins when user requires approval & alert users when the account is approved/activated/deactivated ([#7098](https://github.com/RocketChat/Rocket.Chat/pull/7098) by [@luisfn](https://github.com/luisfn)) + +- Allow configuration of SAML logout behavior ([#9527](https://github.com/RocketChat/Rocket.Chat/pull/9527) by [@mrsimpson](https://github.com/mrsimpson)) + +- Allow request avatar placeholders as PNG or JPG instead of SVG ([#8193](https://github.com/RocketChat/Rocket.Chat/pull/8193) by [@lindoelio](https://github.com/lindoelio)) + +- Allow sounds when conversation is focused ([#9312](https://github.com/RocketChat/Rocket.Chat/pull/9312) by [@RationalCoding](https://github.com/RationalCoding)) + +- API to fetch permissions & user roles ([#9519](https://github.com/RocketChat/Rocket.Chat/pull/9519) by [@rafaelks](https://github.com/rafaelks)) + +- Browse more channels / Directory ([#9642](https://github.com/RocketChat/Rocket.Chat/pull/9642) by [@karlprieb](https://github.com/karlprieb)) + +- General alert banner ([#9778](https://github.com/RocketChat/Rocket.Chat/pull/9778)) + +- Global message search (beta: disabled by default) ([#9687](https://github.com/RocketChat/Rocket.Chat/pull/9687) by [@cyberhck](https://github.com/cyberhck) & [@savikko](https://github.com/savikko)) + +- GraphQL API ([#8158](https://github.com/RocketChat/Rocket.Chat/pull/8158) by [@kamilkisiela](https://github.com/kamilkisiela)) + +- Image preview as 32x32 base64 jpeg ([#9218](https://github.com/RocketChat/Rocket.Chat/pull/9218) by [@jorgeluisrezende](https://github.com/jorgeluisrezende)) + +- Improved default welcome message ([#9298](https://github.com/RocketChat/Rocket.Chat/pull/9298) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Internal hubot support for Direct Messages and Private Groups ([#8933](https://github.com/RocketChat/Rocket.Chat/pull/8933) by [@ramrami](https://github.com/ramrami)) + +- Livestream tab ([#9255](https://github.com/RocketChat/Rocket.Chat/pull/9255) by [@gdelavald](https://github.com/gdelavald)) + +- Makes shield icon configurable ([#9746](https://github.com/RocketChat/Rocket.Chat/pull/9746) by [@c0dzilla](https://github.com/c0dzilla)) + +- Message read receipts ([#9717](https://github.com/RocketChat/Rocket.Chat/pull/9717)) + +- New REST API to mark channel as read ([#9507](https://github.com/RocketChat/Rocket.Chat/pull/9507) by [@rafaelks](https://github.com/rafaelks)) + +- New sidebar layout ([#9608](https://github.com/RocketChat/Rocket.Chat/pull/9608) by [@karlprieb](https://github.com/karlprieb)) + +- Option to proxy files and avatars through the server ([#9699](https://github.com/RocketChat/Rocket.Chat/pull/9699)) + +- Request mongoDB version in github issue template ([#9807](https://github.com/RocketChat/Rocket.Chat/pull/9807) by [@TwizzyDizzy](https://github.com/TwizzyDizzy)) + +- REST API to use Spotlight ([#9509](https://github.com/RocketChat/Rocket.Chat/pull/9509) by [@rafaelks](https://github.com/rafaelks)) + +- Version update check ([#9793](https://github.com/RocketChat/Rocket.Chat/pull/9793)) + +### 🐛 Bug fixes + + +- 'Query' support for channels.list.joined, groups.list, groups.listAll, im.list ([#9424](https://github.com/RocketChat/Rocket.Chat/pull/9424) by [@xbolshe](https://github.com/xbolshe)) + +- API to retrive rooms was returning empty objects ([#9737](https://github.com/RocketChat/Rocket.Chat/pull/9737)) + +- Chat Message Reactions REST API End Point ([#9487](https://github.com/RocketChat/Rocket.Chat/pull/9487) by [@jgtoriginal](https://github.com/jgtoriginal)) + +- Chrome 64 breaks jitsi-meet iframe ([#9560](https://github.com/RocketChat/Rocket.Chat/pull/9560) by [@speedy01](https://github.com/speedy01)) + +- Close button on file upload bar was not working ([#9662](https://github.com/RocketChat/Rocket.Chat/pull/9662) by [@karlprieb](https://github.com/karlprieb)) + +- Close Livechat conversation by visitor not working in version 0.61.0 ([#9714](https://github.com/RocketChat/Rocket.Chat/pull/9714)) + +- Custom emoji was cropping sometimes ([#9676](https://github.com/RocketChat/Rocket.Chat/pull/9676) by [@anu-007](https://github.com/anu-007)) + +- DeprecationWarning: prom-client ... when starting Rocket Chat server ([#9747](https://github.com/RocketChat/Rocket.Chat/pull/9747) by [@jgtoriginal](https://github.com/jgtoriginal)) + +- Desktop notification not showing when avatar came from external storage service ([#9639](https://github.com/RocketChat/Rocket.Chat/pull/9639)) + +- Emoji rendering on last message ([#9776](https://github.com/RocketChat/Rocket.Chat/pull/9776)) + +- Facebook integration in livechat not working on version 0.61.0 ([#9640](https://github.com/RocketChat/Rocket.Chat/pull/9640)) + +- Formal pronouns and some small mistakes in German texts ([#9067](https://github.com/RocketChat/Rocket.Chat/pull/9067) by [@AmShaegar13](https://github.com/AmShaegar13)) + +- GitLab OAuth does not work when GitLab’s URL ends with slash ([#9716](https://github.com/RocketChat/Rocket.Chat/pull/9716)) + +- Harmonize channel-related actions ([#9697](https://github.com/RocketChat/Rocket.Chat/pull/9697) by [@mrsimpson](https://github.com/mrsimpson)) + +- Importers no longer working due to the FileUpload changes ([#9850](https://github.com/RocketChat/Rocket.Chat/pull/9850)) + +- Livechat conversation not receiving messages when start without form ([#9772](https://github.com/RocketChat/Rocket.Chat/pull/9772)) + +- Livechat is not working when running in a sub path ([#9599](https://github.com/RocketChat/Rocket.Chat/pull/9599)) + +- Livechat issues on external queue and lead capture ([#9750](https://github.com/RocketChat/Rocket.Chat/pull/9750)) + +- Messages can't be quoted sometimes ([#9720](https://github.com/RocketChat/Rocket.Chat/pull/9720)) + +- Misplaced "Save Changes" button in user account panel ([#9888](https://github.com/RocketChat/Rocket.Chat/pull/9888) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Missing link Site URLs in enrollment e-mails ([#9454](https://github.com/RocketChat/Rocket.Chat/pull/9454) by [@kemitchell](https://github.com/kemitchell)) + +- Missing string 'Username_already_exist' on the accountProfile page ([#9610](https://github.com/RocketChat/Rocket.Chat/pull/9610) by [@lunaticmonk](https://github.com/lunaticmonk)) + +- Not receiving sound notifications in rooms created by new LiveChats ([#9802](https://github.com/RocketChat/Rocket.Chat/pull/9802)) + +- Parsing messages with multiple markdown matches ignore some tokens ([#9884](https://github.com/RocketChat/Rocket.Chat/pull/9884) by [@c0dzilla](https://github.com/c0dzilla)) + +- Rest API helpers only applying to v1 ([#9520](https://github.com/RocketChat/Rocket.Chat/pull/9520)) + +- Show custom room types icon in channel header ([#9696](https://github.com/RocketChat/Rocket.Chat/pull/9696) by [@mrsimpson](https://github.com/mrsimpson)) + +- Silence the update check error message ([#9858](https://github.com/RocketChat/Rocket.Chat/pull/9858)) + +- Snap build was failing ([#9879](https://github.com/RocketChat/Rocket.Chat/pull/9879)) + +- SVG avatars are not been displayed correctly when load in non HTML containers ([#9570](https://github.com/RocketChat/Rocket.Chat/pull/9570) by [@filipedelimabrito](https://github.com/filipedelimabrito)) + +- Typo on french translation for "Open" ([#9934](https://github.com/RocketChat/Rocket.Chat/pull/9934) by [@sizrar](https://github.com/sizrar)) + +- Weird rendering of emojis at sidebar when `last message` is activated ([#9623](https://github.com/RocketChat/Rocket.Chat/pull/9623)) + +- Wrong behavior of rooms info's *Read Only* and *Collaborative* buttons ([#9665](https://github.com/RocketChat/Rocket.Chat/pull/9665) by [@karlprieb](https://github.com/karlprieb)) + +
+🔍 Minor changes + + +- [Fix] Not Translated Phrases ([#9877](https://github.com/RocketChat/Rocket.Chat/pull/9877) by [@bernardoetrevisan](https://github.com/bernardoetrevisan)) + +- [OTHER] Fix Apps not working on multi-instance deployments ([#9902](https://github.com/RocketChat/Rocket.Chat/pull/9902)) + +- [OTHER] Rocket.Chat Apps ([#9666](https://github.com/RocketChat/Rocket.Chat/pull/9666)) + +- Dependencies update ([#9811](https://github.com/RocketChat/Rocket.Chat/pull/9811)) + +- Develop fix sync from master ([#9797](https://github.com/RocketChat/Rocket.Chat/pull/9797)) + +- Fix RHCC image path for OpenShift and default to the current namespace. ([#9901](https://github.com/RocketChat/Rocket.Chat/pull/9901) by [@jsm84](https://github.com/jsm84)) + +- Fix: Custom fields not showing on user info panel ([#9821](https://github.com/RocketChat/Rocket.Chat/pull/9821)) + +- Improve link handling for attachments ([#9908](https://github.com/RocketChat/Rocket.Chat/pull/9908)) + +- Move NRR package to inside the project and convert from CoffeeScript ([#9753](https://github.com/RocketChat/Rocket.Chat/pull/9753)) + +- Regression: Avatar now open account related options ([#9843](https://github.com/RocketChat/Rocket.Chat/pull/9843) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Change create channel icon ([#9851](https://github.com/RocketChat/Rocket.Chat/pull/9851) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Directory now list default channel ([#9931](https://github.com/RocketChat/Rocket.Chat/pull/9931) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Fix admin/user settings item text ([#9845](https://github.com/RocketChat/Rocket.Chat/pull/9845) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Fix channel icons on safari ([#9852](https://github.com/RocketChat/Rocket.Chat/pull/9852) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Fix livechat queue link ([#9928](https://github.com/RocketChat/Rocket.Chat/pull/9928) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Improve sidebar filter ([#9905](https://github.com/RocketChat/Rocket.Chat/pull/9905) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Misplaced language dropdown in user preferences panel ([#9883](https://github.com/RocketChat/Rocket.Chat/pull/9883) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Regression: Open search using ctrl/cmd + p and ctrl/cmd + k ([#9837](https://github.com/RocketChat/Rocket.Chat/pull/9837) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: Overlapping header in user profile panel ([#9889](https://github.com/RocketChat/Rocket.Chat/pull/9889) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) + +- Regression: Page was not respecting the window height on Firefox ([#9804](https://github.com/RocketChat/Rocket.Chat/pull/9804)) + +- Regression: Search bar is now full width ([#9839](https://github.com/RocketChat/Rocket.Chat/pull/9839) by [@karlprieb](https://github.com/karlprieb)) + +- Regression: sort on room's list not working correctly ([#9897](https://github.com/RocketChat/Rocket.Chat/pull/9897)) + +- Release 0.62.0 ([#9935](https://github.com/RocketChat/Rocket.Chat/pull/9935)) + +- Sync from Master ([#9796](https://github.com/RocketChat/Rocket.Chat/pull/9796) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Update bot-config.yml ([#9784](https://github.com/RocketChat/Rocket.Chat/pull/9784) by [@JSzaszvari](https://github.com/JSzaszvari)) + +- Update to meteor 1.6.1 ([#9546](https://github.com/RocketChat/Rocket.Chat/pull/9546)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AmShaegar13](https://github.com/AmShaegar13) +- [@HammyHavoc](https://github.com/HammyHavoc) +- [@JSzaszvari](https://github.com/JSzaszvari) +- [@RationalCoding](https://github.com/RationalCoding) +- [@SeanPackham](https://github.com/SeanPackham) +- [@TwizzyDizzy](https://github.com/TwizzyDizzy) +- [@anu-007](https://github.com/anu-007) +- [@bernardoetrevisan](https://github.com/bernardoetrevisan) +- [@c0dzilla](https://github.com/c0dzilla) +- [@cyberhck](https://github.com/cyberhck) +- [@filipedelimabrito](https://github.com/filipedelimabrito) +- [@gdelavald](https://github.com/gdelavald) +- [@jgtoriginal](https://github.com/jgtoriginal) +- [@jorgeluisrezende](https://github.com/jorgeluisrezende) +- [@jsm84](https://github.com/jsm84) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@kamilkisiela](https://github.com/kamilkisiela) +- [@karlprieb](https://github.com/karlprieb) +- [@kb0304](https://github.com/kb0304) +- [@kemitchell](https://github.com/kemitchell) +- [@lindoelio](https://github.com/lindoelio) +- [@luisfn](https://github.com/luisfn) +- [@lunaticmonk](https://github.com/lunaticmonk) +- [@mrsimpson](https://github.com/mrsimpson) +- [@rafaelks](https://github.com/rafaelks) +- [@ramrami](https://github.com/ramrami) +- [@savikko](https://github.com/savikko) +- [@sizrar](https://github.com/sizrar) +- [@speedy01](https://github.com/speedy01) +- [@xbolshe](https://github.com/xbolshe) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.61.2 +`2018-02-20 · 3 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### 🐛 Bug fixes + + +- Emoji rendering on last message ([#9776](https://github.com/RocketChat/Rocket.Chat/pull/9776)) + +- Livechat conversation not receiving messages when start without form ([#9772](https://github.com/RocketChat/Rocket.Chat/pull/9772)) + +- Livechat issues on external queue and lead capture ([#9750](https://github.com/RocketChat/Rocket.Chat/pull/9750)) + +
+🔍 Minor changes + + +- Release 0.61.2 ([#9786](https://github.com/RocketChat/Rocket.Chat/pull/9786)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.61.1 +`2018-02-14 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +
+🔍 Minor changes + + +- Release 0.61.1 ([#9721](https://github.com/RocketChat/Rocket.Chat/pull/9721)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 0.61.0 +`2018-01-27 · 1 ️️️⚠️ · 12 🎉 · 44 🐛 · 39 🔍 · 23 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### ⚠️ BREAKING CHANGES + + +- Decouple livechat visitors from regular users ([#9048](https://github.com/RocketChat/Rocket.Chat/pull/9048)) + +### 🎉 New features + + +- add /home link to sidenav footer logo ([#9366](https://github.com/RocketChat/Rocket.Chat/pull/9366) by [@cyclops24](https://github.com/cyclops24)) + +- Add impersonate option for livechat triggers ([#9107](https://github.com/RocketChat/Rocket.Chat/pull/9107)) + +- Add mention-here permission #7631 ([#9228](https://github.com/RocketChat/Rocket.Chat/pull/9228) by [@ryjones](https://github.com/ryjones)) + +- Add support to external livechat queue service provider ([#9053](https://github.com/RocketChat/Rocket.Chat/pull/9053)) + +- Contextual bar mail messages ([#9510](https://github.com/RocketChat/Rocket.Chat/pull/9510) by [@karlprieb](https://github.com/karlprieb)) + +- Contextual Bar Redesign ([#8411](https://github.com/RocketChat/Rocket.Chat/pull/8411) by [@karlprieb](https://github.com/karlprieb)) + +- Indicate the Self DM room ([#9234](https://github.com/RocketChat/Rocket.Chat/pull/9234)) + +- Livechat extract lead data from message ([#9135](https://github.com/RocketChat/Rocket.Chat/pull/9135)) + +- Make Custom oauth accept nested usernameField ([#9066](https://github.com/RocketChat/Rocket.Chat/pull/9066) by [@pierreozoux](https://github.com/pierreozoux)) + +- new layout for emojipicker ([#9245](https://github.com/RocketChat/Rocket.Chat/pull/9245) by [@karlprieb](https://github.com/karlprieb)) + +- Sidebar menu option to mark room as unread ([#9216](https://github.com/RocketChat/Rocket.Chat/pull/9216) by [@karlprieb](https://github.com/karlprieb)) + +- Update documentation: provide example for multiple basedn ([#9442](https://github.com/RocketChat/Rocket.Chat/pull/9442) by [@rndmh3ro](https://github.com/rndmh3ro)) + +### 🐛 Bug fixes + + +- "Enter usernames" placeholder is cutting in "create channel" view ([#9194](https://github.com/RocketChat/Rocket.Chat/pull/9194) by [@TheReal1604](https://github.com/TheReal1604)) + +- "Use Emoji" preference not working ([#9182](https://github.com/RocketChat/Rocket.Chat/pull/9182) by [@karlprieb](https://github.com/karlprieb)) + +- **i18n:** add room type translation support for room-changed-privacy message ([#9369](https://github.com/RocketChat/Rocket.Chat/pull/9369) by [@cyclops24](https://github.com/cyclops24)) + +- announcement hyperlink color ([#9330](https://github.com/RocketChat/Rocket.Chat/pull/9330) by [@karlprieb](https://github.com/karlprieb)) + +- channel create scroll on small screens ([#9168](https://github.com/RocketChat/Rocket.Chat/pull/9168) by [@karlprieb](https://github.com/karlprieb)) + +- Channel page error ([#9091](https://github.com/RocketChat/Rocket.Chat/pull/9091) by [@ggrish](https://github.com/ggrish)) + +- Contextual bar redesign ([#9481](https://github.com/RocketChat/Rocket.Chat/pull/9481) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- Cursor position when reply on safari ([#9185](https://github.com/RocketChat/Rocket.Chat/pull/9185) by [@karlprieb](https://github.com/karlprieb)) + +- custom emoji size on sidebar item ([#9314](https://github.com/RocketChat/Rocket.Chat/pull/9314) by [@karlprieb](https://github.com/karlprieb)) + +- Deleting message with store last message not removing ([#9335](https://github.com/RocketChat/Rocket.Chat/pull/9335)) + +- Do not block room while loading history ([#9121](https://github.com/RocketChat/Rocket.Chat/pull/9121)) + +- Emoji size on last message preview ([#9186](https://github.com/RocketChat/Rocket.Chat/pull/9186) by [@karlprieb](https://github.com/karlprieb)) + +- English Typos ([#9285](https://github.com/RocketChat/Rocket.Chat/pull/9285) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Error when user roles is missing or is invalid ([#9040](https://github.com/RocketChat/Rocket.Chat/pull/9040) by [@paulovitin](https://github.com/paulovitin)) + +- File access not working when passing credentials via querystring ([#9264](https://github.com/RocketChat/Rocket.Chat/pull/9264)) + +- File upload not working on IE and weird on Chrome ([#9206](https://github.com/RocketChat/Rocket.Chat/pull/9206) by [@karlprieb](https://github.com/karlprieb)) + +- Fix closing livechat inquiry ([#9164](https://github.com/RocketChat/Rocket.Chat/pull/9164)) + +- Fix livechat build ([#9451](https://github.com/RocketChat/Rocket.Chat/pull/9451)) + +- Fix livechat register form ([#9452](https://github.com/RocketChat/Rocket.Chat/pull/9452)) + +- Fix livechat visitor edit ([#9506](https://github.com/RocketChat/Rocket.Chat/pull/9506)) + +- go to replied message ([#9172](https://github.com/RocketChat/Rocket.Chat/pull/9172) by [@karlprieb](https://github.com/karlprieb)) + +- Highlight setting not working correctly ([#9364](https://github.com/RocketChat/Rocket.Chat/pull/9364) by [@cyclops24](https://github.com/cyclops24)) + +- Importers not recovering when an error occurs ([#9134](https://github.com/RocketChat/Rocket.Chat/pull/9134)) + +- large names on userinfo, and admin user bug on users with no usernames ([#9493](https://github.com/RocketChat/Rocket.Chat/pull/9493) by [@gdelavald](https://github.com/gdelavald)) + +- last message cutting on bottom ([#9345](https://github.com/RocketChat/Rocket.Chat/pull/9345) by [@karlprieb](https://github.com/karlprieb)) + +- Last sent message reoccurs in textbox ([#9169](https://github.com/RocketChat/Rocket.Chat/pull/9169)) + +- LDAP/AD is not importing all users ([#9309](https://github.com/RocketChat/Rocket.Chat/pull/9309)) + +- Made welcome emails more readable ([#9193](https://github.com/RocketChat/Rocket.Chat/pull/9193) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Make mentions and menu icons color darker ([#8922](https://github.com/RocketChat/Rocket.Chat/pull/8922) by [@karlprieb](https://github.com/karlprieb)) + +- make the cross icon on user selection at channel creation page work ([#9176](https://github.com/RocketChat/Rocket.Chat/pull/9176) by [@karlprieb](https://github.com/karlprieb) & [@vitor-nagao](https://github.com/vitor-nagao)) + +- mention-here is missing i18n text #9455 ([#9456](https://github.com/RocketChat/Rocket.Chat/pull/9456) by [@ryjones](https://github.com/ryjones)) + +- modal data on enter and modal style for file preview ([#9171](https://github.com/RocketChat/Rocket.Chat/pull/9171) by [@karlprieb](https://github.com/karlprieb)) + +- Move emojipicker css to theme package ([#9243](https://github.com/RocketChat/Rocket.Chat/pull/9243) by [@karlprieb](https://github.com/karlprieb)) + +- popover on safari for iOS ([#9328](https://github.com/RocketChat/Rocket.Chat/pull/9328) by [@karlprieb](https://github.com/karlprieb)) + +- Show modal with announcement ([#9241](https://github.com/RocketChat/Rocket.Chat/pull/9241) by [@karlprieb](https://github.com/karlprieb)) + +- show oauth logins when adblock is used ([#9170](https://github.com/RocketChat/Rocket.Chat/pull/9170) by [@karlprieb](https://github.com/karlprieb)) + +- sidebar footer padding ([#9249](https://github.com/RocketChat/Rocket.Chat/pull/9249) by [@karlprieb](https://github.com/karlprieb)) + +- Slash command 'archive' throws exception if the channel does not exist ([#9428](https://github.com/RocketChat/Rocket.Chat/pull/9428) by [@ramrami](https://github.com/ramrami)) + +- Slash command 'unarchive' throws exception if the channel does not exist ([#9435](https://github.com/RocketChat/Rocket.Chat/pull/9435) by [@ramrami](https://github.com/ramrami)) + +- Subscriptions not removed when removing user ([#9432](https://github.com/RocketChat/Rocket.Chat/pull/9432)) + +- svg render on firefox ([#9311](https://github.com/RocketChat/Rocket.Chat/pull/9311) by [@karlprieb](https://github.com/karlprieb)) + +- Unread bar position when room have announcement ([#9188](https://github.com/RocketChat/Rocket.Chat/pull/9188) by [@karlprieb](https://github.com/karlprieb)) + +- Update Rocket.Chat for sandstorm ([#9062](https://github.com/RocketChat/Rocket.Chat/pull/9062) by [@peterlee0127](https://github.com/peterlee0127)) + +- Wrong position of notifications alert in accounts preference page ([#9289](https://github.com/RocketChat/Rocket.Chat/pull/9289) by [@HammyHavoc](https://github.com/HammyHavoc)) + +
+🔍 Minor changes + + +- [DOCS] Update the links of our Mobile Apps in Features topic ([#9469](https://github.com/RocketChat/Rocket.Chat/pull/9469) by [@rafaelks](https://github.com/rafaelks)) + +- [Fix] oauth not working because of email array ([#9173](https://github.com/RocketChat/Rocket.Chat/pull/9173)) + +- Add community bot ([#9439](https://github.com/RocketChat/Rocket.Chat/pull/9439)) + +- Add curl, its missing on worker nodes so has to be explicitly added ([#9248](https://github.com/RocketChat/Rocket.Chat/pull/9248)) + +- Dependencies Update ([#9197](https://github.com/RocketChat/Rocket.Chat/pull/9197)) + +- Develop sync - Bump version to 0.61.0-develop ([#9260](https://github.com/RocketChat/Rocket.Chat/pull/9260) by [@cpitman](https://github.com/cpitman) & [@karlprieb](https://github.com/karlprieb)) + +- Do not change room icon color when room is unread ([#9257](https://github.com/RocketChat/Rocket.Chat/pull/9257)) + +- Fix test without oplog by waiting a successful login on changing users ([#9146](https://github.com/RocketChat/Rocket.Chat/pull/9146)) + +- Fix: Can’t login using LDAP via REST ([#9162](https://github.com/RocketChat/Rocket.Chat/pull/9162)) + +- Fix: Change 'Wordpress' to 'WordPress ([#9291](https://github.com/RocketChat/Rocket.Chat/pull/9291) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: Clear all unreads modal not closing after confirming ([#9137](https://github.com/RocketChat/Rocket.Chat/pull/9137)) + +- Fix: Click on channel name - hover area bigger than link area ([#9165](https://github.com/RocketChat/Rocket.Chat/pull/9165)) + +- Fix: Confirmation modals showing `Send` button ([#9136](https://github.com/RocketChat/Rocket.Chat/pull/9136)) + +- Fix: English language improvements ([#9299](https://github.com/RocketChat/Rocket.Chat/pull/9299) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: Improved README.md ([#9290](https://github.com/RocketChat/Rocket.Chat/pull/9290) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: Message action quick buttons drops if "new message" divider is being shown ([#9138](https://github.com/RocketChat/Rocket.Chat/pull/9138)) + +- Fix: Messages being displayed in reverse order ([#9144](https://github.com/RocketChat/Rocket.Chat/pull/9144)) + +- Fix: Missing option to set user's avatar from a url ([#9229](https://github.com/RocketChat/Rocket.Chat/pull/9229)) + +- Fix: Multiple unread indicators ([#9120](https://github.com/RocketChat/Rocket.Chat/pull/9120)) + +- Fix: README typo ([#9286](https://github.com/RocketChat/Rocket.Chat/pull/9286) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: Rooms and users are using different avatar style ([#9196](https://github.com/RocketChat/Rocket.Chat/pull/9196)) + +- Fix: Sidebar item on rtl and small devices ([#9247](https://github.com/RocketChat/Rocket.Chat/pull/9247) by [@karlprieb](https://github.com/karlprieb)) + +- Fix: Snippet name to not showing in snippet list ([#9184](https://github.com/RocketChat/Rocket.Chat/pull/9184) by [@karlprieb](https://github.com/karlprieb)) + +- Fix: UI: Descenders of glyphs are cut off ([#9181](https://github.com/RocketChat/Rocket.Chat/pull/9181)) + +- Fix: UI: Descenders of glyphs are cut off ([#9166](https://github.com/RocketChat/Rocket.Chat/pull/9166)) + +- Fix: Unneeded warning in payload of REST API calls ([#9240](https://github.com/RocketChat/Rocket.Chat/pull/9240)) + +- Fix: Unread line ([#9149](https://github.com/RocketChat/Rocket.Chat/pull/9149)) + +- Fix: updating last message on message edit or delete ([#9227](https://github.com/RocketChat/Rocket.Chat/pull/9227)) + +- Fix: Upload access control too distributed ([#9215](https://github.com/RocketChat/Rocket.Chat/pull/9215)) + +- Fix: Username find is matching partially ([#9217](https://github.com/RocketChat/Rocket.Chat/pull/9217)) + +- Fix/api me only return verified ([#9183](https://github.com/RocketChat/Rocket.Chat/pull/9183)) + +- LingoHub based on develop ([#9256](https://github.com/RocketChat/Rocket.Chat/pull/9256)) + +- Prevent NPM package-lock inside livechat ([#9504](https://github.com/RocketChat/Rocket.Chat/pull/9504)) + +- Release 0.61.0 ([#9533](https://github.com/RocketChat/Rocket.Chat/pull/9533) by [@karlprieb](https://github.com/karlprieb) & [@ryjones](https://github.com/ryjones)) + +- Replace postcss-nesting with postcss-nested ([#9200](https://github.com/RocketChat/Rocket.Chat/pull/9200)) + +- Typo: German language file ([#9190](https://github.com/RocketChat/Rocket.Chat/pull/9190) by [@TheReal1604](https://github.com/TheReal1604)) + +- Update license ([#9490](https://github.com/RocketChat/Rocket.Chat/pull/9490)) + +- Update Marked dependecy to 0.3.9 ([#9346](https://github.com/RocketChat/Rocket.Chat/pull/9346)) + +- Use correct version of Mailparser module ([#9356](https://github.com/RocketChat/Rocket.Chat/pull/9356)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@HammyHavoc](https://github.com/HammyHavoc) +- [@TheReal1604](https://github.com/TheReal1604) +- [@cpitman](https://github.com/cpitman) +- [@cyclops24](https://github.com/cyclops24) +- [@gdelavald](https://github.com/gdelavald) +- [@ggrish](https://github.com/ggrish) +- [@karlprieb](https://github.com/karlprieb) +- [@paulovitin](https://github.com/paulovitin) +- [@peterlee0127](https://github.com/peterlee0127) +- [@pierreozoux](https://github.com/pierreozoux) +- [@rafaelks](https://github.com/rafaelks) +- [@ramrami](https://github.com/ramrami) +- [@rndmh3ro](https://github.com/rndmh3ro) +- [@ryjones](https://github.com/ryjones) +- [@vitor-nagao](https://github.com/vitor-nagao) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@frdmn](https://github.com/frdmn) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.60.4 +`2018-01-10 · 5 🐛 · 2 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### 🐛 Bug fixes + + +- announcement hyperlink color ([#9330](https://github.com/RocketChat/Rocket.Chat/pull/9330) by [@karlprieb](https://github.com/karlprieb)) + +- Deleting message with store last message not removing ([#9335](https://github.com/RocketChat/Rocket.Chat/pull/9335)) + +- last message cutting on bottom ([#9345](https://github.com/RocketChat/Rocket.Chat/pull/9345) by [@karlprieb](https://github.com/karlprieb)) + +- LDAP TLS not working in some cases ([#9343](https://github.com/RocketChat/Rocket.Chat/pull/9343)) + +- popover on safari for iOS ([#9328](https://github.com/RocketChat/Rocket.Chat/pull/9328) by [@karlprieb](https://github.com/karlprieb)) + +
+🔍 Minor changes + + +- Release 0.60.4 ([#9377](https://github.com/RocketChat/Rocket.Chat/pull/9377)) + +- Update Marked dependecy to 0.3.9 ([#9346](https://github.com/RocketChat/Rocket.Chat/pull/9346)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@karlprieb](https://github.com/karlprieb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.60.3 +`2018-01-03 · 6 🐛 · 5 🔍 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### 🐛 Bug fixes + + +- custom emoji size on sidebar item ([#9314](https://github.com/RocketChat/Rocket.Chat/pull/9314) by [@karlprieb](https://github.com/karlprieb)) + +- English Typos ([#9285](https://github.com/RocketChat/Rocket.Chat/pull/9285) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- LDAP/AD is not importing all users ([#9309](https://github.com/RocketChat/Rocket.Chat/pull/9309)) + +- sidebar footer padding ([#9249](https://github.com/RocketChat/Rocket.Chat/pull/9249) by [@karlprieb](https://github.com/karlprieb)) + +- svg render on firefox ([#9311](https://github.com/RocketChat/Rocket.Chat/pull/9311) by [@karlprieb](https://github.com/karlprieb)) + +- Wrong position of notifications alert in accounts preference page ([#9289](https://github.com/RocketChat/Rocket.Chat/pull/9289) by [@HammyHavoc](https://github.com/HammyHavoc)) + +
+🔍 Minor changes + + +- Fix: Change 'Wordpress' to 'WordPress ([#9291](https://github.com/RocketChat/Rocket.Chat/pull/9291) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: English language improvements ([#9299](https://github.com/RocketChat/Rocket.Chat/pull/9299) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: Improved README.md ([#9290](https://github.com/RocketChat/Rocket.Chat/pull/9290) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Fix: README typo ([#9286](https://github.com/RocketChat/Rocket.Chat/pull/9286) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Release 0.60.3 ([#9320](https://github.com/RocketChat/Rocket.Chat/pull/9320) by [@HammyHavoc](https://github.com/HammyHavoc)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@HammyHavoc](https://github.com/HammyHavoc) +- [@karlprieb](https://github.com/karlprieb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 0.60.2 +`2017-12-29 · 3 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### 🐛 Bug fixes + + +- Missing translations ([#9272](https://github.com/RocketChat/Rocket.Chat/pull/9272)) + +- Remove sweetalert from livechat facebook integration page ([#9274](https://github.com/RocketChat/Rocket.Chat/pull/9274)) + +- Restore translations from other languages ([#9277](https://github.com/RocketChat/Rocket.Chat/pull/9277)) + +
+🔍 Minor changes + + +- Release 0.60.2 ([#9280](https://github.com/RocketChat/Rocket.Chat/pull/9280)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.60.1 +`2017-12-27 · 1 🐛 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### 🐛 Bug fixes + + +- File access not working when passing credentials via querystring ([#9262](https://github.com/RocketChat/Rocket.Chat/pull/9262)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 0.60.0 +`2017-12-27 · 33 🎉 · 171 🐛 · 99 🔍 · 71 👩‍💻👨‍💻` + +### Engine versions +- Node: `8.9.3` +- NPM: `5.5.1` + +### 🎉 New features + + +- Add "Favorites" and "Mark as read" options to the room list ([#8915](https://github.com/RocketChat/Rocket.Chat/pull/8915) by [@karlprieb](https://github.com/karlprieb)) + +- Add "real name change" setting ([#8739](https://github.com/RocketChat/Rocket.Chat/pull/8739) by [@AmShaegar13](https://github.com/AmShaegar13)) + +- Add new API endpoints ([#8947](https://github.com/RocketChat/Rocket.Chat/pull/8947)) + +- Add RD Station integration to livechat ([#8304](https://github.com/RocketChat/Rocket.Chat/pull/8304)) + +- Add settings for allow user direct messages to yourself ([#8066](https://github.com/RocketChat/Rocket.Chat/pull/8066) by [@lindoelio](https://github.com/lindoelio)) + +- Add sweet alert to video call tab ([#8108](https://github.com/RocketChat/Rocket.Chat/pull/8108)) + +- Add yunohost.org installation method to Readme.md ([#8037](https://github.com/RocketChat/Rocket.Chat/pull/8037) by [@selamanse](https://github.com/selamanse)) + +- Added support for Dataporten's userid-feide scope ([#8902](https://github.com/RocketChat/Rocket.Chat/pull/8902) by [@torgeirl](https://github.com/torgeirl)) + +- Adds admin option to globally set mobile devices to always be notified regardless of presence status. ([#7641](https://github.com/RocketChat/Rocket.Chat/pull/7641) by [@stalley](https://github.com/stalley)) + +- Allow user's default preferences configuration ([#7285](https://github.com/RocketChat/Rocket.Chat/pull/7285) by [@goiaba](https://github.com/goiaba)) + +- code to get the updated messages ([#8857](https://github.com/RocketChat/Rocket.Chat/pull/8857)) + +- Describe file uploads when notifying by email ([#8924](https://github.com/RocketChat/Rocket.Chat/pull/8924)) + +- Displays QR code for manually entering when enabling 2fa ([#8143](https://github.com/RocketChat/Rocket.Chat/pull/8143)) + +- Facebook livechat integration ([#8807](https://github.com/RocketChat/Rocket.Chat/pull/8807)) + +- Feature/livechat hide email ([#8149](https://github.com/RocketChat/Rocket.Chat/pull/8149) by [@icosamuel](https://github.com/icosamuel) & [@sarbasamuel](https://github.com/sarbasamuel)) + +- Improve room types API and usages ([#9009](https://github.com/RocketChat/Rocket.Chat/pull/9009) by [@mrsimpson](https://github.com/mrsimpson)) + +- Make Custom oauth accept nested usernameField ([#9066](https://github.com/RocketChat/Rocket.Chat/pull/9066) by [@pierreozoux](https://github.com/pierreozoux)) + +- make sidebar item width 100% ([#8362](https://github.com/RocketChat/Rocket.Chat/pull/8362) by [@karlprieb](https://github.com/karlprieb)) + +- Modal ([#9092](https://github.com/RocketChat/Rocket.Chat/pull/9092) by [@karlprieb](https://github.com/karlprieb)) + +- New Modal component ([#8882](https://github.com/RocketChat/Rocket.Chat/pull/8882) by [@karlprieb](https://github.com/karlprieb)) + +- Option to enable/disable auto away and configure timer ([#8029](https://github.com/RocketChat/Rocket.Chat/pull/8029) by [@armand1m](https://github.com/armand1m)) + +- Rest API endpoints to list, get, and run commands ([#8531](https://github.com/RocketChat/Rocket.Chat/pull/8531)) + +- Room counter sidebar preference ([#8866](https://github.com/RocketChat/Rocket.Chat/pull/8866) by [@karlprieb](https://github.com/karlprieb)) + +- Save room's last message ([#8979](https://github.com/RocketChat/Rocket.Chat/pull/8979) by [@karlprieb](https://github.com/karlprieb)) + +- Send category and title fields to iOS push notification ([#8905](https://github.com/RocketChat/Rocket.Chat/pull/8905)) + +- Sender's name in email notifications. ([#7999](https://github.com/RocketChat/Rocket.Chat/pull/7999) by [@pkgodara](https://github.com/pkgodara)) + +- Setting to disable MarkDown and enable AutoLinker ([#8459](https://github.com/RocketChat/Rocket.Chat/pull/8459)) + +- Smaller accountBox ([#8360](https://github.com/RocketChat/Rocket.Chat/pull/8360) by [@karlprieb](https://github.com/karlprieb)) + +- Token Controlled Access channels ([#8060](https://github.com/RocketChat/Rocket.Chat/pull/8060) by [@karlprieb](https://github.com/karlprieb) & [@lindoelio](https://github.com/lindoelio)) + +- Unify unread and mentions badge ([#8361](https://github.com/RocketChat/Rocket.Chat/pull/8361) by [@karlprieb](https://github.com/karlprieb)) + +- Upgrade Meteor to 1.6 ([#8715](https://github.com/RocketChat/Rocket.Chat/pull/8715) by [@karlprieb](https://github.com/karlprieb)) + +- Upgrade to meteor 1.5.2 ([#8073](https://github.com/RocketChat/Rocket.Chat/pull/8073)) + +- Use enter separator rather than comma in highlight preferences + Auto refresh after change highlighted words ([#8433](https://github.com/RocketChat/Rocket.Chat/pull/8433) by [@cyclops24](https://github.com/cyclops24)) + +### 🐛 Bug fixes + + +- "*.members" rest api being useless and only returning usernames ([#8147](https://github.com/RocketChat/Rocket.Chat/pull/8147)) + +- "Cancel button" on modal in RTL in Firefox 55 ([#8278](https://github.com/RocketChat/Rocket.Chat/pull/8278) by [@cyclops24](https://github.com/cyclops24)) + +- "Enter usernames" placeholder is cutting in "create channel" view ([#9194](https://github.com/RocketChat/Rocket.Chat/pull/9194) by [@TheReal1604](https://github.com/TheReal1604)) + +- "Use Emoji" preference not working ([#9182](https://github.com/RocketChat/Rocket.Chat/pull/9182) by [@karlprieb](https://github.com/karlprieb)) + +- **i18n:** My Profile & README.md links ([#8270](https://github.com/RocketChat/Rocket.Chat/pull/8270) by [@Rzeszow](https://github.com/Rzeszow)) + +- **PL:** Polish translation ([#7989](https://github.com/RocketChat/Rocket.Chat/pull/7989) by [@Rzeszow](https://github.com/Rzeszow)) + +- Add admin audio preferences translations ([#8094](https://github.com/RocketChat/Rocket.Chat/pull/8094)) + +- Add historic chats icon in Livechat ([#8708](https://github.com/RocketChat/Rocket.Chat/pull/8708) by [@mrsimpson](https://github.com/mrsimpson)) + +- Add needed dependency for snaps ([#8389](https://github.com/RocketChat/Rocket.Chat/pull/8389)) + +- Add padding on messages to allow space to the action buttons ([#7971](https://github.com/RocketChat/Rocket.Chat/pull/7971)) + +- Added afterUserCreated trigger after first CAS login ([#9022](https://github.com/RocketChat/Rocket.Chat/pull/9022) by [@AmShaegar13](https://github.com/AmShaegar13)) + +- Adds default search text padding for emoji search ([#7878](https://github.com/RocketChat/Rocket.Chat/pull/7878) by [@gdelavald](https://github.com/gdelavald)) + +- After deleting the room, cache is not synchronizing ([#8314](https://github.com/RocketChat/Rocket.Chat/pull/8314) by [@szluohua](https://github.com/szluohua)) + +- AmazonS3: Quote file.name for ContentDisposition for files with commas ([#8593](https://github.com/RocketChat/Rocket.Chat/pull/8593) by [@xenithorb](https://github.com/xenithorb)) + +- Amin menu not showing all items & File list breaking line ([#8299](https://github.com/RocketChat/Rocket.Chat/pull/8299) by [@karlprieb](https://github.com/karlprieb)) + +- API channel/group.members not sorting ([#8635](https://github.com/RocketChat/Rocket.Chat/pull/8635)) + +- Attachment icons alignment in LTR and RTL ([#8271](https://github.com/RocketChat/Rocket.Chat/pull/8271) by [@cyclops24](https://github.com/cyclops24)) + +- Audio message icon ([#8648](https://github.com/RocketChat/Rocket.Chat/pull/8648) by [@karlprieb](https://github.com/karlprieb)) + +- Autoupdate of CSS does not work when using a prefix ([#8107](https://github.com/RocketChat/Rocket.Chat/pull/8107) by [@Darkneon](https://github.com/Darkneon)) + +- Broken embedded view layout ([#7944](https://github.com/RocketChat/Rocket.Chat/pull/7944) by [@karlprieb](https://github.com/karlprieb)) + +- Broken emoji picker on firefox ([#7943](https://github.com/RocketChat/Rocket.Chat/pull/7943) by [@karlprieb](https://github.com/karlprieb)) + +- Call buttons with wrong margin on RTL ([#8307](https://github.com/RocketChat/Rocket.Chat/pull/8307) by [@karlprieb](https://github.com/karlprieb)) + +- Can't react on Read Only rooms even when enabled ([#8925](https://github.com/RocketChat/Rocket.Chat/pull/8925) by [@karlprieb](https://github.com/karlprieb)) + +- Can't use OAuth login against a Rocket.Chat OAuth server ([#9044](https://github.com/RocketChat/Rocket.Chat/pull/9044)) + +- Cannot edit or delete custom sounds ([#8889](https://github.com/RocketChat/Rocket.Chat/pull/8889) by [@ccfang](https://github.com/ccfang)) + +- CAS does not share secrets when operating multiple server instances ([#8654](https://github.com/RocketChat/Rocket.Chat/pull/8654) by [@AmShaegar13](https://github.com/AmShaegar13)) + +- Change old 'rocketbot' username to 'InternalHubot_Username' setting ([#8928](https://github.com/RocketChat/Rocket.Chat/pull/8928) by [@ramrami](https://github.com/ramrami)) + +- Change the unread messages style ([#8883](https://github.com/RocketChat/Rocket.Chat/pull/8883) by [@karlprieb](https://github.com/karlprieb)) + +- Changed all rocket.chat/docs/ to docs.rocket.chat/ ([#8588](https://github.com/RocketChat/Rocket.Chat/pull/8588) by [@RekkyRek](https://github.com/RekkyRek)) + +- Changed oembedUrlWidget to prefer og:image and twitter:image over msapplication-TileImage ([#9012](https://github.com/RocketChat/Rocket.Chat/pull/9012) by [@wferris722](https://github.com/wferris722)) + +- channel create scroll on small screens ([#9168](https://github.com/RocketChat/Rocket.Chat/pull/9168) by [@karlprieb](https://github.com/karlprieb)) + +- Channel page error ([#9091](https://github.com/RocketChat/Rocket.Chat/pull/9091) by [@ggrish](https://github.com/ggrish)) + +- Chat box no longer auto-focuses when typing ([#7984](https://github.com/RocketChat/Rocket.Chat/pull/7984)) + +- Check attachments is defined before accessing first element ([#8295](https://github.com/RocketChat/Rocket.Chat/pull/8295) by [@Darkneon](https://github.com/Darkneon)) + +- Check for mention-all permission in room scope ([#8931](https://github.com/RocketChat/Rocket.Chat/pull/8931)) + +- Color reset when default value editor is different ([#8543](https://github.com/RocketChat/Rocket.Chat/pull/8543)) + +- Contextual errors for this and RegExp declarations in IRC module ([#8656](https://github.com/RocketChat/Rocket.Chat/pull/8656) by [@Pharserror](https://github.com/Pharserror)) + +- copy to clipboard and update clipboard.js library ([#8039](https://github.com/RocketChat/Rocket.Chat/pull/8039) by [@karlprieb](https://github.com/karlprieb)) + +- Creating channels on Firefox ([#9109](https://github.com/RocketChat/Rocket.Chat/pull/9109) by [@karlprieb](https://github.com/karlprieb)) + +- Cursor position when reply on safari ([#9185](https://github.com/RocketChat/Rocket.Chat/pull/9185) by [@karlprieb](https://github.com/karlprieb)) + +- Custom OAuth: Not able to set different token place for routes ([#9034](https://github.com/RocketChat/Rocket.Chat/pull/9034)) + +- disabled katex tooltip on messageBox ([#8386](https://github.com/RocketChat/Rocket.Chat/pull/8386)) + +- DM email notifications always being sent regardless of account setting ([#8917](https://github.com/RocketChat/Rocket.Chat/pull/8917) by [@ashward](https://github.com/ashward)) + +- Do not block room while loading history ([#9121](https://github.com/RocketChat/Rocket.Chat/pull/9121)) + +- Do not send joinCode field to clients ([#8527](https://github.com/RocketChat/Rocket.Chat/pull/8527)) + +- Document README.md. Drupal repo out of date ([#7948](https://github.com/RocketChat/Rocket.Chat/pull/7948) by [@Lawri-van-Buel](https://github.com/Lawri-van-Buel)) + +- Don't strip trailing slash on autolinker urls ([#8812](https://github.com/RocketChat/Rocket.Chat/pull/8812) by [@jwilkins](https://github.com/jwilkins)) + +- Double scroll on 'keyboard shortcuts' menu in sidepanel ([#7927](https://github.com/RocketChat/Rocket.Chat/pull/7927) by [@aditya19496](https://github.com/aditya19496)) + +- Duplicate code in rest api letting in a few bugs with the rest api ([#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408)) + +- Dynamic popover ([#8101](https://github.com/RocketChat/Rocket.Chat/pull/8101) by [@karlprieb](https://github.com/karlprieb)) + +- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317)) + +- Email verification indicator added ([#7923](https://github.com/RocketChat/Rocket.Chat/pull/7923) by [@aditya19496](https://github.com/aditya19496)) + +- Emoji Picker hidden for reactions in RTL ([#8300](https://github.com/RocketChat/Rocket.Chat/pull/8300) by [@karlprieb](https://github.com/karlprieb)) + +- Emoji size on last message preview ([#9186](https://github.com/RocketChat/Rocket.Chat/pull/9186) by [@karlprieb](https://github.com/karlprieb)) + +- Enable CORS for Restivus ([#8671](https://github.com/RocketChat/Rocket.Chat/pull/8671) by [@mrsimpson](https://github.com/mrsimpson)) + +- encode filename in url to prevent links breaking ([#8551](https://github.com/RocketChat/Rocket.Chat/pull/8551) by [@joesitton](https://github.com/joesitton)) + +- Error when saving integration with symbol as only trigger ([#9023](https://github.com/RocketChat/Rocket.Chat/pull/9023)) + +- Error when user roles is missing or is invalid ([#9040](https://github.com/RocketChat/Rocket.Chat/pull/9040) by [@paulovitin](https://github.com/paulovitin)) + +- Execute meteor reset on TRAVIS_TAG builds ([#8310](https://github.com/RocketChat/Rocket.Chat/pull/8310)) + +- File upload not working on IE and weird on Chrome ([#9206](https://github.com/RocketChat/Rocket.Chat/pull/9206) by [@karlprieb](https://github.com/karlprieb)) + +- fix color on unread messages ([#8282](https://github.com/RocketChat/Rocket.Chat/pull/8282)) + +- Fix e-mail message forward ([#8645](https://github.com/RocketChat/Rocket.Chat/pull/8645)) + +- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754)) + +- fix emoji package path so they show up correctly in browser ([#8822](https://github.com/RocketChat/Rocket.Chat/pull/8822) by [@ryoshimizu](https://github.com/ryoshimizu)) + +- Fix google play logo on repo README ([#7912](https://github.com/RocketChat/Rocket.Chat/pull/7912) by [@luizbills](https://github.com/luizbills)) + +- Fix guest pool inquiry taking ([#8577](https://github.com/RocketChat/Rocket.Chat/pull/8577)) + +- Fix iframe login API response (issue #8145) ([#8146](https://github.com/RocketChat/Rocket.Chat/pull/8146) by [@astax-t](https://github.com/astax-t)) + +- Fix livechat toggle UI issue ([#7904](https://github.com/RocketChat/Rocket.Chat/pull/7904)) + +- Fix placeholders in account profile ([#7945](https://github.com/RocketChat/Rocket.Chat/pull/7945) by [@josiasds](https://github.com/josiasds)) + +- Fix setting user avatar on LDAP login ([#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099)) + +- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963)) + +- Fix typos ([#8679](https://github.com/RocketChat/Rocket.Chat/pull/8679)) + +- fixed some typos ([#8787](https://github.com/RocketChat/Rocket.Chat/pull/8787) by [@TheReal1604](https://github.com/TheReal1604)) + +- flextab height on smaller screens ([#8994](https://github.com/RocketChat/Rocket.Chat/pull/8994) by [@karlprieb](https://github.com/karlprieb)) + +- go to replied message ([#9172](https://github.com/RocketChat/Rocket.Chat/pull/9172) by [@karlprieb](https://github.com/karlprieb)) + +- Highlighted color height issue ([#8431](https://github.com/RocketChat/Rocket.Chat/pull/8431) by [@cyclops24](https://github.com/cyclops24)) + +- hyperlink style on sidebar footer ([#7882](https://github.com/RocketChat/Rocket.Chat/pull/7882) by [@karlprieb](https://github.com/karlprieb)) + +- i18n'd Resend_verification_mail, username_initials, upload avatar ([#8721](https://github.com/RocketChat/Rocket.Chat/pull/8721) by [@arungalva](https://github.com/arungalva)) + +- if ogImage exists use it over image in oembedUrlWidget ([#9000](https://github.com/RocketChat/Rocket.Chat/pull/9000) by [@satyapramodh](https://github.com/satyapramodh)) + +- Importers failing when usernames exists but cases don't match and improve the importer framework's performance ([#8966](https://github.com/RocketChat/Rocket.Chat/pull/8966)) + +- Importers not recovering when an error occurs ([#9134](https://github.com/RocketChat/Rocket.Chat/pull/9134)) + +- Improved grammar and made it clearer to the user ([#8795](https://github.com/RocketChat/Rocket.Chat/pull/8795) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Improving consistency of UX ([#8796](https://github.com/RocketChat/Rocket.Chat/pull/8796) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Incorrect URL for login terms when using prefix ([#8211](https://github.com/RocketChat/Rocket.Chat/pull/8211) by [@Darkneon](https://github.com/Darkneon)) + +- Invalid Code message for password protected channel ([#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491)) + +- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048)) + +- Issue #8166 where empty analytics setting breaks to load Piwik script ([#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) by [@ruKurz](https://github.com/ruKurz)) + +- Katex markdown link changed ([#8948](https://github.com/RocketChat/Rocket.Chat/pull/8948) by [@mritunjaygoutam12](https://github.com/mritunjaygoutam12)) + +- Last sent message reoccurs in textbox ([#9169](https://github.com/RocketChat/Rocket.Chat/pull/9169)) + +- LDAP login error regression at 0.59.0 ([#8541](https://github.com/RocketChat/Rocket.Chat/pull/8541)) + +- LDAP memory issues when pagination is not available ([#8457](https://github.com/RocketChat/Rocket.Chat/pull/8457)) + +- LDAP not merging existent users && Wrong id link generation ([#8613](https://github.com/RocketChat/Rocket.Chat/pull/8613)) + +- LDAP not respecting UTF8 characters & Sync Interval not working ([#8691](https://github.com/RocketChat/Rocket.Chat/pull/8691)) + +- Link for channels are not rendering correctly ([#8985](https://github.com/RocketChat/Rocket.Chat/pull/8985) by [@karlprieb](https://github.com/karlprieb)) + +- livechat icon ([#7886](https://github.com/RocketChat/Rocket.Chat/pull/7886) by [@karlprieb](https://github.com/karlprieb)) + +- long filename overlaps cancel button in progress bar ([#8868](https://github.com/RocketChat/Rocket.Chat/pull/8868) by [@joesitton](https://github.com/joesitton)) + +- Long room announcement cut off ([#8907](https://github.com/RocketChat/Rocket.Chat/pull/8907) by [@karlprieb](https://github.com/karlprieb)) + +- Made welcome emails more readable ([#9193](https://github.com/RocketChat/Rocket.Chat/pull/9193) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Make mentions and menu icons color darker ([#8922](https://github.com/RocketChat/Rocket.Chat/pull/8922) by [@karlprieb](https://github.com/karlprieb)) + +- make the cross icon on user selection at channel creation page work ([#9176](https://github.com/RocketChat/Rocket.Chat/pull/9176) by [@karlprieb](https://github.com/karlprieb) & [@vitor-nagao](https://github.com/vitor-nagao)) + +- Makes text action menu width based on content size ([#7887](https://github.com/RocketChat/Rocket.Chat/pull/7887) by [@gdelavald](https://github.com/gdelavald)) + +- Markdown being rendered in code tags ([#7965](https://github.com/RocketChat/Rocket.Chat/pull/7965)) + +- Mention unread indicator was removed ([#8316](https://github.com/RocketChat/Rocket.Chat/pull/8316)) + +- message actions over unread bar ([#7885](https://github.com/RocketChat/Rocket.Chat/pull/7885) by [@karlprieb](https://github.com/karlprieb)) + +- Message popup menu on mobile/cordova ([#8634](https://github.com/RocketChat/Rocket.Chat/pull/8634) by [@karlprieb](https://github.com/karlprieb)) + +- message-box autogrow ([#8019](https://github.com/RocketChat/Rocket.Chat/pull/8019) by [@karlprieb](https://github.com/karlprieb)) + +- Message-box autogrow flick ([#8932](https://github.com/RocketChat/Rocket.Chat/pull/8932) by [@karlprieb](https://github.com/karlprieb)) + +- Migration 103 wrong converting primrary colors ([#8544](https://github.com/RocketChat/Rocket.Chat/pull/8544)) + +- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357)) + +- Missing placeholder translations ([#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286)) + +- Missing scroll at create channel page ([#8637](https://github.com/RocketChat/Rocket.Chat/pull/8637) by [@karlprieb](https://github.com/karlprieb)) + +- Missing sidebar footer padding ([#8884](https://github.com/RocketChat/Rocket.Chat/pull/8884) by [@karlprieb](https://github.com/karlprieb)) + +- modal data on enter and modal style for file preview ([#9171](https://github.com/RocketChat/Rocket.Chat/pull/9171) by [@karlprieb](https://github.com/karlprieb)) + +- Move emojipicker css to theme package ([#9243](https://github.com/RocketChat/Rocket.Chat/pull/9243) by [@karlprieb](https://github.com/karlprieb)) + +- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059)) + +- Notification is not sent when a video conference start ([#8828](https://github.com/RocketChat/Rocket.Chat/pull/8828) by [@deepseainside75](https://github.com/deepseainside75) & [@stefanoverducci](https://github.com/stefanoverducci)) + +- Notification sound is not disabling when busy ([#9042](https://github.com/RocketChat/Rocket.Chat/pull/9042)) + +- OTR buttons padding ([#7954](https://github.com/RocketChat/Rocket.Chat/pull/7954) by [@karlprieb](https://github.com/karlprieb)) + +- popover position on mobile ([#7883](https://github.com/RocketChat/Rocket.Chat/pull/7883) by [@karlprieb](https://github.com/karlprieb)) + +- Prevent autotranslate tokens race condition ([#8046](https://github.com/RocketChat/Rocket.Chat/pull/8046)) + +- Put delete action on another popover group ([#8315](https://github.com/RocketChat/Rocket.Chat/pull/8315) by [@karlprieb](https://github.com/karlprieb)) + +- Range Slider Value label has bug in RTL ([#8441](https://github.com/RocketChat/Rocket.Chat/pull/8441) by [@cyclops24](https://github.com/cyclops24)) + +- Recent emojis not updated when adding via text ([#7998](https://github.com/RocketChat/Rocket.Chat/pull/7998)) + +- remove accountBox from admin menu ([#8358](https://github.com/RocketChat/Rocket.Chat/pull/8358) by [@karlprieb](https://github.com/karlprieb)) + +- Remove break change in Realtime API ([#7895](https://github.com/RocketChat/Rocket.Chat/pull/7895)) + +- Remove sidebar header on admin embedded version ([#8334](https://github.com/RocketChat/Rocket.Chat/pull/8334) by [@karlprieb](https://github.com/karlprieb)) + +- REST API file upload not respecting size limit ([#9108](https://github.com/RocketChat/Rocket.Chat/pull/9108)) + +- RTL ([#8112](https://github.com/RocketChat/Rocket.Chat/pull/8112)) + +- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047)) + +- Scrollbar not using new style ([#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190)) + +- search results position on sidebar ([#7881](https://github.com/RocketChat/Rocket.Chat/pull/7881) by [@karlprieb](https://github.com/karlprieb)) + +- Set correct Twitter link ([#8830](https://github.com/RocketChat/Rocket.Chat/pull/8830) by [@jotafeldmann](https://github.com/jotafeldmann)) + +- Settings description not showing ([#8122](https://github.com/RocketChat/Rocket.Chat/pull/8122)) + +- Show leader on first load ([#7712](https://github.com/RocketChat/Rocket.Chat/pull/7712) by [@danischreiber](https://github.com/danischreiber)) + +- Show modal with announcement ([#9241](https://github.com/RocketChat/Rocket.Chat/pull/9241) by [@karlprieb](https://github.com/karlprieb)) + +- show oauth logins when adblock is used ([#9170](https://github.com/RocketChat/Rocket.Chat/pull/9170) by [@karlprieb](https://github.com/karlprieb)) + +- Show real name of current user at top of side nav if setting enabled ([#8718](https://github.com/RocketChat/Rocket.Chat/pull/8718) by [@alexbrazier](https://github.com/alexbrazier)) + +- Sidebar and RTL alignments ([#8154](https://github.com/RocketChat/Rocket.Chat/pull/8154) by [@karlprieb](https://github.com/karlprieb)) + +- sidebar buttons and badge paddings ([#7888](https://github.com/RocketChat/Rocket.Chat/pull/7888) by [@karlprieb](https://github.com/karlprieb)) + +- Sidebar item menu position in RTL ([#8397](https://github.com/RocketChat/Rocket.Chat/pull/8397) by [@cyclops24](https://github.com/cyclops24)) + +- sidebar paddings ([#7880](https://github.com/RocketChat/Rocket.Chat/pull/7880) by [@karlprieb](https://github.com/karlprieb)) + +- Slack import failing and not being able to be restarted ([#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390)) + +- Small alignment fixes ([#7970](https://github.com/RocketChat/Rocket.Chat/pull/7970)) + +- snap install by setting grpc package used by google/vision to 1.6.6 ([#9029](https://github.com/RocketChat/Rocket.Chat/pull/9029)) + +- Snippetted messages not working ([#8937](https://github.com/RocketChat/Rocket.Chat/pull/8937) by [@karlprieb](https://github.com/karlprieb)) + +- Some UI problems on 0.60 ([#9095](https://github.com/RocketChat/Rocket.Chat/pull/9095) by [@karlprieb](https://github.com/karlprieb)) + +- Sort direct messages by full name if show real names setting enabled ([#8717](https://github.com/RocketChat/Rocket.Chat/pull/8717) by [@alexbrazier](https://github.com/alexbrazier)) + +- status and active room colors on sidebar ([#7960](https://github.com/RocketChat/Rocket.Chat/pull/7960) by [@karlprieb](https://github.com/karlprieb)) + +- Sync of non existent field throws exception ([#8006](https://github.com/RocketChat/Rocket.Chat/pull/8006) by [@goiaba](https://github.com/goiaba)) + +- Text area lost text when page reloads ([#8159](https://github.com/RocketChat/Rocket.Chat/pull/8159)) + +- TypeError: Cannot read property 't' of undefined ([#8298](https://github.com/RocketChat/Rocket.Chat/pull/8298)) + +- Typo Fix ([#8938](https://github.com/RocketChat/Rocket.Chat/pull/8938) by [@seangeleno](https://github.com/seangeleno)) + +- Uncessary route reload break some routes ([#8514](https://github.com/RocketChat/Rocket.Chat/pull/8514)) + +- Unread bar position when room have announcement ([#9188](https://github.com/RocketChat/Rocket.Chat/pull/9188) by [@karlprieb](https://github.com/karlprieb)) + +- Update insecure moment.js dependency ([#9046](https://github.com/RocketChat/Rocket.Chat/pull/9046) by [@robbyoconnor](https://github.com/robbyoconnor)) + +- Update pt-BR translation ([#8655](https://github.com/RocketChat/Rocket.Chat/pull/8655) by [@rodorgas](https://github.com/rodorgas)) + +- Update Rocket.Chat for sandstorm ([#9062](https://github.com/RocketChat/Rocket.Chat/pull/9062) by [@peterlee0127](https://github.com/peterlee0127)) + +- Update rocketchat:streamer to be compatible with previous version ([#9094](https://github.com/RocketChat/Rocket.Chat/pull/9094)) + +- Use encodeURI in AmazonS3 contentDisposition file.name to prevent fail ([#9024](https://github.com/RocketChat/Rocket.Chat/pull/9024) by [@paulovitin](https://github.com/paulovitin)) + +- User avatar in DM list. ([#8210](https://github.com/RocketChat/Rocket.Chat/pull/8210)) + +- User email settings on DM ([#8810](https://github.com/RocketChat/Rocket.Chat/pull/8810) by [@karlprieb](https://github.com/karlprieb)) + +- Username clipping on firefox ([#8716](https://github.com/RocketChat/Rocket.Chat/pull/8716) by [@karlprieb](https://github.com/karlprieb)) + +- username ellipsis on firefox ([#7953](https://github.com/RocketChat/Rocket.Chat/pull/7953) by [@karlprieb](https://github.com/karlprieb)) + +- Various LDAP issues & Missing pagination ([#8372](https://github.com/RocketChat/Rocket.Chat/pull/8372)) + +- Vertical menu on flex-tab ([#7988](https://github.com/RocketChat/Rocket.Chat/pull/7988) by [@karlprieb](https://github.com/karlprieb)) + +- Window exception when parsing Markdown on server ([#7893](https://github.com/RocketChat/Rocket.Chat/pull/7893)) + +- Wrong colors after migration 103 ([#8547](https://github.com/RocketChat/Rocket.Chat/pull/8547)) + +- Wrong file name when upload to AWS S3 ([#8296](https://github.com/RocketChat/Rocket.Chat/pull/8296)) + +- Wrong message when reseting password and 2FA is enabled ([#8489](https://github.com/RocketChat/Rocket.Chat/pull/8489)) + +- Wrong room counter name ([#9013](https://github.com/RocketChat/Rocket.Chat/pull/9013) by [@karlprieb](https://github.com/karlprieb)) + +- Xenforo [BD]API for 'user.user_id; instead of 'id' ([#8968](https://github.com/RocketChat/Rocket.Chat/pull/8968) by [@wesnspace](https://github.com/wesnspace)) + +
+🔍 Minor changes + + +- [DOCS] Add native mobile app links into README and update button images ([#7909](https://github.com/RocketChat/Rocket.Chat/pull/7909) by [@rafaelks](https://github.com/rafaelks)) + +- [FIX-RC] Mobile file upload not working ([#8331](https://github.com/RocketChat/Rocket.Chat/pull/8331) by [@karlprieb](https://github.com/karlprieb)) + +- [Fix] Store Outgoing Integration Result as String in Mongo ([#8413](https://github.com/RocketChat/Rocket.Chat/pull/8413) by [@cpitman](https://github.com/cpitman)) + +- [MOVE] Move archiveroom command to client/server folders ([#8140](https://github.com/RocketChat/Rocket.Chat/pull/8140) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move create command to client/server folder ([#8139](https://github.com/RocketChat/Rocket.Chat/pull/8139) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move favico to client folder ([#8077](https://github.com/RocketChat/Rocket.Chat/pull/8077) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move files from emojione to client/server folders ([#8078](https://github.com/RocketChat/Rocket.Chat/pull/8078) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move files from slashcommands-unarchive to client/server folders ([#8084](https://github.com/RocketChat/Rocket.Chat/pull/8084) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move invite command to client/server folder ([#8138](https://github.com/RocketChat/Rocket.Chat/pull/8138) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move inviteall command to client/server folder ([#8137](https://github.com/RocketChat/Rocket.Chat/pull/8137) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move join command to client/server folder ([#8136](https://github.com/RocketChat/Rocket.Chat/pull/8136) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move kick command to client/server folders ([#8135](https://github.com/RocketChat/Rocket.Chat/pull/8135) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move logger files to client/server folders ([#8150](https://github.com/RocketChat/Rocket.Chat/pull/8150) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move mentions files to client/server ([#8142](https://github.com/RocketChat/Rocket.Chat/pull/8142) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move slackbridge to client/server folders ([#8141](https://github.com/RocketChat/Rocket.Chat/pull/8141) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move slashcommands-open to client folder ([#8132](https://github.com/RocketChat/Rocket.Chat/pull/8132) by [@vcapretz](https://github.com/vcapretz)) + +- [MOVE] Move timesync files to client/server folders ([#8152](https://github.com/RocketChat/Rocket.Chat/pull/8152) by [@vcapretz](https://github.com/vcapretz)) + +- Add a few dots in readme.md ([#8906](https://github.com/RocketChat/Rocket.Chat/pull/8906) by [@dusta](https://github.com/dusta)) + +- Add curl, its missing on worker nodes so has to be explicitly added ([#9248](https://github.com/RocketChat/Rocket.Chat/pull/9248)) + +- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394)) + +- Added d2c.io to deployment ([#8975](https://github.com/RocketChat/Rocket.Chat/pull/8975) by [@mastappl](https://github.com/mastappl)) + +- Added RocketChatLauncher (SaaS) ([#6606](https://github.com/RocketChat/Rocket.Chat/pull/6606) by [@designgurudotorg](https://github.com/designgurudotorg)) + +- Adding: How to Install in WeDeploy ([#8036](https://github.com/RocketChat/Rocket.Chat/pull/8036) by [@thompsonemerson](https://github.com/thompsonemerson)) + +- Bump version to 0.60.0-develop ([#8820](https://github.com/RocketChat/Rocket.Chat/pull/8820) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- Change artifact path ([#8515](https://github.com/RocketChat/Rocket.Chat/pull/8515)) + +- Changed wording for "Maximum Allowed Message Size" ([#8872](https://github.com/RocketChat/Rocket.Chat/pull/8872) by [@HammyHavoc](https://github.com/HammyHavoc)) + +- Color variables migration ([#8463](https://github.com/RocketChat/Rocket.Chat/pull/8463) by [@karlprieb](https://github.com/karlprieb)) + +- Dependencies Update ([#9197](https://github.com/RocketChat/Rocket.Chat/pull/9197)) + +- Deps update ([#8273](https://github.com/RocketChat/Rocket.Chat/pull/8273)) + +- Develop sync ([#7866](https://github.com/RocketChat/Rocket.Chat/pull/7866)) + +- Do not change room icon color when room is unread ([#9257](https://github.com/RocketChat/Rocket.Chat/pull/9257)) + +- Enable AutoLinker back ([#8490](https://github.com/RocketChat/Rocket.Chat/pull/8490)) + +- Fix api regression (exception when deleting user) ([#9049](https://github.com/RocketChat/Rocket.Chat/pull/9049)) + +- Fix community links in readme ([#8589](https://github.com/RocketChat/Rocket.Chat/pull/8589)) + +- Fix Docker image build ([#8862](https://github.com/RocketChat/Rocket.Chat/pull/8862)) + +- Fix high CPU load when sending messages on large rooms (regression) ([#8520](https://github.com/RocketChat/Rocket.Chat/pull/8520)) + +- Fix link to .asc file on S3 ([#8829](https://github.com/RocketChat/Rocket.Chat/pull/8829)) + +- Fix more rtl issues ([#8194](https://github.com/RocketChat/Rocket.Chat/pull/8194) by [@karlprieb](https://github.com/karlprieb)) + +- Fix regression in api channels.members ([#9110](https://github.com/RocketChat/Rocket.Chat/pull/9110)) + +- Fix snap download url ([#8981](https://github.com/RocketChat/Rocket.Chat/pull/8981)) + +- Fix tag build ([#9084](https://github.com/RocketChat/Rocket.Chat/pull/9084)) + +- Fix test without oplog by waiting a successful login on changing users ([#9146](https://github.com/RocketChat/Rocket.Chat/pull/9146)) + +- Fix Travis CI build ([#8750](https://github.com/RocketChat/Rocket.Chat/pull/8750)) + +- Fix typo ([#8705](https://github.com/RocketChat/Rocket.Chat/pull/8705) by [@rmetzler](https://github.com/rmetzler)) + +- Fix: Account menu position on RTL ([#8416](https://github.com/RocketChat/Rocket.Chat/pull/8416) by [@karlprieb](https://github.com/karlprieb)) + +- Fix: Can’t login using LDAP via REST ([#9162](https://github.com/RocketChat/Rocket.Chat/pull/9162)) + +- Fix: Change password not working in new UI ([#8516](https://github.com/RocketChat/Rocket.Chat/pull/8516)) + +- Fix: Clear all unreads modal not closing after confirming ([#9137](https://github.com/RocketChat/Rocket.Chat/pull/9137)) + +- Fix: Click on channel name - hover area bigger than link area ([#9165](https://github.com/RocketChat/Rocket.Chat/pull/9165)) + +- Fix: Confirmation modals showing `Send` button ([#9136](https://github.com/RocketChat/Rocket.Chat/pull/9136)) + +- Fix: Message action quick buttons drops if "new message" divider is being shown ([#9138](https://github.com/RocketChat/Rocket.Chat/pull/9138)) + +- Fix: Messages being displayed in reverse order ([#9144](https://github.com/RocketChat/Rocket.Chat/pull/9144)) + +- Fix: Missing LDAP option to show internal logs ([#8417](https://github.com/RocketChat/Rocket.Chat/pull/8417)) + +- Fix: Missing LDAP reconnect setting ([#8414](https://github.com/RocketChat/Rocket.Chat/pull/8414)) + +- Fix: Missing option to set user's avatar from a url ([#9229](https://github.com/RocketChat/Rocket.Chat/pull/9229)) + +- Fix: Missing settings to configure LDAP size and page limits ([#8398](https://github.com/RocketChat/Rocket.Chat/pull/8398)) + +- Fix: Multiple unread indicators ([#9120](https://github.com/RocketChat/Rocket.Chat/pull/9120)) + +- Fix: Rooms and users are using different avatar style ([#9196](https://github.com/RocketChat/Rocket.Chat/pull/9196)) + +- Fix: Sidebar item on rtl and small devices ([#9247](https://github.com/RocketChat/Rocket.Chat/pull/9247) by [@karlprieb](https://github.com/karlprieb)) + +- Fix: Snippet name to not showing in snippet list ([#9184](https://github.com/RocketChat/Rocket.Chat/pull/9184) by [@karlprieb](https://github.com/karlprieb)) + +- Fix: UI: Descenders of glyphs are cut off ([#9166](https://github.com/RocketChat/Rocket.Chat/pull/9166)) + +- Fix: UI: Descenders of glyphs are cut off ([#9181](https://github.com/RocketChat/Rocket.Chat/pull/9181)) + +- Fix: Unneeded warning in payload of REST API calls ([#9240](https://github.com/RocketChat/Rocket.Chat/pull/9240)) + +- Fix: Unread line ([#9149](https://github.com/RocketChat/Rocket.Chat/pull/9149)) + +- Fix: updating last message on message edit or delete ([#9227](https://github.com/RocketChat/Rocket.Chat/pull/9227)) + +- Fix: Upload access control too distributed ([#9215](https://github.com/RocketChat/Rocket.Chat/pull/9215)) + +- Fix: Username find is matching partially ([#9217](https://github.com/RocketChat/Rocket.Chat/pull/9217)) + +- Fix: users listed as online after API login ([#9111](https://github.com/RocketChat/Rocket.Chat/pull/9111)) + +- Fix/api me only return verified ([#9183](https://github.com/RocketChat/Rocket.Chat/pull/9183)) + +- Hide flex-tab close button ([#7894](https://github.com/RocketChat/Rocket.Chat/pull/7894) by [@karlprieb](https://github.com/karlprieb)) + +- Improve markdown parser code ([#8451](https://github.com/RocketChat/Rocket.Chat/pull/8451)) + +- Improve room sync speed ([#8529](https://github.com/RocketChat/Rocket.Chat/pull/8529)) + +- install grpc package manually to fix snap armhf build ([#8653](https://github.com/RocketChat/Rocket.Chat/pull/8653)) + +- LingoHub based on develop ([#8831](https://github.com/RocketChat/Rocket.Chat/pull/8831)) + +- LingoHub based on develop ([#8375](https://github.com/RocketChat/Rocket.Chat/pull/8375)) + +- LingoHub based on develop ([#9256](https://github.com/RocketChat/Rocket.Chat/pull/9256)) + +- npm deps update ([#8197](https://github.com/RocketChat/Rocket.Chat/pull/8197)) + +- npm deps update ([#7969](https://github.com/RocketChat/Rocket.Chat/pull/7969)) + +- Release 0.60.0 ([#9259](https://github.com/RocketChat/Rocket.Chat/pull/9259)) + +- Remove chatops package ([#8742](https://github.com/RocketChat/Rocket.Chat/pull/8742)) + +- Remove field `lastActivity` from subscription data ([#8345](https://github.com/RocketChat/Rocket.Chat/pull/8345)) + +- Remove unnecessary returns in cors common ([#8054](https://github.com/RocketChat/Rocket.Chat/pull/8054) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Removed tmeasday:crypto-md5 ([#8743](https://github.com/RocketChat/Rocket.Chat/pull/8743)) + +- removing a duplicate line ([#8434](https://github.com/RocketChat/Rocket.Chat/pull/8434) by [@vikaskedia](https://github.com/vikaskedia)) + +- Replace postcss-nesting with postcss-nested ([#9200](https://github.com/RocketChat/Rocket.Chat/pull/9200)) + +- Revert "npm deps update" ([#7983](https://github.com/RocketChat/Rocket.Chat/pull/7983)) + +- Sync translations from LingoHub ([#8363](https://github.com/RocketChat/Rocket.Chat/pull/8363)) + +- Turn off prettyJson if the node environment isn't development ([#9068](https://github.com/RocketChat/Rocket.Chat/pull/9068)) + +- Typo: German language file ([#9190](https://github.com/RocketChat/Rocket.Chat/pull/9190) by [@TheReal1604](https://github.com/TheReal1604)) + +- Update BlackDuck URL ([#7941](https://github.com/RocketChat/Rocket.Chat/pull/7941)) + +- Update DEMO to OPEN links ([#8793](https://github.com/RocketChat/Rocket.Chat/pull/8793)) + +- Update meteor package to 1.8.1 ([#8802](https://github.com/RocketChat/Rocket.Chat/pull/8802)) + +- Update Meteor to 1.5.2.2 ([#8364](https://github.com/RocketChat/Rocket.Chat/pull/8364)) + +- Update meteor to 1.5.2.2-rc.0 ([#8355](https://github.com/RocketChat/Rocket.Chat/pull/8355)) + +- Update multiple-instance-status package ([#9018](https://github.com/RocketChat/Rocket.Chat/pull/9018)) + +- Update path for s3 redirect in circle ci ([#8819](https://github.com/RocketChat/Rocket.Chat/pull/8819)) + +- Updated comments. ([#8719](https://github.com/RocketChat/Rocket.Chat/pull/8719) by [@jasonjyu](https://github.com/jasonjyu)) + +- Use real names for user and room in emails ([#7922](https://github.com/RocketChat/Rocket.Chat/pull/7922) by [@danischreiber](https://github.com/danischreiber)) + +- Use redhat official image with openshift ([#9007](https://github.com/RocketChat/Rocket.Chat/pull/9007)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AmShaegar13](https://github.com/AmShaegar13) +- [@Darkneon](https://github.com/Darkneon) +- [@HammyHavoc](https://github.com/HammyHavoc) +- [@Kiran-Rao](https://github.com/Kiran-Rao) +- [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) +- [@Pharserror](https://github.com/Pharserror) +- [@RekkyRek](https://github.com/RekkyRek) +- [@Rzeszow](https://github.com/Rzeszow) +- [@TheReal1604](https://github.com/TheReal1604) +- [@aditya19496](https://github.com/aditya19496) +- [@alexbrazier](https://github.com/alexbrazier) +- [@armand1m](https://github.com/armand1m) +- [@arungalva](https://github.com/arungalva) +- [@ashward](https://github.com/ashward) +- [@astax-t](https://github.com/astax-t) +- [@ccfang](https://github.com/ccfang) +- [@cpitman](https://github.com/cpitman) +- [@cyclops24](https://github.com/cyclops24) +- [@danischreiber](https://github.com/danischreiber) +- [@deepseainside75](https://github.com/deepseainside75) +- [@designgurudotorg](https://github.com/designgurudotorg) +- [@dusta](https://github.com/dusta) +- [@gdelavald](https://github.com/gdelavald) +- [@ggrish](https://github.com/ggrish) +- [@goiaba](https://github.com/goiaba) +- [@icosamuel](https://github.com/icosamuel) +- [@jasonjyu](https://github.com/jasonjyu) +- [@joesitton](https://github.com/joesitton) +- [@josiasds](https://github.com/josiasds) +- [@jotafeldmann](https://github.com/jotafeldmann) +- [@jwilkins](https://github.com/jwilkins) +- [@karlprieb](https://github.com/karlprieb) +- [@lindoelio](https://github.com/lindoelio) +- [@luizbills](https://github.com/luizbills) +- [@mastappl](https://github.com/mastappl) +- [@mritunjaygoutam12](https://github.com/mritunjaygoutam12) +- [@mrsimpson](https://github.com/mrsimpson) +- [@paulovitin](https://github.com/paulovitin) +- [@peterlee0127](https://github.com/peterlee0127) +- [@pierreozoux](https://github.com/pierreozoux) +- [@pkgodara](https://github.com/pkgodara) +- [@rafaelks](https://github.com/rafaelks) +- [@ramrami](https://github.com/ramrami) +- [@rmetzler](https://github.com/rmetzler) +- [@robbyoconnor](https://github.com/robbyoconnor) +- [@rodorgas](https://github.com/rodorgas) +- [@ruKurz](https://github.com/ruKurz) +- [@ryoshimizu](https://github.com/ryoshimizu) +- [@sarbasamuel](https://github.com/sarbasamuel) +- [@satyapramodh](https://github.com/satyapramodh) +- [@seangeleno](https://github.com/seangeleno) +- [@selamanse](https://github.com/selamanse) +- [@stalley](https://github.com/stalley) +- [@stefanoverducci](https://github.com/stefanoverducci) +- [@szluohua](https://github.com/szluohua) +- [@thompsonemerson](https://github.com/thompsonemerson) +- [@torgeirl](https://github.com/torgeirl) +- [@vcapretz](https://github.com/vcapretz) +- [@vikaskedia](https://github.com/vikaskedia) +- [@vitor-nagao](https://github.com/vitor-nagao) +- [@wesnspace](https://github.com/wesnspace) +- [@wferris722](https://github.com/wferris722) +- [@xenithorb](https://github.com/xenithorb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.6 +`2017-11-29 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +
+🔍 Minor changes + + +- Fix tag build ([#8973](https://github.com/RocketChat/Rocket.Chat/pull/8973)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.5 +`2017-11-29 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +
+🔍 Minor changes + + +- Fix CircleCI deploy filter ([#8972](https://github.com/RocketChat/Rocket.Chat/pull/8972)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.4 +`2017-11-29 · 1 🐛 · 2 🔍 · 5 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🐛 Bug fixes + + +- Channel settings buttons ([#8753](https://github.com/RocketChat/Rocket.Chat/pull/8753) by [@karlprieb](https://github.com/karlprieb)) + +
+🔍 Minor changes + + +- Add CircleCI ([#8685](https://github.com/RocketChat/Rocket.Chat/pull/8685)) + +- Release/0.59.4 ([#8967](https://github.com/RocketChat/Rocket.Chat/pull/8967) by [@cpitman](https://github.com/cpitman) & [@karlprieb](https://github.com/karlprieb)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cpitman](https://github.com/cpitman) +- [@karlprieb](https://github.com/karlprieb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.3 +`2017-10-29 · 7 🐛 · 2 🔍 · 8 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🐛 Bug fixes + + +- AmazonS3: Quote file.name for ContentDisposition for files with commas ([#8593](https://github.com/RocketChat/Rocket.Chat/pull/8593) by [@xenithorb](https://github.com/xenithorb)) + +- Audio message icon ([#8648](https://github.com/RocketChat/Rocket.Chat/pull/8648) by [@karlprieb](https://github.com/karlprieb)) + +- Fix e-mail message forward ([#8645](https://github.com/RocketChat/Rocket.Chat/pull/8645)) + +- Fix typos ([#8679](https://github.com/RocketChat/Rocket.Chat/pull/8679)) + +- Highlighted color height issue ([#8431](https://github.com/RocketChat/Rocket.Chat/pull/8431) by [@cyclops24](https://github.com/cyclops24)) + +- LDAP not respecting UTF8 characters & Sync Interval not working ([#8691](https://github.com/RocketChat/Rocket.Chat/pull/8691)) + +- Update pt-BR translation ([#8655](https://github.com/RocketChat/Rocket.Chat/pull/8655) by [@rodorgas](https://github.com/rodorgas)) + +
+🔍 Minor changes + + +- install grpc package manually to fix snap armhf build ([#8653](https://github.com/RocketChat/Rocket.Chat/pull/8653)) + +- removing a duplicate line ([#8434](https://github.com/RocketChat/Rocket.Chat/pull/8434) by [@vikaskedia](https://github.com/vikaskedia)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@cyclops24](https://github.com/cyclops24) +- [@karlprieb](https://github.com/karlprieb) +- [@rodorgas](https://github.com/rodorgas) +- [@vikaskedia](https://github.com/vikaskedia) +- [@xenithorb](https://github.com/xenithorb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.2 +`2017-10-25 · 6 🐛 · 4 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🐛 Bug fixes + + +- API channel/group.members not sorting ([#8635](https://github.com/RocketChat/Rocket.Chat/pull/8635)) + +- encode filename in url to prevent links breaking ([#8551](https://github.com/RocketChat/Rocket.Chat/pull/8551) by [@joesitton](https://github.com/joesitton)) + +- Fix guest pool inquiry taking ([#8577](https://github.com/RocketChat/Rocket.Chat/pull/8577)) + +- LDAP not merging existent users && Wrong id link generation ([#8613](https://github.com/RocketChat/Rocket.Chat/pull/8613)) + +- Message popup menu on mobile/cordova ([#8634](https://github.com/RocketChat/Rocket.Chat/pull/8634) by [@karlprieb](https://github.com/karlprieb)) + +- Missing scroll at create channel page ([#8637](https://github.com/RocketChat/Rocket.Chat/pull/8637) by [@karlprieb](https://github.com/karlprieb)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@joesitton](https://github.com/joesitton) +- [@karlprieb](https://github.com/karlprieb) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.1 +`2017-10-19 · 4 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🐛 Bug fixes + + +- Color reset when default value editor is different ([#8543](https://github.com/RocketChat/Rocket.Chat/pull/8543)) + +- LDAP login error regression at 0.59.0 ([#8541](https://github.com/RocketChat/Rocket.Chat/pull/8541)) + +- Migration 103 wrong converting primrary colors ([#8544](https://github.com/RocketChat/Rocket.Chat/pull/8544)) + +- Wrong colors after migration 103 ([#8547](https://github.com/RocketChat/Rocket.Chat/pull/8547)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.59.0 +`2017-10-18 · 25 🎉 · 122 🐛 · 51 🔍 · 46 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🎉 New features + + +- Add classes to notification menu so they can be hidden in css ([#7636](https://github.com/RocketChat/Rocket.Chat/pull/7636) by [@danischreiber](https://github.com/danischreiber)) + +- Add markdown parser "marked" ([#7852](https://github.com/RocketChat/Rocket.Chat/pull/7852) by [@nishimaki10](https://github.com/nishimaki10)) + +- Add RD Station integration to livechat ([#8304](https://github.com/RocketChat/Rocket.Chat/pull/8304)) + +- Add room type as a class to the ul-group of rooms ([#7711](https://github.com/RocketChat/Rocket.Chat/pull/7711) by [@danischreiber](https://github.com/danischreiber)) + +- Add tags to uploaded images using Google Cloud Vision API ([#6301](https://github.com/RocketChat/Rocket.Chat/pull/6301) by [@karlprieb](https://github.com/karlprieb)) + +- Add unread options for direct messages ([#7658](https://github.com/RocketChat/Rocket.Chat/pull/7658)) + +- Adds a Keyboard Shortcut option to the flextab ([#5902](https://github.com/RocketChat/Rocket.Chat/pull/5902) by [@cnash](https://github.com/cnash) & [@karlprieb](https://github.com/karlprieb)) + +- Allow ldap mapping of customFields ([#7614](https://github.com/RocketChat/Rocket.Chat/pull/7614) by [@goiaba](https://github.com/goiaba)) + +- Allows admin to list all groups with API ([#7565](https://github.com/RocketChat/Rocket.Chat/pull/7565) by [@mboudet](https://github.com/mboudet)) + +- Audio Notification updated in sidebar ([#7817](https://github.com/RocketChat/Rocket.Chat/pull/7817) by [@aditya19496](https://github.com/aditya19496) & [@maarten-v](https://github.com/maarten-v)) + +- Automatically select the first channel ([#7350](https://github.com/RocketChat/Rocket.Chat/pull/7350) by [@antaryami-sahoo](https://github.com/antaryami-sahoo)) + +- block users to mention unknow users ([#7830](https://github.com/RocketChat/Rocket.Chat/pull/7830)) + +- Create a standard for our svg icons ([#7853](https://github.com/RocketChat/Rocket.Chat/pull/7853) by [@karlprieb](https://github.com/karlprieb)) + +- Enable read only channel creation ([#8260](https://github.com/RocketChat/Rocket.Chat/pull/8260) by [@karlprieb](https://github.com/karlprieb)) + +- Integrated personal email gateway (GSoC'17) ([#7342](https://github.com/RocketChat/Rocket.Chat/pull/7342) by [@pkgodara](https://github.com/pkgodara)) + +- make sidebar item width 100% ([#8362](https://github.com/RocketChat/Rocket.Chat/pull/8362) by [@karlprieb](https://github.com/karlprieb)) + +- Package to render issue numbers into links to an issue tracker. ([#6700](https://github.com/RocketChat/Rocket.Chat/pull/6700) by [@TAdeJong](https://github.com/TAdeJong) & [@TobiasKappe](https://github.com/TobiasKappe)) + +- Replace message cog for vertical menu ([#7864](https://github.com/RocketChat/Rocket.Chat/pull/7864) by [@karlprieb](https://github.com/karlprieb)) + +- Rocket.Chat UI Redesign ([#7643](https://github.com/RocketChat/Rocket.Chat/pull/7643)) + +- Search users by fields defined by admin ([#7612](https://github.com/RocketChat/Rocket.Chat/pull/7612) by [@goiaba](https://github.com/goiaba)) + +- Setting to disable MarkDown and enable AutoLinker ([#8459](https://github.com/RocketChat/Rocket.Chat/pull/8459)) + +- Smaller accountBox ([#8360](https://github.com/RocketChat/Rocket.Chat/pull/8360) by [@karlprieb](https://github.com/karlprieb)) + +- Template to show Custom Fields in user info view ([#7688](https://github.com/RocketChat/Rocket.Chat/pull/7688) by [@goiaba](https://github.com/goiaba)) + +- Unify unread and mentions badge ([#8361](https://github.com/RocketChat/Rocket.Chat/pull/8361) by [@karlprieb](https://github.com/karlprieb)) + +- Upgrade to meteor 1.5.2 ([#8073](https://github.com/RocketChat/Rocket.Chat/pull/8073)) + +### 🐛 Bug fixes + + +- "*.members" rest api being useless and only returning usernames ([#8147](https://github.com/RocketChat/Rocket.Chat/pull/8147)) + +- "Cancel button" on modal in RTL in Firefox 55 ([#8278](https://github.com/RocketChat/Rocket.Chat/pull/8278) by [@cyclops24](https://github.com/cyclops24)) + +- "Channel Setting" buttons alignment in RTL ([#8266](https://github.com/RocketChat/Rocket.Chat/pull/8266) by [@cyclops24](https://github.com/cyclops24)) + +- **i18n:** My Profile & README.md links ([#8270](https://github.com/RocketChat/Rocket.Chat/pull/8270) by [@Rzeszow](https://github.com/Rzeszow)) + +- **PL:** Polish translation ([#7989](https://github.com/RocketChat/Rocket.Chat/pull/7989) by [@Rzeszow](https://github.com/Rzeszow)) + +- Add admin audio preferences translations ([#8094](https://github.com/RocketChat/Rocket.Chat/pull/8094)) + +- Add CSS support for Safari versions > 7 ([#7854](https://github.com/RocketChat/Rocket.Chat/pull/7854)) + +- Add padding on messages to allow space to the action buttons ([#7971](https://github.com/RocketChat/Rocket.Chat/pull/7971)) + +- Adds default search text padding for emoji search ([#7878](https://github.com/RocketChat/Rocket.Chat/pull/7878) by [@gdelavald](https://github.com/gdelavald)) + +- After deleting the room, cache is not synchronizing ([#8314](https://github.com/RocketChat/Rocket.Chat/pull/8314) by [@szluohua](https://github.com/szluohua)) + +- Allow unknown file types if no allowed whitelist has been set (#7074) ([#8172](https://github.com/RocketChat/Rocket.Chat/pull/8172) by [@TriPhoenix](https://github.com/TriPhoenix)) + +- Amin menu not showing all items & File list breaking line ([#8299](https://github.com/RocketChat/Rocket.Chat/pull/8299) by [@karlprieb](https://github.com/karlprieb)) + +- Api groups.files is always returning empty ([#8241](https://github.com/RocketChat/Rocket.Chat/pull/8241)) + +- Attachment icons alignment in LTR and RTL ([#8271](https://github.com/RocketChat/Rocket.Chat/pull/8271) by [@cyclops24](https://github.com/cyclops24)) + +- Broken embedded view layout ([#7944](https://github.com/RocketChat/Rocket.Chat/pull/7944) by [@karlprieb](https://github.com/karlprieb)) + +- Broken emoji picker on firefox ([#7943](https://github.com/RocketChat/Rocket.Chat/pull/7943) by [@karlprieb](https://github.com/karlprieb)) + +- Call buttons with wrong margin on RTL ([#8307](https://github.com/RocketChat/Rocket.Chat/pull/8307) by [@karlprieb](https://github.com/karlprieb)) + +- Case insensitive SAML email check ([#8216](https://github.com/RocketChat/Rocket.Chat/pull/8216) by [@arminfelder](https://github.com/arminfelder)) + +- Chat box no longer auto-focuses when typing ([#7984](https://github.com/RocketChat/Rocket.Chat/pull/7984)) + +- Check attachments is defined before accessing first element ([#8295](https://github.com/RocketChat/Rocket.Chat/pull/8295) by [@Darkneon](https://github.com/Darkneon)) + +- clipboard and permalink on new popover ([#8259](https://github.com/RocketChat/Rocket.Chat/pull/8259) by [@karlprieb](https://github.com/karlprieb)) + +- copy to clipboard and update clipboard.js library ([#8039](https://github.com/RocketChat/Rocket.Chat/pull/8039) by [@karlprieb](https://github.com/karlprieb)) + +- Create channel button on Firefox ([#7942](https://github.com/RocketChat/Rocket.Chat/pull/7942) by [@karlprieb](https://github.com/karlprieb)) + +- Csv importer: work with more problematic data ([#7456](https://github.com/RocketChat/Rocket.Chat/pull/7456) by [@reist](https://github.com/reist)) + +- disabled katex tooltip on messageBox ([#8386](https://github.com/RocketChat/Rocket.Chat/pull/8386)) + +- Do not send joinCode field to clients ([#8527](https://github.com/RocketChat/Rocket.Chat/pull/8527)) + +- Document README.md. Drupal repo out of date ([#7948](https://github.com/RocketChat/Rocket.Chat/pull/7948) by [@Lawri-van-Buel](https://github.com/Lawri-van-Buel)) + +- Double scroll on 'keyboard shortcuts' menu in sidepanel ([#7927](https://github.com/RocketChat/Rocket.Chat/pull/7927) by [@aditya19496](https://github.com/aditya19496)) + +- Dutch translations ([#7815](https://github.com/RocketChat/Rocket.Chat/pull/7815) by [@maarten-v](https://github.com/maarten-v)) + +- Dynamic popover ([#8101](https://github.com/RocketChat/Rocket.Chat/pull/8101) by [@karlprieb](https://github.com/karlprieb)) + +- Email message forward error ([#7846](https://github.com/RocketChat/Rocket.Chat/pull/7846)) + +- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317)) + +- Emoji Picker hidden for reactions in RTL ([#8300](https://github.com/RocketChat/Rocket.Chat/pull/8300) by [@karlprieb](https://github.com/karlprieb)) + +- Error when translating message ([#8001](https://github.com/RocketChat/Rocket.Chat/pull/8001)) + +- Example usage of unsubscribe.js ([#7673](https://github.com/RocketChat/Rocket.Chat/pull/7673) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Execute meteor reset on TRAVIS_TAG builds ([#8310](https://github.com/RocketChat/Rocket.Chat/pull/8310)) + +- File upload on multi-instances using a path prefix ([#7855](https://github.com/RocketChat/Rocket.Chat/pull/7855) by [@Darkneon](https://github.com/Darkneon)) + +- Fix avatar upload fail on Cordova app ([#7656](https://github.com/RocketChat/Rocket.Chat/pull/7656) by [@ccfang](https://github.com/ccfang)) + +- Fix black background on transparent avatars ([#7168](https://github.com/RocketChat/Rocket.Chat/pull/7168)) + +- fix color on unread messages ([#8282](https://github.com/RocketChat/Rocket.Chat/pull/8282)) + +- Fix Dutch translation ([#7814](https://github.com/RocketChat/Rocket.Chat/pull/7814) by [@maarten-v](https://github.com/maarten-v)) + +- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754)) + +- Fix google play logo on repo README ([#7912](https://github.com/RocketChat/Rocket.Chat/pull/7912) by [@luizbills](https://github.com/luizbills)) + +- Fix iframe login API response (issue #8145) ([#8146](https://github.com/RocketChat/Rocket.Chat/pull/8146) by [@astax-t](https://github.com/astax-t)) + +- Fix livechat toggle UI issue ([#7904](https://github.com/RocketChat/Rocket.Chat/pull/7904)) + +- Fix messagebox growth ([#7629](https://github.com/RocketChat/Rocket.Chat/pull/7629)) + +- Fix migration 100 ([#7863](https://github.com/RocketChat/Rocket.Chat/pull/7863)) + +- Fix new room sound being played too much ([#8144](https://github.com/RocketChat/Rocket.Chat/pull/8144)) + +- Fix new-message button showing on search ([#7823](https://github.com/RocketChat/Rocket.Chat/pull/7823)) + +- Fix placeholders in account profile ([#7945](https://github.com/RocketChat/Rocket.Chat/pull/7945) by [@josiasds](https://github.com/josiasds)) + +- Fix room load on first hit ([#7687](https://github.com/RocketChat/Rocket.Chat/pull/7687)) + +- Fix setting user avatar on LDAP login ([#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099)) + +- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963)) + +- Fixed function closure syntax allowing validation emails to be sent. ([#7758](https://github.com/RocketChat/Rocket.Chat/pull/7758) by [@snoozan](https://github.com/snoozan)) + +- Google vision NSFW tag ([#7825](https://github.com/RocketChat/Rocket.Chat/pull/7825)) + +- Hide scrollbar on login page if not necessary ([#8014](https://github.com/RocketChat/Rocket.Chat/pull/8014) by [@alexbrazier](https://github.com/alexbrazier)) + +- hyperlink style on sidebar footer ([#7882](https://github.com/RocketChat/Rocket.Chat/pull/7882) by [@karlprieb](https://github.com/karlprieb)) + +- Incorrect URL for login terms when using prefix ([#8211](https://github.com/RocketChat/Rocket.Chat/pull/8211) by [@Darkneon](https://github.com/Darkneon)) + +- Invalid Code message for password protected channel ([#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491)) + +- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048)) + +- Issue #8166 where empty analytics setting breaks to load Piwik script ([#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) by [@ruKurz](https://github.com/ruKurz)) + +- LDAP memory issues when pagination is not available ([#8457](https://github.com/RocketChat/Rocket.Chat/pull/8457)) + +- Leave and hide buttons was removed ([#8213](https://github.com/RocketChat/Rocket.Chat/pull/8213) by [@karlprieb](https://github.com/karlprieb)) + +- livechat icon ([#7886](https://github.com/RocketChat/Rocket.Chat/pull/7886) by [@karlprieb](https://github.com/karlprieb)) + +- Make link inside YouTube preview open in new tab ([#7679](https://github.com/RocketChat/Rocket.Chat/pull/7679) by [@1lann](https://github.com/1lann)) + +- make sidebar item animation fast ([#8262](https://github.com/RocketChat/Rocket.Chat/pull/8262) by [@karlprieb](https://github.com/karlprieb)) + +- Makes text action menu width based on content size ([#7887](https://github.com/RocketChat/Rocket.Chat/pull/7887) by [@gdelavald](https://github.com/gdelavald)) + +- Markdown being rendered in code tags ([#7965](https://github.com/RocketChat/Rocket.Chat/pull/7965)) + +- Markdown noopener/noreferrer: use correct HTML attribute ([#7644](https://github.com/RocketChat/Rocket.Chat/pull/7644) by [@jangmarker](https://github.com/jangmarker)) + +- Mention unread indicator was removed ([#8316](https://github.com/RocketChat/Rocket.Chat/pull/8316)) + +- message actions over unread bar ([#7885](https://github.com/RocketChat/Rocket.Chat/pull/7885) by [@karlprieb](https://github.com/karlprieb)) + +- message-box autogrow ([#8019](https://github.com/RocketChat/Rocket.Chat/pull/8019) by [@karlprieb](https://github.com/karlprieb)) + +- meteor-accounts-saml issue with ns0,ns1 namespaces, makes it compatible with pysaml2 lib ([#7721](https://github.com/RocketChat/Rocket.Chat/pull/7721) by [@arminfelder](https://github.com/arminfelder)) + +- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357)) + +- Missing placeholder translations ([#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286)) + +- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059)) + +- OTR buttons padding ([#7954](https://github.com/RocketChat/Rocket.Chat/pull/7954) by [@karlprieb](https://github.com/karlprieb)) + +- popover position on mobile ([#7883](https://github.com/RocketChat/Rocket.Chat/pull/7883) by [@karlprieb](https://github.com/karlprieb)) + +- Prevent autotranslate tokens race condition ([#8046](https://github.com/RocketChat/Rocket.Chat/pull/8046)) + +- Put delete action on another popover group ([#8315](https://github.com/RocketChat/Rocket.Chat/pull/8315) by [@karlprieb](https://github.com/karlprieb)) + +- Recent emojis not updated when adding via text ([#7998](https://github.com/RocketChat/Rocket.Chat/pull/7998)) + +- remove accountBox from admin menu ([#8358](https://github.com/RocketChat/Rocket.Chat/pull/8358) by [@karlprieb](https://github.com/karlprieb)) + +- Remove break change in Realtime API ([#7895](https://github.com/RocketChat/Rocket.Chat/pull/7895)) + +- Remove redundant "do" in "Are you sure ...?" messages. ([#7809](https://github.com/RocketChat/Rocket.Chat/pull/7809) by [@xurizaemon](https://github.com/xurizaemon)) + +- Remove references to non-existent tests ([#7672](https://github.com/RocketChat/Rocket.Chat/pull/7672) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Remove sidebar header on admin embedded version ([#8334](https://github.com/RocketChat/Rocket.Chat/pull/8334) by [@karlprieb](https://github.com/karlprieb)) + +- Removing pipe and commas from custom emojis (#8168) ([#8237](https://github.com/RocketChat/Rocket.Chat/pull/8237) by [@matheusml](https://github.com/matheusml)) + +- room icon on header ([#8017](https://github.com/RocketChat/Rocket.Chat/pull/8017) by [@karlprieb](https://github.com/karlprieb)) + +- RTL ([#8112](https://github.com/RocketChat/Rocket.Chat/pull/8112)) + +- RTL on reply ([#8261](https://github.com/RocketChat/Rocket.Chat/pull/8261) by [@karlprieb](https://github.com/karlprieb)) + +- scroll on flex-tab ([#7748](https://github.com/RocketChat/Rocket.Chat/pull/7748)) + +- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047)) + +- Scrollbar not using new style ([#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190)) + +- search results height ([#8018](https://github.com/RocketChat/Rocket.Chat/pull/8018) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) + +- search results position on sidebar ([#7881](https://github.com/RocketChat/Rocket.Chat/pull/7881) by [@karlprieb](https://github.com/karlprieb)) + +- Settings description not showing ([#8122](https://github.com/RocketChat/Rocket.Chat/pull/8122)) + +- Settings not getting applied from Meteor.settings and process.env ([#7779](https://github.com/RocketChat/Rocket.Chat/pull/7779) by [@Darkneon](https://github.com/Darkneon)) + +- Show leader on first load ([#7712](https://github.com/RocketChat/Rocket.Chat/pull/7712) by [@danischreiber](https://github.com/danischreiber)) + +- Sidebar and RTL alignments ([#8154](https://github.com/RocketChat/Rocket.Chat/pull/8154) by [@karlprieb](https://github.com/karlprieb)) + +- sidebar buttons and badge paddings ([#7888](https://github.com/RocketChat/Rocket.Chat/pull/7888) by [@karlprieb](https://github.com/karlprieb)) + +- Sidebar item menu position in RTL ([#8397](https://github.com/RocketChat/Rocket.Chat/pull/8397) by [@cyclops24](https://github.com/cyclops24)) + +- sidebar paddings ([#7880](https://github.com/RocketChat/Rocket.Chat/pull/7880) by [@karlprieb](https://github.com/karlprieb)) + +- sidenav colors, hide and leave, create channel on safari ([#8257](https://github.com/RocketChat/Rocket.Chat/pull/8257) by [@karlprieb](https://github.com/karlprieb)) + +- sidenav mentions on hover ([#8252](https://github.com/RocketChat/Rocket.Chat/pull/8252) by [@karlprieb](https://github.com/karlprieb)) + +- Small alignment fixes ([#7970](https://github.com/RocketChat/Rocket.Chat/pull/7970)) + +- some placeholder and phrase traslation fix ([#8269](https://github.com/RocketChat/Rocket.Chat/pull/8269) by [@cyclops24](https://github.com/cyclops24)) + +- status and active room colors on sidebar ([#7960](https://github.com/RocketChat/Rocket.Chat/pull/7960) by [@karlprieb](https://github.com/karlprieb)) + +- Text area buttons and layout on mobile ([#7985](https://github.com/RocketChat/Rocket.Chat/pull/7985)) + +- Text area lost text when page reloads ([#8159](https://github.com/RocketChat/Rocket.Chat/pull/8159)) + +- Textarea on firefox ([#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986)) + +- TypeError: Cannot read property 't' of undefined ([#8298](https://github.com/RocketChat/Rocket.Chat/pull/8298)) + +- Uncessary route reload break some routes ([#8514](https://github.com/RocketChat/Rocket.Chat/pull/8514)) + +- Update Snap links ([#7778](https://github.com/RocketChat/Rocket.Chat/pull/7778) by [@MichaelGooden](https://github.com/MichaelGooden)) + +- User avatar in DM list. ([#8210](https://github.com/RocketChat/Rocket.Chat/pull/8210)) + +- username ellipsis on firefox ([#7953](https://github.com/RocketChat/Rocket.Chat/pull/7953) by [@karlprieb](https://github.com/karlprieb)) + +- Various LDAP issues & Missing pagination ([#8372](https://github.com/RocketChat/Rocket.Chat/pull/8372)) + +- Vertical menu on flex-tab ([#7988](https://github.com/RocketChat/Rocket.Chat/pull/7988) by [@karlprieb](https://github.com/karlprieb)) + +- Window exception when parsing Markdown on server ([#7893](https://github.com/RocketChat/Rocket.Chat/pull/7893)) + +- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639)) + +- Wrong file name when upload to AWS S3 ([#8296](https://github.com/RocketChat/Rocket.Chat/pull/8296)) + +- Wrong message when reseting password and 2FA is enabled ([#8489](https://github.com/RocketChat/Rocket.Chat/pull/8489)) + +- Wrong render of snippet’s name ([#7630](https://github.com/RocketChat/Rocket.Chat/pull/7630)) + +
+🔍 Minor changes + + +- [DOCS] Add native mobile app links into README and update button images ([#7909](https://github.com/RocketChat/Rocket.Chat/pull/7909) by [@rafaelks](https://github.com/rafaelks)) + +- [FIX-RC] Mobile file upload not working ([#8331](https://github.com/RocketChat/Rocket.Chat/pull/8331) by [@karlprieb](https://github.com/karlprieb)) + +- [MOVE] Client folder rocketchat-autolinker ([#7667](https://github.com/RocketChat/Rocket.Chat/pull/7667) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-cas ([#7668](https://github.com/RocketChat/Rocket.Chat/pull/7668) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-colors ([#7664](https://github.com/RocketChat/Rocket.Chat/pull/7664) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-custom-oauth ([#7665](https://github.com/RocketChat/Rocket.Chat/pull/7665) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-custom-sounds ([#7670](https://github.com/RocketChat/Rocket.Chat/pull/7670) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-emoji ([#7671](https://github.com/RocketChat/Rocket.Chat/pull/7671) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-highlight-words ([#7669](https://github.com/RocketChat/Rocket.Chat/pull/7669) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- [MOVE] Client folder rocketchat-tooltip ([#7666](https://github.com/RocketChat/Rocket.Chat/pull/7666) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- 0.58.3 ([#8335](https://github.com/RocketChat/Rocket.Chat/pull/8335)) + +- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394)) + +- Additions to the REST API ([#7793](https://github.com/RocketChat/Rocket.Chat/pull/7793)) + +- Bump version to 0.59.0-develop ([#7625](https://github.com/RocketChat/Rocket.Chat/pull/7625)) + +- Change artifact path ([#8515](https://github.com/RocketChat/Rocket.Chat/pull/8515)) + +- Color variables migration ([#8463](https://github.com/RocketChat/Rocket.Chat/pull/8463) by [@karlprieb](https://github.com/karlprieb)) + +- Deps update ([#8273](https://github.com/RocketChat/Rocket.Chat/pull/8273)) + +- Disable perfect scrollbar ([#8244](https://github.com/RocketChat/Rocket.Chat/pull/8244)) + +- Enable AutoLinker back ([#8490](https://github.com/RocketChat/Rocket.Chat/pull/8490)) + +- Fix `leave and hide` click, color and position ([#8243](https://github.com/RocketChat/Rocket.Chat/pull/8243) by [@karlprieb](https://github.com/karlprieb)) + +- Fix artifact path ([#8518](https://github.com/RocketChat/Rocket.Chat/pull/8518)) + +- Fix high CPU load when sending messages on large rooms (regression) ([#8520](https://github.com/RocketChat/Rocket.Chat/pull/8520)) + +- Fix more rtl issues ([#8194](https://github.com/RocketChat/Rocket.Chat/pull/8194) by [@karlprieb](https://github.com/karlprieb)) + +- Fix typo in generated URI ([#7661](https://github.com/RocketChat/Rocket.Chat/pull/7661) by [@Rohlik](https://github.com/Rohlik)) + +- Fix: Account menu position on RTL ([#8416](https://github.com/RocketChat/Rocket.Chat/pull/8416) by [@karlprieb](https://github.com/karlprieb)) + +- Fix: Change password not working in new UI ([#8516](https://github.com/RocketChat/Rocket.Chat/pull/8516)) + +- FIX: Error when starting local development environment ([#7728](https://github.com/RocketChat/Rocket.Chat/pull/7728) by [@rdebeasi](https://github.com/rdebeasi)) + +- Fix: Missing LDAP option to show internal logs ([#8417](https://github.com/RocketChat/Rocket.Chat/pull/8417)) + +- Fix: Missing LDAP reconnect setting ([#8414](https://github.com/RocketChat/Rocket.Chat/pull/8414)) + +- Fix: Missing settings to configure LDAP size and page limits ([#8398](https://github.com/RocketChat/Rocket.Chat/pull/8398)) + +- Hide flex-tab close button ([#7894](https://github.com/RocketChat/Rocket.Chat/pull/7894) by [@karlprieb](https://github.com/karlprieb)) + +- implemented new page-loader animated icon ([#2](https://github.com/RocketChat/Rocket.Chat/pull/2)) + +- Improve markdown parser code ([#8451](https://github.com/RocketChat/Rocket.Chat/pull/8451)) + +- Improve room sync speed ([#8529](https://github.com/RocketChat/Rocket.Chat/pull/8529)) + +- LingoHub based on develop ([#7803](https://github.com/RocketChat/Rocket.Chat/pull/7803)) + +- LingoHub based on develop ([#8375](https://github.com/RocketChat/Rocket.Chat/pull/8375)) + +- Merge 0.58.4 to master ([#8420](https://github.com/RocketChat/Rocket.Chat/pull/8420)) + +- Meteor packages and npm dependencies update ([#7677](https://github.com/RocketChat/Rocket.Chat/pull/7677)) + +- Mobile sidenav ([#7865](https://github.com/RocketChat/Rocket.Chat/pull/7865)) + +- npm deps update ([#7842](https://github.com/RocketChat/Rocket.Chat/pull/7842)) + +- npm deps update ([#7755](https://github.com/RocketChat/Rocket.Chat/pull/7755)) + +- npm deps update ([#8197](https://github.com/RocketChat/Rocket.Chat/pull/8197)) + +- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652)) + +- readme-file: fix broken link ([#8253](https://github.com/RocketChat/Rocket.Chat/pull/8253) by [@vcapretz](https://github.com/vcapretz)) + +- Remove CircleCI ([#7739](https://github.com/RocketChat/Rocket.Chat/pull/7739)) + +- Remove field `lastActivity` from subscription data ([#8345](https://github.com/RocketChat/Rocket.Chat/pull/8345)) + +- Remove unnecessary returns in cors common ([#8054](https://github.com/RocketChat/Rocket.Chat/pull/8054) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Sync translations from LingoHub ([#8363](https://github.com/RocketChat/Rocket.Chat/pull/8363)) + +- Update BlackDuck URL ([#7941](https://github.com/RocketChat/Rocket.Chat/pull/7941)) + +- Update Meteor to 1.5.2.2 ([#8364](https://github.com/RocketChat/Rocket.Chat/pull/8364)) + +- Update meteor to 1.5.2.2-rc.0 ([#8355](https://github.com/RocketChat/Rocket.Chat/pull/8355)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@1lann](https://github.com/1lann) +- [@Darkneon](https://github.com/Darkneon) +- [@Kiran-Rao](https://github.com/Kiran-Rao) +- [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) +- [@MichaelGooden](https://github.com/MichaelGooden) +- [@Rohlik](https://github.com/Rohlik) +- [@Rzeszow](https://github.com/Rzeszow) +- [@TAdeJong](https://github.com/TAdeJong) +- [@TobiasKappe](https://github.com/TobiasKappe) +- [@TriPhoenix](https://github.com/TriPhoenix) +- [@aditya19496](https://github.com/aditya19496) +- [@alexbrazier](https://github.com/alexbrazier) +- [@antaryami-sahoo](https://github.com/antaryami-sahoo) +- [@arminfelder](https://github.com/arminfelder) +- [@astax-t](https://github.com/astax-t) +- [@ccfang](https://github.com/ccfang) +- [@cnash](https://github.com/cnash) +- [@cyclops24](https://github.com/cyclops24) +- [@danischreiber](https://github.com/danischreiber) +- [@gdelavald](https://github.com/gdelavald) +- [@goiaba](https://github.com/goiaba) +- [@jangmarker](https://github.com/jangmarker) +- [@josiasds](https://github.com/josiasds) +- [@karlprieb](https://github.com/karlprieb) +- [@luizbills](https://github.com/luizbills) +- [@maarten-v](https://github.com/maarten-v) +- [@matheusml](https://github.com/matheusml) +- [@mboudet](https://github.com/mboudet) +- [@nishimaki10](https://github.com/nishimaki10) +- [@pkgodara](https://github.com/pkgodara) +- [@rafaelks](https://github.com/rafaelks) +- [@rdebeasi](https://github.com/rdebeasi) +- [@reist](https://github.com/reist) +- [@ruKurz](https://github.com/ruKurz) +- [@snoozan](https://github.com/snoozan) +- [@szluohua](https://github.com/szluohua) +- [@vcapretz](https://github.com/vcapretz) +- [@xurizaemon](https://github.com/xurizaemon) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.58.4 +`2017-10-05 · 3 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🐛 Bug fixes + + +- Add needed dependency for snaps ([#8389](https://github.com/RocketChat/Rocket.Chat/pull/8389)) + +- Duplicate code in rest api letting in a few bugs with the rest api ([#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408)) + +- Slack import failing and not being able to be restarted ([#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@graywolf336](https://github.com/graywolf336) + +# 0.58.2 +`2017-08-22 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +
+🔍 Minor changes + + +- Release 0.58.2 ([#7841](https://github.com/RocketChat/Rocket.Chat/pull/7841) by [@snoozan](https://github.com/snoozan)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@snoozan](https://github.com/snoozan) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) + +# 0.58.1 +`2017-08-17 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### 🐛 Bug fixes + + +- Fix flex tab not opening and getting offscreen ([#7781](https://github.com/RocketChat/Rocket.Chat/pull/7781)) + +
+🔍 Minor changes + + +- Release 0.58.1 ([#7782](https://github.com/RocketChat/Rocket.Chat/pull/7782)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@rodrigok](https://github.com/rodrigok) + +# 0.58.0 +`2017-08-16 · 1 ️️️⚠️ · 27 🎉 · 48 🐛 · 19 🔍 · 32 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.4` +- NPM: `4.6.1` + +### ⚠️ BREAKING CHANGES + + +- Remove Sandstorm login method ([#7556](https://github.com/RocketChat/Rocket.Chat/pull/7556)) + +### 🎉 New features + + +- Add admin and user setting for notifications #4339 ([#7479](https://github.com/RocketChat/Rocket.Chat/pull/7479) by [@stalley](https://github.com/stalley)) + +- Add close button to flex tabs ([#7529](https://github.com/RocketChat/Rocket.Chat/pull/7529)) + +- Add customFields in rooms/get method ([#6564](https://github.com/RocketChat/Rocket.Chat/pull/6564) by [@borsden](https://github.com/borsden)) + +- Add healthchecks in OpenShift templates ([#7184](https://github.com/RocketChat/Rocket.Chat/pull/7184) by [@jfchevrette](https://github.com/jfchevrette)) + +- Add reaction to the last message when get the shortcut +: ([#7569](https://github.com/RocketChat/Rocket.Chat/pull/7569) by [@danilomiranda](https://github.com/danilomiranda)) + +- Add room type identifier to room list header ([#7520](https://github.com/RocketChat/Rocket.Chat/pull/7520) by [@danischreiber](https://github.com/danischreiber)) + +- Add setting to change User Agent of OEmbed calls ([#6753](https://github.com/RocketChat/Rocket.Chat/pull/6753) by [@AhmetS](https://github.com/AhmetS)) + +- Add toolbar buttons for iframe API ([#7525](https://github.com/RocketChat/Rocket.Chat/pull/7525)) + +- Add unread options for direct messages ([#7658](https://github.com/RocketChat/Rocket.Chat/pull/7658)) + +- Adding support for piwik sub domain settings ([#7324](https://github.com/RocketChat/Rocket.Chat/pull/7324) by [@ruKurz](https://github.com/ruKurz)) + +- Adds preference to one-click-to-direct-message and basic functionality ([#7564](https://github.com/RocketChat/Rocket.Chat/pull/7564) by [@gdelavald](https://github.com/gdelavald)) + +- Allow channel property in the integrations returned content ([#7214](https://github.com/RocketChat/Rocket.Chat/pull/7214)) + +- Allow special chars on room names ([#7595](https://github.com/RocketChat/Rocket.Chat/pull/7595)) + +- Closes tab bar on mobile when leaving room ([#7561](https://github.com/RocketChat/Rocket.Chat/pull/7561) by [@gdelavald](https://github.com/gdelavald)) + +- Configurable Volume for Notifications #6087 ([#7517](https://github.com/RocketChat/Rocket.Chat/pull/7517) by [@lindoelio](https://github.com/lindoelio)) + +- Do not rate limit bots on createDirectMessage ([#7326](https://github.com/RocketChat/Rocket.Chat/pull/7326) by [@jangmarker](https://github.com/jangmarker)) + +- Edit user permissions ([#7309](https://github.com/RocketChat/Rocket.Chat/pull/7309)) + +- flex-tab now is side by side with message list ([#7448](https://github.com/RocketChat/Rocket.Chat/pull/7448) by [@karlprieb](https://github.com/karlprieb)) + +- Force use of MongoDB for spotlight queries ([#7311](https://github.com/RocketChat/Rocket.Chat/pull/7311)) + +- Option to select unread count behavior ([#7477](https://github.com/RocketChat/Rocket.Chat/pull/7477)) + +- Option to select unread count style ([#7589](https://github.com/RocketChat/Rocket.Chat/pull/7589)) + +- Room type and recipient data for global event ([#7523](https://github.com/RocketChat/Rocket.Chat/pull/7523) by [@danischreiber](https://github.com/danischreiber)) + +- Search users also by email in toolbar ([#7334](https://github.com/RocketChat/Rocket.Chat/pull/7334) by [@shahar3012](https://github.com/shahar3012)) + +- Show different shape for alert numbers when have mentions ([#7580](https://github.com/RocketChat/Rocket.Chat/pull/7580)) + +- Show emojis and file uploads on notifications ([#7559](https://github.com/RocketChat/Rocket.Chat/pull/7559)) + +- Show room leader at top of chat when user scrolls down. Set and unset leader as admin. ([#7526](https://github.com/RocketChat/Rocket.Chat/pull/7526) by [@danischreiber](https://github.com/danischreiber)) + +- Update meteor to 1.5.1 ([#7496](https://github.com/RocketChat/Rocket.Chat/pull/7496)) + +### 🐛 Bug fixes + + +- "requirePasswordChange" property not being saved when set to false ([#7209](https://github.com/RocketChat/Rocket.Chat/pull/7209)) + +- Add needed dependency for snaps ([#8389](https://github.com/RocketChat/Rocket.Chat/pull/8389)) + +- Always set LDAP properties on login ([#7472](https://github.com/RocketChat/Rocket.Chat/pull/7472)) + +- Csv importer: work with more problematic data ([#7456](https://github.com/RocketChat/Rocket.Chat/pull/7456) by [@reist](https://github.com/reist)) + +- Duplicate code in rest api letting in a few bugs with the rest api ([#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408)) + +- Error when acessing settings before ready ([#7622](https://github.com/RocketChat/Rocket.Chat/pull/7622)) + +- Error when updating message with an empty attachment array ([#7624](https://github.com/RocketChat/Rocket.Chat/pull/7624)) + +- Fix admin room list show the correct i18n type ([#7582](https://github.com/RocketChat/Rocket.Chat/pull/7582) by [@ccfang](https://github.com/ccfang)) + +- Fix Block Delete Message After (n) Minutes ([#7207](https://github.com/RocketChat/Rocket.Chat/pull/7207)) + +- Fix Custom Fields Crashing on Register ([#7617](https://github.com/RocketChat/Rocket.Chat/pull/7617)) + +- Fix editing others messages ([#7200](https://github.com/RocketChat/Rocket.Chat/pull/7200)) + +- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431)) + +- Fix emoji picker translations ([#7195](https://github.com/RocketChat/Rocket.Chat/pull/7195)) + +- Fix error on image preview due to undefined description|title ([#7187](https://github.com/RocketChat/Rocket.Chat/pull/7187)) + +- Fix file upload on Slack import ([#7469](https://github.com/RocketChat/Rocket.Chat/pull/7469)) + +- Fix geolocation button ([#7322](https://github.com/RocketChat/Rocket.Chat/pull/7322)) + +- Fix hiding flex-tab on embedded view ([#7486](https://github.com/RocketChat/Rocket.Chat/pull/7486)) + +- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320)) + +- Fix messagebox growth ([#7629](https://github.com/RocketChat/Rocket.Chat/pull/7629)) + +- Fix migration of avatars from version 0.57.0 ([#7428](https://github.com/RocketChat/Rocket.Chat/pull/7428)) + +- Fix oembed previews not being shown ([#7208](https://github.com/RocketChat/Rocket.Chat/pull/7208)) + +- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432)) + +- Fix room load on first hit ([#7687](https://github.com/RocketChat/Rocket.Chat/pull/7687)) + +- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321)) + +- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403)) + +- Fix Word Placement Anywhere on WebHooks ([#7392](https://github.com/RocketChat/Rocket.Chat/pull/7392)) + +- Issue #7365: added check for the existence of a parameter in the CAS URL ([#7471](https://github.com/RocketChat/Rocket.Chat/pull/7471) by [@wsw70](https://github.com/wsw70)) + +- Look for livechat visitor IP address on X-Forwarded-For header ([#7554](https://github.com/RocketChat/Rocket.Chat/pull/7554)) + +- make flex-tab visible again when reduced width ([#7738](https://github.com/RocketChat/Rocket.Chat/pull/7738)) + +- Markdown noopener/noreferrer: use correct HTML attribute ([#7644](https://github.com/RocketChat/Rocket.Chat/pull/7644) by [@jangmarker](https://github.com/jangmarker)) + +- Message box on safari ([#7621](https://github.com/RocketChat/Rocket.Chat/pull/7621)) + +- Prevent new room status from playing when user status changes ([#7487](https://github.com/RocketChat/Rocket.Chat/pull/7487)) + +- Remove warning about 2FA support being unavailable in mobile apps ([#7354](https://github.com/RocketChat/Rocket.Chat/pull/7354) by [@al3x](https://github.com/al3x)) + +- Revert emojione package version upgrade ([#7557](https://github.com/RocketChat/Rocket.Chat/pull/7557)) + +- S3 uploads not working for custom URLs ([#7443](https://github.com/RocketChat/Rocket.Chat/pull/7443)) + +- Slack import failing and not being able to be restarted ([#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390)) + +- Stop logging mentions object to console ([#7562](https://github.com/RocketChat/Rocket.Chat/pull/7562) by [@gdelavald](https://github.com/gdelavald)) + +- Sweet-Alert modal popup position on mobile devices ([#7376](https://github.com/RocketChat/Rocket.Chat/pull/7376) by [@Oliver84](https://github.com/Oliver84)) + +- sweetalert alignment on mobile ([#7404](https://github.com/RocketChat/Rocket.Chat/pull/7404) by [@karlprieb](https://github.com/karlprieb)) + +- The username not being allowed to be passed into the user.setAvatar ([#7620](https://github.com/RocketChat/Rocket.Chat/pull/7620)) + +- Update node-engine in Snap to latest v4 LTS relase: 4.8.3 ([#7355](https://github.com/RocketChat/Rocket.Chat/pull/7355) by [@al3x](https://github.com/al3x)) + +- Uploading an unknown file type erroring out ([#7623](https://github.com/RocketChat/Rocket.Chat/pull/7623)) + +- url click events in the cordova app open in external browser or not at all ([#7205](https://github.com/RocketChat/Rocket.Chat/pull/7205) by [@flaviogrossi](https://github.com/flaviogrossi)) + +- URL parse error fix for issue #7169 ([#7538](https://github.com/RocketChat/Rocket.Chat/pull/7538) by [@satyapramodh](https://github.com/satyapramodh)) + +- Use I18n on "File Uploaded" ([#7199](https://github.com/RocketChat/Rocket.Chat/pull/7199)) + +- User avatar image background ([#7572](https://github.com/RocketChat/Rocket.Chat/pull/7572) by [@filipedelimabrito](https://github.com/filipedelimabrito)) + +- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639)) + +- Wrong render of snippet’s name ([#7630](https://github.com/RocketChat/Rocket.Chat/pull/7630)) + +
+🔍 Minor changes + + +- [Fix] Don't save user to DB when a custom field is invalid ([#7513](https://github.com/RocketChat/Rocket.Chat/pull/7513) by [@Darkneon](https://github.com/Darkneon)) + +- [New] Add instance id to response headers ([#7211](https://github.com/RocketChat/Rocket.Chat/pull/7211)) + +- Add helm chart kubernetes deployment ([#6340](https://github.com/RocketChat/Rocket.Chat/pull/6340) by [@pierreozoux](https://github.com/pierreozoux)) + +- Add missing parts of `one click to direct message` ([#7608](https://github.com/RocketChat/Rocket.Chat/pull/7608)) + +- Better Issue Template ([#7492](https://github.com/RocketChat/Rocket.Chat/pull/7492)) + +- Develop sync ([#7590](https://github.com/RocketChat/Rocket.Chat/pull/7590)) + +- Develop sync ([#7500](https://github.com/RocketChat/Rocket.Chat/pull/7500) by [@thinkeridea](https://github.com/thinkeridea)) + +- Develop sync ([#7363](https://github.com/RocketChat/Rocket.Chat/pull/7363) by [@JSzaszvari](https://github.com/JSzaszvari)) + +- Escape error messages ([#7308](https://github.com/RocketChat/Rocket.Chat/pull/7308)) + +- Fix the Zapier oAuth return url to the new one ([#7215](https://github.com/RocketChat/Rocket.Chat/pull/7215)) + +- Improve link parser using tokens ([#7615](https://github.com/RocketChat/Rocket.Chat/pull/7615)) + +- Improve login error messages ([#7616](https://github.com/RocketChat/Rocket.Chat/pull/7616)) + +- Improve room leader ([#7578](https://github.com/RocketChat/Rocket.Chat/pull/7578)) + +- LingoHub based on develop ([#7613](https://github.com/RocketChat/Rocket.Chat/pull/7613)) + +- LingoHub based on develop ([#7594](https://github.com/RocketChat/Rocket.Chat/pull/7594)) + +- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652)) + +- Release 0.58.0 ([#7752](https://github.com/RocketChat/Rocket.Chat/pull/7752) by [@flaviogrossi](https://github.com/flaviogrossi) & [@jangmarker](https://github.com/jangmarker) & [@karlprieb](https://github.com/karlprieb) & [@pierreozoux](https://github.com/pierreozoux) & [@ryoshimizu](https://github.com/ryoshimizu)) + +- Sync Master with 0.57.3 ([#7690](https://github.com/RocketChat/Rocket.Chat/pull/7690)) + +- update meteor to 1.5.0 ([#7287](https://github.com/RocketChat/Rocket.Chat/pull/7287)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@AhmetS](https://github.com/AhmetS) +- [@Darkneon](https://github.com/Darkneon) +- [@JSzaszvari](https://github.com/JSzaszvari) +- [@Oliver84](https://github.com/Oliver84) +- [@al3x](https://github.com/al3x) +- [@borsden](https://github.com/borsden) +- [@ccfang](https://github.com/ccfang) +- [@danilomiranda](https://github.com/danilomiranda) +- [@danischreiber](https://github.com/danischreiber) +- [@filipedelimabrito](https://github.com/filipedelimabrito) +- [@flaviogrossi](https://github.com/flaviogrossi) +- [@gdelavald](https://github.com/gdelavald) +- [@jangmarker](https://github.com/jangmarker) +- [@jfchevrette](https://github.com/jfchevrette) +- [@karlprieb](https://github.com/karlprieb) +- [@lindoelio](https://github.com/lindoelio) +- [@pierreozoux](https://github.com/pierreozoux) +- [@reist](https://github.com/reist) +- [@ruKurz](https://github.com/ruKurz) +- [@ryoshimizu](https://github.com/ryoshimizu) +- [@satyapramodh](https://github.com/satyapramodh) +- [@shahar3012](https://github.com/shahar3012) +- [@stalley](https://github.com/stalley) +- [@thinkeridea](https://github.com/thinkeridea) +- [@wsw70](https://github.com/wsw70) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.57.4 +`2017-10-05 · 3 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.2` +- NPM: `4.5.0` + +### 🐛 Bug fixes + + +- Add needed dependency for snaps ([#8389](https://github.com/RocketChat/Rocket.Chat/pull/8389)) + +- Duplicate code in rest api letting in a few bugs with the rest api ([#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408)) + +- Slack import failing and not being able to be restarted ([#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@graywolf336](https://github.com/graywolf336) + +# 0.57.3 +`2017-08-08 · 8 🐛 · 1 🔍 · 7 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.2` +- NPM: `4.5.0` + +### 🐛 Bug fixes + + +- custom soundEdit.html ([#7390](https://github.com/RocketChat/Rocket.Chat/pull/7390) by [@rasos](https://github.com/rasos)) + +- file upload broken when running in subdirectory https://github.com… ([#7395](https://github.com/RocketChat/Rocket.Chat/pull/7395) by [@ryoshimizu](https://github.com/ryoshimizu)) + +- Fix Anonymous User ([#7444](https://github.com/RocketChat/Rocket.Chat/pull/7444)) + +- Fix Join Channel Without Preview Room Permission ([#7535](https://github.com/RocketChat/Rocket.Chat/pull/7535)) + +- Improve build script example ([#7555](https://github.com/RocketChat/Rocket.Chat/pull/7555)) + +- Missing eventName in unUser ([#7533](https://github.com/RocketChat/Rocket.Chat/pull/7533) by [@Darkneon](https://github.com/Darkneon)) + +- Modernize rate limiting of sendMessage ([#7325](https://github.com/RocketChat/Rocket.Chat/pull/7325) by [@jangmarker](https://github.com/jangmarker)) + +- Use UTF8 setting for /create command ([#7394](https://github.com/RocketChat/Rocket.Chat/pull/7394)) + +
+🔍 Minor changes + + +- [Fix] Users and Channels list not respecting permissions ([#7212](https://github.com/RocketChat/Rocket.Chat/pull/7212)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Darkneon](https://github.com/Darkneon) +- [@jangmarker](https://github.com/jangmarker) +- [@rasos](https://github.com/rasos) +- [@ryoshimizu](https://github.com/ryoshimizu) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@graywolf336](https://github.com/graywolf336) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.57.2 +`2017-07-14 · 6 🐛 · 3 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.2` +- NPM: `4.5.0` + +### 🐛 Bug fixes + + +- Always set LDAP properties on login ([#7472](https://github.com/RocketChat/Rocket.Chat/pull/7472)) + +- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431)) + +- Fix file upload on Slack import ([#7469](https://github.com/RocketChat/Rocket.Chat/pull/7469)) + +- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432)) + +- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403)) + +- S3 uploads not working for custom URLs ([#7443](https://github.com/RocketChat/Rocket.Chat/pull/7443)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.57.1 +`2017-07-05 · 1 🐛 · 2 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.2` +- NPM: `4.5.0` + +### 🐛 Bug fixes + + +- Fix migration of avatars from version 0.57.0 ([#7428](https://github.com/RocketChat/Rocket.Chat/pull/7428)) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.57.0 +`2017-07-03 · 1 ️️️⚠️ · 12 🎉 · 45 🐛 · 29 🔍 · 25 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.2` +- NPM: `4.5.0` + +### ⚠️ BREAKING CHANGES + + +- Internal hubot does not load hubot-scripts anymore, it loads scripts from custom folders ([#7095](https://github.com/RocketChat/Rocket.Chat/pull/7095)) + +### 🎉 New features + + +- API method and REST Endpoint for getting a single message by id ([#7085](https://github.com/RocketChat/Rocket.Chat/pull/7085)) + +- Feature/delete any message permission ([#6919](https://github.com/RocketChat/Rocket.Chat/pull/6919) by [@phutchins](https://github.com/phutchins)) + +- Force use of MongoDB for spotlight queries ([#7311](https://github.com/RocketChat/Rocket.Chat/pull/7311)) + +- Improve CI/Docker build/release ([#6938](https://github.com/RocketChat/Rocket.Chat/pull/6938)) + +- Increase unread message count on @here mention ([#7059](https://github.com/RocketChat/Rocket.Chat/pull/7059)) + +- Make channel/group delete call answer to roomName ([#6857](https://github.com/RocketChat/Rocket.Chat/pull/6857) by [@reist](https://github.com/reist)) + +- Migration to add tags to email header and footer ([#7080](https://github.com/RocketChat/Rocket.Chat/pull/7080)) + +- New avatar storage types ([#6788](https://github.com/RocketChat/Rocket.Chat/pull/6788)) + +- postcss parser and cssnext implementation ([#6982](https://github.com/RocketChat/Rocket.Chat/pull/6982)) + +- Show full name in mentions if use full name setting enabled ([#6690](https://github.com/RocketChat/Rocket.Chat/pull/6690) by [@alexbrazier](https://github.com/alexbrazier)) + +- Show info about multiple instances at admin page ([#6953](https://github.com/RocketChat/Rocket.Chat/pull/6953)) + +- Start running unit tests ([#6605](https://github.com/RocketChat/Rocket.Chat/pull/6605)) + +### 🐛 Bug fixes + + +- "requirePasswordChange" property not being saved when set to false ([#7209](https://github.com/RocketChat/Rocket.Chat/pull/7209)) + +- Add and to header and footer ([#7025](https://github.com/RocketChat/Rocket.Chat/pull/7025) by [@ExTechOp](https://github.com/ExTechOp)) + +- Add option to ignore TLS in SMTP server settings ([#7084](https://github.com/RocketChat/Rocket.Chat/pull/7084) by [@colin-campbell](https://github.com/colin-campbell)) + +- Add support for carriage return in markdown code blocks ([#7072](https://github.com/RocketChat/Rocket.Chat/pull/7072) by [@jm-factorin](https://github.com/jm-factorin)) + +- Allow image insert from slack through slackbridge ([#6910](https://github.com/RocketChat/Rocket.Chat/pull/6910)) + +- Bugs in `isUserFromParams` helper ([#6904](https://github.com/RocketChat/Rocket.Chat/pull/6904) by [@abrom](https://github.com/abrom)) + +- Check that username is not in the room when being muted / unmuted ([#6840](https://github.com/RocketChat/Rocket.Chat/pull/6840) by [@matthewshirley](https://github.com/matthewshirley)) + +- click on image in a message ([#7345](https://github.com/RocketChat/Rocket.Chat/pull/7345)) + +- clipboard (permalink, copy, pin, star buttons) ([#7103](https://github.com/RocketChat/Rocket.Chat/pull/7103)) + +- do only store password if LDAP_Login_Fallback is on ([#7030](https://github.com/RocketChat/Rocket.Chat/pull/7030) by [@pmb0](https://github.com/pmb0)) + +- edit button on firefox ([#7105](https://github.com/RocketChat/Rocket.Chat/pull/7105)) + +- Fix all reactions having the same username ([#7157](https://github.com/RocketChat/Rocket.Chat/pull/7157)) + +- Fix avatar upload via users.setAvatar REST endpoint ([#7045](https://github.com/RocketChat/Rocket.Chat/pull/7045)) + +- Fix badge counter on iOS push notifications ([#6950](https://github.com/RocketChat/Rocket.Chat/pull/6950)) + +- fix bug in preview image ([#7121](https://github.com/RocketChat/Rocket.Chat/pull/7121)) + +- Fix editing others messages ([#7200](https://github.com/RocketChat/Rocket.Chat/pull/7200)) + +- Fix error handling for non-valid avatar URL ([#6972](https://github.com/RocketChat/Rocket.Chat/pull/6972)) + +- Fix highlightjs bug ([#6991](https://github.com/RocketChat/Rocket.Chat/pull/6991)) + +- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320)) + +- Fix login with Meteor saving an object as email address ([#6974](https://github.com/RocketChat/Rocket.Chat/pull/6974)) + +- Fix missing CSS files on production builds ([#7104](https://github.com/RocketChat/Rocket.Chat/pull/7104)) + +- Fix oembed previews not being shown ([#7208](https://github.com/RocketChat/Rocket.Chat/pull/7208)) + +- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321)) + +- Fix the failing tests ([#7094](https://github.com/RocketChat/Rocket.Chat/pull/7094)) + +- Fix the other tests failing due chimp update ([#6986](https://github.com/RocketChat/Rocket.Chat/pull/6986)) + +- Fix user's customFields not being saved correctly ([#7358](https://github.com/RocketChat/Rocket.Chat/pull/7358)) + +- Fixed typo hmtl -> html ([#7092](https://github.com/RocketChat/Rocket.Chat/pull/7092) by [@jautero](https://github.com/jautero)) + +- Improve avatar migration ([#7352](https://github.com/RocketChat/Rocket.Chat/pull/7352)) + +- Improve Tests ([#7049](https://github.com/RocketChat/Rocket.Chat/pull/7049)) + +- make channels.create API check for create-c ([#6968](https://github.com/RocketChat/Rocket.Chat/pull/6968) by [@reist](https://github.com/reist)) + +- Message being displayed unescaped ([#7379](https://github.com/RocketChat/Rocket.Chat/pull/7379) by [@gdelavald](https://github.com/gdelavald)) + +- New screen sharing Chrome extension checking method ([#7044](https://github.com/RocketChat/Rocket.Chat/pull/7044)) + +- overlapping text for users-typing-message ([#6999](https://github.com/RocketChat/Rocket.Chat/pull/6999) by [@darkv](https://github.com/darkv)) + +- Parse HTML on admin setting's descriptions ([#7014](https://github.com/RocketChat/Rocket.Chat/pull/7014)) + +- Parse markdown links last ([#6997](https://github.com/RocketChat/Rocket.Chat/pull/6997)) + +- Prevent Ctrl key on message field from reloading messages list ([#7033](https://github.com/RocketChat/Rocket.Chat/pull/7033)) + +- Proxy upload to correct instance ([#7304](https://github.com/RocketChat/Rocket.Chat/pull/7304)) + +- Remove room from roomPick setting ([#6912](https://github.com/RocketChat/Rocket.Chat/pull/6912)) + +- Removing the kadira package install from example build script. ([#7160](https://github.com/RocketChat/Rocket.Chat/pull/7160) by [@JSzaszvari](https://github.com/JSzaszvari)) + +- SAML: Only set KeyDescriptor when non empty ([#6961](https://github.com/RocketChat/Rocket.Chat/pull/6961) by [@sathieu](https://github.com/sathieu)) + +- Sidenav roomlist ([#7023](https://github.com/RocketChat/Rocket.Chat/pull/7023)) + +- Slackbridge text replacements ([#6913](https://github.com/RocketChat/Rocket.Chat/pull/6913)) + +- Updating Incoming Integration Post As Field Not Allowed ([#6903](https://github.com/RocketChat/Rocket.Chat/pull/6903)) + +- Use AWS Signature Version 4 signed URLs for uploads ([#6947](https://github.com/RocketChat/Rocket.Chat/pull/6947)) + +- video message recording dialog is shown in an incorrect position ([#7012](https://github.com/RocketChat/Rocket.Chat/pull/7012) by [@flaviogrossi](https://github.com/flaviogrossi)) + +
+🔍 Minor changes + + +- [Fix] Error when trying to show preview of undefined filetype ([#6935](https://github.com/RocketChat/Rocket.Chat/pull/6935)) + +- [New] LDAP: Use variables in User_Data_FieldMap for name mapping ([#6921](https://github.com/RocketChat/Rocket.Chat/pull/6921) by [@bbrauns](https://github.com/bbrauns)) + +- add server methods getRoomNameById ([#7102](https://github.com/RocketChat/Rocket.Chat/pull/7102) by [@thinkeridea](https://github.com/thinkeridea)) + +- Convert file unsubscribe.coffee to js ([#7145](https://github.com/RocketChat/Rocket.Chat/pull/7145)) + +- Convert hipchat importer to js ([#7146](https://github.com/RocketChat/Rocket.Chat/pull/7146)) + +- Convert irc package to js ([#7022](https://github.com/RocketChat/Rocket.Chat/pull/7022)) + +- Convert Livechat from Coffeescript to JavaScript ([#7096](https://github.com/RocketChat/Rocket.Chat/pull/7096)) + +- Convert meteor-autocomplete package to js ([#6936](https://github.com/RocketChat/Rocket.Chat/pull/6936)) + +- Convert oauth2-server-config package to js ([#7017](https://github.com/RocketChat/Rocket.Chat/pull/7017)) + +- Convert Ui Account Package to Js ([#6795](https://github.com/RocketChat/Rocket.Chat/pull/6795)) + +- Convert ui-admin package to js ([#6911](https://github.com/RocketChat/Rocket.Chat/pull/6911)) + +- Convert WebRTC Package to Js ([#6775](https://github.com/RocketChat/Rocket.Chat/pull/6775)) + +- converted rocketchat-importer ([#7018](https://github.com/RocketChat/Rocket.Chat/pull/7018)) + +- converted rocketchat-ui coffee to js part 2 ([#6836](https://github.com/RocketChat/Rocket.Chat/pull/6836)) + +- Fix forbidden error on setAvatar REST endpoint ([#7159](https://github.com/RocketChat/Rocket.Chat/pull/7159)) + +- Fix mobile avatars ([#7177](https://github.com/RocketChat/Rocket.Chat/pull/7177)) + +- fix the crashing tests ([#6976](https://github.com/RocketChat/Rocket.Chat/pull/6976)) + +- Fix the Zapier oAuth return url to the new one ([#7215](https://github.com/RocketChat/Rocket.Chat/pull/7215)) + +- Ldap: User_Data_FieldMap description ([#7055](https://github.com/RocketChat/Rocket.Chat/pull/7055) by [@bbrauns](https://github.com/bbrauns)) + +- LingoHub based on develop ([#7114](https://github.com/RocketChat/Rocket.Chat/pull/7114)) + +- LingoHub based on develop ([#7005](https://github.com/RocketChat/Rocket.Chat/pull/7005)) + +- LingoHub based on develop ([#6978](https://github.com/RocketChat/Rocket.Chat/pull/6978)) + +- Remove missing CoffeeScript dependencies ([#7154](https://github.com/RocketChat/Rocket.Chat/pull/7154)) + +- Remove Useless Jasmine Tests ([#7062](https://github.com/RocketChat/Rocket.Chat/pull/7062)) + +- Rocketchat ui message ([#6914](https://github.com/RocketChat/Rocket.Chat/pull/6914)) + +- Rocketchat ui3 ([#7006](https://github.com/RocketChat/Rocket.Chat/pull/7006)) + +- rocketchat-importer-slack coffee to js ([#6987](https://github.com/RocketChat/Rocket.Chat/pull/6987)) + +- rocketchat-lib[4] coffee to js ([#6735](https://github.com/RocketChat/Rocket.Chat/pull/6735)) + +- Switch logic of artifact name ([#7158](https://github.com/RocketChat/Rocket.Chat/pull/7158)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@ExTechOp](https://github.com/ExTechOp) +- [@JSzaszvari](https://github.com/JSzaszvari) +- [@abrom](https://github.com/abrom) +- [@alexbrazier](https://github.com/alexbrazier) +- [@bbrauns](https://github.com/bbrauns) +- [@colin-campbell](https://github.com/colin-campbell) +- [@darkv](https://github.com/darkv) +- [@flaviogrossi](https://github.com/flaviogrossi) +- [@gdelavald](https://github.com/gdelavald) +- [@jautero](https://github.com/jautero) +- [@jm-factorin](https://github.com/jm-factorin) +- [@matthewshirley](https://github.com/matthewshirley) +- [@phutchins](https://github.com/phutchins) +- [@pmb0](https://github.com/pmb0) +- [@reist](https://github.com/reist) +- [@sathieu](https://github.com/sathieu) +- [@thinkeridea](https://github.com/thinkeridea) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.56.0 +`2017-05-15 · 11 🎉 · 21 🐛 · 19 🔍 · 19 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.2` +- NPM: `4.5.0` + +### 🎉 New features + + +- Add a pointer cursor to message images ([#6881](https://github.com/RocketChat/Rocket.Chat/pull/6881)) + +- Add a setting to not run outgoing integrations on message edits ([#6615](https://github.com/RocketChat/Rocket.Chat/pull/6615)) + +- Add option on Channel Settings: Hide Notifications and Hide Unread Room Status (#2707, #2143) ([#5373](https://github.com/RocketChat/Rocket.Chat/pull/5373)) + +- Add SMTP settings for Protocol and Pool ([#6940](https://github.com/RocketChat/Rocket.Chat/pull/6940)) + +- create a method 'create token' ([#6807](https://github.com/RocketChat/Rocket.Chat/pull/6807)) + +- Improve CI/Docker build/release ([#6938](https://github.com/RocketChat/Rocket.Chat/pull/6938)) + +- Make channels.info accept roomName, just like groups.info ([#6827](https://github.com/RocketChat/Rocket.Chat/pull/6827) by [@reist](https://github.com/reist)) + +- Option to allow to signup as anonymous ([#6797](https://github.com/RocketChat/Rocket.Chat/pull/6797)) + +- Remove lesshat ([#6722](https://github.com/RocketChat/Rocket.Chat/pull/6722) by [@karlprieb](https://github.com/karlprieb)) + +- Show info about multiple instances at admin page ([#6953](https://github.com/RocketChat/Rocket.Chat/pull/6953)) + +- Use tokenSentVia parameter for clientid/secret to token endpoint ([#6692](https://github.com/RocketChat/Rocket.Chat/pull/6692) by [@intelradoux](https://github.com/intelradoux)) + +### 🐛 Bug fixes + + +- Added helper for testing if the current user matches the params ([#6845](https://github.com/RocketChat/Rocket.Chat/pull/6845) by [@abrom](https://github.com/abrom)) + +- Archiving Direct Messages ([#6737](https://github.com/RocketChat/Rocket.Chat/pull/6737)) + +- Compile CSS color variables ([#6939](https://github.com/RocketChat/Rocket.Chat/pull/6939)) + +- CSV importer: require that there is some data in the zip, not ALL data ([#6768](https://github.com/RocketChat/Rocket.Chat/pull/6768) by [@reist](https://github.com/reist)) + +- emoji picker exception ([#6709](https://github.com/RocketChat/Rocket.Chat/pull/6709) by [@gdelavald](https://github.com/gdelavald)) + +- Fix Caddy by forcing go 1.7 as needed by one of caddy's dependencies ([#6721](https://github.com/RocketChat/Rocket.Chat/pull/6721)) + +- fix german translation ([#6790](https://github.com/RocketChat/Rocket.Chat/pull/6790) by [@sscholl](https://github.com/sscholl)) + +- Fix iframe wise issues ([#6798](https://github.com/RocketChat/Rocket.Chat/pull/6798)) + +- Fix message types ([#6704](https://github.com/RocketChat/Rocket.Chat/pull/6704)) + +- Hides nav buttons when selecting own profile ([#6760](https://github.com/RocketChat/Rocket.Chat/pull/6760) by [@gdelavald](https://github.com/gdelavald)) + +- Improve and correct Iframe Integration help text ([#6793](https://github.com/RocketChat/Rocket.Chat/pull/6793)) + +- Incorrect error message when creating channel ([#6747](https://github.com/RocketChat/Rocket.Chat/pull/6747) by [@gdelavald](https://github.com/gdelavald)) + +- make channels.create API check for create-c ([#6968](https://github.com/RocketChat/Rocket.Chat/pull/6968) by [@reist](https://github.com/reist)) + +- Not showing unread count on electron app’s icon ([#6923](https://github.com/RocketChat/Rocket.Chat/pull/6923)) + +- Quoted and replied messages not retaining the original message's alias ([#6800](https://github.com/RocketChat/Rocket.Chat/pull/6800)) + +- Remove spaces from env PORT and INSTANCE_IP ([#6955](https://github.com/RocketChat/Rocket.Chat/pull/6955)) + +- REST API user.update throwing error due to rate limiting ([#6796](https://github.com/RocketChat/Rocket.Chat/pull/6796)) + +- Search full name on client side ([#6767](https://github.com/RocketChat/Rocket.Chat/pull/6767) by [@alexbrazier](https://github.com/alexbrazier)) + +- Sort by real name if use real name setting is enabled ([#6758](https://github.com/RocketChat/Rocket.Chat/pull/6758) by [@alexbrazier](https://github.com/alexbrazier)) + +- start/unstar message ([#6861](https://github.com/RocketChat/Rocket.Chat/pull/6861)) + +- Users status on main menu always offline ([#6896](https://github.com/RocketChat/Rocket.Chat/pull/6896)) + +
+🔍 Minor changes + + +- [Fix] Error when trying to show preview of undefined filetype ([#6935](https://github.com/RocketChat/Rocket.Chat/pull/6935)) + +- [New] Snap arm support ([#6842](https://github.com/RocketChat/Rocket.Chat/pull/6842)) + +- Anonymous use ([#5986](https://github.com/RocketChat/Rocket.Chat/pull/5986)) + +- Breaking long URLS to prevent overflow ([#6368](https://github.com/RocketChat/Rocket.Chat/pull/6368) by [@robertdown](https://github.com/robertdown)) + +- Convert Katex Package to Js ([#6671](https://github.com/RocketChat/Rocket.Chat/pull/6671)) + +- Convert Mailer Package to Js ([#6780](https://github.com/RocketChat/Rocket.Chat/pull/6780)) + +- Convert markdown to js ([#6694](https://github.com/RocketChat/Rocket.Chat/pull/6694) by [@ehkasper](https://github.com/ehkasper)) + +- Convert Mentions-Flextab Package to Js ([#6689](https://github.com/RocketChat/Rocket.Chat/pull/6689)) + +- Convert Message-Star Package to js ([#6781](https://github.com/RocketChat/Rocket.Chat/pull/6781)) + +- Convert Oembed Package to Js ([#6688](https://github.com/RocketChat/Rocket.Chat/pull/6688)) + +- Converted rocketchat-lib 3 ([#6672](https://github.com/RocketChat/Rocket.Chat/pull/6672)) + +- disable proxy configuration ([#6654](https://github.com/RocketChat/Rocket.Chat/pull/6654) by [@glehmann](https://github.com/glehmann)) + +- LingoHub based on develop ([#6816](https://github.com/RocketChat/Rocket.Chat/pull/6816)) + +- LingoHub based on develop ([#6715](https://github.com/RocketChat/Rocket.Chat/pull/6715)) + +- LingoHub based on develop ([#6703](https://github.com/RocketChat/Rocket.Chat/pull/6703)) + +- Meteor update ([#6858](https://github.com/RocketChat/Rocket.Chat/pull/6858)) + +- meteor update to 1.4.4 ([#6706](https://github.com/RocketChat/Rocket.Chat/pull/6706)) + +- Missing useful fields in admin user list #5110 ([#6804](https://github.com/RocketChat/Rocket.Chat/pull/6804) by [@vlogic](https://github.com/vlogic)) + +- Rocketchat lib2 ([#6593](https://github.com/RocketChat/Rocket.Chat/pull/6593)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@abrom](https://github.com/abrom) +- [@alexbrazier](https://github.com/alexbrazier) +- [@ehkasper](https://github.com/ehkasper) +- [@gdelavald](https://github.com/gdelavald) +- [@glehmann](https://github.com/glehmann) +- [@intelradoux](https://github.com/intelradoux) +- [@karlprieb](https://github.com/karlprieb) +- [@reist](https://github.com/reist) +- [@robertdown](https://github.com/robertdown) +- [@sscholl](https://github.com/sscholl) +- [@vlogic](https://github.com/vlogic) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 0.55.1 +`2017-04-19 · 1 🔍 · 1 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.0` +- NPM: `4.3.0` + +
+🔍 Minor changes + + +- [Fix] Bug with incoming integration (0.55.1) ([#6734](https://github.com/RocketChat/Rocket.Chat/pull/6734)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@rodrigok](https://github.com/rodrigok) + +# 0.55.0 +`2017-04-18 · 1 ️️️⚠️ · 9 🎉 · 25 🐛 · 87 🔍 · 23 👩‍💻👨‍💻` + +### Engine versions +- Node: `4.8.0` +- NPM: `4.3.0` + +### ⚠️ BREAKING CHANGES + + +- `getUsersOfRoom` API to return array of objects with user and username, instead of array of strings + +### 🎉 New features + + +- 'users.resetAvatar' rest api endpoint ([#6616](https://github.com/RocketChat/Rocket.Chat/pull/6616)) + +- Add monitoring package ([#6634](https://github.com/RocketChat/Rocket.Chat/pull/6634)) + +- Add shield.svg api route to generate custom shields/badges ([#6565](https://github.com/RocketChat/Rocket.Chat/pull/6565) by [@alexbrazier](https://github.com/alexbrazier)) + +- Drupal oAuth Integration for Rocketchat ([#6632](https://github.com/RocketChat/Rocket.Chat/pull/6632) by [@Lawri-van-Buel](https://github.com/Lawri-van-Buel)) + +- Expose Livechat to Incoming Integrations and allow response ([#6681](https://github.com/RocketChat/Rocket.Chat/pull/6681)) + +- Integrations, both incoming and outgoing, now have access to the models. Example: `Users.findOneById(id)` ([#6420](https://github.com/RocketChat/Rocket.Chat/pull/6420)) + +- Permission `join-without-join-code` assigned to admins and bots by default ([#6430](https://github.com/RocketChat/Rocket.Chat/pull/6430)) + +- resolve merge share function ([#6577](https://github.com/RocketChat/Rocket.Chat/pull/6577) by [@karlprieb](https://github.com/karlprieb) & [@tgxn](https://github.com/tgxn)) + +- Two Factor Auth ([#6476](https://github.com/RocketChat/Rocket.Chat/pull/6476)) + +### 🐛 Bug fixes + + +- Accounts from LinkedIn OAuth without name ([#6590](https://github.com/RocketChat/Rocket.Chat/pull/6590)) + +- Administrators being rate limited when editing users data ([#6659](https://github.com/RocketChat/Rocket.Chat/pull/6659)) + +- Allow question on OAuth token path ([#6684](https://github.com/RocketChat/Rocket.Chat/pull/6684)) + +- arguments logger ([#6617](https://github.com/RocketChat/Rocket.Chat/pull/6617)) + +- can not get access_token when using custom oauth ([#6531](https://github.com/RocketChat/Rocket.Chat/pull/6531) by [@fengt](https://github.com/fengt)) + +- Do not add default roles for users without services field ([#6594](https://github.com/RocketChat/Rocket.Chat/pull/6594)) + +- Do not escaping markdown on message attachments ([#6648](https://github.com/RocketChat/Rocket.Chat/pull/6648)) + +- Downgrade email package to from 1.2.0 to 1.1.18 ([#6680](https://github.com/RocketChat/Rocket.Chat/pull/6680)) + +- emoji picker exception ([#6709](https://github.com/RocketChat/Rocket.Chat/pull/6709) by [@gdelavald](https://github.com/gdelavald)) + +- Encode avatar url to prevent CSS injection ([#6651](https://github.com/RocketChat/Rocket.Chat/pull/6651)) + +- Error when returning undefined from incoming intergation’s script ([#6683](https://github.com/RocketChat/Rocket.Chat/pull/6683)) + +- Fix Logger stdout publication ([#6682](https://github.com/RocketChat/Rocket.Chat/pull/6682)) + +- Fix message types ([#6704](https://github.com/RocketChat/Rocket.Chat/pull/6704)) + +- Improve markdown code ([#6650](https://github.com/RocketChat/Rocket.Chat/pull/6650)) + +- Incoming integrations would break when trying to use the `Store` feature.` + +- Incorrect curl command being generated on incoming integrations ([#6620](https://github.com/RocketChat/Rocket.Chat/pull/6620)) + +- Large files crashed browser when trying to show preview ([#6598](https://github.com/RocketChat/Rocket.Chat/pull/6598)) + +- Make sure username exists in findByActiveUsersExcept ([#6674](https://github.com/RocketChat/Rocket.Chat/pull/6674)) + +- messageBox: put "joinCodeRequired" back ([#6600](https://github.com/RocketChat/Rocket.Chat/pull/6600) by [@karlprieb](https://github.com/karlprieb)) + +- Outgoing webhooks which have an error and they're retrying would still retry even if the integration was disabled` ([#6478](https://github.com/RocketChat/Rocket.Chat/pull/6478)) + +- Removed Deprecated Package rocketchat:sharedsecret` + +- Revert unwanted UI changes ([#6658](https://github.com/RocketChat/Rocket.Chat/pull/6658)) + +- Update server cache indexes on record updates ([#6686](https://github.com/RocketChat/Rocket.Chat/pull/6686)) + +- Usage of subtagged languages ([#6575](https://github.com/RocketChat/Rocket.Chat/pull/6575)) + +- UTC offset missing UTC text when positive ([#6562](https://github.com/RocketChat/Rocket.Chat/pull/6562) by [@alexbrazier](https://github.com/alexbrazier)) + +
+🔍 Minor changes + + +- 'allow reacting' should be a toggle option.otherwise, the style will display an error ([#6522](https://github.com/RocketChat/Rocket.Chat/pull/6522) by [@szluohua](https://github.com/szluohua)) + +- [New] Added oauth2 userinfo endpoint ([#6554](https://github.com/RocketChat/Rocket.Chat/pull/6554)) + +- [New] Switch Snaps to use oplog ([#6608](https://github.com/RocketChat/Rocket.Chat/pull/6608)) + +- Add `fname` to subscriptions in memory ([#6597](https://github.com/RocketChat/Rocket.Chat/pull/6597)) + +- Add candidate snap channel ([#6614](https://github.com/RocketChat/Rocket.Chat/pull/6614)) + +- Add ESLint rule `object-shorthand` ([#6457](https://github.com/RocketChat/Rocket.Chat/pull/6457)) + +- Add ESLint rule `one-var` ([#6458](https://github.com/RocketChat/Rocket.Chat/pull/6458)) + +- Add ESLint rules `one-var` and `no-var` ([#6459](https://github.com/RocketChat/Rocket.Chat/pull/6459)) + +- Add ESLint rules `prefer-template` and `template-curly-spacing` ([#6456](https://github.com/RocketChat/Rocket.Chat/pull/6456)) + +- Add permission check to the import methods and not just the UI ([#6400](https://github.com/RocketChat/Rocket.Chat/pull/6400)) + +- Added Deploy method and platform to stats ([#6649](https://github.com/RocketChat/Rocket.Chat/pull/6649)) + +- Allow livechat managers to transfer chats ([#6180](https://github.com/RocketChat/Rocket.Chat/pull/6180) by [@drallgood](https://github.com/drallgood)) + +- Allow Livechat visitors to switch the department ([#6035](https://github.com/RocketChat/Rocket.Chat/pull/6035) by [@drallgood](https://github.com/drallgood)) + +- Change all instances of Meteor.Collection for Mongo.Collection ([#6410](https://github.com/RocketChat/Rocket.Chat/pull/6410)) + +- Clipboard [Firefox version < 50] ([#6280](https://github.com/RocketChat/Rocket.Chat/pull/6280)) + +- Convert ChatOps Package to JavaScript ([#6425](https://github.com/RocketChat/Rocket.Chat/pull/6425)) + +- Convert Dolphin Package to JavaScript ([#6427](https://github.com/RocketChat/Rocket.Chat/pull/6427)) + +- Convert File Package to js ([#6503](https://github.com/RocketChat/Rocket.Chat/pull/6503)) + +- convert mapview package to js ([#6471](https://github.com/RocketChat/Rocket.Chat/pull/6471)) + +- Convert Message Pin Package to JS ([#6576](https://github.com/RocketChat/Rocket.Chat/pull/6576)) + +- convert rocketchat-ui part 2 ([#6539](https://github.com/RocketChat/Rocket.Chat/pull/6539)) + +- Convert Spotify Package to JS ([#6449](https://github.com/RocketChat/Rocket.Chat/pull/6449)) + +- Convert Statistics Package to JS ([#6447](https://github.com/RocketChat/Rocket.Chat/pull/6447)) + +- Convert Theme Package to JS ([#6491](https://github.com/RocketChat/Rocket.Chat/pull/6491)) + +- Convert Tutum Package to JS ([#6446](https://github.com/RocketChat/Rocket.Chat/pull/6446)) + +- Convert Ui-Login Package to Js ([#6561](https://github.com/RocketChat/Rocket.Chat/pull/6561)) + +- Convert Ui-Master Package to Js ([#6498](https://github.com/RocketChat/Rocket.Chat/pull/6498)) + +- Convert ui-vrecord Package to JS ([#6473](https://github.com/RocketChat/Rocket.Chat/pull/6473)) + +- Convert Version Package to JS ([#6494](https://github.com/RocketChat/Rocket.Chat/pull/6494)) + +- Convert Wordpress Package to js ([#6499](https://github.com/RocketChat/Rocket.Chat/pull/6499)) + +- converted getAvatarUrlFromUsername ([#6496](https://github.com/RocketChat/Rocket.Chat/pull/6496)) + +- converted messageAttachment coffee to js ([#6500](https://github.com/RocketChat/Rocket.Chat/pull/6500)) + +- converted meteor-accounts-saml coffee to js ([#6450](https://github.com/RocketChat/Rocket.Chat/pull/6450)) + +- converted Rocketchat logger coffee to js ([#6495](https://github.com/RocketChat/Rocket.Chat/pull/6495)) + +- converted rocketchat-integrations coffee to js ([#6502](https://github.com/RocketChat/Rocket.Chat/pull/6502)) + +- converted rocketchat-mentions coffee to js ([#6467](https://github.com/RocketChat/Rocket.Chat/pull/6467)) + +- converted rocketchat-message-mark-as-unread coffee/js ([#6445](https://github.com/RocketChat/Rocket.Chat/pull/6445)) + +- converted rocketchat-slashcommands-kick coffee to js ([#6453](https://github.com/RocketChat/Rocket.Chat/pull/6453)) + +- converted slashcommand-invite coffee to js ([#6497](https://github.com/RocketChat/Rocket.Chat/pull/6497)) + +- converted slashcommand-join coffee to js ([#6469](https://github.com/RocketChat/Rocket.Chat/pull/6469)) + +- converted slashcommand-leave coffee to js ([#6470](https://github.com/RocketChat/Rocket.Chat/pull/6470)) + +- converted slashcommand-me coffee to js ([#6468](https://github.com/RocketChat/Rocket.Chat/pull/6468)) + +- converted slashcommand-msg coffee to js ([#6501](https://github.com/RocketChat/Rocket.Chat/pull/6501)) + +- converted slashcommands-mute coffee to js ([#6474](https://github.com/RocketChat/Rocket.Chat/pull/6474)) + +- Create groups.addAll endpoint and add activeUsersOnly param. ([#6505](https://github.com/RocketChat/Rocket.Chat/pull/6505) by [@nathanmarcos](https://github.com/nathanmarcos)) + +- dependencies upgrade ([#6584](https://github.com/RocketChat/Rocket.Chat/pull/6584)) + +- Do not show reset button for hidden settings ([#6432](https://github.com/RocketChat/Rocket.Chat/pull/6432)) + +- Env override initial setting ([#6163](https://github.com/RocketChat/Rocket.Chat/pull/6163) by [@mrsimpson](https://github.com/mrsimpson)) + +- ESLint add rule `no-void` ([#6479](https://github.com/RocketChat/Rocket.Chat/pull/6479)) + +- fix channel merge option of user preferences ([#6493](https://github.com/RocketChat/Rocket.Chat/pull/6493) by [@billtt](https://github.com/billtt)) + +- Fix livechat permissions ([#6466](https://github.com/RocketChat/Rocket.Chat/pull/6466)) + +- fix livechat widget on small screens ([#6122](https://github.com/RocketChat/Rocket.Chat/pull/6122) by [@karlprieb](https://github.com/karlprieb)) + +- Fix recently introduced bug: OnePassword not defined ([#6591](https://github.com/RocketChat/Rocket.Chat/pull/6591)) + +- Fix typo of the safari pinned tab label ([#6487](https://github.com/RocketChat/Rocket.Chat/pull/6487) by [@qge](https://github.com/qge)) + +- Fix visitor ending livechat if multiples still open ([#6419](https://github.com/RocketChat/Rocket.Chat/pull/6419)) + +- fixed typo in readme.md ([#6580](https://github.com/RocketChat/Rocket.Chat/pull/6580) by [@sezinkarli](https://github.com/sezinkarli)) + +- Flex-Tab CoffeeScript to JavaScript I ([#6276](https://github.com/RocketChat/Rocket.Chat/pull/6276)) + +- Flex-Tab CoffeeScript to JavaScript II ([#6277](https://github.com/RocketChat/Rocket.Chat/pull/6277)) + +- Flex-Tab CoffeeScript to JavaScript III ([#6278](https://github.com/RocketChat/Rocket.Chat/pull/6278)) + +- focus first textbox element ([#6257](https://github.com/RocketChat/Rocket.Chat/pull/6257) by [@a5his](https://github.com/a5his)) + +- Hide email settings on Sandstorm ([#6429](https://github.com/RocketChat/Rocket.Chat/pull/6429)) + +- Join command ([#6268](https://github.com/RocketChat/Rocket.Chat/pull/6268)) + +- Just admins can change a Default Channel to Private (the channel will be a non default channel) ([#6426](https://github.com/RocketChat/Rocket.Chat/pull/6426)) + +- LingoHub based on develop ([#6574](https://github.com/RocketChat/Rocket.Chat/pull/6574)) + +- LingoHub based on develop ([#6567](https://github.com/RocketChat/Rocket.Chat/pull/6567)) + +- LingoHub based on develop ([#6647](https://github.com/RocketChat/Rocket.Chat/pull/6647)) + +- Livechat fix office hours order ([#6413](https://github.com/RocketChat/Rocket.Chat/pull/6413)) + +- Make favicon package easier to read. ([#6422](https://github.com/RocketChat/Rocket.Chat/pull/6422) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Max textarea height ([#6409](https://github.com/RocketChat/Rocket.Chat/pull/6409)) + +- meteor update ([#6631](https://github.com/RocketChat/Rocket.Chat/pull/6631)) + +- Move room display name logic to roomType definition ([#6585](https://github.com/RocketChat/Rocket.Chat/pull/6585)) + +- Move wordpress packages client files to client folder ([#6571](https://github.com/RocketChat/Rocket.Chat/pull/6571)) + +- New feature: Room announcement ([#6351](https://github.com/RocketChat/Rocket.Chat/pull/6351) by [@billtt](https://github.com/billtt)) + +- Only configure LoggerManager on server ([#6596](https://github.com/RocketChat/Rocket.Chat/pull/6596)) + +- Password reset Cleaner text ([#6319](https://github.com/RocketChat/Rocket.Chat/pull/6319)) + +- POC Google Natural Language integration ([#6298](https://github.com/RocketChat/Rocket.Chat/pull/6298)) + +- Remove coffeescript package from ui-flextab ([#6543](https://github.com/RocketChat/Rocket.Chat/pull/6543) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Remove coffeescript package from ui-sidenav ([#6542](https://github.com/RocketChat/Rocket.Chat/pull/6542) by [@Kiran-Rao](https://github.com/Kiran-Rao)) + +- Remove Deprecated Shared Secret Package ([#6540](https://github.com/RocketChat/Rocket.Chat/pull/6540)) + +- rocketchat-channel-settings coffee to js ([#6551](https://github.com/RocketChat/Rocket.Chat/pull/6551)) + +- rocketchat-channel-settings-mail-messages coffee to js ([#6541](https://github.com/RocketChat/Rocket.Chat/pull/6541)) + +- rocketchat-lib part1 ([#6553](https://github.com/RocketChat/Rocket.Chat/pull/6553)) + +- rocketchat-ui coffee to js part1 ([#6504](https://github.com/RocketChat/Rocket.Chat/pull/6504)) + +- Side-nav CoffeeScript to JavaScript ([#6264](https://github.com/RocketChat/Rocket.Chat/pull/6264)) + +- Side-nav CoffeeScript to JavaScript II ([#6266](https://github.com/RocketChat/Rocket.Chat/pull/6266)) + +- Side-nav CoffeeScript to JavaScript III ([#6274](https://github.com/RocketChat/Rocket.Chat/pull/6274)) + +- Use real name instead of username for messages and direct messages list ([#3851](https://github.com/RocketChat/Rocket.Chat/pull/3851) by [@alexbrazier](https://github.com/alexbrazier)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@Kiran-Rao](https://github.com/Kiran-Rao) +- [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) +- [@a5his](https://github.com/a5his) +- [@alexbrazier](https://github.com/alexbrazier) +- [@billtt](https://github.com/billtt) +- [@drallgood](https://github.com/drallgood) +- [@fengt](https://github.com/fengt) +- [@gdelavald](https://github.com/gdelavald) +- [@karlprieb](https://github.com/karlprieb) +- [@mrsimpson](https://github.com/mrsimpson) +- [@nathanmarcos](https://github.com/nathanmarcos) +- [@qge](https://github.com/qge) +- [@sezinkarli](https://github.com/sezinkarli) +- [@szluohua](https://github.com/szluohua) +- [@tgxn](https://github.com/tgxn) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@engelgabriel](https://github.com/engelgabriel) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@graywolf336](https://github.com/graywolf336) +- [@marceloschmidt](https://github.com/marceloschmidt) +- [@rodrigok](https://github.com/rodrigok) +- [@sampaiodiego](https://github.com/sampaiodiego) \ No newline at end of file diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index c85b4dbc0c83..6a5117afe48d 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-develop +ENV RC_VERSION 4.7.0-rc.0 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 66a36cf8a918..babd78ddd475 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-develop/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0-rc.0/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index a180ee82231f..92ac3dd26c54 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-develop +version: 4.7.0-rc.0 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index d479cebb3538..5d7341f2ac5f 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-develop" + "version": "4.7.0-rc.0" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 4a5cead7c856..c245d92f10f4 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-develop", + "version": "4.7.0-rc.0", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index b24962281971..980122d0f815 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-develop", + "version": "4.7.0-rc.0", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 378584148905891f304e9e7aecfd5e20255d7d71 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Tue, 26 Apr 2022 10:12:35 -0300 Subject: [PATCH 002/145] Bump version to 4.7.0-rc.1 --- .github/history.json | 46 +++++++++++++++++++ HISTORY.md | 24 ++++++++++ apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 76 insertions(+), 6 deletions(-) diff --git a/.github/history.json b/.github/history.json index b780b33c11ad..f8c3753ab2ca 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74125,6 +74125,52 @@ ] } ] + }, + "4.7.0-rc.1": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25305", + "title": "Regression: eslint not running on packages", + "userLogin": "pierre-lehnen-rc", + "contributors": [ + "pierre-lehnen-rc", + "ggazzo" + ] + }, + { + "pr": "25299", + "title": "Regression: Add `isPending` status to message", + "userLogin": "filipemarins", + "contributors": [ + "filipemarins" + ] + }, + { + "pr": "25301", + "title": "Regression: Shows error if micro service cannot connect to Mongo", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25287", + "title": "Regression: Use exact Node version on micro services Docker images", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index f515018817b4..bb9a6d310616 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,30 @@ # 4.7.0 (Under Release Candidate Process) +## 4.7.0-rc.1 +`2022-04-26 · 4 🔍 · 4 👩‍💻👨‍💻` + +
+🔍 Minor changes + + +- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299)) + +- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305)) + +- Regression: Shows error if micro service cannot connect to Mongo ([#25301](https://github.com/RocketChat/Rocket.Chat/pull/25301)) + +- Regression: Use exact Node version on micro services Docker images ([#25287](https://github.com/RocketChat/Rocket.Chat/pull/25287)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@filipemarins](https://github.com/filipemarins) +- [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@sampaiodiego](https://github.com/sampaiodiego) + ## 4.7.0-rc.0 `2022-04-22 · 4 🎉 · 7 🚀 · 33 🐛 · 47 🔍 · 34 👩‍💻👨‍💻` diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index 6a5117afe48d..d8352d7ca96e 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-rc.0 +ENV RC_VERSION 4.7.0-rc.1 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index babd78ddd475..3b31f604fa32 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-rc.0/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0-rc.1/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index 92ac3dd26c54..3305e17e01b5 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-rc.0 +version: 4.7.0-rc.1 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 5d7341f2ac5f..dbfad35450bf 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-rc.0" + "version": "4.7.0-rc.1" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index c245d92f10f4..d80f9584ea08 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-rc.0", + "version": "4.7.0-rc.1", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index 980122d0f815..ca6fcd157991 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-rc.0", + "version": "4.7.0-rc.1", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 1ae769301e04bd6f9c5431bcae642ad3ea2d5eb2 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Wed, 27 Apr 2022 08:15:34 -0300 Subject: [PATCH 003/145] Bump version to 4.7.0-rc.2 --- .github/history.json | 69 +++++++++++++++++++ HISTORY.md | 40 +++++++++++ apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 115 insertions(+), 6 deletions(-) diff --git a/.github/history.json b/.github/history.json index f8c3753ab2ca..2e0104449097 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74171,6 +74171,75 @@ ] } ] + }, + "4.7.0-rc.2": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25319", + "title": "Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings", + "userLogin": "geekgonecrazy", + "description": "The package only included a few pre-built which caused all macs to have to compile every time they installed and also caused our alpine not to work.\r\n\r\nThis temporarily switches to a fork of the matrix-appservice-bridge package.\r\n\r\nMade changes to one of its child dependencies `matrix-rust-sdk-bindings` that adds pre-built binaries for mac and musl (for alpine).", + "milestone": "4.7.0", + "contributors": [ + "geekgonecrazy", + "web-flow", + "d-gubert" + ] + }, + { + "pr": "25255", + "title": "Regression: Change preference to be default legacy messages", + "userLogin": "gabriellsh", + "milestone": "4.8.0", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25306", + "title": "Regression: Fix reply button not working when hideFlexTab is enabled", + "userLogin": "filipemarins", + "contributors": [ + "filipemarins", + "gabriellsh" + ] + }, + { + "pr": "25311", + "title": "Regression: Add eslint package to micro services Dockerfile", + "userLogin": "sampaiodiego", + "milestone": "4.7.0", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25218", + "title": "Chore: ensure scripts use cross-env and ignore some dirs (ROC-54)", + "userLogin": "souzaramon", + "description": "- data and test-failure should be ignored\r\n- ensure scripts use cross-env", + "contributors": [ + "souzaramon" + ] + }, + { + "pr": "25313", + "title": "Regression: Revert Bugsnag version", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index bb9a6d310616..d4118c8a1f2a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,46 @@ # 4.7.0 (Under Release Candidate Process) +## 4.7.0-rc.2 +`2022-04-27 · 6 🔍 · 7 👩‍💻👨‍💻` + +
+🔍 Minor changes + + +- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218)) + + - data and test-failure should be ignored + - ensure scripts use cross-env + +- Regression: Add eslint package to micro services Dockerfile ([#25311](https://github.com/RocketChat/Rocket.Chat/pull/25311)) + +- Regression: Change preference to be default legacy messages ([#25255](https://github.com/RocketChat/Rocket.Chat/pull/25255)) + +- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306)) + +- Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings ([#25319](https://github.com/RocketChat/Rocket.Chat/pull/25319)) + + The package only included a few pre-built which caused all macs to have to compile every time they installed and also caused our alpine not to work. + + This temporarily switches to a fork of the matrix-appservice-bridge package. + + Made changes to one of its child dependencies `matrix-rust-sdk-bindings` that adds pre-built binaries for mac and musl (for alpine). + +- Regression: Revert Bugsnag version ([#25313](https://github.com/RocketChat/Rocket.Chat/pull/25313)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@filipemarins](https://github.com/filipemarins) +- [@gabriellsh](https://github.com/gabriellsh) +- [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) +- [@souzaramon](https://github.com/souzaramon) + ## 4.7.0-rc.1 `2022-04-26 · 4 🔍 · 4 👩‍💻👨‍💻` diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index d8352d7ca96e..e98d77d1b863 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-rc.1 +ENV RC_VERSION 4.7.0-rc.2 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 3b31f604fa32..61d317c21310 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-rc.1/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0-rc.2/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index 3305e17e01b5..c1dc19210a1c 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-rc.1 +version: 4.7.0-rc.2 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index dbfad35450bf..9794802017d0 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-rc.1" + "version": "4.7.0-rc.2" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index d80f9584ea08..bec2e5c4f175 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-rc.1", + "version": "4.7.0-rc.2", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index ca6fcd157991..58097c32af26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-rc.1", + "version": "4.7.0-rc.2", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 1e37adef4b883f886ea17b02b2f3a06748debd7e Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Wed, 27 Apr 2022 17:10:13 -0300 Subject: [PATCH 004/145] Bump version to 4.7.0-rc.3 --- .github/history.json | 39 +++++++++++++++++++ HISTORY.md | 20 ++++++++++ apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 65 insertions(+), 6 deletions(-) diff --git a/.github/history.json b/.github/history.json index 2e0104449097..c45df3a7c4f7 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74240,6 +74240,45 @@ ] } ] + }, + "4.7.0-rc.3": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25327", + "title": "Regression: Messages in new message template Crashing.", + "userLogin": "gabriellsh", + "contributors": [ + "gabriellsh" + ] + }, + { + "pr": "25323", + "title": "Regression: Better MongoDB connection management for micro services", + "userLogin": "sampaiodiego", + "milestone": "4.7.0", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25250", + "title": "Regression: Validate empty fields for Message template", + "userLogin": "gabriellsh", + "milestone": "4.8.0", + "contributors": [ + "gabriellsh" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index d4118c8a1f2a..04f2143286c4 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,26 @@ # 4.7.0 (Under Release Candidate Process) +## 4.7.0-rc.3 +`2022-04-27 · 3 🔍 · 2 👩‍💻👨‍💻` + +
+🔍 Minor changes + + +- Regression: Better MongoDB connection management for micro services ([#25323](https://github.com/RocketChat/Rocket.Chat/pull/25323)) + +- Regression: Messages in new message template Crashing. ([#25327](https://github.com/RocketChat/Rocket.Chat/pull/25327)) + +- Regression: Validate empty fields for Message template ([#25250](https://github.com/RocketChat/Rocket.Chat/pull/25250)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) +- [@sampaiodiego](https://github.com/sampaiodiego) + ## 4.7.0-rc.2 `2022-04-27 · 6 🔍 · 7 👩‍💻👨‍💻` diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index e98d77d1b863..f4581777e19a 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-rc.2 +ENV RC_VERSION 4.7.0-rc.3 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 61d317c21310..f3f980bdae9e 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-rc.2/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0-rc.3/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index c1dc19210a1c..07ad1e0e3d02 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-rc.2 +version: 4.7.0-rc.3 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 9794802017d0..220423d7d142 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-rc.2" + "version": "4.7.0-rc.3" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index bec2e5c4f175..02f5a6a84f1a 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-rc.2", + "version": "4.7.0-rc.3", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index 58097c32af26..5685bb76fa48 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-rc.2", + "version": "4.7.0-rc.3", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 48827f3211733b98cce3d2739182fe9874ea9529 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Mon, 2 May 2022 18:50:31 -0300 Subject: [PATCH 005/145] Bump version to 4.7.0-rc.4 --- .github/history.json | 68 + HISTORY.md | 5879 +++++++++-------- apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 3111 insertions(+), 2848 deletions(-) diff --git a/.github/history.json b/.github/history.json index c45df3a7c4f7..725974f7c87e 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74279,6 +74279,74 @@ ] } ] + }, + "4.7.0-rc.4": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25336", + "title": "Chore: Add options to debug stdout and rate limiter", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "25368", + "title": "Regression: Fix English i18n react text", + "userLogin": "d-gubert", + "description": "Incorrect text in reaction tooltip has been fixed", + "milestone": "4.7.0", + "contributors": [ + "d-gubert" + ] + }, + { + "pr": "25349", + "title": "Regression: Rocket.Chat Webapp not loading.", + "userLogin": "pierre-lehnen-rc", + "contributors": [ + "pierre-lehnen-rc", + "gabriellsh" + ] + }, + { + "pr": "25317", + "title": "Regression: Fix multi line is not showing an empty line between lines", + "userLogin": "filipemarins", + "milestone": "4.7.0", + "contributors": [ + "filipemarins", + "gabriellsh" + ] + }, + { + "pr": "25320", + "title": "Regression: bump onboarding-ui version", + "userLogin": "guijun13", + "description": "- Bump to 'next' the onboarding-ui package from fuselage.\r\n- Update from 'companyEmail' to 'email' adminData usage types", + "contributors": [ + "guijun13" + ] + }, + { + "pr": "25335", + "title": "Chore: Create README.md for Rest Typings", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index 04f2143286c4..162d1c5e3770 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,45 @@ # 4.7.0 (Under Release Candidate Process) +## 4.7.0-rc.4 +`2022-05-02 · 6 🔍 · 7 👩‍💻👨‍💻` + +
+🔍 Minor changes + + +- Chore: Add options to debug stdout and rate limiter ([#25336](https://github.com/RocketChat/Rocket.Chat/pull/25336)) + +- Chore: Create README.md for Rest Typings ([#25335](https://github.com/RocketChat/Rocket.Chat/pull/25335)) + +- Regression: bump onboarding-ui version ([#25320](https://github.com/RocketChat/Rocket.Chat/pull/25320) by [@guijun13](https://github.com/guijun13)) + + - Bump to 'next' the onboarding-ui package from fuselage. + - Update from 'companyEmail' to 'email' adminData usage types + +- Regression: Fix English i18n react text ([#25368](https://github.com/RocketChat/Rocket.Chat/pull/25368)) + + Incorrect text in reaction tooltip has been fixed + +- Regression: Fix multi line is not showing an empty line between lines ([#25317](https://github.com/RocketChat/Rocket.Chat/pull/25317) by [@filipemarins](https://github.com/filipemarins)) + +- Regression: Rocket.Chat Webapp not loading. ([#25349](https://github.com/RocketChat/Rocket.Chat/pull/25349) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) + +
+ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@filipemarins](https://github.com/filipemarins) +- [@guijun13](https://github.com/guijun13) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@gabriellsh](https://github.com/gabriellsh) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + ## 4.7.0-rc.3 `2022-04-27 · 3 🔍 · 2 👩‍💻👨‍💻` @@ -28,7 +67,7 @@ 🔍 Minor changes -- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218)) +- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218) by [@souzaramon](https://github.com/souzaramon)) - data and test-failure should be ignored - ensure scripts use cross-env @@ -37,7 +76,7 @@ - Regression: Change preference to be default legacy messages ([#25255](https://github.com/RocketChat/Rocket.Chat/pull/25255)) -- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306)) +- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306) by [@filipemarins](https://github.com/filipemarins)) - Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings ([#25319](https://github.com/RocketChat/Rocket.Chat/pull/25319)) @@ -51,15 +90,18 @@ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@filipemarins](https://github.com/filipemarins) +- [@souzaramon](https://github.com/souzaramon) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) -- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@souzaramon](https://github.com/souzaramon) ## 4.7.0-rc.1 `2022-04-26 · 4 🔍 · 4 👩‍💻👨‍💻` @@ -68,9 +110,9 @@ 🔍 Minor changes -- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299)) +- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299) by [@filipemarins](https://github.com/filipemarins)) -- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305)) +- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Shows error if micro service cannot connect to Mongo ([#25301](https://github.com/RocketChat/Rocket.Chat/pull/25301)) @@ -78,11 +120,14 @@ -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@filipemarins](https://github.com/filipemarins) -- [@ggazzo](https://github.com/ggazzo) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) ## 4.7.0-rc.0 @@ -93,7 +138,7 @@ - Add expire index to integration history ([#25087](https://github.com/RocketChat/Rocket.Chat/pull/25087)) -- Alpha Matrix Federation ([#23688](https://github.com/RocketChat/Rocket.Chat/pull/23688)) +- Alpha Matrix Federation ([#23688](https://github.com/RocketChat/Rocket.Chat/pull/23688) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@alansikora](https://github.com/alansikora)) Experimental support for Matrix Federation with a Bridge @@ -137,22 +182,22 @@ - Improve active/hover colors in account sidebar ([#25024](https://github.com/RocketChat/Rocket.Chat/pull/25024) by [@Himanshu664](https://github.com/Himanshu664)) -- Performance for some Omnichannel features ([#25217](https://github.com/RocketChat/Rocket.Chat/pull/25217)) +- Performance for some Omnichannel features ([#25217](https://github.com/RocketChat/Rocket.Chat/pull/25217) by [@KevLehman](https://github.com/KevLehman)) -- Rename upgrade tab routes ([#25097](https://github.com/RocketChat/Rocket.Chat/pull/25097)) +- Rename upgrade tab routes ([#25097](https://github.com/RocketChat/Rocket.Chat/pull/25097) by [@guijun13](https://github.com/guijun13)) Change 'upgrade tab' routes names from camelCase ('goFullyFeatured') to kebab-case ('go-fully-featured') due to URL naming consistency. Changed types, main function and test. ### 🐛 Bug fixes -- Add katex render to new message react template ([#25239](https://github.com/RocketChat/Rocket.Chat/pull/25239)) +- Add katex render to new message react template ([#25239](https://github.com/RocketChat/Rocket.Chat/pull/25239) by [@filipemarins](https://github.com/filipemarins)) - Add reaction not working in legacy messages ([#25222](https://github.com/RocketChat/Rocket.Chat/pull/25222)) - Added invalid password error message ([#24714](https://github.com/RocketChat/Rocket.Chat/pull/24714) by [@Himanshu664](https://github.com/Himanshu664)) -- Adjust email label in Setup Wizard i18n files ([#25260](https://github.com/RocketChat/Rocket.Chat/pull/25260)) +- Adjust email label in Setup Wizard i18n files ([#25260](https://github.com/RocketChat/Rocket.Chat/pull/25260) by [@guijun13](https://github.com/guijun13)) - remove 'Company' label on onboarding email keys in certain languages @@ -173,7 +218,7 @@ - After: ![image](https://user-images.githubusercontent.com/30026625/161831092-9ee77b51-b083-4f45-9c48-ab2e0511c4d6.png) -- Client disconnection on network loss ([#25170](https://github.com/RocketChat/Rocket.Chat/pull/25170)) +- Client disconnection on network loss ([#25170](https://github.com/RocketChat/Rocket.Chat/pull/25170) by [@KevLehman](https://github.com/KevLehman) & [@amolghode1981](https://github.com/amolghode1981)) Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online unless agent explicitly logs off. @@ -194,7 +239,7 @@ When the server is disconnected, it should be indicated on the phone button. -- Close room when dismiss wrap up call modal ([#25056](https://github.com/RocketChat/Rocket.Chat/pull/25056)) +- Close room when dismiss wrap up call modal ([#25056](https://github.com/RocketChat/Rocket.Chat/pull/25056) by [@tiagoevanp](https://github.com/tiagoevanp)) - Custom sound error toast messages ([#24515](https://github.com/RocketChat/Rocket.Chat/pull/24515) by [@Himanshu664](https://github.com/Himanshu664)) @@ -211,11 +256,11 @@ - Desktop notification on multi-instance environments ([#25220](https://github.com/RocketChat/Rocket.Chat/pull/25220)) -- End call button disappearing when on-hold ([#24936](https://github.com/RocketChat/Rocket.Chat/pull/24936)) +- End call button disappearing when on-hold ([#24936](https://github.com/RocketChat/Rocket.Chat/pull/24936) by [@tiagoevanp](https://github.com/tiagoevanp)) - FormData uploads not working ([#25069](https://github.com/RocketChat/Rocket.Chat/pull/25069)) -- Full error message is visible ([#24856](https://github.com/RocketChat/Rocket.Chat/pull/24856) by [@Himanshu664](https://github.com/Himanshu664)) +- Full error message is visible ([#24856](https://github.com/RocketChat/Rocket.Chat/pull/24856) by [@Himanshu664](https://github.com/Himanshu664) & [@tassoevan](https://github.com/tassoevan)) - Incorrect websocket url in livechat widget ([#25261](https://github.com/RocketChat/Rocket.Chat/pull/25261)) @@ -223,7 +268,7 @@ - Message menu action not working on legacy messages. ([#25148](https://github.com/RocketChat/Rocket.Chat/pull/25148)) -- Message preview not available for queued chats ([#25092](https://github.com/RocketChat/Rocket.Chat/pull/25092)) +- Message preview not available for queued chats ([#25092](https://github.com/RocketChat/Rocket.Chat/pull/25092) by [@KevLehman](https://github.com/KevLehman)) - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) @@ -235,13 +280,13 @@ ### after Screen Shot 2022-03-29 at 11 48 05 -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Modify Meteor's `HTTP.call` to add back proxy support -- Read receipts show with color gray when not read yet ([#25244](https://github.com/RocketChat/Rocket.Chat/pull/25244)) +- Read receipts show with color gray when not read yet ([#25244](https://github.com/RocketChat/Rocket.Chat/pull/25244) by [@filipemarins](https://github.com/filipemarins)) -- Read receipts showing before message read ([#25216](https://github.com/RocketChat/Rocket.Chat/pull/25216)) +- Read receipts showing before message read ([#25216](https://github.com/RocketChat/Rocket.Chat/pull/25216) by [@filipemarins](https://github.com/filipemarins)) - Replace encrypted text to Encrypted Message Placeholder ([#24166](https://github.com/RocketChat/Rocket.Chat/pull/24166)) @@ -251,7 +296,7 @@ ### after Screenshot 2022-01-13 at 8 57 47 PM -- Reply button behavior on broadcast channel ([#25175](https://github.com/RocketChat/Rocket.Chat/pull/25175)) +- Reply button behavior on broadcast channel ([#25175](https://github.com/RocketChat/Rocket.Chat/pull/25175) by [@filipemarins](https://github.com/filipemarins)) Hide reply button for the user that sent the message @@ -265,7 +310,7 @@ - Upgrade Tab showing for a split second ([#25050](https://github.com/RocketChat/Rocket.Chat/pull/25050)) -- Use correct room property for call ended at ([#24932](https://github.com/RocketChat/Rocket.Chat/pull/24932)) +- Use correct room property for call ended at ([#24932](https://github.com/RocketChat/Rocket.Chat/pull/24932) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - UserAutoComplete not rendering UserAvatar correctly ([#25055](https://github.com/RocketChat/Rocket.Chat/pull/25055)) @@ -286,9 +331,9 @@ ### after ![Screen Shot 2022-04-07 at 00 07 13](https://user-images.githubusercontent.com/27704687/162112353-afd6aac6-b27c-4470-a642-631b8080d59e.png) -- Video and Audio not skipping forward ([#19866](https://github.com/RocketChat/Rocket.Chat/pull/19866)) +- Video and Audio not skipping forward ([#19866](https://github.com/RocketChat/Rocket.Chat/pull/19866) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) -- VoIP disabled/enabled sequence puts voip agent in error state ([#25230](https://github.com/RocketChat/Rocket.Chat/pull/25230)) +- VoIP disabled/enabled sequence puts voip agent in error state ([#25230](https://github.com/RocketChat/Rocket.Chat/pull/25230) by [@KevLehman](https://github.com/KevLehman) & [@amolghode1981](https://github.com/amolghode1981)) Initially it was thought that the issue occurs because of the race condition while changing the client settings vs those settings reflected on server side. So a natural solution to solve this is to wait for setting change event 'private-settings-changed'. Then if 'VoIP_Enabled' is updated and it is true, set voipEnabled to true in useVoipClient.ts (on client side) @@ -336,23 +381,23 @@ - Chore: Convert LivechatAgentActivity to raw model and TS ([#25123](https://github.com/RocketChat/Rocket.Chat/pull/25123)) -- Chore: Convert Mailer to TS ([#25121](https://github.com/RocketChat/Rocket.Chat/pull/25121)) +- Chore: Convert Mailer to TS ([#25121](https://github.com/RocketChat/Rocket.Chat/pull/25121) by [@juliajforesti](https://github.com/juliajforesti)) -- Chore: Convert NotificationStatus to TS ([#25125](https://github.com/RocketChat/Rocket.Chat/pull/25125)) +- Chore: Convert NotificationStatus to TS ([#25125](https://github.com/RocketChat/Rocket.Chat/pull/25125) by [@jeanfbrito](https://github.com/jeanfbrito)) -- Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275)) +- Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275) by [@KevLehman](https://github.com/KevLehman)) -- Chore: Migrate oauth2server to typescript ([#25126](https://github.com/RocketChat/Rocket.Chat/pull/25126)) +- Chore: Migrate oauth2server to typescript ([#25126](https://github.com/RocketChat/Rocket.Chat/pull/25126) by [@KevLehman](https://github.com/KevLehman)) - Chore: Minor dependency updates ([#25269](https://github.com/RocketChat/Rocket.Chat/pull/25269)) -- Chore: Missing keys in APIsDisplay ([#24464](https://github.com/RocketChat/Rocket.Chat/pull/24464)) +- Chore: Missing keys in APIsDisplay ([#24464](https://github.com/RocketChat/Rocket.Chat/pull/24464) by [@tassoevan](https://github.com/tassoevan)) - Chore: Monorepo ([#25074](https://github.com/RocketChat/Rocket.Chat/pull/25074)) - Chore: move definitions to packages ([#25085](https://github.com/RocketChat/Rocket.Chat/pull/25085)) -- Chore: organize test files and fix code coverage ([#24900](https://github.com/RocketChat/Rocket.Chat/pull/24900)) +- Chore: organize test files and fix code coverage ([#24900](https://github.com/RocketChat/Rocket.Chat/pull/24900) by [@tmontini](https://github.com/tmontini)) - Chore: Remove Alpine image deps after using them ([#25053](https://github.com/RocketChat/Rocket.Chat/pull/25053)) @@ -374,29 +419,29 @@ npx hygen package new test ``` -- Chore: Tests with Playwright (task: All works) ([#25122](https://github.com/RocketChat/Rocket.Chat/pull/25122)) +- Chore: Tests with Playwright (task: All works) ([#25122](https://github.com/RocketChat/Rocket.Chat/pull/25122) by [@weslley543](https://github.com/weslley543)) -- Chore: Tests with Playwright (task: ROC-28, 09-channels) ([#25196](https://github.com/RocketChat/Rocket.Chat/pull/25196)) +- Chore: Tests with Playwright (task: ROC-28, 09-channels) ([#25196](https://github.com/RocketChat/Rocket.Chat/pull/25196) by [@tmontini](https://github.com/tmontini)) - Chore: TS conversion folder client ([#25031](https://github.com/RocketChat/Rocket.Chat/pull/25031)) - Chore: TS migration SortList ([#25167](https://github.com/RocketChat/Rocket.Chat/pull/25167)) -- Chore: Update Livechat to the last version ([#25257](https://github.com/RocketChat/Rocket.Chat/pull/25257)) +- Chore: Update Livechat to the last version ([#25257](https://github.com/RocketChat/Rocket.Chat/pull/25257) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Chore: Update Livechat version ([#25130](https://github.com/RocketChat/Rocket.Chat/pull/25130)) +- Chore: Update Livechat version ([#25130](https://github.com/RocketChat/Rocket.Chat/pull/25130) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Chore: update OTR icon ([#24521](https://github.com/RocketChat/Rocket.Chat/pull/24521) by [@kibonusp](https://github.com/kibonusp)) +- Chore: update OTR icon ([#24521](https://github.com/RocketChat/Rocket.Chat/pull/24521) by [@kibonusp](https://github.com/kibonusp) & [@tassoevan](https://github.com/tassoevan)) I changed the shredder icon in OTR contextual bar to the stopwatch icon, recently added to the fuselage. - i18n: Language update from LingoHub 🤖 on 2022-04-04Z ([#25043](https://github.com/RocketChat/Rocket.Chat/pull/25043)) -- Merge master into develop & Set version to 4.7.0-develop ([#25028](https://github.com/RocketChat/Rocket.Chat/pull/25028)) +- Merge master into develop & Set version to 4.7.0-develop ([#25028](https://github.com/RocketChat/Rocket.Chat/pull/25028) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) -- Regression: Add select message to system message and thread preview and allow select on legacy template ([#25251](https://github.com/RocketChat/Rocket.Chat/pull/25251)) +- Regression: Add select message to system message and thread preview and allow select on legacy template ([#25251](https://github.com/RocketChat/Rocket.Chat/pull/25251) by [@filipemarins](https://github.com/filipemarins)) -- Regression: Avatar not loading on first direct message ([#25211](https://github.com/RocketChat/Rocket.Chat/pull/25211)) +- Regression: Avatar not loading on first direct message ([#25211](https://github.com/RocketChat/Rocket.Chat/pull/25211) by [@filipemarins](https://github.com/filipemarins)) fix avatar not loading on a first direct message @@ -410,7 +455,7 @@ - Regression: Fix services Docker build on CI ([#25181](https://github.com/RocketChat/Rocket.Chat/pull/25181)) -- Regression: Show username and real name on the message system ([#25254](https://github.com/RocketChat/Rocket.Chat/pull/25254)) +- Regression: Show username and real name on the message system ([#25254](https://github.com/RocketChat/Rocket.Chat/pull/25254) by [@filipemarins](https://github.com/filipemarins)) - Regression: yarn dev triggers build dependencies ([#25208](https://github.com/RocketChat/Rocket.Chat/pull/25208)) @@ -418,42 +463,42 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@Himanshu664](https://github.com/Himanshu664) +- [@KevLehman](https://github.com/KevLehman) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aakash-gitdev](https://github.com/aakash-gitdev) +- [@alansikora](https://github.com/alansikora) +- [@amolghode1981](https://github.com/amolghode1981) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@filipemarins](https://github.com/filipemarins) +- [@guijun13](https://github.com/guijun13) +- [@jeanfbrito](https://github.com/jeanfbrito) +- [@juliajforesti](https://github.com/juliajforesti) - [@kibonusp](https://github.com/kibonusp) - [@nishant23122000](https://github.com/nishant23122000) - [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sidmohanty11](https://github.com/sidmohanty11) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@tmontini](https://github.com/tmontini) +- [@weslley543](https://github.com/weslley543) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) -- [@KevLehman](https://github.com/KevLehman) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@albuquerquefabio](https://github.com/albuquerquefabio) -- [@amolghode1981](https://github.com/amolghode1981) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) -- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@guijun13](https://github.com/guijun13) -- [@jeanfbrito](https://github.com/jeanfbrito) -- [@juliajforesti](https://github.com/juliajforesti) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) -- [@tmontini](https://github.com/tmontini) -- [@weslley543](https://github.com/weslley543) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.6.3 @@ -525,7 +570,7 @@ - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Modify Meteor's `HTTP.call` to add back proxy support @@ -539,11 +584,14 @@ ### after ![Screen Shot 2022-04-04 at 16 49 00](https://user-images.githubusercontent.com/27704687/161620720-3e27774d-c241-46ca-b764-932a9295d709.png) +### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) - [@yash-rajpal](https://github.com/yash-rajpal) @@ -561,7 +609,7 @@ - Telemetry Events ([#24781](https://github.com/RocketChat/Rocket.Chat/pull/24781) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) -- Upgrade Tab ([#24835](https://github.com/RocketChat/Rocket.Chat/pull/24835)) +- Upgrade Tab ([#24835](https://github.com/RocketChat/Rocket.Chat/pull/24835) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/160172260-c656282e-a487-4092-948d-d11c9bacb598.png) @@ -570,7 +618,7 @@ - **ENTERPRISE:** Don't start presence monitor when running micro services ([#24739](https://github.com/RocketChat/Rocket.Chat/pull/24739)) -- Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887)) +- Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887) by [@KevLehman](https://github.com/KevLehman) & [@cauefcr](https://github.com/cauefcr)) - Total of Canned response messages sent - Total of tags used @@ -584,24 +632,24 @@ - Amount of Calls placed on hold (1x per call) - Fixed Session Aggregation type definitions -- New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749)) +- New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749) by [@cauefcr](https://github.com/cauefcr)) https://app.clickup.com/t/1z4zg4e -- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837)) +- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837) by [@KevLehman](https://github.com/KevLehman)) - Updated links in readme ([#24028](https://github.com/RocketChat/Rocket.Chat/pull/24028) by [@aswinidev](https://github.com/aswinidev)) -- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748)) +- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750)) +- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750) by [@MartinSchoeler](https://github.com/MartinSchoeler)) ### 🐛 Bug fixes - "livechat/webrtc.call" endpoint not working ([#24804](https://github.com/RocketChat/Rocket.Chat/pull/24804)) -- "Match error" when converting a team to a channel ([#24629](https://github.com/RocketChat/Rocket.Chat/pull/24629)) +- "Match error" when converting a team to a channel ([#24629](https://github.com/RocketChat/Rocket.Chat/pull/24629) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix "Match error" when trying to convert a channel to a team; @@ -613,27 +661,27 @@ - **ENTERPRISE:** Presence micro service logic ([#24724](https://github.com/RocketChat/Rocket.Chat/pull/24724)) -- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) +- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838) by [@tiagoevanp](https://github.com/tiagoevanp)) - Improve the CallProvider code; - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. -- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) +- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732) by [@tassoevan](https://github.com/tassoevan)) - API Error preventing adding an email to users without one (like bot/app users) ([#24709](https://github.com/RocketChat/Rocket.Chat/pull/24709)) -- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760)) +- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Apple OAuth ([#24879](https://github.com/RocketChat/Rocket.Chat/pull/24879)) - auto-join team channels not honoring user preferences ([#24779](https://github.com/RocketChat/Rocket.Chat/pull/24779) by [@ostjen](https://github.com/ostjen)) -- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) +- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) - Broken multiple OAuth integrations ([#24705](https://github.com/RocketChat/Rocket.Chat/pull/24705)) -- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677)) +- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677) by [@juliajforesti](https://github.com/juliajforesti) & [@tassoevan](https://github.com/tassoevan)) - Critical: Incorrect visitor getting assigned to a chat from apps ([#24805](https://github.com/RocketChat/Rocket.Chat/pull/24805)) @@ -654,7 +702,7 @@ - DDP streamer errors ([#24710](https://github.com/RocketChat/Rocket.Chat/pull/24710)) -- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864)) +- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864) by [@KevLehman](https://github.com/KevLehman)) - Duplicated 'name' log key ([#24590](https://github.com/RocketChat/Rocket.Chat/pull/24590)) @@ -671,7 +719,7 @@ https://user-images.githubusercontent.com/53515714/150325012-91413025-786e-4ce0-ae75-629f6b05b024.mp4 -- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994)) +- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994) by [@tiagoevanp](https://github.com/tiagoevanp)) Remove infinity loop inside useVoipClient hook. @@ -679,14 +727,14 @@ - Ignore customClass on messages ([#24845](https://github.com/RocketChat/Rocket.Chat/pull/24845)) -- LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320)) +- LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); - Display the avatar image preview (orientation) according to the `FileUpload_RotateImages` setting. -- Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882)) +- Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882) by [@KevLehman](https://github.com/KevLehman)) -- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674)) +- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix missing sender's username on messages imported from Slack. @@ -694,11 +742,11 @@ - no id of room closer in livechat-close message ([#24683](https://github.com/RocketChat/Rocket.Chat/pull/24683)) -- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623)) +- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623) by [@tassoevan](https://github.com/tassoevan)) A race condition on `useRoomIcon` -- delayed merge of rooms and subscriptions -- was causing a UI crash whenever someone tried to open a DM from the user card component. -- Prevent call button toggle when user is on call ([#24758](https://github.com/RocketChat/Rocket.Chat/pull/24758)) +- Prevent call button toggle when user is on call ([#24758](https://github.com/RocketChat/Rocket.Chat/pull/24758) by [@KevLehman](https://github.com/KevLehman)) - Prune Message issue ([#24424](https://github.com/RocketChat/Rocket.Chat/pull/24424) by [@nishant23122000](https://github.com/nishant23122000)) @@ -706,21 +754,21 @@ - Register with Secret URL ([#24921](https://github.com/RocketChat/Rocket.Chat/pull/24921)) -- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) +- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@tassoevan](https://github.com/tassoevan)) Removed the logic for calling the `rooms.adminRooms` endPoint from the `RoomsTable` Component and moved it to its parent component `RoomsPage`. This allows to call the endPoint `rooms.adminRooms` from `EditRoomContextBar` Component which is also has `RoomPage` Component as its parent. Also added a succes toast message after the successful deletion of room. -- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812)) +- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812) by [@juliajforesti](https://github.com/juliajforesti)) -- Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897)) +- Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); - Fix the "Hide System Messages" option for the "Room archived" and "Room unarchived" system messages; -- room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) +- room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955) by [@filipemarins](https://github.com/filipemarins) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) When the room object is searched for the first time, it does not exist on the front object yet (subscription), adding a fallback search for room list will guarantee to search the room details. @@ -730,43 +778,43 @@ after: https://user-images.githubusercontent.com/9275105/160223244-84d0d2a1-3d95-464d-8b8a-e264b0d4d690.mp4 -- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696)) +- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix rooms' message counter not being incremented on message import. -- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930)) +- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052)) +- Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Throw an error when trying to delete a role (User or Subscription role) that are still being used; - Fix "Invalid Role" error for custom roles in Role Editing sidebar; - Fix "Users in Role" screen for custom roles. -- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) +- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752) by [@KevLehman](https://github.com/KevLehman)) -- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680)) +- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829)) +- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829) by [@KevLehman](https://github.com/KevLehman)) -- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743)) +- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Do not send system messages when adding or removing a new or existing _group_ from a team. -- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737)) +- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661)) +- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661) by [@renatobecker](https://github.com/renatobecker)) -- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789)) +- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789) by [@amolghode1981](https://github.com/amolghode1981)) -- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607)) +- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657)) +- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657) by [@amolghode1981](https://github.com/amolghode1981)) -- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792)) +- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792) by [@KevLehman](https://github.com/KevLehman)) - Wrong business hour behavior ([#24896](https://github.com/RocketChat/Rocket.Chat/pull/24896)) -- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799)) +- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes @@ -818,47 +866,47 @@ - Bump url-parse from 1.5.7 to 1.5.10 ([#24640](https://github.com/RocketChat/Rocket.Chat/pull/24640) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: Add E2E tests for livechat/room.close ([#24729](https://github.com/RocketChat/Rocket.Chat/pull/24729) by [@Muramatsu2602](https://github.com/Muramatsu2602)) +- Chore: Add E2E tests for livechat/room.close ([#24729](https://github.com/RocketChat/Rocket.Chat/pull/24729) by [@KevLehman](https://github.com/KevLehman) & [@Muramatsu2602](https://github.com/Muramatsu2602)) * Create a new test suite file under tests/end-to-end/api/livechat * Create tests for the following endpoint: + ivechat/room.close -- Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@Muramatsu2602](https://github.com/Muramatsu2602)) +- Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@KevLehman](https://github.com/KevLehman) & [@Muramatsu2602](https://github.com/Muramatsu2602)) - Create a new test suite file under tests/end-to-end/api/livechat - Create tests for the following endpoints: + livechat/visitor (create visitor, update visitor, add custom fields to visitors) -- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925)) +- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925) by [@gerzonc](https://github.com/gerzonc)) On the [mobile client](https://github.com/RocketChat/Rocket.Chat.ReactNative), we made an effort to collect more `REST API` definitions that are missing on the server side during our migration to TypeScript. Since we're both migrating to TypeScript, we thought it would be a good idea to share those so you guys can benefit from our initiative. -- Chore: added Server Instances endpoint types ([#24507](https://github.com/RocketChat/Rocket.Chat/pull/24507)) +- Chore: added Server Instances endpoint types ([#24507](https://github.com/RocketChat/Rocket.Chat/pull/24507) by [@felipe-rod123](https://github.com/felipe-rod123)) Created typing for endpoint definitions on `instances.ts`. -- Chore: added settings endpoint types ([#24506](https://github.com/RocketChat/Rocket.Chat/pull/24506)) +- Chore: added settings endpoint types ([#24506](https://github.com/RocketChat/Rocket.Chat/pull/24506) by [@felipe-rod123](https://github.com/felipe-rod123)) Created typing for endpoint definitions on `settings.ts`. -- Chore: APIClass types ([#24747](https://github.com/RocketChat/Rocket.Chat/pull/24747)) +- Chore: APIClass types ([#24747](https://github.com/RocketChat/Rocket.Chat/pull/24747) by [@felipe-rod123](https://github.com/felipe-rod123)) This pull request creates a new `restivus` module (.d.ts) for the `api.js` file. -- Chore: Bump Fuselage packages ([#25015](https://github.com/RocketChat/Rocket.Chat/pull/25015)) +- Chore: Bump Fuselage packages ([#25015](https://github.com/RocketChat/Rocket.Chat/pull/25015) by [@tassoevan](https://github.com/tassoevan)) It uses the last stable version of Fuselage packages. -- Chore: Convert server functions from javascript to typescript ([#24384](https://github.com/RocketChat/Rocket.Chat/pull/24384)) +- Chore: Convert server functions from javascript to typescript ([#24384](https://github.com/RocketChat/Rocket.Chat/pull/24384) by [@felipe-rod123](https://github.com/felipe-rod123)) This pull request will be used to rewrite some functions on the Chat Engine to Typescript, in order to increase security and specify variable types on the code. -- Chore: converted more hooks to typescript ([#24628](https://github.com/RocketChat/Rocket.Chat/pull/24628)) +- Chore: converted more hooks to typescript ([#24628](https://github.com/RocketChat/Rocket.Chat/pull/24628) by [@felipe-rod123](https://github.com/felipe-rod123)) Converted some functions on `client/hooks/` from JavaScript to Typescript. -- Chore: Fix Cypress tests ([#24544](https://github.com/RocketChat/Rocket.Chat/pull/24544)) +- Chore: Fix Cypress tests ([#24544](https://github.com/RocketChat/Rocket.Chat/pull/24544) by [@tassoevan](https://github.com/tassoevan)) - Chore: Fix grammatical errors in Code of Conduct ([#24759](https://github.com/RocketChat/Rocket.Chat/pull/24759) by [@aadishJ01](https://github.com/aadishJ01)) @@ -870,7 +918,7 @@ - Chore: Improve logger to allow log of `unknown` values ([#24726](https://github.com/RocketChat/Rocket.Chat/pull/24726)) -- Chore: Improvements on role syncing (ldap, oauth and saml) ([#23824](https://github.com/RocketChat/Rocket.Chat/pull/23824)) +- Chore: Improvements on role syncing (ldap, oauth and saml) ([#23824](https://github.com/RocketChat/Rocket.Chat/pull/23824) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) - Chore: Micro services fixes and cleanup ([#24753](https://github.com/RocketChat/Rocket.Chat/pull/24753)) @@ -878,15 +926,15 @@ - Chore: Skip local services changes when shutting down duplicated services ([#24810](https://github.com/RocketChat/Rocket.Chat/pull/24810)) -- Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969)) +- Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969) by [@tassoevan](https://github.com/tassoevan)) - Stories from `ee/` included; - Differentiate root story kinds; - Mocking of `ServerContext` via Storybook parameters. -- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) +- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990)) +- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Chore(deps-dev): Bump @types/mock-require from 2.0.0 to 2.0.1 ([#24574](https://github.com/RocketChat/Rocket.Chat/pull/24574) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -900,18 +948,18 @@ - i18n: Language update from LingoHub 🤖 on 2022-03-28Z ([#24971](https://github.com/RocketChat/Rocket.Chat/pull/24971)) -- Merge master into develop & Set version to 4.6.0-develop ([#24653](https://github.com/RocketChat/Rocket.Chat/pull/24653)) +- Merge master into develop & Set version to 4.6.0-develop ([#24653](https://github.com/RocketChat/Rocket.Chat/pull/24653) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Add createdOTR index ([#25017](https://github.com/RocketChat/Rocket.Chat/pull/25017)) -- Regression: Call doesn't stop ringing after agent unregistration ([#24908](https://github.com/RocketChat/Rocket.Chat/pull/24908)) +- Regression: Call doesn't stop ringing after agent unregistration ([#24908](https://github.com/RocketChat/Rocket.Chat/pull/24908) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Custom roles displaying ID instead of name on some admin screens ([#24999](https://github.com/RocketChat/Rocket.Chat/pull/24999)) +- Regression: Custom roles displaying ID instead of name on some admin screens ([#24999](https://github.com/RocketChat/Rocket.Chat/pull/24999) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ![image](https://user-images.githubusercontent.com/55164754/160981416-555bcaa1-c075-4260-937c-64523472da43.png) ![image](https://user-images.githubusercontent.com/55164754/160981452-6eae4e74-8425-4073-8256-472aba72b9db.png) -- Regression: Error is raised when there's no Asterisk queue available yet ([#24980](https://github.com/RocketChat/Rocket.Chat/pull/24980)) +- Regression: Error is raised when there's no Asterisk queue available yet ([#24980](https://github.com/RocketChat/Rocket.Chat/pull/24980) by [@amolghode1981](https://github.com/amolghode1981)) - Regression: Fix account service login expiration ([#24920](https://github.com/RocketChat/Rocket.Chat/pull/24920)) @@ -923,7 +971,7 @@ - Regression: Register services right away ([#24800](https://github.com/RocketChat/Rocket.Chat/pull/24800)) -- Regression: Role Sync not always working ([#24850](https://github.com/RocketChat/Rocket.Chat/pull/24850)) +- Regression: Role Sync not always working ([#24850](https://github.com/RocketChat/Rocket.Chat/pull/24850) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
@@ -932,39 +980,39 @@ - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) - [@Himanshu664](https://github.com/Himanshu664) - [@JMoVS](https://github.com/JMoVS) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Muramatsu2602](https://github.com/Muramatsu2602) - [@aadishJ01](https://github.com/aadishJ01) +- [@amolghode1981](https://github.com/amolghode1981) - [@aswinidev](https://github.com/aswinidev) +- [@cauefcr](https://github.com/cauefcr) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) +- [@felipe-rod123](https://github.com/felipe-rod123) +- [@filipemarins](https://github.com/filipemarins) +- [@gerzonc](https://github.com/gerzonc) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@nishant23122000](https://github.com/nishant23122000) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@tkurz](https://github.com/tkurz) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@albuquerquefabio](https://github.com/albuquerquefabio) -- [@amolghode1981](https://github.com/amolghode1981) -- [@cauefcr](https://github.com/cauefcr) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) -- [@felipe-rod123](https://github.com/felipe-rod123) -- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@gerzonc](https://github.com/gerzonc) - [@ggazzo](https://github.com/ggazzo) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.5.6 @@ -981,13 +1029,16 @@ - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Modify Meteor's `HTTP.call` to add back proxy support -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 4.5.5 @@ -1002,13 +1053,13 @@ ### 🐛 Bug fixes -- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994)) +- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994) by [@tiagoevanp](https://github.com/tiagoevanp)) Remove infinity loop inside useVoipClient hook. #closes #24970 -- Multiple issues starting a new DM ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) +- Multiple issues starting a new DM ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955) by [@filipemarins](https://github.com/filipemarins) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) When the room object is searched for the first time, it does not exist on the front object yet (subscription), adding a fallback search for room list will guarantee to search the room details. @@ -1022,21 +1073,24 @@ 🔍 Minor changes -- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990)) +- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Release 4.5.5 ([#24998](https://github.com/RocketChat/Rocket.Chat/pull/24998)) +- Release 4.5.5 ([#24998](https://github.com/RocketChat/Rocket.Chat/pull/24998) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@filipemarins](https://github.com/filipemarins) & [@tiagoevanp](https://github.com/tiagoevanp)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) - [@filipemarins](https://github.com/filipemarins) -- [@ggazzo](https://github.com/ggazzo) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@sampaiodiego](https://github.com/sampaiodiego) - [@tiagoevanp](https://github.com/tiagoevanp) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + # 4.5.4 `2022-03-24 · 1 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` @@ -1049,22 +1103,25 @@ ### 🐛 Bug fixes -- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930)) +- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
🔍 Minor changes -- Release 4.5.4 ([#24938](https://github.com/RocketChat/Rocket.Chat/pull/24938)) +- Release 4.5.4 ([#24938](https://github.com/RocketChat/Rocket.Chat/pull/24938) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) -- [@geekgonecrazy](https://github.com/geekgonecrazy) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@geekgonecrazy](https://github.com/geekgonecrazy) + # 4.5.3 `2022-03-21 · 2 🚀 · 8 🐛 · 1 🔍 · 5 👩‍💻👨‍💻` @@ -1077,32 +1134,32 @@ ### 🚀 Improvements -- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837)) +- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837) by [@KevLehman](https://github.com/KevLehman)) -- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748)) +- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748) by [@tiagoevanp](https://github.com/tiagoevanp)) ### 🐛 Bug fixes -- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) +- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838) by [@tiagoevanp](https://github.com/tiagoevanp)) - Improve the CallProvider code; - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. -- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) +- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) - Custom script not being fired ([#24901](https://github.com/RocketChat/Rocket.Chat/pull/24901)) -- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864)) +- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864) by [@KevLehman](https://github.com/KevLehman)) -- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) +- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752) by [@KevLehman](https://github.com/KevLehman)) -- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829)) +- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829) by [@KevLehman](https://github.com/KevLehman)) -- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789)) +- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789) by [@amolghode1981](https://github.com/amolghode1981)) -- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799)) +- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes @@ -1112,13 +1169,16 @@
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) - [@amolghode1981](https://github.com/amolghode1981) +- [@tiagoevanp](https://github.com/tiagoevanp) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tiagoevanp](https://github.com/tiagoevanp) # 4.5.2 `2022-03-12 · 1 🚀 · 7 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` @@ -1132,26 +1192,26 @@ ### 🚀 Improvements -- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750)) +- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750) by [@MartinSchoeler](https://github.com/MartinSchoeler)) ### 🐛 Bug fixes - "livechat/webrtc.call" endpoint not working ([#24804](https://github.com/RocketChat/Rocket.Chat/pull/24804)) -- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) +- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732) by [@tassoevan](https://github.com/tassoevan)) - Broken multiple OAuth integrations ([#24705](https://github.com/RocketChat/Rocket.Chat/pull/24705)) - Critical: Incorrect visitor getting assigned to a chat from apps ([#24805](https://github.com/RocketChat/Rocket.Chat/pull/24805)) -- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623)) +- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623) by [@tassoevan](https://github.com/tassoevan)) A race condition on `useRoomIcon` -- delayed merge of rooms and subscriptions -- was causing a UI crash whenever someone tried to open a DM from the user card component. -- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812)) +- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812) by [@juliajforesti](https://github.com/juliajforesti)) -- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792)) +- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes @@ -1161,16 +1221,19 @@
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) - [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@juliajforesti](https://github.com/juliajforesti) +- [@tassoevan](https://github.com/tassoevan) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@debdutdeb](https://github.com/debdutdeb) - [@ggazzo](https://github.com/ggazzo) -- [@juliajforesti](https://github.com/juliajforesti) - [@murtaza98](https://github.com/murtaza98) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 4.5.1 `2022-03-09 · 13 🐛 · 2 🔍 · 12 👩‍💻👨‍💻` @@ -1184,71 +1247,71 @@ ### 🐛 Bug fixes -- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760)) +- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677)) +- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677) by [@juliajforesti](https://github.com/juliajforesti) & [@tassoevan](https://github.com/tassoevan)) - Duplicated 'name' log key ([#24590](https://github.com/RocketChat/Rocket.Chat/pull/24590)) -- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674)) +- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix missing sender's username on messages imported from Slack. - no id of room closer in livechat-close message ([#24683](https://github.com/RocketChat/Rocket.Chat/pull/24683)) -- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) +- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@tassoevan](https://github.com/tassoevan)) Removed the logic for calling the `rooms.adminRooms` endPoint from the `RoomsTable` Component and moved it to its parent component `RoomsPage`. This allows to call the endPoint `rooms.adminRooms` from `EditRoomContextBar` Component which is also has `RoomPage` Component as its parent. Also added a succes toast message after the successful deletion of room. -- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696)) +- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix rooms' message counter not being incremented on message import. -- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680)) +- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743)) +- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Do not send system messages when adding or removing a new or existing _group_ from a team. -- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737)) +- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661)) +- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661) by [@renatobecker](https://github.com/renatobecker)) -- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607)) +- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657)) +- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657) by [@amolghode1981](https://github.com/amolghode1981))
🔍 Minor changes -- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) +- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Release 4.5.1 ([#24782](https://github.com/RocketChat/Rocket.Chat/pull/24782) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@cuonghuunguyen](https://github.com/cuonghuunguyen)) +- Release 4.5.1 ([#24782](https://github.com/RocketChat/Rocket.Chat/pull/24782) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@amolghode1981](https://github.com/amolghode1981) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@juliajforesti](https://github.com/juliajforesti) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp))
### 👩‍💻👨‍💻 Contributors 😍 - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) -- [@cuonghuunguyen](https://github.com/cuonghuunguyen) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@KevLehman](https://github.com/KevLehman) - [@MartinSchoeler](https://github.com/MartinSchoeler) - [@amolghode1981](https://github.com/amolghode1981) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@juliajforesti](https://github.com/juliajforesti) - [@matheusbsilva137](https://github.com/matheusbsilva137) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@renatobecker](https://github.com/renatobecker) -- [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) - [@tiagoevanp](https://github.com/tiagoevanp) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + # 4.5.0 `2022-02-28 · 3 🎉 · 15 🚀 · 19 🐛 · 72 🔍 · 30 👩‍💻👨‍💻` @@ -1261,15 +1324,15 @@ ### 🎉 New features -- E2E password generator ([#24114](https://github.com/RocketChat/Rocket.Chat/pull/24114) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) +- E2E password generator ([#24114](https://github.com/RocketChat/Rocket.Chat/pull/24114) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- Marketplace sort filter ([#24567](https://github.com/RocketChat/Rocket.Chat/pull/24567)) +- Marketplace sort filter ([#24567](https://github.com/RocketChat/Rocket.Chat/pull/24567) by [@rique223](https://github.com/rique223)) Implemented a sort filter for the marketplace screen. This component sorts the marketplace apps list in 4 ways, alphabetical order(A-Z), inverse alphabetical order(Z-A), most recently updated(MRU), and least recent updated(LRU). Besides that, I've generalized some components and types to increase code reusability, renamed some helpers as well as deleted some useless ones, and inserted the necessary new translations on the English i18n dictionary. Demo gif: ![Marketplace sort filter](https://user-images.githubusercontent.com/43561537/155033709-e07a6306-a85a-4f7f-9624-b53ba5dd7fa9.gif) -- VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102)) +- VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@amolghode1981](https://github.com/amolghode1981) & [@tiagoevanp](https://github.com/tiagoevanp)) - Created VoipService to manage VoIP connections and PBX connection - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) @@ -1291,7 +1354,7 @@ - **ENTERPRISE:** Improve how micro services are loaded ([#24388](https://github.com/RocketChat/Rocket.Chat/pull/24388)) -- Add return button in chats opened from the list of current chats ([#24458](https://github.com/RocketChat/Rocket.Chat/pull/24458) by [@LucasFASouza](https://github.com/LucasFASouza)) +- Add return button in chats opened from the list of current chats ([#24458](https://github.com/RocketChat/Rocket.Chat/pull/24458) by [@LucasFASouza](https://github.com/LucasFASouza) & [@tiagoevanp](https://github.com/tiagoevanp)) The new return button for Omnichannel chats came out with release 3.15 but the feature was only available for chats that were opened from Omnichannel Contact Center. Now, the same UI/UX is supported for chats opened from Current Chats list. @@ -1302,7 +1365,7 @@ ![image](https://user-images.githubusercontent.com/32396925/153285591-fad8e4a0-d2ea-4a02-8b2a-15e383b3c876.png) -- Add tooltips on action buttons of Canned Response message composer ([#24483](https://github.com/RocketChat/Rocket.Chat/pull/24483) by [@LucasFASouza](https://github.com/LucasFASouza)) +- Add tooltips on action buttons of Canned Response message composer ([#24483](https://github.com/RocketChat/Rocket.Chat/pull/24483) by [@LucasFASouza](https://github.com/LucasFASouza) & [@tiagoevanp](https://github.com/tiagoevanp)) The tooltips were missing on the action buttons of CR message composer. @@ -1310,7 +1373,7 @@ Users can now feel more encouraged to use these actions knowing what they are supposed to do. -- Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@ostjen](https://github.com/ostjen)) +- Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) - Add user to room on "Click to Join!" button press; - Display the "Join" button in discussions inside channels (keeping the behavior consistent with discussions inside groups). @@ -1321,7 +1384,7 @@ The text content from chatbox goes to the file description when drag and drop a file. -- Close modal on esc and outside click ([#24275](https://github.com/RocketChat/Rocket.Chat/pull/24275)) +- Close modal on esc and outside click ([#24275](https://github.com/RocketChat/Rocket.Chat/pull/24275) by [@tassoevan](https://github.com/tassoevan)) This is a QUICK change in order to close modals pressing Esc button and clicking outside of it **intentionally**. @@ -1333,7 +1396,7 @@ ### after ![Screen Shot 2022-01-28 at 13 32 02](https://user-images.githubusercontent.com/27704687/151585101-75b98502-9aae-4198-bc3e-4956750e5d8b.png) -- Convert tag edit with department data to tsx ([#24369](https://github.com/RocketChat/Rocket.Chat/pull/24369) by [@LucasFASouza](https://github.com/LucasFASouza)) +- Convert tag edit with department data to tsx ([#24369](https://github.com/RocketChat/Rocket.Chat/pull/24369) by [@LucasFASouza](https://github.com/LucasFASouza) & [@tiagoevanp](https://github.com/tiagoevanp)) - Descriptive tooltip for Encrypted Key on Room Header ([#24121](https://github.com/RocketChat/Rocket.Chat/pull/24121)) @@ -1341,7 +1404,7 @@ OTR system messages to indicate key refresh and joining chat to users. -- Purchase Type Filter for marketplace apps and Categories filter anchor refactoring ([#24454](https://github.com/RocketChat/Rocket.Chat/pull/24454)) +- Purchase Type Filter for marketplace apps and Categories filter anchor refactoring ([#24454](https://github.com/RocketChat/Rocket.Chat/pull/24454) by [@rique223](https://github.com/rique223)) Implemented a filter by purchase type(free or paid) component for the apps screen of the marketplace. Besides that, new entries on the dictionary, fixed some parts of the App type (purchaseType was typed as unknown and price as string), and created some helpers to work alongside the filter. Will be refactoring the categories filter anchor and then will open this PR for reviews. @@ -1352,7 +1415,7 @@ Demo gif: ![New categories filter anchor(PR)](https://user-images.githubusercontent.com/43561537/153422427-28012b7d-e0ec-45f4-861d-c9368c57ad04.gif) -- Replace AutoComplete in UserAutoComplete & UserAutoCompleteMultiple components ([#24529](https://github.com/RocketChat/Rocket.Chat/pull/24529)) +- Replace AutoComplete in UserAutoComplete & UserAutoCompleteMultiple components ([#24529](https://github.com/RocketChat/Rocket.Chat/pull/24529) by [@juliajforesti](https://github.com/juliajforesti) & [@tassoevan](https://github.com/tassoevan)) This PR replaces a deprecated fuselage's component `AutoComplete` in favor of `Select` and `MultiSelect` which fixes some of UX/UI issues in selecting users @@ -1366,7 +1429,7 @@ Currently Slash Commands don't work in an E2EE room, as we encrypt the message before slash command is detected by the server, So removed encryption for slash commands in e2e rooms. -- Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@ostjen](https://github.com/ostjen)) +- Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) - Delete some keys that aren't being used (eg: User_left_female). - Add new Teams' system messages: @@ -1386,13 +1449,13 @@ - Add ?close to OAuth callback url ([#24381](https://github.com/RocketChat/Rocket.Chat/pull/24381)) -- GDPR action to forget visitor data on request ([#24441](https://github.com/RocketChat/Rocket.Chat/pull/24441)) +- GDPR action to forget visitor data on request ([#24441](https://github.com/RocketChat/Rocket.Chat/pull/24441) by [@KevLehman](https://github.com/KevLehman)) - Implement client errors on ddp-streamer ([#24310](https://github.com/RocketChat/Rocket.Chat/pull/24310)) -- Inconsistent validation of user's access to rooms ([#24037](https://github.com/RocketChat/Rocket.Chat/pull/24037) by [@ostjen](https://github.com/ostjen)) +- Inconsistent validation of user's access to rooms ([#24037](https://github.com/RocketChat/Rocket.Chat/pull/24037) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253)) +- Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253) by [@guijun13](https://github.com/guijun13) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) * Fix users selecting by fixing their _id * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone @@ -1402,23 +1465,23 @@ - Oembed request not respecting payload limit ([#24418](https://github.com/RocketChat/Rocket.Chat/pull/24418)) -- Omnichannel managers can't join chats in progress ([#24553](https://github.com/RocketChat/Rocket.Chat/pull/24553)) +- Omnichannel managers can't join chats in progress ([#24553](https://github.com/RocketChat/Rocket.Chat/pull/24553) by [@renatobecker](https://github.com/renatobecker)) - Outgoing webhook without scripts not saving messages ([#24401](https://github.com/RocketChat/Rocket.Chat/pull/24401)) -- Prevent Apps Bridge to remove visitor status from room ([#24305](https://github.com/RocketChat/Rocket.Chat/pull/24305)) +- Prevent Apps Bridge to remove visitor status from room ([#24305](https://github.com/RocketChat/Rocket.Chat/pull/24305) by [@KevLehman](https://github.com/KevLehman)) - Read receipts showing first messages of the room as read even if not read by everyone ([#24508](https://github.com/RocketChat/Rocket.Chat/pull/24508)) -- respect `Accounts_Registration_Users_Default_Roles` setting ([#24173](https://github.com/RocketChat/Rocket.Chat/pull/24173)) +- respect `Accounts_Registration_Users_Default_Roles` setting ([#24173](https://github.com/RocketChat/Rocket.Chat/pull/24173) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix `user` role being added as default regardless of the `Accounts_Registration_Users_Default_Roles` setting. - Room context tabs not working in Omnichannel current chats page ([#24559](https://github.com/RocketChat/Rocket.Chat/pull/24559)) -- Skip admin info in setup wizard for servers with admin registered ([#24485](https://github.com/RocketChat/Rocket.Chat/pull/24485)) +- Skip admin info in setup wizard for servers with admin registered ([#24485](https://github.com/RocketChat/Rocket.Chat/pull/24485) by [@tassoevan](https://github.com/tassoevan)) -- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407)) +- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407) by [@tassoevan](https://github.com/tassoevan)) - Slash commands previews not working ([#24387](https://github.com/RocketChat/Rocket.Chat/pull/24387) by [@ostjen](https://github.com/ostjen)) @@ -1426,7 +1489,7 @@ Fix `bio` and `prid` startup index creation errors. -- typo on register server tooltip of setup wizard ([#24466](https://github.com/RocketChat/Rocket.Chat/pull/24466)) +- typo on register server tooltip of setup wizard ([#24466](https://github.com/RocketChat/Rocket.Chat/pull/24466) by [@filipemarins](https://github.com/filipemarins))
🔍 Minor changes @@ -1464,19 +1527,19 @@ - Bump vm2 from 3.9.5 to 3.9.7 in /ee/server/services ([#24509](https://github.com/RocketChat/Rocket.Chat/pull/24509) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: `twoFactorRequired` signature ([#24518](https://github.com/RocketChat/Rocket.Chat/pull/24518)) +- Chore: `twoFactorRequired` signature ([#24518](https://github.com/RocketChat/Rocket.Chat/pull/24518) by [@tassoevan](https://github.com/tassoevan)) Improved type checking for decorator `twoFactorRequired`. - Chore: Add description to global OTR setting ([#24333](https://github.com/RocketChat/Rocket.Chat/pull/24333) by [@pedrogssouza](https://github.com/pedrogssouza)) -- Chore: Bump Fuselage packages ([#24573](https://github.com/RocketChat/Rocket.Chat/pull/24573)) +- Chore: Bump Fuselage packages ([#24573](https://github.com/RocketChat/Rocket.Chat/pull/24573) by [@tassoevan](https://github.com/tassoevan)) It uses the last stable version of Fuselage packages. - Chore: bump fuselage version ([#24453](https://github.com/RocketChat/Rocket.Chat/pull/24453)) -- Chore: Convert JS files to Typescript ([#24410](https://github.com/RocketChat/Rocket.Chat/pull/24410)) +- Chore: Convert JS files to Typescript ([#24410](https://github.com/RocketChat/Rocket.Chat/pull/24410) by [@felipe-rod123](https://github.com/felipe-rod123)) This pull request converts 26 more files from Javascript to Typescript, to check variable types and increase validation on the code. @@ -1512,13 +1575,13 @@ - Chore: Remove storybook build job from CI ([#24530](https://github.com/RocketChat/Rocket.Chat/pull/24530)) -- Chore: roomTypes: Stop mixing client and server code together ([#24536](https://github.com/RocketChat/Rocket.Chat/pull/24536)) +- Chore: roomTypes: Stop mixing client and server code together ([#24536](https://github.com/RocketChat/Rocket.Chat/pull/24536) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) - Chore: Run tests using microservices deployment on CI ([#24513](https://github.com/RocketChat/Rocket.Chat/pull/24513)) - Chore: Set Docker image tag to latest only when really latest ([#24366](https://github.com/RocketChat/Rocket.Chat/pull/24366)) -- Chore: Unify ILivechatAgent with ILivechatAgentRecord ([#24406](https://github.com/RocketChat/Rocket.Chat/pull/24406)) +- Chore: Unify ILivechatAgent with ILivechatAgentRecord ([#24406](https://github.com/RocketChat/Rocket.Chat/pull/24406) by [@KevLehman](https://github.com/KevLehman)) - Chore: Update Apps-Engine ([#24568](https://github.com/RocketChat/Rocket.Chat/pull/24568)) @@ -1548,24 +1611,24 @@ - Regression: Admin Sidebar colors inverted. ([#24609](https://github.com/RocketChat/Rocket.Chat/pull/24609)) -- Regression: Bunch of settings fixes for VoIP ([#24594](https://github.com/RocketChat/Rocket.Chat/pull/24594)) +- Regression: Bunch of settings fixes for VoIP ([#24594](https://github.com/RocketChat/Rocket.Chat/pull/24594) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Do not show toast on incoming voip calls ([#24619](https://github.com/RocketChat/Rocket.Chat/pull/24619)) -- Regression: Encode registration info as JWT when signing key is provided ([#24626](https://github.com/RocketChat/Rocket.Chat/pull/24626)) +- Regression: Encode registration info as JWT when signing key is provided ([#24626](https://github.com/RocketChat/Rocket.Chat/pull/24626) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585)) +- Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Fix `Mentioned room not found` error when importing rooms from Slack; - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); - Fix incorrect message count on imported rooms; - Fix missing username on messages imported from Slack; -- Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583)) +- Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Extension List panel UI not aligned with designs ([#24645](https://github.com/RocketChat/Rocket.Chat/pull/24645)) -- Regression: Fix double value on holdTime and empty msg on last message ([#24630](https://github.com/RocketChat/Rocket.Chat/pull/24630)) +- Regression: Fix double value on holdTime and empty msg on last message ([#24630](https://github.com/RocketChat/Rocket.Chat/pull/24630) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Fix in-correct room status shown to agents ([#24592](https://github.com/RocketChat/Rocket.Chat/pull/24592)) @@ -1573,21 +1636,21 @@ - Regression: Fix room not getting created due to null visitor status ([#24562](https://github.com/RocketChat/Rocket.Chat/pull/24562)) -- Regression: Fix time fields and wrap up in Voip Room Contexual bar ([#24625](https://github.com/RocketChat/Rocket.Chat/pull/24625)) +- Regression: Fix time fields and wrap up in Voip Room Contexual bar ([#24625](https://github.com/RocketChat/Rocket.Chat/pull/24625) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Fix time format on Voip system messages ([#24603](https://github.com/RocketChat/Rocket.Chat/pull/24603)) - Regression: Fix translation for call started message ([#24615](https://github.com/RocketChat/Rocket.Chat/pull/24615)) -- Regression: Fix wrong tab name for VoIP settings ([#24647](https://github.com/RocketChat/Rocket.Chat/pull/24647)) +- Regression: Fix wrong tab name for VoIP settings ([#24647](https://github.com/RocketChat/Rocket.Chat/pull/24647) by [@renatobecker](https://github.com/renatobecker)) -- Regression: Fixes in Voice Contextual Bar and Directory ([#24596](https://github.com/RocketChat/Rocket.Chat/pull/24596)) +- Regression: Fixes in Voice Contextual Bar and Directory ([#24596](https://github.com/RocketChat/Rocket.Chat/pull/24596) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: If Asterisk suddenly goes down, server has no way to know. Causes server to get stuck. Needs restart ([#24624](https://github.com/RocketChat/Rocket.Chat/pull/24624)) +- Regression: If Asterisk suddenly goes down, server has no way to know. Causes server to get stuck. Needs restart ([#24624](https://github.com/RocketChat/Rocket.Chat/pull/24624) by [@KevLehman](https://github.com/KevLehman) & [@amolghode1981](https://github.com/amolghode1981)) - Regression: Mark all rooms as read modal closing instantly. ([#24610](https://github.com/RocketChat/Rocket.Chat/pull/24610)) -- Regression: No audio when call comes from Skype/IP phone ([#24602](https://github.com/RocketChat/Rocket.Chat/pull/24602)) +- Regression: No audio when call comes from Skype/IP phone ([#24602](https://github.com/RocketChat/Rocket.Chat/pull/24602) by [@amolghode1981](https://github.com/amolghode1981)) The audio was not rendered because of re-rendering of react element based on queueCounter and roomInfo. queueCounter and roomInfo cause the dom to re-render when call gets accepted @@ -1601,13 +1664,13 @@ This fix provides a way to re-initialise the rendering elements in VoIP user and calls this function on useEffect() if the re-render has happen. -- Regression: Prevent button from losing state when rerendering ([#24648](https://github.com/RocketChat/Rocket.Chat/pull/24648)) +- Regression: Prevent button from losing state when rerendering ([#24648](https://github.com/RocketChat/Rocket.Chat/pull/24648) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Prevent connect to asterisk when VoIP is disabled ([#24601](https://github.com/RocketChat/Rocket.Chat/pull/24601)) +- Regression: Prevent connect to asterisk when VoIP is disabled ([#24601](https://github.com/RocketChat/Rocket.Chat/pull/24601) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Queue counter aggregator for incoming/hanged calls ([#24635](https://github.com/RocketChat/Rocket.Chat/pull/24635)) +- Regression: Queue counter aggregator for incoming/hanged calls ([#24635](https://github.com/RocketChat/Rocket.Chat/pull/24635) by [@amolghode1981](https://github.com/amolghode1981)) -- Regression: Refresh server connection when MI server settings change ([#24649](https://github.com/RocketChat/Rocket.Chat/pull/24649)) +- Regression: Refresh server connection when MI server settings change ([#24649](https://github.com/RocketChat/Rocket.Chat/pull/24649) by [@KevLehman](https://github.com/KevLehman)) - Regression: Server crashing if Voip credentials are invalid ([#24646](https://github.com/RocketChat/Rocket.Chat/pull/24646)) @@ -1617,37 +1680,37 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) - [@LucasFASouza](https://github.com/LucasFASouza) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@amolghode1981](https://github.com/amolghode1981) - [@aswinidev](https://github.com/aswinidev) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) +- [@felipe-rod123](https://github.com/felipe-rod123) +- [@filipemarins](https://github.com/filipemarins) +- [@guijun13](https://github.com/guijun13) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) - [@pedrogssouza](https://github.com/pedrogssouza) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@albuquerquefabio](https://github.com/albuquerquefabio) -- [@amolghode1981](https://github.com/amolghode1981) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) -- [@felipe-rod123](https://github.com/felipe-rod123) -- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@guijun13](https://github.com/guijun13) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@rique223](https://github.com/rique223) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@ujorgeleite](https://github.com/ujorgeleite) - [@yash-rajpal](https://github.com/yash-rajpal) @@ -1665,13 +1728,16 @@ - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Modify Meteor's `HTTP.call` to add back proxy support -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 4.4.2 @@ -1694,14 +1760,17 @@ - Chore: bump fuselage version ([#24453](https://github.com/RocketChat/Rocket.Chat/pull/24453)) -- Release 4.4.2 ([#24459](https://github.com/RocketChat/Rocket.Chat/pull/24459)) +- Release 4.4.2 ([#24459](https://github.com/RocketChat/Rocket.Chat/pull/24459) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.4.1 @@ -1722,7 +1791,7 @@ - Outgoing webhook without scripts not saving messages ([#24401](https://github.com/RocketChat/Rocket.Chat/pull/24401)) -- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407)) +- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407) by [@tassoevan](https://github.com/tassoevan)) - Slash commands previews not working ([#24387](https://github.com/RocketChat/Rocket.Chat/pull/24387) by [@ostjen](https://github.com/ostjen)) @@ -1734,21 +1803,21 @@ 🔍 Minor changes -- Release 4.4.1 ([#24432](https://github.com/RocketChat/Rocket.Chat/pull/24432) by [@ostjen](https://github.com/ostjen)) +- Release 4.4.1 ([#24432](https://github.com/RocketChat/Rocket.Chat/pull/24432) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 👩‍💻👨‍💻 Contributors 😍 - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 4.4.0 `2022-01-28 · 4 🎉 · 13 🚀 · 29 🐛 · 44 🔍 · 34 👩‍💻👨‍💻` @@ -1762,9 +1831,9 @@ ### 🎉 New features -- **EE:** Allow to filter departments by Business Units on Livechat ([#24162](https://github.com/RocketChat/Rocket.Chat/pull/24162)) +- **EE:** Allow to filter departments by Business Units on Livechat ([#24162](https://github.com/RocketChat/Rocket.Chat/pull/24162) by [@renatobecker](https://github.com/renatobecker)) -- App empty states component, category filter and empty states error variation implementations ([#23818](https://github.com/RocketChat/Rocket.Chat/pull/23818)) +- App empty states component, category filter and empty states error variation implementations ([#23818](https://github.com/RocketChat/Rocket.Chat/pull/23818) by [@rique223](https://github.com/rique223)) Created and implemented the category filters component: Demo gif: @@ -1780,7 +1849,7 @@ - Apple Login ([#24060](https://github.com/RocketChat/Rocket.Chat/pull/24060)) -- Enabling emoji on custom status ([#24170](https://github.com/RocketChat/Rocket.Chat/pull/24170)) +- Enabling emoji on custom status ([#24170](https://github.com/RocketChat/Rocket.Chat/pull/24170) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) ### 🚀 Improvements @@ -1806,9 +1875,9 @@ ![Screen Shot 2022-01-13 at 13 38 59](https://user-images.githubusercontent.com/27704687/149371232-3d292f5e-e8b0-41e1-b065-90a80a5f08ce.png) ![Screen Shot 2022-01-13 at 13 39 08](https://user-images.githubusercontent.com/27704687/149371263-64fd09e4-456e-48ee-9976-83f42b90e4d9.png) -- Importer text for CSV upload file format ([#23817](https://github.com/RocketChat/Rocket.Chat/pull/23817) by [@ostjen](https://github.com/ostjen)) +- Importer text for CSV upload file format ([#23817](https://github.com/RocketChat/Rocket.Chat/pull/23817) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen)) +- lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) - On `statistics` object the property `get` is an async function now. - We need to collect additional data of feature activation through the statistics collector. @@ -1820,7 +1889,7 @@ ![image](https://user-images.githubusercontent.com/8591547/150033087-92721b76-9203-42fe-ac2e-5b9eca50edab.png) -- Rewrite AddWebdavAccountModal to React Component ([#24070](https://github.com/RocketChat/Rocket.Chat/pull/24070)) +- Rewrite AddWebdavAccountModal to React Component ([#24070](https://github.com/RocketChat/Rocket.Chat/pull/24070) by [@tassoevan](https://github.com/tassoevan)) ### before ![image](https://user-images.githubusercontent.com/27704687/147777054-bf2f84e4-5226-4ebc-ab6e-287b83889b85.png) @@ -1828,11 +1897,11 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/147769132-2b938ae8-aba3-4230-876d-572e46268b9a.png) -- Rewrite Omnichannel Queue Page to React ([#24176](https://github.com/RocketChat/Rocket.Chat/pull/24176)) +- Rewrite Omnichannel Queue Page to React ([#24176](https://github.com/RocketChat/Rocket.Chat/pull/24176) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/149458880-03c201ab-11cd-4c71-82aa-51bd557d3b6e.png) -- Rewrite roomNotFound to React Component ([#24044](https://github.com/RocketChat/Rocket.Chat/pull/24044)) +- Rewrite roomNotFound to React Component ([#24044](https://github.com/RocketChat/Rocket.Chat/pull/24044) by [@tassoevan](https://github.com/tassoevan)) ### before ![image](https://user-images.githubusercontent.com/27704687/147608307-468e6955-5db4-40c5-86a7-91448ac03427.png) @@ -1842,7 +1911,7 @@ ![image](https://user-images.githubusercontent.com/27704687/149158027-e39bc0a0-4c33-465b-83e0-873e558a037b.png) ![image](https://user-images.githubusercontent.com/27704687/149157692-3e73c0b4-1759-430c-b1c4-b521e47d774d.png) -- Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676)) +- Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676) by [@tassoevan](https://github.com/tassoevan)) This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: - A brand new visual design; @@ -1853,16 +1922,16 @@ ![Kapture 2022-01-20 at 11 19 47](https://user-images.githubusercontent.com/27704687/150356868-425666b4-511f-4690-9ce5-e61b839b1d19.gif) -- Show Channel Icons on Room Header & Info panels ([#24239](https://github.com/RocketChat/Rocket.Chat/pull/24239)) +- Show Channel Icons on Room Header & Info panels ([#24239](https://github.com/RocketChat/Rocket.Chat/pull/24239) by [@KevLehman](https://github.com/KevLehman)) Updates Omnichannel Header & room Info component to render the source info Built on top of https://github.com/RocketChat/Rocket.Chat/pull/24237 -- Throw 404 error in invalid endpoints ([#24053](https://github.com/RocketChat/Rocket.Chat/pull/24053)) +- Throw 404 error in invalid endpoints ([#24053](https://github.com/RocketChat/Rocket.Chat/pull/24053) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Throw 404 error when trying to call invalid endpoints. -- Throw 404 error in invalid endpoints" ([#24118](https://github.com/RocketChat/Rocket.Chat/pull/24118)) +- Throw 404 error in invalid endpoints" ([#24118](https://github.com/RocketChat/Rocket.Chat/pull/24118) by [@matheusbsilva137](https://github.com/matheusbsilva137)) ### 🐛 Bug fixes @@ -1875,15 +1944,15 @@ Introduction of new event `IPreEmailSent` was breaking the email function when the Apps-Engine framework was disabled in the administration -- **EE:** Agent cannot change status to Available despite being within open business hours ([#24112](https://github.com/RocketChat/Rocket.Chat/pull/24112)) +- **EE:** Agent cannot change status to Available despite being within open business hours ([#24112](https://github.com/RocketChat/Rocket.Chat/pull/24112) by [@KevLehman](https://github.com/KevLehman)) -- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142)) +- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Remove trailing slashes from Engagement Dashboard API requests; - App Framework Enable hanging indefinitely ([#24158](https://github.com/RocketChat/Rocket.Chat/pull/24158)) -- Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241)) +- Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241) by [@thassiov](https://github.com/thassiov)) Fixes: @@ -1894,11 +1963,11 @@ https://user-images.githubusercontent.com/733282/150420847-59bfcf8a-24a9-4dc5-8609-0d92dba38b70.mp4 -- Avoid updating all rooms with visitor abandonment queries ([#24252](https://github.com/RocketChat/Rocket.Chat/pull/24252)) +- Avoid updating all rooms with visitor abandonment queries ([#24252](https://github.com/RocketChat/Rocket.Chat/pull/24252) by [@KevLehman](https://github.com/KevLehman)) -- Change canned response model index to match other definition ([#24235](https://github.com/RocketChat/Rocket.Chat/pull/24235)) +- Change canned response model index to match other definition ([#24235](https://github.com/RocketChat/Rocket.Chat/pull/24235) by [@KevLehman](https://github.com/KevLehman)) -- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090)) +- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Update use of `setRealName` function to `_setRealName`. @@ -1918,19 +1987,19 @@ - Discussions not loading message history if not joined ([#24316](https://github.com/RocketChat/Rocket.Chat/pull/24316)) -- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) +- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096) by [@tassoevan](https://github.com/tassoevan)) It: - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. -- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) +- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981) by [@tiagoevanp](https://github.com/tiagoevanp)) Right now, if we try to press enter for a new line on multi-line modal input... it auto triggers the submit event. This PR fixes this behaviour by not submitting the modal in case the enter was pressed within an input text with multiline expected -- Errors on advanced sync prevent LDAP users from logging in ([#23958](https://github.com/RocketChat/Rocket.Chat/pull/23958) by [@ostjen](https://github.com/ostjen)) +- Errors on advanced sync prevent LDAP users from logging in ([#23958](https://github.com/RocketChat/Rocket.Chat/pull/23958) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Filter ability for admin room checkboxes ([#23970](https://github.com/RocketChat/Rocket.Chat/pull/23970) by [@sidmohanty11](https://github.com/sidmohanty11)) +- Filter ability for admin room checkboxes ([#23970](https://github.com/RocketChat/Rocket.Chat/pull/23970) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@sidmohanty11](https://github.com/sidmohanty11)) Now, @@ -1942,11 +2011,11 @@ - Fixed broken links in setup wizard ([#24248](https://github.com/RocketChat/Rocket.Chat/pull/24248) by [@Himanshu664](https://github.com/Himanshu664)) -- Fixing the changing custom status behavior ([#24218](https://github.com/RocketChat/Rocket.Chat/pull/24218)) +- Fixing the changing custom status behavior ([#24218](https://github.com/RocketChat/Rocket.Chat/pull/24218) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) -- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068)) +- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068) by [@tassoevan](https://github.com/tassoevan)) -- Make canned responses popup dependent on Canned_responses_enabled setting ([#23804](https://github.com/RocketChat/Rocket.Chat/pull/23804)) +- Make canned responses popup dependent on Canned_responses_enabled setting ([#23804](https://github.com/RocketChat/Rocket.Chat/pull/23804) by [@KevLehman](https://github.com/KevLehman)) - MAU when using micro services ([#24204](https://github.com/RocketChat/Rocket.Chat/pull/24204)) @@ -1954,13 +2023,13 @@ - MongoError during startup saying "ns not found" ([#24015](https://github.com/RocketChat/Rocket.Chat/pull/24015)) -- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039)) +- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039) by [@KevLehman](https://github.com/KevLehman)) - Omnichannel enabled setting not working when creating rooms ([#24067](https://github.com/RocketChat/Rocket.Chat/pull/24067)) - openUserInfo not working after changing room types ([#24098](https://github.com/RocketChat/Rocket.Chat/pull/24098) by [@grahhnt](https://github.com/grahhnt)) -- Password error should not be shown when selecting set random password ([#21181](https://github.com/RocketChat/Rocket.Chat/pull/21181)) +- Password error should not be shown when selecting set random password ([#21181](https://github.com/RocketChat/Rocket.Chat/pull/21181) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) We should not keep `password` as required field when we check set random password field. In this password should not be required @@ -1982,13 +2051,13 @@ - Bump follow-redirects from 1.14.5 to 1.14.7 in /ee/server/services ([#24182](https://github.com/RocketChat/Rocket.Chat/pull/24182) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: add script to fix code with prettier ([#24054](https://github.com/RocketChat/Rocket.Chat/pull/24054)) +- Chore: add script to fix code with prettier ([#24054](https://github.com/RocketChat/Rocket.Chat/pull/24054) by [@KevLehman](https://github.com/KevLehman)) -- Chore: Apply generics to infer types of useForm hook ([#22400](https://github.com/RocketChat/Rocket.Chat/pull/22400)) +- Chore: Apply generics to infer types of useForm hook ([#22400](https://github.com/RocketChat/Rocket.Chat/pull/22400) by [@tassoevan](https://github.com/tassoevan)) - Chore: Bump fuselage hooks ([#24233](https://github.com/RocketChat/Rocket.Chat/pull/24233)) -- Chore: Bump Livechat package version to 1.12.0 ([#24232](https://github.com/RocketChat/Rocket.Chat/pull/24232)) +- Chore: Bump Livechat package version to 1.12.0 ([#24232](https://github.com/RocketChat/Rocket.Chat/pull/24232) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) - Chore: Convert model LoginServiceConfiguration to raw ([#24187](https://github.com/RocketChat/Rocket.Chat/pull/24187)) @@ -1996,25 +2065,25 @@ - Chore: Include REG_TOKEN in docker-compose ([#24123](https://github.com/RocketChat/Rocket.Chat/pull/24123)) -- Chore: Migrate useOutsideClick to fuselage-hooks ([#24133](https://github.com/RocketChat/Rocket.Chat/pull/24133)) +- Chore: Migrate useOutsideClick to fuselage-hooks ([#24133](https://github.com/RocketChat/Rocket.Chat/pull/24133) by [@juliajforesti](https://github.com/juliajforesti)) -- Chore: Move `callbacks` to /lib ([#23456](https://github.com/RocketChat/Rocket.Chat/pull/23456)) +- Chore: Move `callbacks` to /lib ([#23456](https://github.com/RocketChat/Rocket.Chat/pull/23456) by [@tassoevan](https://github.com/tassoevan)) It moves to `/lib`, migrates to TypeScript, and deprecates the `callbacks` API. - Chore: Prettier for us all ([#24000](https://github.com/RocketChat/Rocket.Chat/pull/24000)) -- Chore: Remove unused assets ([#24023](https://github.com/RocketChat/Rocket.Chat/pull/24023)) +- Chore: Remove unused assets ([#24023](https://github.com/RocketChat/Rocket.Chat/pull/24023) by [@tassoevan](https://github.com/tassoevan)) - Chore: Removing hubot from docker-compose ([#23591](https://github.com/RocketChat/Rocket.Chat/pull/23591)) Remove hubot from docker-compose. This is forcing everyone to spin up Hubot every time they deploy Rocket.Chat and not that many people are using it. So we are wasting resources on peoples machines by forcing it -- Chore: Replace `isEmail` with `validateEmail` ([#24020](https://github.com/RocketChat/Rocket.Chat/pull/24020)) +- Chore: Replace `isEmail` with `validateEmail` ([#24020](https://github.com/RocketChat/Rocket.Chat/pull/24020) by [@tassoevan](https://github.com/tassoevan)) Follows #23816. -- Chore: Replace Blaze templates ([#24165](https://github.com/RocketChat/Rocket.Chat/pull/24165)) +- Chore: Replace Blaze templates ([#24165](https://github.com/RocketChat/Rocket.Chat/pull/24165) by [@tassoevan](https://github.com/tassoevan)) It replaces some templates used by login and invitation flows with React components. It also drops `main` template, allowing `appLayout` to just handle components now. @@ -2026,17 +2095,17 @@ - Chore: Update Apps-Engine version ([#24335](https://github.com/RocketChat/Rocket.Chat/pull/24335)) -- Chore: Update copyright notices ([#24022](https://github.com/RocketChat/Rocket.Chat/pull/24022)) +- Chore: Update copyright notices ([#24022](https://github.com/RocketChat/Rocket.Chat/pull/24022) by [@tassoevan](https://github.com/tassoevan)) Update date range in copyright notices to `2015-2022`. -- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091)) +- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Chore: Update mem to 8.1.1 ([#23954](https://github.com/RocketChat/Rocket.Chat/pull/23954)) - Chore: Update Meteor to 2.5.3 ([#24075](https://github.com/RocketChat/Rocket.Chat/pull/24075)) -- Chore: Update Omnichannel widget version to 1.11.2 ([#24169](https://github.com/RocketChat/Rocket.Chat/pull/24169)) +- Chore: Update Omnichannel widget version to 1.11.2 ([#24169](https://github.com/RocketChat/Rocket.Chat/pull/24169) by [@tiagoevanp](https://github.com/tiagoevanp)) - Chore: Update pino and pino-pretty ([#24242](https://github.com/RocketChat/Rocket.Chat/pull/24242)) @@ -2048,17 +2117,17 @@ - Merge master into develop & Set version to 4.4.0-develop ([#24049](https://github.com/RocketChat/Rocket.Chat/pull/24049)) -- Regression: Align Omni-Source icon sizes with designs ([#24269](https://github.com/RocketChat/Rocket.Chat/pull/24269)) +- Regression: Align Omni-Source icon sizes with designs ([#24269](https://github.com/RocketChat/Rocket.Chat/pull/24269) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Create migration to fix index issue at boot ([#24289](https://github.com/RocketChat/Rocket.Chat/pull/24289)) +- Regression: Create migration to fix index issue at boot ([#24289](https://github.com/RocketChat/Rocket.Chat/pull/24289) by [@KevLehman](https://github.com/KevLehman)) - Regression: Discussion room crashing ([#24272](https://github.com/RocketChat/Rocket.Chat/pull/24272)) -- Regression: Enable custom emoji on admin custom status page ([#24186](https://github.com/RocketChat/Rocket.Chat/pull/24186)) +- Regression: Enable custom emoji on admin custom status page ([#24186](https://github.com/RocketChat/Rocket.Chat/pull/24186) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) - Regression: Fix Alpine release tag ([#24259](https://github.com/RocketChat/Rocket.Chat/pull/24259)) -- Regression: Fix Default Business hour overriding other Business Hours ([#24288](https://github.com/RocketChat/Rocket.Chat/pull/24288)) +- Regression: Fix Default Business hour overriding other Business Hours ([#24288](https://github.com/RocketChat/Rocket.Chat/pull/24288) by [@KevLehman](https://github.com/KevLehman)) - Regression: Fix handling of http requests in apps bridge ([#24211](https://github.com/RocketChat/Rocket.Chat/pull/24211)) @@ -2072,11 +2141,11 @@ To maintain compatibility, we forced an empty body whenever we have a GET or HEAD request. This was probably the case previously, with the body of requests made with this methods being ignored either before being sent or in the third party server receiving the request -- Regression: Fix OmnichannelAppSourceRoomIcon sizes ([#24322](https://github.com/RocketChat/Rocket.Chat/pull/24322)) +- Regression: Fix OmnichannelAppSourceRoomIcon sizes ([#24322](https://github.com/RocketChat/Rocket.Chat/pull/24322) by [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Fix pino child log levels ([#24302](https://github.com/RocketChat/Rocket.Chat/pull/24302)) -- Regression: Remove extra call to `useOutsideClick` hook not following the function signature ([#24243](https://github.com/RocketChat/Rocket.Chat/pull/24243)) +- Regression: Remove extra call to `useOutsideClick` hook not following the function signature ([#24243](https://github.com/RocketChat/Rocket.Chat/pull/24243) by [@tassoevan](https://github.com/tassoevan)) It migrates `client/sidebar/header/actions/Search` component to TypeScript and mitigates a invalid call to `Array.prototype.every`: @@ -2094,24 +2163,32 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) - [@Himanshu664](https://github.com/Himanshu664) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@arshxyz](https://github.com/arshxyz) - [@aswinidev](https://github.com/aswinidev) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) - [@grahhnt](https://github.com/grahhnt) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@mbreslein-thd](https://github.com/mbreslein-thd) - [@nishant23122000](https://github.com/nishant23122000) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) - [@sidmohanty11](https://github.com/sidmohanty11) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) -- [@KevLehman](https://github.com/KevLehman) - [@LuluGO](https://github.com/LuluGO) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@albuquerquefabio](https://github.com/albuquerquefabio) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) @@ -2119,17 +2196,9 @@ - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@rique223](https://github.com/rique223) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.3.3 @@ -2174,17 +2243,17 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142)) +- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Remove trailing slashes from Engagement Dashboard API requests; - App Framework Enable hanging indefinitely ([#24158](https://github.com/RocketChat/Rocket.Chat/pull/24158)) -- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090)) +- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Update use of `setRealName` function to `_setRealName`. -- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068)) +- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068) by [@tassoevan](https://github.com/tassoevan)) - Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) @@ -2199,6 +2268,9 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@gronke](https://github.com/gronke) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 @@ -2206,10 +2278,7 @@ - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.3.1 @@ -2232,17 +2301,17 @@ Introduction of new event `IPreEmailSent` was breaking the email function when the Apps-Engine framework was disabled in the administration -- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) +- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096) by [@tassoevan](https://github.com/tassoevan)) It: - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. -- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) +- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981) by [@tiagoevanp](https://github.com/tiagoevanp)) Right now, if we try to press enter for a new line on multi-line modal input... it auto triggers the submit event. This PR fixes this behaviour by not submitting the modal in case the enter was pressed within an input text with multiline expected -- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039)) +- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039) by [@KevLehman](https://github.com/KevLehman)) - Omnichannel enabled setting not working when creating rooms ([#24067](https://github.com/RocketChat/Rocket.Chat/pull/24067)) @@ -2250,19 +2319,22 @@ 🔍 Minor changes -- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091)) +- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) - [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@d-gubert](https://github.com/d-gubert) -- [@murtaza98](https://github.com/murtaza98) - [@tassoevan](https://github.com/tassoevan) - [@tiagoevanp](https://github.com/tiagoevanp) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@murtaza98](https://github.com/murtaza98) + # 4.3.0 `2021-12-28 · 7 🎉 · 5 🚀 · 26 🐛 · 37 🔍 · 28 👩‍💻👨‍💻` @@ -2279,7 +2351,7 @@ Introduces a new event called before an email is sent by the Mailer. Apps can intercept and modify the email that will be sent, or even prevent it from being sent altogether. For more details, check https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/461/files#diff-301e8a58164edbf315da2a43c4923f153dbc909573de1e60aa9f730f7488ac82 -- **APPS:** Allow apps to open contextual bar ([#23843](https://github.com/RocketChat/Rocket.Chat/pull/23843)) +- **APPS:** Allow apps to open contextual bar ([#23843](https://github.com/RocketChat/Rocket.Chat/pull/23843) by [@thassiov](https://github.com/thassiov)) Opens a contextual bar using app ui interactions (`CONTEXTUAL_BAR_OPEN`) @@ -2296,22 +2368,22 @@ Add an optional param named `closer` into `LivechatBridge.closeRoom` so that it will be possible to close the room and send a close room message with the correct room closer. If the param is not passed, use the room visitor as the room closer. -- **EE:** Introduce fallback department support ([#23939](https://github.com/RocketChat/Rocket.Chat/pull/23939)) +- **EE:** Introduce fallback department support ([#23939](https://github.com/RocketChat/Rocket.Chat/pull/23939) by [@KevLehman](https://github.com/KevLehman)) -- Show Omnichannel room icon based on source definition ([#23912](https://github.com/RocketChat/Rocket.Chat/pull/23912)) +- Show Omnichannel room icon based on source definition ([#23912](https://github.com/RocketChat/Rocket.Chat/pull/23912) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) ### 🚀 Improvements -- Allow e-mail channel to be used without default department. ([#23945](https://github.com/RocketChat/Rocket.Chat/pull/23945)) +- Allow e-mail channel to be used without default department. ([#23945](https://github.com/RocketChat/Rocket.Chat/pull/23945) by [@cauefcr](https://github.com/cauefcr)) Due to a missing condition in the e-mail input processing, Rocket.Chat was unable to receive e-mails from e-mail channels that did not have a default department. -- Omnichannel Visitor Endpoints error handling ([#23819](https://github.com/RocketChat/Rocket.Chat/pull/23819)) +- Omnichannel Visitor Endpoints error handling ([#23819](https://github.com/RocketChat/Rocket.Chat/pull/23819) by [@KevLehman](https://github.com/KevLehman)) -- Replace SortListItem and CreateListItem with ListItem ([#24007](https://github.com/RocketChat/Rocket.Chat/pull/24007)) +- Replace SortListItem and CreateListItem with ListItem ([#24007](https://github.com/RocketChat/Rocket.Chat/pull/24007) by [@juliajforesti](https://github.com/juliajforesti)) -- Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879)) +- Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); - Remove outdated translations (for this setting's description). @@ -2323,7 +2395,7 @@ ### 🐛 Bug fixes -- Add CSP to authorize auto-close of CAS login window ([#23215](https://github.com/RocketChat/Rocket.Chat/pull/23215) by [@goyome](https://github.com/goyome)) +- Add CSP to authorize auto-close of CAS login window ([#23215](https://github.com/RocketChat/Rocket.Chat/pull/23215) by [@goyome](https://github.com/goyome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Add the hash of the JS inside the page that won't close ( window.close(); ) @@ -2333,7 +2405,7 @@ - Broken links present in some languages ([#23987](https://github.com/RocketChat/Rocket.Chat/pull/23987) by [@aswinidev](https://github.com/aswinidev)) -- Changes on department agents should mark form as dirty ([#19640](https://github.com/RocketChat/Rocket.Chat/pull/19640) by [@rafaelblink](https://github.com/rafaelblink)) +- Changes on department agents should mark form as dirty ([#19640](https://github.com/RocketChat/Rocket.Chat/pull/19640) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - creating room with federated member ([#23347](https://github.com/RocketChat/Rocket.Chat/pull/23347) by [@qwertiko](https://github.com/qwertiko)) @@ -2347,7 +2419,7 @@ - Email notifications settings not being honored on new DMs ([#23574](https://github.com/RocketChat/Rocket.Chat/pull/23574) by [@ostjen](https://github.com/ostjen)) -- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859)) +- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix `usersInRole` array used to send email to activate a user. @@ -2378,7 +2450,7 @@ - Fix Jitsi timeout update -- which caused the "Jitsi call already ended" error when trying to join a call some time after its creation; -- LDAP Sync doing nothing when set to only import new users. ([#23823](https://github.com/RocketChat/Rocket.Chat/pull/23823)) +- LDAP Sync doing nothing when set to only import new users. ([#23823](https://github.com/RocketChat/Rocket.Chat/pull/23823) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Missing custom user status ellipsis ([#23831](https://github.com/RocketChat/Rocket.Chat/pull/23831)) @@ -2411,7 +2483,7 @@ Removing edit message from messageBox and local storage on messageBox destroyed. -- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796)) +- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796) by [@tassoevan](https://github.com/tassoevan)) Upgrades `sharp` to avoid a segmentation fault on CentOS 7 during startup related to `sharp.node` being loaded via `process.dlopen()`. @@ -2425,7 +2497,7 @@ Derived from PR https://github.com/RocketChat/Rocket.Chat/pull/19238 -- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861)) +- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861) by [@rique223](https://github.com/rique223)) This PR solves a bug on the marketplace that was happening with WhatsApp where it was displaying a trial button even though it didn't have a free trial period. The new verification I've added checks if the app is subscription-based and then checks if it has 0 trial days in all of its tiers. If it does, it shows a subscribe button. If it doesn't, it displays a trial button. Also, I've exposed the itsEnterpriseOnly flag as an extra measure in the case of apps like Facebook Messenger that are enterprise-only and consequently should show the subscribe button. Before: @@ -2451,23 +2523,23 @@ - Chore: added last login to users.list ([#23846](https://github.com/RocketChat/Rocket.Chat/pull/23846) by [@ostjen](https://github.com/ostjen)) -- Chore: Bump fuselage 0.31.0 ([#24046](https://github.com/RocketChat/Rocket.Chat/pull/24046)) +- Chore: Bump fuselage 0.31.0 ([#24046](https://github.com/RocketChat/Rocket.Chat/pull/24046) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816)) +- Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816) by [@KevLehman](https://github.com/KevLehman)) - Create lib for validating emails - Modify places that validate emails to use the new central function - Chore: Change Menu props to accept next fuselage version ([#23839](https://github.com/RocketChat/Rocket.Chat/pull/23839)) -- Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822)) +- Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822) by [@KevLehman](https://github.com/KevLehman)) - Create NPM script to add new migrations - TODO: Infer next migration number from file list - Chore: Deleted LivechatPageVisited ([#23993](https://github.com/RocketChat/Rocket.Chat/pull/23993) by [@ostjen](https://github.com/ostjen)) -- Chore: Enable prefer-optional-chain ESLint rule for TypeScript files ([#23786](https://github.com/RocketChat/Rocket.Chat/pull/23786)) +- Chore: Enable prefer-optional-chain ESLint rule for TypeScript files ([#23786](https://github.com/RocketChat/Rocket.Chat/pull/23786) by [@tassoevan](https://github.com/tassoevan)) > Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted. > The more code you have, the more places there are for bugs to hide. The longer checkouts or compiles take. The longer it takes a new employee to make sense of your system. If you have to refactor there's more stuff to move around. @@ -2499,19 +2571,19 @@ - Chore: Fix hasRole warning ([#23914](https://github.com/RocketChat/Rocket.Chat/pull/23914)) -- Chore: Remove the `mobile-download-file` permission ([#23996](https://github.com/RocketChat/Rocket.Chat/pull/23996)) +- Chore: Remove the `mobile-download-file` permission ([#23996](https://github.com/RocketChat/Rocket.Chat/pull/23996) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Remove the `mobile-download-file` permission and its descriptions. -- Chore: Replace new typography ([#23756](https://github.com/RocketChat/Rocket.Chat/pull/23756)) +- Chore: Replace new typography ([#23756](https://github.com/RocketChat/Rocket.Chat/pull/23756) by [@juliajforesti](https://github.com/juliajforesti)) -- Chore: Replace typography ([#24021](https://github.com/RocketChat/Rocket.Chat/pull/24021)) +- Chore: Replace typography ([#24021](https://github.com/RocketChat/Rocket.Chat/pull/24021) by [@juliajforesti](https://github.com/juliajforesti)) - Chore: Update Apps-Engine to latest ([#24045](https://github.com/RocketChat/Rocket.Chat/pull/24045)) - Chore: update docker image base to latest node 12 patch ([#23875](https://github.com/RocketChat/Rocket.Chat/pull/23875)) -- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913)) +- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Chore: Update pino deps ([#23922](https://github.com/RocketChat/Rocket.Chat/pull/23922)) @@ -2531,7 +2603,7 @@ Add a migration to add source property to all the omnichannel rooms which don't have it yet. All these rooms will have source type as `other` -- Regression: Add optional chaining to possibly undefined fields ([#24033](https://github.com/RocketChat/Rocket.Chat/pull/24033)) +- Regression: Add optional chaining to possibly undefined fields ([#24033](https://github.com/RocketChat/Rocket.Chat/pull/24033) by [@KevLehman](https://github.com/KevLehman)) - Regression: addAction verification breaking rooms ([#24019](https://github.com/RocketChat/Rocket.Chat/pull/24019)) @@ -2543,17 +2615,17 @@ - Regression: Fix omnichannel empty source usage ([#24008](https://github.com/RocketChat/Rocket.Chat/pull/24008)) -- Regression: Let Meteor.absoluteUrl.defaultOptions.rootUrl as baseURI ([#24009](https://github.com/RocketChat/Rocket.Chat/pull/24009)) +- Regression: Let Meteor.absoluteUrl.defaultOptions.rootUrl as baseURI ([#24009](https://github.com/RocketChat/Rocket.Chat/pull/24009) by [@tassoevan](https://github.com/tassoevan)) - Regression: Missing padding in popover with custom template ([#23877](https://github.com/RocketChat/Rocket.Chat/pull/23877)) ![Screen Shot 2021-12-06 at 14 16 40](https://user-images.githubusercontent.com/27704687/144891474-a5bf982e-56af-46df-b472-adf9d999ce02.png) -- Regression: Remove dangling console.log ([#24034](https://github.com/RocketChat/Rocket.Chat/pull/24034)) +- Regression: Remove dangling console.log ([#24034](https://github.com/RocketChat/Rocket.Chat/pull/24034) by [@tassoevan](https://github.com/tassoevan)) A empty array have been printed to console due to a promise chained to `console.log` and `console.error` calls, probably for debugging purposes. -- Regression: Remove self from fallback departments dropdown ([#24018](https://github.com/RocketChat/Rocket.Chat/pull/24018)) +- Regression: Remove self from fallback departments dropdown ([#24018](https://github.com/RocketChat/Rocket.Chat/pull/24018) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Toolbox render item ([#23862](https://github.com/RocketChat/Rocket.Chat/pull/23862)) @@ -2561,36 +2633,36 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aswinidev](https://github.com/aswinidev) +- [@cauefcr](https://github.com/cauefcr) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@goyome](https://github.com/goyome) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@qwertiko](https://github.com/qwertiko) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) - [@sidmohanty11](https://github.com/sidmohanty11) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@cauefcr](https://github.com/cauefcr) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@rique223](https://github.com/rique223) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.2.2 @@ -2635,11 +2707,11 @@ ### 🐛 Bug fixes -- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859)) +- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix `usersInRole` array used to send email to activate a user. -- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796)) +- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796) by [@tassoevan](https://github.com/tassoevan)) Upgrades `sharp` to avoid a segmentation fault on CentOS 7 during startup related to `sharp.node` being loaded via `process.dlopen()`. @@ -2647,7 +2719,7 @@ - teams.removeMembers client usage ([#23857](https://github.com/RocketChat/Rocket.Chat/pull/23857)) -- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861)) +- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861) by [@rique223](https://github.com/rique223)) This PR solves a bug on the marketplace that was happening with WhatsApp where it was displaying a trial button even though it didn't have a free trial period. The new verification I've added checks if the app is subscription-based and then checks if it has 0 trial days in all of its tiers. If it does, it shows a subscribe button. If it doesn't, it displays a trial button. Also, I've exposed the itsEnterpriseOnly flag as an extra measure in the case of apps like Facebook Messenger that are enterprise-only and consequently should show the subscribe button. Before: @@ -2659,23 +2731,26 @@ 🔍 Minor changes -- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913)) +- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Release 4.2.1 ([#23917](https://github.com/RocketChat/Rocket.Chat/pull/23917)) +- Release 4.2.1 ([#23917](https://github.com/RocketChat/Rocket.Chat/pull/23917) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@rique223](https://github.com/rique223) & [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@dougfabris](https://github.com/dougfabris) -- [@ggazzo](https://github.com/ggazzo) - [@matheusbsilva137](https://github.com/matheusbsilva137) - [@rique223](https://github.com/rique223) -- [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) - [@tiagoevanp](https://github.com/tiagoevanp) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@dougfabris](https://github.com/dougfabris) +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + # 4.2.0 `2021-11-30 · 9 🎉 · 7 🚀 · 26 🐛 · 27 🔍 · 24 👩‍💻👨‍💻` @@ -2688,7 +2763,7 @@ ### 🎉 New features -- Allow Omnichannel statistics to be collected. ([#23694](https://github.com/RocketChat/Rocket.Chat/pull/23694)) +- Allow Omnichannel statistics to be collected. ([#23694](https://github.com/RocketChat/Rocket.Chat/pull/23694) by [@cauefcr](https://github.com/cauefcr)) This PR adds the possibility for business stakeholders to see what is actually being used of the Omnichannel integrations. @@ -2704,24 +2779,24 @@ - Permission for download/uploading files on mobile ([#23686](https://github.com/RocketChat/Rocket.Chat/pull/23686) by [@ostjen](https://github.com/ostjen)) -- Permissions for interacting with Omnichannel Contact Center ([#23389](https://github.com/RocketChat/Rocket.Chat/pull/23389)) +- Permissions for interacting with Omnichannel Contact Center ([#23389](https://github.com/RocketChat/Rocket.Chat/pull/23389) by [@cauefcr](https://github.com/cauefcr)) Adds a new permission, one that allows for control over user access to Omnichannel Contact Center, - Rate limiting for user registering ([#23732](https://github.com/RocketChat/Rocket.Chat/pull/23732) by [@ostjen](https://github.com/ostjen)) -- REST endpoints to manage Omnichannel Business Units ([#23750](https://github.com/RocketChat/Rocket.Chat/pull/23750)) +- REST endpoints to manage Omnichannel Business Units ([#23750](https://github.com/RocketChat/Rocket.Chat/pull/23750) by [@KevLehman](https://github.com/KevLehman)) Basic documentation about endpoints can be found at https://www.postman.com/kaleman960/workspace/rocketchat-public-api/request/3865466-71502450-8c8f-42b4-8954-1cd3d01fcb0c -- Show on-hold metrics on analytics pages and current chats ([#23498](https://github.com/RocketChat/Rocket.Chat/pull/23498)) +- Show on-hold metrics on analytics pages and current chats ([#23498](https://github.com/RocketChat/Rocket.Chat/pull/23498) by [@KevLehman](https://github.com/KevLehman)) ### 🚀 Improvements - Allow override of default department for SMS Livechat sessions ([#23626](https://github.com/RocketChat/Rocket.Chat/pull/23626) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547)) +- Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547) by [@tassoevan](https://github.com/tassoevan)) - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); @@ -2749,11 +2824,11 @@ Since the endpoint supports both, department ID and department Name, so we're renaming it to reflect the same. `departmentName` -> `department` -- Reduce complexity in some functions ([#23387](https://github.com/RocketChat/Rocket.Chat/pull/23387)) +- Reduce complexity in some functions ([#23387](https://github.com/RocketChat/Rocket.Chat/pull/23387) by [@tassoevan](https://github.com/tassoevan)) Overhauls all places where eslint's `complexity` rule is disabled. -- Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735)) +- Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735) by [@tassoevan](https://github.com/tassoevan)) It: - Adds stricter types for `API`; @@ -2767,19 +2842,19 @@ - "to users" not working in export message ([#23576](https://github.com/RocketChat/Rocket.Chat/pull/23576) by [@ostjen](https://github.com/ostjen)) -- **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588)) +- **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); - Fix "Merge Roles" and "Channel Mapping" not being performed/updated on OAuth login. -- **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673)) +- **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; - Update "Channels" tab name to "Rooms". -- **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703)) +- **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703) by [@KevLehman](https://github.com/KevLehman)) -- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608)) +- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - App update flow failing in HA setups ([#23607](https://github.com/RocketChat/Rocket.Chat/pull/23607)) @@ -2797,7 +2872,7 @@ Removed "generic" autofocus on sidenav template. -- Await promise to handle error when attempting to transfer a room ([#23739](https://github.com/RocketChat/Rocket.Chat/pull/23739)) +- Await promise to handle error when attempting to transfer a room ([#23739](https://github.com/RocketChat/Rocket.Chat/pull/23739) by [@KevLehman](https://github.com/KevLehman)) - broken avatar preview when changing avatar ([#23659](https://github.com/RocketChat/Rocket.Chat/pull/23659) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) @@ -2805,43 +2880,43 @@ - Fix typo in FR translation ([#23711](https://github.com/RocketChat/Rocket.Chat/pull/23711) by [@Cormoran96](https://github.com/Cormoran96)) -- Fixed E2E default room settings not being honoured ([#23468](https://github.com/RocketChat/Rocket.Chat/pull/23468) by [@TheDigitalEagle](https://github.com/TheDigitalEagle) & [@ostjen](https://github.com/ostjen)) +- Fixed E2E default room settings not being honoured ([#23468](https://github.com/RocketChat/Rocket.Chat/pull/23468) by [@TheDigitalEagle](https://github.com/TheDigitalEagle) & [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- LDAP users being disabled when an AD security policy is enabled ([#23820](https://github.com/RocketChat/Rocket.Chat/pull/23820)) +- LDAP users being disabled when an AD security policy is enabled ([#23820](https://github.com/RocketChat/Rocket.Chat/pull/23820) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627)) +- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Missing user roles in edit user tab ([#23734](https://github.com/RocketChat/Rocket.Chat/pull/23734)) -- New specific endpoint for contactChatHistoryMessages with right permissions ([#23533](https://github.com/RocketChat/Rocket.Chat/pull/23533)) +- New specific endpoint for contactChatHistoryMessages with right permissions ([#23533](https://github.com/RocketChat/Rocket.Chat/pull/23533) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) Anyone with 'View Omnichannel Rooms' permission can see the History Messages. -- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487)) +- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add a migration to update the `Accounts_Default_User_Preferences_pushNotifications` setting's value to the `Accounts_Default_User_Preferences_mobileNotifications` setting's value; - Remove the `Accounts_Default_User_Preferences_mobileNotifications` setting (replaced by `Accounts_Default_User_Preferences_pushNotifications`); - Rename 'mobileNotifications' user's preference to 'pushNotifications'. -- Omnichannel business hours page breaking navigation ([#23595](https://github.com/RocketChat/Rocket.Chat/pull/23595) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) +- Omnichannel business hours page breaking navigation ([#23595](https://github.com/RocketChat/Rocket.Chat/pull/23595) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Omnichannel contact center navigation ([#23691](https://github.com/RocketChat/Rocket.Chat/pull/23691)) +- Omnichannel contact center navigation ([#23691](https://github.com/RocketChat/Rocket.Chat/pull/23691) by [@tiagoevanp](https://github.com/tiagoevanp)) Derives from: https://github.com/RocketChat/Rocket.Chat/pull/23656 This PR includes a different approach to solving navigation problems following the same code structure and UI definitions of other "ActionButtons" components in Sidebar. -- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587)) +- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587) by [@KevLehman](https://github.com/KevLehman)) - Omnichannel webhooks can't be saved ([#23641](https://github.com/RocketChat/Rocket.Chat/pull/23641) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) -- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661)) +- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661) by [@renatobecker](https://github.com/renatobecker)) -- PhotoSwipe crashing on show ([#23499](https://github.com/RocketChat/Rocket.Chat/pull/23499)) +- PhotoSwipe crashing on show ([#23499](https://github.com/RocketChat/Rocket.Chat/pull/23499) by [@tassoevan](https://github.com/tassoevan)) Waits for initial content to load before showing it. -- Prevent UserAction.addStream without Subscription ([#23705](https://github.com/RocketChat/Rocket.Chat/pull/23705)) +- Prevent UserAction.addStream without Subscription ([#23705](https://github.com/RocketChat/Rocket.Chat/pull/23705) by [@tiagoevanp](https://github.com/tiagoevanp)) When you take an Omnichannel chat from queue, the guest's typing information will appear. @@ -2851,19 +2926,19 @@ 🔍 Minor changes -- Chore: add `no-bidi` rule ([#23695](https://github.com/RocketChat/Rocket.Chat/pull/23695)) +- Chore: add `no-bidi` rule ([#23695](https://github.com/RocketChat/Rocket.Chat/pull/23695) by [@KevLehman](https://github.com/KevLehman)) -- Chore: add index on appId + associations for apps_persistence collection ([#23675](https://github.com/RocketChat/Rocket.Chat/pull/23675)) +- Chore: add index on appId + associations for apps_persistence collection ([#23675](https://github.com/RocketChat/Rocket.Chat/pull/23675) by [@KevLehman](https://github.com/KevLehman)) -- Chore: Api definitions ([#23701](https://github.com/RocketChat/Rocket.Chat/pull/23701)) +- Chore: Api definitions ([#23701](https://github.com/RocketChat/Rocket.Chat/pull/23701) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Bump Rocket.Chat@livechat to 1.10 ([#23768](https://github.com/RocketChat/Rocket.Chat/pull/23768)) +- Chore: Bump Rocket.Chat@livechat to 1.10 ([#23768](https://github.com/RocketChat/Rocket.Chat/pull/23768) by [@KevLehman](https://github.com/KevLehman)) - Chore: Convert Fiber models to async Step 1 ([#23633](https://github.com/RocketChat/Rocket.Chat/pull/23633)) - Chore: Generic Table ([#23745](https://github.com/RocketChat/Rocket.Chat/pull/23745)) -- Chore: Mocha testing configuration ([#23706](https://github.com/RocketChat/Rocket.Chat/pull/23706)) +- Chore: Mocha testing configuration ([#23706](https://github.com/RocketChat/Rocket.Chat/pull/23706) by [@KevLehman](https://github.com/KevLehman) & [@tassoevan](https://github.com/tassoevan)) We've been writing integration tests for the REST API quite regularly, but we can't say the same for UI-related modules. This PR is based on the assumption that _improving the developer experience on writing tests_ would increase our coverage and promote the adoption even for newcomers. @@ -2887,7 +2962,7 @@ - Enable JSX support on our default Babel configuration; - Adopt [testing library](https://testing-library.com/). -- Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452)) +- Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452) by [@tassoevan](https://github.com/tassoevan)) - Move all external module declarations (definitions and augmentations) to `/definition/externals`; - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; @@ -2895,9 +2970,9 @@ - Chore: Remove duplicated 'name' key from rate limiter logs ([#23771](https://github.com/RocketChat/Rocket.Chat/pull/23771)) -- Chore: Remove useCallbacks ([#23696](https://github.com/RocketChat/Rocket.Chat/pull/23696)) +- Chore: Remove useCallbacks ([#23696](https://github.com/RocketChat/Rocket.Chat/pull/23696) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Type omnichannel models ([#23758](https://github.com/RocketChat/Rocket.Chat/pull/23758)) +- Chore: Type omnichannel models ([#23758](https://github.com/RocketChat/Rocket.Chat/pull/23758) by [@KevLehman](https://github.com/KevLehman)) - Chore: Update settings.ts ([#23769](https://github.com/RocketChat/Rocket.Chat/pull/23769)) @@ -2909,7 +2984,7 @@ - Regression: Units endpoint to TS ([#23757](https://github.com/RocketChat/Rocket.Chat/pull/23757)) -- Regression: "When is the chat busier" and "Users by time of day" charts are not working ([#23815](https://github.com/RocketChat/Rocket.Chat/pull/23815)) +- Regression: "When is the chat busier" and "Users by time of day" charts are not working ([#23815](https://github.com/RocketChat/Rocket.Chat/pull/23815) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix "When is the chat busier" (Hours) and "Users by time of day" charts, which weren't displaying any data; @@ -2917,7 +2992,7 @@ - Regression: Add trash to raw models ([#23774](https://github.com/RocketChat/Rocket.Chat/pull/23774)) -- Regression: Current Chats not Filtering ([#23803](https://github.com/RocketChat/Rocket.Chat/pull/23803)) +- Regression: Current Chats not Filtering ([#23803](https://github.com/RocketChat/Rocket.Chat/pull/23803) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Fix incorrect API path for livechat calls ([#23778](https://github.com/RocketChat/Rocket.Chat/pull/23778)) @@ -2925,7 +3000,7 @@ - Regression: Fix sendMessagesToAdmins not in Fiber ([#23770](https://github.com/RocketChat/Rocket.Chat/pull/23770)) -- Regression: Fix sort param on omnichannel endpoints ([#23789](https://github.com/RocketChat/Rocket.Chat/pull/23789)) +- Regression: Fix sort param on omnichannel endpoints ([#23789](https://github.com/RocketChat/Rocket.Chat/pull/23789) by [@KevLehman](https://github.com/KevLehman)) - Regression: Improve AggregationCursor types ([#23692](https://github.com/RocketChat/Rocket.Chat/pull/23692)) @@ -2943,29 +3018,29 @@ - [@Cormoran96](https://github.com/Cormoran96) - [@Deepak-learner](https://github.com/Deepak-learner) - [@Jeanstaquet](https://github.com/Jeanstaquet) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@TheDigitalEagle](https://github.com/TheDigitalEagle) - [@bhardwajaditya](https://github.com/bhardwajaditya) +- [@cauefcr](https://github.com/cauefcr) - [@dhruvjain99](https://github.com/dhruvjain99) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@cauefcr](https://github.com/cauefcr) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) # 4.1.2 `2021-11-08 · 3 🐛 · 3 👩‍💻👨‍💻` @@ -2979,17 +3054,17 @@ ### 🐛 Bug fixes -- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487)) +- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add a migration to update the `Accounts_Default_User_Preferences_pushNotifications` setting's value to the `Accounts_Default_User_Preferences_mobileNotifications` setting's value; - Remove the `Accounts_Default_User_Preferences_mobileNotifications` setting (replaced by `Accounts_Default_User_Preferences_pushNotifications`); - Rename 'mobileNotifications' user's preference to 'pushNotifications'. -- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587)) +- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587) by [@KevLehman](https://github.com/KevLehman)) -- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661)) +- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) - [@matheusbsilva137](https://github.com/matheusbsilva137) @@ -3007,20 +3082,23 @@ ### 🐛 Bug fixes -- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608)) +- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - App update flow failing in HA setups ([#23607](https://github.com/RocketChat/Rocket.Chat/pull/23607)) The flow for app updates is broken in specific scenarios with HA setups. Here we change the method calls in the Apps-Engine to avoid race conditions -- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627)) +- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) +### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.1.0 @@ -3044,14 +3122,14 @@ Added markdown to custom fields to render links -- Allow Omnichannel to handle huge queues ([#23392](https://github.com/RocketChat/Rocket.Chat/pull/23392)) +- Allow Omnichannel to handle huge queues ([#23392](https://github.com/RocketChat/Rocket.Chat/pull/23392) by [@KevLehman](https://github.com/KevLehman)) - Make Livechat Instructions setting multi-line ([#23515](https://github.com/RocketChat/Rocket.Chat/pull/23515)) Since now we're supporting markdown text on this field (via this PR - https://github.com/RocketChat/Rocket.Chat.Livechat/pull/648), it would be nice to make this setting multiline so users can have more space to edit the text ![image](https://user-images.githubusercontent.com/34130764/138146712-13e4968b-5312-4d53-b44c-b5699c5e49c1.png) -- optimized groups.listAll response time ([#22941](https://github.com/RocketChat/Rocket.Chat/pull/22941) by [@ostjen](https://github.com/ostjen)) +- optimized groups.listAll response time ([#22941](https://github.com/RocketChat/Rocket.Chat/pull/22941) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) groups.listAll endpoint was having performance issues, specially when the total number of groups was high. This happened because the endpoint was loading all objects in memory then using splice to paginate, instead of paginating beforehand. @@ -3066,14 +3144,14 @@ ### 🐛 Bug fixes -- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) +- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418) by [@thassiov](https://github.com/thassiov)) - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. - **ENTERPRISE:** Omnichannel agent is not leaving the room when a forwarded chat is queued ([#23404](https://github.com/RocketChat/Rocket.Chat/pull/23404)) -- Admins can't update or reset user avatars when the "Allow User Avatar Change" setting is off ([#23228](https://github.com/RocketChat/Rocket.Chat/pull/23228)) +- Admins can't update or reset user avatars when the "Allow User Avatar Change" setting is off ([#23228](https://github.com/RocketChat/Rocket.Chat/pull/23228) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Allow admins (or any other user with the `edit-other-user-avatar` permission) to update or reset user avatars even when the "Allow User Avatar Change" setting is off. @@ -3087,13 +3165,13 @@ Fixes BigBlueButton integration -- Delay start of email inbox ([#23521](https://github.com/RocketChat/Rocket.Chat/pull/23521)) +- Delay start of email inbox ([#23521](https://github.com/RocketChat/Rocket.Chat/pull/23521) by [@KevLehman](https://github.com/KevLehman)) - imported migration v240 ([#23374](https://github.com/RocketChat/Rocket.Chat/pull/23374) by [@ostjen](https://github.com/ostjen)) - LDAP not stoping after wrong password ([#23382](https://github.com/RocketChat/Rocket.Chat/pull/23382)) -- Markdown quote message style ([#23462](https://github.com/RocketChat/Rocket.Chat/pull/23462)) +- Markdown quote message style ([#23462](https://github.com/RocketChat/Rocket.Chat/pull/23462) by [@tiagoevanp](https://github.com/tiagoevanp)) Before: ![image](https://user-images.githubusercontent.com/17487063/137496669-3abecab4-cf90-45cb-8b1b-d9411a5682dd.png) @@ -3105,7 +3183,7 @@ - MongoDB deprecation link ([#23381](https://github.com/RocketChat/Rocket.Chat/pull/23381)) -- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541)) +- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Omni-Webhook's retry mechanism going in infinite loop ([#23394](https://github.com/RocketChat/Rocket.Chat/pull/23394)) @@ -3113,7 +3191,7 @@ Whenever the Routing system setting changes, and omnichannel is disabled, then we shouldn't start the queue. -- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522)) +- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522) by [@KevLehman](https://github.com/KevLehman)) - Read only description in team creation ([#23213](https://github.com/RocketChat/Rocket.Chat/pull/23213)) @@ -3123,24 +3201,24 @@ - resumeToken not working ([#23379](https://github.com/RocketChat/Rocket.Chat/pull/23379)) -- Rewrite missing webRTC feature ([#23172](https://github.com/RocketChat/Rocket.Chat/pull/23172)) +- Rewrite missing webRTC feature ([#23172](https://github.com/RocketChat/Rocket.Chat/pull/23172) by [@tassoevan](https://github.com/tassoevan)) -- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) +- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event; -- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) +- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473) by [@KevLehman](https://github.com/KevLehman)) -- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen)) +- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- useEndpointAction replace by useEndpointActionExperimental ([#23469](https://github.com/RocketChat/Rocket.Chat/pull/23469)) +- useEndpointAction replace by useEndpointActionExperimental ([#23469](https://github.com/RocketChat/Rocket.Chat/pull/23469) by [@tiagoevanp](https://github.com/tiagoevanp)) - user/agent upload not working via Apps Engine after 3.16.0 ([#23393](https://github.com/RocketChat/Rocket.Chat/pull/23393)) Fixes #22974 -- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378)) +- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Update `roles` and `type` fields only if they are specified in the data imported from LDAP (otherwise, no changes are applied). @@ -3154,25 +3232,25 @@ - Chore: clean README ([#23342](https://github.com/RocketChat/Rocket.Chat/pull/23342) by [@AbhJ](https://github.com/AbhJ)) -- Chore: Document REST API endpoints (banners) ([#23361](https://github.com/RocketChat/Rocket.Chat/pull/23361)) +- Chore: Document REST API endpoints (banners) ([#23361](https://github.com/RocketChat/Rocket.Chat/pull/23361) by [@tassoevan](https://github.com/tassoevan)) Describes endpoints for banners on REST API using a JSDoc annotation compatible with OpenAPI spec. -- Chore: Document REST API endpoints (DNS) ([#23405](https://github.com/RocketChat/Rocket.Chat/pull/23405)) +- Chore: Document REST API endpoints (DNS) ([#23405](https://github.com/RocketChat/Rocket.Chat/pull/23405) by [@tassoevan](https://github.com/tassoevan)) Describes endpoints for DNS on REST API using a JSDoc annotation compatible with OpenAPI spec. -- Chore: Document REST API endpoints (E2E) ([#23430](https://github.com/RocketChat/Rocket.Chat/pull/23430)) +- Chore: Document REST API endpoints (E2E) ([#23430](https://github.com/RocketChat/Rocket.Chat/pull/23430) by [@tassoevan](https://github.com/tassoevan)) Describes endpoints for end-to-end encryption on REST API using a JSDoc annotation compatible with OpenAPI spec. -- Chore: Document REST API endpoints (Misc) ([#23428](https://github.com/RocketChat/Rocket.Chat/pull/23428)) +- Chore: Document REST API endpoints (Misc) ([#23428](https://github.com/RocketChat/Rocket.Chat/pull/23428) by [@tassoevan](https://github.com/tassoevan)) Describes miscellaneous endpoints on REST API using a JSDoc annotation compatible with OpenAPI spec. - Chore: Ensure all permissions are created up to this point ([#23514](https://github.com/RocketChat/Rocket.Chat/pull/23514)) -- Chore: Fix some TS warnings ([#23524](https://github.com/RocketChat/Rocket.Chat/pull/23524)) +- Chore: Fix some TS warnings ([#23524](https://github.com/RocketChat/Rocket.Chat/pull/23524) by [@KevLehman](https://github.com/KevLehman)) - Chore: Fixed a Typo in 11-admin.js test ([#23355](https://github.com/RocketChat/Rocket.Chat/pull/23355) by [@badbart](https://github.com/badbart)) @@ -3180,31 +3258,31 @@ Just prevent to perform 200 deletions for registers that not even exist -- Chore: Make omnichannel settings dependent on omnichannel being enabled ([#23495](https://github.com/RocketChat/Rocket.Chat/pull/23495)) +- Chore: Make omnichannel settings dependent on omnichannel being enabled ([#23495](https://github.com/RocketChat/Rocket.Chat/pull/23495) by [@KevLehman](https://github.com/KevLehman)) -- Chore: Migrate some React components/hooks to TypeScript ([#23370](https://github.com/RocketChat/Rocket.Chat/pull/23370)) +- Chore: Migrate some React components/hooks to TypeScript ([#23370](https://github.com/RocketChat/Rocket.Chat/pull/23370) by [@tassoevan](https://github.com/tassoevan)) Just low-hanging fruits. -- Chore: Move `addMinutesToADate` helper ([#23490](https://github.com/RocketChat/Rocket.Chat/pull/23490)) +- Chore: Move `addMinutesToADate` helper ([#23490](https://github.com/RocketChat/Rocket.Chat/pull/23490) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Move `isEmail` helper ([#23489](https://github.com/RocketChat/Rocket.Chat/pull/23489)) +- Chore: Move `isEmail` helper ([#23489](https://github.com/RocketChat/Rocket.Chat/pull/23489) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Move `isJSON` helper ([#23491](https://github.com/RocketChat/Rocket.Chat/pull/23491)) +- Chore: Move `isJSON` helper ([#23491](https://github.com/RocketChat/Rocket.Chat/pull/23491) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Move components away from /app/ ([#23360](https://github.com/RocketChat/Rocket.Chat/pull/23360)) +- Chore: Move components away from /app/ ([#23360](https://github.com/RocketChat/Rocket.Chat/pull/23360) by [@tassoevan](https://github.com/tassoevan)) We currently do NOT recommend placing React components under `/app`. -- Chore: Partially migrate 2FA client code to TypeScript ([#23419](https://github.com/RocketChat/Rocket.Chat/pull/23419)) +- Chore: Partially migrate 2FA client code to TypeScript ([#23419](https://github.com/RocketChat/Rocket.Chat/pull/23419) by [@tassoevan](https://github.com/tassoevan)) Additionally, hides `toastr` behind an module to handle UI's toast notifications. -- Chore: Remove dangling README file ([#23385](https://github.com/RocketChat/Rocket.Chat/pull/23385)) +- Chore: Remove dangling README file ([#23385](https://github.com/RocketChat/Rocket.Chat/pull/23385) by [@tassoevan](https://github.com/tassoevan)) Removes the elderly `server/restapi/README.md`. -- Chore: Replace `promises` helper ([#23488](https://github.com/RocketChat/Rocket.Chat/pull/23488)) +- Chore: Replace `promises` helper ([#23488](https://github.com/RocketChat/Rocket.Chat/pull/23488) by [@tassoevan](https://github.com/tassoevan)) - Chore: Startup Time ([#23210](https://github.com/RocketChat/Rocket.Chat/pull/23210)) @@ -3220,23 +3298,23 @@ - Chore: Update Apps-Engine version ([#23375](https://github.com/RocketChat/Rocket.Chat/pull/23375)) -- Chore: Update Livechat Package ([#23523](https://github.com/RocketChat/Rocket.Chat/pull/23523)) +- Chore: Update Livechat Package ([#23523](https://github.com/RocketChat/Rocket.Chat/pull/23523) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Chore: Update pino and pino-pretty ([#23510](https://github.com/RocketChat/Rocket.Chat/pull/23510)) -- Chore: Upgrade Storybook ([#23364](https://github.com/RocketChat/Rocket.Chat/pull/23364)) +- Chore: Upgrade Storybook ([#23364](https://github.com/RocketChat/Rocket.Chat/pull/23364) by [@tassoevan](https://github.com/tassoevan)) -- i18n: Language update from LingoHub 🤖 on 2021-10-18Z ([#23486](https://github.com/RocketChat/Rocket.Chat/pull/23486)) +- i18n: Language update from LingoHub 🤖 on 2021-10-18Z ([#23486](https://github.com/RocketChat/Rocket.Chat/pull/23486) by [@KevLehman](https://github.com/KevLehman)) - Merge master into develop & Set version to 4.1.0-develop ([#23362](https://github.com/RocketChat/Rocket.Chat/pull/23362)) -- Regression: Debounce call based on params on omnichannel queue dispatch ([#23577](https://github.com/RocketChat/Rocket.Chat/pull/23577)) +- Regression: Debounce call based on params on omnichannel queue dispatch ([#23577](https://github.com/RocketChat/Rocket.Chat/pull/23577) by [@KevLehman](https://github.com/KevLehman)) - Regression: Fix enterprise setting validation ([#23519](https://github.com/RocketChat/Rocket.Chat/pull/23519)) - Regression: Fix user typings style ([#23511](https://github.com/RocketChat/Rocket.Chat/pull/23511)) -- Regression: Mail body contains `undefined` text ([#23552](https://github.com/RocketChat/Rocket.Chat/pull/23552)) +- Regression: Mail body contains `undefined` text ([#23552](https://github.com/RocketChat/Rocket.Chat/pull/23552) by [@tassoevan](https://github.com/tassoevan)) ### Before ![image](https://user-images.githubusercontent.com/2263066/138733018-10449892-5c2d-46fb-9355-00e98e0d6c9f.png) @@ -3248,11 +3326,11 @@ - Regression: Prevent Settings Unit Test Error ([#23506](https://github.com/RocketChat/Rocket.Chat/pull/23506)) -- Regression: Routing method not available when called from listeners at startup ([#23568](https://github.com/RocketChat/Rocket.Chat/pull/23568)) +- Regression: Routing method not available when called from listeners at startup ([#23568](https://github.com/RocketChat/Rocket.Chat/pull/23568) by [@KevLehman](https://github.com/KevLehman)) - Regression: Settings order ([#23528](https://github.com/RocketChat/Rocket.Chat/pull/23528)) -- Regression: Waiting_queue setting not being applied due to missing module key ([#23531](https://github.com/RocketChat/Rocket.Chat/pull/23531)) +- Regression: Waiting_queue setting not being applied due to missing module key ([#23531](https://github.com/RocketChat/Rocket.Chat/pull/23531) by [@KevLehman](https://github.com/KevLehman)) - Regression: watchByRegex without Fibers ([#23529](https://github.com/RocketChat/Rocket.Chat/pull/23529)) @@ -3264,29 +3342,29 @@ - [@AbhJ](https://github.com/AbhJ) - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@badbart](https://github.com/badbart) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@dependabot[bot]](https://github.com/dependabot[bot]) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Sing-Li](https://github.com/Sing-Li) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.0.5 @@ -3301,19 +3379,22 @@ ### 🐛 Bug fixes -- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541)) +- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
🔍 Minor changes -- Release 4.0.5 ([#23554](https://github.com/RocketChat/Rocket.Chat/pull/23554)) +- Release 4.0.5 ([#23554](https://github.com/RocketChat/Rocket.Chat/pull/23554) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 4.0.4 @@ -3328,9 +3409,9 @@ ### 🐛 Bug fixes -- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522)) +- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522) by [@KevLehman](https://github.com/KevLehman)) -- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) +- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event; @@ -3339,15 +3420,18 @@ 🔍 Minor changes -- Release 4.0.4 ([#23532](https://github.com/RocketChat/Rocket.Chat/pull/23532)) +- Release 4.0.4 ([#23532](https://github.com/RocketChat/Rocket.Chat/pull/23532) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) - [@matheusbsilva137](https://github.com/matheusbsilva137) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 4.0.3 @@ -3362,27 +3446,30 @@ ### 🐛 Bug fixes -- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) +- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418) by [@thassiov](https://github.com/thassiov)) - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. -- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) +- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes -- Release 4.0.3 ([#23496](https://github.com/RocketChat/Rocket.Chat/pull/23496)) +- Release 4.0.3 ([#23496](https://github.com/RocketChat/Rocket.Chat/pull/23496) by [@KevLehman](https://github.com/KevLehman) & [@thassiov](https://github.com/thassiov))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) -- [@sampaiodiego](https://github.com/sampaiodiego) - [@thassiov](https://github.com/thassiov) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@sampaiodiego](https://github.com/sampaiodiego) + # 4.0.2 `2021-10-14 · 4 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` @@ -3448,9 +3535,9 @@ - resumeToken not working ([#23379](https://github.com/RocketChat/Rocket.Chat/pull/23379)) -- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen)) +- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378)) +- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Update `roles` and `type` fields only if they are specified in the data imported from LDAP (otherwise, no changes are applied). @@ -3460,22 +3547,22 @@ - Chore: Update Apps-Engine version ([#23375](https://github.com/RocketChat/Rocket.Chat/pull/23375)) -- Release 4.0.1 ([#23386](https://github.com/RocketChat/Rocket.Chat/pull/23386) by [@ostjen](https://github.com/ostjen) & [@wolbernd](https://github.com/wolbernd)) +- Release 4.0.1 ([#23386](https://github.com/RocketChat/Rocket.Chat/pull/23386) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen) & [@wolbernd](https://github.com/wolbernd)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) +- [@tassoevan](https://github.com/tassoevan) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 4.0.0 `2021-10-01 · 15 ️️️⚠️ · 4 🎉 · 11 🚀 · 24 🐛 · 67 🔍 · 26 👩‍💻👨‍💻` @@ -3489,33 +3576,33 @@ ### ⚠️ BREAKING CHANGES -- **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013)) +- **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; - Split the data in multiple CSV files. -- **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014)) +- **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Fix CSV file downloaded in the Engagement Dashboard's New Users section; - Add column headers to the CSV file downloaded from the Engagement Dashboard's New Users section. -- **ENTERPRISE:** Missing headers in CSV files downloaded from the Engagement Dashboard ([#23223](https://github.com/RocketChat/Rocket.Chat/pull/23223)) +- **ENTERPRISE:** Missing headers in CSV files downloaded from the Engagement Dashboard ([#23223](https://github.com/RocketChat/Rocket.Chat/pull/23223) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Add headers to all CSV files downloaded from the "Messages" and "Channels" tabs from the Engagement Dashboard; - Add headers to the CSV file downloaded from the "Users by time of day" section (in the "Users" tab). -- LDAP Refactoring ([#23171](https://github.com/RocketChat/Rocket.Chat/pull/23171)) +- LDAP Refactoring ([#23171](https://github.com/RocketChat/Rocket.Chat/pull/23171) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Moved advanced oAuth features to EE ([#23201](https://github.com/RocketChat/Rocket.Chat/pull/23201) by [@ostjen](https://github.com/ostjen)) +- Moved advanced oAuth features to EE ([#23201](https://github.com/RocketChat/Rocket.Chat/pull/23201) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Moved role-sync and advanced SAML settings to EE ([#23107](https://github.com/RocketChat/Rocket.Chat/pull/23107) by [@ostjen](https://github.com/ostjen)) +- Moved role-sync and advanced SAML settings to EE ([#23107](https://github.com/RocketChat/Rocket.Chat/pull/23107) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Moved SAML custom field map to EE ([#23319](https://github.com/RocketChat/Rocket.Chat/pull/23319) by [@ostjen](https://github.com/ostjen)) - Remove cordova compatibility setting ([#23302](https://github.com/RocketChat/Rocket.Chat/pull/23302) by [@ostjen](https://github.com/ostjen)) -- Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162)) +- Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162) by [@tassoevan](https://github.com/tassoevan)) The following REST endpoints were removed: @@ -3540,7 +3627,7 @@ This aims to clean up the code, since upgrades jumping 2 major versions are too risky and hard to maintain, we'll keep only migration from that last major (in this case 3.x). -- Remove patch info from endpoint /api/info for non-logged in users ([#16050](https://github.com/RocketChat/Rocket.Chat/pull/16050)) +- Remove patch info from endpoint /api/info for non-logged in users ([#16050](https://github.com/RocketChat/Rocket.Chat/pull/16050) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) - Removed support of MongoDB 3.4; Deprecated MongoDB 3.6 and 4.0 ([#22907](https://github.com/RocketChat/Rocket.Chat/pull/22907) by [@ostjen](https://github.com/ostjen)) @@ -3563,17 +3650,17 @@ ### 🎉 New features -- **APPS:** Get livechat's room transcript via bridge method ([#22985](https://github.com/RocketChat/Rocket.Chat/pull/22985)) +- **APPS:** Get livechat's room transcript via bridge method ([#22985](https://github.com/RocketChat/Rocket.Chat/pull/22985) by [@thassiov](https://github.com/thassiov)) Adds a new method for retrieving a room's transcript via a new method in the Livechat bridge - Add activity indicators for Uploading and Recording using new API; Support thread context; Deprecate the old typing API ([#22392](https://github.com/RocketChat/Rocket.Chat/pull/22392) by [@sumukhah](https://github.com/sumukhah)) -- Omnichannel source identification fields ([#23090](https://github.com/RocketChat/Rocket.Chat/pull/23090)) +- Omnichannel source identification fields ([#23090](https://github.com/RocketChat/Rocket.Chat/pull/23090) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) This PR adds new fields to the room schema that aids in the identification of the source that created an Omnichannel room, which can be either via livechat widget, SMS, app, etc. -- Seats Cap ([#23017](https://github.com/RocketChat/Rocket.Chat/pull/23017) by [@g-thome](https://github.com/g-thome)) +- Seats Cap ([#23017](https://github.com/RocketChat/Rocket.Chat/pull/23017) by [@g-thome](https://github.com/g-thome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) - Adding New Members - Awareness of seats usage while adding new members @@ -3597,7 +3684,7 @@ ### 🚀 Improvements -- **APPS:** New storage strategy for Apps-Engine file packages ([#22657](https://github.com/RocketChat/Rocket.Chat/pull/22657)) +- **APPS:** New storage strategy for Apps-Engine file packages ([#22657](https://github.com/RocketChat/Rocket.Chat/pull/22657) by [@thassiov](https://github.com/thassiov)) This is an enabler for our initiative to support NPM packages in the Apps-Engine. @@ -3605,23 +3692,23 @@ When we allow apps to include NPM packages, the size of the App package itself will be potentially _very large_ (I'm looking at you `node_modules`). Thus we'll be changing the strategy to store apps either with GridFS or the host's File System itself. -- **APPS:** Return task ids when using the scheduler api ([#23023](https://github.com/RocketChat/Rocket.Chat/pull/23023)) +- **APPS:** Return task ids when using the scheduler api ([#23023](https://github.com/RocketChat/Rocket.Chat/pull/23023) by [@thassiov](https://github.com/thassiov)) In the methods that create tasks (`scheduleRecurring` and `scheduleOnce`) return the `id` of the document created in the database so the user can cancel each task individually. - Add missing pt-BR translations, fix typos and unify language ([#23176](https://github.com/RocketChat/Rocket.Chat/pull/23176) by [@gabrieloliverio](https://github.com/gabrieloliverio)) -- Better text for auth banner ([#23256](https://github.com/RocketChat/Rocket.Chat/pull/23256) by [@g-thome](https://github.com/g-thome)) +- Better text for auth banner ([#23256](https://github.com/RocketChat/Rocket.Chat/pull/23256) by [@g-thome](https://github.com/g-thome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) Change the text in the banner warning for auth changes -- Canned response admin settings ([#23190](https://github.com/RocketChat/Rocket.Chat/pull/23190)) +- Canned response admin settings ([#23190](https://github.com/RocketChat/Rocket.Chat/pull/23190) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) - Change log format to JSON ([#22975](https://github.com/RocketChat/Rocket.Chat/pull/22975)) -- Change occurences of Livechat to Omnichannel in ES translations were applicable ([#23199](https://github.com/RocketChat/Rocket.Chat/pull/23199)) +- Change occurences of Livechat to Omnichannel in ES translations were applicable ([#23199](https://github.com/RocketChat/Rocket.Chat/pull/23199) by [@KevLehman](https://github.com/KevLehman)) -- Do not re-create General room on every server start ([#22957](https://github.com/RocketChat/Rocket.Chat/pull/22957)) +- Do not re-create General room on every server start ([#22957](https://github.com/RocketChat/Rocket.Chat/pull/22957) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137)) - Check the `Show_Setup_Wizard` Setting's value to control whether the general room should be created. This channel will only be created if the `Show_Setup_Wizard` Setting is 'pending'. @@ -3631,42 +3718,42 @@ - Throw error if no appId is provided to useUIKitHandleAction ([#23221](https://github.com/RocketChat/Rocket.Chat/pull/23221)) -- Use PaginatedSelectFiltered in department edition ([#23054](https://github.com/RocketChat/Rocket.Chat/pull/23054)) +- Use PaginatedSelectFiltered in department edition ([#23054](https://github.com/RocketChat/Rocket.Chat/pull/23054) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) ### 🐛 Bug fixes -- "Parent channel or group" search in discussions' creation throws "Unexpected end of JSON input" error ([#23076](https://github.com/RocketChat/Rocket.Chat/pull/23076)) +- "Parent channel or group" search in discussions' creation throws "Unexpected end of JSON input" error ([#23076](https://github.com/RocketChat/Rocket.Chat/pull/23076) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Use `encodeURIComponent()` to encode values received by `_generateQueryFromParams()`. -- "Read Only" and "Allow Reacting" system messages are missing in rooms ([#23037](https://github.com/RocketChat/Rocket.Chat/pull/23037) by [@ostjen](https://github.com/ostjen)) +- "Read Only" and "Allow Reacting" system messages are missing in rooms ([#23037](https://github.com/RocketChat/Rocket.Chat/pull/23037) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen)) - Add system message to notify changes on the **"Read Only"** setting; - Add system message to notify changes on the **"Allow Reacting"** setting; - Fix "Allow Reacting" setting's description (updated from "Only authorized users can write new messages" to "Only authorized users can react to messages"). ![system-messages](https://user-images.githubusercontent.com/36537004/130883527-9eb47fcd-c8e5-41fb-af34-5d99bd0a6780.PNG) -- Add check before placing chat on-hold to confirm that contact sent last message ([#23053](https://github.com/RocketChat/Rocket.Chat/pull/23053)) +- Add check before placing chat on-hold to confirm that contact sent last message ([#23053](https://github.com/RocketChat/Rocket.Chat/pull/23053) by [@KevLehman](https://github.com/KevLehman)) -- Add missing custom fields to apps' users converter ([#21176](https://github.com/RocketChat/Rocket.Chat/pull/21176) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) +- Add missing custom fields to apps' users converter ([#21176](https://github.com/RocketChat/Rocket.Chat/pull/21176) by [@casalsgh](https://github.com/casalsgh) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@thassiov](https://github.com/thassiov)) -- Avoid bots to be marked as unavailable when log off/login ([#23262](https://github.com/RocketChat/Rocket.Chat/pull/23262)) +- Avoid bots to be marked as unavailable when log off/login ([#23262](https://github.com/RocketChat/Rocket.Chat/pull/23262) by [@KevLehman](https://github.com/KevLehman)) -- Can't edit profile information if any field update setting is disabled ([#23110](https://github.com/RocketChat/Rocket.Chat/pull/23110)) +- Can't edit profile information if any field update setting is disabled ([#23110](https://github.com/RocketChat/Rocket.Chat/pull/23110) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137)) - Check which fields have been updated before throwing errors in `validateUserEditing`. -- Inaccurate use of 'Mobile notifications' instead of 'Push notifications' in i18n strings ([#22978](https://github.com/RocketChat/Rocket.Chat/pull/22978) by [@ostjen](https://github.com/ostjen)) +- Inaccurate use of 'Mobile notifications' instead of 'Push notifications' in i18n strings ([#22978](https://github.com/RocketChat/Rocket.Chat/pull/22978) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen)) - Fix inaccurate use of 'Mobile notifications' (which is misleading in German) by 'Push notifications'; - Update `'Notification_Mobile_Default_For'` key to `'Notification_Push_Default_For'` (and text to 'Send Push Notifications For' for English Language); - Update `'Accounts_Default_User_Preferences_mobileNotifications'` key to `'Accounts_Default_User_Preferences_pushNotifications'`; - Update `'Mobile_Notifications_Default_Alert'` key to `'Mobile_Push_Notifications_Default_Alert'`; -- Logging out from other clients ([#23276](https://github.com/RocketChat/Rocket.Chat/pull/23276)) +- Logging out from other clients ([#23276](https://github.com/RocketChat/Rocket.Chat/pull/23276) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Mark agents as unavailable when they logout ([#23219](https://github.com/RocketChat/Rocket.Chat/pull/23219)) +- Mark agents as unavailable when they logout ([#23219](https://github.com/RocketChat/Rocket.Chat/pull/23219) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) - Modals is cutting pixels of the content ([#23243](https://github.com/RocketChat/Rocket.Chat/pull/23243)) @@ -3675,9 +3762,9 @@ - Omnichannel On hold chats being forwarded to offline agents ([#23185](https://github.com/RocketChat/Rocket.Chat/pull/23185)) -- Omnichannel transcript button without user's email ([#23150](https://github.com/RocketChat/Rocket.Chat/pull/23150)) +- Omnichannel transcript button without user's email ([#23150](https://github.com/RocketChat/Rocket.Chat/pull/23150) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Prevent users to edit an existing role when adding a new one with the same name used before. ([#22407](https://github.com/RocketChat/Rocket.Chat/pull/22407) by [@lucassartor](https://github.com/lucassartor)) +- Prevent users to edit an existing role when adding a new one with the same name used before. ([#22407](https://github.com/RocketChat/Rocket.Chat/pull/22407) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) ### before ![Peek 2021-07-13 16-31](https://user-images.githubusercontent.com/27704687/125513721-953d84f4-1c95-45ca-80e1-b00992b874f6.gif) @@ -3685,16 +3772,16 @@ ### after ![Peek 2021-07-13 16-34](https://user-images.githubusercontent.com/27704687/125514098-91ee8014-51e5-4c62-9027-5538acf57d08.gif) -- Remove doubled "Canned Responses" strings ([#23056](https://github.com/RocketChat/Rocket.Chat/pull/23056)) +- Remove doubled "Canned Responses" strings ([#23056](https://github.com/RocketChat/Rocket.Chat/pull/23056) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Remove doubled canned response setting introduced in #22703 (by setting id change); - Update "Canned Responses" keys to "Canned_Responses". -- Remove margin from quote inside quote ([#21779](https://github.com/RocketChat/Rocket.Chat/pull/21779)) +- Remove margin from quote inside quote ([#21779](https://github.com/RocketChat/Rocket.Chat/pull/21779) by [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/116253926-4a89e600-a747-11eb-9172-f2ed1245fa1b.png) -- Save department agents ([#23209](https://github.com/RocketChat/Rocket.Chat/pull/23209)) +- Save department agents ([#23209](https://github.com/RocketChat/Rocket.Chat/pull/23209) by [@KevLehman](https://github.com/KevLehman) & [@casalsgh](https://github.com/casalsgh) & [@tiagoevanp](https://github.com/tiagoevanp)) - Sidebar not closing when clicking in Home or Directory on mobile view ([#23218](https://github.com/RocketChat/Rocket.Chat/pull/23218)) @@ -3704,7 +3791,7 @@ ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) - remove useSidebarClose hook -- Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261)) +- Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261) by [@KevLehman](https://github.com/KevLehman)) - Add missing key logs - Stop queue (and logs) when livechat is disabled or when routing method does not support queue @@ -3712,15 +3799,15 @@ - Toolbox click not working on Safari(iOS) ([#23244](https://github.com/RocketChat/Rocket.Chat/pull/23244)) -- transfer message when tranferring room by Apps Engine ([#23074](https://github.com/RocketChat/Rocket.Chat/pull/23074) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) +- transfer message when tranferring room by Apps Engine ([#23074](https://github.com/RocketChat/Rocket.Chat/pull/23074) by [@KevLehman](https://github.com/KevLehman) & [@cuonghuunguyen](https://github.com/cuonghuunguyen)) - Update bugsnag package ([#23104](https://github.com/RocketChat/Rocket.Chat/pull/23104)) -- User list not being updated after creation/deletion of user ([#23032](https://github.com/RocketChat/Rocket.Chat/pull/23032) by [@ostjen](https://github.com/ostjen)) +- User list not being updated after creation/deletion of user ([#23032](https://github.com/RocketChat/Rocket.Chat/pull/23032) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- Wrap canned-responses endpoints with ee license ([#23204](https://github.com/RocketChat/Rocket.Chat/pull/23204)) +- Wrap canned-responses endpoints with ee license ([#23204](https://github.com/RocketChat/Rocket.Chat/pull/23204) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Wrong docs link on Omni-Webhook page ([#23117](https://github.com/RocketChat/Rocket.Chat/pull/23117)) +- Wrong docs link on Omni-Webhook page ([#23117](https://github.com/RocketChat/Rocket.Chat/pull/23117) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes @@ -3768,33 +3855,33 @@ - Bump xml-crypto from 2.1.2 to 2.1.3 ([#23141](https://github.com/RocketChat/Rocket.Chat/pull/23141) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: Change Ubuntu version to 20.04 on all GitHub Actions ([#23200](https://github.com/RocketChat/Rocket.Chat/pull/23200)) +- Chore: Change Ubuntu version to 20.04 on all GitHub Actions ([#23200](https://github.com/RocketChat/Rocket.Chat/pull/23200) by [@KevLehman](https://github.com/KevLehman)) -- Chore: client endpoints typings ([#23152](https://github.com/RocketChat/Rocket.Chat/pull/23152)) +- Chore: client endpoints typings ([#23152](https://github.com/RocketChat/Rocket.Chat/pull/23152) by [@tassoevan](https://github.com/tassoevan)) -- Chore: Convert VerticalBar component to typescript ([#22542](https://github.com/RocketChat/Rocket.Chat/pull/22542)) +- Chore: Convert VerticalBar component to typescript ([#22542](https://github.com/RocketChat/Rocket.Chat/pull/22542) by [@tassoevan](https://github.com/tassoevan)) - Chore: Environmental variable for marketplace url ([#22922](https://github.com/RocketChat/Rocket.Chat/pull/22922)) - Chore: Make SMTP empty on docker-compose so registration won't hang out of the box ([#23255](https://github.com/RocketChat/Rocket.Chat/pull/23255)) -- Chore: Move client helpers ([#23178](https://github.com/RocketChat/Rocket.Chat/pull/23178)) +- Chore: Move client helpers ([#23178](https://github.com/RocketChat/Rocket.Chat/pull/23178) by [@tassoevan](https://github.com/tassoevan)) Moves helper modules under `app/` to `client/lib/utils/`. -- Chore: Re-enable session tests on local after removal of mongo-unit ([#23263](https://github.com/RocketChat/Rocket.Chat/pull/23263)) +- Chore: Re-enable session tests on local after removal of mongo-unit ([#23263](https://github.com/RocketChat/Rocket.Chat/pull/23263) by [@KevLehman](https://github.com/KevLehman)) - Chore: Remove non-used dependencies ([#23109](https://github.com/RocketChat/Rocket.Chat/pull/23109)) - Chore: Remove wrong usages of `Meteor.wrapAsync` ([#23079](https://github.com/RocketChat/Rocket.Chat/pull/23079)) -- Chore: Update Livechat widget to 1.9.4 ([#23198](https://github.com/RocketChat/Rocket.Chat/pull/23198)) +- Chore: Update Livechat widget to 1.9.4 ([#23198](https://github.com/RocketChat/Rocket.Chat/pull/23198) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) - Chore: Update pino and pino-pretty ([#23269](https://github.com/RocketChat/Rocket.Chat/pull/23269)) - Chore: Update pino and pino-pretty ([#23157](https://github.com/RocketChat/Rocket.Chat/pull/23157)) -- Chore: Upgrade limax ([#23187](https://github.com/RocketChat/Rocket.Chat/pull/23187)) +- Chore: Upgrade limax ([#23187](https://github.com/RocketChat/Rocket.Chat/pull/23187) by [@tassoevan](https://github.com/tassoevan)) Upgrades `limax` for faster slugify algorithm. @@ -3806,20 +3893,20 @@ - Merge master into develop & Set version to 4.0.0 ([#23086](https://github.com/RocketChat/Rocket.Chat/pull/23086)) -- Regression: "Join" button not working ([#23320](https://github.com/RocketChat/Rocket.Chat/pull/23320)) +- Regression: "Join" button not working ([#23320](https://github.com/RocketChat/Rocket.Chat/pull/23320) by [@tassoevan](https://github.com/tassoevan)) -- Regression: `renderEmoji` helper referred as a template ([#23212](https://github.com/RocketChat/Rocket.Chat/pull/23212)) +- Regression: `renderEmoji` helper referred as a template ([#23212](https://github.com/RocketChat/Rocket.Chat/pull/23212) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Add default value when no cookies are present ([#23318](https://github.com/RocketChat/Rocket.Chat/pull/23318)) +- Regression: Add default value when no cookies are present ([#23318](https://github.com/RocketChat/Rocket.Chat/pull/23318) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Blank screen in Jitsi video calls ([#23322](https://github.com/RocketChat/Rocket.Chat/pull/23322)) +- Regression: Blank screen in Jitsi video calls ([#23322](https://github.com/RocketChat/Rocket.Chat/pull/23322) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix Jitsi calls being disposed even when "Open in new window" setting is disabled; - Fix misspelling on `CallJitsWithData.js` file name. - Regression: Create new loggers based on server log level ([#23297](https://github.com/RocketChat/Rocket.Chat/pull/23297)) -- Regression: Fix app storage migration ([#23286](https://github.com/RocketChat/Rocket.Chat/pull/23286)) +- Regression: Fix app storage migration ([#23286](https://github.com/RocketChat/Rocket.Chat/pull/23286) by [@thassiov](https://github.com/thassiov)) The previous version of this migration didn't take into consideration apps that were installed prior to [Rocket.Chat@3.8.0](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.8.0), which [removed the typescript compiler from the server](https://github.com/RocketChat/Rocket.Chat/pull/18687) and into the CLI. As a result, the zip files inside each installed app's document in the database had typescript files in them instead of the now required javascript files. @@ -3829,33 +3916,33 @@ - Regression: Fix Bugsnag not started error ([#23308](https://github.com/RocketChat/Rocket.Chat/pull/23308)) -- Regression: Fix channel icons on queue ([#23304](https://github.com/RocketChat/Rocket.Chat/pull/23304)) +- Regression: Fix channel icons on queue ([#23304](https://github.com/RocketChat/Rocket.Chat/pull/23304) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Fix user registration stuck ([#23254](https://github.com/RocketChat/Rocket.Chat/pull/23254)) +- Regression: Fix user registration stuck ([#23254](https://github.com/RocketChat/Rocket.Chat/pull/23254) by [@tassoevan](https://github.com/tassoevan)) - Regression: Fix view logs admin screen ([#23194](https://github.com/RocketChat/Rocket.Chat/pull/23194)) -- Regression: invalid `call` import ([#23328](https://github.com/RocketChat/Rocket.Chat/pull/23328)) +- Regression: invalid `call` import ([#23328](https://github.com/RocketChat/Rocket.Chat/pull/23328) by [@tassoevan](https://github.com/tassoevan)) -- Regression: invalid `call` import ([#23334](https://github.com/RocketChat/Rocket.Chat/pull/23334)) +- Regression: invalid `call` import ([#23334](https://github.com/RocketChat/Rocket.Chat/pull/23334) by [@tassoevan](https://github.com/tassoevan)) -- Regression: LDAP Channel/Role Sync not working ([#23311](https://github.com/RocketChat/Rocket.Chat/pull/23311)) +- Regression: LDAP Channel/Role Sync not working ([#23311](https://github.com/RocketChat/Rocket.Chat/pull/23311) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: LDAP Issues ([#23306](https://github.com/RocketChat/Rocket.Chat/pull/23306)) +- Regression: LDAP Issues ([#23306](https://github.com/RocketChat/Rocket.Chat/pull/23306) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: LDAP Refactoring ([#23231](https://github.com/RocketChat/Rocket.Chat/pull/23231)) +- Regression: LDAP Refactoring ([#23231](https://github.com/RocketChat/Rocket.Chat/pull/23231) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: LDAP User Data Sync not always working ([#23321](https://github.com/RocketChat/Rocket.Chat/pull/23321)) +- Regression: LDAP User Data Sync not always working ([#23321](https://github.com/RocketChat/Rocket.Chat/pull/23321) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: LDAP: Handle base authentication and prevent crash ([#23331](https://github.com/RocketChat/Rocket.Chat/pull/23331)) +- Regression: LDAP: Handle base authentication and prevent crash ([#23331](https://github.com/RocketChat/Rocket.Chat/pull/23331) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) When AD requires TLS the auth crashes the server if StartTLS is not set, the error shows at the end because the code was not waiting on this operation. -- Regression: Log Sections not respecting Log Level setting ([#23230](https://github.com/RocketChat/Rocket.Chat/pull/23230)) +- Regression: Log Sections not respecting Log Level setting ([#23230](https://github.com/RocketChat/Rocket.Chat/pull/23230) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Missing i18n key ([#23282](https://github.com/RocketChat/Rocket.Chat/pull/23282)) +- Regression: Missing i18n key ([#23282](https://github.com/RocketChat/Rocket.Chat/pull/23282) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Properly trickle-down state from UsersPage to UsersTable ([#23196](https://github.com/RocketChat/Rocket.Chat/pull/23196)) +- Regression: Properly trickle-down state from UsersPage to UsersTable ([#23196](https://github.com/RocketChat/Rocket.Chat/pull/23196) by [@tassoevan](https://github.com/tassoevan)) Spotted by @gabriellsh. @@ -3865,53 +3952,53 @@ - Regression: Request seats url ([#23317](https://github.com/RocketChat/Rocket.Chat/pull/23317)) -- Regression: SAML identifier mapping ([#23330](https://github.com/RocketChat/Rocket.Chat/pull/23330)) +- Regression: SAML identifier mapping ([#23330](https://github.com/RocketChat/Rocket.Chat/pull/23330) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Seats Cap banner not being disabled if not enterprise ([#23278](https://github.com/RocketChat/Rocket.Chat/pull/23278)) -- Regression: View Logs administration page crashing ([#23205](https://github.com/RocketChat/Rocket.Chat/pull/23205)) +- Regression: View Logs administration page crashing ([#23205](https://github.com/RocketChat/Rocket.Chat/pull/23205) by [@tassoevan](https://github.com/tassoevan)) Fixes the `stdout.queue` endpoint; makes the components type-safe. -- Regression: wrong settings order ([#23281](https://github.com/RocketChat/Rocket.Chat/pull/23281)) +- Regression: wrong settings order ([#23281](https://github.com/RocketChat/Rocket.Chat/pull/23281) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@g-thome](https://github.com/g-thome)) +- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@KevLehman](https://github.com/KevLehman) & [@g-thome](https://github.com/g-thome)) -- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338)) +- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338) by [@KevLehman](https://github.com/KevLehman))
### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@casalsgh](https://github.com/casalsgh) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@gabrieloliverio](https://github.com/gabrieloliverio) - [@lucassartor](https://github.com/lucassartor) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@sumukhah](https://github.com/sumukhah) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@casalsgh](https://github.com/casalsgh) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.18.2 `2021-10-01 · 2 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` @@ -3927,23 +4014,26 @@ - Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) -- Update visitor info on email reception based on current inbox settings ([#23280](https://github.com/RocketChat/Rocket.Chat/pull/23280)) +- Update visitor info on email reception based on current inbox settings ([#23280](https://github.com/RocketChat/Rocket.Chat/pull/23280) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes -- Regression: Change some logs to new format ([#23307](https://github.com/RocketChat/Rocket.Chat/pull/23307)) +- Regression: Change some logs to new format ([#23307](https://github.com/RocketChat/Rocket.Chat/pull/23307) by [@KevLehman](https://github.com/KevLehman)) -- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338)) +- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338) by [@KevLehman](https://github.com/KevLehman))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.18.1 @@ -3963,28 +4053,28 @@ ### 🐛 Bug fixes -- Change way emails are validated on livechat registerGuest method ([#23089](https://github.com/RocketChat/Rocket.Chat/pull/23089)) +- Change way emails are validated on livechat registerGuest method ([#23089](https://github.com/RocketChat/Rocket.Chat/pull/23089) by [@KevLehman](https://github.com/KevLehman))
🔍 Minor changes -- Regression: Auth banner for EE ([#23091](https://github.com/RocketChat/Rocket.Chat/pull/23091) by [@g-thome](https://github.com/g-thome)) +- Regression: Auth banner for EE ([#23091](https://github.com/RocketChat/Rocket.Chat/pull/23091) by [@casalsgh](https://github.com/casalsgh) & [@g-thome](https://github.com/g-thome)) Dimisses auth banners assigned to EE admins and prevents new ones from appearing. -- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@g-thome](https://github.com/g-thome)) +- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@KevLehman](https://github.com/KevLehman) & [@g-thome](https://github.com/g-thome))
### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) +- [@casalsgh](https://github.com/casalsgh) - [@g-thome](https://github.com/g-thome) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@casalsgh](https://github.com/casalsgh) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.18.0 @@ -3999,7 +4089,7 @@ ### 🎉 New features -- **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955)) +- **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) - Add new settings to support closing chats that have been too long on waiting queue - Moved old settings to new "Queue Management" section @@ -4009,7 +4099,7 @@ Add a banner to inform admins about future authentication changes. This banner targets servers that use some sort of authentication service since they're the ones which this update concerns the most. -- Report "Read Receipts" setting on stat collector ([#23033](https://github.com/RocketChat/Rocket.Chat/pull/23033)) +- Report "Read Receipts" setting on stat collector ([#23033](https://github.com/RocketChat/Rocket.Chat/pull/23033) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - REST endpoint to delete a DM and allow DM for two other users ([#18022](https://github.com/RocketChat/Rocket.Chat/pull/18022) by [@abrom](https://github.com/abrom)) @@ -4028,11 +4118,11 @@ - Add default permission 'start-discussion' and 'start-discussion-other-user' to app user ([#22577](https://github.com/RocketChat/Rocket.Chat/pull/22577)) -- Create thumbnails from uploaded images ([#20907](https://github.com/RocketChat/Rocket.Chat/pull/20907)) +- Create thumbnails from uploaded images ([#20907](https://github.com/RocketChat/Rocket.Chat/pull/20907) by [@KevLehman](https://github.com/KevLehman) & [@tassoevan](https://github.com/tassoevan)) - Exclude archived rooms from unread-message count ([#22515](https://github.com/RocketChat/Rocket.Chat/pull/22515) by [@nmagedman](https://github.com/nmagedman)) -- Increase the verbosity of Omnichannel routing system debugging outputs ([#22977](https://github.com/RocketChat/Rocket.Chat/pull/22977)) +- Increase the verbosity of Omnichannel routing system debugging outputs ([#22977](https://github.com/RocketChat/Rocket.Chat/pull/22977) by [@KevLehman](https://github.com/KevLehman)) - Rewrite File Upload Modal ([#22750](https://github.com/RocketChat/Rocket.Chat/pull/22750)) @@ -4045,9 +4135,9 @@ Files larger than 10mb: ![image](https://user-images.githubusercontent.com/40830821/127222611-5265040f-a06b-4ec5-b528-89b40e6a9072.png) -- Types from currentChatsPage.tsx ([#22967](https://github.com/RocketChat/Rocket.Chat/pull/22967)) +- Types from currentChatsPage.tsx ([#22967](https://github.com/RocketChat/Rocket.Chat/pull/22967) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Use tag autocomplete in more places ([#22902](https://github.com/RocketChat/Rocket.Chat/pull/22902)) +- Use tag autocomplete in more places ([#22902](https://github.com/RocketChat/Rocket.Chat/pull/22902) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) Use the proper autocomplete component for omnichannel tags, this adds proper sorting of results and better consistency. @@ -4056,14 +4146,14 @@ - "Read Only" field description is incorrect when the option is checked ([#21868](https://github.com/RocketChat/Rocket.Chat/pull/21868) by [@epif4nio](https://github.com/epif4nio)) -- "Users By Time of the Day" chart displays incorrect data for Local Timezone ([#22836](https://github.com/RocketChat/Rocket.Chat/pull/22836)) +- "Users By Time of the Day" chart displays incorrect data for Local Timezone ([#22836](https://github.com/RocketChat/Rocket.Chat/pull/22836) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Add local timezone conversion to the "Users By Time of the Day" chart in the Engagement Dashboard; - Simplify date creations by using `endOf` and `startOf` methods. -- Atlassian Crowd connection not working ([#22996](https://github.com/RocketChat/Rocket.Chat/pull/22996) by [@piotrkochan](https://github.com/piotrkochan)) +- Atlassian Crowd connection not working ([#22996](https://github.com/RocketChat/Rocket.Chat/pull/22996) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@piotrkochan](https://github.com/piotrkochan)) -- Audio recording doesn't stop in direct messages on channel switch ([#22880](https://github.com/RocketChat/Rocket.Chat/pull/22880)) +- Audio recording doesn't stop in direct messages on channel switch ([#22880](https://github.com/RocketChat/Rocket.Chat/pull/22880) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Cancel audio recordings on message bar destroy event. ![test-22372](https://user-images.githubusercontent.com/36537004/128569780-d83747b0-fb9c-4dc6-9bc5-7ae573e720c8.gif) @@ -4080,15 +4170,15 @@ - Manually approve new users is not applied to SAML users ([#22823](https://github.com/RocketChat/Rocket.Chat/pull/22823) by [@ostjen](https://github.com/ostjen)) -- Production-environment dependencies ([#22868](https://github.com/RocketChat/Rocket.Chat/pull/22868)) +- Production-environment dependencies ([#22868](https://github.com/RocketChat/Rocket.Chat/pull/22868) by [@tassoevan](https://github.com/tassoevan)) `@rocket.chat/icons` was incorrectly referred as development dependency. -- QuickActions for mobile screen ([#23016](https://github.com/RocketChat/Rocket.Chat/pull/23016)) +- QuickActions for mobile screen ([#23016](https://github.com/RocketChat/Rocket.Chat/pull/23016) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Registration not possible with TOTP and email verification ([#22778](https://github.com/RocketChat/Rocket.Chat/pull/22778) by [@ostjen](https://github.com/ostjen)) +- Registration not possible with TOTP and email verification ([#22778](https://github.com/RocketChat/Rocket.Chat/pull/22778) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) -- Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850)) +- Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) - Added new setting to manage timezones - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) @@ -4102,7 +4192,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/128103633-ec7b93fc-4667-4dc9-bad3-bfffaff3974e.png) -- Threads and discussions searches don't display proper results ([#22914](https://github.com/RocketChat/Rocket.Chat/pull/22914)) +- Threads and discussions searches don't display proper results ([#22914](https://github.com/RocketChat/Rocket.Chat/pull/22914) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - _Fix_ issue in discussions search (which wasn't working after a search with no results was made); - _Improve_ discussions and threads searches: both searches (`chat.getDiscussions` and `chat.getThreadsList`) are now case insensitive (do NOT differ capital from lower letters) and match incomplete words or terms. @@ -4111,11 +4201,11 @@ - TypeError on Callout type prop ([#22790](https://github.com/RocketChat/Rocket.Chat/pull/22790) by [@hrahul2605](https://github.com/hrahul2605)) -- User is still asked for 2FA confirmation even if it is deactivated ([#22801](https://github.com/RocketChat/Rocket.Chat/pull/22801) by [@ostjen](https://github.com/ostjen)) +- User is still asked for 2FA confirmation even if it is deactivated ([#22801](https://github.com/RocketChat/Rocket.Chat/pull/22801) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - User presence being processes even if presence monitor was disabled ([#22927](https://github.com/RocketChat/Rocket.Chat/pull/22927)) -- users registered via third party apps bypass custom required fields ([#22396](https://github.com/RocketChat/Rocket.Chat/pull/22396) by [@g-thome](https://github.com/g-thome)) +- users registered via third party apps bypass custom required fields ([#22396](https://github.com/RocketChat/Rocket.Chat/pull/22396) by [@g-thome](https://github.com/g-thome) & [@tassoevan](https://github.com/tassoevan)) moves the custom fields from the initial registration form to the "pick a username" screen so that everyone is forced to fill the custom required fields @@ -4131,7 +4221,7 @@ Changed gpg keyserver in RHEL Dockerfile to openpgp.org due to deprecation of the SKS keyserver network. -- Chore: Fix typo in rtl.css ([#22431](https://github.com/RocketChat/Rocket.Chat/pull/22431) by [@eltociear](https://github.com/eltociear)) +- Chore: Fix typo in rtl.css ([#22431](https://github.com/RocketChat/Rocket.Chat/pull/22431) by [@eltociear](https://github.com/eltociear) & [@tassoevan](https://github.com/tassoevan)) - Chore: Prevent new JS files being added ([#22972](https://github.com/RocketChat/Rocket.Chat/pull/22972)) @@ -4143,7 +4233,7 @@ This PR intends to provide a really simple way for us to start many instances of Rocket.Chat connected in a cluster. -- Chore: Update Livechat widget to 1.9.4 ([#22990](https://github.com/RocketChat/Rocket.Chat/pull/22990)) +- Chore: Update Livechat widget to 1.9.4 ([#22990](https://github.com/RocketChat/Rocket.Chat/pull/22990) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - i18n: Language update from LingoHub 🤖 on 2021-08-09Z ([#22888](https://github.com/RocketChat/Rocket.Chat/pull/22888)) @@ -4155,7 +4245,7 @@ - Regression: Attachment not rendering on message ([#23046](https://github.com/RocketChat/Rocket.Chat/pull/23046)) -- Regression: File upload name suggestion ([#22953](https://github.com/RocketChat/Rocket.Chat/pull/22953)) +- Regression: File upload name suggestion ([#22953](https://github.com/RocketChat/Rocket.Chat/pull/22953) by [@tassoevan](https://github.com/tassoevan)) Before: ![image](https://user-images.githubusercontent.com/40830821/129774936-ecdbe9a1-5e3f-4a0a-ad1e-6f13eb15c60b.png) @@ -4168,20 +4258,22 @@ - Regression: Fix creation of self-DMs ([#23015](https://github.com/RocketChat/Rocket.Chat/pull/23015)) -- Regression: Logs were missing from Omnichannel callback methods ([#23048](https://github.com/RocketChat/Rocket.Chat/pull/23048)) +- Regression: Logs were missing from Omnichannel callback methods ([#23048](https://github.com/RocketChat/Rocket.Chat/pull/23048) by [@KevLehman](https://github.com/KevLehman)) - Regression: no-js-action bump version ([#22997](https://github.com/RocketChat/Rocket.Chat/pull/22997)) - Regression: readNow blocked by a invalid condition ([#22952](https://github.com/RocketChat/Rocket.Chat/pull/22952)) -- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942)) +- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@thassiov](https://github.com/thassiov)) -- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045)) +- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@abrom](https://github.com/abrom) - [@aditya-mitra](https://github.com/aditya-mitra) - [@eltociear](https://github.com/eltociear) @@ -4189,27 +4281,25 @@ - [@g-thome](https://github.com/g-thome) - [@hrahul2605](https://github.com/hrahul2605) - [@jsm84](https://github.com/jsm84) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@nmagedman](https://github.com/nmagedman) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@piotrkochan](https://github.com/piotrkochan) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.17.2 `2021-08-26 · 3 🐛 · 1 🔍 · 5 👩‍💻👨‍💻` @@ -4227,9 +4317,9 @@ Building on top of https://github.com/RocketChat/Rocket.Chat/pull/22838 -- Error getting default agent when routing system algorithm is Auto Selection ([#22976](https://github.com/RocketChat/Rocket.Chat/pull/22976)) +- Error getting default agent when routing system algorithm is Auto Selection ([#22976](https://github.com/RocketChat/Rocket.Chat/pull/22976) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) -- Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991)) +- Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter - Fixed an issue when both user & system setting to manange EE max number of chats allowed were set to 0 @@ -4238,19 +4328,19 @@ 🔍 Minor changes -- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045)) +- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) - [@Shailesh351](https://github.com/Shailesh351) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) - [@murtaza98](https://github.com/murtaza98) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.17.1 @@ -4265,40 +4355,43 @@ ### 🐛 Bug fixes -- "Click to Join" button is not working if there are no muted users in the room ([#22871](https://github.com/RocketChat/Rocket.Chat/pull/22871)) +- "Click to Join" button is not working if there are no muted users in the room ([#22871](https://github.com/RocketChat/Rocket.Chat/pull/22871) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Add check to `room.muted` array so as to cover the case in which it is `undefined`; -- Apps-Engine's scheduler failing to update run tasks ([#22882](https://github.com/RocketChat/Rocket.Chat/pull/22882)) +- Apps-Engine's scheduler failing to update run tasks ([#22882](https://github.com/RocketChat/Rocket.Chat/pull/22882) by [@thassiov](https://github.com/thassiov)) [Agenda](https://github.com/agenda/agenda), the library that manages scheduling, depended on setting a job property named `nextRunAt` as `undefined` to signal whether it should be run on schedule or not. [Rocket.Chat's current Mongo driver](https://github.com/RocketChat/Rocket.Chat/pull/22399) ignores `undefined` values when updating documents and this was causing jobs to never stop running as Agenda couldn't clear that property (set them as `undefined`). This updates Rocket.Chat's dependency on Agenda.js to point to [a fork that fixes the problem](https://github.com/RocketChat/agenda/releases/tag/3.1.2). -- Close omnichannel conversations when agent is deactivated ([#22917](https://github.com/RocketChat/Rocket.Chat/pull/22917)) +- Close omnichannel conversations when agent is deactivated ([#22917](https://github.com/RocketChat/Rocket.Chat/pull/22917) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) -- Message update not working in some cases ([#22856](https://github.com/RocketChat/Rocket.Chat/pull/22856)) +- Message update not working in some cases ([#22856](https://github.com/RocketChat/Rocket.Chat/pull/22856) by [@KevLehman](https://github.com/KevLehman)) -- Use correct param on saveBusinessHour method ([#22835](https://github.com/RocketChat/Rocket.Chat/pull/22835)) +- Use correct param on saveBusinessHour method ([#22835](https://github.com/RocketChat/Rocket.Chat/pull/22835) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes -- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942)) +- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@thassiov](https://github.com/thassiov))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) -- [@d-gubert](https://github.com/d-gubert) - [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@murtaza98](https://github.com/murtaza98) - [@renatobecker](https://github.com/renatobecker) -- [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) - [@thassiov](https://github.com/thassiov) +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@d-gubert](https://github.com/d-gubert) +- [@murtaza98](https://github.com/murtaza98) +- [@sampaiodiego](https://github.com/sampaiodiego) + # 3.17.0 `2021-07-30 · 7 🎉 · 19 🚀 · 39 🐛 · 56 🔍 · 28 👩‍💻👨‍💻` @@ -4311,15 +4404,15 @@ ### 🎉 New features -- `roles.delete` endpoint ([#22497](https://github.com/RocketChat/Rocket.Chat/pull/22497) by [@lucassartor](https://github.com/lucassartor)) +- `roles.delete` endpoint ([#22497](https://github.com/RocketChat/Rocket.Chat/pull/22497) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Collect data about LDAP, SAML, CAS and OAuth usage. ([#22719](https://github.com/RocketChat/Rocket.Chat/pull/22719)) +- Collect data about LDAP, SAML, CAS and OAuth usage. ([#22719](https://github.com/RocketChat/Rocket.Chat/pull/22719) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Convert Team to Channel ([#22476](https://github.com/RocketChat/Rocket.Chat/pull/22476)) +- Convert Team to Channel ([#22476](https://github.com/RocketChat/Rocket.Chat/pull/22476) by [@KevLehman](https://github.com/KevLehman) & [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/123525502-8558bd80-d6a7-11eb-8211-12633cb3b5c6.png) -- Federation setup ([#22208](https://github.com/RocketChat/Rocket.Chat/pull/22208) by [@g-thome](https://github.com/g-thome)) +- Federation setup ([#22208](https://github.com/RocketChat/Rocket.Chat/pull/22208) by [@alansikora](https://github.com/alansikora) & [@g-thome](https://github.com/g-thome)) - Logout other user endpoint ([#22661](https://github.com/RocketChat/Rocket.Chat/pull/22661) by [@ostjen](https://github.com/ostjen)) @@ -4333,14 +4426,14 @@ ### 🚀 Improvements -- Canned responses ([#22703](https://github.com/RocketChat/Rocket.Chat/pull/22703) by [@rafaelblink](https://github.com/rafaelblink)) +- Canned responses ([#22703](https://github.com/RocketChat/Rocket.Chat/pull/22703) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink) & [@tiagoevanp](https://github.com/tiagoevanp)) - Change message deletion confirmation modal to toast ([#22544](https://github.com/RocketChat/Rocket.Chat/pull/22544)) Changed a timed modal for a toast message ![image](https://user-images.githubusercontent.com/40830821/124192670-0646f900-da9c-11eb-941c-9ae35421f6ef.png) -- Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705)) +- Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705) by [@thassiov](https://github.com/thassiov)) * Add `appId` field to the data saved by the Scheduler * Add `appId` index to `rocketchat_apps_persistence` model @@ -4352,19 +4445,19 @@ ![image](https://user-images.githubusercontent.com/1810309/126246655-2ce3cb5f-b2f5-456e-a9c4-beccd9b3ef41.png) -- Make `shortcut` field of canned responses unique ([#22700](https://github.com/RocketChat/Rocket.Chat/pull/22700)) +- Make `shortcut` field of canned responses unique ([#22700](https://github.com/RocketChat/Rocket.Chat/pull/22700) by [@KevLehman](https://github.com/KevLehman)) -- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123)) +- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments -- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@rafaelblink](https://github.com/rafaelblink)) +- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) This uses the paginated multiselect for the EE tags selection, allowing more than 50 tags to be shown. - Preview message URLs only once ([#22516](https://github.com/RocketChat/Rocket.Chat/pull/22516) by [@nmagedman](https://github.com/nmagedman)) -- Refactor `livechat.registerGuest` function ([#22684](https://github.com/RocketChat/Rocket.Chat/pull/22684)) +- Refactor `livechat.registerGuest` function ([#22684](https://github.com/RocketChat/Rocket.Chat/pull/22684) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) - Replace OTR Icon on Contextual Bar & Update Icons ([#22377](https://github.com/RocketChat/Rocket.Chat/pull/22377)) @@ -4378,7 +4471,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/123840219-74e15680-d8e4-11eb-95aa-00a990ffe0e7.png) -- Return open room if available for visitors ([#22742](https://github.com/RocketChat/Rocket.Chat/pull/22742)) +- Return open room if available for visitors ([#22742](https://github.com/RocketChat/Rocket.Chat/pull/22742) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) - Rewrite Enter Encryption Password Modal ([#22456](https://github.com/RocketChat/Rocket.Chat/pull/22456)) @@ -4397,7 +4490,7 @@ ![image](https://user-images.githubusercontent.com/40830821/124513354-04897800-ddb1-11eb-96f4-41fe906ca0d7.png) ![image](https://user-images.githubusercontent.com/40830821/124513395-1b2fcf00-ddb1-11eb-83e4-3f8f9b4676ba.png) -- Rewrite Save Encryption Password Modal ([#22447](https://github.com/RocketChat/Rocket.Chat/pull/22447)) +- Rewrite Save Encryption Password Modal ([#22447](https://github.com/RocketChat/Rocket.Chat/pull/22447) by [@tassoevan](https://github.com/tassoevan)) ### before ![image](https://user-images.githubusercontent.com/27704687/122980201-c337a800-d36e-11eb-8e2b-68534cea8e1e.png) @@ -4411,9 +4504,9 @@ ![image](https://user-images.githubusercontent.com/40830821/124157878-a3d80380-da6f-11eb-8bd8-03dffd14c658.png) -- Sidebar icons margins ([#22498](https://github.com/RocketChat/Rocket.Chat/pull/22498)) +- Sidebar icons margins ([#22498](https://github.com/RocketChat/Rocket.Chat/pull/22498) by [@tassoevan](https://github.com/tassoevan)) -- Update README.md ([#22462](https://github.com/RocketChat/Rocket.Chat/pull/22462)) +- Update README.md ([#22462](https://github.com/RocketChat/Rocket.Chat/pull/22462) by [@Faria-TechWrite](https://github.com/Faria-TechWrite)) - Wrong error message when trying to create a blocked username ([#22452](https://github.com/RocketChat/Rocket.Chat/pull/22452) by [@lucassartor](https://github.com/lucassartor)) @@ -4428,15 +4521,15 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Engagement Dashboard displaying incorrect data about active users ([#22381](https://github.com/RocketChat/Rocket.Chat/pull/22381)) +- **ENTERPRISE:** Engagement Dashboard displaying incorrect data about active users ([#22381](https://github.com/RocketChat/Rocket.Chat/pull/22381) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Fix sessions' and users' grouping in the Engagement Dashboard API endpoints; - Fix the data displayed in the charts from the "Active users", "Users by time of day" and "When is the chat busier?" sections of the Engagement Dashboard; - Replace label used to describe the amount of Active Users in the License section of the Info page. -- **ENTERPRISE:** Make AutoSelect algo take current agent load in consideration ([#22611](https://github.com/RocketChat/Rocket.Chat/pull/22611)) +- **ENTERPRISE:** Make AutoSelect algo take current agent load in consideration ([#22611](https://github.com/RocketChat/Rocket.Chat/pull/22611) by [@KevLehman](https://github.com/KevLehman)) -- **ENTERPRISE:** Race condition on Omnichannel visitor abandoned callback ([#22413](https://github.com/RocketChat/Rocket.Chat/pull/22413)) +- **ENTERPRISE:** Race condition on Omnichannel visitor abandoned callback ([#22413](https://github.com/RocketChat/Rocket.Chat/pull/22413) by [@renatobecker](https://github.com/renatobecker)) As you can see [here](https://github.com/RocketChat/Rocket.Chat/blob/857791c39c97b51b5b6fd3718e0c816959a81c3b/ee/app/livechat-enterprise/server/lib/Helper.js#L127) the `predictedVisitorAbandonment` flag is not set if the room object doesn't have `v.lastMessageTs` property. So we need to always make sure the `v.lastMessageTs` is set before this method is called. @@ -4455,9 +4548,9 @@ ![image](https://user-images.githubusercontent.com/28611993/127041404-dfca7f6a-2b8b-4c15-9cbd-c6238fac0063.png) -- Bugs in AutoCompleteDepartment ([#22414](https://github.com/RocketChat/Rocket.Chat/pull/22414)) +- Bugs in AutoCompleteDepartment ([#22414](https://github.com/RocketChat/Rocket.Chat/pull/22414) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170)) +- Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Hide 'Call' buttons from the tab bar for muted users; - Display an error when a muted user attempts to enter a call using the 'Click to Join!' button. @@ -4473,7 +4566,7 @@ ### aditional fix :rocket: - unnecessary `TeamsMembers` component removed -- Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor)) +- Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor) & [@matheusbsilva137](https://github.com/matheusbsilva137)) When trying to create a discussion using the top left sidebar modal with an role that don't have the `view-other-user-channels ` permission, an empty list would be shown, which is a wrong behavior. Also, when being able to use this modal, discussions were listed as options, which is also a wrong behavior as there can't be nested discussions. @@ -4490,9 +4583,9 @@ - Channels or Teams deleted are not removed from the sidebar. ([#22613](https://github.com/RocketChat/Rocket.Chat/pull/22613) by [@ostjen](https://github.com/ostjen)) -- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584)) +- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Confirm owner change process when deleting own account ([#22609](https://github.com/RocketChat/Rocket.Chat/pull/22609)) +- Confirm owner change process when deleting own account ([#22609](https://github.com/RocketChat/Rocket.Chat/pull/22609) by [@tassoevan](https://github.com/tassoevan)) - Content-Security-Policy ignoring CDN configuration ([#22791](https://github.com/RocketChat/Rocket.Chat/pull/22791) by [@nmagedman](https://github.com/nmagedman)) @@ -4506,11 +4599,11 @@ ![image](https://user-images.githubusercontent.com/28611993/126388304-6ac76574-6924-426e-843d-afd53dc1c874.png) -- crush in the getChannelHistory method ([#22667](https://github.com/RocketChat/Rocket.Chat/pull/22667) by [@MaestroArt](https://github.com/MaestroArt)) +- crush in the getChannelHistory method ([#22667](https://github.com/RocketChat/Rocket.Chat/pull/22667) by [@MaestroArt](https://github.com/MaestroArt) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Deleting own account asks for the username in the UI instead of the password ([#22405](https://github.com/RocketChat/Rocket.Chat/pull/22405)) +- Deleting own account asks for the username in the UI instead of the password ([#22405](https://github.com/RocketChat/Rocket.Chat/pull/22405) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Emoji not rendered on attachments description ([#22437](https://github.com/RocketChat/Rocket.Chat/pull/22437)) +- Emoji not rendered on attachments description ([#22437](https://github.com/RocketChat/Rocket.Chat/pull/22437) by [@tassoevan](https://github.com/tassoevan)) - Error in permission check for getLivechatDepartmentByNameOrId method in Apps ([#22545](https://github.com/RocketChat/Rocket.Chat/pull/22545)) @@ -4520,23 +4613,23 @@ Updated Apps-Engine version fixes errors with apps using livechat features. -- Livechat config endpoint is not returning all settings ([#22686](https://github.com/RocketChat/Rocket.Chat/pull/22686)) +- Livechat config endpoint is not returning all settings ([#22686](https://github.com/RocketChat/Rocket.Chat/pull/22686) by [@renatobecker](https://github.com/renatobecker)) - Livechat webhook request without headers ([#22589](https://github.com/RocketChat/Rocket.Chat/pull/22589)) - Markdown for UiKit blocks ([#22619](https://github.com/RocketChat/Rocket.Chat/pull/22619)) -- Omnichannel - Fix issue with modals on room preview mode. ([#22541](https://github.com/RocketChat/Rocket.Chat/pull/22541)) +- Omnichannel - Fix issue with modals on room preview mode. ([#22541](https://github.com/RocketChat/Rocket.Chat/pull/22541) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel/Twilio - When a file is sent as first message, chat is not queued ([#22590](https://github.com/RocketChat/Rocket.Chat/pull/22590)) +- Omnichannel/Twilio - When a file is sent as first message, chat is not queued ([#22590](https://github.com/RocketChat/Rocket.Chat/pull/22590) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) - Prune messages not applying the user filter ([#22506](https://github.com/RocketChat/Rocket.Chat/pull/22506)) -- Put title into AutocompleteDepartment components ([#22417](https://github.com/RocketChat/Rocket.Chat/pull/22417)) +- Put title into AutocompleteDepartment components ([#22417](https://github.com/RocketChat/Rocket.Chat/pull/22417) by [@tiagoevanp](https://github.com/tiagoevanp)) Dependencies: https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/475 -- Quote message not working for Livechat visitors ([#22586](https://github.com/RocketChat/Rocket.Chat/pull/22586)) +- Quote message not working for Livechat visitors ([#22586](https://github.com/RocketChat/Rocket.Chat/pull/22586) by [@KevLehman](https://github.com/KevLehman)) ### Before: ![image](https://user-images.githubusercontent.com/34130764/124583613-de2b1180-de70-11eb-82aa-18564b317626.png) @@ -4556,22 +4649,22 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/123711336-b3c0cf00-d846-11eb-9408-a686d8668ba5.png) -- Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699)) +- Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Fix 'not iterable' errors in the `normalizeMessage` function; - Remove stack traces from errors thrown by the `jitsi:updateTimeout` (and other `Meteor.Error`s) method. -- Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424)) +- Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Sort AutocompleteDepartmentsMultiple ([#22419](https://github.com/RocketChat/Rocket.Chat/pull/22419)) +- Sort AutocompleteDepartmentsMultiple ([#22419](https://github.com/RocketChat/Rocket.Chat/pull/22419) by [@tiagoevanp](https://github.com/tiagoevanp)) - status message won't show up for other users ([#22110](https://github.com/RocketChat/Rocket.Chat/pull/22110) by [@g-thome](https://github.com/g-thome)) replace the current blaze block that queries the local session store by a react component that fetches memoized user data -- Store department value correctly ([#22685](https://github.com/RocketChat/Rocket.Chat/pull/22685)) +- Store department value correctly ([#22685](https://github.com/RocketChat/Rocket.Chat/pull/22685) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) -- Support ID param on createVisitor method ([#22772](https://github.com/RocketChat/Rocket.Chat/pull/22772)) +- Support ID param on createVisitor method ([#22772](https://github.com/RocketChat/Rocket.Chat/pull/22772) by [@KevLehman](https://github.com/KevLehman)) - UIKit URL prop being ignored for buttons ([#22579](https://github.com/RocketChat/Rocket.Chat/pull/22579)) @@ -4579,7 +4672,7 @@ - Use room's last message time when visitor did not send any message ([#22695](https://github.com/RocketChat/Rocket.Chat/pull/22695) by [@ericrosenthal](https://github.com/ericrosenthal)) -- VisitorClientInfo not showing ([#22593](https://github.com/RocketChat/Rocket.Chat/pull/22593)) +- VisitorClientInfo not showing ([#22593](https://github.com/RocketChat/Rocket.Chat/pull/22593) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/124694887-87492a80-deb8-11eb-89a3-a0e407841a32.png) @@ -4601,9 +4694,9 @@ - Chore: added pagination to search msg endpoint ([#22632](https://github.com/RocketChat/Rocket.Chat/pull/22632) by [@ostjen](https://github.com/ostjen)) -- Chore: Create README.md ([#22615](https://github.com/RocketChat/Rocket.Chat/pull/22615)) +- Chore: Create README.md ([#22615](https://github.com/RocketChat/Rocket.Chat/pull/22615) by [@Faria-TechWrite](https://github.com/Faria-TechWrite)) -- Chore: Enable Omnicahnnel by default ([#22697](https://github.com/RocketChat/Rocket.Chat/pull/22697) by [@ostjen](https://github.com/ostjen)) +- Chore: Enable Omnicahnnel by default ([#22697](https://github.com/RocketChat/Rocket.Chat/pull/22697) by [@KevLehman](https://github.com/KevLehman) & [@ostjen](https://github.com/ostjen)) - Chore: Meteor 2.2 and bump dependencies ([#22399](https://github.com/RocketChat/Rocket.Chat/pull/22399)) @@ -4611,7 +4704,7 @@ - Chore: Remove Sodium from the main client ([#22459](https://github.com/RocketChat/Rocket.Chat/pull/22459)) -- Chore: Review some dependencies ([#22522](https://github.com/RocketChat/Rocket.Chat/pull/22522)) +- Chore: Review some dependencies ([#22522](https://github.com/RocketChat/Rocket.Chat/pull/22522) by [@tassoevan](https://github.com/tassoevan)) Upgrade some development dependencies. @@ -4621,9 +4714,9 @@ - Chore: Upgrade NPM dependencies ([#22562](https://github.com/RocketChat/Rocket.Chat/pull/22562)) -- Chore: Use projection instead of fields to avoid error log ([#22629](https://github.com/RocketChat/Rocket.Chat/pull/22629)) +- Chore: Use projection instead of fields to avoid error log ([#22629](https://github.com/RocketChat/Rocket.Chat/pull/22629) by [@KevLehman](https://github.com/KevLehman)) -- Fix Closed chats doesn't shows who picked the call ([#22368](https://github.com/RocketChat/Rocket.Chat/pull/22368)) +- Fix Closed chats doesn't shows who picked the call ([#22368](https://github.com/RocketChat/Rocket.Chat/pull/22368) by [@tiagoevanp](https://github.com/tiagoevanp)) - i18n: Language update from LingoHub 🤖 on 2021-06-28Z ([#22491](https://github.com/RocketChat/Rocket.Chat/pull/22491)) @@ -4631,28 +4724,28 @@ - Merge master into develop & Set version to 3.17.0-develop ([#22493](https://github.com/RocketChat/Rocket.Chat/pull/22493)) -- Regression: Added missing translate keys for Federation ([#22810](https://github.com/RocketChat/Rocket.Chat/pull/22810)) +- Regression: Added missing translate keys for Federation ([#22810](https://github.com/RocketChat/Rocket.Chat/pull/22810) by [@alansikora](https://github.com/alansikora)) -- Regression: Allow users to search canned responses based on shortcut or content ([#22735](https://github.com/RocketChat/Rocket.Chat/pull/22735)) +- Regression: Allow users to search canned responses based on shortcut or content ([#22735](https://github.com/RocketChat/Rocket.Chat/pull/22735) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Allow users to update canned responses scope ([#22738](https://github.com/RocketChat/Rocket.Chat/pull/22738)) +- Regression: Allow users to update canned responses scope ([#22738](https://github.com/RocketChat/Rocket.Chat/pull/22738) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620)) +- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Check for text before parse preview in create canned response form ([#22754](https://github.com/RocketChat/Rocket.Chat/pull/22754)) +- Regression: Check for text before parse preview in create canned response form ([#22754](https://github.com/RocketChat/Rocket.Chat/pull/22754) by [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Client crashing on startup ([#22610](https://github.com/RocketChat/Rocket.Chat/pull/22610)) -- Regression: Create livechat-monitor permissions for Canned Responses ([#22781](https://github.com/RocketChat/Rocket.Chat/pull/22781)) +- Regression: Create livechat-monitor permissions for Canned Responses ([#22781](https://github.com/RocketChat/Rocket.Chat/pull/22781) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794)) +- Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; - Downgrade `@nivo/line` version. **Expected behavior:** ![active-users-engagement-dashboard](https://user-images.githubusercontent.com/36537004/127372185-390dc42f-bc90-4841-a22b-731f0aafcafe.PNG) -- Regression: Data in the "New Users" section is delayed in 1 day ([#22751](https://github.com/RocketChat/Rocket.Chat/pull/22751)) +- Regression: Data in the "New Users" section is delayed in 1 day ([#22751](https://github.com/RocketChat/Rocket.Chat/pull/22751) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) - Update nivo version (which was causing errors in the bar chart); - Fix 1 day delay in '7 days' and '30 days' periods; @@ -4662,40 +4755,40 @@ fix some linting warnings on federation modal -- Regression: Filter of canned responses in contextual-bar ([#22762](https://github.com/RocketChat/Rocket.Chat/pull/22762)) +- Regression: Filter of canned responses in contextual-bar ([#22762](https://github.com/RocketChat/Rocket.Chat/pull/22762) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: fix canned responses filters for monitors ([#22782](https://github.com/RocketChat/Rocket.Chat/pull/22782)) +- Regression: fix canned responses filters for monitors ([#22782](https://github.com/RocketChat/Rocket.Chat/pull/22782) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Fix canned responses permissions for monitors & managers ([#22793](https://github.com/RocketChat/Rocket.Chat/pull/22793)) +- Regression: Fix canned responses permissions for monitors & managers ([#22793](https://github.com/RocketChat/Rocket.Chat/pull/22793) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Fix ee microservices build ([#22656](https://github.com/RocketChat/Rocket.Chat/pull/22656)) +- Regression: Fix ee microservices build ([#22656](https://github.com/RocketChat/Rocket.Chat/pull/22656) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Fix empty canned responses table when searching ([#22743](https://github.com/RocketChat/Rocket.Chat/pull/22743)) +- Regression: Fix empty canned responses table when searching ([#22743](https://github.com/RocketChat/Rocket.Chat/pull/22743) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Fix empty tag field ([#22767](https://github.com/RocketChat/Rocket.Chat/pull/22767)) +- Regression: Fix empty tag field ([#22767](https://github.com/RocketChat/Rocket.Chat/pull/22767) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: fix non ee tag field on canned responses ([#22775](https://github.com/RocketChat/Rocket.Chat/pull/22775)) +- Regression: fix non ee tag field on canned responses ([#22775](https://github.com/RocketChat/Rocket.Chat/pull/22775) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: fix outdated data on canned filters ([#22766](https://github.com/RocketChat/Rocket.Chat/pull/22766)) +- Regression: fix outdated data on canned filters ([#22766](https://github.com/RocketChat/Rocket.Chat/pull/22766) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Fix tooltip style in the "Busiest Chat Times" chart ([#22813](https://github.com/RocketChat/Rocket.Chat/pull/22813)) +- Regression: Fix tooltip style in the "Busiest Chat Times" chart ([#22813](https://github.com/RocketChat/Rocket.Chat/pull/22813) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Fix tooltip in the Engagement Dashboard's "Busiest Chat Times" chart (Hours). **Expected behavior:** ![busiest-times-ed](https://user-images.githubusercontent.com/36537004/127527827-465397ed-f089-4fb7-9ab2-6fa8cea6abdf.PNG) -- Regression: Fix users not being able to see the scope of the canned m… ([#22760](https://github.com/RocketChat/Rocket.Chat/pull/22760)) +- Regression: Fix users not being able to see the scope of the canned m… ([#22760](https://github.com/RocketChat/Rocket.Chat/pull/22760) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Fixes empty department field on edit canned responses ([#22741](https://github.com/RocketChat/Rocket.Chat/pull/22741)) +- Regression: Fixes empty department field on edit canned responses ([#22741](https://github.com/RocketChat/Rocket.Chat/pull/22741) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) This fixes the empty department field when editing a canned response via table on omnichannel menu. this also convert some of the files to TS that were created in js initially, also created/adjusted some types -- Regression: Internal Error when saving files using GridFS ([#22792](https://github.com/RocketChat/Rocket.Chat/pull/22792)) +- Regression: Internal Error when saving files using GridFS ([#22792](https://github.com/RocketChat/Rocket.Chat/pull/22792) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: observe-sequence version syntax broken on IE ([#22557](https://github.com/RocketChat/Rocket.Chat/pull/22557)) -- Regression: Parse canned responses placeholders ([#22777](https://github.com/RocketChat/Rocket.Chat/pull/22777)) +- Regression: Parse canned responses placeholders ([#22777](https://github.com/RocketChat/Rocket.Chat/pull/22777) by [@KevLehman](https://github.com/KevLehman)) - Regression: Prevent custom status from being visible in sequential messages ([#22733](https://github.com/RocketChat/Rocket.Chat/pull/22733)) @@ -4705,23 +4798,23 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/126641752-3163eb95-1cd4-4d99-a61a-4d06d9e7e13e.png) -- Regression: Properly force newline in attachment fields ([#22727](https://github.com/RocketChat/Rocket.Chat/pull/22727)) +- Regression: Properly force newline in attachment fields ([#22727](https://github.com/RocketChat/Rocket.Chat/pull/22727) by [@tassoevan](https://github.com/tassoevan)) I've incorrectly enforcing the newline character in attachment fields, resulting in "<br />" text being rendered. -- Regression: Remove Tags from canned response filter ([#22779](https://github.com/RocketChat/Rocket.Chat/pull/22779)) +- Regression: Remove Tags from canned response filter ([#22779](https://github.com/RocketChat/Rocket.Chat/pull/22779) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Replaced manual state control with a .once event ([#22800](https://github.com/RocketChat/Rocket.Chat/pull/22800)) +- Regression: Replaced manual state control with a .once event ([#22800](https://github.com/RocketChat/Rocket.Chat/pull/22800) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Rocket.Chat crashes on startup if there's a Custom OAuth service configured ([#22740](https://github.com/RocketChat/Rocket.Chat/pull/22740)) +- Regression: Rocket.Chat crashes on startup if there's a Custom OAuth service configured ([#22740](https://github.com/RocketChat/Rocket.Chat/pull/22740) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: roles.removeUserFromRole API not working with scoped roles. ([#22799](https://github.com/RocketChat/Rocket.Chat/pull/22799)) +- Regression: roles.removeUserFromRole API not working with scoped roles. ([#22799](https://github.com/RocketChat/Rocket.Chat/pull/22799) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) -- Regression: Small UI changes Federation ([#22811](https://github.com/RocketChat/Rocket.Chat/pull/22811)) +- Regression: Small UI changes Federation ([#22811](https://github.com/RocketChat/Rocket.Chat/pull/22811) by [@alansikora](https://github.com/alansikora) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Text wrap in MarkdownTextEditor and PreviewText ([#22798](https://github.com/RocketChat/Rocket.Chat/pull/22798)) +- Regression: Text wrap in MarkdownTextEditor and PreviewText ([#22798](https://github.com/RocketChat/Rocket.Chat/pull/22798) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Translate scope on canned responses dashboard ([#22773](https://github.com/RocketChat/Rocket.Chat/pull/22773)) +- Regression: Translate scope on canned responses dashboard ([#22773](https://github.com/RocketChat/Rocket.Chat/pull/22773) by [@KevLehman](https://github.com/KevLehman)) - Release 3.16.4 ([#22815](https://github.com/RocketChat/Rocket.Chat/pull/22815)) @@ -4732,36 +4825,36 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Cosnavel](https://github.com/Cosnavel) +- [@Faria-TechWrite](https://github.com/Faria-TechWrite) +- [@KevLehman](https://github.com/KevLehman) - [@MaestroArt](https://github.com/MaestroArt) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@cprice-kgi](https://github.com/cprice-kgi) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@ericrosenthal](https://github.com/ericrosenthal) - [@g-thome](https://github.com/g-thome) - [@lucassartor](https://github.com/lucassartor) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@nmagedman](https://github.com/nmagedman) - [@ostjen](https://github.com/ostjen) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) - [@snyk-bot](https://github.com/snyk-bot) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@Faria-TechWrite](https://github.com/Faria-TechWrite) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.16.4 `2021-07-30 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -4801,12 +4894,12 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@g-thome](https://github.com/g-thome) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.16.2 @@ -4821,7 +4914,7 @@ ### 🐛 Bug fixes -- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584)) +- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584) by [@tiagoevanp](https://github.com/tiagoevanp)) - Error in permission check for getLivechatDepartmentByNameOrId method in Apps ([#22545](https://github.com/RocketChat/Rocket.Chat/pull/22545)) @@ -4835,16 +4928,19 @@ 🔍 Minor changes -- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620)) +- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620) by [@tiagoevanp](https://github.com/tiagoevanp)) +### 👩‍💻👨‍💻 Contributors 😍 + +- [@tiagoevanp](https://github.com/tiagoevanp) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.16.1 `2021-07-01 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -4881,7 +4977,7 @@ ### 🎉 New features -- Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188)) +- Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Add new `teams.converToChannel` endpoint; - Update `ConvertToTeam` modal text (since this action can now be reversed); @@ -4909,45 +5005,45 @@ and besides that some suggars syntax like `addScript` and `addStyle` were added, this way the application already takes care of inserting the elements and providing the content automatically. -- Open modals in side effects outside React ([#22247](https://github.com/RocketChat/Rocket.Chat/pull/22247)) +- Open modals in side effects outside React ([#22247](https://github.com/RocketChat/Rocket.Chat/pull/22247) by [@tassoevan](https://github.com/tassoevan)) - Remove "Game Center" setting ([#22232](https://github.com/RocketChat/Rocket.Chat/pull/22232) by [@lolimay](https://github.com/lolimay)) ### 🚀 Improvements -- **APPS:** Refactor bridges ([#21253](https://github.com/RocketChat/Rocket.Chat/pull/21253)) +- **APPS:** Refactor bridges ([#21253](https://github.com/RocketChat/Rocket.Chat/pull/21253) by [@thassiov](https://github.com/thassiov)) Make the bridge classes extend abstract classes provided by the engine instead of just implementing an interface. The new abstract classes feature proxy methods used for permission verification in each method. This is also offers space to add more behaviors before executing the actual bridge methods. -- Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312)) +- Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312) by [@tassoevan](https://github.com/tassoevan)) Added 2 new settings: - `Admin > Video Conference > Big Blue Button > Enable for teams` - `Admin > Video Conference > Jitsi > Enable in teams` -- Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097)) +- Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker)) - Add modal to close chats when tags/comments are not required ([#22245](https://github.com/RocketChat/Rocket.Chat/pull/22245) by [@rafaelblink](https://github.com/rafaelblink)) When neither tags or comments are required to close a livechat, show this modal instead: ![Screen Shot 2021-05-20 at 7 33 19 PM](https://user-images.githubusercontent.com/20868078/119057741-6af23c80-b9a3-11eb-902f-f8a7458ad11c.png) -- Fallback messages on contextual bar ([#22376](https://github.com/RocketChat/Rocket.Chat/pull/22376)) +- Fallback messages on contextual bar ([#22376](https://github.com/RocketChat/Rocket.Chat/pull/22376) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/122301100-9569e380-ced6-11eb-992a-e3a7fd9d0d73.png) -- Missing tests to `fname` and `prid` in the `rooms.createDiscussion` endpoint ([#22223](https://github.com/RocketChat/Rocket.Chat/pull/22223)) +- Missing tests to `fname` and `prid` in the `rooms.createDiscussion` endpoint ([#22223](https://github.com/RocketChat/Rocket.Chat/pull/22223) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Add tests to the values of `fname` and `prid` in the `rooms.createDiscussion` endpoint's results. -- New indexes for Omnichannel-related collections ([#22367](https://github.com/RocketChat/Rocket.Chat/pull/22367)) +- New indexes for Omnichannel-related collections ([#22367](https://github.com/RocketChat/Rocket.Chat/pull/22367) by [@renatobecker](https://github.com/renatobecker)) -- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123)) +- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments -- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@rafaelblink](https://github.com/rafaelblink)) +- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) This uses the paginated multiselect for the EE tags selection, allowing more than 50 tags to be shown. @@ -4959,7 +5055,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/119752125-c8d6c680-be72-11eb-8444-2e0c7cb1c600.png) -- Rewrite create direct modal ([#22209](https://github.com/RocketChat/Rocket.Chat/pull/22209)) +- Rewrite create direct modal ([#22209](https://github.com/RocketChat/Rocket.Chat/pull/22209) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/120384584-bb02c480-c2fc-11eb-8e8e-c197b08b5201.png) @@ -4976,9 +5072,9 @@ ### 🐛 Bug fixes -- _updatedAt attribute not being automatically updated by raw models ([#22306](https://github.com/RocketChat/Rocket.Chat/pull/22306)) +- _updatedAt attribute not being automatically updated by raw models ([#22306](https://github.com/RocketChat/Rocket.Chat/pull/22306) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- **EE:** Canned responses can't be deleted ([#22095](https://github.com/RocketChat/Rocket.Chat/pull/22095) by [@rafaelblink](https://github.com/rafaelblink)) +- **EE:** Canned responses can't be deleted ([#22095](https://github.com/RocketChat/Rocket.Chat/pull/22095) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) Deletion button has been removed from the edition option. @@ -4992,14 +5088,14 @@ Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup. -- **ENTERPRISE:** Prevent Visitor Abandonment after forwarding chat ([#22243](https://github.com/RocketChat/Rocket.Chat/pull/22243)) +- **ENTERPRISE:** Prevent Visitor Abandonment after forwarding chat ([#22243](https://github.com/RocketChat/Rocket.Chat/pull/22243) by [@renatobecker](https://github.com/renatobecker)) Currently the Visitor Abandonment timer isn't affected when the chat is forwarded. However this is affecting the UX in certain situations like eg: A bot forwarding a chat to an human agent ![image](https://user-images.githubusercontent.com/34130764/120896383-e4925780-c63e-11eb-937e-ffd7c4836159.png) To solve this issue, we'll now be stoping the Visitor Abandonment timer once a chat is forwarded. -- **IMPROVE:** Prevent creation of duplicated roles and new `roles.update` endpoint ([#22279](https://github.com/RocketChat/Rocket.Chat/pull/22279) by [@lucassartor](https://github.com/lucassartor)) +- **IMPROVE:** Prevent creation of duplicated roles and new `roles.update` endpoint ([#22279](https://github.com/RocketChat/Rocket.Chat/pull/22279) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Currently, the action of updating a role is broken: because roles have their `_id` = `name`, when updating a role there's no way to validate if the user is trying to update or create a new role with a name that already exists - which causes wrong behaviors, such as roles with the same name and not being able to update them. @@ -5015,9 +5111,9 @@ FIxes erros where, on HA setups, instances that DID NOT originate the action of uninstalling and updating an app would maintain the wrong status of apps when they received the notification of these events via Streamer. -- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290)) +- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290) by [@tassoevan](https://github.com/tassoevan)) -- Auditing page not printing all messages ([#22272](https://github.com/RocketChat/Rocket.Chat/pull/22272)) +- Auditing page not printing all messages ([#22272](https://github.com/RocketChat/Rocket.Chat/pull/22272) by [@tassoevan](https://github.com/tassoevan)) Changed CSS so printed media from the auditing page includes all page content. @@ -5029,7 +5125,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/120216113-f8882480-c20c-11eb-9afb-b127e66a43da.png) -- Cancel button and success toast at Leave Team modal ([#22373](https://github.com/RocketChat/Rocket.Chat/pull/22373)) +- Cancel button and success toast at Leave Team modal ([#22373](https://github.com/RocketChat/Rocket.Chat/pull/22373) by [@tassoevan](https://github.com/tassoevan)) - Chore: `team.addMembers` doesn't add member to main team room ([#22169](https://github.com/RocketChat/Rocket.Chat/pull/22169) by [@lucassartor](https://github.com/lucassartor)) @@ -5047,15 +5143,15 @@ - DeepL supported languages ([#22326](https://github.com/RocketChat/Rocket.Chat/pull/22326) by [@mrsimpson](https://github.com/mrsimpson)) -- Error generating Jitsi Token ([#22301](https://github.com/RocketChat/Rocket.Chat/pull/22301)) +- Error generating Jitsi Token ([#22301](https://github.com/RocketChat/Rocket.Chat/pull/22301) by [@tassoevan](https://github.com/tassoevan)) -- Game center close button ([#22353](https://github.com/RocketChat/Rocket.Chat/pull/22353)) +- Game center close button ([#22353](https://github.com/RocketChat/Rocket.Chat/pull/22353) by [@tassoevan](https://github.com/tassoevan)) ![Peek 2021-06-14 18-19](https://user-images.githubusercontent.com/27704687/121960896-155c4600-cd3d-11eb-9be9-9712f4a1087b.gif) -- Jitsi integration sending random "join now" messages ([#22277](https://github.com/RocketChat/Rocket.Chat/pull/22277)) +- Jitsi integration sending random "join now" messages ([#22277](https://github.com/RocketChat/Rocket.Chat/pull/22277) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- LDAP and SAML: changed usernames are not reflected on old data ([#22304](https://github.com/RocketChat/Rocket.Chat/pull/22304)) +- LDAP and SAML: changed usernames are not reflected on old data ([#22304](https://github.com/RocketChat/Rocket.Chat/pull/22304) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Members tab visual issues ([#22138](https://github.com/RocketChat/Rocket.Chat/pull/22138)) @@ -5071,7 +5167,7 @@ This PR overrides the function that processes the data for that specific connection, preventing the cache and everything else to be processed since we already have our low-level listener to process the data. -- Message box hiding on mobile view (Safari) ([#22212](https://github.com/RocketChat/Rocket.Chat/pull/22212)) +- Message box hiding on mobile view (Safari) ([#22212](https://github.com/RocketChat/Rocket.Chat/pull/22212) by [@tassoevan](https://github.com/tassoevan)) ### before ![image](https://user-images.githubusercontent.com/27704687/120404256-5b1c1600-c31c-11eb-96e9-860e4132db5f.png) @@ -5097,7 +5193,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/121606635-e97f4e80-ca24-11eb-81f7-af8b0cc41c89.png) -- Not possible to edit some messages inside threads ([#22325](https://github.com/RocketChat/Rocket.Chat/pull/22325)) +- Not possible to edit some messages inside threads ([#22325](https://github.com/RocketChat/Rocket.Chat/pull/22325) by [@tassoevan](https://github.com/tassoevan)) ### Before ![before](https://user-images.githubusercontent.com/27704687/121755733-4eeb4200-caee-11eb-9d77-1b498c38c478.gif) @@ -5107,27 +5203,27 @@ - Notifications not using user's name ([#22309](https://github.com/RocketChat/Rocket.Chat/pull/22309)) -- OAuth login not working on electron app with temp sessions. ([#22401](https://github.com/RocketChat/Rocket.Chat/pull/22401)) +- OAuth login not working on electron app with temp sessions. ([#22401](https://github.com/RocketChat/Rocket.Chat/pull/22401) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Omnichannel information panel is not displaying departments correctly ([#22155](https://github.com/RocketChat/Rocket.Chat/pull/22155)) +- Omnichannel information panel is not displaying departments correctly ([#22155](https://github.com/RocketChat/Rocket.Chat/pull/22155) by [@renatobecker](https://github.com/renatobecker)) -- Permission check for teams.listRoomsOfUser ([#22313](https://github.com/RocketChat/Rocket.Chat/pull/22313)) +- Permission check for teams.listRoomsOfUser ([#22313](https://github.com/RocketChat/Rocket.Chat/pull/22313) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) If the user is trying to list his own channels, the permission check is skipped. -- Read receipts are broken ([#22203](https://github.com/RocketChat/Rocket.Chat/pull/22203)) +- Read receipts are broken ([#22203](https://github.com/RocketChat/Rocket.Chat/pull/22203) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Remove invalid check before sending notifications to Omnichannel online agents ([#22278](https://github.com/RocketChat/Rocket.Chat/pull/22278)) +- Remove invalid check before sending notifications to Omnichannel online agents ([#22278](https://github.com/RocketChat/Rocket.Chat/pull/22278) by [@renatobecker](https://github.com/renatobecker)) -- Remove useless message options from Omnichannel Rooms ([#21549](https://github.com/RocketChat/Rocket.Chat/pull/21549) by [@rafaelblink](https://github.com/rafaelblink)) +- Remove useless message options from Omnichannel Rooms ([#21549](https://github.com/RocketChat/Rocket.Chat/pull/21549) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Removed follow button from message box in threads ([#21019](https://github.com/RocketChat/Rocket.Chat/pull/21019) by [@Darshilp326](https://github.com/Darshilp326)) Removed follow button from message box as it was coinciding with audio/file message in threads. -- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395)) +- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395) by [@tassoevan](https://github.com/tassoevan)) -- Sidebar not closing when clicking on a channel ([#22271](https://github.com/RocketChat/Rocket.Chat/pull/22271)) +- Sidebar not closing when clicking on a channel ([#22271](https://github.com/RocketChat/Rocket.Chat/pull/22271) by [@tassoevan](https://github.com/tassoevan)) ### before ![before](https://user-images.githubusercontent.com/27704687/121074843-c6e20100-c7aa-11eb-88db-76e39b57b064.gif) @@ -5135,20 +5231,20 @@ ### after ![after](https://user-images.githubusercontent.com/27704687/121074860-cb0e1e80-c7aa-11eb-9e96-06d75044b763.gif) -- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291)) +- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291) by [@renatobecker](https://github.com/renatobecker)) - Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) -- Unable to change protected role's description ([#22402](https://github.com/RocketChat/Rocket.Chat/pull/22402) by [@lucassartor](https://github.com/lucassartor)) +- Unable to change protected role's description ([#22402](https://github.com/RocketChat/Rocket.Chat/pull/22402) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Undefined error when forwarding chats to offline department ([#22154](https://github.com/RocketChat/Rocket.Chat/pull/22154) by [@rafaelblink](https://github.com/rafaelblink)) +- Undefined error when forwarding chats to offline department ([#22154](https://github.com/RocketChat/Rocket.Chat/pull/22154) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ![Screen Shot 2021-05-26 at 5 29 17 PM](https://user-images.githubusercontent.com/59577424/119727520-c495b380-be48-11eb-88a2-158017c7ad0a.png) Omnichannel agents are facing the error shown above when forwarding chats to offline departments. The error usually takes place when the routing system algorithm is **Manual Selection**. -- Unread bar in channel flash quickly and then disappear ([#22275](https://github.com/RocketChat/Rocket.Chat/pull/22275)) +- Unread bar in channel flash quickly and then disappear ([#22275](https://github.com/RocketChat/Rocket.Chat/pull/22275) by [@tassoevan](https://github.com/tassoevan)) ![unread_messages](https://user-images.githubusercontent.com/27704687/121092865-960dc600-c7c2-11eb-9074-81060d826811.gif) @@ -5179,15 +5275,15 @@ ![image](https://user-images.githubusercontent.com/40830821/119576154-93f14380-bd8e-11eb-8885-f889f2939bf4.png) ![image](https://user-images.githubusercontent.com/40830821/119576219-b5eac600-bd8e-11eb-832c-ea7a17a56bdd.png) -- Chore: Check PR Title on every submission ([#22140](https://github.com/RocketChat/Rocket.Chat/pull/22140)) +- Chore: Check PR Title on every submission ([#22140](https://github.com/RocketChat/Rocket.Chat/pull/22140) by [@KevLehman](https://github.com/KevLehman)) -- Chore: Enable push gateway only if the server is registered ([#22346](https://github.com/RocketChat/Rocket.Chat/pull/22346) by [@lucassartor](https://github.com/lucassartor)) +- Chore: Enable push gateway only if the server is registered ([#22346](https://github.com/RocketChat/Rocket.Chat/pull/22346) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Currently, when creating an unregistered server, the default value of the push gateway setting is set to true and is disabled (it can't be changed unless the server is registered). This is a wrong behavior as an unregistered server **can't** use the push gateway. This PR creates a validation to check if the server is registered when enabling the push gateway. That way, even if the push gateway setting is turned on, but the server is unregistered, the push gateway **won't** work - it will behave like it is off. -- Chore: Enforce TypeScript on Storybook ([#22317](https://github.com/RocketChat/Rocket.Chat/pull/22317)) +- Chore: Enforce TypeScript on Storybook ([#22317](https://github.com/RocketChat/Rocket.Chat/pull/22317) by [@tassoevan](https://github.com/tassoevan)) Rewrite some Storybook stories in TypeScript, as an example. @@ -5210,11 +5306,11 @@ - Merge master into develop & Set version to 3.16.0-develop ([#22184](https://github.com/RocketChat/Rocket.Chat/pull/22184)) -- Refactor few methods to improve Omnichannel flow ([#22321](https://github.com/RocketChat/Rocket.Chat/pull/22321)) +- Refactor few methods to improve Omnichannel flow ([#22321](https://github.com/RocketChat/Rocket.Chat/pull/22321) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Api tests not running ([#22369](https://github.com/RocketChat/Rocket.Chat/pull/22369)) +- Regression: Api tests not running ([#22369](https://github.com/RocketChat/Rocket.Chat/pull/22369) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Block-size property on firefox ([#22433](https://github.com/RocketChat/Rocket.Chat/pull/22433)) +- Regression: Block-size property on firefox ([#22433](https://github.com/RocketChat/Rocket.Chat/pull/22433) by [@tassoevan](https://github.com/tassoevan)) - Regression: CSP for external Media and Frames ([#22465](https://github.com/RocketChat/Rocket.Chat/pull/22465)) @@ -5226,7 +5322,7 @@ - Regression: Fix livechat find departments ([#22472](https://github.com/RocketChat/Rocket.Chat/pull/22472)) -- Regression: Missing flexDirection on select field ([#22300](https://github.com/RocketChat/Rocket.Chat/pull/22300)) +- Regression: Missing flexDirection on select field ([#22300](https://github.com/RocketChat/Rocket.Chat/pull/22300) by [@tassoevan](https://github.com/tassoevan)) ### before ![image](https://user-images.githubusercontent.com/27704687/121425905-532a2a80-c949-11eb-885f-e8ddaf5c8d5c.png) @@ -5234,42 +5330,42 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/121425770-283fd680-c949-11eb-8d94-86886f174599.png) -- Regression: RoomProvider using wrong types ([#22370](https://github.com/RocketChat/Rocket.Chat/pull/22370)) +- Regression: RoomProvider using wrong types ([#22370](https://github.com/RocketChat/Rocket.Chat/pull/22370) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483)) +- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483) by [@renatobecker](https://github.com/renatobecker)) -- Update README.md ([#22461](https://github.com/RocketChat/Rocket.Chat/pull/22461)) +- Update README.md ([#22461](https://github.com/RocketChat/Rocket.Chat/pull/22461) by [@Faria-TechWrite](https://github.com/Faria-TechWrite)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Darshilp326](https://github.com/Darshilp326) +- [@Faria-TechWrite](https://github.com/Faria-TechWrite) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@mrsimpson](https://github.com/mrsimpson) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) - [@rexzing](https://github.com/rexzing) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@Faria-TechWrite](https://github.com/Faria-TechWrite) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.15.3 `2021-07-01 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -5305,7 +5401,7 @@ Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup. -- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291)) +- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291) by [@renatobecker](https://github.com/renatobecker)) - Visitor info screen being updated multiple times ([#22482](https://github.com/RocketChat/Rocket.Chat/pull/22482)) @@ -5313,13 +5409,16 @@ 🔍 Minor changes -- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483)) +- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@renatobecker](https://github.com/renatobecker) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 3.15.1 @@ -5334,9 +5433,9 @@ ### 🐛 Bug fixes -- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290)) +- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290) by [@tassoevan](https://github.com/tassoevan)) -- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395)) +- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395) by [@tassoevan](https://github.com/tassoevan)) - Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) @@ -5348,11 +5447,14 @@ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@tassoevan](https://github.com/tassoevan) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.15.0 `2021-05-28 · 8 🎉 · 12 🚀 · 62 🐛 · 47 🔍 · 34 👩‍💻👨‍💻` @@ -5366,20 +5468,20 @@ ### 🎉 New features -- **APPS:** Ability for Rocket.Chat Apps to delete rooms ([#21875](https://github.com/RocketChat/Rocket.Chat/pull/21875) by [@lucassartor](https://github.com/lucassartor)) +- **APPS:** Ability for Rocket.Chat Apps to delete rooms ([#21875](https://github.com/RocketChat/Rocket.Chat/pull/21875) by [@lucassartor](https://github.com/lucassartor) & [@thassiov](https://github.com/thassiov)) Adds a new `delete` method on the rooms bridge in order to trigger the deletion of rooms via the Apps-Engine. -- **ENTERPRISE:** Introduce Load Rotation routing algorithm for Omnichannel ([#22090](https://github.com/RocketChat/Rocket.Chat/pull/22090) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** Introduce Load Rotation routing algorithm for Omnichannel ([#22090](https://github.com/RocketChat/Rocket.Chat/pull/22090) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) This PR introduces a new Auto Chat Distribution (ACD) algorithm for Omnichannel: **Load Rotation**. The algorithm distributes chats to agents one by one, which means that when a new chat arrives, the agent with the oldest routing assignment time will be selected to serve the chat, regardless of the number of chats in progress each agent has. ![Screen Shot 2021-05-20 at 5 17 40 PM](https://user-images.githubusercontent.com/59577424/119043752-c61a3400-b98f-11eb-8543-f3176879af1d.png) -- Back button for Omnichannel ([#21647](https://github.com/RocketChat/Rocket.Chat/pull/21647) by [@rafaelblink](https://github.com/rafaelblink)) +- Back button for Omnichannel ([#21647](https://github.com/RocketChat/Rocket.Chat/pull/21647) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- New Message Parser ([#21962](https://github.com/RocketChat/Rocket.Chat/pull/21962)) +- New Message Parser ([#21962](https://github.com/RocketChat/Rocket.Chat/pull/21962) by [@tassoevan](https://github.com/tassoevan)) The objective is to put an end to the confusion that we face having multiple parsers, and the problems that this brings, it is still experimental then users need to choose to use it. @@ -5387,7 +5489,7 @@ Besides, we no longer render raw html, instead we use components, so the xss attacks are over (the easy ones at least). Without further discoveries and at the fronted, we only reder what is delivered thus improving our performance. This can be used in multiple places, (message, alert, sidenav and in the entire mobile application.) -- Option to notify failed login attempts to a channel ([#21968](https://github.com/RocketChat/Rocket.Chat/pull/21968)) +- Option to notify failed login attempts to a channel ([#21968](https://github.com/RocketChat/Rocket.Chat/pull/21968) by [@KevLehman](https://github.com/KevLehman)) - Option to prevent users from using Invisible status ([#20084](https://github.com/RocketChat/Rocket.Chat/pull/20084) by [@lucassartor](https://github.com/lucassartor)) @@ -5408,7 +5510,7 @@ } ``` -- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@rafaelblink](https://github.com/rafaelblink)) +- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) REQUIRES https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/447 @@ -5418,20 +5520,20 @@ This Affects the monitors and departments inputs -- Remove exif metadata from uploaded files ([#22044](https://github.com/RocketChat/Rocket.Chat/pull/22044)) +- Remove exif metadata from uploaded files ([#22044](https://github.com/RocketChat/Rocket.Chat/pull/22044) by [@KevLehman](https://github.com/KevLehman)) ### 🚀 Improvements -- Add groups to the directory channels list ([#21687](https://github.com/RocketChat/Rocket.Chat/pull/21687)) +- Add groups to the directory channels list ([#21687](https://github.com/RocketChat/Rocket.Chat/pull/21687) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add groups (private channels) to the directory channels list. Only groups in which the logged user is subscribed are shown in the list. -- Add support to queries in `channels.members` and `groups.members` endpoints ([#21414](https://github.com/RocketChat/Rocket.Chat/pull/21414)) +- Add support to queries in `channels.members` and `groups.members` endpoints ([#21414](https://github.com/RocketChat/Rocket.Chat/pull/21414) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add support to queries (within the `query` parameter) in `channels.members` and `groups.members` endpoints. -- Add support to queries in the `im.members` endpoint ([#21471](https://github.com/RocketChat/Rocket.Chat/pull/21471)) +- Add support to queries in the `im.members` endpoint ([#21471](https://github.com/RocketChat/Rocket.Chat/pull/21471) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add support to queries within the `name`, `username` and `status` parameters. @@ -5441,7 +5543,7 @@ - CAS popup login size input type ([#21907](https://github.com/RocketChat/Rocket.Chat/pull/21907) by [@Deepak-learner](https://github.com/Deepak-learner)) -- Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor)) +- Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Currently, there are some inconsistencies and incorrect behaviors on the 2FA settings, such as: @@ -5458,18 +5560,18 @@ ![image](https://user-images.githubusercontent.com/27704687/118047610-613c5980-b351-11eb-96c7-6b28ae24363e.png) -- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Prevent gallery to close when clicking on a non-zoomable image ([#21854](https://github.com/RocketChat/Rocket.Chat/pull/21854)) - Replace method to API Endpoint on Prune Messages ([#21836](https://github.com/RocketChat/Rocket.Chat/pull/21836)) -- Support for Google OAuth for mobile app ([#22014](https://github.com/RocketChat/Rocket.Chat/pull/22014)) +- Support for Google OAuth for mobile app ([#22014](https://github.com/RocketChat/Rocket.Chat/pull/22014) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🐛 Bug fixes -- **APPS:** Scheduler duplicating recurrent tasks after server restart ([#21866](https://github.com/RocketChat/Rocket.Chat/pull/21866)) +- **APPS:** Scheduler duplicating recurrent tasks after server restart ([#21866](https://github.com/RocketChat/Rocket.Chat/pull/21866) by [@thassiov](https://github.com/thassiov)) Reintroduces the old method for creating recurring tasks in the apps' scheduler bridge to ensure tasks won't be duplicated. @@ -5477,15 +5579,15 @@ In the case of server restarts, every time this event happened and the app had the `startupSetting` configured to use _recurring tasks_, they would get recreated the same number of times. In the case of a server that restarts frequently (_n_ times), there would be the same (_n_) number of tasks duplicated (and running) in the system. -- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22128](https://github.com/RocketChat/Rocket.Chat/pull/22128)) +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22128](https://github.com/RocketChat/Rocket.Chat/pull/22128) by [@renatobecker](https://github.com/renatobecker)) Currently, Omnichannel Monitors just can't forward chats to a department that is part of a `Business Unit` they're not supervising. This issue is causing critical problems on customer operations since this behaviour is not by design. The reason this issue is taking place is that, by design, Monitors just have access to departments related to the `Business Units` they're monitoring, but this restriction is designed only for Omnichannel management areas, which means in case the monitor is, also, an agent, they're supposed to be able to forward a chat to any available departments regardless the `Business Units` it's associated with. So, initially, the restriction was implemented on the `Department Model` and, now, we're implementing the logic properly and introducing a new parameter to department endpoints, so the client will define which type of departments it needs. -- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142)) +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142) by [@renatobecker](https://github.com/renatobecker)) -- Adding Custom Fields to show on user info check ([#20955](https://github.com/RocketChat/Rocket.Chat/pull/20955)) +- Adding Custom Fields to show on user info check ([#20955](https://github.com/RocketChat/Rocket.Chat/pull/20955) by [@tassoevan](https://github.com/tassoevan)) The setting custom fields to show under user info was not being used when rendering fields in user info. This pr adds those checks and only renders the fields mentioned under in admin -> accounts -> Custom Fields to Show in User Info. @@ -5493,11 +5595,11 @@ Added 'add-team-channel' permission to the 2 buttons in team channels contextual bar, for adding channels to teams. -- Adding retentionEnabledDefault check before showing warning message ([#20692](https://github.com/RocketChat/Rocket.Chat/pull/20692)) +- Adding retentionEnabledDefault check before showing warning message ([#20692](https://github.com/RocketChat/Rocket.Chat/pull/20692) by [@tassoevan](https://github.com/tassoevan)) Added check for retentionEnabledDefault before showing prune warning message. -- App crashes when downloads come from WebDAV and the server is not available ([#21985](https://github.com/RocketChat/Rocket.Chat/pull/21985)) +- App crashes when downloads come from WebDAV and the server is not available ([#21985](https://github.com/RocketChat/Rocket.Chat/pull/21985) by [@KevLehman](https://github.com/KevLehman)) - App license error detail message removed ([#22091](https://github.com/RocketChat/Rocket.Chat/pull/22091)) @@ -5509,9 +5611,9 @@ Captura de Tela 2021-05-06 às 18 07 07 -- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015)) +- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Contact Bar not reactive ([#22016](https://github.com/RocketChat/Rocket.Chat/pull/22016) by [@rafaelblink](https://github.com/rafaelblink)) +- Contact Bar not reactive ([#22016](https://github.com/RocketChat/Rocket.Chat/pull/22016) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) - Convert a channel to Team Modal Visual Issues ([#21967](https://github.com/RocketChat/Rocket.Chat/pull/21967)) @@ -5525,7 +5627,7 @@ - Custom OAuth not being completely deleted ([#21637](https://github.com/RocketChat/Rocket.Chat/pull/21637) by [@siva2204](https://github.com/siva2204)) -- Directory Table's Sort Function ([#21921](https://github.com/RocketChat/Rocket.Chat/pull/21921)) +- Directory Table's Sort Function ([#21921](https://github.com/RocketChat/Rocket.Chat/pull/21921) by [@tassoevan](https://github.com/tassoevan)) ### TableRow Margin Issue: ![image](https://user-images.githubusercontent.com/27704687/116907348-d6a07f80-ac17-11eb-9411-edfe0906bfe1.png) @@ -5535,7 +5637,7 @@ - Discussion names showing a random value ([#22172](https://github.com/RocketChat/Rocket.Chat/pull/22172)) -- Dismiss button for save your encryption password dialog Issue#13557 ([#19872](https://github.com/RocketChat/Rocket.Chat/pull/19872) by [@savish28](https://github.com/savish28)) +- Dismiss button for save your encryption password dialog Issue#13557 ([#19872](https://github.com/RocketChat/Rocket.Chat/pull/19872) by [@savish28](https://github.com/savish28) & [@tassoevan](https://github.com/tassoevan)) - Display Modes ([#22058](https://github.com/RocketChat/Rocket.Chat/pull/22058)) @@ -5555,7 +5657,7 @@ https://user-images.githubusercontent.com/45966964/117087470-d3101400-ad4f-11eb-8f44-0ebca830a4d8.mp4 -- errors when viewing a room that you're not subscribed to ([#21984](https://github.com/RocketChat/Rocket.Chat/pull/21984)) +- errors when viewing a room that you're not subscribed to ([#21984](https://github.com/RocketChat/Rocket.Chat/pull/21984) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Files list will not show deleted files. ([#21732](https://github.com/RocketChat/Rocket.Chat/pull/21732) by [@Darshilp326](https://github.com/Darshilp326)) @@ -5645,7 +5747,7 @@ - Missing proper permissions on Teams Channels ([#21946](https://github.com/RocketChat/Rocket.Chat/pull/21946)) -- No warning message is sent when user is removed from a team's main channel ([#21949](https://github.com/RocketChat/Rocket.Chat/pull/21949)) +- No warning message is sent when user is removed from a team's main channel ([#21949](https://github.com/RocketChat/Rocket.Chat/pull/21949) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Send a warning message to a team's main channel when a user is removed from the team; - Trigger events while removing a user from a team's main channel; @@ -5653,9 +5755,9 @@ - Not possible accept video call if "Hide right sidebar with click" is enabled ([#22175](https://github.com/RocketChat/Rocket.Chat/pull/22175)) -- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969)) +- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969) by [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Open a new DM throwing error 404 ([#22100](https://github.com/RocketChat/Rocket.Chat/pull/22100)) +- Open a new DM throwing error 404 ([#22100](https://github.com/RocketChat/Rocket.Chat/pull/22100) by [@tassoevan](https://github.com/tassoevan)) Adapts the `openRoom` function to the new signature of `createDirectMessage`. @@ -5683,7 +5785,7 @@ ![redirect](https://user-images.githubusercontent.com/27704687/117078454-498d2180-ad10-11eb-9df2-936552a2b3ce.gif) -- Remove referer header when requesting attachment data ([#21987](https://github.com/RocketChat/Rocket.Chat/pull/21987)) +- Remove referer header when requesting attachment data ([#21987](https://github.com/RocketChat/Rocket.Chat/pull/21987) by [@KevLehman](https://github.com/KevLehman)) - Removed fields from User Info for which the user doesn't have permissions. ([#20923](https://github.com/RocketChat/Rocket.Chat/pull/20923) by [@Darshilp326](https://github.com/Darshilp326)) @@ -5691,11 +5793,11 @@ https://user-images.githubusercontent.com/55157259/109381351-f2c62e80-78ff-11eb-9289-e11072bf62f8.mp4 -- Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint ([#21539](https://github.com/RocketChat/Rocket.Chat/pull/21539)) +- Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint ([#21539](https://github.com/RocketChat/Rocket.Chat/pull/21539) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint. -- Scenarios where 2FA enforcement was not working properly ([#22017](https://github.com/RocketChat/Rocket.Chat/pull/22017)) +- Scenarios where 2FA enforcement was not working properly ([#22017](https://github.com/RocketChat/Rocket.Chat/pull/22017) by [@KevLehman](https://github.com/KevLehman)) - Tooltip pointer is blocking Text ([#21645](https://github.com/RocketChat/Rocket.Chat/pull/21645) by [@sumukhah](https://github.com/sumukhah)) @@ -5726,7 +5828,7 @@ - Unable to get channels, sort by most recent message ([#21701](https://github.com/RocketChat/Rocket.Chat/pull/21701) by [@sumukhah](https://github.com/sumukhah)) -- Unable to update app manually ([#21215](https://github.com/RocketChat/Rocket.Chat/pull/21215)) +- Unable to update app manually ([#21215](https://github.com/RocketChat/Rocket.Chat/pull/21215) by [@thassiov](https://github.com/thassiov)) It allows for update of apps using a zip file. @@ -5740,7 +5842,7 @@ ![Peek 2021-05-13 11-18](https://user-images.githubusercontent.com/27704687/118138696-03555380-b3dd-11eb-8549-730fff0b4ea8.gif) -- Uploading files from WebDAV ([#21948](https://github.com/RocketChat/Rocket.Chat/pull/21948)) +- Uploading files from WebDAV ([#21948](https://github.com/RocketChat/Rocket.Chat/pull/21948) by [@KevLehman](https://github.com/KevLehman)) - User Impersonation through sendMessage API ([#20391](https://github.com/RocketChat/Rocket.Chat/pull/20391) by [@lucassartor](https://github.com/lucassartor)) @@ -5760,11 +5862,11 @@ Burger was not visible on a certain width, specifically between 600 to 780. if width is more than 780px sidebar is shown, if less than 600 then burger icon was shown. But it wasn't shown between 600px to 780 px. It was because for showing burger icon we were only checking for `isMobile` which is lenght only less than 600. So i added one more check for condition if length is less than 780 px. -- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947)) +- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947) by [@MartinSchoeler](https://github.com/MartinSchoeler)) Fixes issue with the setting `Livechat_request_comment_when_closing_conversation` not working as intended -- Workaround for Autolinker phone problem ([#21515](https://github.com/RocketChat/Rocket.Chat/pull/21515)) +- Workaround for Autolinker phone problem ([#21515](https://github.com/RocketChat/Rocket.Chat/pull/21515) by [@tiagoevanp](https://github.com/tiagoevanp)) - Wrong color and size, thread list Metrics ([#21950](https://github.com/RocketChat/Rocket.Chat/pull/21950)) @@ -5780,15 +5882,15 @@ 🔍 Minor changes -- [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043)) +- [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043) by [@renatobecker](https://github.com/renatobecker)) -- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048)) +- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048) by [@renatobecker](https://github.com/renatobecker)) - [FIXf] Parent Room Tag Overlapping ([#22009](https://github.com/RocketChat/Rocket.Chat/pull/22009)) ![tag](https://user-images.githubusercontent.com/27704687/117905720-069bf280-b2aa-11eb-81ed-a5b8c2152d54.gif) -- Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo)) +- Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo) & [@KevLehman](https://github.com/KevLehman)) Added two more test cases to the slash-command test suite: - 'should return an error when the command does not exist''; @@ -5802,7 +5904,7 @@ I added the missing Teams label in the i18n folder for EN, FR & NL -- Chore: Add mongo 4.2 to array of mongo versions supported ([#21550](https://github.com/RocketChat/Rocket.Chat/pull/21550)) +- Chore: Add mongo 4.2 to array of mongo versions supported ([#21550](https://github.com/RocketChat/Rocket.Chat/pull/21550) by [@KevLehman](https://github.com/KevLehman)) - MongoDB 4.2 is now supported @@ -5814,7 +5916,7 @@ - Chore: Doc Client Readme ([#21588](https://github.com/RocketChat/Rocket.Chat/pull/21588) by [@umakantv](https://github.com/umakantv)) -- Chore: fix invalid type name on TS file ([#21814](https://github.com/RocketChat/Rocket.Chat/pull/21814)) +- Chore: fix invalid type name on TS file ([#21814](https://github.com/RocketChat/Rocket.Chat/pull/21814) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Chore: Storybook organization and errors ([#21923](https://github.com/RocketChat/Rocket.Chat/pull/21923)) @@ -5843,7 +5945,7 @@ - Merge master into develop & Set version to 3.15.0-develop ([#21847](https://github.com/RocketChat/Rocket.Chat/pull/21847)) -- Regression: Add "User left team" message type ([#22109](https://github.com/RocketChat/Rocket.Chat/pull/22109)) +- Regression: Add "User left team" message type ([#22109](https://github.com/RocketChat/Rocket.Chat/pull/22109) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add 'ult' system message type, which is sent when a user leaves a team ("Has left the team."). @@ -5851,7 +5953,7 @@ - Regression: Add impersonate permission to app role ([#22006](https://github.com/RocketChat/Rocket.Chat/pull/22006)) -- regression: bump Rocket.Chat.Fuselage package with paginated selects ([#22059](https://github.com/RocketChat/Rocket.Chat/pull/22059)) +- regression: bump Rocket.Chat.Fuselage package with paginated selects ([#22059](https://github.com/RocketChat/Rocket.Chat/pull/22059) by [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: discussions display on sidebar ([#22157](https://github.com/RocketChat/Rocket.Chat/pull/22157)) @@ -5861,9 +5963,9 @@ ### group by type inactive ![image](https://user-images.githubusercontent.com/27704687/119742054-56a7b700-be5d-11eb-8810-e31d4216f573.png) -- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068)) +- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Fix new 'message-impersonate' permission blocking livechat messages ([#21961](https://github.com/RocketChat/Rocket.Chat/pull/21961)) +- Regression: Fix new 'message-impersonate' permission blocking livechat messages ([#21961](https://github.com/RocketChat/Rocket.Chat/pull/21961) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Fix send message validation ([#21982](https://github.com/RocketChat/Rocket.Chat/pull/21982)) @@ -5875,9 +5977,9 @@ - Regression: Improve migration 225 ([#22099](https://github.com/RocketChat/Rocket.Chat/pull/22099)) -- Regression: Make referrer header configurable ([#22126](https://github.com/RocketChat/Rocket.Chat/pull/22126)) +- Regression: Make referrer header configurable ([#22126](https://github.com/RocketChat/Rocket.Chat/pull/22126) by [@KevLehman](https://github.com/KevLehman)) -- Regression: Match `name` or `fname` when fetching room to send notification for blocked log in attemps ([#22067](https://github.com/RocketChat/Rocket.Chat/pull/22067)) +- Regression: Match `name` or `fname` when fetching room to send notification for blocked log in attemps ([#22067](https://github.com/RocketChat/Rocket.Chat/pull/22067) by [@KevLehman](https://github.com/KevLehman)) - regression: Migration 225 setting not being fetched correctly ([#22108](https://github.com/RocketChat/Rocket.Chat/pull/22108)) @@ -5910,7 +6012,7 @@ - Remove memory leak from userData ([#22094](https://github.com/RocketChat/Rocket.Chat/pull/22094) by [@g-thome](https://github.com/g-thome)) -- String helpers ([#21988](https://github.com/RocketChat/Rocket.Chat/pull/21988)) +- String helpers ([#21988](https://github.com/RocketChat/Rocket.Chat/pull/21988) by [@tassoevan](https://github.com/tassoevan)) It uses string helpers from a external package (`@rocket.chat/string-helpers`). @@ -5926,38 +6028,38 @@ - [@Deepak-learner](https://github.com/Deepak-learner) - [@EduardoPicolo](https://github.com/EduardoPicolo) - [@Jeanstaquet](https://github.com/Jeanstaquet) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aviaviavi](https://github.com/aviaviavi) - [@bhavayAnand9](https://github.com/bhavayAnand9) - [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@lucassartor](https://github.com/lucassartor) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) - [@renancleyson-dev](https://github.com/renancleyson-dev) +- [@renatobecker](https://github.com/renatobecker) - [@savish28](https://github.com/savish28) - [@siva2204](https://github.com/siva2204) - [@sumukhah](https://github.com/sumukhah) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@umakantv](https://github.com/umakantv) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.14.5 @@ -6026,7 +6128,7 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142)) +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142) by [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes @@ -6036,10 +6138,13 @@
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@murtaza98](https://github.com/murtaza98) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.14.2 @@ -6066,11 +6171,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) - [@g-thome](https://github.com/g-thome) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.14.1 @@ -6085,7 +6190,7 @@ ### 🎉 New features -- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@rafaelblink](https://github.com/rafaelblink)) +- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) REQUIRES https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/447 @@ -6100,18 +6205,18 @@ - Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043)) -- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes -- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015)) +- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015) by [@tiagoevanp](https://github.com/tiagoevanp)) - IE11 support ([#21893](https://github.com/RocketChat/Rocket.Chat/pull/21893)) -- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969)) +- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969) by [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) -- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947)) +- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947) by [@MartinSchoeler](https://github.com/MartinSchoeler)) Fixes issue with the setting `Livechat_request_comment_when_closing_conversation` not working as intended @@ -6119,26 +6224,26 @@ 🔍 Minor changes -- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048)) +- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048) by [@renatobecker](https://github.com/renatobecker)) -- [Patch] [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22077](https://github.com/RocketChat/Rocket.Chat/pull/22077)) +- [Patch] [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22077](https://github.com/RocketChat/Rocket.Chat/pull/22077) by [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) -- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068)) +- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068) by [@MartinSchoeler](https://github.com/MartinSchoeler)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@dougfabris](https://github.com/dougfabris) - [@ggazzo](https://github.com/ggazzo) - [@murtaza98](https://github.com/murtaza98) -- [@renatobecker](https://github.com/renatobecker) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.14.0 `2021-04-28 · 9 🎉 · 9 🚀 · 55 🐛 · 38 🔍 · 30 👩‍💻👨‍💻` @@ -6160,13 +6265,13 @@ Adding the `user` information when installing and uninstalling an App to the Apps-Engine. -- **ENTERPRISE:** LDAP Teams Sync ([#21658](https://github.com/RocketChat/Rocket.Chat/pull/21658)) +- **ENTERPRISE:** LDAP Teams Sync ([#21658](https://github.com/RocketChat/Rocket.Chat/pull/21658) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - **Enterprise:** Second layer encryption for data transport (alpha) ([#21692](https://github.com/RocketChat/Rocket.Chat/pull/21692)) The second layer encryption for data transport works implementing the ECDH algorithm where session keys are exchanged before the rest of the communication. This feature is **enterprise only** since it requires the micro-services architecture and it's in the early stage of tests as an **alpha** feature and documentation may not be available before the beta stage. -- New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318)) +- New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318) by [@tassoevan](https://github.com/tassoevan)) This _small_ PR does the following: @@ -6182,11 +6287,11 @@ - `import/named`, avoiding broken named imports. - A bunch of components were refactored to match the new ESLint rules. -- On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink)) +- On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ![image](https://user-images.githubusercontent.com/34130764/115442079-3a49a680-a22f-11eb-9ee8-6c705097cd57.png) -- Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607)) +- Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; @@ -6196,20 +6301,20 @@ ![Password_Change](https://user-images.githubusercontent.com/36537004/115035168-ac726200-9ea2-11eb-93c6-fc8182ba5f3f.png) ![Password_History](https://user-images.githubusercontent.com/36537004/115035175-ad0af880-9ea2-11eb-9f40-94c6327a9854.png) -- REST endpoint `teams.update` ([#21134](https://github.com/RocketChat/Rocket.Chat/pull/21134) by [@g-thome](https://github.com/g-thome)) +- REST endpoint `teams.update` ([#21134](https://github.com/RocketChat/Rocket.Chat/pull/21134) by [@KevLehman](https://github.com/KevLehman) & [@g-thome](https://github.com/g-thome)) add teams.update endpoint -- Standard Importer Structure ([#18357](https://github.com/RocketChat/Rocket.Chat/pull/18357)) +- Standard Importer Structure ([#18357](https://github.com/RocketChat/Rocket.Chat/pull/18357) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🚀 Improvements -- **APPS:** Scheduler option to skip immediate execution of recurring jobs ([#21353](https://github.com/RocketChat/Rocket.Chat/pull/21353) by [@lolimay](https://github.com/lolimay)) +- **APPS:** Scheduler option to skip immediate execution of recurring jobs ([#21353](https://github.com/RocketChat/Rocket.Chat/pull/21353) by [@lolimay](https://github.com/lolimay) & [@thassiov](https://github.com/thassiov)) Create and schedule a task manually at `scheduleRecurring` method so the first iteration runs after the configured interval. This is accomplished by adding the setting `skipImmediate: true` when setting up the task. -- Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016)) +- Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016) by [@matheusbsilva137](https://github.com/matheusbsilva137)) Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): - admin; @@ -6231,17 +6336,17 @@ - Add support to range downloads on file system storage ([#21463](https://github.com/RocketChat/Rocket.Chat/pull/21463)) -- Alert on team deletion ([#21617](https://github.com/RocketChat/Rocket.Chat/pull/21617)) +- Alert on team deletion ([#21617](https://github.com/RocketChat/Rocket.Chat/pull/21617) by [@MartinSchoeler](https://github.com/MartinSchoeler)) Screen Shot 2021-04-16 at 7 03 30 PM -- Do not require pre-configured tags in Omnichannel chats ([#21488](https://github.com/RocketChat/Rocket.Chat/pull/21488) by [@rafaelblink](https://github.com/rafaelblink)) +- Do not require pre-configured tags in Omnichannel chats ([#21488](https://github.com/RocketChat/Rocket.Chat/pull/21488) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- OEmbed details by requesting using the accept language header on the request ([#21686](https://github.com/RocketChat/Rocket.Chat/pull/21686)) +- OEmbed details by requesting using the accept language header on the request ([#21686](https://github.com/RocketChat/Rocket.Chat/pull/21686) by [@KevLehman](https://github.com/KevLehman)) - Send `Accept-Language` header on oembed requests -- Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593)) +- Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593) by [@KevLehman](https://github.com/KevLehman)) - Create new MediaService (ideally, should be in charge of all media-related operations) - Resize emojis to 128x128 @@ -6249,13 +6354,13 @@ ### 🐛 Bug fixes -- **Enterprise:** Omnichannel simultaneous chat limit is not properly checking the limit by department ([#21839](https://github.com/RocketChat/Rocket.Chat/pull/21839)) +- **Enterprise:** Omnichannel simultaneous chat limit is not properly checking the limit by department ([#21839](https://github.com/RocketChat/Rocket.Chat/pull/21839) by [@renatobecker](https://github.com/renatobecker)) The Omnichannel Concurrent Chat Limit feature is not working properly when checking the limit per department, the reason is that the algorithm that fetches the number of ongoing chats per agent wasn't considering the department of the subscriptions, hence, the number returned from DB was bigger than it should be. - Add tag input to Closing Chat modal ([#21462](https://github.com/RocketChat/Rocket.Chat/pull/21462) by [@rafaelblink](https://github.com/rafaelblink)) -- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469)) +- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469) by [@KevLehman](https://github.com/KevLehman)) - Fix Administration/Users pagination @@ -6269,7 +6374,7 @@ https://user-images.githubusercontent.com/45966964/114222225-93335800-996e-11eb-833f-568e83129aae.mp4 -- Allows more than 25 threads to be loaded, fixes #21507 ([#21508](https://github.com/RocketChat/Rocket.Chat/pull/21508) by [@Jeanstaquet](https://github.com/Jeanstaquet)) +- Allows more than 25 threads to be loaded, fixes #21507 ([#21508](https://github.com/RocketChat/Rocket.Chat/pull/21508) by [@Jeanstaquet](https://github.com/Jeanstaquet) & [@MartinSchoeler](https://github.com/MartinSchoeler)) - Allows to display more than 25 users maximum in the users list ([#21518](https://github.com/RocketChat/Rocket.Chat/pull/21518) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6284,27 +6389,27 @@ https://user-images.githubusercontent.com/45966964/114249895-364e9680-999c-11eb-985c-47aedc763488.mp4 -- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470)) +- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470) by [@thassiov](https://github.com/thassiov)) Fixes the marketplace app installation not correctly displaying the permissions modal. -- Archive permissions for room moderator ([#21563](https://github.com/RocketChat/Rocket.Chat/pull/21563)) +- Archive permissions for room moderator ([#21563](https://github.com/RocketChat/Rocket.Chat/pull/21563) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Attachment files are not rendered properly on SMS channels ([#21746](https://github.com/RocketChat/Rocket.Chat/pull/21746)) +- Attachment files are not rendered properly on SMS channels ([#21746](https://github.com/RocketChat/Rocket.Chat/pull/21746) by [@renatobecker](https://github.com/renatobecker)) -- Audio message same pattern as image message ([#21466](https://github.com/RocketChat/Rocket.Chat/pull/21466)) +- Audio message same pattern as image message ([#21466](https://github.com/RocketChat/Rocket.Chat/pull/21466) by [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/113760168-4c363000-96ec-11eb-9138-0fbcedb3fa42.png) -- Avoid sidebar being broke ([#21490](https://github.com/RocketChat/Rocket.Chat/pull/21490)) +- Avoid sidebar being broke ([#21490](https://github.com/RocketChat/Rocket.Chat/pull/21490) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Change margin size for quote messages ([#21461](https://github.com/RocketChat/Rocket.Chat/pull/21461)) +- Change margin size for quote messages ([#21461](https://github.com/RocketChat/Rocket.Chat/pull/21461) by [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/113723723-02d3e980-96c8-11eb-9bc7-70aab5ea8091.png) -- Change team private info text ([#21535](https://github.com/RocketChat/Rocket.Chat/pull/21535)) +- Change team private info text ([#21535](https://github.com/RocketChat/Rocket.Chat/pull/21535) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Change the active appearance for toolbox buttons ([#21416](https://github.com/RocketChat/Rocket.Chat/pull/21416)) +- Change the active appearance for toolbox buttons ([#21416](https://github.com/RocketChat/Rocket.Chat/pull/21416) by [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/113359447-2d1b5500-931e-11eb-81fa-86f60fcee3a9.png) @@ -6312,7 +6417,7 @@ Permissions 'start-discussion-other-user' and 'start-discussion' are checked everywhere before letting anyone start any discussions, this permission check was missing for message box actions, so added it. -- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink)) +- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Correcting the case there are no result in admin users list ([#21556](https://github.com/RocketChat/Rocket.Chat/pull/21556) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6320,7 +6425,7 @@ - Discussions not showing in Safari ([#21270](https://github.com/RocketChat/Rocket.Chat/pull/21270) by [@Kartik18g](https://github.com/Kartik18g)) -- Don't allow whitespace on bold, italic and strike ([#21483](https://github.com/RocketChat/Rocket.Chat/pull/21483)) +- Don't allow whitespace on bold, italic and strike ([#21483](https://github.com/RocketChat/Rocket.Chat/pull/21483) by [@MartinSchoeler](https://github.com/MartinSchoeler)) Stops the original markdown rendered from rendering empty bold, italic and strike text. Stops `_ _`, `* *` and `~ ~` @@ -6332,7 +6437,7 @@ ![image](https://user-images.githubusercontent.com/27704687/116125858-5ff60600-a69c-11eb-9859-41f7393b78bf.png) -- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink)) +- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Fix the bugs opening discussions ([#21557](https://github.com/RocketChat/Rocket.Chat/pull/21557) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6344,7 +6449,7 @@ - Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink)) +- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Margins on contextual bar information ([#21457](https://github.com/RocketChat/Rocket.Chat/pull/21457)) @@ -6367,49 +6472,49 @@ Additional checks on message_link field before rendering message contents -- Omnichannel Activity Monitor closing chats returned to the queue ([#21782](https://github.com/RocketChat/Rocket.Chat/pull/21782)) +- Omnichannel Activity Monitor closing chats returned to the queue ([#21782](https://github.com/RocketChat/Rocket.Chat/pull/21782) by [@renatobecker](https://github.com/renatobecker)) Fix `VisitorInactivityMonitor` is still monitoring rooms that returned to `Queue Chats` - Omnichannel current chats and agents grid aren't sorting by status properly ([#21616](https://github.com/RocketChat/Rocket.Chat/pull/21616) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485)) +- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485) by [@renatobecker](https://github.com/renatobecker)) The Omnichannel Queue Manager is returning outdated room object when delegating the chat to an agent, hence, our Livechat widget is affected and the agent assigned to the chat is not displayed on the widget, only after refreshing/reloading. - Omnichannel room information panel breaking due to lack of data verification ([#21608](https://github.com/RocketChat/Rocket.Chat/pull/21608) by [@rafaelblink](https://github.com/rafaelblink)) -- public teams not appearing on spotlight search results ([#21495](https://github.com/RocketChat/Rocket.Chat/pull/21495)) +- public teams not appearing on spotlight search results ([#21495](https://github.com/RocketChat/Rocket.Chat/pull/21495) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Remove all agent subscriptions when an Omnichannel chat is closed ([#21509](https://github.com/RocketChat/Rocket.Chat/pull/21509)) +- Remove all agent subscriptions when an Omnichannel chat is closed ([#21509](https://github.com/RocketChat/Rocket.Chat/pull/21509) by [@renatobecker](https://github.com/renatobecker)) -- Remove size prop from StatusBullet component ([#21428](https://github.com/RocketChat/Rocket.Chat/pull/21428)) +- Remove size prop from StatusBullet component ([#21428](https://github.com/RocketChat/Rocket.Chat/pull/21428) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Rename Omnichannel Rooms, Inquiries and Subscriptions when the Contact Name changes ([#21513](https://github.com/RocketChat/Rocket.Chat/pull/21513) by [@rafaelblink](https://github.com/rafaelblink)) +- Rename Omnichannel Rooms, Inquiries and Subscriptions when the Contact Name changes ([#21513](https://github.com/RocketChat/Rocket.Chat/pull/21513) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Rename team not working properly ([#21552](https://github.com/RocketChat/Rocket.Chat/pull/21552)) +- Rename team not working properly ([#21552](https://github.com/RocketChat/Rocket.Chat/pull/21552) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Selected channels are not showing in Teams ([#21669](https://github.com/RocketChat/Rocket.Chat/pull/21669) by [@sumukhah](https://github.com/sumukhah)) -- Send alternative color to unread sidebar icon ([#21432](https://github.com/RocketChat/Rocket.Chat/pull/21432)) +- Send alternative color to unread sidebar icon ([#21432](https://github.com/RocketChat/Rocket.Chat/pull/21432) by [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/113469819-08f76b00-9427-11eb-942e-783c186ba7cd.png) -- Show direct rooms as readonly when one of the users is deactivated ([#21684](https://github.com/RocketChat/Rocket.Chat/pull/21684)) +- Show direct rooms as readonly when one of the users is deactivated ([#21684](https://github.com/RocketChat/Rocket.Chat/pull/21684) by [@KevLehman](https://github.com/KevLehman)) -- Tag component is no longer rendering on Chat Room Information panel ([#21429](https://github.com/RocketChat/Rocket.Chat/pull/21429) by [@rafaelblink](https://github.com/rafaelblink)) +- Tag component is no longer rendering on Chat Room Information panel ([#21429](https://github.com/RocketChat/Rocket.Chat/pull/21429) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Team types in admin -> rooms. ([#21612](https://github.com/RocketChat/Rocket.Chat/pull/21612)) ![print](https://user-images.githubusercontent.com/40830821/115068327-82339b00-9ec8-11eb-8e37-726baf9d2db0.jpg) -- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491)) +- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491) by [@KevLehman](https://github.com/KevLehman)) - Fix teams.listRooms pagination for non-admin users - Too many request on loadHistory method ([#21594](https://github.com/RocketChat/Rocket.Chat/pull/21594)) -- Toolbox icons order ([#21739](https://github.com/RocketChat/Rocket.Chat/pull/21739)) +- Toolbox icons order ([#21739](https://github.com/RocketChat/Rocket.Chat/pull/21739) by [@tiagoevanp](https://github.com/tiagoevanp)) - Typos/missing elements in the French translation ([#21525](https://github.com/RocketChat/Rocket.Chat/pull/21525) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6419,18 +6524,18 @@ - Test_Desktop_Notifications was missing in the EN and FR file ![image](https://user-images.githubusercontent.com/45966964/114290186-e7792d80-9a7d-11eb-8164-3b5e72e93703.png) -- Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489)) +- Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489) by [@KevLehman](https://github.com/KevLehman)) - Fix `updateMessage` to avoid parsing URLs inside markdown - Honor `parseUrls` property when updating messages -- Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534)) +- Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534) by [@tiagoevanp](https://github.com/tiagoevanp)) - User status out of sync ([#21656](https://github.com/RocketChat/Rocket.Chat/pull/21656)) - Wrong title on Omnichannel contact information panel ([#21682](https://github.com/RocketChat/Rocket.Chat/pull/21682) by [@rafaelblink](https://github.com/rafaelblink)) -- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink)) +- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Wrong user in user info ([#21451](https://github.com/RocketChat/Rocket.Chat/pull/21451)) @@ -6448,9 +6553,9 @@ The link for deployment methods in readme was corrected from https://rocket.chat/docs/installation/paas-deployments/ to https://docs.rocket.chat/installation/paas-deployments Some more links to the documentations were giving 404 error which hence updated. -- [Improve] Remove useless tabbar options from Omnichannel rooms ([#21561](https://github.com/RocketChat/Rocket.Chat/pull/21561) by [@rafaelblink](https://github.com/rafaelblink)) +- [Improve] Remove useless tabbar options from Omnichannel rooms ([#21561](https://github.com/RocketChat/Rocket.Chat/pull/21561) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527)) +- A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527) by [@tassoevan](https://github.com/tassoevan)) - The Meteor package **`kadira:blaze-layout` was removed**; - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; @@ -6478,7 +6583,7 @@ - Chore: Do not stop animations on Test Mode ([#21484](https://github.com/RocketChat/Rocket.Chat/pull/21484)) -- Chore: Increase testing coverage on password policy class ([#21482](https://github.com/RocketChat/Rocket.Chat/pull/21482)) +- Chore: Increase testing coverage on password policy class ([#21482](https://github.com/RocketChat/Rocket.Chat/pull/21482) by [@KevLehman](https://github.com/KevLehman)) - Chore: Meteor update to 2.1.1 ([#21494](https://github.com/RocketChat/Rocket.Chat/pull/21494)) @@ -6486,7 +6591,7 @@ Meteor change log https://github.com/meteor/meteor/blob/devel/History.md#v211-2021-04-06 -- Chore: Remove control character from room model operation ([#21493](https://github.com/RocketChat/Rocket.Chat/pull/21493)) +- Chore: Remove control character from room model operation ([#21493](https://github.com/RocketChat/Rocket.Chat/pull/21493) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Fix typo in app/apps/README file ([#21204](https://github.com/RocketChat/Rocket.Chat/pull/21204) by [@sauravjoshi23](https://github.com/sauravjoshi23)) @@ -6503,7 +6608,7 @@ - Merge master into develop & Set version to 3.14.0-develop ([#21441](https://github.com/RocketChat/Rocket.Chat/pull/21441)) -- QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778)) +- QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778) by [@KevLehman](https://github.com/KevLehman)) - Fixed canAccessRoom validation - Added e2e tests @@ -6538,11 +6643,11 @@ - regression: Markdown broken on safari ([#21780](https://github.com/RocketChat/Rocket.Chat/pull/21780)) -- Regression: Problem with Importer's logs ([#21812](https://github.com/RocketChat/Rocket.Chat/pull/21812)) +- Regression: Problem with Importer's logs ([#21812](https://github.com/RocketChat/Rocket.Chat/pull/21812) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: React + Blaze reconciliation ([#21567](https://github.com/RocketChat/Rocket.Chat/pull/21567)) -- Regression: Reactivate direct conversations only if all involved users are active ([#21714](https://github.com/RocketChat/Rocket.Chat/pull/21714)) +- Regression: Reactivate direct conversations only if all involved users are active ([#21714](https://github.com/RocketChat/Rocket.Chat/pull/21714) by [@KevLehman](https://github.com/KevLehman)) - Regression: Reconnection not working properly due to changes on ECHD Proxy ([#21741](https://github.com/RocketChat/Rocket.Chat/pull/21741)) @@ -6550,11 +6655,11 @@ - regression: Team Channels actions ([#21417](https://github.com/RocketChat/Rocket.Chat/pull/21417)) -- Regression: team sync not accepting multiple teams ([#21768](https://github.com/RocketChat/Rocket.Chat/pull/21768)) +- Regression: team sync not accepting multiple teams ([#21768](https://github.com/RocketChat/Rocket.Chat/pull/21768) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Unread Threads Header and List ([#21816](https://github.com/RocketChat/Rocket.Chat/pull/21816)) -- Regression: Update fuselage for icons fix ([#21809](https://github.com/RocketChat/Rocket.Chat/pull/21809)) +- Regression: Update fuselage for icons fix ([#21809](https://github.com/RocketChat/Rocket.Chat/pull/21809) by [@MartinSchoeler](https://github.com/MartinSchoeler)) @@ -6562,36 +6667,36 @@ - [@Jeanstaquet](https://github.com/Jeanstaquet) - [@Kartik18g](https://github.com/Kartik18g) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@g-thome](https://github.com/g-thome) - [@im-adithya](https://github.com/im-adithya) - [@joshi008](https://github.com/joshi008) - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) - [@sauravjoshi23](https://github.com/sauravjoshi23) - [@sumukhah](https://github.com/sumukhah) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@r0zbot](https://github.com/r0zbot) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.13.5 @@ -6626,17 +6731,17 @@ - Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491)) +- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491) by [@KevLehman](https://github.com/KevLehman)) - Fix teams.listRooms pagination for non-admin users ### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.13.2 @@ -6661,10 +6766,13 @@ -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@KevLehman](https://github.com/KevLehman) - [@renatobecker](https://github.com/renatobecker) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 3.13.1 @@ -6681,49 +6789,49 @@ - Add tag input to Closing Chat modal ([#21462](https://github.com/RocketChat/Rocket.Chat/pull/21462) by [@rafaelblink](https://github.com/rafaelblink)) -- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469)) +- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469) by [@KevLehman](https://github.com/KevLehman)) - Fix Administration/Users pagination -- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470)) +- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470) by [@thassiov](https://github.com/thassiov)) Fixes the marketplace app installation not correctly displaying the permissions modal. -- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink)) +- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink)) +- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Header component breaking if user is not part of teams room. ([#21465](https://github.com/RocketChat/Rocket.Chat/pull/21465)) -- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink)) +- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485)) +- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485) by [@renatobecker](https://github.com/renatobecker)) The Omnichannel Queue Manager is returning outdated room object when delegating the chat to an agent, hence, our Livechat widget is affected and the agent assigned to the chat is not displayed on the widget, only after refreshing/reloading. -- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink)) +- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes -- Release 3.13.1 ([#21486](https://github.com/RocketChat/Rocket.Chat/pull/21486) by [@rafaelblink](https://github.com/rafaelblink)) +- Release 3.13.1 ([#21486](https://github.com/RocketChat/Rocket.Chat/pull/21486) by [@KevLehman](https://github.com/KevLehman) & [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker))
### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@thassiov](https://github.com/thassiov) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@thassiov](https://github.com/thassiov) # 3.13.0 `2021-04-04 · 7 🎉 · 11 🚀 · 36 🐛 · 61 🔍 · 38 👩‍💻👨‍💻` @@ -6746,7 +6854,7 @@ Added events and errors that trigger when a user leaves a room. That way it can communicate with the Apps-Engine by the `IPreRoomUserLeave` and `IPostRoomUserLeave` event interfaces. -- **Enterprise:** Omnichannel On-Hold Queue ([#20945](https://github.com/RocketChat/Rocket.Chat/pull/20945)) +- **Enterprise:** Omnichannel On-Hold Queue ([#20945](https://github.com/RocketChat/Rocket.Chat/pull/20945) by [@renatobecker](https://github.com/renatobecker)) ### About this feature This feature has been introduced to deal with Inactive chats. A chat is considered Inactive if an Omnichannel End User (aka Visitor) has not replied back to an agent in some time. These types of inactive chats become very important when an organisation has a limit set for `Max Simultaneous Chats per agent` which is defined by the following setting :point_down: , as more number of Inactive chats would directly affect an agent's productivity. @@ -6801,7 +6909,7 @@ - Quick action buttons for Omnichannel ([#21123](https://github.com/RocketChat/Rocket.Chat/pull/21123) by [@rafaelblink](https://github.com/rafaelblink)) -- Teams ([#20966](https://github.com/RocketChat/Rocket.Chat/pull/20966) by [@g-thome](https://github.com/g-thome)) +- Teams ([#20966](https://github.com/RocketChat/Rocket.Chat/pull/20966) by [@g-thome](https://github.com/g-thome) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) ## Teams @@ -6857,11 +6965,11 @@ https://user-images.githubusercontent.com/28918901/103813540-43e73e00-5086-11eb-8592-2877eb650f3e.mp4 -- Back to threads list button on threads contextual bar ([#20882](https://github.com/RocketChat/Rocket.Chat/pull/20882)) +- Back to threads list button on threads contextual bar ([#20882](https://github.com/RocketChat/Rocket.Chat/pull/20882) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/108926702-ad62e200-761d-11eb-8c18-5406246a6955.png) -- Better new channel popover ([#21018](https://github.com/RocketChat/Rocket.Chat/pull/21018)) +- Better new channel popover ([#21018](https://github.com/RocketChat/Rocket.Chat/pull/21018) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - grammatical typos in pull request template ([#21115](https://github.com/RocketChat/Rocket.Chat/pull/21115) by [@sumukhah](https://github.com/sumukhah)) @@ -6877,9 +6985,9 @@ - Make debug logs of Apps configurable via Log_Level setting in the Admin panel ([#21000](https://github.com/RocketChat/Rocket.Chat/pull/21000) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Re-design Omnichannel Room Info Panel ([#21199](https://github.com/RocketChat/Rocket.Chat/pull/21199) by [@rafaelblink](https://github.com/rafaelblink)) +- Re-design Omnichannel Room Info Panel ([#21199](https://github.com/RocketChat/Rocket.Chat/pull/21199) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Set description in create channel modal ([#21132](https://github.com/RocketChat/Rocket.Chat/pull/21132)) +- Set description in create channel modal ([#21132](https://github.com/RocketChat/Rocket.Chat/pull/21132) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) - Sort Users List In Case Insensitive Manner ([#20790](https://github.com/RocketChat/Rocket.Chat/pull/20790) by [@aditya-mitra](https://github.com/aditya-mitra)) @@ -6897,7 +7005,7 @@ ### 🐛 Bug fixes -- 'Chats in Progress' Section is not rendering when the routing algorithm is not Manual Selection ([#21324](https://github.com/RocketChat/Rocket.Chat/pull/21324)) +- 'Chats in Progress' Section is not rendering when the routing algorithm is not Manual Selection ([#21324](https://github.com/RocketChat/Rocket.Chat/pull/21324) by [@renatobecker](https://github.com/renatobecker)) - "Taken At" and "Average of Response Time" fields not rendering properly on Room Information panel ([#21365](https://github.com/RocketChat/Rocket.Chat/pull/21365) by [@rafaelblink](https://github.com/rafaelblink)) @@ -6919,7 +7027,7 @@ Added hide unread counter check, if the show unread messages is turned off, now unread messages badge won't be shown to user. -- Broken message fields attachment handling ([#21069](https://github.com/RocketChat/Rocket.Chat/pull/21069)) +- Broken message fields attachment handling ([#21069](https://github.com/RocketChat/Rocket.Chat/pull/21069) by [@tassoevan](https://github.com/tassoevan)) Avoids an `undefined` value to break a rendered attachment. @@ -6958,7 +7066,7 @@ Added toast and disabled save. -- Ensure E2E is enabled/disabled on sending message ([#21084](https://github.com/RocketChat/Rocket.Chat/pull/21084)) +- Ensure E2E is enabled/disabled on sending message ([#21084](https://github.com/RocketChat/Rocket.Chat/pull/21084) by [@tassoevan](https://github.com/tassoevan)) Rooms which were encrypted somewhere in the past still could encrypt messages due to a race condition due to a query over `Subscriptions` collection. @@ -6972,15 +7080,15 @@ After : ![search_final](https://user-images.githubusercontent.com/56491104/111471521-fe628380-874e-11eb-8fa3-d1edb57587e1.png) -- Follow thread action on threads list ([#20881](https://github.com/RocketChat/Rocket.Chat/pull/20881)) +- Follow thread action on threads list ([#20881](https://github.com/RocketChat/Rocket.Chat/pull/20881) by [@tassoevan](https://github.com/tassoevan)) https://user-images.githubusercontent.com/27704687/108925036-a4bcdc80-761a-11eb-83b8-2df8960f74cb.mp4 - Iframe flags for audio and video on the BigBlueButton integration ([#20879](https://github.com/RocketChat/Rocket.Chat/pull/20879) by [@fcecagno](https://github.com/fcecagno)) -- Inactivity Time field displaying wrong information ([#21363](https://github.com/RocketChat/Rocket.Chat/pull/21363) by [@rafaelblink](https://github.com/rafaelblink)) +- Inactivity Time field displaying wrong information ([#21363](https://github.com/RocketChat/Rocket.Chat/pull/21363) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Incorrect time format of the Queue Time field on the room information page ([#21394](https://github.com/RocketChat/Rocket.Chat/pull/21394) by [@rafaelblink](https://github.com/rafaelblink)) +- Incorrect time format of the Queue Time field on the room information page ([#21394](https://github.com/RocketChat/Rocket.Chat/pull/21394) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Make custom emoji file required ([#19583](https://github.com/RocketChat/Rocket.Chat/pull/19583) by [@m-shreyansh](https://github.com/m-shreyansh)) @@ -7003,11 +7111,11 @@ https://user-images.githubusercontent.com/69837339/111953097-274a9600-8b0c-11eb-9177-bec388b042bd.mp4 -- New Channel popover not closing ([#21080](https://github.com/RocketChat/Rocket.Chat/pull/21080)) +- New Channel popover not closing ([#21080](https://github.com/RocketChat/Rocket.Chat/pull/21080) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) https://user-images.githubusercontent.com/17487063/110828228-92c37680-8275-11eb-9fce-fb40765935a3.mp4 -- OEmbedURLWidget - Show Full Embedded Text Description ([#20569](https://github.com/RocketChat/Rocket.Chat/pull/20569) by [@aditya-mitra](https://github.com/aditya-mitra)) +- OEmbedURLWidget - Show Full Embedded Text Description ([#20569](https://github.com/RocketChat/Rocket.Chat/pull/20569) by [@aditya-mitra](https://github.com/aditya-mitra) & [@tassoevan](https://github.com/tassoevan)) Embeds were cutoff when either _urls had a long description_. This was handled by removing `overflow:hidden;text-overflow:ellipsis;` from the inline styles in [`oembedUrlWidget.html`](https://github.com/RocketChat/Rocket.Chat/blob/develop/app/oembed/client/oembedUrlWidget.html#L28). @@ -7020,7 +7128,7 @@ ![now](https://user-images.githubusercontent.com/55396651/107110794-ca06c800-6870-11eb-9b3b-168679936612.png) -- Reactions list showing users in reactions option of message action. ([#20753](https://github.com/RocketChat/Rocket.Chat/pull/20753) by [@Darshilp326](https://github.com/Darshilp326)) +- Reactions list showing users in reactions option of message action. ([#20753](https://github.com/RocketChat/Rocket.Chat/pull/20753) by [@Darshilp326](https://github.com/Darshilp326) & [@tiagoevanp](https://github.com/tiagoevanp)) Reactions list shows emojis with respected users who have reacted with that emoji. @@ -7036,7 +7144,7 @@ ### After ![Screenshot from 2021-01-24 20-54-06](https://user-images.githubusercontent.com/38764067/105634940-82eb0100-5e86-11eb-8b90-e97a43c5e938.png) -- Replace wrong field description on Room Information panel ([#21395](https://github.com/RocketChat/Rocket.Chat/pull/21395) by [@rafaelblink](https://github.com/rafaelblink)) +- Replace wrong field description on Room Information panel ([#21395](https://github.com/RocketChat/Rocket.Chat/pull/21395) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Reply count of message is decreased after a message from thread is deleted ([#19977](https://github.com/RocketChat/Rocket.Chat/pull/19977)) @@ -7048,7 +7156,7 @@ https://user-images.githubusercontent.com/55157259/111617086-b30cab80-8808-11eb-8740-3b4ffacfc322.mp4 -- Sidebar scroll missing full height ([#21071](https://github.com/RocketChat/Rocket.Chat/pull/21071)) +- Sidebar scroll missing full height ([#21071](https://github.com/RocketChat/Rocket.Chat/pull/21071) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/110708646-c05ae200-81d9-11eb-86da-1d6a2e99b6e5.png) @@ -7056,13 +7164,13 @@ Fix undefined in Prune Messages in direct -- Unexpected open or close visitor info ([#21094](https://github.com/RocketChat/Rocket.Chat/pull/21094)) +- Unexpected open or close visitor info ([#21094](https://github.com/RocketChat/Rocket.Chat/pull/21094) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) The VisitorInfo component closes or open every time a new message was sent, this PR fix that. -- Use the correct icons for DMs ([#21125](https://github.com/RocketChat/Rocket.Chat/pull/21125)) +- Use the correct icons for DMs ([#21125](https://github.com/RocketChat/Rocket.Chat/pull/21125) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) -- Visitors.info endpoint being called multiple times ([#21350](https://github.com/RocketChat/Rocket.Chat/pull/21350) by [@rafaelblink](https://github.com/rafaelblink)) +- Visitors.info endpoint being called multiple times ([#21350](https://github.com/RocketChat/Rocket.Chat/pull/21350) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Wrong license seats number administration info panel ([#21222](https://github.com/RocketChat/Rocket.Chat/pull/21222)) @@ -7074,11 +7182,11 @@ - [Fix] Broken useEffect opened new BBB Tab twice ([#20770](https://github.com/RocketChat/Rocket.Chat/pull/20770) by [@Cosnavel](https://github.com/Cosnavel)) -- Bump Livechat Widget ([#21264](https://github.com/RocketChat/Rocket.Chat/pull/21264)) +- Bump Livechat Widget ([#21264](https://github.com/RocketChat/Rocket.Chat/pull/21264) by [@renatobecker](https://github.com/renatobecker)) Update Livechat version to 1.9.0 -- Change the order of Sort Setup Wizard options ([#21073](https://github.com/RocketChat/Rocket.Chat/pull/21073)) +- Change the order of Sort Setup Wizard options ([#21073](https://github.com/RocketChat/Rocket.Chat/pull/21073) by [@tassoevan](https://github.com/tassoevan)) Sort options in select fields of settings during Setup Wizard according to browser's locale. @@ -7102,13 +7210,13 @@ - Chore: Meteor update 2.1 ([#21061](https://github.com/RocketChat/Rocket.Chat/pull/21061)) -- Chore: Remove `new Buffer` in favor of `Buffer.from` ([#20918](https://github.com/RocketChat/Rocket.Chat/pull/20918)) +- Chore: Remove `new Buffer` in favor of `Buffer.from` ([#20918](https://github.com/RocketChat/Rocket.Chat/pull/20918) by [@KevLehman](https://github.com/KevLehman)) - Changes `new Buffer` to `Buffer.from` since the first one is deprecated. -- EE Team Mentions ([#21418](https://github.com/RocketChat/Rocket.Chat/pull/21418)) +- EE Team Mentions ([#21418](https://github.com/RocketChat/Rocket.Chat/pull/21418) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015)) +- Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015) by [@KevLehman](https://github.com/KevLehman)) Add test for - settings/raw @@ -7116,60 +7224,60 @@ - Improve: NPS survey fetch ([#21263](https://github.com/RocketChat/Rocket.Chat/pull/21263)) -- Regression: New chat forwarding modal is not verifying mandatory values ([#21288](https://github.com/RocketChat/Rocket.Chat/pull/21288) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: New chat forwarding modal is not verifying mandatory values ([#21288](https://github.com/RocketChat/Rocket.Chat/pull/21288) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Regression: Add BreadCrumbs tag into auto-join items ([#21294](https://github.com/RocketChat/Rocket.Chat/pull/21294)) +- Regression: Add BreadCrumbs tag into auto-join items ([#21294](https://github.com/RocketChat/Rocket.Chat/pull/21294) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Add call to eraseRoom method ([#21392](https://github.com/RocketChat/Rocket.Chat/pull/21392)) +- Regression: Add call to eraseRoom method ([#21392](https://github.com/RocketChat/Rocket.Chat/pull/21392) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Replace `removeById` by `eraseRoom` method's call (which not only deletes the room, but also erases its subscriptions and triggers some apps-engine events). -- Regression: Add isLastOwner property on teams.listRoomsOfUser endpoint ([#21323](https://github.com/RocketChat/Rocket.Chat/pull/21323)) +- Regression: Add isLastOwner property on teams.listRoomsOfUser endpoint ([#21323](https://github.com/RocketChat/Rocket.Chat/pull/21323) by [@KevLehman](https://github.com/KevLehman)) - Regression: Add number of team members to teams.list and teams.listAll ([#21361](https://github.com/RocketChat/Rocket.Chat/pull/21361) by [@g-thome](https://github.com/g-thome)) -- Regression: Add scope to permission checks in Team's endpoints ([#21369](https://github.com/RocketChat/Rocket.Chat/pull/21369)) +- Regression: Add scope to permission checks in Team's endpoints ([#21369](https://github.com/RocketChat/Rocket.Chat/pull/21369) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Include scope (team's main room ID) in the permission checks; - Remove the `teamName` parameter from the `members`, `addMembers`, `updateMember` and `removeMembers` methods (since `teamId` will always be defined). -- Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327)) +- Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add support for queries (within the `query` parameter); - Add support to pagination (`offset` and `count`) when an user doesn't have the permission to get all rooms. -- Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351)) +- Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351) by [@KevLehman](https://github.com/KevLehman)) - Change `directory.js` to reduce function complexity - Add `teams` type of item. Directory will return all public teams & private teams the user is part of. -- Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295)) +- Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/112379914-7e489a80-8cc7-11eb-9b0b-e454bb05755d.png) -- Regression: Change name-error description ([#21385](https://github.com/RocketChat/Rocket.Chat/pull/21385)) +- Regression: Change name-error description ([#21385](https://github.com/RocketChat/Rocket.Chat/pull/21385) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Channel owner can't convert it into a team. ([#21349](https://github.com/RocketChat/Rocket.Chat/pull/21349)) +- Regression: Channel owner can't convert it into a team. ([#21349](https://github.com/RocketChat/Rocket.Chat/pull/21349) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Contact Chat History component not visible ([#21316](https://github.com/RocketChat/Rocket.Chat/pull/21316)) +- Regression: Contact Chat History component not visible ([#21316](https://github.com/RocketChat/Rocket.Chat/pull/21316) by [@renatobecker](https://github.com/renatobecker)) - Regression: Delete team member from related team's rooms ([#21401](https://github.com/RocketChat/Rocket.Chat/pull/21401)) - regression: Directory - teams tab search ([#21419](https://github.com/RocketChat/Rocket.Chat/pull/21419)) -- Regression: directory not showing public channels of public teams ([#21400](https://github.com/RocketChat/Rocket.Chat/pull/21400)) +- Regression: directory not showing public channels of public teams ([#21400](https://github.com/RocketChat/Rocket.Chat/pull/21400) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- regression: Discussion room crashing if not member of parent channel ([#21310](https://github.com/RocketChat/Rocket.Chat/pull/21310)) +- regression: Discussion room crashing if not member of parent channel ([#21310](https://github.com/RocketChat/Rocket.Chat/pull/21310) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Error clicking on non joined channels on team channel list ([#21422](https://github.com/RocketChat/Rocket.Chat/pull/21422)) -- Regression: Fix channels not being added to team on creation ([#21370](https://github.com/RocketChat/Rocket.Chat/pull/21370)) +- Regression: Fix channels not being added to team on creation ([#21370](https://github.com/RocketChat/Rocket.Chat/pull/21370) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Fix Members List Icon ([#21433](https://github.com/RocketChat/Rocket.Chat/pull/21433)) - Regression: Fix non encrypted rooms failing sending messages ([#21287](https://github.com/RocketChat/Rocket.Chat/pull/21287)) -- Regression: Fix reactivity on teamsMembers and roomMembers ([#21366](https://github.com/RocketChat/Rocket.Chat/pull/21366)) +- Regression: Fix reactivity on teamsMembers and roomMembers ([#21366](https://github.com/RocketChat/Rocket.Chat/pull/21366) by [@tassoevan](https://github.com/tassoevan)) - Regression: Fix TeamsChannels reactivity ([#21384](https://github.com/RocketChat/Rocket.Chat/pull/21384)) @@ -7181,17 +7289,17 @@ - Regression: Headers icon breaking DMs ([#21412](https://github.com/RocketChat/Rocket.Chat/pull/21412)) -- Regression: invalid teams permission check. ([#21374](https://github.com/RocketChat/Rocket.Chat/pull/21374)) +- Regression: invalid teams permission check. ([#21374](https://github.com/RocketChat/Rocket.Chat/pull/21374) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Modify canAccessRoom to adapt to teams specification ([#21372](https://github.com/RocketChat/Rocket.Chat/pull/21372)) +- Regression: Modify canAccessRoom to adapt to teams specification ([#21372](https://github.com/RocketChat/Rocket.Chat/pull/21372) by [@KevLehman](https://github.com/KevLehman)) -- Regression: New endpoint to list rooms available to be added to any team ([#21373](https://github.com/RocketChat/Rocket.Chat/pull/21373)) +- Regression: New endpoint to list rooms available to be added to any team ([#21373](https://github.com/RocketChat/Rocket.Chat/pull/21373) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Omnichannel agents can't access new action buttons ([#21306](https://github.com/RocketChat/Rocket.Chat/pull/21306)) +- Regression: Omnichannel agents can't access new action buttons ([#21306](https://github.com/RocketChat/Rocket.Chat/pull/21306) by [@renatobecker](https://github.com/renatobecker)) -- Regression: Permissions missing on new Room Edit and Contact Edit form ([#21315](https://github.com/RocketChat/Rocket.Chat/pull/21315) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: Permissions missing on new Room Edit and Contact Edit form ([#21315](https://github.com/RocketChat/Rocket.Chat/pull/21315) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Regression: Quick action button missing for Omnichannel On-Hold queue ([#21285](https://github.com/RocketChat/Rocket.Chat/pull/21285)) +- Regression: Quick action button missing for Omnichannel On-Hold queue ([#21285](https://github.com/RocketChat/Rocket.Chat/pull/21285) by [@renatobecker](https://github.com/renatobecker)) - Move the Manual On Hold button to the new Omnichannel Header ![image](https://user-images.githubusercontent.com/34130764/112291749-6ae10380-8cb6-11eb-94cd-e05efc14b1bf.png) @@ -7201,25 +7309,25 @@ - regression: Remove Breadcrumbs and update Tag component ([#21399](https://github.com/RocketChat/Rocket.Chat/pull/21399)) -- Regression: Remove channel action on add channel's modal don't work ([#21356](https://github.com/RocketChat/Rocket.Chat/pull/21356)) +- Regression: Remove channel action on add channel's modal don't work ([#21356](https://github.com/RocketChat/Rocket.Chat/pull/21356) by [@tassoevan](https://github.com/tassoevan)) ![removechannel-on-add-existing-modal](https://user-images.githubusercontent.com/27704687/112911017-eda8fa80-90ca-11eb-9c24-47a70be0c314.gif) ![image](https://user-images.githubusercontent.com/27704687/112911052-02858e00-90cb-11eb-85a2-0ef1f5f9ffd9.png) -- Regression: Remove primary color from button in TeamChannels component ([#21293](https://github.com/RocketChat/Rocket.Chat/pull/21293)) +- Regression: Remove primary color from button in TeamChannels component ([#21293](https://github.com/RocketChat/Rocket.Chat/pull/21293) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) -- regression: remove user modal not showing up ([#21348](https://github.com/RocketChat/Rocket.Chat/pull/21348)) +- regression: remove user modal not showing up ([#21348](https://github.com/RocketChat/Rocket.Chat/pull/21348) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Removing user from team doesn't remove them from the team's room. ([#21291](https://github.com/RocketChat/Rocket.Chat/pull/21291)) +- Regression: Removing user from team doesn't remove them from the team's room. ([#21291](https://github.com/RocketChat/Rocket.Chat/pull/21291) by [@KevLehman](https://github.com/KevLehman) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Remove subscription when calling `teams.removeMembers` -- Regression: Room Edit form not rendering priority and custom fields ([#21309](https://github.com/RocketChat/Rocket.Chat/pull/21309) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: Room Edit form not rendering priority and custom fields ([#21309](https://github.com/RocketChat/Rocket.Chat/pull/21309) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Regression: rooms breaking after deleting a room from a team ([#21421](https://github.com/RocketChat/Rocket.Chat/pull/21421)) -- regression: Sidebar reactivity ([#21296](https://github.com/RocketChat/Rocket.Chat/pull/21296)) +- regression: Sidebar reactivity ([#21296](https://github.com/RocketChat/Rocket.Chat/pull/21296) by [@tassoevan](https://github.com/tassoevan)) - Regression: Team icons in mention ([#21367](https://github.com/RocketChat/Rocket.Chat/pull/21367)) @@ -7227,11 +7335,11 @@ - regression: Team info permissions ([#21387](https://github.com/RocketChat/Rocket.Chat/pull/21387)) -- Regression: Teams should not have same name as users ([#21371](https://github.com/RocketChat/Rocket.Chat/pull/21371)) +- Regression: Teams should not have same name as users ([#21371](https://github.com/RocketChat/Rocket.Chat/pull/21371) by [@alansikora](https://github.com/alansikora)) -- regression: Unable to add users while creating a team ([#21354](https://github.com/RocketChat/Rocket.Chat/pull/21354)) +- regression: Unable to add users while creating a team ([#21354](https://github.com/RocketChat/Rocket.Chat/pull/21354) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Unify Contact information displayed on the Room header and Room Info ([#21312](https://github.com/RocketChat/Rocket.Chat/pull/21312) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: Unify Contact information displayed on the Room header and Room Info ([#21312](https://github.com/RocketChat/Rocket.Chat/pull/21312) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ![image](https://user-images.githubusercontent.com/34130764/112586659-35592900-8e22-11eb-94be-32bdff7ca883.png) @@ -7241,9 +7349,9 @@ - Regression: Unify team actions to add a room to a team ([#21386](https://github.com/RocketChat/Rocket.Chat/pull/21386)) -- Regression: unused names for team roles ([#21376](https://github.com/RocketChat/Rocket.Chat/pull/21376)) +- Regression: unused names for team roles ([#21376](https://github.com/RocketChat/Rocket.Chat/pull/21376) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328)) +- Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328) by [@KevLehman](https://github.com/KevLehman)) - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. @@ -7251,11 +7359,11 @@ - Regression: user actions in admin ([#21307](https://github.com/RocketChat/Rocket.Chat/pull/21307)) -- Regression: View Channels button in Team info ([#21289](https://github.com/RocketChat/Rocket.Chat/pull/21289)) +- Regression: View Channels button in Team info ([#21289](https://github.com/RocketChat/Rocket.Chat/pull/21289) by [@tassoevan](https://github.com/tassoevan)) -- Regression: When only 'teams' type is provided, show only rooms with teamMain on `rooms.adminRooms` endpoint ([#21322](https://github.com/RocketChat/Rocket.Chat/pull/21322)) +- Regression: When only 'teams' type is provided, show only rooms with teamMain on `rooms.adminRooms` endpoint ([#21322](https://github.com/RocketChat/Rocket.Chat/pull/21322) by [@KevLehman](https://github.com/KevLehman)) -- Release 3.13.0 ([#21437](https://github.com/RocketChat/Rocket.Chat/pull/21437) by [@PriyaBihani](https://github.com/PriyaBihani) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@fcecagno](https://github.com/fcecagno) & [@lucassartor](https://github.com/lucassartor) & [@shrinish123](https://github.com/shrinish123)) +- Release 3.13.0 ([#21437](https://github.com/RocketChat/Rocket.Chat/pull/21437) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@PriyaBihani](https://github.com/PriyaBihani) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@fcecagno](https://github.com/fcecagno) & [@lucassartor](https://github.com/lucassartor) & [@shrinish123](https://github.com/shrinish123) & [@tiagoevanp](https://github.com/tiagoevanp)) - Update Apps-Engine version ([#21398](https://github.com/RocketChat/Rocket.Chat/pull/21398)) @@ -7265,11 +7373,14 @@ - [@Cosnavel](https://github.com/Cosnavel) - [@Darshilp326](https://github.com/Darshilp326) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@PriyaBihani](https://github.com/PriyaBihani) - [@RonLek](https://github.com/RonLek) - [@Tirieru](https://github.com/Tirieru) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@aditya-mitra](https://github.com/aditya-mitra) +- [@alansikora](https://github.com/alansikora) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@cyberShaw](https://github.com/cyberShaw) - [@fcecagno](https://github.com/fcecagno) @@ -7278,31 +7389,28 @@ - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) - [@m-shreyansh](https://github.com/m-shreyansh) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) - [@reda-alaoui](https://github.com/reda-alaoui) +- [@renatobecker](https://github.com/renatobecker) - [@shrinish123](https://github.com/shrinish123) - [@sumukhah](https://github.com/sumukhah) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@vova-zush](https://github.com/vova-zush) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@r0zbot](https://github.com/r0zbot) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.12.7 @@ -7359,12 +7467,12 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@KevLehman](https://github.com/KevLehman) - [@g-thome](https://github.com/g-thome) +- [@matheusbsilva137](https://github.com/matheusbsilva137) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.12.1 @@ -7379,7 +7487,7 @@ ### 🚀 Improvements -- Close Call contextual bar after starting jitsi call. ([#21004](https://github.com/RocketChat/Rocket.Chat/pull/21004)) +- Close Call contextual bar after starting jitsi call. ([#21004](https://github.com/RocketChat/Rocket.Chat/pull/21004) by [@tassoevan](https://github.com/tassoevan)) After jitsi call is started, if the call is started in a new window then we should close contextual tab bar. So, when 'YES' is pressed on modal, we call handleClose function if openNewWindow is true, as call doesn't starts on tab bar, it starts on new window. @@ -7387,17 +7495,20 @@ ### 🐛 Bug fixes -- Missing spaces on attachment ([#21020](https://github.com/RocketChat/Rocket.Chat/pull/21020)) +- Missing spaces on attachment ([#21020](https://github.com/RocketChat/Rocket.Chat/pull/21020) by [@tassoevan](https://github.com/tassoevan)) -- Stopping Jitsi reload ([#20973](https://github.com/RocketChat/Rocket.Chat/pull/20973)) +- Stopping Jitsi reload ([#20973](https://github.com/RocketChat/Rocket.Chat/pull/20973) by [@tassoevan](https://github.com/tassoevan)) The Function where Jitsi call is started gets called many times due to `room.usernames` dep of useMemo, this dep triggers reloading of this function many times. So removing this dep from useMemo dependencies +### 👩‍💻👨‍💻 Contributors 😍 + +- [@tassoevan](https://github.com/tassoevan) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) -- [@tassoevan](https://github.com/tassoevan) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.12.0 @@ -7412,7 +7523,7 @@ ### 🎉 New features -- Button to unset Slackbridge's importIds ([#20549](https://github.com/RocketChat/Rocket.Chat/pull/20549)) +- Button to unset Slackbridge's importIds ([#20549](https://github.com/RocketChat/Rocket.Chat/pull/20549) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Cloud Workspace bridge ([#20838](https://github.com/RocketChat/Rocket.Chat/pull/20838)) @@ -7426,7 +7537,7 @@ ![image](https://user-images.githubusercontent.com/27704687/106945019-1386d400-6706-11eb-90db-c12b50f260d5.png) -- Statistics about language usage ([#20832](https://github.com/RocketChat/Rocket.Chat/pull/20832) by [@g-thome](https://github.com/g-thome)) +- Statistics about language usage ([#20832](https://github.com/RocketChat/Rocket.Chat/pull/20832) by [@g-thome](https://github.com/g-thome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) track what languages get picked the most as preferred ui language. @@ -7435,7 +7546,7 @@ ### 🚀 Improvements -- Add symbol to indicate apps' required settings in the UI ([#20447](https://github.com/RocketChat/Rocket.Chat/pull/20447)) +- Add symbol to indicate apps' required settings in the UI ([#20447](https://github.com/RocketChat/Rocket.Chat/pull/20447) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Apps are able to define **required** settings. These settings should not be left blank by the user and an error will be thrown and shown in the interface if an user attempts to save changes in the app details page leaving any required fields blank; ![prt_screen_required_app_settings_warning](https://user-images.githubusercontent.com/36537004/106032964-e73cd900-60af-11eb-8eab-c11fd651b593.png) @@ -7445,7 +7556,7 @@ - Add visual validation on users admin forms ([#20308](https://github.com/RocketChat/Rocket.Chat/pull/20308)) -- Added auto-focus for better user-experience. ([#19954](https://github.com/RocketChat/Rocket.Chat/pull/19954) by [@Darshilp326](https://github.com/Darshilp326)) +- Added auto-focus for better user-experience. ([#19954](https://github.com/RocketChat/Rocket.Chat/pull/19954) by [@Darshilp326](https://github.com/Darshilp326) & [@MartinSchoeler](https://github.com/MartinSchoeler)) - Added disable button check for send invite button ([#20337](https://github.com/RocketChat/Rocket.Chat/pull/20337)) @@ -7481,7 +7592,7 @@ It brings more flexibility, allowing us to use different hooks and different components for each header -- Check Livechat message length through REST API endpoint ([#20366](https://github.com/RocketChat/Rocket.Chat/pull/20366)) +- Check Livechat message length through REST API endpoint ([#20366](https://github.com/RocketChat/Rocket.Chat/pull/20366) by [@renatobecker](https://github.com/renatobecker)) Added checks for message length for livechat message api, it shouldn't exceed specified character limit. @@ -7489,11 +7600,11 @@ Included new variables in customizable ones -- Make message field required in Omnichannel Triggers form ([#20827](https://github.com/RocketChat/Rocket.Chat/pull/20827) by [@rafaelblink](https://github.com/rafaelblink)) +- Make message field required in Omnichannel Triggers form ([#20827](https://github.com/RocketChat/Rocket.Chat/pull/20827) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- New chat started system message for Omnichannel conversations ([#20814](https://github.com/RocketChat/Rocket.Chat/pull/20814) by [@rafaelblink](https://github.com/rafaelblink)) +- New chat started system message for Omnichannel conversations ([#20814](https://github.com/RocketChat/Rocket.Chat/pull/20814) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392)) +- Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) Remove: - react-window @@ -7504,11 +7615,11 @@ - react-virtuoso - rc-scrollbars -- Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778)) +- Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) - Selector for default custom oauth key field ([#20573](https://github.com/RocketChat/Rocket.Chat/pull/20573) by [@paulobernardoaf](https://github.com/paulobernardoaf)) -- Update rc-scrollbars ([#20733](https://github.com/RocketChat/Rocket.Chat/pull/20733)) +- Update rc-scrollbars ([#20733](https://github.com/RocketChat/Rocket.Chat/pull/20733) by [@tiagoevanp](https://github.com/tiagoevanp)) ### 🐛 Bug fixes @@ -7550,15 +7661,15 @@ So unsetting data if data isn't available to save. Will also fix bio and other fields. :) -- Admin Panel pages not visible in Safari ([#20912](https://github.com/RocketChat/Rocket.Chat/pull/20912)) +- Admin Panel pages not visible in Safari ([#20912](https://github.com/RocketChat/Rocket.Chat/pull/20912) by [@tiagoevanp](https://github.com/tiagoevanp)) - Announcement with multiple lines fixed. ([#20381](https://github.com/RocketChat/Rocket.Chat/pull/20381)) Announcements with multiple lines used to break UI for announcements bar. Fixed it by replacing all break lines in announcement with empty space (" ") . The announcement modal would work as usual and show all break lines. -- Atlassian Crowd login with 2FA enabled ([#20834](https://github.com/RocketChat/Rocket.Chat/pull/20834)) +- Atlassian Crowd login with 2FA enabled ([#20834](https://github.com/RocketChat/Rocket.Chat/pull/20834) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585)) +- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585) by [@tiagoevanp](https://github.com/tiagoevanp)) Added target = '_self' to attachment link, this seems to fix the problem, without this attribute, error page is displayed. @@ -7568,7 +7679,7 @@ https://user-images.githubusercontent.com/28918901/104483631-5adde100-55ee-11eb-9938-64146bce127e.mp4 -- CAS login failing due to TOTP requirement ([#20840](https://github.com/RocketChat/Rocket.Chat/pull/20840)) +- CAS login failing due to TOTP requirement ([#20840](https://github.com/RocketChat/Rocket.Chat/pull/20840) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Changed password input field for password access in edit room info. ([#20356](https://github.com/RocketChat/Rocket.Chat/pull/20356) by [@Darshilp326](https://github.com/Darshilp326)) @@ -7618,7 +7729,7 @@ - Download buttons on desktop app and CDN being ignored ([#20820](https://github.com/RocketChat/Rocket.Chat/pull/20820)) -- E2E issues ([#20704](https://github.com/RocketChat/Rocket.Chat/pull/20704)) +- E2E issues ([#20704](https://github.com/RocketChat/Rocket.Chat/pull/20704) by [@tassoevan](https://github.com/tassoevan)) - ESLint Warning - react-hooks/exhaustive-deps ([#20586](https://github.com/RocketChat/Rocket.Chat/pull/20586) by [@aditya-mitra](https://github.com/aditya-mitra)) @@ -7626,7 +7737,7 @@ - Event emitter warning ([#20663](https://github.com/RocketChat/Rocket.Chat/pull/20663)) -- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740)) +- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740) by [@renatobecker](https://github.com/renatobecker)) Due to a wrong property name, external applications were not able to change the priority of Omnichannel Inquires. @@ -7637,7 +7748,7 @@ https://user-images.githubusercontent.com/38764067/105613964-dfe5a900-5deb-11eb-80f2-21fc8dee57c0.mp4 -- Filters are not being applied correctly in Omnichannel Current Chats list ([#20320](https://github.com/RocketChat/Rocket.Chat/pull/20320) by [@rafaelblink](https://github.com/rafaelblink)) +- Filters are not being applied correctly in Omnichannel Current Chats list ([#20320](https://github.com/RocketChat/Rocket.Chat/pull/20320) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ### Before ![image](https://user-images.githubusercontent.com/2493803/105537672-082cb500-5cd1-11eb-8f1b-1726ba60420a.png) @@ -7653,17 +7764,17 @@ Able to Empty the highlighted text field in preferences -- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654)) +- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654) by [@tiagoevanp](https://github.com/tiagoevanp)) - height prop on departments agents table ([#20833](https://github.com/RocketChat/Rocket.Chat/pull/20833)) ![image](https://user-images.githubusercontent.com/27704687/108572412-fbf83f80-72f0-11eb-801a-5f659000325d.png) -- Hide system messages not working on second save ([#20679](https://github.com/RocketChat/Rocket.Chat/pull/20679)) +- Hide system messages not working on second save ([#20679](https://github.com/RocketChat/Rocket.Chat/pull/20679) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Icon for OTR messages ([#20713](https://github.com/RocketChat/Rocket.Chat/pull/20713)) +- Icon for OTR messages ([#20713](https://github.com/RocketChat/Rocket.Chat/pull/20713) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Incorrect display of "Reply in Direct Message" in MessageAction ([#17968](https://github.com/RocketChat/Rocket.Chat/pull/17968) by [@abrom](https://github.com/abrom)) +- Incorrect display of "Reply in Direct Message" in MessageAction ([#17968](https://github.com/RocketChat/Rocket.Chat/pull/17968) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@abrom](https://github.com/abrom)) [FIX] Incorrect display of "Reply in Direct Message" in MessageAction @@ -7671,7 +7782,7 @@ - Unread messages count won't be incremented when the message sent is on a thread (thread count is treated different) -- Links not opening in new tabs ([#20651](https://github.com/RocketChat/Rocket.Chat/pull/20651)) +- Links not opening in new tabs ([#20651](https://github.com/RocketChat/Rocket.Chat/pull/20651) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - List of Omnichannel triggers is not listing data ([#20624](https://github.com/RocketChat/Rocket.Chat/pull/20624) by [@rafaelblink](https://github.com/rafaelblink)) @@ -7700,30 +7811,30 @@ ![image](https://user-images.githubusercontent.com/27704687/107807002-510ee100-6d46-11eb-86e9-d65da7ab4129.png) -- Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744)) +- Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744) by [@matheusbsilva137](https://github.com/matheusbsilva137)) - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; - The new setting is turned off (`false` value) by default. -- New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670)) +- New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Notification worker stopping on error ([#20605](https://github.com/RocketChat/Rocket.Chat/pull/20605)) - OAuth Login not working on Firefox ([#20722](https://github.com/RocketChat/Rocket.Chat/pull/20722)) -- Omnichannel agents are unable to access the chat queue on the sidebar ([#20830](https://github.com/RocketChat/Rocket.Chat/pull/20830) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel agents are unable to access the chat queue on the sidebar ([#20830](https://github.com/RocketChat/Rocket.Chat/pull/20830) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662)) +- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662) by [@renatobecker](https://github.com/renatobecker)) The `Omnichannel Routing System` is no longer assigning chats to `bot` agents when the `bot` agent is the default agent of the inquiry. -- Open Visitor Info when omnichannel chat was open ([#20868](https://github.com/RocketChat/Rocket.Chat/pull/20868)) +- Open Visitor Info when omnichannel chat was open ([#20868](https://github.com/RocketChat/Rocket.Chat/pull/20868) by [@tiagoevanp](https://github.com/tiagoevanp)) - OTR issue ([#20592](https://github.com/RocketChat/Rocket.Chat/pull/20592)) Since the users are not being stored at the user collection anymore (thats a good thing actually), there is no such record to to fetch and show the username. -- Quoted messages from message links when user has no permission ([#20815](https://github.com/RocketChat/Rocket.Chat/pull/20815)) +- Quoted messages from message links when user has no permission ([#20815](https://github.com/RocketChat/Rocket.Chat/pull/20815) by [@KevLehman](https://github.com/KevLehman)) - Regenerate token modal on top of 2FA modal ([#20798](https://github.com/RocketChat/Rocket.Chat/pull/20798)) @@ -7738,7 +7849,7 @@ The getCommonRoomEvents() returned functions were bound to the starredMessages template twice. This was causing some bugs, as detailed in the Issue mentioned below. I removed the top events call that only bound the getCommonRoomEvents(). Therefore, only one call for the same is left, which is at the end of the file. Having the events bound just once removes the bugs mentioned. -- Remove warning problems from console ([#20800](https://github.com/RocketChat/Rocket.Chat/pull/20800)) +- Remove warning problems from console ([#20800](https://github.com/RocketChat/Rocket.Chat/pull/20800) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) - Removed tooltip in kebab menu options. ([#20498](https://github.com/RocketChat/Rocket.Chat/pull/20498) by [@Darshilp326](https://github.com/Darshilp326)) @@ -7746,7 +7857,7 @@ https://user-images.githubusercontent.com/55157259/106246146-a53ca000-6233-11eb-9874-cbd1b4331bc0.mp4 -- Retry icon comes out of the div ([#20390](https://github.com/RocketChat/Rocket.Chat/pull/20390) by [@im-adithya](https://github.com/im-adithya)) +- Retry icon comes out of the div ([#20390](https://github.com/RocketChat/Rocket.Chat/pull/20390) by [@im-adithya](https://github.com/im-adithya) & [@tiagoevanp](https://github.com/tiagoevanp)) Changed the height of the div container. @@ -7780,9 +7891,9 @@ Do not redirect to `/home` anymore after logging in with `resumeToken`. -- Server-side marked parsing ([#20665](https://github.com/RocketChat/Rocket.Chat/pull/20665)) +- Server-side marked parsing ([#20665](https://github.com/RocketChat/Rocket.Chat/pull/20665) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216)) +- Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Fix: Slack Importer crashes when importing a large users.json file - Fix: Slack importer crashes when messages have invalid mentions @@ -7794,7 +7905,7 @@ - Reduce max allowed BSON size to avoid possible issues in some servers. - Improve handling of very large channel files. -- star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@bhavayAnand9](https://github.com/bhavayAnand9)) +- star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@bhavayAnand9](https://github.com/bhavayAnand9)) - Threads Issues ([#20725](https://github.com/RocketChat/Rocket.Chat/pull/20725)) @@ -7831,13 +7942,13 @@ - Added types to Emitters ([#20819](https://github.com/RocketChat/Rocket.Chat/pull/20819)) -- Bump Livechat Widget ([#20843](https://github.com/RocketChat/Rocket.Chat/pull/20843)) +- Bump Livechat Widget ([#20843](https://github.com/RocketChat/Rocket.Chat/pull/20843) by [@renatobecker](https://github.com/renatobecker)) Update Livechat version to `1.8.0` . - Chore: Change error message when marking empty chat as unread ([#20250](https://github.com/RocketChat/Rocket.Chat/pull/20250) by [@lucassartor](https://github.com/lucassartor)) -- Chore: Disable Sessions Aggregates tests locally ([#20607](https://github.com/RocketChat/Rocket.Chat/pull/20607)) +- Chore: Disable Sessions Aggregates tests locally ([#20607](https://github.com/RocketChat/Rocket.Chat/pull/20607) by [@KevLehman](https://github.com/KevLehman)) Disable Session aggregates tests in local environments For context, refer to: #20161 @@ -7848,15 +7959,15 @@ - Chore: Remove node-sprite-generator dependency ([#20545](https://github.com/RocketChat/Rocket.Chat/pull/20545)) -- Chore: Try building micro services early on CI ([#20046](https://github.com/RocketChat/Rocket.Chat/pull/20046)) +- Chore: Try building micro services early on CI ([#20046](https://github.com/RocketChat/Rocket.Chat/pull/20046) by [@renatobecker](https://github.com/renatobecker)) - Chore: update RC with the latest fuselage-polyfills ([#20709](https://github.com/RocketChat/Rocket.Chat/pull/20709)) -- Exclude user's own password from /me endpoint ([#20735](https://github.com/RocketChat/Rocket.Chat/pull/20735)) +- Exclude user's own password from /me endpoint ([#20735](https://github.com/RocketChat/Rocket.Chat/pull/20735) by [@KevLehman](https://github.com/KevLehman)) - Fix: Add network observe plug to snap ([#20852](https://github.com/RocketChat/Rocket.Chat/pull/20852)) -- Improve: Add more API tests ([#20738](https://github.com/RocketChat/Rocket.Chat/pull/20738)) +- Improve: Add more API tests ([#20738](https://github.com/RocketChat/Rocket.Chat/pull/20738) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Add end-to-end tests for untested endpoints. @@ -7866,7 +7977,7 @@ - Merge master into develop & Set version to 3.12.0-develop ([#20533](https://github.com/RocketChat/Rocket.Chat/pull/20533)) -- Mixed client and server code on Storybook ([#20799](https://github.com/RocketChat/Rocket.Chat/pull/20799)) +- Mixed client and server code on Storybook ([#20799](https://github.com/RocketChat/Rocket.Chat/pull/20799) by [@tassoevan](https://github.com/tassoevan)) For Storybook to work, we've mocked all modules under `**/server/`, thus making them suitable to hold all code that refers Node.js modules. This implies some duplication, between `client/` and `server/` modules, mediated by modules under `libs/`. @@ -7886,13 +7997,13 @@ - Regression: Prevent Message Attachment rendering ([#20860](https://github.com/RocketChat/Rocket.Chat/pull/20860)) -- Remove `uiKitText` reference ([#20625](https://github.com/RocketChat/Rocket.Chat/pull/20625)) +- Remove `uiKitText` reference ([#20625](https://github.com/RocketChat/Rocket.Chat/pull/20625) by [@tassoevan](https://github.com/tassoevan)) -- Rewrite: CreateChannel modal component ([#20617](https://github.com/RocketChat/Rocket.Chat/pull/20617)) +- Rewrite: CreateChannel modal component ([#20617](https://github.com/RocketChat/Rocket.Chat/pull/20617) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) ![image](https://user-images.githubusercontent.com/17487063/107058434-5f438700-67b3-11eb-8cf2-1ad3d5008aa8.png) -- RoomFiles hook ([#20550](https://github.com/RocketChat/Rocket.Chat/pull/20550)) +- RoomFiles hook ([#20550](https://github.com/RocketChat/Rocket.Chat/pull/20550) by [@tiagoevanp](https://github.com/tiagoevanp)) - Update Apps-Engine version ([#20921](https://github.com/RocketChat/Rocket.Chat/pull/20921)) @@ -7907,6 +8018,8 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Darshilp326](https://github.com/Darshilp326) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RonLek](https://github.com/RonLek) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@abrom](https://github.com/abrom) @@ -7916,27 +8029,25 @@ - [@im-adithya](https://github.com/im-adithya) - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@pierreozoux](https://github.com/pierreozoux) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@r0zbot](https://github.com/r0zbot) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.11.5 @@ -7969,7 +8080,7 @@ ### 🐛 Bug fixes -- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740)) +- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740) by [@renatobecker](https://github.com/renatobecker)) Due to a wrong property name, external applications were not able to change the priority of Omnichannel Inquires. @@ -7982,11 +8093,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@g-thome](https://github.com/g-thome) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) # 3.11.1 `2021-02-10 · 5 🐛 · 6 👩‍💻👨‍💻` @@ -8000,17 +8111,17 @@ ### 🐛 Bug fixes -- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585)) +- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585) by [@tiagoevanp](https://github.com/tiagoevanp)) Added target = '_self' to attachment link, this seems to fix the problem, without this attribute, error page is displayed. -- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654)) +- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654) by [@tiagoevanp](https://github.com/tiagoevanp)) - Livechat bridge permission checkers ([#20653](https://github.com/RocketChat/Rocket.Chat/pull/20653) by [@lolimay](https://github.com/lolimay)) Update to latest patch version of the Apps-Engine with a fix for the Livechat bridge, as seen in https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/379 -- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662)) +- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662) by [@renatobecker](https://github.com/renatobecker)) The `Omnichannel Routing System` is no longer assigning chats to `bot` agents when the `bot` agent is the default agent of the inquiry. @@ -8019,13 +8130,13 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@lolimay](https://github.com/lolimay) +- [@renatobecker](https://github.com/renatobecker) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.11.0 @@ -8040,13 +8151,13 @@ ### 🎉 New features -- **Apps:** Apps Permission System ([#20078](https://github.com/RocketChat/Rocket.Chat/pull/20078)) +- **Apps:** Apps Permission System ([#20078](https://github.com/RocketChat/Rocket.Chat/pull/20078) by [@thassiov](https://github.com/thassiov)) - **Apps:** IPreFileUpload event ([#20285](https://github.com/RocketChat/Rocket.Chat/pull/20285) by [@lolimay](https://github.com/lolimay)) -- **ENTERPRISE:** Automatic transfer of unanswered conversations to another agent ([#20090](https://github.com/RocketChat/Rocket.Chat/pull/20090)) +- **ENTERPRISE:** Automatic transfer of unanswered conversations to another agent ([#20090](https://github.com/RocketChat/Rocket.Chat/pull/20090) by [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** Omnichannel Contact Manager as preferred agent for routing ([#20244](https://github.com/RocketChat/Rocket.Chat/pull/20244)) +- **ENTERPRISE:** Omnichannel Contact Manager as preferred agent for routing ([#20244](https://github.com/RocketChat/Rocket.Chat/pull/20244) by [@renatobecker](https://github.com/renatobecker)) If the `Contact-Manager` is assigned to a Visitor, the chat will automatically get transferred to the respective Contact-Manager, provided the Contact-Manager is online. In-case the Contact-Manager is offline, the chat will be transferred to any other online agent. We have provided a setting to control this auto-assignment feature @@ -8062,7 +8173,7 @@ - If the Contact-Manager is online, the chat will appear in the Queue of Contact-Manager **ONLY** - If the Contact-Manager is offline, the chat will appear in the Queue of all related Agents/Manager ( like it's done right now ) -- Banner system and NPS ([#20221](https://github.com/RocketChat/Rocket.Chat/pull/20221)) +- Banner system and NPS ([#20221](https://github.com/RocketChat/Rocket.Chat/pull/20221) by [@tassoevan](https://github.com/tassoevan)) More robust and scalable banner system for alerting users. @@ -8098,7 +8209,7 @@ ![image](https://user-images.githubusercontent.com/2493803/105428971-45d90180-5c2f-11eb-992a-022a3df94471.png) -- Encrypted Discussions and new Encryption Permissions ([#20201](https://github.com/RocketChat/Rocket.Chat/pull/20201)) +- Encrypted Discussions and new Encryption Permissions ([#20201](https://github.com/RocketChat/Rocket.Chat/pull/20201) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Server Info page ([#19517](https://github.com/RocketChat/Rocket.Chat/pull/19517)) @@ -8110,13 +8221,13 @@ Added a SAML setting to support updating room subscriptions each time a user logs in via SAML. Added a SAML setting to support including private rooms in SAML updated subscriptions (whether initial or on each logon). -- Autofocus on directory ([#20509](https://github.com/RocketChat/Rocket.Chat/pull/20509)) +- Autofocus on directory ([#20509](https://github.com/RocketChat/Rocket.Chat/pull/20509) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Don't use global search by default ([#19777](https://github.com/RocketChat/Rocket.Chat/pull/19777) by [@i-kychukov](https://github.com/i-kychukov) & [@ikyuchukov](https://github.com/ikyuchukov)) Global chat search is not set by default now. -- Message Collection Hooks ([#20121](https://github.com/RocketChat/Rocket.Chat/pull/20121)) +- Message Collection Hooks ([#20121](https://github.com/RocketChat/Rocket.Chat/pull/20121) by [@tassoevan](https://github.com/tassoevan)) Integrating a list of messages into a React component imposes some challenges. Its content is provided by some REST API calls and live-updated by streamer events. To avoid too much coupling with React Hooks, the structures `RecordList`, `MessageList` and their derivatives are simple event emitters created and connected on components via some simple hooks, like `useThreadsList()` and `useRecordList()`. @@ -8144,11 +8255,11 @@ Remove unnecessary spaces from the translation key, and added English translation value for the key. -- **Apps:** Don't show the "review permissions" modal when there's none to review ([#20506](https://github.com/RocketChat/Rocket.Chat/pull/20506)) +- **Apps:** Don't show the "review permissions" modal when there's none to review ([#20506](https://github.com/RocketChat/Rocket.Chat/pull/20506) by [@thassiov](https://github.com/thassiov)) - **ENTERPRISE:** Auditing RoomAutocomplete ([#20311](https://github.com/RocketChat/Rocket.Chat/pull/20311)) -- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Actions from User Info panel ([#20073](https://github.com/RocketChat/Rocket.Chat/pull/20073) by [@Darshilp326](https://github.com/Darshilp326)) @@ -8171,7 +8282,7 @@ - Admin User Info email verified status ([#20110](https://github.com/RocketChat/Rocket.Chat/pull/20110) by [@bdelwood](https://github.com/bdelwood)) -- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink)) +- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Change header's favorite icon to filled star ([#20174](https://github.com/RocketChat/Rocket.Chat/pull/20174)) @@ -8213,13 +8324,13 @@ - Incorrect translations ZN ([#20245](https://github.com/RocketChat/Rocket.Chat/pull/20245) by [@moniang](https://github.com/moniang)) -- Initial values update on Account Preferences ([#19938](https://github.com/RocketChat/Rocket.Chat/pull/19938)) +- Initial values update on Account Preferences ([#19938](https://github.com/RocketChat/Rocket.Chat/pull/19938) by [@tassoevan](https://github.com/tassoevan)) -- Invalid filters on the Omnichannel Analytics page ([#19899](https://github.com/RocketChat/Rocket.Chat/pull/19899)) +- Invalid filters on the Omnichannel Analytics page ([#19899](https://github.com/RocketChat/Rocket.Chat/pull/19899) by [@renatobecker](https://github.com/renatobecker)) - Jump to message ([#20265](https://github.com/RocketChat/Rocket.Chat/pull/20265)) -- Livechat.RegisterGuest method removing unset fields ([#20124](https://github.com/RocketChat/Rocket.Chat/pull/20124) by [@rafaelblink](https://github.com/rafaelblink)) +- Livechat.RegisterGuest method removing unset fields ([#20124](https://github.com/RocketChat/Rocket.Chat/pull/20124) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) After changes made on https://github.com/RocketChat/Rocket.Chat/pull/19931, the `Livechat.RegisterGuest` method started removing properties from the visitor inappropriately. The properties that did not receive value were removed from the object. Those changes were made to support the new Contact Form, but now the form has its own method to deal with Contact data so those changes are no longer necessary. @@ -8232,15 +8343,15 @@ - Meteor errors not translating for toast messages ([#19993](https://github.com/RocketChat/Rocket.Chat/pull/19993)) -- minWidth in FileIcon to prevent layout to broke ([#19942](https://github.com/RocketChat/Rocket.Chat/pull/19942)) +- minWidth in FileIcon to prevent layout to broke ([#19942](https://github.com/RocketChat/Rocket.Chat/pull/19942) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/27704687/102934691-69b7f480-4483-11eb-995b-a8a9b72246aa.png) -- Normalize messages for users in endpoint chat.getStarredMessages ([#19962](https://github.com/RocketChat/Rocket.Chat/pull/19962)) +- Normalize messages for users in endpoint chat.getStarredMessages ([#19962](https://github.com/RocketChat/Rocket.Chat/pull/19962) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) -- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003)) +- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Omnichannel - Contact Center form is not validating custom fields properly ([#20196](https://github.com/RocketChat/Rocket.Chat/pull/20196) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel - Contact Center form is not validating custom fields properly ([#20196](https://github.com/RocketChat/Rocket.Chat/pull/20196) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) The contact form is accepting undefined values in required custom fields when creating or editing contacts, and, the errror message isn't following Rocket.chat design system. @@ -8256,13 +8367,13 @@ #### Edit ![image](https://user-images.githubusercontent.com/2493803/104770538-7b717c80-574f-11eb-829f-1ae304103369.png) -- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093)) +- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093) by [@renatobecker](https://github.com/renatobecker)) -- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089)) +- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089) by [@renatobecker](https://github.com/renatobecker)) - Profile picture changing with username ([#19992](https://github.com/RocketChat/Rocket.Chat/pull/19992)) @@ -8298,7 +8409,7 @@ https://user-images.githubusercontent.com/28918901/104960749-dbd81680-59fa-11eb-9c7b-2b257936f894.mp4 -- Search list filter ([#19937](https://github.com/RocketChat/Rocket.Chat/pull/19937)) +- Search list filter ([#19937](https://github.com/RocketChat/Rocket.Chat/pull/19937) by [@tassoevan](https://github.com/tassoevan)) - Sidebar palette color broken on IE ([#20457](https://github.com/RocketChat/Rocket.Chat/pull/20457)) @@ -8359,7 +8470,7 @@ - Chore: Fix i18n duplicated keys ([#19998](https://github.com/RocketChat/Rocket.Chat/pull/19998)) -- Chore: Recover and update Storybook ([#20047](https://github.com/RocketChat/Rocket.Chat/pull/20047)) +- Chore: Recover and update Storybook ([#20047](https://github.com/RocketChat/Rocket.Chat/pull/20047) by [@tassoevan](https://github.com/tassoevan)) It reenables Storybook's usage. @@ -8383,7 +8494,7 @@ **After**: ![image](https://user-images.githubusercontent.com/27704687/105274050-2e404100-5b7b-11eb-93b2-b6282a7bed95.png) -- regression: Announcement link open in new tab ([#20435](https://github.com/RocketChat/Rocket.Chat/pull/20435)) +- regression: Announcement link open in new tab ([#20435](https://github.com/RocketChat/Rocket.Chat/pull/20435) by [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Apps-Engine - Convert streams to buffers on file upload ([#20523](https://github.com/RocketChat/Rocket.Chat/pull/20523)) @@ -8391,7 +8502,7 @@ - Regression: Attachments ([#20291](https://github.com/RocketChat/Rocket.Chat/pull/20291)) -- Regression: Bio page not rendering ([#20450](https://github.com/RocketChat/Rocket.Chat/pull/20450)) +- Regression: Bio page not rendering ([#20450](https://github.com/RocketChat/Rocket.Chat/pull/20450) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Change sort icon ([#20177](https://github.com/RocketChat/Rocket.Chat/pull/20177)) @@ -8401,7 +8512,7 @@ ### After ![image](https://user-images.githubusercontent.com/40830821/104366542-4cad9900-54f8-11eb-83ca-acb99899515a.png) -- Regression: Custom field labels are not displayed properly on Omnichannel Contact Profile form ([#20393](https://github.com/RocketChat/Rocket.Chat/pull/20393) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: Custom field labels are not displayed properly on Omnichannel Contact Profile form ([#20393](https://github.com/RocketChat/Rocket.Chat/pull/20393) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ### Before ![image](https://user-images.githubusercontent.com/2493803/105780399-20116c80-5f4f-11eb-9620-0901472e453b.png) @@ -8422,7 +8533,7 @@ - Regression: Fix Cron statistics TypeError ([#20343](https://github.com/RocketChat/Rocket.Chat/pull/20343) by [@RonLek](https://github.com/RonLek)) -- Regression: Fix duplicate email messages in multiple instances ([#20495](https://github.com/RocketChat/Rocket.Chat/pull/20495)) +- Regression: Fix duplicate email messages in multiple instances ([#20495](https://github.com/RocketChat/Rocket.Chat/pull/20495) by [@renatobecker](https://github.com/renatobecker)) - Regression: Fix e2e paused state ([#20511](https://github.com/RocketChat/Rocket.Chat/pull/20511)) @@ -8436,7 +8547,7 @@ - Regression: Lint warnings and some datepicker ([#20280](https://github.com/RocketChat/Rocket.Chat/pull/20280)) -- Regression: NPS ([#20514](https://github.com/RocketChat/Rocket.Chat/pull/20514)) +- Regression: NPS ([#20514](https://github.com/RocketChat/Rocket.Chat/pull/20514) by [@tassoevan](https://github.com/tassoevan)) - Regression: reactAttachments cpu ([#20255](https://github.com/RocketChat/Rocket.Chat/pull/20255)) @@ -8477,7 +8588,7 @@ - Update "Industry" setting ([#20510](https://github.com/RocketChat/Rocket.Chat/pull/20510)) -- Update Apps-Engine and permissions translations ([#20491](https://github.com/RocketChat/Rocket.Chat/pull/20491) by [@lolimay](https://github.com/lolimay)) +- Update Apps-Engine and permissions translations ([#20491](https://github.com/RocketChat/Rocket.Chat/pull/20491) by [@lolimay](https://github.com/lolimay) & [@thassiov](https://github.com/thassiov)) Update Apps-Engine version and apply changes in translations for the changed permissions. Please review the texts on the translation files to make sure they're clear. @@ -8493,6 +8604,7 @@ - [@Darshilp326](https://github.com/Darshilp326) - [@Karting06](https://github.com/Karting06) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RonLek](https://github.com/RonLek) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@aditya-mitra](https://github.com/aditya-mitra) @@ -8504,27 +8616,26 @@ - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) - [@moniang](https://github.com/moniang) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) - [@sushant52](https://github.com/sushant52) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@tlskinneriv](https://github.com/tlskinneriv) - [@wggdeveloper](https://github.com/wggdeveloper) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.10.5 @@ -8625,41 +8736,41 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Actions from User Info panel ([#20073](https://github.com/RocketChat/Rocket.Chat/pull/20073) by [@Darshilp326](https://github.com/Darshilp326)) Users can be removed from channels without any error message. -- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink)) +- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Creation of Omnichannel rooms not working correctly through the Apps when the agent parameter is set ([#19997](https://github.com/RocketChat/Rocket.Chat/pull/19997)) - Messages being updated when not required after user changes his profile ([#20114](https://github.com/RocketChat/Rocket.Chat/pull/20114)) -- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003)) +- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093)) +- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093) by [@renatobecker](https://github.com/renatobecker)) -- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089)) +- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089) by [@renatobecker](https://github.com/renatobecker)) - User Audio notification preference not being applied ([#20061](https://github.com/RocketChat/Rocket.Chat/pull/20061)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Darshilp326](https://github.com/Darshilp326) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.10.0 @@ -8674,9 +8785,9 @@ ### 🎉 New features -- Custom scroll ([#19701](https://github.com/RocketChat/Rocket.Chat/pull/19701)) +- Custom scroll ([#19701](https://github.com/RocketChat/Rocket.Chat/pull/19701) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Omnichannel Contact Center (Directory) ([#19931](https://github.com/RocketChat/Rocket.Chat/pull/19931) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Contact Center (Directory) ([#19931](https://github.com/RocketChat/Rocket.Chat/pull/19931) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - REST Endpoint `instances.get` ([#19926](https://github.com/RocketChat/Rocket.Chat/pull/19926) by [@g-thome](https://github.com/g-thome)) @@ -8684,7 +8795,7 @@ - REST endpoints to add and retrieve Enterprise licenses ([#19925](https://github.com/RocketChat/Rocket.Chat/pull/19925) by [@g-thome](https://github.com/g-thome)) -- Update Checker Description ([#19892](https://github.com/RocketChat/Rocket.Chat/pull/19892)) +- Update Checker Description ([#19892](https://github.com/RocketChat/Rocket.Chat/pull/19892) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - User preference for audio notifications ([#19924](https://github.com/RocketChat/Rocket.Chat/pull/19924)) @@ -8693,7 +8804,7 @@ ### 🚀 Improvements -- Removed useEndpointDataExperimental hook usage ([#19496](https://github.com/RocketChat/Rocket.Chat/pull/19496)) +- Removed useEndpointDataExperimental hook usage ([#19496](https://github.com/RocketChat/Rocket.Chat/pull/19496) by [@tassoevan](https://github.com/tassoevan)) - Replace useClipboard ([#19764](https://github.com/RocketChat/Rocket.Chat/pull/19764)) @@ -8707,7 +8818,7 @@ - Rewrite contextualbar RoomMembers as React Component ([#19841](https://github.com/RocketChat/Rocket.Chat/pull/19841)) -- Rewrite NotificationPreferences to React component ([#19672](https://github.com/RocketChat/Rocket.Chat/pull/19672)) +- Rewrite NotificationPreferences to React component ([#19672](https://github.com/RocketChat/Rocket.Chat/pull/19672) by [@tiagoevanp](https://github.com/tiagoevanp)) - Rewrite Room Files as React Component ([#19580](https://github.com/RocketChat/Rocket.Chat/pull/19580)) @@ -8716,21 +8827,21 @@ ### 🐛 Bug fixes -- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762)) +- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Add fallback message when show notification content is disabled ([#19516](https://github.com/RocketChat/Rocket.Chat/pull/19516) by [@youssef-md](https://github.com/youssef-md)) -- Admin Users screen sorting showing deactivated users in wrong order ([#19898](https://github.com/RocketChat/Rocket.Chat/pull/19898)) +- Admin Users screen sorting showing deactivated users in wrong order ([#19898](https://github.com/RocketChat/Rocket.Chat/pull/19898) by [@alansikora](https://github.com/alansikora)) -- Custom Avatar ([#19805](https://github.com/RocketChat/Rocket.Chat/pull/19805)) +- Custom Avatar ([#19805](https://github.com/RocketChat/Rocket.Chat/pull/19805) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Download my data with file uploads ([#19862](https://github.com/RocketChat/Rocket.Chat/pull/19862)) -- Emails not showing up in Admin/Users ([#19727](https://github.com/RocketChat/Rocket.Chat/pull/19727)) +- Emails not showing up in Admin/Users ([#19727](https://github.com/RocketChat/Rocket.Chat/pull/19727) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- File Tab Order ([#19729](https://github.com/RocketChat/Rocket.Chat/pull/19729)) +- File Tab Order ([#19729](https://github.com/RocketChat/Rocket.Chat/pull/19729) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) - Forgot password endpoint return status ([#19842](https://github.com/RocketChat/Rocket.Chat/pull/19842) by [@g-thome](https://github.com/g-thome)) @@ -8744,37 +8855,37 @@ - Image preview for image URLs on messages ([#19734](https://github.com/RocketChat/Rocket.Chat/pull/19734) by [@g-thome](https://github.com/g-thome)) -- Issue with oembed ([#19923](https://github.com/RocketChat/Rocket.Chat/pull/19923)) +- Issue with oembed ([#19923](https://github.com/RocketChat/Rocket.Chat/pull/19923) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Issue with oembed ([#19886](https://github.com/RocketChat/Rocket.Chat/pull/19886)) +- Issue with oembed ([#19886](https://github.com/RocketChat/Rocket.Chat/pull/19886) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830)) +- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830) by [@renatobecker](https://github.com/renatobecker)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945)) +- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945) by [@tassoevan](https://github.com/tassoevan)) - RoomForeword ([#19875](https://github.com/RocketChat/Rocket.Chat/pull/19875)) -- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746)) +- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746) by [@alansikora](https://github.com/alansikora)) - Sidebar UI disappearing ([#19725](https://github.com/RocketChat/Rocket.Chat/pull/19725)) -- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763)) +- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763) by [@thassiov](https://github.com/thassiov)) -- Spotify oEmbed ([#19825](https://github.com/RocketChat/Rocket.Chat/pull/19825)) +- Spotify oEmbed ([#19825](https://github.com/RocketChat/Rocket.Chat/pull/19825) by [@tassoevan](https://github.com/tassoevan)) - Startup error when using MongoDB with a password containing special characters ([#19749](https://github.com/RocketChat/Rocket.Chat/pull/19749)) -- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935)) +- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935) by [@tassoevan](https://github.com/tassoevan)) - UIKit Modal not scrolling ([#19690](https://github.com/RocketChat/Rocket.Chat/pull/19690)) - Update base image in Dockerfile.rhel ([#19036](https://github.com/RocketChat/Rocket.Chat/pull/19036) by [@andykrohg](https://github.com/andykrohg)) -- User email showing [object Object] ([#19870](https://github.com/RocketChat/Rocket.Chat/pull/19870)) +- User email showing [object Object] ([#19870](https://github.com/RocketChat/Rocket.Chat/pull/19870) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - User Info 'Local Time' translation keyword ([#19879](https://github.com/RocketChat/Rocket.Chat/pull/19879) by [@J4r3tt](https://github.com/J4r3tt)) @@ -8790,7 +8901,7 @@ - Chore: Fix Caddy download URL in Snaps ([#19912](https://github.com/RocketChat/Rocket.Chat/pull/19912)) -- Chore: Add watch.settings to events whitelist ([#19850](https://github.com/RocketChat/Rocket.Chat/pull/19850)) +- Chore: Add watch.settings to events whitelist ([#19850](https://github.com/RocketChat/Rocket.Chat/pull/19850) by [@alansikora](https://github.com/alansikora)) - Chore: Change Youtube test to verify if has an iframe with max-width ([#19863](https://github.com/RocketChat/Rocket.Chat/pull/19863)) @@ -8818,19 +8929,19 @@ - Merge master into develop & Set version to 3.10.0-develop ([#19720](https://github.com/RocketChat/Rocket.Chat/pull/19720)) -- Message parsing and rendering - Phase 1 ([#19654](https://github.com/RocketChat/Rocket.Chat/pull/19654)) +- Message parsing and rendering - Phase 1 ([#19654](https://github.com/RocketChat/Rocket.Chat/pull/19654) by [@tassoevan](https://github.com/tassoevan)) - Regression: "My Account" page doesn't load ([#19753](https://github.com/RocketChat/Rocket.Chat/pull/19753) by [@g-thome](https://github.com/g-thome)) - Regression: Add currently running instance to instances.get endpoint ([#19955](https://github.com/RocketChat/Rocket.Chat/pull/19955) by [@g-thome](https://github.com/g-thome)) -- Regression: Add Members showing the wrong template ([#19748](https://github.com/RocketChat/Rocket.Chat/pull/19748)) +- Regression: Add Members showing the wrong template ([#19748](https://github.com/RocketChat/Rocket.Chat/pull/19748) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Add missing translations on the Omnichannel Contact Center(Directory) ([#19968](https://github.com/RocketChat/Rocket.Chat/pull/19968) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: Add missing translations on the Omnichannel Contact Center(Directory) ([#19968](https://github.com/RocketChat/Rocket.Chat/pull/19968) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Regression: Admin Sidebar Scroll ([#19944](https://github.com/RocketChat/Rocket.Chat/pull/19944)) -- Regression: Check permissions properly when fetching rooms in Omnichannel Directory ([#19951](https://github.com/RocketChat/Rocket.Chat/pull/19951) by [@rafaelblink](https://github.com/rafaelblink)) +- Regression: Check permissions properly when fetching rooms in Omnichannel Directory ([#19951](https://github.com/RocketChat/Rocket.Chat/pull/19951) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Regression: contextualBar folder structure ([#19761](https://github.com/RocketChat/Rocket.Chat/pull/19761)) @@ -8843,9 +8954,9 @@ After: ![image](https://user-images.githubusercontent.com/40830821/103242680-ee988780-4935-11eb-99e2-a95de99f78f1.png) -- Regression: Failed autolinker and markdown rendering ([#19831](https://github.com/RocketChat/Rocket.Chat/pull/19831)) +- Regression: Failed autolinker and markdown rendering ([#19831](https://github.com/RocketChat/Rocket.Chat/pull/19831) by [@tassoevan](https://github.com/tassoevan)) -- Regression: fix broken members list ([#19806](https://github.com/RocketChat/Rocket.Chat/pull/19806)) +- Regression: fix broken members list ([#19806](https://github.com/RocketChat/Rocket.Chat/pull/19806) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Fix member list Actions ([#19876](https://github.com/RocketChat/Rocket.Chat/pull/19876)) @@ -8853,11 +8964,11 @@ - Regression: Fix Room Files for DMs ([#19874](https://github.com/RocketChat/Rocket.Chat/pull/19874)) -- Regression: Fix sorting indicators on Admin Users page ([#19950](https://github.com/RocketChat/Rocket.Chat/pull/19950)) +- Regression: Fix sorting indicators on Admin Users page ([#19950](https://github.com/RocketChat/Rocket.Chat/pull/19950) by [@alansikora](https://github.com/alansikora)) -- Regression: Header Styles fixes ([#19946](https://github.com/RocketChat/Rocket.Chat/pull/19946)) +- Regression: Header Styles fixes ([#19946](https://github.com/RocketChat/Rocket.Chat/pull/19946) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Omnichannel Custom Fields Form no longer working after refactoring ([#19948](https://github.com/RocketChat/Rocket.Chat/pull/19948)) +- Regression: Omnichannel Custom Fields Form no longer working after refactoring ([#19948](https://github.com/RocketChat/Rocket.Chat/pull/19948) by [@renatobecker](https://github.com/renatobecker)) The Omnichannel `Custom Fields` form is not working anymore after some refactorings on client-side. When the user clicks on `Custom Field` in the Omnichannel menu, a blank page appears. @@ -8884,27 +8995,27 @@ - [@ArnoSaine](https://github.com/ArnoSaine) - [@J4r3tt](https://github.com/J4r3tt) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@alansikora](https://github.com/alansikora) - [@andykrohg](https://github.com/andykrohg) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@youssef-md](https://github.com/youssef-md) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.9.4 `2020-12-31 · 3 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` @@ -8918,11 +9029,11 @@ ### 🐛 Bug fixes -- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830)) +- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830) by [@renatobecker](https://github.com/renatobecker)) -- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945)) +- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945) by [@tassoevan](https://github.com/tassoevan)) -- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935)) +- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935) by [@tassoevan](https://github.com/tassoevan))
🔍 Minor changes @@ -8932,14 +9043,17 @@
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.9.3 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -8953,11 +9067,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -8973,27 +9087,27 @@ ### 🐛 Bug fixes -- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762)) +- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Download my data with file uploads ([#19862](https://github.com/RocketChat/Rocket.Chat/pull/19862)) - Forgot password endpoint return status ([#19842](https://github.com/RocketChat/Rocket.Chat/pull/19842) by [@g-thome](https://github.com/g-thome)) -- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763)) +- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763) by [@thassiov](https://github.com/thassiov)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@g-thome](https://github.com/g-thome) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@thassiov](https://github.com/thassiov) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@thassiov](https://github.com/thassiov) # 3.9.1 `2020-12-05 · 5 🐛 · 4 👩‍💻👨‍💻` @@ -9011,7 +9125,7 @@ - Image preview for image URLs on messages ([#19734](https://github.com/RocketChat/Rocket.Chat/pull/19734) by [@g-thome](https://github.com/g-thome)) -- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746)) +- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746) by [@alansikora](https://github.com/alansikora)) - Sidebar UI disappearing ([#19725](https://github.com/RocketChat/Rocket.Chat/pull/19725)) @@ -9019,11 +9133,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@alansikora](https://github.com/alansikora) - [@g-thome](https://github.com/g-thome) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@alansikora](https://github.com/alansikora) - [@gabriellsh](https://github.com/gabriellsh) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9039,20 +9153,20 @@ ### 🎉 New features -- 2 Factor Authentication when using OAuth and SAML ([#11726](https://github.com/RocketChat/Rocket.Chat/pull/11726) by [@Hudell](https://github.com/Hudell)) +- 2 Factor Authentication when using OAuth and SAML ([#11726](https://github.com/RocketChat/Rocket.Chat/pull/11726) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Added setting to disable password changes for users who log in using SSO ([#10391](https://github.com/RocketChat/Rocket.Chat/pull/10391) by [@Hudell](https://github.com/Hudell)) +- Added setting to disable password changes for users who log in using SSO ([#10391](https://github.com/RocketChat/Rocket.Chat/pull/10391) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🚀 Improvements -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Monitors page ([#19495](https://github.com/RocketChat/Rocket.Chat/pull/19495) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Monitors page ([#19495](https://github.com/RocketChat/Rocket.Chat/pull/19495) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Priorities page ([#19512](https://github.com/RocketChat/Rocket.Chat/pull/19512) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Priorities page ([#19512](https://github.com/RocketChat/Rocket.Chat/pull/19512) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Tags page ([#19510](https://github.com/RocketChat/Rocket.Chat/pull/19510) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Tags page ([#19510](https://github.com/RocketChat/Rocket.Chat/pull/19510) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Units page ([#19500](https://github.com/RocketChat/Rocket.Chat/pull/19500) by [@rafaelblink](https://github.com/rafaelblink)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Units page ([#19500](https://github.com/RocketChat/Rocket.Chat/pull/19500) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Add support to `replace` operation when using Change Stream ([#19579](https://github.com/RocketChat/Rocket.Chat/pull/19579)) @@ -9062,25 +9176,25 @@ Moved some libraries to dynamic imports Removed some shared code not used on the client side -- Forward Omnichannel room to agent in another department ([#19576](https://github.com/RocketChat/Rocket.Chat/pull/19576) by [@mrfigueiredo](https://github.com/mrfigueiredo)) +- Forward Omnichannel room to agent in another department ([#19576](https://github.com/RocketChat/Rocket.Chat/pull/19576) by [@mrfigueiredo](https://github.com/mrfigueiredo) & [@renatobecker](https://github.com/renatobecker)) -- KeyboardShortcuts as React component ([#19518](https://github.com/RocketChat/Rocket.Chat/pull/19518)) +- KeyboardShortcuts as React component ([#19518](https://github.com/RocketChat/Rocket.Chat/pull/19518) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Remove Box dependence from Tag and Badge components ([#19467](https://github.com/RocketChat/Rocket.Chat/pull/19467)) +- Remove Box dependence from Tag and Badge components ([#19467](https://github.com/RocketChat/Rocket.Chat/pull/19467) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Remove Box props from Avatar component ([#19491](https://github.com/RocketChat/Rocket.Chat/pull/19491)) +- Remove Box props from Avatar component ([#19491](https://github.com/RocketChat/Rocket.Chat/pull/19491) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Rewrite Auto-Translate as a React component ([#19633](https://github.com/RocketChat/Rocket.Chat/pull/19633)) +- Rewrite Auto-Translate as a React component ([#19633](https://github.com/RocketChat/Rocket.Chat/pull/19633) by [@tiagoevanp](https://github.com/tiagoevanp)) - Rewrite Room Info ([#19511](https://github.com/RocketChat/Rocket.Chat/pull/19511)) - SlackBridge threads performance improvement ([#19338](https://github.com/RocketChat/Rocket.Chat/pull/19338) by [@antkaz](https://github.com/antkaz)) -- UI/UX enhancements in department pages following the design system ([#19421](https://github.com/RocketChat/Rocket.Chat/pull/19421) by [@rafaelblink](https://github.com/rafaelblink)) +- UI/UX enhancements in department pages following the design system ([#19421](https://github.com/RocketChat/Rocket.Chat/pull/19421) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- UI/UX enhancements in Omnichannel Triggers page ([#19485](https://github.com/RocketChat/Rocket.Chat/pull/19485) by [@rafaelblink](https://github.com/rafaelblink)) +- UI/UX enhancements in Omnichannel Triggers page ([#19485](https://github.com/RocketChat/Rocket.Chat/pull/19485) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- UI/UX enhancements in Omnichannnel Current Chats page ([#19397](https://github.com/RocketChat/Rocket.Chat/pull/19397) by [@rafaelblink](https://github.com/rafaelblink)) +- UI/UX enhancements in Omnichannnel Current Chats page ([#19397](https://github.com/RocketChat/Rocket.Chat/pull/19397) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes @@ -9091,67 +9205,67 @@ - Auto Translate ([#19599](https://github.com/RocketChat/Rocket.Chat/pull/19599)) -- Channel actions not working when reduce motion is active ([#19638](https://github.com/RocketChat/Rocket.Chat/pull/19638)) +- Channel actions not working when reduce motion is active ([#19638](https://github.com/RocketChat/Rocket.Chat/pull/19638) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Column width was not following the design system in Omnichannel Departments page ([#19601](https://github.com/RocketChat/Rocket.Chat/pull/19601) by [@rafaelblink](https://github.com/rafaelblink)) +- Column width was not following the design system in Omnichannel Departments page ([#19601](https://github.com/RocketChat/Rocket.Chat/pull/19601) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Engagement dashboard on old Mongo versions ([#19616](https://github.com/RocketChat/Rocket.Chat/pull/19616)) - Engagement dashboard: graphs adjustment ([#19450](https://github.com/RocketChat/Rocket.Chat/pull/19450)) -- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561)) +- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Input without label and email ordering missing on Omnichannel Agents page ([#19414](https://github.com/RocketChat/Rocket.Chat/pull/19414) by [@rafaelblink](https://github.com/rafaelblink)) +- Input without label and email ordering missing on Omnichannel Agents page ([#19414](https://github.com/RocketChat/Rocket.Chat/pull/19414) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Issue with drag and drop ([#19593](https://github.com/RocketChat/Rocket.Chat/pull/19593)) +- Issue with drag and drop ([#19593](https://github.com/RocketChat/Rocket.Chat/pull/19593) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - LDAP Unique Identifier Field can not use operational attributes ([#19571](https://github.com/RocketChat/Rocket.Chat/pull/19571) by [@truongtx8](https://github.com/truongtx8)) -- Omnichannel Analytics page doesn't have field labels ([#19400](https://github.com/RocketChat/Rocket.Chat/pull/19400) by [@rafaelblink](https://github.com/rafaelblink)) +- Omnichannel Analytics page doesn't have field labels ([#19400](https://github.com/RocketChat/Rocket.Chat/pull/19400) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Outgoing integrations without trigger words or with multiple commas ([#19488](https://github.com/RocketChat/Rocket.Chat/pull/19488) by [@g-thome](https://github.com/g-thome)) - Prevent headerRoom's click to open room/direct info ([#19596](https://github.com/RocketChat/Rocket.Chat/pull/19596)) -- Regex was not working properly on visitors.search endpoint ([#19577](https://github.com/RocketChat/Rocket.Chat/pull/19577) by [@rafaelblink](https://github.com/rafaelblink)) +- Regex was not working properly on visitors.search endpoint ([#19577](https://github.com/RocketChat/Rocket.Chat/pull/19577) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- Restore Message View Mode Preference ([#19458](https://github.com/RocketChat/Rocket.Chat/pull/19458)) +- Restore Message View Mode Preference ([#19458](https://github.com/RocketChat/Rocket.Chat/pull/19458) by [@MartinSchoeler](https://github.com/MartinSchoeler)) [FIX] Restore Message View Mode Preference - Role description not updating ([#19236](https://github.com/RocketChat/Rocket.Chat/pull/19236)) -- Save button enabled by default in Omnichannel Business Hours Form ([#19493](https://github.com/RocketChat/Rocket.Chat/pull/19493) by [@rafaelblink](https://github.com/rafaelblink)) +- Save button enabled by default in Omnichannel Business Hours Form ([#19493](https://github.com/RocketChat/Rocket.Chat/pull/19493) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Settings may not update internal cache immediately ([#19628](https://github.com/RocketChat/Rocket.Chat/pull/19628) by [@g-thome](https://github.com/g-thome)) -- Setup Wizard User Creation Locking up ([#19509](https://github.com/RocketChat/Rocket.Chat/pull/19509)) +- Setup Wizard User Creation Locking up ([#19509](https://github.com/RocketChat/Rocket.Chat/pull/19509) by [@MartinSchoeler](https://github.com/MartinSchoeler)) [FIX] Setup Wizard User Creation Locking up -- Size of embed Youtube on threads for small screens ([#19514](https://github.com/RocketChat/Rocket.Chat/pull/19514)) +- Size of embed Youtube on threads for small screens ([#19514](https://github.com/RocketChat/Rocket.Chat/pull/19514) by [@tiagoevanp](https://github.com/tiagoevanp)) -- The width of list columns was not following the design system in Omnichannel Agents page ([#19625](https://github.com/RocketChat/Rocket.Chat/pull/19625) by [@rafaelblink](https://github.com/rafaelblink)) +- The width of list columns was not following the design system in Omnichannel Agents page ([#19625](https://github.com/RocketChat/Rocket.Chat/pull/19625) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- The width of list columns was not following the design system in Omnichannel Managers page ([#19624](https://github.com/RocketChat/Rocket.Chat/pull/19624) by [@rafaelblink](https://github.com/rafaelblink)) +- The width of list columns was not following the design system in Omnichannel Managers page ([#19624](https://github.com/RocketChat/Rocket.Chat/pull/19624) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) -- TOTP Being ignored when changing our own avatar ([#19475](https://github.com/RocketChat/Rocket.Chat/pull/19475)) +- TOTP Being ignored when changing our own avatar ([#19475](https://github.com/RocketChat/Rocket.Chat/pull/19475) by [@MartinSchoeler](https://github.com/MartinSchoeler)) [FIX] TOTP Being ignored when changing our own avatar - Typo in custom oauth from environment variable ([#19570](https://github.com/RocketChat/Rocket.Chat/pull/19570)) -- UI/UX issues on Omnichannel Managers page ([#19410](https://github.com/RocketChat/Rocket.Chat/pull/19410) by [@rafaelblink](https://github.com/rafaelblink)) +- UI/UX issues on Omnichannel Managers page ([#19410](https://github.com/RocketChat/Rocket.Chat/pull/19410) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Unread count for all messages when mentioning an user ([#16884](https://github.com/RocketChat/Rocket.Chat/pull/16884) by [@subham103](https://github.com/subham103)) -- Wrong margin of description field in Omnichannel Webhooks page ([#19487](https://github.com/RocketChat/Rocket.Chat/pull/19487) by [@rafaelblink](https://github.com/rafaelblink)) +- Wrong margin of description field in Omnichannel Webhooks page ([#19487](https://github.com/RocketChat/Rocket.Chat/pull/19487) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes -- [IMPROVES] Omnichannel - Custom Fields pages. ([#19473](https://github.com/RocketChat/Rocket.Chat/pull/19473) by [@rafaelblink](https://github.com/rafaelblink)) +- [IMPROVES] Omnichannel - Custom Fields pages. ([#19473](https://github.com/RocketChat/Rocket.Chat/pull/19473) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) - Bump bcrypt from 4.0.1 to 5.0.0 in /ee/server/services ([#19387](https://github.com/RocketChat/Rocket.Chat/pull/19387) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -9183,25 +9297,25 @@ - Regression: Fix Avatar x40 ([#19564](https://github.com/RocketChat/Rocket.Chat/pull/19564)) -- Regression: Fix Custom OAuth 2FA ([#19691](https://github.com/RocketChat/Rocket.Chat/pull/19691)) +- Regression: Fix Custom OAuth 2FA ([#19691](https://github.com/RocketChat/Rocket.Chat/pull/19691) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Fix LDAP 2FA not working when Login Fallback is off ([#19659](https://github.com/RocketChat/Rocket.Chat/pull/19659)) +- Regression: Fix LDAP 2FA not working when Login Fallback is off ([#19659](https://github.com/RocketChat/Rocket.Chat/pull/19659) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Fix multiple react blazed template rendering at the same time ([#19679](https://github.com/RocketChat/Rocket.Chat/pull/19679)) -- Regression: Fix wrong template on photoswipe ([#19575](https://github.com/RocketChat/Rocket.Chat/pull/19575)) +- Regression: Fix wrong template on photoswipe ([#19575](https://github.com/RocketChat/Rocket.Chat/pull/19575) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Issues with Safari ([#19671](https://github.com/RocketChat/Rocket.Chat/pull/19671)) +- Regression: Issues with Safari ([#19671](https://github.com/RocketChat/Rocket.Chat/pull/19671) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: object-fit for image element and Box margin in AppAvatar component ([#19698](https://github.com/RocketChat/Rocket.Chat/pull/19698)) +- Regression: object-fit for image element and Box margin in AppAvatar component ([#19698](https://github.com/RocketChat/Rocket.Chat/pull/19698) by [@tiagoevanp](https://github.com/tiagoevanp)) -- REGRESSION: Photoswipe not working ([#19569](https://github.com/RocketChat/Rocket.Chat/pull/19569)) +- REGRESSION: Photoswipe not working ([#19569](https://github.com/RocketChat/Rocket.Chat/pull/19569) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Room Info Edit action ([#19581](https://github.com/RocketChat/Rocket.Chat/pull/19581)) - Regression: Room Info maxAgeDefault variable ([#19582](https://github.com/RocketChat/Rocket.Chat/pull/19582)) -- Regression: URL preview problem ([#19685](https://github.com/RocketChat/Rocket.Chat/pull/19685)) +- Regression: URL preview problem ([#19685](https://github.com/RocketChat/Rocket.Chat/pull/19685) by [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Verticalbar size ([#19670](https://github.com/RocketChat/Rocket.Chat/pull/19670)) @@ -9218,29 +9332,29 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@mrfigueiredo](https://github.com/mrfigueiredo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) - [@robertfromont](https://github.com/robertfromont) - [@subham103](https://github.com/subham103) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@truongtx8](https://github.com/truongtx8) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.8.5 `2020-12-31 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -9275,11 +9389,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -9347,7 +9461,7 @@ - Engagement dashboard on old Mongo versions ([#19616](https://github.com/RocketChat/Rocket.Chat/pull/19616)) -- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561)) +- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Typo in custom oauth from environment variable ([#19570](https://github.com/RocketChat/Rocket.Chat/pull/19570)) @@ -9357,11 +9471,14 @@ - Fix Docker preview image build ([#19627](https://github.com/RocketChat/Rocket.Chat/pull/19627)) -
+ + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@MartinSchoeler](https://github.com/MartinSchoeler) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9379,7 +9496,7 @@ - **Apps:** Add new typing bridge method (Typing-Indicator) ([#19228](https://github.com/RocketChat/Rocket.Chat/pull/19228) by [@lolimay](https://github.com/lolimay)) -- **APPS:** New Scheduler API ([#19290](https://github.com/RocketChat/Rocket.Chat/pull/19290)) +- **APPS:** New Scheduler API ([#19290](https://github.com/RocketChat/Rocket.Chat/pull/19290) by [@thassiov](https://github.com/thassiov)) - **Apps:** Remove TS compiler ([#18687](https://github.com/RocketChat/Rocket.Chat/pull/18687)) @@ -9393,7 +9510,7 @@ - Apps prometheus metrics ([#19320](https://github.com/RocketChat/Rocket.Chat/pull/19320)) -- Audits search by User ([#19275](https://github.com/RocketChat/Rocket.Chat/pull/19275)) +- Audits search by User ([#19275](https://github.com/RocketChat/Rocket.Chat/pull/19275) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Branding updated with new logos ([#19440](https://github.com/RocketChat/Rocket.Chat/pull/19440)) @@ -9401,31 +9518,31 @@ - OAuth groups to channels mapping ([#18146](https://github.com/RocketChat/Rocket.Chat/pull/18146) by [@arminfelder](https://github.com/arminfelder)) -- Reaction view ([#18272](https://github.com/RocketChat/Rocket.Chat/pull/18272)) +- Reaction view ([#18272](https://github.com/RocketChat/Rocket.Chat/pull/18272) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) -- Replace client-side event emitters ([#19368](https://github.com/RocketChat/Rocket.Chat/pull/19368)) +- Replace client-side event emitters ([#19368](https://github.com/RocketChat/Rocket.Chat/pull/19368) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) - Whitelisting bad words ([#17120](https://github.com/RocketChat/Rocket.Chat/pull/17120) by [@aryankoul](https://github.com/aryankoul)) ### 🚀 Improvements -- **APPS:** Apps list page on servers without internet connection ([#19088](https://github.com/RocketChat/Rocket.Chat/pull/19088)) +- **APPS:** Apps list page on servers without internet connection ([#19088](https://github.com/RocketChat/Rocket.Chat/pull/19088) by [@thassiov](https://github.com/thassiov)) - Display channel avatar on the Header ([#19132](https://github.com/RocketChat/Rocket.Chat/pull/19132) by [@ba-9](https://github.com/ba-9) & [@bhavayAnand9](https://github.com/bhavayAnand9)) -- New sidebar layout ([#19089](https://github.com/RocketChat/Rocket.Chat/pull/19089)) +- New sidebar layout ([#19089](https://github.com/RocketChat/Rocket.Chat/pull/19089) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - React Avatar Provider ([#19321](https://github.com/RocketChat/Rocket.Chat/pull/19321)) ### 🐛 Bug fixes -- "Export Messages" only works for global roles ([#19264](https://github.com/RocketChat/Rocket.Chat/pull/19264)) +- "Export Messages" only works for global roles ([#19264](https://github.com/RocketChat/Rocket.Chat/pull/19264) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- **ENTERPRISE:** Race condition on Omnichannel queues ([#19352](https://github.com/RocketChat/Rocket.Chat/pull/19352)) +- **ENTERPRISE:** Race condition on Omnichannel queues ([#19352](https://github.com/RocketChat/Rocket.Chat/pull/19352) by [@renatobecker](https://github.com/renatobecker)) -- 2FA required rendering blank page ([#19364](https://github.com/RocketChat/Rocket.Chat/pull/19364)) +- 2FA required rendering blank page ([#19364](https://github.com/RocketChat/Rocket.Chat/pull/19364) by [@tassoevan](https://github.com/tassoevan)) - Adding missing custom fields translation in my account's profile ([#19179](https://github.com/RocketChat/Rocket.Chat/pull/19179)) @@ -9433,39 +9550,39 @@ - Admin Sidebar overflowing ([#19101](https://github.com/RocketChat/Rocket.Chat/pull/19101)) -- Agent status offline and wrong i18n key ([#19199](https://github.com/RocketChat/Rocket.Chat/pull/19199)) +- Agent status offline and wrong i18n key ([#19199](https://github.com/RocketChat/Rocket.Chat/pull/19199) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Anonymous users are counted on the server statistics and engagement dashboard ([#19263](https://github.com/RocketChat/Rocket.Chat/pull/19263)) +- Anonymous users are counted on the server statistics and engagement dashboard ([#19263](https://github.com/RocketChat/Rocket.Chat/pull/19263) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Broken user info when a user don't have an email address ([#19339](https://github.com/RocketChat/Rocket.Chat/pull/19339)) +- Broken user info when a user don't have an email address ([#19339](https://github.com/RocketChat/Rocket.Chat/pull/19339) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524)) +- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Cloud Register Allowing Empty Tokens ([#19501](https://github.com/RocketChat/Rocket.Chat/pull/19501)) -- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519)) +- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Don't send room name on notification ([#19247](https://github.com/RocketChat/Rocket.Chat/pull/19247)) - Error preventing from removing users without a role ([#19204](https://github.com/RocketChat/Rocket.Chat/pull/19204) by [@RohitKumar-200](https://github.com/RohitKumar-200)) -- Error when editing priority and required description ([#19170](https://github.com/RocketChat/Rocket.Chat/pull/19170)) +- Error when editing priority and required description ([#19170](https://github.com/RocketChat/Rocket.Chat/pull/19170) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Integrations history page not reacting to changes. ([#19114](https://github.com/RocketChat/Rocket.Chat/pull/19114)) -- Invalid attachments on User Data downloads ([#19203](https://github.com/RocketChat/Rocket.Chat/pull/19203)) +- Invalid attachments on User Data downloads ([#19203](https://github.com/RocketChat/Rocket.Chat/pull/19203) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- IRC Bridge not working ([#19009](https://github.com/RocketChat/Rocket.Chat/pull/19009)) +- IRC Bridge not working ([#19009](https://github.com/RocketChat/Rocket.Chat/pull/19009) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- LDAP Sync Error Dup Key ([#19337](https://github.com/RocketChat/Rocket.Chat/pull/19337)) +- LDAP Sync Error Dup Key ([#19337](https://github.com/RocketChat/Rocket.Chat/pull/19337) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Livechat Appearance label and reset button ([#19171](https://github.com/RocketChat/Rocket.Chat/pull/19171)) +- Livechat Appearance label and reset button ([#19171](https://github.com/RocketChat/Rocket.Chat/pull/19171) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Message actions on top of text ([#19316](https://github.com/RocketChat/Rocket.Chat/pull/19316)) +- Message actions on top of text ([#19316](https://github.com/RocketChat/Rocket.Chat/pull/19316) by [@tassoevan](https://github.com/tassoevan)) - Missing "Bio" in user's profile view (#18821) ([#19166](https://github.com/RocketChat/Rocket.Chat/pull/19166)) -- Non admin cannot add custom avatar to group ([#18960](https://github.com/RocketChat/Rocket.Chat/pull/18960) by [@FelipeParreira](https://github.com/FelipeParreira)) +- Non admin cannot add custom avatar to group ([#18960](https://github.com/RocketChat/Rocket.Chat/pull/18960) by [@FelipeParreira](https://github.com/FelipeParreira) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) Allow non-admins to change room avatar. @@ -9473,7 +9590,7 @@ - Omnichannel - typo error label at current chats page ([#19379](https://github.com/RocketChat/Rocket.Chat/pull/19379) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel auditing required field ([#19201](https://github.com/RocketChat/Rocket.Chat/pull/19201)) +- Omnichannel auditing required field ([#19201](https://github.com/RocketChat/Rocket.Chat/pull/19201) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Omnichannel: triggers page not rendering. ([#19134](https://github.com/RocketChat/Rocket.Chat/pull/19134)) @@ -9485,29 +9602,29 @@ fix(push): Set push notification priority to 'high' for FCM -- Remove requirements to tag description and department ([#19169](https://github.com/RocketChat/Rocket.Chat/pull/19169)) +- Remove requirements to tag description and department ([#19169](https://github.com/RocketChat/Rocket.Chat/pull/19169) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - SAML login undefined error message ([#18649](https://github.com/RocketChat/Rocket.Chat/pull/18649) by [@galshiff](https://github.com/galshiff)) Fixed the SAML login undefined error message -- Selecting the same department for multiple units ([#19168](https://github.com/RocketChat/Rocket.Chat/pull/19168)) +- Selecting the same department for multiple units ([#19168](https://github.com/RocketChat/Rocket.Chat/pull/19168) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Server Errors on new Client Connections ([#19266](https://github.com/RocketChat/Rocket.Chat/pull/19266)) +- Server Errors on new Client Connections ([#19266](https://github.com/RocketChat/Rocket.Chat/pull/19266) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Setting values being showed up in logs when using log level for debug ([#18239](https://github.com/RocketChat/Rocket.Chat/pull/18239)) +- Setting values being showed up in logs when using log level for debug ([#18239](https://github.com/RocketChat/Rocket.Chat/pull/18239) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Thread List showing wrong items ([#19351](https://github.com/RocketChat/Rocket.Chat/pull/19351)) +- Thread List showing wrong items ([#19351](https://github.com/RocketChat/Rocket.Chat/pull/19351) by [@tassoevan](https://github.com/tassoevan)) - Thread view in a channel user haven't joined (#19008) ([#19172](https://github.com/RocketChat/Rocket.Chat/pull/19172)) -- Use etag on user info ([#19349](https://github.com/RocketChat/Rocket.Chat/pull/19349)) +- Use etag on user info ([#19349](https://github.com/RocketChat/Rocket.Chat/pull/19349) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - UserCard Roles Description ([#19200](https://github.com/RocketChat/Rocket.Chat/pull/19200)) -- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133)) +- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133) by [@renatobecker](https://github.com/renatobecker)) -- Wrong avatar urls when using providers ([#18929](https://github.com/RocketChat/Rocket.Chat/pull/18929)) +- Wrong avatar urls when using providers ([#18929](https://github.com/RocketChat/Rocket.Chat/pull/18929) by [@MartinSchoeler](https://github.com/MartinSchoeler))
🔍 Minor changes @@ -9515,9 +9632,9 @@ - Build micro services Docker images with correct tags ([#19418](https://github.com/RocketChat/Rocket.Chat/pull/19418)) -- Bump Livechat widget ([#19361](https://github.com/RocketChat/Rocket.Chat/pull/19361)) +- Bump Livechat widget ([#19361](https://github.com/RocketChat/Rocket.Chat/pull/19361) by [@renatobecker](https://github.com/renatobecker)) -- Bump Livechat widget ([#19478](https://github.com/RocketChat/Rocket.Chat/pull/19478)) +- Bump Livechat widget ([#19478](https://github.com/RocketChat/Rocket.Chat/pull/19478) by [@renatobecker](https://github.com/renatobecker)) - Bump object-path from 0.11.4 to 0.11.5 ([#19298](https://github.com/RocketChat/Rocket.Chat/pull/19298) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -9535,21 +9652,21 @@ - Micro Services: Prevent duplicated events ([#19435](https://github.com/RocketChat/Rocket.Chat/pull/19435)) -- Non-idiomatic React code ([#19303](https://github.com/RocketChat/Rocket.Chat/pull/19303)) +- Non-idiomatic React code ([#19303](https://github.com/RocketChat/Rocket.Chat/pull/19303) by [@tassoevan](https://github.com/tassoevan)) -- Reassessment of client helpers ([#19249](https://github.com/RocketChat/Rocket.Chat/pull/19249)) +- Reassessment of client helpers ([#19249](https://github.com/RocketChat/Rocket.Chat/pull/19249) by [@tassoevan](https://github.com/tassoevan)) -- Refactor some React Pages and Components ([#19202](https://github.com/RocketChat/Rocket.Chat/pull/19202)) +- Refactor some React Pages and Components ([#19202](https://github.com/RocketChat/Rocket.Chat/pull/19202) by [@tassoevan](https://github.com/tassoevan)) -- Refactor: Omnichannel departments ([#18920](https://github.com/RocketChat/Rocket.Chat/pull/18920)) +- Refactor: Omnichannel departments ([#18920](https://github.com/RocketChat/Rocket.Chat/pull/18920) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: `Leave Room` modal not closing ([#19460](https://github.com/RocketChat/Rocket.Chat/pull/19460)) +- Regression: `Leave Room` modal not closing ([#19460](https://github.com/RocketChat/Rocket.Chat/pull/19460) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Agent Status leading to broken page ([#19409](https://github.com/RocketChat/Rocket.Chat/pull/19409)) +- Regression: Agent Status leading to broken page ([#19409](https://github.com/RocketChat/Rocket.Chat/pull/19409) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Allow apps to schedule jobs along with processor register ([#19416](https://github.com/RocketChat/Rocket.Chat/pull/19416)) +- Regression: Allow apps to schedule jobs along with processor register ([#19416](https://github.com/RocketChat/Rocket.Chat/pull/19416) by [@thassiov](https://github.com/thassiov)) -- Regression: Attachment without title or description show "sent attachment" in view mode extended ([#19443](https://github.com/RocketChat/Rocket.Chat/pull/19443)) +- Regression: Attachment without title or description show "sent attachment" in view mode extended ([#19443](https://github.com/RocketChat/Rocket.Chat/pull/19443) by [@tiagoevanp](https://github.com/tiagoevanp)) - Regression: Fix broadcast events when running as monolith ([#19498](https://github.com/RocketChat/Rocket.Chat/pull/19498)) @@ -9559,7 +9676,7 @@ - Regression: Fix presence request logic ([#19527](https://github.com/RocketChat/Rocket.Chat/pull/19527)) -- Regression: Fix presence status ([#19474](https://github.com/RocketChat/Rocket.Chat/pull/19474)) +- Regression: Fix presence status ([#19474](https://github.com/RocketChat/Rocket.Chat/pull/19474) by [@tassoevan](https://github.com/tassoevan)) - Regression: Fix React warnings ([#19508](https://github.com/RocketChat/Rocket.Chat/pull/19508)) @@ -9567,13 +9684,13 @@ - Regression: Fix stream-room-data payload ([#19407](https://github.com/RocketChat/Rocket.Chat/pull/19407)) -- Regression: Fix Thread List order ([#19486](https://github.com/RocketChat/Rocket.Chat/pull/19486)) +- Regression: Fix Thread List order ([#19486](https://github.com/RocketChat/Rocket.Chat/pull/19486) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Fix visitor field missing on subscription payload ([#19412](https://github.com/RocketChat/Rocket.Chat/pull/19412)) +- Regression: Fix visitor field missing on subscription payload ([#19412](https://github.com/RocketChat/Rocket.Chat/pull/19412) by [@renatobecker](https://github.com/renatobecker)) - Regression: GenericTable.HeaderCell does not accept on click anymore ([#19358](https://github.com/RocketChat/Rocket.Chat/pull/19358)) -- Regression: Pass `unset` parameter of updated `userData` notification ([#19380](https://github.com/RocketChat/Rocket.Chat/pull/19380)) +- Regression: Pass `unset` parameter of updated `userData` notification ([#19380](https://github.com/RocketChat/Rocket.Chat/pull/19380) by [@tassoevan](https://github.com/tassoevan)) - Regression: Prevent network broker from starting when not needed ([#19532](https://github.com/RocketChat/Rocket.Chat/pull/19532)) @@ -9581,31 +9698,31 @@ - Regression: Rocket.Chat Apps updates always fail ([#19411](https://github.com/RocketChat/Rocket.Chat/pull/19411)) -- Regression: Room item menu display delay ([#19401](https://github.com/RocketChat/Rocket.Chat/pull/19401)) +- Regression: Room item menu display delay ([#19401](https://github.com/RocketChat/Rocket.Chat/pull/19401) by [@tassoevan](https://github.com/tassoevan)) - Regression: Sidebar message preview escaping html ([#19382](https://github.com/RocketChat/Rocket.Chat/pull/19382)) -- Regression: Sidebar reactivity when read last messages ([#19449](https://github.com/RocketChat/Rocket.Chat/pull/19449)) +- Regression: Sidebar reactivity when read last messages ([#19449](https://github.com/RocketChat/Rocket.Chat/pull/19449) by [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Thread component not updating its message list ([#19390](https://github.com/RocketChat/Rocket.Chat/pull/19390)) +- Regression: Thread component not updating its message list ([#19390](https://github.com/RocketChat/Rocket.Chat/pull/19390) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Thread list misbehaving ([#19413](https://github.com/RocketChat/Rocket.Chat/pull/19413)) +- Regression: Thread list misbehaving ([#19413](https://github.com/RocketChat/Rocket.Chat/pull/19413) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) -- Regression: Thread not showing for unloaded message ([#19402](https://github.com/RocketChat/Rocket.Chat/pull/19402)) +- Regression: Thread not showing for unloaded message ([#19402](https://github.com/RocketChat/Rocket.Chat/pull/19402) by [@tassoevan](https://github.com/tassoevan)) - Regression: unable to mark room as read ([#19419](https://github.com/RocketChat/Rocket.Chat/pull/19419)) -- Regression: User card closing ([#19322](https://github.com/RocketChat/Rocket.Chat/pull/19322)) +- Regression: User card closing ([#19322](https://github.com/RocketChat/Rocket.Chat/pull/19322) by [@tassoevan](https://github.com/tassoevan)) -- Remove legacy modal template ([#19276](https://github.com/RocketChat/Rocket.Chat/pull/19276)) +- Remove legacy modal template ([#19276](https://github.com/RocketChat/Rocket.Chat/pull/19276) by [@tassoevan](https://github.com/tassoevan)) -- Remove legacy slider ([#19255](https://github.com/RocketChat/Rocket.Chat/pull/19255)) +- Remove legacy slider ([#19255](https://github.com/RocketChat/Rocket.Chat/pull/19255) by [@tassoevan](https://github.com/tassoevan)) - Remove unecessary return at the send code api ([#19494](https://github.com/RocketChat/Rocket.Chat/pull/19494)) - Remove WeDeploy from README ([#19342](https://github.com/RocketChat/Rocket.Chat/pull/19342) by [@lucas-andre](https://github.com/lucas-andre)) -- Rewrite: Reset Login Form ([#18237](https://github.com/RocketChat/Rocket.Chat/pull/18237)) +- Rewrite: Reset Login Form ([#18237](https://github.com/RocketChat/Rocket.Chat/pull/18237) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Unify ephemeral message events ([#19464](https://github.com/RocketChat/Rocket.Chat/pull/19464)) @@ -9626,6 +9743,7 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@FelipeParreira](https://github.com/FelipeParreira) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RohitKumar-200](https://github.com/RohitKumar-200) - [@aradhya-gupta](https://github.com/aradhya-gupta) - [@arminfelder](https://github.com/arminfelder) @@ -9639,11 +9757,15 @@ - [@jgribonvald](https://github.com/jgribonvald) - [@lolimay](https://github.com/lolimay) - [@lucas-andre](https://github.com/lucas-andre) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@frdmn](https://github.com/frdmn) @@ -9651,13 +9773,8 @@ - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) # 3.7.4 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -9671,11 +9788,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -9711,23 +9828,26 @@ - Admin not working on IE11 ([#19348](https://github.com/RocketChat/Rocket.Chat/pull/19348)) -- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524)) +- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519)) +- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Update Polyfills and fix directory in IE ([#19525](https://github.com/RocketChat/Rocket.Chat/pull/19525)) +- Update Polyfills and fix directory in IE ([#19525](https://github.com/RocketChat/Rocket.Chat/pull/19525) by [@MartinSchoeler](https://github.com/MartinSchoeler))
🔍 Minor changes -- Release 3.7.2 ([#19529](https://github.com/RocketChat/Rocket.Chat/pull/19529)) +- Release 3.7.2 ([#19529](https://github.com/RocketChat/Rocket.Chat/pull/19529) by [@MartinSchoeler](https://github.com/MartinSchoeler))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@dougfabris](https://github.com/dougfabris) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9756,13 +9876,16 @@ A missing configuration was not limiting the new oplog tailing to pool the database frequently even when no data was available, leading to both node and mongodb process been consuming high CPU even with low usage. This case was happening for installations using `mmapv1` database engine or when no admin access was granted to the database user, both preventing the usage of the new [Change Streams](https://docs.mongodb.com/manual/changeStreams/) implementation and fallbacking to our custom oplog implementation in replacement to the Meteor's one what was able to be disabled and use the native implementation via the environmental variable `USE_NATIVE_OPLOG=true`. -- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133)) +- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133) by [@renatobecker](https://github.com/renatobecker)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9778,19 +9901,19 @@ ### 🎉 New features -- "Room avatar changed" system messages ([#18839](https://github.com/RocketChat/Rocket.Chat/pull/18839)) +- "Room avatar changed" system messages ([#18839](https://github.com/RocketChat/Rocket.Chat/pull/18839) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- **Apps:** Add a Livechat API - setCustomFields ([#18912](https://github.com/RocketChat/Rocket.Chat/pull/18912) by [@lolimay](https://github.com/lolimay)) +- **Apps:** Add a Livechat API - setCustomFields ([#18912](https://github.com/RocketChat/Rocket.Chat/pull/18912) by [@lolimay](https://github.com/lolimay) & [@thassiov](https://github.com/thassiov)) - **Apps:** Add a new upload API ([#18955](https://github.com/RocketChat/Rocket.Chat/pull/18955) by [@lolimay](https://github.com/lolimay)) -- **Apps:** Add support for new livechat guest's and room's events ([#18946](https://github.com/RocketChat/Rocket.Chat/pull/18946)) +- **Apps:** Add support for new livechat guest's and room's events ([#18946](https://github.com/RocketChat/Rocket.Chat/pull/18946) by [@thassiov](https://github.com/thassiov)) - **Apps:** Add support to the "encoding" option in http requests from Apps ([#19002](https://github.com/RocketChat/Rocket.Chat/pull/19002) by [@lolimay](https://github.com/lolimay)) - Apps-Engine v1.18.0 ([#19047](https://github.com/RocketChat/Rocket.Chat/pull/19047)) -- Option to require settings on wizard UI via ENV variables ([#18974](https://github.com/RocketChat/Rocket.Chat/pull/18974)) +- Option to require settings on wizard UI via ENV variables ([#18974](https://github.com/RocketChat/Rocket.Chat/pull/18974) by [@MartinSchoeler](https://github.com/MartinSchoeler)) [NEW] Option to require settings on wizard UI via ENV variables @@ -9809,18 +9932,18 @@ - Added a new setting to allow/disallow saving media to device's gallery on mobile client -- Move jump to message outside menu ([#18928](https://github.com/RocketChat/Rocket.Chat/pull/18928)) +- Move jump to message outside menu ([#18928](https://github.com/RocketChat/Rocket.Chat/pull/18928) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Stop re-sending push notifications rejected by the gateway ([#18608](https://github.com/RocketChat/Rocket.Chat/pull/18608)) +- Stop re-sending push notifications rejected by the gateway ([#18608](https://github.com/RocketChat/Rocket.Chat/pull/18608) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🐛 Bug fixes -- "Download my data" popup showing HTML code. ([#18947](https://github.com/RocketChat/Rocket.Chat/pull/18947)) +- "Download my data" popup showing HTML code. ([#18947](https://github.com/RocketChat/Rocket.Chat/pull/18947) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- "Save to WebDav" not working ([#18883](https://github.com/RocketChat/Rocket.Chat/pull/18883)) +- "Save to WebDav" not working ([#18883](https://github.com/RocketChat/Rocket.Chat/pull/18883) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835)) +- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835) by [@renatobecker](https://github.com/renatobecker)) - API call users.setStatus does not trigger status update of clients ([#18961](https://github.com/RocketChat/Rocket.Chat/pull/18961) by [@FelipeParreira](https://github.com/FelipeParreira)) @@ -9844,9 +9967,9 @@ - e.sendToBottomIfNecessaryDebounced is not a function ([#18834](https://github.com/RocketChat/Rocket.Chat/pull/18834)) -- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948)) +- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978)) +- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978) by [@alansikora](https://github.com/alansikora)) - File upload (Avatars, Emoji, Sounds) ([#18841](https://github.com/RocketChat/Rocket.Chat/pull/18841)) @@ -9856,19 +9979,19 @@ - If there is `ufs` somewhere in url the request to api always returns 404 ([#18874](https://github.com/RocketChat/Rocket.Chat/pull/18874) by [@FelipeParreira](https://github.com/FelipeParreira)) -- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866)) +- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - invite-all-from and invite-all-to commands don't work with multibyte room names ([#18919](https://github.com/RocketChat/Rocket.Chat/pull/18919) by [@FelipeParreira](https://github.com/FelipeParreira)) - Jitsi call start updating subscriptions ([#18837](https://github.com/RocketChat/Rocket.Chat/pull/18837)) -- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994)) +- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Non-upload requests being passed to UFS proxy middleware ([#18931](https://github.com/RocketChat/Rocket.Chat/pull/18931) by [@FelipeParreira](https://github.com/FelipeParreira)) Avoid non-upload request to be caught by UFS proxy middleware. -- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795)) +- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795) by [@renatobecker](https://github.com/renatobecker)) - Open room after guest registration ([#18755](https://github.com/RocketChat/Rocket.Chat/pull/18755)) @@ -9890,15 +10013,15 @@ - Spurious expert role in startup data ([#18667](https://github.com/RocketChat/Rocket.Chat/pull/18667)) -- Stop adding push messages to queue if push is disabled ([#18830](https://github.com/RocketChat/Rocket.Chat/pull/18830)) +- Stop adding push messages to queue if push is disabled ([#18830](https://github.com/RocketChat/Rocket.Chat/pull/18830) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - User administration throwing a blank page if user has no role ([#18851](https://github.com/RocketChat/Rocket.Chat/pull/18851)) -- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852)) +- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852) by [@renatobecker](https://github.com/renatobecker)) - User Info: Email and name/username display, alignment on big screens, make admin action ([#18976](https://github.com/RocketChat/Rocket.Chat/pull/18976)) -- Users not being able to activate/deactivate E2E in DMs ([#18943](https://github.com/RocketChat/Rocket.Chat/pull/18943)) +- Users not being able to activate/deactivate E2E in DMs ([#18943](https://github.com/RocketChat/Rocket.Chat/pull/18943) by [@MartinSchoeler](https://github.com/MartinSchoeler)) [FIX] Users not being able to activate/deactivate E2E in DMs @@ -9920,9 +10043,9 @@ - Fix french translations ([#18746](https://github.com/RocketChat/Rocket.Chat/pull/18746) by [@lsignac](https://github.com/lsignac)) -- Fix saveRoomSettings method complexity ([#18840](https://github.com/RocketChat/Rocket.Chat/pull/18840)) +- Fix saveRoomSettings method complexity ([#18840](https://github.com/RocketChat/Rocket.Chat/pull/18840) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Fix: Missing WebDav upload errors logs ([#18849](https://github.com/RocketChat/Rocket.Chat/pull/18849)) +- Fix: Missing WebDav upload errors logs ([#18849](https://github.com/RocketChat/Rocket.Chat/pull/18849) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - LingoHub based on develop ([#18973](https://github.com/RocketChat/Rocket.Chat/pull/18973)) @@ -9930,7 +10053,7 @@ - LingoHub based on develop ([#18761](https://github.com/RocketChat/Rocket.Chat/pull/18761)) -- Merge master into develop & Set version to 3.7.0-develop ([#18752](https://github.com/RocketChat/Rocket.Chat/pull/18752) by [@thirsch](https://github.com/thirsch)) +- Merge master into develop & Set version to 3.7.0-develop ([#18752](https://github.com/RocketChat/Rocket.Chat/pull/18752) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker) & [@thirsch](https://github.com/thirsch)) - New: Use database change streams when available ([#18892](https://github.com/RocketChat/Rocket.Chat/pull/18892)) @@ -9952,7 +10075,7 @@ - Regression: Handle MongoDB authentication issues ([#18993](https://github.com/RocketChat/Rocket.Chat/pull/18993)) -- Replace copying assets on post-install with symlinks ([#18707](https://github.com/RocketChat/Rocket.Chat/pull/18707)) +- Replace copying assets on post-install with symlinks ([#18707](https://github.com/RocketChat/Rocket.Chat/pull/18707) by [@tassoevan](https://github.com/tassoevan)) - Set some queries to prefer the secondary database ([#18887](https://github.com/RocketChat/Rocket.Chat/pull/18887)) @@ -9966,29 +10089,29 @@ - [@FelipeParreira](https://github.com/FelipeParreira) - [@Karting06](https://github.com/Karting06) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-sko](https://github.com/d-sko) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@lolimay](https://github.com/lolimay) - [@lsignac](https://github.com/lsignac) - [@mrtndwrd](https://github.com/mrtndwrd) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) - [@thirsch](https://github.com/thirsch) - [@wreiske](https://github.com/wreiske) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@diegolmello](https://github.com/diegolmello) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) # 3.6.3 `2020-09-25 · 4 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` @@ -10002,11 +10125,11 @@ ### 🐛 Bug fixes -- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948)) +- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978)) +- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978) by [@alansikora](https://github.com/alansikora)) -- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994)) +- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - PDF not rendering ([#18956](https://github.com/RocketChat/Rocket.Chat/pull/18956)) @@ -10016,15 +10139,18 @@ - Obey to settings properties ([#19020](https://github.com/RocketChat/Rocket.Chat/pull/19020)) -- Release 3.6.3 ([#19022](https://github.com/RocketChat/Rocket.Chat/pull/19022)) +- Release 3.6.3 ([#19022](https://github.com/RocketChat/Rocket.Chat/pull/19022) by [@alansikora](https://github.com/alansikora) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@alansikora](https://github.com/alansikora) -- [@gabriellsh](https://github.com/gabriellsh) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@gabriellsh](https://github.com/gabriellsh) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.6.2 @@ -10045,7 +10171,7 @@ Allow for user deactivation through REST API (even if user is the last owner of a room) -- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866)) +- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - invite-all-from and invite-all-to commands don't work with multibyte room names ([#18919](https://github.com/RocketChat/Rocket.Chat/pull/18919) by [@FelipeParreira](https://github.com/FelipeParreira)) @@ -10061,12 +10187,12 @@ - [@FelipeParreira](https://github.com/FelipeParreira) - [@mrtndwrd](https://github.com/mrtndwrd) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@wreiske](https://github.com/wreiske) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.6.1 @@ -10081,24 +10207,27 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835)) +- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835) by [@renatobecker](https://github.com/renatobecker)) - File upload (Avatars, Emoji, Sounds) ([#18841](https://github.com/RocketChat/Rocket.Chat/pull/18841)) - IE11 support livechat widget ([#18850](https://github.com/RocketChat/Rocket.Chat/pull/18850)) -- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795)) +- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795) by [@renatobecker](https://github.com/renatobecker)) - Showing alerts during setup wizard ([#18862](https://github.com/RocketChat/Rocket.Chat/pull/18862)) - User administration throwing a blank page if user has no role ([#18851](https://github.com/RocketChat/Rocket.Chat/pull/18851)) -- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852)) +- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852) by [@renatobecker](https://github.com/renatobecker)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.6.0 @@ -10117,23 +10246,23 @@ - **Jitsi:** Setting to use room's name instead of room's id to generate the URL ([#17481](https://github.com/RocketChat/Rocket.Chat/pull/17481)) -- **Omnichannel:** Ability to set character message limit on Livechat widget ([#18261](https://github.com/RocketChat/Rocket.Chat/pull/18261) by [@oguhpereira](https://github.com/oguhpereira)) +- **Omnichannel:** Ability to set character message limit on Livechat widget ([#18261](https://github.com/RocketChat/Rocket.Chat/pull/18261) by [@oguhpereira](https://github.com/oguhpereira) & [@renatobecker](https://github.com/renatobecker)) - **Omnichannel:** Livechat widget support for rich messages via UiKit ([#18643](https://github.com/RocketChat/Rocket.Chat/pull/18643)) -- **Omnichannel/API:** Endpoint `livechat/room.visitor` to change Omnichannel room's visitor ([#18528](https://github.com/RocketChat/Rocket.Chat/pull/18528)) +- **Omnichannel/API:** Endpoint `livechat/room.visitor` to change Omnichannel room's visitor ([#18528](https://github.com/RocketChat/Rocket.Chat/pull/18528) by [@renatobecker](https://github.com/renatobecker)) -- **Omnichannel/API:** Endpoint `livechat/visitors.search` to search Livechat visitors ([#18514](https://github.com/RocketChat/Rocket.Chat/pull/18514)) +- **Omnichannel/API:** Endpoint `livechat/visitors.search` to search Livechat visitors ([#18514](https://github.com/RocketChat/Rocket.Chat/pull/18514) by [@renatobecker](https://github.com/renatobecker)) - Admin option to reset other users’ E2E encryption key ([#18642](https://github.com/RocketChat/Rocket.Chat/pull/18642)) Requires the 2FA password fallback enforcement enabled to work -- Banner for servers in the middle of the cloud registration process ([#18623](https://github.com/RocketChat/Rocket.Chat/pull/18623)) +- Banner for servers in the middle of the cloud registration process ([#18623](https://github.com/RocketChat/Rocket.Chat/pull/18623) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Export room messages as file or directly via email ([#18606](https://github.com/RocketChat/Rocket.Chat/pull/18606)) -- Support for custom avatar images in channels ([#18443](https://github.com/RocketChat/Rocket.Chat/pull/18443)) +- Support for custom avatar images in channels ([#18443](https://github.com/RocketChat/Rocket.Chat/pull/18443) by [@MartinSchoeler](https://github.com/MartinSchoeler)) ### 🚀 Improvements @@ -10144,13 +10273,13 @@ - Add new setting to enforce 2FA password fallback (enabled only for new installations) - Require 2FA to save settings and reset E2E Encryption keys -- **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571)) +- **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker)) -- **Security:** Admin info page requires permission `view-statistics` ([#18408](https://github.com/RocketChat/Rocket.Chat/pull/18408)) +- **Security:** Admin info page requires permission `view-statistics` ([#18408](https://github.com/RocketChat/Rocket.Chat/pull/18408) by [@MartinSchoeler](https://github.com/MartinSchoeler)) Users now require the `view-statistics` permission to be access the `admin/info` page -- **Slack bridge:** Add support to sync threads ([#15992](https://github.com/RocketChat/Rocket.Chat/pull/15992) by [@antkaz](https://github.com/antkaz)) +- **Slack bridge:** Add support to sync threads ([#15992](https://github.com/RocketChat/Rocket.Chat/pull/15992) by [@antkaz](https://github.com/antkaz) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - New component and better look for tooltips ([#18399](https://github.com/RocketChat/Rocket.Chat/pull/18399)) @@ -10164,27 +10293,27 @@ - Agents enabledDepartment attribute not set on collection ([#18614](https://github.com/RocketChat/Rocket.Chat/pull/18614) by [@paulobernardoaf](https://github.com/paulobernardoaf)) -- Anonymous users were created as inactive if the manual approval setting was enabled ([#17427](https://github.com/RocketChat/Rocket.Chat/pull/17427)) +- Anonymous users were created as inactive if the manual approval setting was enabled ([#17427](https://github.com/RocketChat/Rocket.Chat/pull/17427) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Auto complete user suggestions ([#18437](https://github.com/RocketChat/Rocket.Chat/pull/18437)) +- Auto complete user suggestions ([#18437](https://github.com/RocketChat/Rocket.Chat/pull/18437) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) Fixes the issue with broken user suggestions in threads when using `@` - Backdrop on front of modal. ([#18596](https://github.com/RocketChat/Rocket.Chat/pull/18596)) -- Custom fields title when no custom fields ([#18374](https://github.com/RocketChat/Rocket.Chat/pull/18374)) +- Custom fields title when no custom fields ([#18374](https://github.com/RocketChat/Rocket.Chat/pull/18374) by [@tassoevan](https://github.com/tassoevan)) -- Emojis on thread replies ([#18407](https://github.com/RocketChat/Rocket.Chat/pull/18407)) +- Emojis on thread replies ([#18407](https://github.com/RocketChat/Rocket.Chat/pull/18407) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) Users can now see the emojis on thread replies -- Enabling Apple OAuth crashes other OAuth services ([#18563](https://github.com/RocketChat/Rocket.Chat/pull/18563)) +- Enabling Apple OAuth crashes other OAuth services ([#18563](https://github.com/RocketChat/Rocket.Chat/pull/18563) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Error when reading uploads from Livechat Visitor through the Apps Engine ([#18474](https://github.com/RocketChat/Rocket.Chat/pull/18474)) +- Error when reading uploads from Livechat Visitor through the Apps Engine ([#18474](https://github.com/RocketChat/Rocket.Chat/pull/18474) by [@renatobecker](https://github.com/renatobecker)) -- findOrCreateInvite REST endpoint ignoring `days` and `maxUses` params ([#18565](https://github.com/RocketChat/Rocket.Chat/pull/18565)) +- findOrCreateInvite REST endpoint ignoring `days` and `maxUses` params ([#18565](https://github.com/RocketChat/Rocket.Chat/pull/18565) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Invalid sample JSON on admin settings ([#18595](https://github.com/RocketChat/Rocket.Chat/pull/18595)) +- Invalid sample JSON on admin settings ([#18595](https://github.com/RocketChat/Rocket.Chat/pull/18595) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - MarkdownText usage ([#18621](https://github.com/RocketChat/Rocket.Chat/pull/18621)) @@ -10204,7 +10333,7 @@ - Sending notifications from senders without a name ([#18479](https://github.com/RocketChat/Rocket.Chat/pull/18479)) -- SMS integration not storing media files ([#18491](https://github.com/RocketChat/Rocket.Chat/pull/18491)) +- SMS integration not storing media files ([#18491](https://github.com/RocketChat/Rocket.Chat/pull/18491) by [@renatobecker](https://github.com/renatobecker)) - Thread reply disappearing and threads result on search ([#18349](https://github.com/RocketChat/Rocket.Chat/pull/18349)) @@ -10216,7 +10345,7 @@ - UserCard avatar cache (avatarETag) ([#18466](https://github.com/RocketChat/Rocket.Chat/pull/18466)) -- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594)) +- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Wrong rooms list order when last message date is missing ([#18639](https://github.com/RocketChat/Rocket.Chat/pull/18639)) @@ -10246,11 +10375,11 @@ - LingoHub based on develop ([#18465](https://github.com/RocketChat/Rocket.Chat/pull/18465)) -- Merge master into develop & Set version to 3.6.0-develop ([#18401](https://github.com/RocketChat/Rocket.Chat/pull/18401) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@omarchehab98](https://github.com/omarchehab98) & [@paulobernardoaf](https://github.com/paulobernardoaf)) +- Merge master into develop & Set version to 3.6.0-develop ([#18401](https://github.com/RocketChat/Rocket.Chat/pull/18401) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@omarchehab98](https://github.com/omarchehab98) & [@paulobernardoaf](https://github.com/paulobernardoaf) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) -- Missing email notification when an admin resets your E2E key ([#18673](https://github.com/RocketChat/Rocket.Chat/pull/18673)) +- Missing email notification when an admin resets your E2E key ([#18673](https://github.com/RocketChat/Rocket.Chat/pull/18673) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Omnichannel Admin rewritten in React (#18438) ([#18438](https://github.com/RocketChat/Rocket.Chat/pull/18438)) +- Omnichannel Admin rewritten in React (#18438) ([#18438](https://github.com/RocketChat/Rocket.Chat/pull/18438) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) - Prevent directory API to return emails if the user has no permission ([#18478](https://github.com/RocketChat/Rocket.Chat/pull/18478)) @@ -10260,21 +10389,21 @@ - Regression: Accept visitors for uikit interactions ([#18706](https://github.com/RocketChat/Rocket.Chat/pull/18706)) -- Regression: Add remove popup to omnichannel custom fields ([#18719](https://github.com/RocketChat/Rocket.Chat/pull/18719)) +- Regression: Add remove popup to omnichannel custom fields ([#18719](https://github.com/RocketChat/Rocket.Chat/pull/18719) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Agents Page issues ([#18684](https://github.com/RocketChat/Rocket.Chat/pull/18684)) +- Regression: Agents Page issues ([#18684](https://github.com/RocketChat/Rocket.Chat/pull/18684) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) -- Regression: Bundle the package `hepburn` ([#18715](https://github.com/RocketChat/Rocket.Chat/pull/18715)) +- Regression: Bundle the package `hepburn` ([#18715](https://github.com/RocketChat/Rocket.Chat/pull/18715) by [@tassoevan](https://github.com/tassoevan)) - Regression: Fix room avatar file name ([#18544](https://github.com/RocketChat/Rocket.Chat/pull/18544)) -- Regression: Omnichannel Business Hours Issues ([#18723](https://github.com/RocketChat/Rocket.Chat/pull/18723)) +- Regression: Omnichannel Business Hours Issues ([#18723](https://github.com/RocketChat/Rocket.Chat/pull/18723) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Omnichannel Current Chat issues ([#18718](https://github.com/RocketChat/Rocket.Chat/pull/18718)) +- Regression: Omnichannel Current Chat issues ([#18718](https://github.com/RocketChat/Rocket.Chat/pull/18718) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Omnichannel Tags and Units issues ([#18705](https://github.com/RocketChat/Rocket.Chat/pull/18705)) +- Regression: Omnichannel Tags and Units issues ([#18705](https://github.com/RocketChat/Rocket.Chat/pull/18705) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Priorities Page issues ([#18685](https://github.com/RocketChat/Rocket.Chat/pull/18685)) +- Regression: Priorities Page issues ([#18685](https://github.com/RocketChat/Rocket.Chat/pull/18685) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) - Regression: Revert silent: true ([#18671](https://github.com/RocketChat/Rocket.Chat/pull/18671)) @@ -10284,11 +10413,11 @@ - Regression: UI margins on Export Messages ([#18682](https://github.com/RocketChat/Rocket.Chat/pull/18682)) -- Regression: Update checker not being disabled properly. ([#18676](https://github.com/RocketChat/Rocket.Chat/pull/18676)) +- Regression: Update checker not being disabled properly. ([#18676](https://github.com/RocketChat/Rocket.Chat/pull/18676) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Use user autocomplete on export messages ([#18726](https://github.com/RocketChat/Rocket.Chat/pull/18726)) -- Release 3.6.0 ([#18727](https://github.com/RocketChat/Rocket.Chat/pull/18727) by [@oguhpereira](https://github.com/oguhpereira) & [@thirsch](https://github.com/thirsch)) +- Release 3.6.0 ([#18727](https://github.com/RocketChat/Rocket.Chat/pull/18727) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@juliagrala](https://github.com/juliagrala) & [@oguhpereira](https://github.com/oguhpereira) & [@renatobecker](https://github.com/renatobecker) & [@thirsch](https://github.com/thirsch)) - Set default timeout of 20s for HTTP calls ([#18549](https://github.com/RocketChat/Rocket.Chat/pull/18549)) @@ -10296,38 +10425,38 @@ - Update dependencies ([#18593](https://github.com/RocketChat/Rocket.Chat/pull/18593)) -- Update README.md ([#18503](https://github.com/RocketChat/Rocket.Chat/pull/18503)) +- Update README.md ([#18503](https://github.com/RocketChat/Rocket.Chat/pull/18503) by [@juliagrala](https://github.com/juliagrala)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@densik](https://github.com/densik) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@dudizilla](https://github.com/dudizilla) - [@galshiff](https://github.com/galshiff) +- [@juliagrala](https://github.com/juliagrala) - [@oguhpereira](https://github.com/oguhpereira) - [@omarchehab98](https://github.com/omarchehab98) - [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@thirsch](https://github.com/thirsch) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Sing-Li](https://github.com/Sing-Li) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@juliagrala](https://github.com/juliagrala) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.5.4 `2020-08-24 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` @@ -10372,20 +10501,23 @@ - UIKit Select and Multiselects not working ([#18598](https://github.com/RocketChat/Rocket.Chat/pull/18598)) -- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594)) +- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
🔍 Minor changes -- Release 3.5.3 ([#18610](https://github.com/RocketChat/Rocket.Chat/pull/18610)) +- Release 3.5.3 ([#18610](https://github.com/RocketChat/Rocket.Chat/pull/18610) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.5.2 @@ -10430,39 +10562,39 @@ - Appending 'false' to Jitsi URL ([#18430](https://github.com/RocketChat/Rocket.Chat/pull/18430)) -- Can't send long messages as attachment ([#18355](https://github.com/RocketChat/Rocket.Chat/pull/18355)) +- Can't send long messages as attachment ([#18355](https://github.com/RocketChat/Rocket.Chat/pull/18355) by [@tassoevan](https://github.com/tassoevan)) -- Error when updating omnichannel department without agents parameter ([#18428](https://github.com/RocketChat/Rocket.Chat/pull/18428)) +- Error when updating omnichannel department without agents parameter ([#18428](https://github.com/RocketChat/Rocket.Chat/pull/18428) by [@renatobecker](https://github.com/renatobecker)) -- Invalid MIME type when uploading audio files ([#18426](https://github.com/RocketChat/Rocket.Chat/pull/18426)) +- Invalid MIME type when uploading audio files ([#18426](https://github.com/RocketChat/Rocket.Chat/pull/18426) by [@renatobecker](https://github.com/renatobecker)) - Migration 194 ([#18457](https://github.com/RocketChat/Rocket.Chat/pull/18457) by [@thirsch](https://github.com/thirsch)) - Multiple push notifications sent via native drivers ([#18442](https://github.com/RocketChat/Rocket.Chat/pull/18442)) -- Omnichannel session monitor is not starting ([#18412](https://github.com/RocketChat/Rocket.Chat/pull/18412)) +- Omnichannel session monitor is not starting ([#18412](https://github.com/RocketChat/Rocket.Chat/pull/18412) by [@renatobecker](https://github.com/renatobecker)) -- Omnichannel Take Inquiry endpoint checking wrong permission ([#18446](https://github.com/RocketChat/Rocket.Chat/pull/18446)) +- Omnichannel Take Inquiry endpoint checking wrong permission ([#18446](https://github.com/RocketChat/Rocket.Chat/pull/18446) by [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes -- Release 3.5.1 ([#18452](https://github.com/RocketChat/Rocket.Chat/pull/18452) by [@thirsch](https://github.com/thirsch)) +- Release 3.5.1 ([#18452](https://github.com/RocketChat/Rocket.Chat/pull/18452) by [@renatobecker](https://github.com/renatobecker) & [@thirsch](https://github.com/thirsch))
### 👩‍💻👨‍💻 Contributors 😍 +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@thirsch](https://github.com/thirsch) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.5.0 `2020-07-27 · 8 🎉 · 5 🚀 · 29 🐛 · 34 🔍 · 21 👩‍💻👨‍💻` @@ -10480,13 +10612,13 @@ Enterprise installations will show tags on Admin panel with the type of the license applied. The tag will be visible on the top-left corner of the administration area as a badge helping administrators to identify which license they have. -- **ENTERPRISE:** Push Notification Data Privacy ([#18254](https://github.com/RocketChat/Rocket.Chat/pull/18254)) +- **ENTERPRISE:** Push Notification Data Privacy ([#18254](https://github.com/RocketChat/Rocket.Chat/pull/18254) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Added profile field to inform Nickname for users in order to be searchable ([#18260](https://github.com/RocketChat/Rocket.Chat/pull/18260)) Nickname is a new user field that can be used to better identify users when searching for someone to add in a channel or do a mention. Useful for large organizations or countries where name repetition is common. -- External MP3 encoder worker for audio recording ([#18277](https://github.com/RocketChat/Rocket.Chat/pull/18277)) +- External MP3 encoder worker for audio recording ([#18277](https://github.com/RocketChat/Rocket.Chat/pull/18277) by [@tassoevan](https://github.com/tassoevan)) - Sign in with apple (iOS client only) ([#18258](https://github.com/RocketChat/Rocket.Chat/pull/18258) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) @@ -10496,16 +10628,16 @@ - Update Apps-Engine version ([#18212](https://github.com/RocketChat/Rocket.Chat/pull/18212)) -- User profile and User card ([#18194](https://github.com/RocketChat/Rocket.Chat/pull/18194)) +- User profile and User card ([#18194](https://github.com/RocketChat/Rocket.Chat/pull/18194) by [@tassoevan](https://github.com/tassoevan)) ### 🚀 Improvements - Change setting that blocks unauthenticated access to avatar to public ([#18316](https://github.com/RocketChat/Rocket.Chat/pull/18316) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Improve performance and remove agents when the department is removed ([#17049](https://github.com/RocketChat/Rocket.Chat/pull/17049)) +- Improve performance and remove agents when the department is removed ([#17049](https://github.com/RocketChat/Rocket.Chat/pull/17049) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- List dropdown ([#18081](https://github.com/RocketChat/Rocket.Chat/pull/18081)) +- List dropdown ([#18081](https://github.com/RocketChat/Rocket.Chat/pull/18081) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Mention autocomplete UI and performance improvements ([#18309](https://github.com/RocketChat/Rocket.Chat/pull/18309)) @@ -10529,15 +10661,15 @@ - Application not loading due to reverse proxy decoding API calls unnecessarily ([#18222](https://github.com/RocketChat/Rocket.Chat/pull/18222)) -- Apps page loading indefinitely if no Markeplace data ([#18274](https://github.com/RocketChat/Rocket.Chat/pull/18274)) +- Apps page loading indefinitely if no Markeplace data ([#18274](https://github.com/RocketChat/Rocket.Chat/pull/18274) by [@tassoevan](https://github.com/tassoevan)) - Bug on entering token in connectivity services ([#18317](https://github.com/RocketChat/Rocket.Chat/pull/18317)) - Cannot open admin when server uses ROOT_URL with subpath (#18105) ([#18147](https://github.com/RocketChat/Rocket.Chat/pull/18147) by [@omarchehab98](https://github.com/omarchehab98)) -- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238)) +- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Clipboard not working when permalinking a pinned message ([#18047](https://github.com/RocketChat/Rocket.Chat/pull/18047)) +- Clipboard not working when permalinking a pinned message ([#18047](https://github.com/RocketChat/Rocket.Chat/pull/18047) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Closing the admin does not return to last opened room ([#18308](https://github.com/RocketChat/Rocket.Chat/pull/18308)) @@ -10545,11 +10677,11 @@ - Delete user warning message undefined ([#18310](https://github.com/RocketChat/Rocket.Chat/pull/18310)) -- Don't show agent info in the transcript if the setting is disabled ([#18044](https://github.com/RocketChat/Rocket.Chat/pull/18044) by [@antkaz](https://github.com/antkaz)) +- Don't show agent info in the transcript if the setting is disabled ([#18044](https://github.com/RocketChat/Rocket.Chat/pull/18044) by [@antkaz](https://github.com/antkaz) & [@renatobecker](https://github.com/renatobecker)) -- Error when fetching a nonexistent business hour from the server ([#18315](https://github.com/RocketChat/Rocket.Chat/pull/18315)) +- Error when fetching a nonexistent business hour from the server ([#18315](https://github.com/RocketChat/Rocket.Chat/pull/18315) by [@renatobecker](https://github.com/renatobecker)) -- Few adjustments to accept fuselage theme ([#18009](https://github.com/RocketChat/Rocket.Chat/pull/18009)) +- Few adjustments to accept fuselage theme ([#18009](https://github.com/RocketChat/Rocket.Chat/pull/18009) by [@tassoevan](https://github.com/tassoevan)) - File uploads for unknown file types but nothing is blocked ([#18263](https://github.com/RocketChat/Rocket.Chat/pull/18263) by [@20051231](https://github.com/20051231)) @@ -10557,7 +10689,7 @@ - Geolocation permission being asked on load ([#18030](https://github.com/RocketChat/Rocket.Chat/pull/18030)) -- Local Account login error when both LDAP and Email 2FA are enabled ([#18318](https://github.com/RocketChat/Rocket.Chat/pull/18318)) +- Local Account login error when both LDAP and Email 2FA are enabled ([#18318](https://github.com/RocketChat/Rocket.Chat/pull/18318) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Merge user custom fields on LDAP sync ([#17339](https://github.com/RocketChat/Rocket.Chat/pull/17339) by [@tobiasge](https://github.com/tobiasge)) @@ -10565,13 +10697,13 @@ - Missing Privacy Terms Cloud Register warning ([#18383](https://github.com/RocketChat/Rocket.Chat/pull/18383)) -- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185)) +- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Push gateway and cloud integration ([#18377](https://github.com/RocketChat/Rocket.Chat/pull/18377)) -- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224)) +- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- SAML login saves invalid username when receiving multiple values ([#18213](https://github.com/RocketChat/Rocket.Chat/pull/18213)) +- SAML login saves invalid username when receiving multiple values ([#18213](https://github.com/RocketChat/Rocket.Chat/pull/18213) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - SlackBridge error ([#18320](https://github.com/RocketChat/Rocket.Chat/pull/18320)) @@ -10579,7 +10711,7 @@ Update checker can now be disabled. -- Update link URL at AppsWhatIsIt ([#18240](https://github.com/RocketChat/Rocket.Chat/pull/18240)) +- Update link URL at AppsWhatIsIt ([#18240](https://github.com/RocketChat/Rocket.Chat/pull/18240) by [@tassoevan](https://github.com/tassoevan)) - View close uikit event sending wrong payload ([#18289](https://github.com/RocketChat/Rocket.Chat/pull/18289)) @@ -10587,21 +10719,21 @@ 🔍 Minor changes -- Broken link on readme ([#18358](https://github.com/RocketChat/Rocket.Chat/pull/18358)) +- Broken link on readme ([#18358](https://github.com/RocketChat/Rocket.Chat/pull/18358) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - LingoHub based on develop ([#18307](https://github.com/RocketChat/Rocket.Chat/pull/18307)) - LingoHub based on develop ([#18176](https://github.com/RocketChat/Rocket.Chat/pull/18176)) -- Merge master into develop & Set version to 3.5.0-develop ([#18083](https://github.com/RocketChat/Rocket.Chat/pull/18083) by [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha)) +- Merge master into develop & Set version to 3.5.0-develop ([#18083](https://github.com/RocketChat/Rocket.Chat/pull/18083) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) - Move the development guidelines to our handbook ([#18026](https://github.com/RocketChat/Rocket.Chat/pull/18026)) -- Regression - Profile page crashing for users without password ([#18287](https://github.com/RocketChat/Rocket.Chat/pull/18287)) +- Regression - Profile page crashing for users without password ([#18287](https://github.com/RocketChat/Rocket.Chat/pull/18287) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Account Sidebar not rendering properly ([#18288](https://github.com/RocketChat/Rocket.Chat/pull/18288)) -- Regression: Admin User password ([#18350](https://github.com/RocketChat/Rocket.Chat/pull/18350)) +- Regression: Admin User password ([#18350](https://github.com/RocketChat/Rocket.Chat/pull/18350) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Close UserCard if action opens a new page ([#18319](https://github.com/RocketChat/Rocket.Chat/pull/18319)) @@ -10611,21 +10743,21 @@ - Regression: Fix useUserSubscription usage ([#18378](https://github.com/RocketChat/Rocket.Chat/pull/18378)) -- Regression: Mentions in thread title ([#18369](https://github.com/RocketChat/Rocket.Chat/pull/18369)) +- Regression: Mentions in thread title ([#18369](https://github.com/RocketChat/Rocket.Chat/pull/18369) by [@tassoevan](https://github.com/tassoevan)) - Regression: Message actions under "unread messages" warning ([#18273](https://github.com/RocketChat/Rocket.Chat/pull/18273)) -- Regression: MP3 worker ([#18371](https://github.com/RocketChat/Rocket.Chat/pull/18371)) +- Regression: MP3 worker ([#18371](https://github.com/RocketChat/Rocket.Chat/pull/18371) by [@tassoevan](https://github.com/tassoevan)) - Regression: nickname field in user profile. ([#18359](https://github.com/RocketChat/Rocket.Chat/pull/18359)) - Regression: Notification with id-only isn't showed by iOS devices ([#18353](https://github.com/RocketChat/Rocket.Chat/pull/18353) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Regression: Preferences crashing when User has no preferences set. ([#18341](https://github.com/RocketChat/Rocket.Chat/pull/18341)) +- Regression: Preferences crashing when User has no preferences set. ([#18341](https://github.com/RocketChat/Rocket.Chat/pull/18341) by [@tassoevan](https://github.com/tassoevan)) - Regression: Provide a fallback text when push notification is idOnly ([#18373](https://github.com/RocketChat/Rocket.Chat/pull/18373) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Regression: Remove calls to Console API in useForm hook ([#18244](https://github.com/RocketChat/Rocket.Chat/pull/18244)) +- Regression: Remove calls to Console API in useForm hook ([#18244](https://github.com/RocketChat/Rocket.Chat/pull/18244) by [@tassoevan](https://github.com/tassoevan)) - Regression: Return original message on push API ([#18386](https://github.com/RocketChat/Rocket.Chat/pull/18386)) @@ -10633,33 +10765,35 @@ - Regression: User Status selector ([#18343](https://github.com/RocketChat/Rocket.Chat/pull/18343)) -- Regression: Userinfo center avatar image ([#18354](https://github.com/RocketChat/Rocket.Chat/pull/18354)) +- Regression: Userinfo center avatar image ([#18354](https://github.com/RocketChat/Rocket.Chat/pull/18354) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: useStorage ([#18370](https://github.com/RocketChat/Rocket.Chat/pull/18370)) - Regression: useUserContext ([#18385](https://github.com/RocketChat/Rocket.Chat/pull/18385)) -- Regression: Wrong background in disabled inputs ([#18372](https://github.com/RocketChat/Rocket.Chat/pull/18372)) +- Regression: Wrong background in disabled inputs ([#18372](https://github.com/RocketChat/Rocket.Chat/pull/18372) by [@tassoevan](https://github.com/tassoevan)) -- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98)) +- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Rewrite Contextual Bar Discussion List in React ([#18127](https://github.com/RocketChat/Rocket.Chat/pull/18127)) -- Rewrite: My Account > Integrations rewritten ([#18290](https://github.com/RocketChat/Rocket.Chat/pull/18290)) +- Rewrite: My Account > Integrations rewritten ([#18290](https://github.com/RocketChat/Rocket.Chat/pull/18290) by [@tassoevan](https://github.com/tassoevan)) -- Rewrite: My Account using React ([#18106](https://github.com/RocketChat/Rocket.Chat/pull/18106)) +- Rewrite: My Account using React ([#18106](https://github.com/RocketChat/Rocket.Chat/pull/18106) by [@tassoevan](https://github.com/tassoevan)) - Update Apps Engine ([#18389](https://github.com/RocketChat/Rocket.Chat/pull/18389)) - Update Apps-Engine to Beta version ([#18294](https://github.com/RocketChat/Rocket.Chat/pull/18294)) -- Update the API of React Hooks using Meteor's reactive system ([#18226](https://github.com/RocketChat/Rocket.Chat/pull/18226)) +- Update the API of React Hooks using Meteor's reactive system ([#18226](https://github.com/RocketChat/Rocket.Chat/pull/18226) by [@tassoevan](https://github.com/tassoevan)) ### 👩‍💻👨‍💻 Contributors 😍 - [@20051231](https://github.com/20051231) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@cking-vonix](https://github.com/cking-vonix) - [@darigovresearch](https://github.com/darigovresearch) @@ -10667,22 +10801,20 @@ - [@lpilz](https://github.com/lpilz) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@omarchehab98](https://github.com/omarchehab98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@tobiasge](https://github.com/tobiasge) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.4.2 `2020-07-10 · 6 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` @@ -10702,28 +10834,28 @@ - Cannot open admin when server uses ROOT_URL with subpath (#18105) ([#18147](https://github.com/RocketChat/Rocket.Chat/pull/18147) by [@omarchehab98](https://github.com/omarchehab98)) -- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238)) +- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185)) +- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224)) +- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
🔍 Minor changes -- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98)) +- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
### 👩‍💻👨‍💻 Contributors 😍 - [@omarchehab98](https://github.com/omarchehab98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) # 3.4.1 @@ -10748,7 +10880,7 @@ - Not possible to read encrypted messages after disable E2E on channel level ([#18101](https://github.com/RocketChat/Rocket.Chat/pull/18101)) -- Omnichannel close room callback returning promise ([#18102](https://github.com/RocketChat/Rocket.Chat/pull/18102)) +- Omnichannel close room callback returning promise ([#18102](https://github.com/RocketChat/Rocket.Chat/pull/18102) by [@renatobecker](https://github.com/renatobecker)) - The livechat agent activity monitor wasn't being initialised because due to an internal error ([#18090](https://github.com/RocketChat/Rocket.Chat/pull/18090) by [@paulobernardoaf](https://github.com/paulobernardoaf)) @@ -10756,7 +10888,7 @@ 🔍 Minor changes -- Release 3.4.1 ([#18134](https://github.com/RocketChat/Rocket.Chat/pull/18134) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@paulobernardoaf](https://github.com/paulobernardoaf)) +- Release 3.4.1 ([#18134](https://github.com/RocketChat/Rocket.Chat/pull/18134) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@paulobernardoaf](https://github.com/paulobernardoaf) & [@renatobecker](https://github.com/renatobecker)) @@ -10765,12 +10897,12 @@ - [@densik](https://github.com/densik) - [@dudizilla](https://github.com/dudizilla) - [@paulobernardoaf](https://github.com/paulobernardoaf) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -10794,21 +10926,21 @@ - **API:** New endpoints to manage User Custom Status `custom-user-status.create`, custom-user-status.delete` and `custom-user-status.update` ([#16550](https://github.com/RocketChat/Rocket.Chat/pull/16550) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- **ENTERPRISE:** Download engagement data ([#17920](https://github.com/RocketChat/Rocket.Chat/pull/17920)) +- **ENTERPRISE:** Download engagement data ([#17920](https://github.com/RocketChat/Rocket.Chat/pull/17920) by [@tassoevan](https://github.com/tassoevan)) -- **ENTERPRISE:** Omnichannel multiple business hours ([#17947](https://github.com/RocketChat/Rocket.Chat/pull/17947)) +- **ENTERPRISE:** Omnichannel multiple business hours ([#17947](https://github.com/RocketChat/Rocket.Chat/pull/17947) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Ability to configure Jitsi room options via new setting `URL Suffix` ([#17950](https://github.com/RocketChat/Rocket.Chat/pull/17950) by [@fthiery](https://github.com/fthiery)) - Accept variable `#{userdn}` on LDAP group filter ([#16273](https://github.com/RocketChat/Rocket.Chat/pull/16273) by [@ChrissW-R1](https://github.com/ChrissW-R1)) -- Add ability to block failed login attempts by user and IP ([#17783](https://github.com/RocketChat/Rocket.Chat/pull/17783)) +- Add ability to block failed login attempts by user and IP ([#17783](https://github.com/RocketChat/Rocket.Chat/pull/17783) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Allows agents to send chat transcript to omnichannel end-users ([#17774](https://github.com/RocketChat/Rocket.Chat/pull/17774)) +- Allows agents to send chat transcript to omnichannel end-users ([#17774](https://github.com/RocketChat/Rocket.Chat/pull/17774) by [@renatobecker](https://github.com/renatobecker)) -- Assign oldest active user as owner when deleting last room owner ([#16088](https://github.com/RocketChat/Rocket.Chat/pull/16088)) +- Assign oldest active user as owner when deleting last room owner ([#16088](https://github.com/RocketChat/Rocket.Chat/pull/16088) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Blocked Media Types setting ([#17617](https://github.com/RocketChat/Rocket.Chat/pull/17617)) +- Blocked Media Types setting ([#17617](https://github.com/RocketChat/Rocket.Chat/pull/17617) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Highlight matching words in message search results ([#16166](https://github.com/RocketChat/Rocket.Chat/pull/16166) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -10816,16 +10948,16 @@ - Reply notification email to sender's email when the Direct Reply feature is disabled ([#15767](https://github.com/RocketChat/Rocket.Chat/pull/15767) by [@localguru](https://github.com/localguru)) -- Rewrite Apps ([#17906](https://github.com/RocketChat/Rocket.Chat/pull/17906)) +- Rewrite Apps ([#17906](https://github.com/RocketChat/Rocket.Chat/pull/17906) by [@tassoevan](https://github.com/tassoevan)) -- Setting to determine if the LDAP user active state should be synced ([#17645](https://github.com/RocketChat/Rocket.Chat/pull/17645)) +- Setting to determine if the LDAP user active state should be synced ([#17645](https://github.com/RocketChat/Rocket.Chat/pull/17645) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Skip Export Operations that haven't been updated in over a day ([#16135](https://github.com/RocketChat/Rocket.Chat/pull/16135)) +- Skip Export Operations that haven't been updated in over a day ([#16135](https://github.com/RocketChat/Rocket.Chat/pull/16135) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🚀 Improvements -- **Federation:** Add support for _tcp and protocol DNS entries ([#17818](https://github.com/RocketChat/Rocket.Chat/pull/17818)) +- **Federation:** Add support for _tcp and protocol DNS entries ([#17818](https://github.com/RocketChat/Rocket.Chat/pull/17818) by [@alansikora](https://github.com/alansikora)) - **Performance:** Add new database indexes to improve data query performance ([#17839](https://github.com/RocketChat/Rocket.Chat/pull/17839)) @@ -10839,21 +10971,21 @@ - Make the implementation of custom code easier by having placeholders for a custom folder ([#15106](https://github.com/RocketChat/Rocket.Chat/pull/15106) by [@justinr1234](https://github.com/justinr1234)) -- Performance editing Admin settings ([#17916](https://github.com/RocketChat/Rocket.Chat/pull/17916)) +- Performance editing Admin settings ([#17916](https://github.com/RocketChat/Rocket.Chat/pull/17916) by [@tassoevan](https://github.com/tassoevan)) -- React hooks lint rules ([#17941](https://github.com/RocketChat/Rocket.Chat/pull/17941)) +- React hooks lint rules ([#17941](https://github.com/RocketChat/Rocket.Chat/pull/17941) by [@tassoevan](https://github.com/tassoevan)) -- Refactor Omnichannel Office Hours feature ([#17824](https://github.com/RocketChat/Rocket.Chat/pull/17824)) +- Refactor Omnichannel Office Hours feature ([#17824](https://github.com/RocketChat/Rocket.Chat/pull/17824) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Refactor Omnichannel Past Chats List ([#17346](https://github.com/RocketChat/Rocket.Chat/pull/17346) by [@nitinkumartiwari](https://github.com/nitinkumartiwari)) +- Refactor Omnichannel Past Chats List ([#17346](https://github.com/RocketChat/Rocket.Chat/pull/17346) by [@nitinkumartiwari](https://github.com/nitinkumartiwari) & [@renatobecker](https://github.com/renatobecker)) -- Rewrite admin sidebar in React ([#17801](https://github.com/RocketChat/Rocket.Chat/pull/17801)) +- Rewrite admin sidebar in React ([#17801](https://github.com/RocketChat/Rocket.Chat/pull/17801) by [@tassoevan](https://github.com/tassoevan)) -- Rewrite Federation Dashboard ([#17900](https://github.com/RocketChat/Rocket.Chat/pull/17900)) +- Rewrite Federation Dashboard ([#17900](https://github.com/RocketChat/Rocket.Chat/pull/17900) by [@tassoevan](https://github.com/tassoevan)) -- SAML implementation ([#17742](https://github.com/RocketChat/Rocket.Chat/pull/17742)) +- SAML implementation ([#17742](https://github.com/RocketChat/Rocket.Chat/pull/17742) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Slack import: Parse channel and user mentions ([#17637](https://github.com/RocketChat/Rocket.Chat/pull/17637)) +- Slack import: Parse channel and user mentions ([#17637](https://github.com/RocketChat/Rocket.Chat/pull/17637) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Split NOTIFICATIONS_SCHEDULE_DELAY into three separate variables ([#17669](https://github.com/RocketChat/Rocket.Chat/pull/17669) by [@jazztickets](https://github.com/jazztickets)) @@ -10867,7 +10999,7 @@ - Use REST for DDP calls by default ([#17934](https://github.com/RocketChat/Rocket.Chat/pull/17934)) -- User avatar cache invalidation ([#17925](https://github.com/RocketChat/Rocket.Chat/pull/17925)) +- User avatar cache invalidation ([#17925](https://github.com/RocketChat/Rocket.Chat/pull/17925) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🐛 Bug fixes @@ -10878,7 +11010,7 @@ - Added explicit server oembed provider for Twitter ([#17954](https://github.com/RocketChat/Rocket.Chat/pull/17954) by [@Cleod9](https://github.com/Cleod9)) -- Autocomplete component is not working property when searching channels in the Livechat Departments form ([#17970](https://github.com/RocketChat/Rocket.Chat/pull/17970)) +- Autocomplete component is not working property when searching channels in the Livechat Departments form ([#17970](https://github.com/RocketChat/Rocket.Chat/pull/17970) by [@renatobecker](https://github.com/renatobecker)) - Cannot react while "Allow reaction" is set to true ([#17964](https://github.com/RocketChat/Rocket.Chat/pull/17964)) @@ -10902,7 +11034,7 @@ - Hide system message add/remove owner ([#17938](https://github.com/RocketChat/Rocket.Chat/pull/17938)) -- Importers progress sending too much update events to clients ([#17857](https://github.com/RocketChat/Rocket.Chat/pull/17857)) +- Importers progress sending too much update events to clients ([#17857](https://github.com/RocketChat/Rocket.Chat/pull/17857) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Link preview containing HTML encoded chars ([#16512](https://github.com/RocketChat/Rocket.Chat/pull/16512)) @@ -10912,15 +11044,15 @@ - Message action popup doesn't adjust itself on screen resize ([#16508](https://github.com/RocketChat/Rocket.Chat/pull/16508) by [@ritvikjain99](https://github.com/ritvikjain99)) -- Missing i18n key for setting: Verify Email for External Accounts ([#18002](https://github.com/RocketChat/Rocket.Chat/pull/18002)) +- Missing i18n key for setting: Verify Email for External Accounts ([#18002](https://github.com/RocketChat/Rocket.Chat/pull/18002) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Missing pinned icon indicator for messages pinned ([#16448](https://github.com/RocketChat/Rocket.Chat/pull/16448) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Missing User when forwarding Omnichannel conversations via Apps-Engine ([#17918](https://github.com/RocketChat/Rocket.Chat/pull/17918)) +- Missing User when forwarding Omnichannel conversations via Apps-Engine ([#17918](https://github.com/RocketChat/Rocket.Chat/pull/17918) by [@renatobecker](https://github.com/renatobecker)) -- New Omnichannel Past Chats list padding ([#17994](https://github.com/RocketChat/Rocket.Chat/pull/17994)) +- New Omnichannel Past Chats list padding ([#17994](https://github.com/RocketChat/Rocket.Chat/pull/17994) by [@renatobecker](https://github.com/renatobecker)) -- No rotate option, to prevent image quality loss ([#15196](https://github.com/RocketChat/Rocket.Chat/pull/15196) by [@stleitner](https://github.com/stleitner)) +- No rotate option, to prevent image quality loss ([#15196](https://github.com/RocketChat/Rocket.Chat/pull/15196) by [@stleitner](https://github.com/stleitner) & [@tassoevan](https://github.com/tassoevan)) - No Way to Display Password Policy on Password Reset Screen ([#16400](https://github.com/RocketChat/Rocket.Chat/pull/16400) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -10930,27 +11062,27 @@ - Profile save button not activates properly when changing the username field ([#16541](https://github.com/RocketChat/Rocket.Chat/pull/16541) by [@ritvikjain99](https://github.com/ritvikjain99)) -- ReadOnly Rooms permission checks ([#17709](https://github.com/RocketChat/Rocket.Chat/pull/17709)) +- ReadOnly Rooms permission checks ([#17709](https://github.com/RocketChat/Rocket.Chat/pull/17709) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Reorder hljs ([#17854](https://github.com/RocketChat/Rocket.Chat/pull/17854)) +- Reorder hljs ([#17854](https://github.com/RocketChat/Rocket.Chat/pull/17854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Set `x-content-type-options: nosniff` header ([#16232](https://github.com/RocketChat/Rocket.Chat/pull/16232) by [@aviral243](https://github.com/aviral243)) -- Some Login Buttons disappear after refreshing OAuth Services ([#17808](https://github.com/RocketChat/Rocket.Chat/pull/17808)) +- Some Login Buttons disappear after refreshing OAuth Services ([#17808](https://github.com/RocketChat/Rocket.Chat/pull/17808) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Spotify embed link opens in same tab ([#13637](https://github.com/RocketChat/Rocket.Chat/pull/13637) by [@bhardwajaditya](https://github.com/bhardwajaditya)) - StreamCast stream to server only streamers ([#17942](https://github.com/RocketChat/Rocket.Chat/pull/17942)) -- UI is not rendering when trying to edit an user ([#17972](https://github.com/RocketChat/Rocket.Chat/pull/17972)) +- UI is not rendering when trying to edit an user ([#17972](https://github.com/RocketChat/Rocket.Chat/pull/17972) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Undesirable message updates after user saving profile ([#17930](https://github.com/RocketChat/Rocket.Chat/pull/17930)) +- Undesirable message updates after user saving profile ([#17930](https://github.com/RocketChat/Rocket.Chat/pull/17930) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Update AmazonS3 file upload with error handling and sync operation ([#10372](https://github.com/RocketChat/Rocket.Chat/pull/10372) by [@madhavmalhotra3089](https://github.com/madhavmalhotra3089)) - User can resend email verification if email is invalid or is empty ([#16095](https://github.com/RocketChat/Rocket.Chat/pull/16095) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- User is prompted to reset their password when logging with OAuth ([#18001](https://github.com/RocketChat/Rocket.Chat/pull/18001)) +- User is prompted to reset their password when logging with OAuth ([#18001](https://github.com/RocketChat/Rocket.Chat/pull/18001) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Video conferences being started by users without permission ([#17948](https://github.com/RocketChat/Rocket.Chat/pull/17948)) @@ -10968,7 +11100,7 @@ - Bump websocket-extensions from 0.1.3 to 0.1.4 ([#17837](https://github.com/RocketChat/Rocket.Chat/pull/17837) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Change some components' location ([#17893](https://github.com/RocketChat/Rocket.Chat/pull/17893)) +- Change some components' location ([#17893](https://github.com/RocketChat/Rocket.Chat/pull/17893) by [@tassoevan](https://github.com/tassoevan)) - Chatpal: limit results to current room ([#17718](https://github.com/RocketChat/Rocket.Chat/pull/17718) by [@mrsimpson](https://github.com/mrsimpson)) @@ -10976,7 +11108,7 @@ - Do not build Docker image for fork PRs ([#17370](https://github.com/RocketChat/Rocket.Chat/pull/17370)) -- Federation performance and bug fixes ([#17504](https://github.com/RocketChat/Rocket.Chat/pull/17504) by [@hyfen](https://github.com/hyfen)) +- Federation performance and bug fixes ([#17504](https://github.com/RocketChat/Rocket.Chat/pull/17504) by [@alansikora](https://github.com/alansikora) & [@hyfen](https://github.com/hyfen)) - Fix invalid develop payload to release service ([#17799](https://github.com/RocketChat/Rocket.Chat/pull/17799)) @@ -10994,19 +11126,19 @@ - LingoHub based on develop ([#17796](https://github.com/RocketChat/Rocket.Chat/pull/17796)) -- Merge master into develop & Set version to 3.4.0-develop ([#17764](https://github.com/RocketChat/Rocket.Chat/pull/17764) by [@lpilz](https://github.com/lpilz) & [@mtmr0x](https://github.com/mtmr0x)) +- Merge master into develop & Set version to 3.4.0-develop ([#17764](https://github.com/RocketChat/Rocket.Chat/pull/17764) by [@lpilz](https://github.com/lpilz) & [@mtmr0x](https://github.com/mtmr0x) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Readme: Update Raspberry Pi 2 to Pi 4 ([#17031](https://github.com/RocketChat/Rocket.Chat/pull/17031) by [@EwoutH](https://github.com/EwoutH)) -- Refactor components and views to Storybook compatibility ([#17800](https://github.com/RocketChat/Rocket.Chat/pull/17800)) +- Refactor components and views to Storybook compatibility ([#17800](https://github.com/RocketChat/Rocket.Chat/pull/17800) by [@tassoevan](https://github.com/tassoevan)) -- Regresion: Issue with reply button on broadcast channels ([#18057](https://github.com/RocketChat/Rocket.Chat/pull/18057)) +- Regresion: Issue with reply button on broadcast channels ([#18057](https://github.com/RocketChat/Rocket.Chat/pull/18057) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression - Incoming WebHook messages not showing up on the channel ([#18005](https://github.com/RocketChat/Rocket.Chat/pull/18005)) +- Regression - Incoming WebHook messages not showing up on the channel ([#18005](https://github.com/RocketChat/Rocket.Chat/pull/18005) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression - Unable to edit status on the Edit User panel of the admin ([#18032](https://github.com/RocketChat/Rocket.Chat/pull/18032)) +- Regression - Unable to edit status on the Edit User panel of the admin ([#18032](https://github.com/RocketChat/Rocket.Chat/pull/18032) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Admin User Edit panel is broken ([#17992](https://github.com/RocketChat/Rocket.Chat/pull/17992)) +- Regression: Admin User Edit panel is broken ([#17992](https://github.com/RocketChat/Rocket.Chat/pull/17992) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: App info broken ([#17979](https://github.com/RocketChat/Rocket.Chat/pull/17979) by [@lolimay](https://github.com/lolimay)) @@ -11032,31 +11164,31 @@ - Regression: Grouping Thread messages ([#18042](https://github.com/RocketChat/Rocket.Chat/pull/18042)) -- Regression: Image Upload not working ([#17993](https://github.com/RocketChat/Rocket.Chat/pull/17993)) +- Regression: Image Upload not working ([#17993](https://github.com/RocketChat/Rocket.Chat/pull/17993) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Improve Omnichannel Business Hours ([#18050](https://github.com/RocketChat/Rocket.Chat/pull/18050)) +- Regression: Improve Omnichannel Business Hours ([#18050](https://github.com/RocketChat/Rocket.Chat/pull/18050) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Regression: Improve the logic to get request IPs ([#18033](https://github.com/RocketChat/Rocket.Chat/pull/18033)) +- Regression: Improve the logic to get request IPs ([#18033](https://github.com/RocketChat/Rocket.Chat/pull/18033) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Regression: Infinite loop in CodeSettingInput ([#17949](https://github.com/RocketChat/Rocket.Chat/pull/17949)) +- Regression: Infinite loop in CodeSettingInput ([#17949](https://github.com/RocketChat/Rocket.Chat/pull/17949) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Infinite render loop on Setup Wizard ([#18074](https://github.com/RocketChat/Rocket.Chat/pull/18074)) +- Regression: Infinite render loop on Setup Wizard ([#18074](https://github.com/RocketChat/Rocket.Chat/pull/18074) by [@tassoevan](https://github.com/tassoevan)) - Regression: Only add reply-to if sender has emails ([#17998](https://github.com/RocketChat/Rocket.Chat/pull/17998)) -- Regression: Repair CodeMirror component reactivity ([#18037](https://github.com/RocketChat/Rocket.Chat/pull/18037)) +- Regression: Repair CodeMirror component reactivity ([#18037](https://github.com/RocketChat/Rocket.Chat/pull/18037) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Reset section button ([#18007](https://github.com/RocketChat/Rocket.Chat/pull/18007)) +- Regression: Reset section button ([#18007](https://github.com/RocketChat/Rocket.Chat/pull/18007) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) - Regression: Room flickering if open a thread ([#18004](https://github.com/RocketChat/Rocket.Chat/pull/18004)) -- Regression: Wrong padding and colors on some tabs ([#18068](https://github.com/RocketChat/Rocket.Chat/pull/18068)) +- Regression: Wrong padding and colors on some tabs ([#18068](https://github.com/RocketChat/Rocket.Chat/pull/18068) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Release 3.3.3 ([#17875](https://github.com/RocketChat/Rocket.Chat/pull/17875)) - Remove unused accounts-js integration ([#17921](https://github.com/RocketChat/Rocket.Chat/pull/17921)) -- Remove useLazyRef hook usage ([#18003](https://github.com/RocketChat/Rocket.Chat/pull/18003)) +- Remove useLazyRef hook usage ([#18003](https://github.com/RocketChat/Rocket.Chat/pull/18003) by [@tassoevan](https://github.com/tassoevan)) - Revert "Regression: Fix wrong message grouping inside threads" ([#18043](https://github.com/RocketChat/Rocket.Chat/pull/18043)) @@ -11066,7 +11198,7 @@ - Update stale bot to v3 and run every 6 hours ([#17958](https://github.com/RocketChat/Rocket.Chat/pull/17958)) -- Upgrade Livechat Widget version to 1.6.0 ([#18070](https://github.com/RocketChat/Rocket.Chat/pull/18070)) +- Upgrade Livechat Widget version to 1.6.0 ([#18070](https://github.com/RocketChat/Rocket.Chat/pull/18070) by [@renatobecker](https://github.com/renatobecker)) - Wrap Info Page components with React.memo ([#17899](https://github.com/RocketChat/Rocket.Chat/pull/17899)) @@ -11080,7 +11212,10 @@ - [@EwoutH](https://github.com/EwoutH) - [@InstinctBas](https://github.com/InstinctBas) - [@Karting06](https://github.com/Karting06) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Siedlerchr](https://github.com/Siedlerchr) +- [@alansikora](https://github.com/alansikora) - [@alexbartsch](https://github.com/alexbartsch) - [@antkaz](https://github.com/antkaz) - [@ashwaniYDV](https://github.com/ashwaniYDV) @@ -11105,18 +11240,18 @@ - [@mtmr0x](https://github.com/mtmr0x) - [@nitinkumartiwari](https://github.com/nitinkumartiwari) - [@onurtemiz](https://github.com/onurtemiz) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@ritvikjain99](https://github.com/ritvikjain99) - [@stleitner](https://github.com/stleitner) +- [@tassoevan](https://github.com/tassoevan) - [@thomas-mc-work](https://github.com/thomas-mc-work) - [@tonobo](https://github.com/tonobo) - [@toshokan](https://github.com/toshokan) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Sing-Li](https://github.com/Sing-Li) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) @@ -11124,11 +11259,8 @@ - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) - [@murtaza98](https://github.com/murtaza98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.3.3 `2020-06-11 · 2 🔍 · 1 👩‍💻👨‍💻` @@ -11203,9 +11335,9 @@ Fixed logic for public/private room types on room edit panel -- Omnichannel message link is broken in email notifications ([#17843](https://github.com/RocketChat/Rocket.Chat/pull/17843)) +- Omnichannel message link is broken in email notifications ([#17843](https://github.com/RocketChat/Rocket.Chat/pull/17843) by [@renatobecker](https://github.com/renatobecker)) -- SAML LogoutRequest sending wrong NameID ([#17860](https://github.com/RocketChat/Rocket.Chat/pull/17860)) +- SAML LogoutRequest sending wrong NameID ([#17860](https://github.com/RocketChat/Rocket.Chat/pull/17860) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Slack importer settings object ([#17776](https://github.com/RocketChat/Rocket.Chat/pull/17776) by [@lpilz](https://github.com/lpilz)) @@ -11213,11 +11345,11 @@ 🔍 Minor changes -- [REGRESSION] Omnichannel visitor forward was applying wrong restrictions ([#17826](https://github.com/RocketChat/Rocket.Chat/pull/17826)) +- [REGRESSION] Omnichannel visitor forward was applying wrong restrictions ([#17826](https://github.com/RocketChat/Rocket.Chat/pull/17826) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix the update check not working ([#17809](https://github.com/RocketChat/Rocket.Chat/pull/17809)) -- Release 3.3.1 ([#17865](https://github.com/RocketChat/Rocket.Chat/pull/17865) by [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha)) +- Release 3.3.1 ([#17865](https://github.com/RocketChat/Rocket.Chat/pull/17865) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) - Update Apps-Engine version ([#17804](https://github.com/RocketChat/Rocket.Chat/pull/17804)) @@ -11227,18 +11359,18 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@cking-vonix](https://github.com/cking-vonix) - [@lpilz](https://github.com/lpilz) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@graywolf336](https://github.com/graywolf336) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.3.0 @@ -11254,11 +11386,11 @@ - **APPS-ENGINE:** Essentials mechanism ([#17656](https://github.com/RocketChat/Rocket.Chat/pull/17656)) -- **Apps-Engine:** New Livechat event handlers ([#17033](https://github.com/RocketChat/Rocket.Chat/pull/17033) by [@lolimay](https://github.com/lolimay)) +- **Apps-Engine:** New Livechat event handlers ([#17033](https://github.com/RocketChat/Rocket.Chat/pull/17033) by [@lolimay](https://github.com/lolimay) & [@renatobecker](https://github.com/renatobecker)) - **Apps-Engine:** New Room events ([#17487](https://github.com/RocketChat/Rocket.Chat/pull/17487)) -- **ENTERPRISE:** Omnichannel Last-Chatted Agent Preferred option ([#17666](https://github.com/RocketChat/Rocket.Chat/pull/17666)) +- **ENTERPRISE:** Omnichannel Last-Chatted Agent Preferred option ([#17666](https://github.com/RocketChat/Rocket.Chat/pull/17666) by [@renatobecker](https://github.com/renatobecker)) If activated, this feature will store the last agent that assisted each Omnichannel visitor when a conversation is taken. So, when a visitor returns(it works with any entry point, Livechat, Facebook, REST API, and so on) and starts a new chat, the routing system checks: @@ -11267,31 +11399,31 @@ After this process, if an agent has been found, the system will check the agent's availability to assist the new chat. If it's not available, then the routing system will get the next available agent in the queue. -- **ENTERPRISE:** Support for custom Livechat registration form fields ([#17581](https://github.com/RocketChat/Rocket.Chat/pull/17581)) +- **ENTERPRISE:** Support for custom Livechat registration form fields ([#17581](https://github.com/RocketChat/Rocket.Chat/pull/17581) by [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** Support Omnichannel conversations auditing ([#17692](https://github.com/RocketChat/Rocket.Chat/pull/17692)) +- **ENTERPRISE:** Support Omnichannel conversations auditing ([#17692](https://github.com/RocketChat/Rocket.Chat/pull/17692) by [@renatobecker](https://github.com/renatobecker)) -- Add Livechat website URL to the offline message e-mail ([#17429](https://github.com/RocketChat/Rocket.Chat/pull/17429)) +- Add Livechat website URL to the offline message e-mail ([#17429](https://github.com/RocketChat/Rocket.Chat/pull/17429) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Add permissions to deal with Omnichannel custom fields ([#17567](https://github.com/RocketChat/Rocket.Chat/pull/17567)) +- Add permissions to deal with Omnichannel custom fields ([#17567](https://github.com/RocketChat/Rocket.Chat/pull/17567) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Add Permissions to deal with Omnichannel visitor past chats history ([#17580](https://github.com/RocketChat/Rocket.Chat/pull/17580)) +- Add Permissions to deal with Omnichannel visitor past chats history ([#17580](https://github.com/RocketChat/Rocket.Chat/pull/17580) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add the ability to send Livechat offline messages to a channel ([#17442](https://github.com/RocketChat/Rocket.Chat/pull/17442)) +- Add the ability to send Livechat offline messages to a channel ([#17442](https://github.com/RocketChat/Rocket.Chat/pull/17442) by [@renatobecker](https://github.com/renatobecker)) - Added "Add custom emoji" link to emoji picker ([#16250](https://github.com/RocketChat/Rocket.Chat/pull/16250)) - Added custom fields to Add/Edit user ([#17681](https://github.com/RocketChat/Rocket.Chat/pull/17681)) -- Admin refactor Second phase ([#17551](https://github.com/RocketChat/Rocket.Chat/pull/17551)) +- Admin refactor Second phase ([#17551](https://github.com/RocketChat/Rocket.Chat/pull/17551) by [@tassoevan](https://github.com/tassoevan)) -- Allow filtering Omnichannel analytics dashboards by department ([#17463](https://github.com/RocketChat/Rocket.Chat/pull/17463)) +- Allow filtering Omnichannel analytics dashboards by department ([#17463](https://github.com/RocketChat/Rocket.Chat/pull/17463) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- API endpoint to fetch Omnichannel's room transfer history ([#17694](https://github.com/RocketChat/Rocket.Chat/pull/17694)) +- API endpoint to fetch Omnichannel's room transfer history ([#17694](https://github.com/RocketChat/Rocket.Chat/pull/17694) by [@renatobecker](https://github.com/renatobecker)) - Option to remove users from RocketChat if not found in Crowd ([#17619](https://github.com/RocketChat/Rocket.Chat/pull/17619) by [@ocanema](https://github.com/ocanema)) -- Rewrite admin pages ([#17388](https://github.com/RocketChat/Rocket.Chat/pull/17388) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) +- Rewrite admin pages ([#17388](https://github.com/RocketChat/Rocket.Chat/pull/17388) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@tassoevan](https://github.com/tassoevan)) - Screen Lock settings - mobile client ([#17523](https://github.com/RocketChat/Rocket.Chat/pull/17523) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) @@ -11308,22 +11440,22 @@ - Add env var to configure Chatpal URL and remove it from beta ([#16665](https://github.com/RocketChat/Rocket.Chat/pull/16665) by [@tkurz](https://github.com/tkurz)) -- Add new webhooks to the Omnichannel integration feature ([#17503](https://github.com/RocketChat/Rocket.Chat/pull/17503)) +- Add new webhooks to the Omnichannel integration feature ([#17503](https://github.com/RocketChat/Rocket.Chat/pull/17503) by [@renatobecker](https://github.com/renatobecker)) - Added divider between tables and paginations ([#17680](https://github.com/RocketChat/Rocket.Chat/pull/17680)) - Always shows the exact match first on user's and room's autocomplete for mentions and on sidebar search ([#16394](https://github.com/RocketChat/Rocket.Chat/pull/16394)) -- Display status information in the Omnichannel Agents list ([#17701](https://github.com/RocketChat/Rocket.Chat/pull/17701)) +- Display status information in the Omnichannel Agents list ([#17701](https://github.com/RocketChat/Rocket.Chat/pull/17701) by [@renatobecker](https://github.com/renatobecker)) - Starred Messages ([#17685](https://github.com/RocketChat/Rocket.Chat/pull/17685)) -- Unused styles ([#17554](https://github.com/RocketChat/Rocket.Chat/pull/17554)) +- Unused styles ([#17554](https://github.com/RocketChat/Rocket.Chat/pull/17554) by [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes -- Agent's custom fields being leaked through the Livechat configuration endpoint ([#17640](https://github.com/RocketChat/Rocket.Chat/pull/17640)) +- Agent's custom fields being leaked through the Livechat configuration endpoint ([#17640](https://github.com/RocketChat/Rocket.Chat/pull/17640) by [@renatobecker](https://github.com/renatobecker)) - Allow owners to react inside broadcast channels ([#17687](https://github.com/RocketChat/Rocket.Chat/pull/17687) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -11331,13 +11463,13 @@ - Can't click on room's actions menu of sidebar list when in search mode ([#16548](https://github.com/RocketChat/Rocket.Chat/pull/16548) by [@ritvikjain99](https://github.com/ritvikjain99)) -- Change email verification label ([#17450](https://github.com/RocketChat/Rocket.Chat/pull/17450)) +- Change email verification label ([#17450](https://github.com/RocketChat/Rocket.Chat/pull/17450) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Default filters on Omnichannel Current Chats screen not showing on first load ([#17522](https://github.com/RocketChat/Rocket.Chat/pull/17522)) +- Default filters on Omnichannel Current Chats screen not showing on first load ([#17522](https://github.com/RocketChat/Rocket.Chat/pull/17522) by [@renatobecker](https://github.com/renatobecker)) - Directory search user placeholder ([#17652](https://github.com/RocketChat/Rocket.Chat/pull/17652) by [@zdumitru](https://github.com/zdumitru)) -- Do not allow passwords on private channels ([#15642](https://github.com/RocketChat/Rocket.Chat/pull/15642)) +- Do not allow passwords on private channels ([#15642](https://github.com/RocketChat/Rocket.Chat/pull/15642) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Elements of "Personal Access Tokens" section out of alignment and unusable on very small screens ([#17129](https://github.com/RocketChat/Rocket.Chat/pull/17129) by [@Nikhil713](https://github.com/Nikhil713)) @@ -11353,11 +11485,11 @@ - Increasing highlight time in 3 seconds ([#17540](https://github.com/RocketChat/Rocket.Chat/pull/17540) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- Invalid CSS syntax ([#17541](https://github.com/RocketChat/Rocket.Chat/pull/17541)) +- Invalid CSS syntax ([#17541](https://github.com/RocketChat/Rocket.Chat/pull/17541) by [@tassoevan](https://github.com/tassoevan)) -- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508)) +- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579)) +- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Mail Messages > Cannot mail own user ([#17625](https://github.com/RocketChat/Rocket.Chat/pull/17625)) @@ -11374,15 +11506,15 @@ * Some translations were missing * Edit and delete of custom sounds were not working correctly -- Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553)) +- Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553) by [@renatobecker](https://github.com/renatobecker)) -- Omnichannel room priorities system messages were create on every saved room info ([#17479](https://github.com/RocketChat/Rocket.Chat/pull/17479)) +- Omnichannel room priorities system messages were create on every saved room info ([#17479](https://github.com/RocketChat/Rocket.Chat/pull/17479) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Password reset/change accepting current password as new password ([#16331](https://github.com/RocketChat/Rocket.Chat/pull/16331) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Push settings enabled when push gateway is selected ([#17582](https://github.com/RocketChat/Rocket.Chat/pull/17582)) -- Queued Omnichannel webhook being triggered unnecessarily ([#17661](https://github.com/RocketChat/Rocket.Chat/pull/17661)) +- Queued Omnichannel webhook being triggered unnecessarily ([#17661](https://github.com/RocketChat/Rocket.Chat/pull/17661) by [@renatobecker](https://github.com/renatobecker)) - Reactions may present empty names of who reacted when using Real Names ([#17536](https://github.com/RocketChat/Rocket.Chat/pull/17536)) @@ -11390,21 +11522,21 @@ - Relative image path in oembededUrlWidget ([#15902](https://github.com/RocketChat/Rocket.Chat/pull/15902) by [@machester4](https://github.com/machester4)) -- Remove a non working setting "Notification Duration" ([#15737](https://github.com/RocketChat/Rocket.Chat/pull/15737)) +- Remove a non working setting "Notification Duration" ([#15737](https://github.com/RocketChat/Rocket.Chat/pull/15737) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Remove deprecated Omnichannel Knowledge Base feature ([#17387](https://github.com/RocketChat/Rocket.Chat/pull/17387)) +- Remove deprecated Omnichannel Knowledge Base feature ([#17387](https://github.com/RocketChat/Rocket.Chat/pull/17387) by [@renatobecker](https://github.com/renatobecker)) - remove multiple options from dontAskMeAgain ([#17514](https://github.com/RocketChat/Rocket.Chat/pull/17514) by [@TaimurAzhar](https://github.com/TaimurAzhar)) -- Replace obsolete X-FRAME-OPTIONS header on Livechat route ([#17419](https://github.com/RocketChat/Rocket.Chat/pull/17419)) +- Replace obsolete X-FRAME-OPTIONS header on Livechat route ([#17419](https://github.com/RocketChat/Rocket.Chat/pull/17419) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace postcss Meteor package ([#15929](https://github.com/RocketChat/Rocket.Chat/pull/15929)) +- Replace postcss Meteor package ([#15929](https://github.com/RocketChat/Rocket.Chat/pull/15929) by [@tassoevan](https://github.com/tassoevan)) -- Resolve 'app already exists' error on app update ([#17544](https://github.com/RocketChat/Rocket.Chat/pull/17544)) +- Resolve 'app already exists' error on app update ([#17544](https://github.com/RocketChat/Rocket.Chat/pull/17544) by [@thassiov](https://github.com/thassiov)) -- SAML IDP initiated logout error ([#17482](https://github.com/RocketChat/Rocket.Chat/pull/17482)) +- SAML IDP initiated logout error ([#17482](https://github.com/RocketChat/Rocket.Chat/pull/17482) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Secret Registration not properly validating Invite Token ([#17618](https://github.com/RocketChat/Rocket.Chat/pull/17618)) +- Secret Registration not properly validating Invite Token ([#17618](https://github.com/RocketChat/Rocket.Chat/pull/17618) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Slack importer Link handling ([#17595](https://github.com/RocketChat/Rocket.Chat/pull/17595) by [@lpilz](https://github.com/lpilz)) @@ -11432,7 +11564,7 @@ - Improve: New PR Template ([#16968](https://github.com/RocketChat/Rocket.Chat/pull/16968) by [@regalstreak](https://github.com/regalstreak)) -- Improve: Remove index files from action-links, accounts and assets ([#17607](https://github.com/RocketChat/Rocket.Chat/pull/17607)) +- Improve: Remove index files from action-links, accounts and assets ([#17607](https://github.com/RocketChat/Rocket.Chat/pull/17607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Improve: Remove uncessary RegExp query by email ([#17654](https://github.com/RocketChat/Rocket.Chat/pull/17654)) @@ -11448,7 +11580,7 @@ - RegExp improvements suggested by LGTM ([#17500](https://github.com/RocketChat/Rocket.Chat/pull/17500)) -- Regression: Fix error when performing Omnichannel queue checking ([#17700](https://github.com/RocketChat/Rocket.Chat/pull/17700)) +- Regression: Fix error when performing Omnichannel queue checking ([#17700](https://github.com/RocketChat/Rocket.Chat/pull/17700) by [@renatobecker](https://github.com/renatobecker)) - Regression: Add missing return to afterSaveMessage callbacks ([#17715](https://github.com/RocketChat/Rocket.Chat/pull/17715)) @@ -11460,7 +11592,7 @@ - Regression: Fix Avatar Url Provider when CDN_PREFIX_ALL is false ([#17542](https://github.com/RocketChat/Rocket.Chat/pull/17542)) -- Regression: Fix error preventing creation of group DMs ([#17726](https://github.com/RocketChat/Rocket.Chat/pull/17726)) +- Regression: Fix error preventing creation of group DMs ([#17726](https://github.com/RocketChat/Rocket.Chat/pull/17726) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Regression: Fix incorrect imports of the Apps-Engine ([#17695](https://github.com/RocketChat/Rocket.Chat/pull/17695)) @@ -11492,7 +11624,7 @@ - Regression: User edit form missing fields ([#17699](https://github.com/RocketChat/Rocket.Chat/pull/17699)) -- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x)) +- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Remove unnecessary setting redefinition ([#17587](https://github.com/RocketChat/Rocket.Chat/pull/17587)) @@ -11502,7 +11634,7 @@ - Update Fuselage version ([#17708](https://github.com/RocketChat/Rocket.Chat/pull/17708)) -- Upgrade Livechat Widget version to 1.5.0 ([#17710](https://github.com/RocketChat/Rocket.Chat/pull/17710)) +- Upgrade Livechat Widget version to 1.5.0 ([#17710](https://github.com/RocketChat/Rocket.Chat/pull/17710) by [@renatobecker](https://github.com/renatobecker)) - Use Users.findOneByAppId instead of querying directly ([#16480](https://github.com/RocketChat/Rocket.Chat/pull/16480) by [@lolimay](https://github.com/lolimay)) @@ -11510,6 +11642,8 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Nikhil713](https://github.com/Nikhil713) - [@TaimurAzhar](https://github.com/TaimurAzhar) - [@ashwaniYDV](https://github.com/ashwaniYDV) @@ -11526,30 +11660,28 @@ - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@mtmr0x](https://github.com/mtmr0x) - [@ocanema](https://github.com/ocanema) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@qwertiko](https://github.com/qwertiko) - [@regalstreak](https://github.com/regalstreak) +- [@renatobecker](https://github.com/renatobecker) - [@ritvikjain99](https://github.com/ritvikjain99) - [@ritwizsinha](https://github.com/ritwizsinha) - [@ryjones](https://github.com/ryjones) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) - [@tkurz](https://github.com/tkurz) - [@wreiske](https://github.com/wreiske) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) # 3.2.2 `2020-05-11 · 7 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` @@ -11568,9 +11700,9 @@ - Error during data export for DMs ([#17577](https://github.com/RocketChat/Rocket.Chat/pull/17577) by [@mtmr0x](https://github.com/mtmr0x)) -- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508)) +- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579)) +- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Push settings enabled when push gateway is selected ([#17582](https://github.com/RocketChat/Rocket.Chat/pull/17582)) @@ -11582,19 +11714,19 @@ 🔍 Minor changes -- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x)) +- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 👩‍💻👨‍💻 Contributors 😍 - [@mtmr0x](https://github.com/mtmr0x) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -11609,19 +11741,22 @@ ### 🐛 Bug fixes -- LDAP login error on Enterprise version ([#17497](https://github.com/RocketChat/Rocket.Chat/pull/17497)) +- LDAP login error on Enterprise version ([#17497](https://github.com/RocketChat/Rocket.Chat/pull/17497) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
🔍 Minor changes -- Release 3.2.1 ([#17506](https://github.com/RocketChat/Rocket.Chat/pull/17506)) +- Release 3.2.1 ([#17506](https://github.com/RocketChat/Rocket.Chat/pull/17506) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 3.2.0 @@ -11635,27 +11770,27 @@ ### 🎉 New features -- **ENTERPRISE:** Allows to set a group of departments accepted for forwarding chats ([#17335](https://github.com/RocketChat/Rocket.Chat/pull/17335)) +- **ENTERPRISE:** Allows to set a group of departments accepted for forwarding chats ([#17335](https://github.com/RocketChat/Rocket.Chat/pull/17335) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** Auto close abandoned Omnichannel rooms ([#17055](https://github.com/RocketChat/Rocket.Chat/pull/17055)) +- **ENTERPRISE:** Auto close abandoned Omnichannel rooms ([#17055](https://github.com/RocketChat/Rocket.Chat/pull/17055) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** Omnichannel queue priorities ([#17141](https://github.com/RocketChat/Rocket.Chat/pull/17141)) +- **ENTERPRISE:** Omnichannel queue priorities ([#17141](https://github.com/RocketChat/Rocket.Chat/pull/17141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- **ENTERPRISE:** Restrict the permissions configuration for guest users ([#17333](https://github.com/RocketChat/Rocket.Chat/pull/17333)) +- **ENTERPRISE:** Restrict the permissions configuration for guest users ([#17333](https://github.com/RocketChat/Rocket.Chat/pull/17333) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) The **Guest** role is blocked for edition on the EE version. This will allow the EE customers to receive licenses with extra seats for Guests for free. The CE version continues to have the Guest role configurable. -- Add ability to set tags in the Omnichannel room closing dialog ([#17254](https://github.com/RocketChat/Rocket.Chat/pull/17254)) +- Add ability to set tags in the Omnichannel room closing dialog ([#17254](https://github.com/RocketChat/Rocket.Chat/pull/17254) by [@renatobecker](https://github.com/renatobecker)) -- Add Color variable to left sidebar ([#16806](https://github.com/RocketChat/Rocket.Chat/pull/16806)) +- Add Color variable to left sidebar ([#16806](https://github.com/RocketChat/Rocket.Chat/pull/16806) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Add MMS support to Voxtelesys ([#17217](https://github.com/RocketChat/Rocket.Chat/pull/17217) by [@john08burke](https://github.com/john08burke)) +- Add MMS support to Voxtelesys ([#17217](https://github.com/RocketChat/Rocket.Chat/pull/17217) by [@john08burke](https://github.com/john08burke) & [@renatobecker](https://github.com/renatobecker)) - Adds ability for Rocket.Chat Apps to create discussions ([#16683](https://github.com/RocketChat/Rocket.Chat/pull/16683) by [@lolimay](https://github.com/lolimay)) -- Allow to send Agent custom fields through the Omnichannel CRM integration ([#16286](https://github.com/RocketChat/Rocket.Chat/pull/16286)) +- Allow to send Agent custom fields through the Omnichannel CRM integration ([#16286](https://github.com/RocketChat/Rocket.Chat/pull/16286) by [@renatobecker](https://github.com/renatobecker)) -- Allow to set a comment when forwarding Omnichannel chats ([#17353](https://github.com/RocketChat/Rocket.Chat/pull/17353)) +- Allow to set a comment when forwarding Omnichannel chats ([#17353](https://github.com/RocketChat/Rocket.Chat/pull/17353) by [@renatobecker](https://github.com/renatobecker)) - Better Push and Email Notification logic ([#17357](https://github.com/RocketChat/Rocket.Chat/pull/17357)) @@ -11669,17 +11804,17 @@ - All the scheduled notifications for that user are rescheduled to now - The current notification goes back to the queue to be processed ordered by creation date -- Buttons to check/uncheck all users and channels on import ([#17207](https://github.com/RocketChat/Rocket.Chat/pull/17207)) +- Buttons to check/uncheck all users and channels on import ([#17207](https://github.com/RocketChat/Rocket.Chat/pull/17207) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Default favorite channels ([#16025](https://github.com/RocketChat/Rocket.Chat/pull/16025)) -- Enable the IDP to choose the best authnContext ([#17222](https://github.com/RocketChat/Rocket.Chat/pull/17222) by [@felipecrp](https://github.com/felipecrp)) +- Enable the IDP to choose the best authnContext ([#17222](https://github.com/RocketChat/Rocket.Chat/pull/17222) by [@felipecrp](https://github.com/felipecrp) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Error page when browser is not supported ([#17372](https://github.com/RocketChat/Rocket.Chat/pull/17372)) - Feature/custom oauth mail field and interpolation for mapped fields ([#15690](https://github.com/RocketChat/Rocket.Chat/pull/15690) by [@benkroeger](https://github.com/benkroeger)) -- Federation event for when users left rooms ([#17091](https://github.com/RocketChat/Rocket.Chat/pull/17091)) +- Federation event for when users left rooms ([#17091](https://github.com/RocketChat/Rocket.Chat/pull/17091) by [@alansikora](https://github.com/alansikora)) - Make the header for rooms clickable ([#16762](https://github.com/RocketChat/Rocket.Chat/pull/16762) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) @@ -11690,32 +11825,32 @@ - Add `file-title` and `file-desc` as new filter tag options on message search ([#16858](https://github.com/RocketChat/Rocket.Chat/pull/16858) by [@subham103](https://github.com/subham103)) -- Add possibility to sort the Omnichannel current chats list by column ([#17347](https://github.com/RocketChat/Rocket.Chat/pull/17347)) +- Add possibility to sort the Omnichannel current chats list by column ([#17347](https://github.com/RocketChat/Rocket.Chat/pull/17347) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Administration -> Mailer Rewrite. ([#17191](https://github.com/RocketChat/Rocket.Chat/pull/17191)) -- Administration Pages root rewritten ([#17209](https://github.com/RocketChat/Rocket.Chat/pull/17209)) +- Administration Pages root rewritten ([#17209](https://github.com/RocketChat/Rocket.Chat/pull/17209) by [@tassoevan](https://github.com/tassoevan)) - Change the SAML metadata order to conform to XSD specification ([#15488](https://github.com/RocketChat/Rocket.Chat/pull/15488) by [@fcrespo82](https://github.com/fcrespo82)) - Filter markdown in notifications ([#9995](https://github.com/RocketChat/Rocket.Chat/pull/9995) by [@c0dzilla](https://github.com/c0dzilla)) -- Increase decoupling between React components and Blaze templates ([#16642](https://github.com/RocketChat/Rocket.Chat/pull/16642)) +- Increase decoupling between React components and Blaze templates ([#16642](https://github.com/RocketChat/Rocket.Chat/pull/16642) by [@tassoevan](https://github.com/tassoevan)) -- Move CSS imports to `/app` modules ([#17261](https://github.com/RocketChat/Rocket.Chat/pull/17261)) +- Move CSS imports to `/app` modules ([#17261](https://github.com/RocketChat/Rocket.Chat/pull/17261) by [@tassoevan](https://github.com/tassoevan)) -- Redesign Administration > Import ([#17289](https://github.com/RocketChat/Rocket.Chat/pull/17289)) +- Redesign Administration > Import ([#17289](https://github.com/RocketChat/Rocket.Chat/pull/17289) by [@tassoevan](https://github.com/tassoevan)) - User gets UI feedback when message is pinned or unpinned ([#16056](https://github.com/RocketChat/Rocket.Chat/pull/16056) by [@ashwaniYDV](https://github.com/ashwaniYDV)) ### 🐛 Bug fixes -- "Invalid Invite" message when registration is disabled ([#17226](https://github.com/RocketChat/Rocket.Chat/pull/17226)) +- "Invalid Invite" message when registration is disabled ([#17226](https://github.com/RocketChat/Rocket.Chat/pull/17226) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - 2FA not showing codes for Spanish translation ([#17378](https://github.com/RocketChat/Rocket.Chat/pull/17378) by [@RavenSystem](https://github.com/RavenSystem)) -- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275)) +- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Admin panel custom sounds, multiple sound playback fix and added single play/pause button ([#16215](https://github.com/RocketChat/Rocket.Chat/pull/16215) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -11727,7 +11862,7 @@ - Change wording to start DM from info panel ([#8799](https://github.com/RocketChat/Rocket.Chat/pull/8799)) -- CSV Importer fails when there are no users to import ([#16790](https://github.com/RocketChat/Rocket.Chat/pull/16790)) +- CSV Importer fails when there are no users to import ([#16790](https://github.com/RocketChat/Rocket.Chat/pull/16790) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Directory default tab ([#17283](https://github.com/RocketChat/Rocket.Chat/pull/17283)) @@ -11737,17 +11872,17 @@ - Fixed email sort button in directory -> users ([#16606](https://github.com/RocketChat/Rocket.Chat/pull/16606) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Global event click-message-link not fired ([#16771](https://github.com/RocketChat/Rocket.Chat/pull/16771)) +- Global event click-message-link not fired ([#16771](https://github.com/RocketChat/Rocket.Chat/pull/16771) by [@tassoevan](https://github.com/tassoevan)) -- Import slack's multiple direct messages as direct rooms instead of private groups ([#17206](https://github.com/RocketChat/Rocket.Chat/pull/17206)) +- Import slack's multiple direct messages as direct rooms instead of private groups ([#17206](https://github.com/RocketChat/Rocket.Chat/pull/17206) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - In Create a New Channel, input should be focused on channel name instead of invite users ([#16405](https://github.com/RocketChat/Rocket.Chat/pull/16405) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302)) +- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - No maxlength(120) defined for custom user status ([#16534](https://github.com/RocketChat/Rocket.Chat/pull/16534) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288)) +- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288) by [@renatobecker](https://github.com/renatobecker)) - Popover component doesn't have scroll ([#17198](https://github.com/RocketChat/Rocket.Chat/pull/17198) by [@Nikhil713](https://github.com/Nikhil713)) @@ -11755,11 +11890,11 @@ - Red color error outline is not removed after password update on profile details ([#16536](https://github.com/RocketChat/Rocket.Chat/pull/16536) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Remove properties from users.info response ([#17238](https://github.com/RocketChat/Rocket.Chat/pull/17238)) +- Remove properties from users.info response ([#17238](https://github.com/RocketChat/Rocket.Chat/pull/17238) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278)) +- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- SAML Idp Initiated Logout Error ([#17324](https://github.com/RocketChat/Rocket.Chat/pull/17324)) +- SAML Idp Initiated Logout Error ([#17324](https://github.com/RocketChat/Rocket.Chat/pull/17324) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Search valid for emoji with dual name ([#16887](https://github.com/RocketChat/Rocket.Chat/pull/16887) by [@subham103](https://github.com/subham103)) @@ -11771,7 +11906,7 @@ - Translation for nl ([#16742](https://github.com/RocketChat/Rocket.Chat/pull/16742) by [@CC007](https://github.com/CC007)) -- Unsafe React portals mount/unmount ([#17265](https://github.com/RocketChat/Rocket.Chat/pull/17265)) +- Unsafe React portals mount/unmount ([#17265](https://github.com/RocketChat/Rocket.Chat/pull/17265) by [@tassoevan](https://github.com/tassoevan)) - Update ru.i18n.json ([#16869](https://github.com/RocketChat/Rocket.Chat/pull/16869) by [@1rV1N-git](https://github.com/1rV1N-git)) @@ -11783,13 +11918,13 @@ 🔍 Minor changes -- [CHORE] Move polyfills to client/ ([#17266](https://github.com/RocketChat/Rocket.Chat/pull/17266)) +- [CHORE] Move polyfills to client/ ([#17266](https://github.com/RocketChat/Rocket.Chat/pull/17266) by [@tassoevan](https://github.com/tassoevan)) -- Apply $and helper to message template ([#17280](https://github.com/RocketChat/Rocket.Chat/pull/17280)) +- Apply $and helper to message template ([#17280](https://github.com/RocketChat/Rocket.Chat/pull/17280) by [@tassoevan](https://github.com/tassoevan)) - Bump https-proxy-agent from 2.2.1 to 2.2.4 ([#17323](https://github.com/RocketChat/Rocket.Chat/pull/17323) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Complement Guest role restrictions for Enterprise ([#17393](https://github.com/RocketChat/Rocket.Chat/pull/17393)) +- Complement Guest role restrictions for Enterprise ([#17393](https://github.com/RocketChat/Rocket.Chat/pull/17393) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Fix moving-to-a-single-codebase link in README ([#17297](https://github.com/RocketChat/Rocket.Chat/pull/17297) by [@Krinkle](https://github.com/Krinkle)) @@ -11801,21 +11936,21 @@ - Mailer Scrollbar ([#17322](https://github.com/RocketChat/Rocket.Chat/pull/17322)) -- Merge master into develop & Set version to 3.2.0-develop ([#17241](https://github.com/RocketChat/Rocket.Chat/pull/17241) by [@1rV1N-git](https://github.com/1rV1N-git)) +- Merge master into develop & Set version to 3.2.0-develop ([#17241](https://github.com/RocketChat/Rocket.Chat/pull/17241) by [@1rV1N-git](https://github.com/1rV1N-git) & [@renatobecker](https://github.com/renatobecker)) -- New hooks for RouterContext ([#17305](https://github.com/RocketChat/Rocket.Chat/pull/17305)) +- New hooks for RouterContext ([#17305](https://github.com/RocketChat/Rocket.Chat/pull/17305) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Import data pagination ([#17355](https://github.com/RocketChat/Rocket.Chat/pull/17355)) +- Regression: Import data pagination ([#17355](https://github.com/RocketChat/Rocket.Chat/pull/17355) by [@tassoevan](https://github.com/tassoevan)) - Regression: Storybook ([#17321](https://github.com/RocketChat/Rocket.Chat/pull/17321)) -- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde)) +- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) - Remove `@typescript-eslint/explicit-function-return-type` rule ([#17428](https://github.com/RocketChat/Rocket.Chat/pull/17428)) - Remove set as alias setting ([#16343](https://github.com/RocketChat/Rocket.Chat/pull/16343)) -- Static props for Administration route components ([#17285](https://github.com/RocketChat/Rocket.Chat/pull/17285)) +- Static props for Administration route components ([#17285](https://github.com/RocketChat/Rocket.Chat/pull/17285) by [@tassoevan](https://github.com/tassoevan)) - Update Apps-Engine to stable version ([#17287](https://github.com/RocketChat/Rocket.Chat/pull/17287)) @@ -11828,9 +11963,12 @@ - [@1rV1N-git](https://github.com/1rV1N-git) - [@CC007](https://github.com/CC007) - [@Krinkle](https://github.com/Krinkle) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Nikhil713](https://github.com/Nikhil713) - [@RavenSystem](https://github.com/RavenSystem) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) +- [@alansikora](https://github.com/alansikora) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@benkroeger](https://github.com/benkroeger) - [@c0dzilla](https://github.com/c0dzilla) @@ -11843,25 +11981,22 @@ - [@john08burke](https://github.com/john08burke) - [@lolimay](https://github.com/lolimay) - [@lpilz](https://github.com/lpilz) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) - [@subham103](https://github.com/subham103) - [@taiju271](https://github.com/taiju271) +- [@tassoevan](https://github.com/tassoevan) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.1.3 `2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -11893,17 +12028,17 @@ - Allowing blocking a user on channels ([#17406](https://github.com/RocketChat/Rocket.Chat/pull/17406)) -- Bot Agents not being able to get Omnichannel Inquiries ([#17404](https://github.com/RocketChat/Rocket.Chat/pull/17404)) +- Bot Agents not being able to get Omnichannel Inquiries ([#17404](https://github.com/RocketChat/Rocket.Chat/pull/17404) by [@renatobecker](https://github.com/renatobecker)) - Empty Incoming webhook script field ([#17422](https://github.com/RocketChat/Rocket.Chat/pull/17422)) -- LDAP error when trying to add room with spaces in the name ([#17453](https://github.com/RocketChat/Rocket.Chat/pull/17453)) +- LDAP error when trying to add room with spaces in the name ([#17453](https://github.com/RocketChat/Rocket.Chat/pull/17453) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - LDAP Sync error ([#17417](https://github.com/RocketChat/Rocket.Chat/pull/17417) by [@fastrde](https://github.com/fastrde)) -- New user added by admin doesn't receive random password email ([#17249](https://github.com/RocketChat/Rocket.Chat/pull/17249)) +- New user added by admin doesn't receive random password email ([#17249](https://github.com/RocketChat/Rocket.Chat/pull/17249) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Omnichannel room info panel opening whenever a message is sent ([#17348](https://github.com/RocketChat/Rocket.Chat/pull/17348)) +- Omnichannel room info panel opening whenever a message is sent ([#17348](https://github.com/RocketChat/Rocket.Chat/pull/17348) by [@renatobecker](https://github.com/renatobecker)) - Web Client memory leak caused by the Emoji rendering ([#17320](https://github.com/RocketChat/Rocket.Chat/pull/17320)) @@ -11915,19 +12050,19 @@ - Regression: Fix mem usage with more than one argument ([#17391](https://github.com/RocketChat/Rocket.Chat/pull/17391)) -- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde)) +- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) ### 👩‍💻👨‍💻 Contributors 😍 - [@fastrde](https://github.com/fastrde) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.1.1 @@ -11941,7 +12076,7 @@ ### 🐛 Bug fixes -- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275)) +- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Avatar on sidebar when showing real names ([#17286](https://github.com/RocketChat/Rocket.Chat/pull/17286)) @@ -11949,11 +12084,11 @@ - Discussions created from inside DMs were not working and some errors accessing recently created rooms ([#17282](https://github.com/RocketChat/Rocket.Chat/pull/17282)) -- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302)) +- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288)) +- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288) by [@renatobecker](https://github.com/renatobecker)) -- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278)) +- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - User search on directory not working correctly ([#17299](https://github.com/RocketChat/Rocket.Chat/pull/17299)) @@ -11965,12 +12100,15 @@ +### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -11985,15 +12123,15 @@ ### 🎉 New features -- **ENTERPRISE:** Engagement Dashboard ([#16960](https://github.com/RocketChat/Rocket.Chat/pull/16960)) +- **ENTERPRISE:** Engagement Dashboard ([#16960](https://github.com/RocketChat/Rocket.Chat/pull/16960) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) -- Add default chat closing tags in Omnichannel departments ([#16859](https://github.com/RocketChat/Rocket.Chat/pull/16859)) +- Add default chat closing tags in Omnichannel departments ([#16859](https://github.com/RocketChat/Rocket.Chat/pull/16859) by [@renatobecker](https://github.com/renatobecker)) - Add omnichannel external frame feature ([#17038](https://github.com/RocketChat/Rocket.Chat/pull/17038)) - Add update method for user bridge ([#17077](https://github.com/RocketChat/Rocket.Chat/pull/17077)) -- Allow to set default department and location sharing on SMS / WhatsApp integration ([#16557](https://github.com/RocketChat/Rocket.Chat/pull/16557)) +- Allow to set default department and location sharing on SMS / WhatsApp integration ([#16557](https://github.com/RocketChat/Rocket.Chat/pull/16557) by [@renatobecker](https://github.com/renatobecker)) - API `users.deactivateIdle` for mass-disabling of idle users ([#16849](https://github.com/RocketChat/Rocket.Chat/pull/16849)) @@ -12009,17 +12147,17 @@ - Home button on sidebar ([#17052](https://github.com/RocketChat/Rocket.Chat/pull/17052)) -- Merge Sort List and View Mode menus and improve its UI/UX ([#17103](https://github.com/RocketChat/Rocket.Chat/pull/17103)) +- Merge Sort List and View Mode menus and improve its UI/UX ([#17103](https://github.com/RocketChat/Rocket.Chat/pull/17103) by [@tassoevan](https://github.com/tassoevan)) ![image](https://user-images.githubusercontent.com/5263975/78036622-e8db2a80-7340-11ea-91d0-65728eabdcb6.png) -- Open the Visitor Info panel automatically when the agent enters an Omnichannel room ([#16496](https://github.com/RocketChat/Rocket.Chat/pull/16496)) +- Open the Visitor Info panel automatically when the agent enters an Omnichannel room ([#16496](https://github.com/RocketChat/Rocket.Chat/pull/16496) by [@renatobecker](https://github.com/renatobecker)) -- Route to get updated roles after a date ([#16610](https://github.com/RocketChat/Rocket.Chat/pull/16610) by [@ashwaniYDV](https://github.com/ashwaniYDV)) +- Route to get updated roles after a date ([#16610](https://github.com/RocketChat/Rocket.Chat/pull/16610) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ashwaniYDV](https://github.com/ashwaniYDV)) - SAML config to allow clock drift ([#16751](https://github.com/RocketChat/Rocket.Chat/pull/16751) by [@localguru](https://github.com/localguru)) -- Save default filters in the Omnichannel Current Chats list ([#16653](https://github.com/RocketChat/Rocket.Chat/pull/16653)) +- Save default filters in the Omnichannel Current Chats list ([#16653](https://github.com/RocketChat/Rocket.Chat/pull/16653) by [@renatobecker](https://github.com/renatobecker)) - Settings to enable E2E encryption for Private and Direct Rooms by default ([#16928](https://github.com/RocketChat/Rocket.Chat/pull/16928)) @@ -12039,11 +12177,11 @@ ### 🚀 Improvements -- Ability to change offline message button link on emails notifications ([#16784](https://github.com/RocketChat/Rocket.Chat/pull/16784)) +- Ability to change offline message button link on emails notifications ([#16784](https://github.com/RocketChat/Rocket.Chat/pull/16784) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Accept open formarts of text, spreadsheet, presentation for upload by default ([#16502](https://github.com/RocketChat/Rocket.Chat/pull/16502)) -- Add option to require authentication on user's shield endpoint ([#16845](https://github.com/RocketChat/Rocket.Chat/pull/16845)) +- Add option to require authentication on user's shield endpoint ([#16845](https://github.com/RocketChat/Rocket.Chat/pull/16845) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Added autofocus to Directory ([#16217](https://github.com/RocketChat/Rocket.Chat/pull/16217) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -12061,23 +12199,23 @@ - Fallback content-type as application/octet-stream for FileSystem uploads ([#16776](https://github.com/RocketChat/Rocket.Chat/pull/16776) by [@georgmu](https://github.com/georgmu)) -- First data load from existing data on engagement dashboard ([#17035](https://github.com/RocketChat/Rocket.Chat/pull/17035)) +- First data load from existing data on engagement dashboard ([#17035](https://github.com/RocketChat/Rocket.Chat/pull/17035) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) - Increase the push throughput to prevent queuing ([#17194](https://github.com/RocketChat/Rocket.Chat/pull/17194)) -- Omnichannel aggregations performance improvements ([#16755](https://github.com/RocketChat/Rocket.Chat/pull/16755)) +- Omnichannel aggregations performance improvements ([#16755](https://github.com/RocketChat/Rocket.Chat/pull/16755) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) - Removed the 'reply in thread' from thread replies ([#16630](https://github.com/RocketChat/Rocket.Chat/pull/16630) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Rename client-side term "Livechat" to "Omnichannel" ([#16752](https://github.com/RocketChat/Rocket.Chat/pull/16752)) +- Rename client-side term "Livechat" to "Omnichannel" ([#16752](https://github.com/RocketChat/Rocket.Chat/pull/16752) by [@renatobecker](https://github.com/renatobecker)) - Repeat “Reply In Thread” and “Add Reaction” inside the message actions menu ([#17073](https://github.com/RocketChat/Rocket.Chat/pull/17073)) -- Replace the Department select component by an Autocomplete input in Omnichannel UI ([#16669](https://github.com/RocketChat/Rocket.Chat/pull/16669)) +- Replace the Department select component by an Autocomplete input in Omnichannel UI ([#16669](https://github.com/RocketChat/Rocket.Chat/pull/16669) by [@renatobecker](https://github.com/renatobecker)) - Send files over REST API ([#16617](https://github.com/RocketChat/Rocket.Chat/pull/16617)) -- Tab Bar actions reorder ([#17072](https://github.com/RocketChat/Rocket.Chat/pull/17072)) +- Tab Bar actions reorder ([#17072](https://github.com/RocketChat/Rocket.Chat/pull/17072) by [@tassoevan](https://github.com/tassoevan)) - Use `rocket.cat` as default bot If `InternalHubot_Username` is undefined ([#16371](https://github.com/RocketChat/Rocket.Chat/pull/16371) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -12088,7 +12226,7 @@ - "Jump to message" is rendered twice when message is starred. ([#16170](https://github.com/RocketChat/Rocket.Chat/pull/16170) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- `users.setStatus` API was ignoring the user from params when trying to set status of other users ([#16128](https://github.com/RocketChat/Rocket.Chat/pull/16128) by [@rm-yakovenko](https://github.com/rm-yakovenko)) +- `users.setStatus` API was ignoring the user from params when trying to set status of other users ([#16128](https://github.com/RocketChat/Rocket.Chat/pull/16128) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rm-yakovenko](https://github.com/rm-yakovenko)) - Additional scroll when contextual bar is open ([#16667](https://github.com/RocketChat/Rocket.Chat/pull/16667)) @@ -12096,7 +12234,7 @@ - Admins can't sort users by email in directory view ([#15796](https://github.com/RocketChat/Rocket.Chat/pull/15796) by [@sneakson](https://github.com/sneakson)) -- Ancestral departments were not updated when an Omnichannel room is forwarded to another department ([#16958](https://github.com/RocketChat/Rocket.Chat/pull/16958)) +- Ancestral departments were not updated when an Omnichannel room is forwarded to another department ([#16958](https://github.com/RocketChat/Rocket.Chat/pull/16958) by [@renatobecker](https://github.com/renatobecker)) - Block user option inside admin view ([#16626](https://github.com/RocketChat/Rocket.Chat/pull/16626)) @@ -12108,11 +12246,11 @@ - CAS ignores username attribute map ([#16942](https://github.com/RocketChat/Rocket.Chat/pull/16942) by [@pmayer](https://github.com/pmayer)) -- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618)) +- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618) by [@renatobecker](https://github.com/renatobecker)) - Clear unread red line when the ESC key is pressed ([#16668](https://github.com/RocketChat/Rocket.Chat/pull/16668)) -- Color setting editing issues ([#16706](https://github.com/RocketChat/Rocket.Chat/pull/16706)) +- Color setting editing issues ([#16706](https://github.com/RocketChat/Rocket.Chat/pull/16706) by [@tassoevan](https://github.com/tassoevan)) - Custom OAuth Bug ([#16811](https://github.com/RocketChat/Rocket.Chat/pull/16811)) @@ -12146,7 +12284,7 @@ - Invite links counting users already joined ([#16591](https://github.com/RocketChat/Rocket.Chat/pull/16591) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787)) +- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787) by [@renatobecker](https://github.com/renatobecker)) - Language country has been ignored on translation load ([#16757](https://github.com/RocketChat/Rocket.Chat/pull/16757)) @@ -12154,7 +12292,7 @@ - LDAP sync admin action was not syncing existent users ([#16671](https://github.com/RocketChat/Rocket.Chat/pull/16671)) -- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623)) +- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Login with LinkedIn not mapping name and picture correctly ([#16955](https://github.com/RocketChat/Rocket.Chat/pull/16955)) @@ -12164,11 +12302,11 @@ - Messages doesn't send to Slack via SlackBridge after renaming channel ([#16565](https://github.com/RocketChat/Rocket.Chat/pull/16565) by [@antkaz](https://github.com/antkaz)) -- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132)) +- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132) by [@renatobecker](https://github.com/renatobecker)) -- Omnichannel Inquiry names not being updated when the guest name changes ([#16782](https://github.com/RocketChat/Rocket.Chat/pull/16782)) +- Omnichannel Inquiry names not being updated when the guest name changes ([#16782](https://github.com/RocketChat/Rocket.Chat/pull/16782) by [@renatobecker](https://github.com/renatobecker)) -- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603)) +- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603) by [@renatobecker](https://github.com/renatobecker)) - Option BYPASS_OPLOG_VALIDATION not working ([#17143](https://github.com/RocketChat/Rocket.Chat/pull/17143)) @@ -12182,23 +12320,23 @@ - Race conditions on/before login ([#16989](https://github.com/RocketChat/Rocket.Chat/pull/16989)) -- Random errors on SAML logout ([#17227](https://github.com/RocketChat/Rocket.Chat/pull/17227)) +- Random errors on SAML logout ([#17227](https://github.com/RocketChat/Rocket.Chat/pull/17227) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Real-time data rendering on Omnichannel room info panel ([#16783](https://github.com/RocketChat/Rocket.Chat/pull/16783)) +- Real-time data rendering on Omnichannel room info panel ([#16783](https://github.com/RocketChat/Rocket.Chat/pull/16783) by [@renatobecker](https://github.com/renatobecker)) - Regression: Jitsi on external window infinite loop ([#16625](https://github.com/RocketChat/Rocket.Chat/pull/16625)) - Regression: New 'app' role with no permissions when updating to 3.0.0 ([#16637](https://github.com/RocketChat/Rocket.Chat/pull/16637)) -- Remove Reply in DM from Omnichannel rooms ([#16957](https://github.com/RocketChat/Rocket.Chat/pull/16957) by [@ashwaniYDV](https://github.com/ashwaniYDV)) +- Remove Reply in DM from Omnichannel rooms ([#16957](https://github.com/RocketChat/Rocket.Chat/pull/16957) by [@ashwaniYDV](https://github.com/ashwaniYDV) & [@renatobecker](https://github.com/renatobecker)) - Remove spaces from i18n placeholders to show Personal access token ([#16724](https://github.com/RocketChat/Rocket.Chat/pull/16724) by [@harakiwi1](https://github.com/harakiwi1)) -- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723)) +- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Room event emitter passing an invalid parameter when finding removed subscriptions ([#17224](https://github.com/RocketChat/Rocket.Chat/pull/17224)) +- Room event emitter passing an invalid parameter when finding removed subscriptions ([#17224](https://github.com/RocketChat/Rocket.Chat/pull/17224) by [@renatobecker](https://github.com/renatobecker)) -- SAML login errors not showing on UI ([#17219](https://github.com/RocketChat/Rocket.Chat/pull/17219)) +- SAML login errors not showing on UI ([#17219](https://github.com/RocketChat/Rocket.Chat/pull/17219) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Show error message if password and confirm password not equal ([#16247](https://github.com/RocketChat/Rocket.Chat/pull/16247) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -12208,25 +12346,25 @@ - Slash command preview: Wrong item being selected, Horizontal scroll ([#16750](https://github.com/RocketChat/Rocket.Chat/pull/16750)) -- Text formatted to remain within button even on screen resize ([#14136](https://github.com/RocketChat/Rocket.Chat/pull/14136)) +- Text formatted to remain within button even on screen resize ([#14136](https://github.com/RocketChat/Rocket.Chat/pull/14136) by [@Rodriq](https://github.com/Rodriq)) - There is no option to pin a thread message by admin ([#16457](https://github.com/RocketChat/Rocket.Chat/pull/16457) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699)) +- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - UiKit not updating new actionIds received as responses from actions ([#16624](https://github.com/RocketChat/Rocket.Chat/pull/16624)) -- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Verification email body ([#17062](https://github.com/RocketChat/Rocket.Chat/pull/17062) by [@GOVINDDIXIT](https://github.com/GOVINDDIXIT)) -- WebRTC echo while talking ([#17145](https://github.com/RocketChat/Rocket.Chat/pull/17145) by [@1rV1N-git](https://github.com/1rV1N-git) & [@ndroo](https://github.com/ndroo)) +- WebRTC echo while talking ([#17145](https://github.com/RocketChat/Rocket.Chat/pull/17145) by [@1rV1N-git](https://github.com/1rV1N-git) & [@ndroo](https://github.com/ndroo) & [@renatobecker](https://github.com/renatobecker)) - When trying to quote messages inside threads the quote would be sent to room instead to the thread ([#16925](https://github.com/RocketChat/Rocket.Chat/pull/16925)) - Wrong message count statistics in Admin info page ([#16680](https://github.com/RocketChat/Rocket.Chat/pull/16680) by [@subham103](https://github.com/subham103)) -- Wrong SAML Response Signature Validation ([#16922](https://github.com/RocketChat/Rocket.Chat/pull/16922)) +- Wrong SAML Response Signature Validation ([#16922](https://github.com/RocketChat/Rocket.Chat/pull/16922) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Wrong thread messages display in contextual bar ([#16835](https://github.com/RocketChat/Rocket.Chat/pull/16835) by [@ritwizsinha](https://github.com/ritwizsinha)) @@ -12238,21 +12376,21 @@ - [CHORE] Changed remaining SelectInput's to Select ([#16719](https://github.com/RocketChat/Rocket.Chat/pull/16719)) -- [CHORE] Look for Storybook stories on `app/` too ([#16595](https://github.com/RocketChat/Rocket.Chat/pull/16595)) +- [CHORE] Look for Storybook stories on `app/` too ([#16595](https://github.com/RocketChat/Rocket.Chat/pull/16595) by [@tassoevan](https://github.com/tassoevan)) -- [CHORE] Update snap install instructions ([#16720](https://github.com/RocketChat/Rocket.Chat/pull/16720)) +- [CHORE] Update snap install instructions ([#16720](https://github.com/RocketChat/Rocket.Chat/pull/16720) by [@tassoevan](https://github.com/tassoevan)) - [CHORE] Use REST API for sending audio messages ([#17237](https://github.com/RocketChat/Rocket.Chat/pull/17237)) -- Add an index to the name field for omnichannel department ([#16953](https://github.com/RocketChat/Rocket.Chat/pull/16953)) +- Add an index to the name field for omnichannel department ([#16953](https://github.com/RocketChat/Rocket.Chat/pull/16953) by [@renatobecker](https://github.com/renatobecker)) - Add Enterprise Edition license ([#16801](https://github.com/RocketChat/Rocket.Chat/pull/16801)) - Add lint to `.less` files ([#16893](https://github.com/RocketChat/Rocket.Chat/pull/16893)) -- Add methods to include room types on dashboard ([#16576](https://github.com/RocketChat/Rocket.Chat/pull/16576)) +- Add methods to include room types on dashboard ([#16576](https://github.com/RocketChat/Rocket.Chat/pull/16576) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add new Omnichannel department forwarding callback ([#16779](https://github.com/RocketChat/Rocket.Chat/pull/16779)) +- Add new Omnichannel department forwarding callback ([#16779](https://github.com/RocketChat/Rocket.Chat/pull/16779) by [@renatobecker](https://github.com/renatobecker)) - Add some missing ES translations ([#16120](https://github.com/RocketChat/Rocket.Chat/pull/16120) by [@ivanape](https://github.com/ivanape)) @@ -12294,7 +12432,7 @@ - Fix: Last message of Group DMs not showing the sender ([#17059](https://github.com/RocketChat/Rocket.Chat/pull/17059)) -- Fix: Make the AppLivechatBridge.createMessage works properly as a promise ([#16941](https://github.com/RocketChat/Rocket.Chat/pull/16941)) +- Fix: Make the AppLivechatBridge.createMessage works properly as a promise ([#16941](https://github.com/RocketChat/Rocket.Chat/pull/16941) by [@renatobecker](https://github.com/renatobecker)) - Fix: Missing checks for Troubleshoot > Disable Notifications ([#17155](https://github.com/RocketChat/Rocket.Chat/pull/17155)) @@ -12312,7 +12450,7 @@ - Improve room types usage ([#16753](https://github.com/RocketChat/Rocket.Chat/pull/16753)) -- Improve: Apps-engine E2E tests ([#16781](https://github.com/RocketChat/Rocket.Chat/pull/16781)) +- Improve: Apps-engine E2E tests ([#16781](https://github.com/RocketChat/Rocket.Chat/pull/16781) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - LingoHub based on develop ([#16837](https://github.com/RocketChat/Rocket.Chat/pull/16837)) @@ -12330,17 +12468,17 @@ - Reduce notifyUser propagation ([#17088](https://github.com/RocketChat/Rocket.Chat/pull/17088)) -- Regression: `users.setStatus` throwing an error if message is empty ([#17036](https://github.com/RocketChat/Rocket.Chat/pull/17036)) +- Regression: `users.setStatus` throwing an error if message is empty ([#17036](https://github.com/RocketChat/Rocket.Chat/pull/17036) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: Admin create user button ([#17186](https://github.com/RocketChat/Rocket.Chat/pull/17186)) - Regression: Block users was not possible for 1:1 DMs ([#17105](https://github.com/RocketChat/Rocket.Chat/pull/17105)) -- Regression: Broken Search if users without DM subscriptions are listed ([#17074](https://github.com/RocketChat/Rocket.Chat/pull/17074)) +- Regression: Broken Search if users without DM subscriptions are listed ([#17074](https://github.com/RocketChat/Rocket.Chat/pull/17074) by [@tassoevan](https://github.com/tassoevan)) - Regression: Can't login with 2FA over REST API when 2FA via Email is enabled ([#17128](https://github.com/RocketChat/Rocket.Chat/pull/17128) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Regression: Check Omnichannel routing system before emitting queue changes ([#17087](https://github.com/RocketChat/Rocket.Chat/pull/17087)) +- Regression: Check Omnichannel routing system before emitting queue changes ([#17087](https://github.com/RocketChat/Rocket.Chat/pull/17087) by [@renatobecker](https://github.com/renatobecker)) - Regression: Collapsible elements didn't respect attachment parameter. ([#16994](https://github.com/RocketChat/Rocket.Chat/pull/16994)) @@ -12362,7 +12500,7 @@ - Regression: Fix issue with opening rooms ([#17028](https://github.com/RocketChat/Rocket.Chat/pull/17028)) -- Regression: Fix omnichannel icon missing on sidebar ([#16775](https://github.com/RocketChat/Rocket.Chat/pull/16775)) +- Regression: Fix omnichannel icon missing on sidebar ([#16775](https://github.com/RocketChat/Rocket.Chat/pull/16775) by [@renatobecker](https://github.com/renatobecker)) - Regression: Fix removing user not removing his 1-on-1 DMs ([#17057](https://github.com/RocketChat/Rocket.Chat/pull/17057)) @@ -12374,19 +12512,19 @@ - Regression: Invite links working for group DMs ([#17056](https://github.com/RocketChat/Rocket.Chat/pull/17056)) -- Regression: OmniChannel agent activity monitor was counting time wrongly ([#16979](https://github.com/RocketChat/Rocket.Chat/pull/16979)) +- Regression: OmniChannel agent activity monitor was counting time wrongly ([#16979](https://github.com/RocketChat/Rocket.Chat/pull/16979) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: omnichannel manual queued sidebarlist ([#17048](https://github.com/RocketChat/Rocket.Chat/pull/17048)) -- Regression: Omnichannel notification on new conversations displaying incorrect information ([#16346](https://github.com/RocketChat/Rocket.Chat/pull/16346)) +- Regression: Omnichannel notification on new conversations displaying incorrect information ([#16346](https://github.com/RocketChat/Rocket.Chat/pull/16346) by [@renatobecker](https://github.com/renatobecker)) - Regression: Overwrite model functions on EE only when license applied ([#17061](https://github.com/RocketChat/Rocket.Chat/pull/17061)) -- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017)) +- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017) by [@renatobecker](https://github.com/renatobecker)) -- Regression: Remove old and closed Omnichannel inquiries ([#17113](https://github.com/RocketChat/Rocket.Chat/pull/17113)) +- Regression: Remove old and closed Omnichannel inquiries ([#17113](https://github.com/RocketChat/Rocket.Chat/pull/17113) by [@renatobecker](https://github.com/renatobecker)) -- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999)) +- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999) by [@renatobecker](https://github.com/renatobecker)) - Regression: Show upload errors ([#16681](https://github.com/RocketChat/Rocket.Chat/pull/16681)) @@ -12404,7 +12542,7 @@ - Update presence package ([#16786](https://github.com/RocketChat/Rocket.Chat/pull/16786)) -- Upgrade Livechat Widget version to 1.4.0 ([#16950](https://github.com/RocketChat/Rocket.Chat/pull/16950)) +- Upgrade Livechat Widget version to 1.4.0 ([#16950](https://github.com/RocketChat/Rocket.Chat/pull/16950) by [@renatobecker](https://github.com/renatobecker)) @@ -12412,7 +12550,9 @@ - [@1rV1N-git](https://github.com/1rV1N-git) - [@GOVINDDIXIT](https://github.com/GOVINDDIXIT) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Nikhil713](https://github.com/Nikhil713) +- [@Rodriq](https://github.com/Rodriq) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@antkaz](https://github.com/antkaz) - [@aryamanpuri](https://github.com/aryamanpuri) @@ -12431,17 +12571,18 @@ - [@lolimay](https://github.com/lolimay) - [@mrsimpson](https://github.com/mrsimpson) - [@ndroo](https://github.com/ndroo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@pmayer](https://github.com/pmayer) +- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) - [@rm-yakovenko](https://github.com/rm-yakovenko) - [@sneakson](https://github.com/sneakson) - [@subham103](https://github.com/subham103) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@PrajvalRaval](https://github.com/PrajvalRaval) -- [@Rodriq](https://github.com/Rodriq) - [@Sing-Li](https://github.com/Sing-Li) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) @@ -12449,11 +12590,8 @@ - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 3.0.13 `2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -12508,7 +12646,7 @@ ### 🐛 Bug fixes -- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132)) +- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132) by [@renatobecker](https://github.com/renatobecker)) - Option BYPASS_OPLOG_VALIDATION not working ([#17143](https://github.com/RocketChat/Rocket.Chat/pull/17143)) @@ -12518,13 +12656,16 @@ - New metric to track oplog queue ([#17142](https://github.com/RocketChat/Rocket.Chat/pull/17142)) -- Release 3.0.11 ([#17148](https://github.com/RocketChat/Rocket.Chat/pull/17148)) +- Release 3.0.11 ([#17148](https://github.com/RocketChat/Rocket.Chat/pull/17148) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@renatobecker](https://github.com/renatobecker) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12618,14 +12759,17 @@ - Reduce notifyUser propagation ([#17088](https://github.com/RocketChat/Rocket.Chat/pull/17088)) -- Regression: Remove model observe that was used to control the status of the Omnichannel agents ([#17078](https://github.com/RocketChat/Rocket.Chat/pull/17078)) +- Regression: Remove model observe that was used to control the status of the Omnichannel agents ([#17078](https://github.com/RocketChat/Rocket.Chat/pull/17078) by [@renatobecker](https://github.com/renatobecker)) +### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12641,11 +12785,11 @@ 🔍 Minor changes -- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017)) +- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@renatobecker](https://github.com/renatobecker) @@ -12660,17 +12804,17 @@ ### 🐛 Bug fixes -- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787)) +- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787) by [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes -- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999)) +- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999) by [@renatobecker](https://github.com/renatobecker))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@renatobecker](https://github.com/renatobecker) @@ -12709,12 +12853,15 @@ - Integrations page pagination ([#16838](https://github.com/RocketChat/Rocket.Chat/pull/16838)) -- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699)) +- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.0.3 @@ -12728,7 +12875,7 @@ ### 🐛 Bug fixes -- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618)) +- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618) by [@renatobecker](https://github.com/renatobecker)) - Language country has been ignored on translation load ([#16757](https://github.com/RocketChat/Rocket.Chat/pull/16757)) @@ -12736,14 +12883,17 @@ - Manual Register use correct state for determining registered ([#16726](https://github.com/RocketChat/Rocket.Chat/pull/16726)) -- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723)) +- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) + +### 👩‍💻👨‍💻 Contributors 😍 + +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) # 3.0.2 @@ -12761,16 +12911,19 @@ - ie11 support ([#16682](https://github.com/RocketChat/Rocket.Chat/pull/16682)) -- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603)) +- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603) by [@renatobecker](https://github.com/renatobecker)) -- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@renatobecker](https://github.com/renatobecker) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.0.1 @@ -12790,7 +12943,7 @@ - Data converters overriding fields added by apps ([#16639](https://github.com/RocketChat/Rocket.Chat/pull/16639)) -- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623)) +- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: Jitsi on external window infinite loop ([#16625](https://github.com/RocketChat/Rocket.Chat/pull/16625)) @@ -12798,9 +12951,12 @@ - UiKit not updating new actionIds received as responses from actions ([#16624](https://github.com/RocketChat/Rocket.Chat/pull/16624)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@d-gubert](https://github.com/d-gubert) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12818,11 +12974,11 @@ - Change apps/icon endpoint to return app's icon and use it to show on Ui Kit modal ([#16522](https://github.com/RocketChat/Rocket.Chat/pull/16522)) -- Filter System messages per room ([#16369](https://github.com/RocketChat/Rocket.Chat/pull/16369) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) +- Filter System messages per room ([#16369](https://github.com/RocketChat/Rocket.Chat/pull/16369) by [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@renatobecker](https://github.com/renatobecker)) -- Hide system messages ([#16243](https://github.com/RocketChat/Rocket.Chat/pull/16243) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) +- Hide system messages ([#16243](https://github.com/RocketChat/Rocket.Chat/pull/16243) by [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@renatobecker](https://github.com/renatobecker)) -- Remove deprecated publications ([#16351](https://github.com/RocketChat/Rocket.Chat/pull/16351)) +- Remove deprecated publications ([#16351](https://github.com/RocketChat/Rocket.Chat/pull/16351) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Removed room counter from sidebar ([#16036](https://github.com/RocketChat/Rocket.Chat/pull/16036)) @@ -12835,9 +12991,9 @@ - Add GUI for customFields in Omnichannel conversations ([#15840](https://github.com/RocketChat/Rocket.Chat/pull/15840) by [@antkaz](https://github.com/antkaz)) -- Button to download admin server info ([#16059](https://github.com/RocketChat/Rocket.Chat/pull/16059)) +- Button to download admin server info ([#16059](https://github.com/RocketChat/Rocket.Chat/pull/16059) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Check the Omnichannel service status per Department ([#16425](https://github.com/RocketChat/Rocket.Chat/pull/16425) by [@lolimay](https://github.com/lolimay)) +- Check the Omnichannel service status per Department ([#16425](https://github.com/RocketChat/Rocket.Chat/pull/16425) by [@lolimay](https://github.com/lolimay) & [@renatobecker](https://github.com/renatobecker)) - Create a user for the Apps during installation ([#15896](https://github.com/RocketChat/Rocket.Chat/pull/15896) by [@Cool-fire](https://github.com/Cool-fire) & [@lolimay](https://github.com/lolimay)) @@ -12847,9 +13003,9 @@ - Setting Top navbar in embedded mode ([#16064](https://github.com/RocketChat/Rocket.Chat/pull/16064)) -- Sort the Omnichannel Chat list according to the user preferences ([#16437](https://github.com/RocketChat/Rocket.Chat/pull/16437)) +- Sort the Omnichannel Chat list according to the user preferences ([#16437](https://github.com/RocketChat/Rocket.Chat/pull/16437) by [@renatobecker](https://github.com/renatobecker)) -- UiKit - Interactive UI elements for Rocket.Chat Apps ([#16048](https://github.com/RocketChat/Rocket.Chat/pull/16048)) +- UiKit - Interactive UI elements for Rocket.Chat Apps ([#16048](https://github.com/RocketChat/Rocket.Chat/pull/16048) by [@tassoevan](https://github.com/tassoevan)) - update on mongo, node and caddy on snap ([#16167](https://github.com/RocketChat/Rocket.Chat/pull/16167)) @@ -12862,7 +13018,7 @@ - Log as info level when Method Rate Limiters are reached ([#16446](https://github.com/RocketChat/Rocket.Chat/pull/16446)) -- Major overhaul on data importers ([#16279](https://github.com/RocketChat/Rocket.Chat/pull/16279)) +- Major overhaul on data importers ([#16279](https://github.com/RocketChat/Rocket.Chat/pull/16279) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Prevent "App user" from being deleted by the admin ([#16373](https://github.com/RocketChat/Rocket.Chat/pull/16373) by [@lolimay](https://github.com/lolimay)) @@ -12872,11 +13028,11 @@ - Set the color of the cancel button on modals to #bdbebf for enhanced visibiity ([#15913](https://github.com/RocketChat/Rocket.Chat/pull/15913) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Show more information related to the Omnichannel room closing data ([#16414](https://github.com/RocketChat/Rocket.Chat/pull/16414)) +- Show more information related to the Omnichannel room closing data ([#16414](https://github.com/RocketChat/Rocket.Chat/pull/16414) by [@renatobecker](https://github.com/renatobecker)) - Status Text form validation ([#16121](https://github.com/RocketChat/Rocket.Chat/pull/16121)) -- Update katex version ([#16393](https://github.com/RocketChat/Rocket.Chat/pull/16393)) +- Update katex version ([#16393](https://github.com/RocketChat/Rocket.Chat/pull/16393) by [@MartinSchoeler](https://github.com/MartinSchoeler)) ### 🐛 Bug fixes @@ -12887,7 +13043,7 @@ - Adding 'lang' tag ([#16375](https://github.com/RocketChat/Rocket.Chat/pull/16375) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- api-bypass-rate-limiter permission was not working ([#16080](https://github.com/RocketChat/Rocket.Chat/pull/16080)) +- api-bypass-rate-limiter permission was not working ([#16080](https://github.com/RocketChat/Rocket.Chat/pull/16080) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - App removal was moving logs to the trash collection ([#16362](https://github.com/RocketChat/Rocket.Chat/pull/16362)) @@ -12907,35 +13063,35 @@ - Error when successfully joining room by invite link ([#16571](https://github.com/RocketChat/Rocket.Chat/pull/16571)) -- FileUpload.getBuffer was not working through the Apps-Engine ([#16234](https://github.com/RocketChat/Rocket.Chat/pull/16234)) +- FileUpload.getBuffer was not working through the Apps-Engine ([#16234](https://github.com/RocketChat/Rocket.Chat/pull/16234) by [@renatobecker](https://github.com/renatobecker)) -- Highlight freezing the UI ([#16378](https://github.com/RocketChat/Rocket.Chat/pull/16378)) +- Highlight freezing the UI ([#16378](https://github.com/RocketChat/Rocket.Chat/pull/16378) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Integrations admin page ([#16183](https://github.com/RocketChat/Rocket.Chat/pull/16183)) -- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233)) +- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Introduce AppLivechatBridge.isOnlineAsync method ([#16467](https://github.com/RocketChat/Rocket.Chat/pull/16467)) +- Introduce AppLivechatBridge.isOnlineAsync method ([#16467](https://github.com/RocketChat/Rocket.Chat/pull/16467) by [@renatobecker](https://github.com/renatobecker)) - Invite links proxy URLs not working when using CDN ([#16581](https://github.com/RocketChat/Rocket.Chat/pull/16581)) -- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176)) +- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Livechat Widget version 1.3.1 ([#16580](https://github.com/RocketChat/Rocket.Chat/pull/16580)) +- Livechat Widget version 1.3.1 ([#16580](https://github.com/RocketChat/Rocket.Chat/pull/16580) by [@renatobecker](https://github.com/renatobecker)) - Login change language button ([#16085](https://github.com/RocketChat/Rocket.Chat/pull/16085) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) - Mail Msg Cancel button not closing the flexbar ([#16263](https://github.com/RocketChat/Rocket.Chat/pull/16263) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Missing edited icon in newly created messages ([#16484](https://github.com/RocketChat/Rocket.Chat/pull/16484)) +- Missing edited icon in newly created messages ([#16484](https://github.com/RocketChat/Rocket.Chat/pull/16484) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433)) +- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Read Message after receive a message and the room is opened ([#16473](https://github.com/RocketChat/Rocket.Chat/pull/16473)) - Readme Help wanted section ([#16197](https://github.com/RocketChat/Rocket.Chat/pull/16197)) -- Result of get avatar from url can be null ([#16123](https://github.com/RocketChat/Rocket.Chat/pull/16123)) +- Result of get avatar from url can be null ([#16123](https://github.com/RocketChat/Rocket.Chat/pull/16123) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Role tags missing - Description field explanation ([#16356](https://github.com/RocketChat/Rocket.Chat/pull/16356) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -12947,7 +13103,7 @@ - Send message with pending messages ([#16474](https://github.com/RocketChat/Rocket.Chat/pull/16474)) -- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147)) +- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147) by [@tassoevan](https://github.com/tassoevan)) - Slack CSV User Importer ([#16253](https://github.com/RocketChat/Rocket.Chat/pull/16253)) @@ -13043,15 +13199,15 @@ - Regression: Update Uikit ([#16515](https://github.com/RocketChat/Rocket.Chat/pull/16515)) -- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444)) +- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Release 2.4.9 ([#16544](https://github.com/RocketChat/Rocket.Chat/pull/16544)) - Remove users.info being called without need ([#16504](https://github.com/RocketChat/Rocket.Chat/pull/16504)) -- Revert importer streamed uploads ([#16465](https://github.com/RocketChat/Rocket.Chat/pull/16465)) +- Revert importer streamed uploads ([#16465](https://github.com/RocketChat/Rocket.Chat/pull/16465) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395)) +- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Send build artifacts to S3 ([#16237](https://github.com/RocketChat/Rocket.Chat/pull/16237)) @@ -13070,29 +13226,29 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Cool-fire](https://github.com/Cool-fire) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@aviral243](https://github.com/aviral243) - [@lolimay](https://github.com/lolimay) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@mrsimpson](https://github.com/mrsimpson) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) +- [@tassoevan](https://github.com/tassoevan) - [@vickyokrm](https://github.com/vickyokrm) ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 2.4.14 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -13106,11 +13262,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -13142,11 +13298,14 @@ ### 🐛 Bug fixes -- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 2.4.9 @@ -13207,19 +13366,22 @@ ### 🐛 Bug fixes -- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433)) +- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes -- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444)) +- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@ggazzo](https://github.com/ggazzo) # 2.4.6 @@ -13236,15 +13398,18 @@ - Fix index creation for apps_logs collection ([#16401](https://github.com/RocketChat/Rocket.Chat/pull/16401)) -- Release 2.4.6 ([#16402](https://github.com/RocketChat/Rocket.Chat/pull/16402)) +- Release 2.4.6 ([#16402](https://github.com/RocketChat/Rocket.Chat/pull/16402) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395)) +- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -13307,7 +13472,7 @@ ### 🐛 Bug fixes -- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176)) +- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Unknown error when sending message if 'Set a User Name to Alias in Message' setting is enabled ([#16347](https://github.com/RocketChat/Rocket.Chat/pull/16347)) @@ -13315,13 +13480,16 @@ 🔍 Minor changes -- Release 2.4.3 ([#16358](https://github.com/RocketChat/Rocket.Chat/pull/16358)) +- Release 2.4.3 ([#16358](https://github.com/RocketChat/Rocket.Chat/pull/16358) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@sampaiodiego](https://github.com/sampaiodiego) # 2.4.2 @@ -13335,9 +13503,9 @@ ### 🐛 Bug fixes -- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233)) +- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147)) +- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147) by [@tassoevan](https://github.com/tassoevan)) - Slack CSV User Importer ([#16253](https://github.com/RocketChat/Rocket.Chat/pull/16253)) @@ -13347,16 +13515,19 @@ 🔍 Minor changes -- Release 2.4.2 ([#16274](https://github.com/RocketChat/Rocket.Chat/pull/16274)) +- Release 2.4.2 ([#16274](https://github.com/RocketChat/Rocket.Chat/pull/16274) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@tassoevan](https://github.com/tassoevan) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 2.4.1 `2020-01-10 · 3 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` @@ -13404,117 +13575,117 @@ ### 🎉 New features -- Apps-Engine event for when a livechat room is closed ([#15837](https://github.com/RocketChat/Rocket.Chat/pull/15837) by [@lolimay](https://github.com/lolimay)) +- Apps-Engine event for when a livechat room is closed ([#15837](https://github.com/RocketChat/Rocket.Chat/pull/15837) by [@lolimay](https://github.com/lolimay) & [@renatobecker](https://github.com/renatobecker)) - Do not print emails in console on production mode ([#15928](https://github.com/RocketChat/Rocket.Chat/pull/15928)) -- Invite links: share a link to invite users ([#15933](https://github.com/RocketChat/Rocket.Chat/pull/15933)) +- Invite links: share a link to invite users ([#15933](https://github.com/RocketChat/Rocket.Chat/pull/15933) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Logout other clients when changing password ([#15927](https://github.com/RocketChat/Rocket.Chat/pull/15927)) ### 🚀 Improvements -- Add deprecate warning in some unused publications ([#15935](https://github.com/RocketChat/Rocket.Chat/pull/15935)) +- Add deprecate warning in some unused publications ([#15935](https://github.com/RocketChat/Rocket.Chat/pull/15935) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Livechat realtime dashboard ([#15792](https://github.com/RocketChat/Rocket.Chat/pull/15792)) +- Livechat realtime dashboard ([#15792](https://github.com/RocketChat/Rocket.Chat/pull/15792) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Move 'Reply in Thread' button from menu to message actions ([#15685](https://github.com/RocketChat/Rocket.Chat/pull/15685) by [@antkaz](https://github.com/antkaz)) -- Notify logged agents when their departments change ([#16033](https://github.com/RocketChat/Rocket.Chat/pull/16033)) +- Notify logged agents when their departments change ([#16033](https://github.com/RocketChat/Rocket.Chat/pull/16033) by [@renatobecker](https://github.com/renatobecker)) -- Replace adminRooms publication by REST ([#15948](https://github.com/RocketChat/Rocket.Chat/pull/15948)) +- Replace adminRooms publication by REST ([#15948](https://github.com/RocketChat/Rocket.Chat/pull/15948) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace customSounds publication by REST ([#15907](https://github.com/RocketChat/Rocket.Chat/pull/15907)) +- Replace customSounds publication by REST ([#15907](https://github.com/RocketChat/Rocket.Chat/pull/15907) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace discussionsOfARoom publication by REST ([#15908](https://github.com/RocketChat/Rocket.Chat/pull/15908)) +- Replace discussionsOfARoom publication by REST ([#15908](https://github.com/RocketChat/Rocket.Chat/pull/15908) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace forgotten livechat:departmentAgents subscriptions ([#15970](https://github.com/RocketChat/Rocket.Chat/pull/15970)) +- Replace forgotten livechat:departmentAgents subscriptions ([#15970](https://github.com/RocketChat/Rocket.Chat/pull/15970) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace fullEmojiData publication by REST ([#15901](https://github.com/RocketChat/Rocket.Chat/pull/15901)) +- Replace fullEmojiData publication by REST ([#15901](https://github.com/RocketChat/Rocket.Chat/pull/15901) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace fullUserData publication by REST ([#15650](https://github.com/RocketChat/Rocket.Chat/pull/15650)) +- Replace fullUserData publication by REST ([#15650](https://github.com/RocketChat/Rocket.Chat/pull/15650) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace fullUserStatusData publication by REST ([#15942](https://github.com/RocketChat/Rocket.Chat/pull/15942)) +- Replace fullUserStatusData publication by REST ([#15942](https://github.com/RocketChat/Rocket.Chat/pull/15942) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace integrations and integrationHistory publications by REST ([#15885](https://github.com/RocketChat/Rocket.Chat/pull/15885)) +- Replace integrations and integrationHistory publications by REST ([#15885](https://github.com/RocketChat/Rocket.Chat/pull/15885) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:customFields to REST ([#15496](https://github.com/RocketChat/Rocket.Chat/pull/15496)) +- Replace livechat:customFields to REST ([#15496](https://github.com/RocketChat/Rocket.Chat/pull/15496) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace livechat:inquiry publication by REST and Streamer ([#15977](https://github.com/RocketChat/Rocket.Chat/pull/15977)) +- Replace livechat:inquiry publication by REST and Streamer ([#15977](https://github.com/RocketChat/Rocket.Chat/pull/15977) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace livechat:managers publication by REST ([#15944](https://github.com/RocketChat/Rocket.Chat/pull/15944)) +- Replace livechat:managers publication by REST ([#15944](https://github.com/RocketChat/Rocket.Chat/pull/15944) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:officeHour publication to REST ([#15503](https://github.com/RocketChat/Rocket.Chat/pull/15503)) +- Replace livechat:officeHour publication to REST ([#15503](https://github.com/RocketChat/Rocket.Chat/pull/15503) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:queue subscription ([#15612](https://github.com/RocketChat/Rocket.Chat/pull/15612)) +- Replace livechat:queue subscription ([#15612](https://github.com/RocketChat/Rocket.Chat/pull/15612) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace livechat:rooms publication by REST ([#15968](https://github.com/RocketChat/Rocket.Chat/pull/15968)) +- Replace livechat:rooms publication by REST ([#15968](https://github.com/RocketChat/Rocket.Chat/pull/15968) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:visitorHistory publication by REST ([#15943](https://github.com/RocketChat/Rocket.Chat/pull/15943)) +- Replace livechat:visitorHistory publication by REST ([#15943](https://github.com/RocketChat/Rocket.Chat/pull/15943) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace oauth publications by REST ([#15878](https://github.com/RocketChat/Rocket.Chat/pull/15878)) +- Replace oauth publications by REST ([#15878](https://github.com/RocketChat/Rocket.Chat/pull/15878) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace roles publication by REST ([#15910](https://github.com/RocketChat/Rocket.Chat/pull/15910)) +- Replace roles publication by REST ([#15910](https://github.com/RocketChat/Rocket.Chat/pull/15910) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace stdout publication by REST ([#16004](https://github.com/RocketChat/Rocket.Chat/pull/16004)) +- Replace stdout publication by REST ([#16004](https://github.com/RocketChat/Rocket.Chat/pull/16004) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace userAutocomplete publication by REST ([#15956](https://github.com/RocketChat/Rocket.Chat/pull/15956)) +- Replace userAutocomplete publication by REST ([#15956](https://github.com/RocketChat/Rocket.Chat/pull/15956) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace userData subscriptions by REST ([#15916](https://github.com/RocketChat/Rocket.Chat/pull/15916)) +- Replace userData subscriptions by REST ([#15916](https://github.com/RocketChat/Rocket.Chat/pull/15916) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace webdavAccounts publication by REST ([#15926](https://github.com/RocketChat/Rocket.Chat/pull/15926)) +- Replace webdavAccounts publication by REST ([#15926](https://github.com/RocketChat/Rocket.Chat/pull/15926) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Sorting on livechat analytics queries were wrong ([#16021](https://github.com/RocketChat/Rocket.Chat/pull/16021)) +- Sorting on livechat analytics queries were wrong ([#16021](https://github.com/RocketChat/Rocket.Chat/pull/16021) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Update ui for Roles field ([#15888](https://github.com/RocketChat/Rocket.Chat/pull/15888) by [@antkaz](https://github.com/antkaz)) -- Validate user identity on send message process ([#15887](https://github.com/RocketChat/Rocket.Chat/pull/15887)) +- Validate user identity on send message process ([#15887](https://github.com/RocketChat/Rocket.Chat/pull/15887) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) ### 🐛 Bug fixes - Add time format for latest message on the sidebar ([#15930](https://github.com/RocketChat/Rocket.Chat/pull/15930) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Added Join button to Read Only rooms. ([#16016](https://github.com/RocketChat/Rocket.Chat/pull/16016)) +- Added Join button to Read Only rooms. ([#16016](https://github.com/RocketChat/Rocket.Chat/pull/16016) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Admin menu not showing after renamed integration permissions ([#15937](https://github.com/RocketChat/Rocket.Chat/pull/15937) by [@n-se](https://github.com/n-se)) -- Admin Setting descriptions and Storybook ([#15994](https://github.com/RocketChat/Rocket.Chat/pull/15994)) +- Admin Setting descriptions and Storybook ([#15994](https://github.com/RocketChat/Rocket.Chat/pull/15994) by [@tassoevan](https://github.com/tassoevan)) -- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934)) +- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934) by [@tassoevan](https://github.com/tassoevan)) - Auto load image user preference ([#15895](https://github.com/RocketChat/Rocket.Chat/pull/15895)) - Changed renderMessage priority, fixed Katex on/off setting ([#16012](https://github.com/RocketChat/Rocket.Chat/pull/16012)) -- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898)) +- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898) by [@renatobecker](https://github.com/renatobecker)) - Don't throw an error when a message is prevented from apps engine ([#15850](https://github.com/RocketChat/Rocket.Chat/pull/15850) by [@wreiske](https://github.com/wreiske)) -- Dropzone being stuck when dragging to thread ([#16006](https://github.com/RocketChat/Rocket.Chat/pull/16006)) +- Dropzone being stuck when dragging to thread ([#16006](https://github.com/RocketChat/Rocket.Chat/pull/16006) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Empty security section when 2fa is disabled ([#16009](https://github.com/RocketChat/Rocket.Chat/pull/16009)) +- Empty security section when 2fa is disabled ([#16009](https://github.com/RocketChat/Rocket.Chat/pull/16009) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Error of bind environment on user data export ([#15985](https://github.com/RocketChat/Rocket.Chat/pull/15985)) -- Fix sort livechat rooms ([#16001](https://github.com/RocketChat/Rocket.Chat/pull/16001)) +- Fix sort livechat rooms ([#16001](https://github.com/RocketChat/Rocket.Chat/pull/16001) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Guest's name field missing when forwarding livechat rooms ([#15991](https://github.com/RocketChat/Rocket.Chat/pull/15991)) +- Guest's name field missing when forwarding livechat rooms ([#15991](https://github.com/RocketChat/Rocket.Chat/pull/15991) by [@renatobecker](https://github.com/renatobecker)) - Importer: Variable name appearing instead of it's value ([#16010](https://github.com/RocketChat/Rocket.Chat/pull/16010) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Incorrect translation key on Livechat Appearance template ([#15975](https://github.com/RocketChat/Rocket.Chat/pull/15975) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957)) +- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Livechat build without NodeJS installed ([#15903](https://github.com/RocketChat/Rocket.Chat/pull/15903) by [@localguru](https://github.com/localguru)) -- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915)) +- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915) by [@renatobecker](https://github.com/renatobecker)) -- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897)) +- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897) by [@renatobecker](https://github.com/renatobecker)) -- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966)) +- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966) by [@renatobecker](https://github.com/renatobecker)) - Message list scrolling to bottom on reactions ([#16018](https://github.com/RocketChat/Rocket.Chat/pull/16018) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -13526,7 +13697,7 @@ - Server crash on sync with no response ([#15919](https://github.com/RocketChat/Rocket.Chat/pull/15919)) -- Thread Replies in Search ([#15841](https://github.com/RocketChat/Rocket.Chat/pull/15841)) +- Thread Replies in Search ([#15841](https://github.com/RocketChat/Rocket.Chat/pull/15841) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - width of upload-progress-text ([#16023](https://github.com/RocketChat/Rocket.Chat/pull/16023) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -13536,7 +13707,7 @@ 🔍 Minor changes -- [CHORE] Replace findOne with findOneById methods (Omnichannel) ([#15894](https://github.com/RocketChat/Rocket.Chat/pull/15894)) +- [CHORE] Replace findOne with findOneById methods (Omnichannel) ([#15894](https://github.com/RocketChat/Rocket.Chat/pull/15894) by [@renatobecker](https://github.com/renatobecker)) - Change migration number 169 <-> 170 ([#15940](https://github.com/RocketChat/Rocket.Chat/pull/15940)) @@ -13562,7 +13733,7 @@ - Regression: Missing button to copy Invite links ([#16084](https://github.com/RocketChat/Rocket.Chat/pull/16084)) -- Regression: Update components ([#16053](https://github.com/RocketChat/Rocket.Chat/pull/16053)) +- Regression: Update components ([#16053](https://github.com/RocketChat/Rocket.Chat/pull/16053) by [@tassoevan](https://github.com/tassoevan)) - Remove unnecessary cron starts ([#15989](https://github.com/RocketChat/Rocket.Chat/pull/15989)) @@ -13578,6 +13749,8 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@breaking-let](https://github.com/breaking-let) @@ -13586,23 +13759,21 @@ - [@lolimay](https://github.com/lolimay) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@n-se](https://github.com/n-se) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) +- [@tassoevan](https://github.com/tassoevan) - [@wreiske](https://github.com/wreiske) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 2.3.3 `2020-01-10 · 1 🐛 · 2 👩‍💻👨‍💻` @@ -13632,11 +13803,11 @@ ### 🐛 Bug fixes -- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957)) +- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966)) +- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@renatobecker](https://github.com/renatobecker) @@ -13654,25 +13825,25 @@ - Admin menu not showing after renamed integration permissions ([#15937](https://github.com/RocketChat/Rocket.Chat/pull/15937) by [@n-se](https://github.com/n-se)) -- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934)) +- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934) by [@tassoevan](https://github.com/tassoevan)) - Auto load image user preference ([#15895](https://github.com/RocketChat/Rocket.Chat/pull/15895)) -- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898)) +- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898) by [@renatobecker](https://github.com/renatobecker)) -- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915)) +- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915) by [@renatobecker](https://github.com/renatobecker)) -- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897)) +- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897) by [@renatobecker](https://github.com/renatobecker)) ### 👩‍💻👨‍💻 Contributors 😍 - [@n-se](https://github.com/n-se) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) # 2.3.0 `2019-11-27 · 13 🎉 · 17 🚀 · 26 🐛 · 17 🔍 · 17 👩‍💻👨‍💻` @@ -13685,27 +13856,27 @@ ### 🎉 New features -- Add a new stream to emit and listen room data events ([#15770](https://github.com/RocketChat/Rocket.Chat/pull/15770)) +- Add a new stream to emit and listen room data events ([#15770](https://github.com/RocketChat/Rocket.Chat/pull/15770) by [@renatobecker](https://github.com/renatobecker)) -- Add ability to users reset their own E2E key ([#15777](https://github.com/RocketChat/Rocket.Chat/pull/15777)) +- Add ability to users reset their own E2E key ([#15777](https://github.com/RocketChat/Rocket.Chat/pull/15777) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - add delete-own-message permission ([#15512](https://github.com/RocketChat/Rocket.Chat/pull/15512)) -- Add forms to view and edit Livechat agents info ([#15703](https://github.com/RocketChat/Rocket.Chat/pull/15703)) +- Add forms to view and edit Livechat agents info ([#15703](https://github.com/RocketChat/Rocket.Chat/pull/15703) by [@renatobecker](https://github.com/renatobecker)) -- Allow Regexes on SAML user field mapping ([#15743](https://github.com/RocketChat/Rocket.Chat/pull/15743)) +- Allow Regexes on SAML user field mapping ([#15743](https://github.com/RocketChat/Rocket.Chat/pull/15743) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Livechat analytics ([#15230](https://github.com/RocketChat/Rocket.Chat/pull/15230)) +- Livechat analytics ([#15230](https://github.com/RocketChat/Rocket.Chat/pull/15230) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Livechat analytics functions ([#15666](https://github.com/RocketChat/Rocket.Chat/pull/15666)) +- Livechat analytics functions ([#15666](https://github.com/RocketChat/Rocket.Chat/pull/15666) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Notify users when their email address change ([#15828](https://github.com/RocketChat/Rocket.Chat/pull/15828)) +- Notify users when their email address change ([#15828](https://github.com/RocketChat/Rocket.Chat/pull/15828) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Option for admins to set a random password to a user ([#15818](https://github.com/RocketChat/Rocket.Chat/pull/15818)) +- Option for admins to set a random password to a user ([#15818](https://github.com/RocketChat/Rocket.Chat/pull/15818) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Option on livechat departments to ensure a chat has tags before closing ([#15752](https://github.com/RocketChat/Rocket.Chat/pull/15752)) +- Option on livechat departments to ensure a chat has tags before closing ([#15752](https://github.com/RocketChat/Rocket.Chat/pull/15752) by [@renatobecker](https://github.com/renatobecker)) -- SAML login without popup windows ([#15836](https://github.com/RocketChat/Rocket.Chat/pull/15836)) +- SAML login without popup windows ([#15836](https://github.com/RocketChat/Rocket.Chat/pull/15836) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Setting to dismiss desktop notification only after interaction ([#14807](https://github.com/RocketChat/Rocket.Chat/pull/14807) by [@mpdbl](https://github.com/mpdbl)) @@ -13714,50 +13885,50 @@ ### 🚀 Improvements -- Add more fields to iframe integration event `unread-changed-by-subscription` ([#15786](https://github.com/RocketChat/Rocket.Chat/pull/15786)) +- Add more fields to iframe integration event `unread-changed-by-subscription` ([#15786](https://github.com/RocketChat/Rocket.Chat/pull/15786) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Administration UI - React and Fuselage components ([#15452](https://github.com/RocketChat/Rocket.Chat/pull/15452)) +- Administration UI - React and Fuselage components ([#15452](https://github.com/RocketChat/Rocket.Chat/pull/15452) by [@tassoevan](https://github.com/tassoevan)) -- Allow dragging of images and text from browsers ([#15691](https://github.com/RocketChat/Rocket.Chat/pull/15691)) +- Allow dragging of images and text from browsers ([#15691](https://github.com/RocketChat/Rocket.Chat/pull/15691) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) -- dynamic import livechat views ([#15775](https://github.com/RocketChat/Rocket.Chat/pull/15775)) +- dynamic import livechat views ([#15775](https://github.com/RocketChat/Rocket.Chat/pull/15775) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Lazyload Chart.js ([#15764](https://github.com/RocketChat/Rocket.Chat/pull/15764)) +- Lazyload Chart.js ([#15764](https://github.com/RocketChat/Rocket.Chat/pull/15764) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Lazyload qrcode lib ([#15741](https://github.com/RocketChat/Rocket.Chat/pull/15741)) +- Lazyload qrcode lib ([#15741](https://github.com/RocketChat/Rocket.Chat/pull/15741) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Make push notification batchsize and interval configurable ([#15804](https://github.com/RocketChat/Rocket.Chat/pull/15804) by [@Exordian](https://github.com/Exordian)) -- Remove "EmojiCustom" unused subscription ([#15658](https://github.com/RocketChat/Rocket.Chat/pull/15658)) +- Remove "EmojiCustom" unused subscription ([#15658](https://github.com/RocketChat/Rocket.Chat/pull/15658) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - remove computations inside messageAttachment ([#15716](https://github.com/RocketChat/Rocket.Chat/pull/15716)) -- Replace livechat:departmentAgents subscription to REST ([#15529](https://github.com/RocketChat/Rocket.Chat/pull/15529)) +- Replace livechat:departmentAgents subscription to REST ([#15529](https://github.com/RocketChat/Rocket.Chat/pull/15529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:externalMessages publication by REST ([#15643](https://github.com/RocketChat/Rocket.Chat/pull/15643)) +- Replace livechat:externalMessages publication by REST ([#15643](https://github.com/RocketChat/Rocket.Chat/pull/15643) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:pagesvisited publication by REST ([#15629](https://github.com/RocketChat/Rocket.Chat/pull/15629)) +- Replace livechat:pagesvisited publication by REST ([#15629](https://github.com/RocketChat/Rocket.Chat/pull/15629) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:visitorInfo publication by REST ([#15639](https://github.com/RocketChat/Rocket.Chat/pull/15639)) +- Replace livechat:visitorInfo publication by REST ([#15639](https://github.com/RocketChat/Rocket.Chat/pull/15639) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace personalAccessTokens publication by REST ([#15644](https://github.com/RocketChat/Rocket.Chat/pull/15644)) +- Replace personalAccessTokens publication by REST ([#15644](https://github.com/RocketChat/Rocket.Chat/pull/15644) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace snippetedMessage publication by REST ([#15679](https://github.com/RocketChat/Rocket.Chat/pull/15679)) +- Replace snippetedMessage publication by REST ([#15679](https://github.com/RocketChat/Rocket.Chat/pull/15679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Replace snipptedMessages publication by REST ([#15678](https://github.com/RocketChat/Rocket.Chat/pull/15678)) +- Replace snipptedMessages publication by REST ([#15678](https://github.com/RocketChat/Rocket.Chat/pull/15678) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Unfollow own threads ([#15740](https://github.com/RocketChat/Rocket.Chat/pull/15740)) ### 🐛 Bug fixes -- Add button to reset.css ([#15773](https://github.com/RocketChat/Rocket.Chat/pull/15773)) +- Add button to reset.css ([#15773](https://github.com/RocketChat/Rocket.Chat/pull/15773) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Add livechat agents into departments ([#15732](https://github.com/RocketChat/Rocket.Chat/pull/15732)) +- Add livechat agents into departments ([#15732](https://github.com/RocketChat/Rocket.Chat/pull/15732) by [@renatobecker](https://github.com/renatobecker)) -- Apply server side filters on Livechat lists ([#15717](https://github.com/RocketChat/Rocket.Chat/pull/15717)) +- Apply server side filters on Livechat lists ([#15717](https://github.com/RocketChat/Rocket.Chat/pull/15717) by [@renatobecker](https://github.com/renatobecker)) -- Block Show_Setup_Wizard Option ([#15623](https://github.com/RocketChat/Rocket.Chat/pull/15623)) +- Block Show_Setup_Wizard Option ([#15623](https://github.com/RocketChat/Rocket.Chat/pull/15623) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Changed cmsPage Style ([#15632](https://github.com/RocketChat/Rocket.Chat/pull/15632)) @@ -13765,59 +13936,59 @@ - Duplicate label 'Hide Avatars' in accounts ([#15694](https://github.com/RocketChat/Rocket.Chat/pull/15694) by [@rajvaibhavdubey](https://github.com/rajvaibhavdubey)) -- Edit in thread ([#15640](https://github.com/RocketChat/Rocket.Chat/pull/15640)) +- Edit in thread ([#15640](https://github.com/RocketChat/Rocket.Chat/pull/15640) by [@tassoevan](https://github.com/tassoevan)) -- Error when exporting user data ([#15654](https://github.com/RocketChat/Rocket.Chat/pull/15654)) +- Error when exporting user data ([#15654](https://github.com/RocketChat/Rocket.Chat/pull/15654) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Forward Livechat UI and the related permissions ([#15718](https://github.com/RocketChat/Rocket.Chat/pull/15718)) +- Forward Livechat UI and the related permissions ([#15718](https://github.com/RocketChat/Rocket.Chat/pull/15718) by [@renatobecker](https://github.com/renatobecker)) -- Ignore file uploads from message box if text/plain content is being pasted ([#15631](https://github.com/RocketChat/Rocket.Chat/pull/15631)) +- Ignore file uploads from message box if text/plain content is being pasted ([#15631](https://github.com/RocketChat/Rocket.Chat/pull/15631) by [@tassoevan](https://github.com/tassoevan)) -- line-height to show entire letters ([#15581](https://github.com/RocketChat/Rocket.Chat/pull/15581) by [@nstseek](https://github.com/nstseek)) +- line-height to show entire letters ([#15581](https://github.com/RocketChat/Rocket.Chat/pull/15581) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@nstseek](https://github.com/nstseek)) -- Livechat transfer history messages ([#15780](https://github.com/RocketChat/Rocket.Chat/pull/15780)) +- Livechat transfer history messages ([#15780](https://github.com/RocketChat/Rocket.Chat/pull/15780) by [@renatobecker](https://github.com/renatobecker)) - Livechat webhook broken when sending an image ([#15699](https://github.com/RocketChat/Rocket.Chat/pull/15699) by [@tatosjb](https://github.com/tatosjb)) -- Mentions before blockquote ([#15774](https://github.com/RocketChat/Rocket.Chat/pull/15774)) +- Mentions before blockquote ([#15774](https://github.com/RocketChat/Rocket.Chat/pull/15774) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Missing Privacy Policy Agree on register ([#15832](https://github.com/RocketChat/Rocket.Chat/pull/15832)) -- Not valid relative URLs on message attachments ([#15651](https://github.com/RocketChat/Rocket.Chat/pull/15651)) +- Not valid relative URLs on message attachments ([#15651](https://github.com/RocketChat/Rocket.Chat/pull/15651) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Null value at Notifications Preferences tab ([#15638](https://github.com/RocketChat/Rocket.Chat/pull/15638)) +- Null value at Notifications Preferences tab ([#15638](https://github.com/RocketChat/Rocket.Chat/pull/15638) by [@tassoevan](https://github.com/tassoevan)) -- Pasting images on reply as thread ([#15811](https://github.com/RocketChat/Rocket.Chat/pull/15811)) +- Pasting images on reply as thread ([#15811](https://github.com/RocketChat/Rocket.Chat/pull/15811) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Prevent agent last message undefined ([#15809](https://github.com/RocketChat/Rocket.Chat/pull/15809)) +- Prevent agent last message undefined ([#15809](https://github.com/RocketChat/Rocket.Chat/pull/15809) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Push: fix notification priority for google (FCM) ([#15803](https://github.com/RocketChat/Rocket.Chat/pull/15803) by [@Exordian](https://github.com/Exordian)) -- REST endpoint `chat.syncMessages` returning an error with deleted messages ([#15824](https://github.com/RocketChat/Rocket.Chat/pull/15824)) +- REST endpoint `chat.syncMessages` returning an error with deleted messages ([#15824](https://github.com/RocketChat/Rocket.Chat/pull/15824) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Sending messages to livechat rooms without a subscription ([#15707](https://github.com/RocketChat/Rocket.Chat/pull/15707)) +- Sending messages to livechat rooms without a subscription ([#15707](https://github.com/RocketChat/Rocket.Chat/pull/15707) by [@renatobecker](https://github.com/renatobecker)) - Sidebar font color was not respecting theming ([#15745](https://github.com/RocketChat/Rocket.Chat/pull/15745) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- typo on PT-BR translation ([#15645](https://github.com/RocketChat/Rocket.Chat/pull/15645)) +- typo on PT-BR translation ([#15645](https://github.com/RocketChat/Rocket.Chat/pull/15645) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Use Media Devices API to guess if a microphone is not available ([#15636](https://github.com/RocketChat/Rocket.Chat/pull/15636)) +- Use Media Devices API to guess if a microphone is not available ([#15636](https://github.com/RocketChat/Rocket.Chat/pull/15636) by [@tassoevan](https://github.com/tassoevan))
🔍 Minor changes -- [CHORE] Add lingohub to readme ([#15849](https://github.com/RocketChat/Rocket.Chat/pull/15849)) +- [CHORE] Add lingohub to readme ([#15849](https://github.com/RocketChat/Rocket.Chat/pull/15849) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- [REGRESSION] Add livechat room type to the room's file list ([#15795](https://github.com/RocketChat/Rocket.Chat/pull/15795)) +- [REGRESSION] Add livechat room type to the room's file list ([#15795](https://github.com/RocketChat/Rocket.Chat/pull/15795) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix Livechat duplicated templates error ([#15869](https://github.com/RocketChat/Rocket.Chat/pull/15869)) +- Fix Livechat duplicated templates error ([#15869](https://github.com/RocketChat/Rocket.Chat/pull/15869) by [@renatobecker](https://github.com/renatobecker)) - Fix notification migration ([#15783](https://github.com/RocketChat/Rocket.Chat/pull/15783)) -- Improve LDAP Login Fallback setting description in portuguese ([#15655](https://github.com/RocketChat/Rocket.Chat/pull/15655)) +- Improve LDAP Login Fallback setting description in portuguese ([#15655](https://github.com/RocketChat/Rocket.Chat/pull/15655) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Improvements to random password field on user edit/creation ([#15870](https://github.com/RocketChat/Rocket.Chat/pull/15870)) +- Improvements to random password field on user edit/creation ([#15870](https://github.com/RocketChat/Rocket.Chat/pull/15870) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - LingoHub based on develop ([#15822](https://github.com/RocketChat/Rocket.Chat/pull/15822)) @@ -13831,11 +14002,11 @@ - Regression: fix admin instances info page ([#15772](https://github.com/RocketChat/Rocket.Chat/pull/15772)) -- Regression: Fix hide avatars in side bar preference ([#15709](https://github.com/RocketChat/Rocket.Chat/pull/15709)) +- Regression: Fix hide avatars in side bar preference ([#15709](https://github.com/RocketChat/Rocket.Chat/pull/15709) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: messageAttachments inside messageAttachments not receiving settings ([#15733](https://github.com/RocketChat/Rocket.Chat/pull/15733)) -- Remove unused permission to reset users' E2E key ([#15860](https://github.com/RocketChat/Rocket.Chat/pull/15860)) +- Remove unused permission to reset users' E2E key ([#15860](https://github.com/RocketChat/Rocket.Chat/pull/15860) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Remove yarn.lock ([#15689](https://github.com/RocketChat/Rocket.Chat/pull/15689)) @@ -13846,25 +14017,25 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Exordian](https://github.com/Exordian) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@mpdbl](https://github.com/mpdbl) - [@nstseek](https://github.com/nstseek) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rajvaibhavdubey](https://github.com/rajvaibhavdubey) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@tatosjb](https://github.com/tatosjb) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 2.2.1 `2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -13897,68 +14068,68 @@ ### 🎉 New features -- Accept GIFs and SVGs for Avatars converting them to PNG and keep transparency of PNGs ([#11385](https://github.com/RocketChat/Rocket.Chat/pull/11385)) +- Accept GIFs and SVGs for Avatars converting them to PNG and keep transparency of PNGs ([#11385](https://github.com/RocketChat/Rocket.Chat/pull/11385) by [@tassoevan](https://github.com/tassoevan)) -- Add new Livechat appearance setting to set the conversation finished message ([#15577](https://github.com/RocketChat/Rocket.Chat/pull/15577)) +- Add new Livechat appearance setting to set the conversation finished message ([#15577](https://github.com/RocketChat/Rocket.Chat/pull/15577) by [@renatobecker](https://github.com/renatobecker)) -- Add option to enable X-Frame-options header to avoid loading inside any Iframe ([#14698](https://github.com/RocketChat/Rocket.Chat/pull/14698)) +- Add option to enable X-Frame-options header to avoid loading inside any Iframe ([#14698](https://github.com/RocketChat/Rocket.Chat/pull/14698) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add users.requestDataDownload API endpoint ([#14428](https://github.com/RocketChat/Rocket.Chat/pull/14428) by [@Hudell](https://github.com/Hudell) & [@ubarsaiyan](https://github.com/ubarsaiyan)) +- Add users.requestDataDownload API endpoint ([#14428](https://github.com/RocketChat/Rocket.Chat/pull/14428) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ubarsaiyan](https://github.com/ubarsaiyan)) -- Added file type filter to RoomFiles ([#15289](https://github.com/RocketChat/Rocket.Chat/pull/15289) by [@juanpetterson](https://github.com/juanpetterson)) +- Added file type filter to RoomFiles ([#15289](https://github.com/RocketChat/Rocket.Chat/pull/15289) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@juanpetterson](https://github.com/juanpetterson) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) -- Assign new Livechat conversations to bot agents first ([#15317](https://github.com/RocketChat/Rocket.Chat/pull/15317)) +- Assign new Livechat conversations to bot agents first ([#15317](https://github.com/RocketChat/Rocket.Chat/pull/15317) by [@renatobecker](https://github.com/renatobecker)) -- Check if agent can receive new livechat conversations when its status is away/idle ([#15451](https://github.com/RocketChat/Rocket.Chat/pull/15451)) +- Check if agent can receive new livechat conversations when its status is away/idle ([#15451](https://github.com/RocketChat/Rocket.Chat/pull/15451) by [@renatobecker](https://github.com/renatobecker)) -- close emoji box using Keyboard Escape key ([#13956](https://github.com/RocketChat/Rocket.Chat/pull/13956) by [@mohamedar97](https://github.com/mohamedar97)) +- close emoji box using Keyboard Escape key ([#13956](https://github.com/RocketChat/Rocket.Chat/pull/13956) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@mohamedar97](https://github.com/mohamedar97)) -- Import DMs from CSV files ([#15534](https://github.com/RocketChat/Rocket.Chat/pull/15534)) +- Import DMs from CSV files ([#15534](https://github.com/RocketChat/Rocket.Chat/pull/15534) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Import SAML language and auto join SAML channels ([#14203](https://github.com/RocketChat/Rocket.Chat/pull/14203) by [@Hudell](https://github.com/Hudell) & [@unixtam](https://github.com/unixtam)) +- Import SAML language and auto join SAML channels ([#14203](https://github.com/RocketChat/Rocket.Chat/pull/14203) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@unixtam](https://github.com/unixtam)) -- Remove all closed Livechat chats ([#13991](https://github.com/RocketChat/Rocket.Chat/pull/13991) by [@knrt10](https://github.com/knrt10)) +- Remove all closed Livechat chats ([#13991](https://github.com/RocketChat/Rocket.Chat/pull/13991) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) -- Separate integration roles ([#13902](https://github.com/RocketChat/Rocket.Chat/pull/13902)) +- Separate integration roles ([#13902](https://github.com/RocketChat/Rocket.Chat/pull/13902) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Thread support to apps slashcommands and slashcommand previews ([#15574](https://github.com/RocketChat/Rocket.Chat/pull/15574)) -- Update livechat widget version to 1.2.5 ([#15600](https://github.com/RocketChat/Rocket.Chat/pull/15600)) +- Update livechat widget version to 1.2.5 ([#15600](https://github.com/RocketChat/Rocket.Chat/pull/15600) by [@renatobecker](https://github.com/renatobecker)) ### 🚀 Improvements - Cache hasPermissions ([#15589](https://github.com/RocketChat/Rocket.Chat/pull/15589)) -- Detach React components from Meteor API ([#15482](https://github.com/RocketChat/Rocket.Chat/pull/15482)) +- Detach React components from Meteor API ([#15482](https://github.com/RocketChat/Rocket.Chat/pull/15482) by [@tassoevan](https://github.com/tassoevan)) -- Disable edit visitor's phone number in SMS conversations ([#15593](https://github.com/RocketChat/Rocket.Chat/pull/15593)) +- Disable edit visitor's phone number in SMS conversations ([#15593](https://github.com/RocketChat/Rocket.Chat/pull/15593) by [@renatobecker](https://github.com/renatobecker)) -- Lazyload Katex Package ([#15398](https://github.com/RocketChat/Rocket.Chat/pull/15398)) +- Lazyload Katex Package ([#15398](https://github.com/RocketChat/Rocket.Chat/pull/15398) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Replace `livechat:departments` publication by REST Calls ([#15478](https://github.com/RocketChat/Rocket.Chat/pull/15478)) +- Replace `livechat:departments` publication by REST Calls ([#15478](https://github.com/RocketChat/Rocket.Chat/pull/15478) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace `livechat:triggers` publication by REST calls ([#15507](https://github.com/RocketChat/Rocket.Chat/pull/15507)) +- Replace `livechat:triggers` publication by REST calls ([#15507](https://github.com/RocketChat/Rocket.Chat/pull/15507) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:agents pub by REST calls ([#15490](https://github.com/RocketChat/Rocket.Chat/pull/15490)) +- Replace livechat:agents pub by REST calls ([#15490](https://github.com/RocketChat/Rocket.Chat/pull/15490) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:appearance pub to REST ([#15510](https://github.com/RocketChat/Rocket.Chat/pull/15510)) +- Replace livechat:appearance pub to REST ([#15510](https://github.com/RocketChat/Rocket.Chat/pull/15510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace livechat:integration publication by REST ([#15607](https://github.com/RocketChat/Rocket.Chat/pull/15607)) +- Replace livechat:integration publication by REST ([#15607](https://github.com/RocketChat/Rocket.Chat/pull/15607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace mentionedMessages publication to REST ([#15540](https://github.com/RocketChat/Rocket.Chat/pull/15540)) +- Replace mentionedMessages publication to REST ([#15540](https://github.com/RocketChat/Rocket.Chat/pull/15540) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace pinned messages subscription ([#15544](https://github.com/RocketChat/Rocket.Chat/pull/15544)) +- Replace pinned messages subscription ([#15544](https://github.com/RocketChat/Rocket.Chat/pull/15544) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace roomFilesWithSearchText subscription ([#15550](https://github.com/RocketChat/Rocket.Chat/pull/15550)) +- Replace roomFilesWithSearchText subscription ([#15550](https://github.com/RocketChat/Rocket.Chat/pull/15550) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Replace some livechat:rooms subscriptions ([#15532](https://github.com/RocketChat/Rocket.Chat/pull/15532)) +- Replace some livechat:rooms subscriptions ([#15532](https://github.com/RocketChat/Rocket.Chat/pull/15532) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Replace starred messages subscription ([#15548](https://github.com/RocketChat/Rocket.Chat/pull/15548)) +- Replace starred messages subscription ([#15548](https://github.com/RocketChat/Rocket.Chat/pull/15548) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Secure cookies when using HTTPS connection ([#15500](https://github.com/RocketChat/Rocket.Chat/pull/15500)) -- Update Fuselage components on SetupWizard ([#15457](https://github.com/RocketChat/Rocket.Chat/pull/15457)) +- Update Fuselage components on SetupWizard ([#15457](https://github.com/RocketChat/Rocket.Chat/pull/15457) by [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes @@ -13967,13 +14138,13 @@ - Add permissions for slashCommands ([#15525](https://github.com/RocketChat/Rocket.Chat/pull/15525) by [@antkaz](https://github.com/antkaz)) -- Adding "Promise.await" in "livechat/message" endpoint ([#15541](https://github.com/RocketChat/Rocket.Chat/pull/15541) by [@rodrigokamada](https://github.com/rodrigokamada)) +- Adding "Promise.await" in "livechat/message" endpoint ([#15541](https://github.com/RocketChat/Rocket.Chat/pull/15541) by [@renatobecker](https://github.com/renatobecker) & [@rodrigokamada](https://github.com/rodrigokamada)) - adjustments for tooltips to show room name instead of id ([#14084](https://github.com/RocketChat/Rocket.Chat/pull/14084) by [@mohamedar97](https://github.com/mohamedar97)) -- Compact view ([#15416](https://github.com/RocketChat/Rocket.Chat/pull/15416)) +- Compact view ([#15416](https://github.com/RocketChat/Rocket.Chat/pull/15416) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Deny editing visitor's phone number in SMS conversations ([#15602](https://github.com/RocketChat/Rocket.Chat/pull/15602)) +- Deny editing visitor's phone number in SMS conversations ([#15602](https://github.com/RocketChat/Rocket.Chat/pull/15602) by [@renatobecker](https://github.com/renatobecker)) - Dynamic import of JS files were not working correctly ([#15598](https://github.com/RocketChat/Rocket.Chat/pull/15598)) @@ -13983,9 +14154,9 @@ - Fix a typo on Alpha API `e2e.setUserPublicAndPivateKeys` renaming to `e2e.setUserPublicAndPrivateKeys` ([#13334](https://github.com/RocketChat/Rocket.Chat/pull/13334)) -- Incorrect display of the button "Invite users" ([#15594](https://github.com/RocketChat/Rocket.Chat/pull/15594)) +- Incorrect display of the button "Invite users" ([#15594](https://github.com/RocketChat/Rocket.Chat/pull/15594) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Issues saving audio notifications ([#15428](https://github.com/RocketChat/Rocket.Chat/pull/15428) by [@scrivna](https://github.com/scrivna)) +- Issues saving audio notifications ([#15428](https://github.com/RocketChat/Rocket.Chat/pull/15428) by [@scrivna](https://github.com/scrivna) & [@tassoevan](https://github.com/tassoevan)) - Japanese translation for run import ([#15515](https://github.com/RocketChat/Rocket.Chat/pull/15515) by [@yusukeh0710](https://github.com/yusukeh0710)) @@ -13993,9 +14164,9 @@ - Method saveUser is not using password policy ([#15445](https://github.com/RocketChat/Rocket.Chat/pull/15445)) -- Missing ending slash on publicFilePath of fileUpload ([#15506](https://github.com/RocketChat/Rocket.Chat/pull/15506)) +- Missing ending slash on publicFilePath of fileUpload ([#15506](https://github.com/RocketChat/Rocket.Chat/pull/15506) by [@renatobecker](https://github.com/renatobecker)) -- Promise await for sendMessage in livechat/messages endpoint ([#15460](https://github.com/RocketChat/Rocket.Chat/pull/15460) by [@hmagarotto](https://github.com/hmagarotto)) +- Promise await for sendMessage in livechat/messages endpoint ([#15460](https://github.com/RocketChat/Rocket.Chat/pull/15460) by [@hmagarotto](https://github.com/hmagarotto) & [@renatobecker](https://github.com/renatobecker)) - Read Recepts was not working ([#15603](https://github.com/RocketChat/Rocket.Chat/pull/15603)) @@ -14005,11 +14176,11 @@ - Self-XSS in validation functionality ([#15564](https://github.com/RocketChat/Rocket.Chat/pull/15564)) -- Showing announcement back ([#15615](https://github.com/RocketChat/Rocket.Chat/pull/15615)) +- Showing announcement back ([#15615](https://github.com/RocketChat/Rocket.Chat/pull/15615) by [@tassoevan](https://github.com/tassoevan)) - Typo in autotranslate method ([#15344](https://github.com/RocketChat/Rocket.Chat/pull/15344) by [@Montel](https://github.com/Montel)) -- Update apps engine rooms converter to use transformMappedData ([#15546](https://github.com/RocketChat/Rocket.Chat/pull/15546)) +- Update apps engine rooms converter to use transformMappedData ([#15546](https://github.com/RocketChat/Rocket.Chat/pull/15546) by [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes @@ -14017,23 +14188,23 @@ - [CHORE] remove 'bulk-create-c' permission ([#15517](https://github.com/RocketChat/Rocket.Chat/pull/15517) by [@antkaz](https://github.com/antkaz)) -- [CHORE] Split logger classes to avoid cyclic dependencies ([#15559](https://github.com/RocketChat/Rocket.Chat/pull/15559)) +- [CHORE] Split logger classes to avoid cyclic dependencies ([#15559](https://github.com/RocketChat/Rocket.Chat/pull/15559) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- [CHORE] Update latest Livechat widget version to 1.2.2 ([#15592](https://github.com/RocketChat/Rocket.Chat/pull/15592)) +- [CHORE] Update latest Livechat widget version to 1.2.2 ([#15592](https://github.com/RocketChat/Rocket.Chat/pull/15592) by [@renatobecker](https://github.com/renatobecker)) -- [CHORE] Update latest Livechat widget version to 1.2.4 ([#15596](https://github.com/RocketChat/Rocket.Chat/pull/15596)) +- [CHORE] Update latest Livechat widget version to 1.2.4 ([#15596](https://github.com/RocketChat/Rocket.Chat/pull/15596) by [@renatobecker](https://github.com/renatobecker)) -- [FEATURE] Rest API upload file returns message object ([#13821](https://github.com/RocketChat/Rocket.Chat/pull/13821) by [@knrt10](https://github.com/knrt10)) +- [FEATURE] Rest API upload file returns message object ([#13821](https://github.com/RocketChat/Rocket.Chat/pull/13821) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@knrt10](https://github.com/knrt10)) -- [REGRESSION] Fix remove department from list ([#15591](https://github.com/RocketChat/Rocket.Chat/pull/15591)) +- [REGRESSION] Fix remove department from list ([#15591](https://github.com/RocketChat/Rocket.Chat/pull/15591) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Chore: Add Client Setup Information to Issue Template ([#15625](https://github.com/RocketChat/Rocket.Chat/pull/15625)) +- Chore: Add Client Setup Information to Issue Template ([#15625](https://github.com/RocketChat/Rocket.Chat/pull/15625) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - docs: remove rocket chat launcher link ([#15477](https://github.com/RocketChat/Rocket.Chat/pull/15477) by [@RafaelGSS](https://github.com/RafaelGSS)) - LingoHub based on develop ([#15487](https://github.com/RocketChat/Rocket.Chat/pull/15487)) -- Livechat Issues ([#15473](https://github.com/RocketChat/Rocket.Chat/pull/15473)) +- Livechat Issues ([#15473](https://github.com/RocketChat/Rocket.Chat/pull/15473) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Merge master into develop ([#15680](https://github.com/RocketChat/Rocket.Chat/pull/15680) by [@knrt10](https://github.com/knrt10)) @@ -14041,15 +14212,15 @@ - Merge master into develop & Set version to 2.2.0-develop ([#15469](https://github.com/RocketChat/Rocket.Chat/pull/15469)) -- Move publication deprecation warnings ([#15676](https://github.com/RocketChat/Rocket.Chat/pull/15676)) +- Move publication deprecation warnings ([#15676](https://github.com/RocketChat/Rocket.Chat/pull/15676) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - New: Add dev dependency david badge to README ([#9058](https://github.com/RocketChat/Rocket.Chat/pull/9058) by [@robbyoconnor](https://github.com/robbyoconnor)) - Regression: add stdout publication back ([#15614](https://github.com/RocketChat/Rocket.Chat/pull/15614)) -- Regression: AppRoomsConverter on Livechat rooms ([#15646](https://github.com/RocketChat/Rocket.Chat/pull/15646)) +- Regression: AppRoomsConverter on Livechat rooms ([#15646](https://github.com/RocketChat/Rocket.Chat/pull/15646) by [@renatobecker](https://github.com/renatobecker)) -- Regression: Fix broken message formatting box ([#15599](https://github.com/RocketChat/Rocket.Chat/pull/15599)) +- Regression: Fix broken message formatting box ([#15599](https://github.com/RocketChat/Rocket.Chat/pull/15599) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Fix package-lock.json ([#15561](https://github.com/RocketChat/Rocket.Chat/pull/15561)) @@ -14057,9 +14228,9 @@ - Regression: hasPermission ignoring subscription roles ([#15652](https://github.com/RocketChat/Rocket.Chat/pull/15652)) -- Regression: Move import to avoid circular dependencies ([#15628](https://github.com/RocketChat/Rocket.Chat/pull/15628)) +- Regression: Move import to avoid circular dependencies ([#15628](https://github.com/RocketChat/Rocket.Chat/pull/15628) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Regression: Remove reference to obsolete template helper ([#15675](https://github.com/RocketChat/Rocket.Chat/pull/15675)) +- Regression: Remove reference to obsolete template helper ([#15675](https://github.com/RocketChat/Rocket.Chat/pull/15675) by [@tassoevan](https://github.com/tassoevan)) - Release 2.1.2 ([#15667](https://github.com/RocketChat/Rocket.Chat/pull/15667) by [@knrt10](https://github.com/knrt10)) @@ -14069,42 +14240,42 @@ - Revert fix package-lock.json ([#15563](https://github.com/RocketChat/Rocket.Chat/pull/15563)) -- Updating license term ([#15476](https://github.com/RocketChat/Rocket.Chat/pull/15476)) +- Updating license term ([#15476](https://github.com/RocketChat/Rocket.Chat/pull/15476) by [@mar-v](https://github.com/mar-v))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Montel](https://github.com/Montel) - [@RafaelGSS](https://github.com/RafaelGSS) - [@antkaz](https://github.com/antkaz) - [@hmagarotto](https://github.com/hmagarotto) - [@juanpetterson](https://github.com/juanpetterson) - [@knrt10](https://github.com/knrt10) +- [@mar-v](https://github.com/mar-v) - [@mohamedar97](https://github.com/mohamedar97) - [@nstseek](https://github.com/nstseek) - [@oguhpereira](https://github.com/oguhpereira) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@robbyoconnor](https://github.com/robbyoconnor) - [@rodrigokamada](https://github.com/rodrigokamada) - [@scrivna](https://github.com/scrivna) +- [@tassoevan](https://github.com/tassoevan) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@unixtam](https://github.com/unixtam) - [@yusukeh0710](https://github.com/yusukeh0710) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@mar-v](https://github.com/mar-v) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 2.1.3 `2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14137,7 +14308,7 @@ ### 🐛 Bug fixes -- Channel Announcements not working ([#14635](https://github.com/RocketChat/Rocket.Chat/pull/14635) by [@knrt10](https://github.com/knrt10)) +- Channel Announcements not working ([#14635](https://github.com/RocketChat/Rocket.Chat/pull/14635) by [@knrt10](https://github.com/knrt10) & [@tassoevan](https://github.com/tassoevan)) - Exception when sending email of messages attachments undefined ([#15657](https://github.com/RocketChat/Rocket.Chat/pull/15657)) @@ -14154,12 +14325,12 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@knrt10](https://github.com/knrt10) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) -- [@tassoevan](https://github.com/tassoevan) # 2.1.1 `2019-10-17 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14197,11 +14368,11 @@ ### 🎉 New features -- Add ability to disable email notifications globally ([#9667](https://github.com/RocketChat/Rocket.Chat/pull/9667) by [@ferdifly](https://github.com/ferdifly)) +- Add ability to disable email notifications globally ([#9667](https://github.com/RocketChat/Rocket.Chat/pull/9667) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ferdifly](https://github.com/ferdifly)) -- Add JWT to uploaded files urls ([#15297](https://github.com/RocketChat/Rocket.Chat/pull/15297)) +- Add JWT to uploaded files urls ([#15297](https://github.com/RocketChat/Rocket.Chat/pull/15297) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Allow file sharing through Twilio(WhatsApp) integration ([#15415](https://github.com/RocketChat/Rocket.Chat/pull/15415)) +- Allow file sharing through Twilio(WhatsApp) integration ([#15415](https://github.com/RocketChat/Rocket.Chat/pull/15415) by [@renatobecker](https://github.com/renatobecker)) - Apps engine Livechat ([#14626](https://github.com/RocketChat/Rocket.Chat/pull/14626)) @@ -14209,32 +14380,32 @@ - Guess a user's name from SAML credentials ([#15240](https://github.com/RocketChat/Rocket.Chat/pull/15240) by [@mrsimpson](https://github.com/mrsimpson)) -- Livechat setting to show/hide Agent Information on the widget ([#15216](https://github.com/RocketChat/Rocket.Chat/pull/15216)) +- Livechat setting to show/hide Agent Information on the widget ([#15216](https://github.com/RocketChat/Rocket.Chat/pull/15216) by [@renatobecker](https://github.com/renatobecker)) -- Only Load CodeMirror code when it is needed ([#15351](https://github.com/RocketChat/Rocket.Chat/pull/15351)) +- Only Load CodeMirror code when it is needed ([#15351](https://github.com/RocketChat/Rocket.Chat/pull/15351) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Provide site-url to outgoing integrations ([#15238](https://github.com/RocketChat/Rocket.Chat/pull/15238) by [@mrsimpson](https://github.com/mrsimpson)) -- SAML User Data Mapping ([#15404](https://github.com/RocketChat/Rocket.Chat/pull/15404)) +- SAML User Data Mapping ([#15404](https://github.com/RocketChat/Rocket.Chat/pull/15404) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Setting to configure SAML context comparison ([#15229](https://github.com/RocketChat/Rocket.Chat/pull/15229)) +- Setting to configure SAML context comparison ([#15229](https://github.com/RocketChat/Rocket.Chat/pull/15229) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Setting to remove message contents from email notifications ([#15406](https://github.com/RocketChat/Rocket.Chat/pull/15406)) +- Setting to remove message contents from email notifications ([#15406](https://github.com/RocketChat/Rocket.Chat/pull/15406) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Validate NotBefore and NotOnOrAfter SAML assertions ([#15226](https://github.com/RocketChat/Rocket.Chat/pull/15226)) +- Validate NotBefore and NotOnOrAfter SAML assertions ([#15226](https://github.com/RocketChat/Rocket.Chat/pull/15226) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🚀 Improvements -- A11y: Buttons, Images, Popups ([#15405](https://github.com/RocketChat/Rocket.Chat/pull/15405)) +- A11y: Buttons, Images, Popups ([#15405](https://github.com/RocketChat/Rocket.Chat/pull/15405) by [@tassoevan](https://github.com/tassoevan)) -- Add CustomSounds.play() helper ([#15256](https://github.com/RocketChat/Rocket.Chat/pull/15256)) +- Add CustomSounds.play() helper ([#15256](https://github.com/RocketChat/Rocket.Chat/pull/15256) by [@tassoevan](https://github.com/tassoevan)) - Add missing indices used by read receipts ([#15316](https://github.com/RocketChat/Rocket.Chat/pull/15316)) -- Add possibility of renaming a discussion ([#15122](https://github.com/RocketChat/Rocket.Chat/pull/15122)) +- Add possibility of renaming a discussion ([#15122](https://github.com/RocketChat/Rocket.Chat/pull/15122) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Administration UI ([#15401](https://github.com/RocketChat/Rocket.Chat/pull/15401)) +- Administration UI ([#15401](https://github.com/RocketChat/Rocket.Chat/pull/15401) by [@tassoevan](https://github.com/tassoevan)) - AvatarBlockUnauthenticatedAccess do not call user.find if you dont have to ([#15355](https://github.com/RocketChat/Rocket.Chat/pull/15355)) @@ -14242,42 +14413,42 @@ - improve autolinker flow ([#15340](https://github.com/RocketChat/Rocket.Chat/pull/15340)) -- Make the agents field optional when updating Livechat departments ([#15400](https://github.com/RocketChat/Rocket.Chat/pull/15400)) +- Make the agents field optional when updating Livechat departments ([#15400](https://github.com/RocketChat/Rocket.Chat/pull/15400) by [@renatobecker](https://github.com/renatobecker)) -- Remove global Blaze helpers ([#15414](https://github.com/RocketChat/Rocket.Chat/pull/15414)) +- Remove global Blaze helpers ([#15414](https://github.com/RocketChat/Rocket.Chat/pull/15414) by [@tassoevan](https://github.com/tassoevan)) -- Replace LESS autoprefixer plugin ([#15260](https://github.com/RocketChat/Rocket.Chat/pull/15260)) +- Replace LESS autoprefixer plugin ([#15260](https://github.com/RocketChat/Rocket.Chat/pull/15260) by [@tassoevan](https://github.com/tassoevan)) -- User data export ([#15294](https://github.com/RocketChat/Rocket.Chat/pull/15294) by [@Hudell](https://github.com/Hudell)) +- User data export ([#15294](https://github.com/RocketChat/Rocket.Chat/pull/15294) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) ### 🐛 Bug fixes -- Add ENV VAR to enable users create token feature ([#15334](https://github.com/RocketChat/Rocket.Chat/pull/15334)) +- Add ENV VAR to enable users create token feature ([#15334](https://github.com/RocketChat/Rocket.Chat/pull/15334) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- CAS users can take control of Rocket.Chat accounts ([#15346](https://github.com/RocketChat/Rocket.Chat/pull/15346)) +- CAS users can take control of Rocket.Chat accounts ([#15346](https://github.com/RocketChat/Rocket.Chat/pull/15346) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Delivering real-time messages to users that left a room ([#15389](https://github.com/RocketChat/Rocket.Chat/pull/15389)) +- Delivering real-time messages to users that left a room ([#15389](https://github.com/RocketChat/Rocket.Chat/pull/15389) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Don't allow email violating whitelist addresses ([#15339](https://github.com/RocketChat/Rocket.Chat/pull/15339)) +- Don't allow email violating whitelist addresses ([#15339](https://github.com/RocketChat/Rocket.Chat/pull/15339) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Double send bug on message box ([#15409](https://github.com/RocketChat/Rocket.Chat/pull/15409)) +- Double send bug on message box ([#15409](https://github.com/RocketChat/Rocket.Chat/pull/15409) by [@tassoevan](https://github.com/tassoevan)) - Duplicate Channels in Search-bar ([#15056](https://github.com/RocketChat/Rocket.Chat/pull/15056)) - Empty custom emojis on emoji picker ([#15392](https://github.com/RocketChat/Rocket.Chat/pull/15392)) -- Federation messages notifications ([#15418](https://github.com/RocketChat/Rocket.Chat/pull/15418)) +- Federation messages notifications ([#15418](https://github.com/RocketChat/Rocket.Chat/pull/15418) by [@alansikora](https://github.com/alansikora)) -- Fix file uploads JWT ([#15412](https://github.com/RocketChat/Rocket.Chat/pull/15412)) +- Fix file uploads JWT ([#15412](https://github.com/RocketChat/Rocket.Chat/pull/15412) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Grammatical error in Not Found page ([#15382](https://github.com/RocketChat/Rocket.Chat/pull/15382)) +- Grammatical error in Not Found page ([#15382](https://github.com/RocketChat/Rocket.Chat/pull/15382) by [@tassoevan](https://github.com/tassoevan)) -- LDAP usernames get additional '.' if they contain numbers ([#14644](https://github.com/RocketChat/Rocket.Chat/pull/14644) by [@Hudell](https://github.com/Hudell)) +- LDAP usernames get additional '.' if they contain numbers ([#14644](https://github.com/RocketChat/Rocket.Chat/pull/14644) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) -- Limit exposed fields on some users. endpoints ([#15327](https://github.com/RocketChat/Rocket.Chat/pull/15327)) +- Limit exposed fields on some users. endpoints ([#15327](https://github.com/RocketChat/Rocket.Chat/pull/15327) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Message box not centered ([#15367](https://github.com/RocketChat/Rocket.Chat/pull/15367)) +- Message box not centered ([#15367](https://github.com/RocketChat/Rocket.Chat/pull/15367) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Notify admin was generating errors when Rocket.Cat user was edited or deleted ([#15387](https://github.com/RocketChat/Rocket.Chat/pull/15387)) @@ -14287,29 +14458,29 @@ - Reduce Message cache time to 500ms ([#15295](https://github.com/RocketChat/Rocket.Chat/pull/15295) by [@vickyokrm](https://github.com/vickyokrm)) -- REST API to return only public custom fields ([#15292](https://github.com/RocketChat/Rocket.Chat/pull/15292)) +- REST API to return only public custom fields ([#15292](https://github.com/RocketChat/Rocket.Chat/pull/15292) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST endpoint `users.setPreferences` to not override all user's preferences ([#15288](https://github.com/RocketChat/Rocket.Chat/pull/15288)) +- REST endpoint `users.setPreferences` to not override all user's preferences ([#15288](https://github.com/RocketChat/Rocket.Chat/pull/15288) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Set the DEFAULT_ECDH_CURVE to auto (#15245) ([#15365](https://github.com/RocketChat/Rocket.Chat/pull/15365) by [@dlundgren](https://github.com/dlundgren)) -- Subscription record not having the `ls` field ([#14544](https://github.com/RocketChat/Rocket.Chat/pull/14544)) +- Subscription record not having the `ls` field ([#14544](https://github.com/RocketChat/Rocket.Chat/pull/14544) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- User Profile Time Format ([#15385](https://github.com/RocketChat/Rocket.Chat/pull/15385)) +- User Profile Time Format ([#15385](https://github.com/RocketChat/Rocket.Chat/pull/15385) by [@MartinSchoeler](https://github.com/MartinSchoeler))
🔍 Minor changes -- [CHORE] Move pathFor helper to templateHelpers directory ([#15255](https://github.com/RocketChat/Rocket.Chat/pull/15255)) +- [CHORE] Move pathFor helper to templateHelpers directory ([#15255](https://github.com/RocketChat/Rocket.Chat/pull/15255) by [@tassoevan](https://github.com/tassoevan)) -- [CHORE] Remove obsolete modal template ([#15257](https://github.com/RocketChat/Rocket.Chat/pull/15257)) +- [CHORE] Remove obsolete modal template ([#15257](https://github.com/RocketChat/Rocket.Chat/pull/15257) by [@tassoevan](https://github.com/tassoevan)) - [Fix] Missing space between last username & 'and' word in react notification ([#15384](https://github.com/RocketChat/Rocket.Chat/pull/15384) by [@zdumitru](https://github.com/zdumitru)) - Add a missing 'Discussion' translation key ([#14029](https://github.com/RocketChat/Rocket.Chat/pull/14029) by [@ura14h](https://github.com/ura14h)) -- Fix typo in LDAP User Search setting description ([#15228](https://github.com/RocketChat/Rocket.Chat/pull/15228)) +- Fix typo in LDAP User Search setting description ([#15228](https://github.com/RocketChat/Rocket.Chat/pull/15228) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - Improve Polish translation ([#14060](https://github.com/RocketChat/Rocket.Chat/pull/14060) by [@stepek](https://github.com/stepek)) @@ -14317,11 +14488,11 @@ - LingoHub based on develop ([#15377](https://github.com/RocketChat/Rocket.Chat/pull/15377)) -- Merge master into develop & Set version to 2.1.0-develop ([#15357](https://github.com/RocketChat/Rocket.Chat/pull/15357)) +- Merge master into develop & Set version to 2.1.0-develop ([#15357](https://github.com/RocketChat/Rocket.Chat/pull/15357) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) - Regression: API CORS not working after Cordova being disabled by default ([#15443](https://github.com/RocketChat/Rocket.Chat/pull/15443)) -- Regression: Favorite room button ([#15426](https://github.com/RocketChat/Rocket.Chat/pull/15426)) +- Regression: Favorite room button ([#15426](https://github.com/RocketChat/Rocket.Chat/pull/15426) by [@tassoevan](https://github.com/tassoevan)) - Regression: Fix Commit Section when there is no commit info ([#15436](https://github.com/RocketChat/Rocket.Chat/pull/15436)) @@ -14329,13 +14500,13 @@ - Regression: Fix invalid version string error on marketplace screen ([#15437](https://github.com/RocketChat/Rocket.Chat/pull/15437)) -- Regression: Messagebox height changing when typing ([#15380](https://github.com/RocketChat/Rocket.Chat/pull/15380)) +- Regression: Messagebox height changing when typing ([#15380](https://github.com/RocketChat/Rocket.Chat/pull/15380) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Regression: Prevent parsing empty custom field setting ([#15413](https://github.com/RocketChat/Rocket.Chat/pull/15413)) +- Regression: Prevent parsing empty custom field setting ([#15413](https://github.com/RocketChat/Rocket.Chat/pull/15413) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: setup wizard dynamic import using relative url ([#15432](https://github.com/RocketChat/Rocket.Chat/pull/15432)) -- Remove GraphQL dependencies left ([#15356](https://github.com/RocketChat/Rocket.Chat/pull/15356)) +- Remove GraphQL dependencies left ([#15356](https://github.com/RocketChat/Rocket.Chat/pull/15356) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Remove log ADMIN_PASS environment variable ([#15307](https://github.com/RocketChat/Rocket.Chat/pull/15307)) @@ -14350,28 +14521,28 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@dlundgren](https://github.com/dlundgren) - [@ferdifly](https://github.com/ferdifly) - [@ifantom](https://github.com/ifantom) - [@mrsimpson](https://github.com/mrsimpson) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@stepek](https://github.com/stepek) +- [@tassoevan](https://github.com/tassoevan) - [@ura14h](https://github.com/ura14h) - [@vickyokrm](https://github.com/vickyokrm) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 2.0.1 `2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14404,7 +14575,7 @@ ### ⚠️ BREAKING CHANGES -- Federation refactor with addition of chained events ([#15206](https://github.com/RocketChat/Rocket.Chat/pull/15206)) +- Federation refactor with addition of chained events ([#15206](https://github.com/RocketChat/Rocket.Chat/pull/15206) by [@alansikora](https://github.com/alansikora)) - Remove GraphQL and grant packages ([#15192](https://github.com/RocketChat/Rocket.Chat/pull/15192)) @@ -14421,21 +14592,21 @@ ### 🎉 New features -- Add autotranslate Rest endpoints ([#14885](https://github.com/RocketChat/Rocket.Chat/pull/14885)) +- Add autotranslate Rest endpoints ([#14885](https://github.com/RocketChat/Rocket.Chat/pull/14885) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Add Mobex to the list of SMS service providers ([#14655](https://github.com/RocketChat/Rocket.Chat/pull/14655) by [@zolbayars](https://github.com/zolbayars)) - Assume that Rocket.Chat runs behind one proxy by default (HTTP_FORWARDED_COUNT=1) ([#15214](https://github.com/RocketChat/Rocket.Chat/pull/15214)) -- Custom message popups ([#15117](https://github.com/RocketChat/Rocket.Chat/pull/15117) by [@Hudell](https://github.com/Hudell)) +- Custom message popups ([#15117](https://github.com/RocketChat/Rocket.Chat/pull/15117) by [@Hudell](https://github.com/Hudell) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) -- Endpoint to fetch livechat rooms with several filters ([#15155](https://github.com/RocketChat/Rocket.Chat/pull/15155)) +- Endpoint to fetch livechat rooms with several filters ([#15155](https://github.com/RocketChat/Rocket.Chat/pull/15155) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) - Granular permissions for settings ([#8942](https://github.com/RocketChat/Rocket.Chat/pull/8942) by [@mrsimpson](https://github.com/mrsimpson)) - Integrate DEEPL translation service to RC core ([#12174](https://github.com/RocketChat/Rocket.Chat/pull/12174) by [@mrsimpson](https://github.com/mrsimpson) & [@vickyokrm](https://github.com/vickyokrm)) -- Jitsi meet room access via a token ([#12259](https://github.com/RocketChat/Rocket.Chat/pull/12259) by [@rrzharikov](https://github.com/rrzharikov)) +- Jitsi meet room access via a token ([#12259](https://github.com/RocketChat/Rocket.Chat/pull/12259) by [@rrzharikov](https://github.com/rrzharikov) & [@tassoevan](https://github.com/tassoevan)) - LDAP User Groups, Roles, and Channel Synchronization ([#14278](https://github.com/RocketChat/Rocket.Chat/pull/14278) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) @@ -14443,39 +14614,39 @@ - Options for SAML auth for individual organizations needs ([#14275](https://github.com/RocketChat/Rocket.Chat/pull/14275) by [@Deltachaos](https://github.com/Deltachaos) & [@Hudell](https://github.com/Hudell)) -- Rest API Endpoint to get pinned messages from a room ([#13864](https://github.com/RocketChat/Rocket.Chat/pull/13864) by [@thayannevls](https://github.com/thayannevls)) +- Rest API Endpoint to get pinned messages from a room ([#13864](https://github.com/RocketChat/Rocket.Chat/pull/13864) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@thayannevls](https://github.com/thayannevls)) -- Setup Wizard and Page not found, using React components ([#15204](https://github.com/RocketChat/Rocket.Chat/pull/15204)) +- Setup Wizard and Page not found, using React components ([#15204](https://github.com/RocketChat/Rocket.Chat/pull/15204) by [@tassoevan](https://github.com/tassoevan)) - Support multiple push gateways ([#14902](https://github.com/RocketChat/Rocket.Chat/pull/14902) by [@cardoso](https://github.com/cardoso)) ### 🚀 Improvements -- Add asset extension validation ([#15088](https://github.com/RocketChat/Rocket.Chat/pull/15088)) +- Add asset extension validation ([#15088](https://github.com/RocketChat/Rocket.Chat/pull/15088) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add limit of 50 user's resume tokens ([#15102](https://github.com/RocketChat/Rocket.Chat/pull/15102)) +- Add limit of 50 user's resume tokens ([#15102](https://github.com/RocketChat/Rocket.Chat/pull/15102) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add possibility to use commands inside threads through Rest API ([#15167](https://github.com/RocketChat/Rocket.Chat/pull/15167)) +- Add possibility to use commands inside threads through Rest API ([#15167](https://github.com/RocketChat/Rocket.Chat/pull/15167) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Livechat User Management Improvements ([#14736](https://github.com/RocketChat/Rocket.Chat/pull/14736) by [@Hudell](https://github.com/Hudell)) +- Livechat User Management Improvements ([#14736](https://github.com/RocketChat/Rocket.Chat/pull/14736) by [@Hudell](https://github.com/Hudell) & [@renatobecker](https://github.com/renatobecker)) -- Message tooltips as everyone else ([#15135](https://github.com/RocketChat/Rocket.Chat/pull/15135)) +- Message tooltips as everyone else ([#15135](https://github.com/RocketChat/Rocket.Chat/pull/15135) by [@tassoevan](https://github.com/tassoevan)) -- Refactoring the queuing and routing processes of new livechats ([#15003](https://github.com/RocketChat/Rocket.Chat/pull/15003)) +- Refactoring the queuing and routing processes of new livechats ([#15003](https://github.com/RocketChat/Rocket.Chat/pull/15003) by [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes - "Discussion" label in Sidebar not hidden, when Discussions are disabled (#14660) ([#14682](https://github.com/RocketChat/Rocket.Chat/pull/14682) by [@ifantom](https://github.com/ifantom)) -- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172)) +- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172) by [@tassoevan](https://github.com/tassoevan)) - cachedcollection calling multiple times SYNC ([#15104](https://github.com/RocketChat/Rocket.Chat/pull/15104)) - Forget user session on window close ([#15205](https://github.com/RocketChat/Rocket.Chat/pull/15205)) -- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157) by [@tassoevan](https://github.com/tassoevan)) - IE11 baseURI ([#15319](https://github.com/RocketChat/Rocket.Chat/pull/15319)) @@ -14485,7 +14656,7 @@ - Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) -- Prevent to create discussion with empty name ([#14507](https://github.com/RocketChat/Rocket.Chat/pull/14507)) +- Prevent to create discussion with empty name ([#14507](https://github.com/RocketChat/Rocket.Chat/pull/14507) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Rate limit incoming integrations (webhooks) ([#15038](https://github.com/RocketChat/Rocket.Chat/pull/15038) by [@mrsimpson](https://github.com/mrsimpson)) @@ -14503,7 +14674,7 @@ - User's auto complete showing everyone on the server ([#15212](https://github.com/RocketChat/Rocket.Chat/pull/15212)) -- Webdav crash ([#14918](https://github.com/RocketChat/Rocket.Chat/pull/14918)) +- Webdav crash ([#14918](https://github.com/RocketChat/Rocket.Chat/pull/14918) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes @@ -14515,13 +14686,13 @@ - Add wreiske to authorized users in catbot ([#15147](https://github.com/RocketChat/Rocket.Chat/pull/15147)) -- Allow file upload paths on attachments URLs ([#15121](https://github.com/RocketChat/Rocket.Chat/pull/15121)) +- Allow file upload paths on attachments URLs ([#15121](https://github.com/RocketChat/Rocket.Chat/pull/15121) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Change notifications file imports to server ([#15184](https://github.com/RocketChat/Rocket.Chat/pull/15184)) -- Federation improvements ([#15234](https://github.com/RocketChat/Rocket.Chat/pull/15234)) +- Federation improvements ([#15234](https://github.com/RocketChat/Rocket.Chat/pull/15234) by [@alansikora](https://github.com/alansikora)) -- Federation migration and additional improvements ([#15336](https://github.com/RocketChat/Rocket.Chat/pull/15336)) +- Federation migration and additional improvements ([#15336](https://github.com/RocketChat/Rocket.Chat/pull/15336) by [@alansikora](https://github.com/alansikora)) - Fix apps list error ([#15258](https://github.com/RocketChat/Rocket.Chat/pull/15258)) @@ -14529,9 +14700,9 @@ - Fix get IP for rate limiter ([#15262](https://github.com/RocketChat/Rocket.Chat/pull/15262)) -- Fix v148 migration ([#15285](https://github.com/RocketChat/Rocket.Chat/pull/15285)) +- Fix v148 migration ([#15285](https://github.com/RocketChat/Rocket.Chat/pull/15285) by [@alansikora](https://github.com/alansikora)) -- Improve url validation inside message object ([#15074](https://github.com/RocketChat/Rocket.Chat/pull/15074)) +- Improve url validation inside message object ([#15074](https://github.com/RocketChat/Rocket.Chat/pull/15074) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - LingoHub based on develop ([#15218](https://github.com/RocketChat/Rocket.Chat/pull/15218)) @@ -14547,9 +14718,9 @@ - Regression: cachedCollection wrong callback parameters ([#15136](https://github.com/RocketChat/Rocket.Chat/pull/15136)) -- Regression: Double error toast on Setup Wizard ([#15268](https://github.com/RocketChat/Rocket.Chat/pull/15268)) +- Regression: Double error toast on Setup Wizard ([#15268](https://github.com/RocketChat/Rocket.Chat/pull/15268) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Errors on the console preventing some settings to be saved ([#15310](https://github.com/RocketChat/Rocket.Chat/pull/15310)) +- Regression: Errors on the console preventing some settings to be saved ([#15310](https://github.com/RocketChat/Rocket.Chat/pull/15310) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Fix assets extension detection ([#15231](https://github.com/RocketChat/Rocket.Chat/pull/15231)) @@ -14559,15 +14730,15 @@ - Regression: last message doesn't update after reconnect ([#15329](https://github.com/RocketChat/Rocket.Chat/pull/15329)) -- Regression: New Livechat methods and processes ([#15242](https://github.com/RocketChat/Rocket.Chat/pull/15242)) +- Regression: New Livechat methods and processes ([#15242](https://github.com/RocketChat/Rocket.Chat/pull/15242) by [@renatobecker](https://github.com/renatobecker)) -- Regression: Remove duplicated permission changes emitter ([#15321](https://github.com/RocketChat/Rocket.Chat/pull/15321)) +- Regression: Remove duplicated permission changes emitter ([#15321](https://github.com/RocketChat/Rocket.Chat/pull/15321) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: remove livechat cache from circle ci ([#15183](https://github.com/RocketChat/Rocket.Chat/pull/15183)) -- Regression: Remove old scripts of Setup Wizard ([#15263](https://github.com/RocketChat/Rocket.Chat/pull/15263)) +- Regression: Remove old scripts of Setup Wizard ([#15263](https://github.com/RocketChat/Rocket.Chat/pull/15263) by [@tassoevan](https://github.com/tassoevan)) -- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176)) +- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) - Remove GPG file ([#15146](https://github.com/RocketChat/Rocket.Chat/pull/15146)) @@ -14575,11 +14746,11 @@ - Switch outdated roadmap to point to milestones ([#15156](https://github.com/RocketChat/Rocket.Chat/pull/15156)) -- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173)) +- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173) by [@renatobecker](https://github.com/renatobecker)) -- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154)) +- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154) by [@renatobecker](https://github.com/renatobecker)) -- Update Livechat to 1.1.6 ([#15186](https://github.com/RocketChat/Rocket.Chat/pull/15186)) +- Update Livechat to 1.1.6 ([#15186](https://github.com/RocketChat/Rocket.Chat/pull/15186) by [@renatobecker](https://github.com/renatobecker)) - Update presence package ([#15178](https://github.com/RocketChat/Rocket.Chat/pull/15178)) @@ -14593,14 +14764,19 @@ - [@Deltachaos](https://github.com/Deltachaos) - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@NatsumiKubo](https://github.com/NatsumiKubo) +- [@alansikora](https://github.com/alansikora) - [@cardoso](https://github.com/cardoso) - [@cesarmal](https://github.com/cesarmal) - [@httpsOmkar](https://github.com/httpsOmkar) - [@ifantom](https://github.com/ifantom) - [@lucassmacedo](https://github.com/lucassmacedo) - [@mrsimpson](https://github.com/mrsimpson) +- [@renatobecker](https://github.com/renatobecker) - [@rrzharikov](https://github.com/rrzharikov) +- [@tassoevan](https://github.com/tassoevan) - [@thayannevls](https://github.com/thayannevls) - [@vickyokrm](https://github.com/vickyokrm) - [@wreiske](https://github.com/wreiske) @@ -14609,17 +14785,12 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.3.5 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -14632,11 +14803,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -14671,9 +14842,9 @@ ### 🐛 Bug fixes -- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172)) +- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172) by [@tassoevan](https://github.com/tassoevan)) -- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157) by [@tassoevan](https://github.com/tassoevan)) - Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) @@ -14681,20 +14852,23 @@ 🔍 Minor changes -- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176)) +- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) -- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173)) +- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173) by [@renatobecker](https://github.com/renatobecker)) -- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154)) +- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154) by [@renatobecker](https://github.com/renatobecker))
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.3.1 `2019-08-08 · 2 🐛 · 2 🔍 · 3 👩‍💻👨‍💻` @@ -14715,15 +14889,18 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Release 1.3.1 ([#15148](https://github.com/RocketChat/Rocket.Chat/pull/15148)) +- Release 1.3.1 ([#15148](https://github.com/RocketChat/Rocket.Chat/pull/15148) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -14746,39 +14923,39 @@ - Setting to configure custom authn context on SAML requests ([#14675](https://github.com/RocketChat/Rocket.Chat/pull/14675) by [@Hudell](https://github.com/Hudell)) -- Setting to prevent Livechat agents online when Office Hours are closed ([#14921](https://github.com/RocketChat/Rocket.Chat/pull/14921)) +- Setting to prevent Livechat agents online when Office Hours are closed ([#14921](https://github.com/RocketChat/Rocket.Chat/pull/14921) by [@renatobecker](https://github.com/renatobecker)) - Settings to further customize GitLab OAuth ([#15014](https://github.com/RocketChat/Rocket.Chat/pull/15014) by [@Hudell](https://github.com/Hudell)) - Show helpful error when oplog is missing ([#14954](https://github.com/RocketChat/Rocket.Chat/pull/14954) by [@justinr1234](https://github.com/justinr1234)) -- Subscription enabled marketplace ([#14948](https://github.com/RocketChat/Rocket.Chat/pull/14948)) +- Subscription enabled marketplace ([#14948](https://github.com/RocketChat/Rocket.Chat/pull/14948) by [@tassoevan](https://github.com/tassoevan)) - Webdav File Picker ([#14879](https://github.com/RocketChat/Rocket.Chat/pull/14879) by [@ubarsaiyan](https://github.com/ubarsaiyan)) ### 🚀 Improvements -- Add descriptions on user data download buttons and popup info ([#14852](https://github.com/RocketChat/Rocket.Chat/pull/14852)) +- Add descriptions on user data download buttons and popup info ([#14852](https://github.com/RocketChat/Rocket.Chat/pull/14852) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add flag to identify remote federation users ([#15004](https://github.com/RocketChat/Rocket.Chat/pull/15004)) +- Add flag to identify remote federation users ([#15004](https://github.com/RocketChat/Rocket.Chat/pull/15004) by [@alansikora](https://github.com/alansikora)) - Connectivity Services License Sync ([#15022](https://github.com/RocketChat/Rocket.Chat/pull/15022)) - Extract federation config to its own file ([#14992](https://github.com/RocketChat/Rocket.Chat/pull/14992)) -- Remove too specific helpers isFirefox() and isChrome() ([#14963](https://github.com/RocketChat/Rocket.Chat/pull/14963)) +- Remove too specific helpers isFirefox() and isChrome() ([#14963](https://github.com/RocketChat/Rocket.Chat/pull/14963) by [@tassoevan](https://github.com/tassoevan)) -- Update tabs markup ([#14964](https://github.com/RocketChat/Rocket.Chat/pull/14964)) +- Update tabs markup ([#14964](https://github.com/RocketChat/Rocket.Chat/pull/14964) by [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes - 50 custom emoji limit ([#14951](https://github.com/RocketChat/Rocket.Chat/pull/14951)) -- Allow storing the navigation history of unregistered Livechat visitors ([#14970](https://github.com/RocketChat/Rocket.Chat/pull/14970)) +- Allow storing the navigation history of unregistered Livechat visitors ([#14970](https://github.com/RocketChat/Rocket.Chat/pull/14970) by [@renatobecker](https://github.com/renatobecker)) -- Always displaying jumbomojis when using "marked" markdown ([#14861](https://github.com/RocketChat/Rocket.Chat/pull/14861) by [@brakhane](https://github.com/brakhane)) +- Always displaying jumbomojis when using "marked" markdown ([#14861](https://github.com/RocketChat/Rocket.Chat/pull/14861) by [@brakhane](https://github.com/brakhane) & [@tassoevan](https://github.com/tassoevan)) - Chrome doesn't load additional search results when bottom is reached ([#14965](https://github.com/RocketChat/Rocket.Chat/pull/14965)) @@ -14788,7 +14965,7 @@ - Edit message with arrow up key if not last message ([#15021](https://github.com/RocketChat/Rocket.Chat/pull/15021)) -- Edit permissions screen ([#14950](https://github.com/RocketChat/Rocket.Chat/pull/14950)) +- Edit permissions screen ([#14950](https://github.com/RocketChat/Rocket.Chat/pull/14950) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - eternal loading file list ([#14952](https://github.com/RocketChat/Rocket.Chat/pull/14952)) @@ -14802,11 +14979,11 @@ - load more messages ([#14967](https://github.com/RocketChat/Rocket.Chat/pull/14967)) -- Loading indicator positioning ([#14968](https://github.com/RocketChat/Rocket.Chat/pull/14968)) +- Loading indicator positioning ([#14968](https://github.com/RocketChat/Rocket.Chat/pull/14968) by [@tassoevan](https://github.com/tassoevan)) -- Message attachments not allowing float numbers ([#14412](https://github.com/RocketChat/Rocket.Chat/pull/14412)) +- Message attachments not allowing float numbers ([#14412](https://github.com/RocketChat/Rocket.Chat/pull/14412) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Method `getUsersOfRoom` not returning offline users if limit is not defined ([#14753](https://github.com/RocketChat/Rocket.Chat/pull/14753)) +- Method `getUsersOfRoom` not returning offline users if limit is not defined ([#14753](https://github.com/RocketChat/Rocket.Chat/pull/14753) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Not being able to mention users with "all" and "here" usernames - do not allow users register that usernames ([#14468](https://github.com/RocketChat/Rocket.Chat/pull/14468) by [@hamidrezabstn](https://github.com/hamidrezabstn)) @@ -14816,7 +14993,7 @@ - OTR key icon missing on messages ([#14953](https://github.com/RocketChat/Rocket.Chat/pull/14953)) -- Prevent error on trying insert message with duplicated id ([#14945](https://github.com/RocketChat/Rocket.Chat/pull/14945)) +- Prevent error on trying insert message with duplicated id ([#14945](https://github.com/RocketChat/Rocket.Chat/pull/14945) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Russian grammatical errors ([#14622](https://github.com/RocketChat/Rocket.Chat/pull/14622) by [@BehindLoader](https://github.com/BehindLoader)) @@ -14828,7 +15005,7 @@ - Typo in german translation ([#14833](https://github.com/RocketChat/Rocket.Chat/pull/14833) by [@Le-onardo](https://github.com/Le-onardo)) -- Users staying online after logout ([#14966](https://github.com/RocketChat/Rocket.Chat/pull/14966)) +- Users staying online after logout ([#14966](https://github.com/RocketChat/Rocket.Chat/pull/14966) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - users.setStatus REST endpoint not allowing reset status message ([#14916](https://github.com/RocketChat/Rocket.Chat/pull/14916) by [@cardoso](https://github.com/cardoso)) @@ -14846,19 +15023,19 @@ - Add missing French translation ([#15013](https://github.com/RocketChat/Rocket.Chat/pull/15013) by [@commiaI](https://github.com/commiaI)) -- Always convert the sha256 password to lowercase on checking ([#14941](https://github.com/RocketChat/Rocket.Chat/pull/14941)) +- Always convert the sha256 password to lowercase on checking ([#14941](https://github.com/RocketChat/Rocket.Chat/pull/14941) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Bump jquery from 3.3.1 to 3.4.0 in /packages/rocketchat-livechat/.app ([#14922](https://github.com/RocketChat/Rocket.Chat/pull/14922) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Bump juice version to 5.2.0 ([#14974](https://github.com/RocketChat/Rocket.Chat/pull/14974)) +- Bump juice version to 5.2.0 ([#14974](https://github.com/RocketChat/Rocket.Chat/pull/14974) by [@tassoevan](https://github.com/tassoevan)) - Bump marked from 0.5.2 to 0.6.1 ([#14969](https://github.com/RocketChat/Rocket.Chat/pull/14969) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Bump node-rsa version to 1.0.5 ([#14976](https://github.com/RocketChat/Rocket.Chat/pull/14976)) +- Bump node-rsa version to 1.0.5 ([#14976](https://github.com/RocketChat/Rocket.Chat/pull/14976) by [@tassoevan](https://github.com/tassoevan)) -- Bump photoswipe version to 4.1.3 ([#14977](https://github.com/RocketChat/Rocket.Chat/pull/14977)) +- Bump photoswipe version to 4.1.3 ([#14977](https://github.com/RocketChat/Rocket.Chat/pull/14977) by [@tassoevan](https://github.com/tassoevan)) -- Callbacks perf ([#14915](https://github.com/RocketChat/Rocket.Chat/pull/14915)) +- Callbacks perf ([#14915](https://github.com/RocketChat/Rocket.Chat/pull/14915) by [@tassoevan](https://github.com/tassoevan)) - Extract canSendMessage function ([#14909](https://github.com/RocketChat/Rocket.Chat/pull/14909)) @@ -14870,13 +15047,13 @@ - improve: relocate some of wizard info to register ([#14884](https://github.com/RocketChat/Rocket.Chat/pull/14884)) -- Merge master into develop & Set version to 1.3.0-develop ([#14889](https://github.com/RocketChat/Rocket.Chat/pull/14889) by [@Hudell](https://github.com/Hudell)) +- Merge master into develop & Set version to 1.3.0-develop ([#14889](https://github.com/RocketChat/Rocket.Chat/pull/14889) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@alansikora](https://github.com/alansikora)) -- New: Apps and integrations statistics ([#14878](https://github.com/RocketChat/Rocket.Chat/pull/14878)) +- New: Apps and integrations statistics ([#14878](https://github.com/RocketChat/Rocket.Chat/pull/14878) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Regression: Apps and Marketplace UI issues ([#15045](https://github.com/RocketChat/Rocket.Chat/pull/15045)) +- Regression: Apps and Marketplace UI issues ([#15045](https://github.com/RocketChat/Rocket.Chat/pull/15045) by [@tassoevan](https://github.com/tassoevan)) -- Regression: displaying errors for apps not installed from Marketplace ([#15075](https://github.com/RocketChat/Rocket.Chat/pull/15075)) +- Regression: displaying errors for apps not installed from Marketplace ([#15075](https://github.com/RocketChat/Rocket.Chat/pull/15075) by [@tassoevan](https://github.com/tassoevan)) - Regression: fix code style, setup wizard error and profile page header ([#15041](https://github.com/RocketChat/Rocket.Chat/pull/15041)) @@ -14886,23 +15063,23 @@ - Regression: Improve apps bridges for HA setup ([#15080](https://github.com/RocketChat/Rocket.Chat/pull/15080)) -- Regression: Marketplace app pricing plan description ([#15076](https://github.com/RocketChat/Rocket.Chat/pull/15076)) +- Regression: Marketplace app pricing plan description ([#15076](https://github.com/RocketChat/Rocket.Chat/pull/15076) by [@tassoevan](https://github.com/tassoevan)) - Regression: patch to improve emoji render ([#14980](https://github.com/RocketChat/Rocket.Chat/pull/14980)) -- Regression: uninstall subscribed app modal ([#15077](https://github.com/RocketChat/Rocket.Chat/pull/15077)) +- Regression: uninstall subscribed app modal ([#15077](https://github.com/RocketChat/Rocket.Chat/pull/15077) by [@tassoevan](https://github.com/tassoevan)) - Regression: Webdav File Picker search and fixed overflows ([#15027](https://github.com/RocketChat/Rocket.Chat/pull/15027) by [@ubarsaiyan](https://github.com/ubarsaiyan)) - Release 1.2.1 ([#14898](https://github.com/RocketChat/Rocket.Chat/pull/14898)) -- Remove unused dependency (lokijs) ([#14973](https://github.com/RocketChat/Rocket.Chat/pull/14973)) +- Remove unused dependency (lokijs) ([#14973](https://github.com/RocketChat/Rocket.Chat/pull/14973) by [@tassoevan](https://github.com/tassoevan)) -- Remove unused Meteor dependency (yasinuslu:blaze-meta) ([#14971](https://github.com/RocketChat/Rocket.Chat/pull/14971)) +- Remove unused Meteor dependency (yasinuslu:blaze-meta) ([#14971](https://github.com/RocketChat/Rocket.Chat/pull/14971) by [@tassoevan](https://github.com/tassoevan)) - Split oplog emitters in files ([#14917](https://github.com/RocketChat/Rocket.Chat/pull/14917)) -- Update Livechat widget ([#15046](https://github.com/RocketChat/Rocket.Chat/pull/15046)) +- Update Livechat widget ([#15046](https://github.com/RocketChat/Rocket.Chat/pull/15046) by [@renatobecker](https://github.com/renatobecker)) - Wrong text when reporting a message ([#14515](https://github.com/RocketChat/Rocket.Chat/pull/14515) by [@zdumitru](https://github.com/zdumitru)) @@ -14913,7 +15090,9 @@ - [@BehindLoader](https://github.com/BehindLoader) - [@Hudell](https://github.com/Hudell) - [@Le-onardo](https://github.com/Le-onardo) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@NateScarlet](https://github.com/NateScarlet) +- [@alansikora](https://github.com/alansikora) - [@anandpathak](https://github.com/anandpathak) - [@brakhane](https://github.com/brakhane) - [@cardoso](https://github.com/cardoso) @@ -14923,7 +15102,9 @@ - [@justinr1234](https://github.com/justinr1234) - [@magicbelette](https://github.com/magicbelette) - [@pkolmann](https://github.com/pkolmann) +- [@renatobecker](https://github.com/renatobecker) - [@snoopotic](https://github.com/snoopotic) +- [@tassoevan](https://github.com/tassoevan) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@vova-zush](https://github.com/vova-zush) - [@zdumitru](https://github.com/zdumitru) @@ -14931,17 +15112,13 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.2.4 `2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -14955,11 +15132,11 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) @@ -15017,67 +15194,67 @@ ### 🎉 New features -- Add Livechat inquiries endpoints ([#14779](https://github.com/RocketChat/Rocket.Chat/pull/14779)) +- Add Livechat inquiries endpoints ([#14779](https://github.com/RocketChat/Rocket.Chat/pull/14779) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Add loading animation to webdav file picker ([#14759](https://github.com/RocketChat/Rocket.Chat/pull/14759) by [@ubarsaiyan](https://github.com/ubarsaiyan)) -- Add tmid property to outgoing integration ([#14699](https://github.com/RocketChat/Rocket.Chat/pull/14699)) +- Add tmid property to outgoing integration ([#14699](https://github.com/RocketChat/Rocket.Chat/pull/14699) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - changed mongo version for snap from 3.2.7 to 3.4.20 ([#14838](https://github.com/RocketChat/Rocket.Chat/pull/14838)) -- Configuration to limit amount of livechat inquiries displayed ([#14690](https://github.com/RocketChat/Rocket.Chat/pull/14690)) +- Configuration to limit amount of livechat inquiries displayed ([#14690](https://github.com/RocketChat/Rocket.Chat/pull/14690) by [@renatobecker](https://github.com/renatobecker)) - Custom User Status ([#13933](https://github.com/RocketChat/Rocket.Chat/pull/13933) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) -- Endpoint to anonymously read channel's messages ([#14714](https://github.com/RocketChat/Rocket.Chat/pull/14714)) +- Endpoint to anonymously read channel's messages ([#14714](https://github.com/RocketChat/Rocket.Chat/pull/14714) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Show App bundles and its apps ([#14886](https://github.com/RocketChat/Rocket.Chat/pull/14886)) ### 🚀 Improvements -- Add an optional rocketchat-protocol DNS entry for Federation ([#14589](https://github.com/RocketChat/Rocket.Chat/pull/14589)) +- Add an optional rocketchat-protocol DNS entry for Federation ([#14589](https://github.com/RocketChat/Rocket.Chat/pull/14589) by [@alansikora](https://github.com/alansikora)) -- Adds link to download generated user data file ([#14175](https://github.com/RocketChat/Rocket.Chat/pull/14175) by [@Hudell](https://github.com/Hudell)) +- Adds link to download generated user data file ([#14175](https://github.com/RocketChat/Rocket.Chat/pull/14175) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Layout of livechat manager pages to new style ([#13900](https://github.com/RocketChat/Rocket.Chat/pull/13900)) +- Layout of livechat manager pages to new style ([#13900](https://github.com/RocketChat/Rocket.Chat/pull/13900) by [@renatobecker](https://github.com/renatobecker)) -- Use configurable colors on sidebar items ([#14624](https://github.com/RocketChat/Rocket.Chat/pull/14624)) +- Use configurable colors on sidebar items ([#14624](https://github.com/RocketChat/Rocket.Chat/pull/14624) by [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes -- Assume microphone is available ([#14710](https://github.com/RocketChat/Rocket.Chat/pull/14710)) +- Assume microphone is available ([#14710](https://github.com/RocketChat/Rocket.Chat/pull/14710) by [@tassoevan](https://github.com/tassoevan)) - Custom status fixes ([#14853](https://github.com/RocketChat/Rocket.Chat/pull/14853) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) - Direct reply delete config and description ([#14493](https://github.com/RocketChat/Rocket.Chat/pull/14493) by [@ruKurz](https://github.com/ruKurz)) -- Error when using Download My Data or Export My Data ([#14645](https://github.com/RocketChat/Rocket.Chat/pull/14645) by [@Hudell](https://github.com/Hudell)) +- Error when using Download My Data or Export My Data ([#14645](https://github.com/RocketChat/Rocket.Chat/pull/14645) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Gap of messages when loading history when using threads ([#14837](https://github.com/RocketChat/Rocket.Chat/pull/14837)) - Import Chart.js error ([#14471](https://github.com/RocketChat/Rocket.Chat/pull/14471) by [@Hudell](https://github.com/Hudell) & [@sonbn0](https://github.com/sonbn0)) -- Increasing time to rate limit in shield.svg endpoint and add a setting to disable API rate limiter ([#14709](https://github.com/RocketChat/Rocket.Chat/pull/14709)) +- Increasing time to rate limit in shield.svg endpoint and add a setting to disable API rate limiter ([#14709](https://github.com/RocketChat/Rocket.Chat/pull/14709) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - LinkedIn OAuth login ([#14887](https://github.com/RocketChat/Rocket.Chat/pull/14887) by [@Hudell](https://github.com/Hudell)) -- Move the set Avatar call on user creation to make sure the user has username ([#14665](https://github.com/RocketChat/Rocket.Chat/pull/14665)) +- Move the set Avatar call on user creation to make sure the user has username ([#14665](https://github.com/RocketChat/Rocket.Chat/pull/14665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Name is undefined in some emails ([#14533](https://github.com/RocketChat/Rocket.Chat/pull/14533)) +- Name is undefined in some emails ([#14533](https://github.com/RocketChat/Rocket.Chat/pull/14533) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Removes E2E action button, icon and banner when E2E is disabled. ([#14810](https://github.com/RocketChat/Rocket.Chat/pull/14810)) - users typing forever ([#14724](https://github.com/RocketChat/Rocket.Chat/pull/14724)) -- Wrong filter field when filtering current Livechats ([#14569](https://github.com/RocketChat/Rocket.Chat/pull/14569)) +- Wrong filter field when filtering current Livechats ([#14569](https://github.com/RocketChat/Rocket.Chat/pull/14569) by [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes -- Add custom fileupload whitelist property ([#14754](https://github.com/RocketChat/Rocket.Chat/pull/14754)) +- Add custom fileupload whitelist property ([#14754](https://github.com/RocketChat/Rocket.Chat/pull/14754) by [@renatobecker](https://github.com/renatobecker)) - Allow debugging of cached collections by name ([#14859](https://github.com/RocketChat/Rocket.Chat/pull/14859)) @@ -15085,7 +15262,7 @@ - Fix not fully extracted pieces ([#14805](https://github.com/RocketChat/Rocket.Chat/pull/14805)) -- Merge master into develop & Set version to 1.2.0-develop ([#14656](https://github.com/RocketChat/Rocket.Chat/pull/14656) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@thaiphv](https://github.com/thaiphv)) +- Merge master into develop & Set version to 1.2.0-develop ([#14656](https://github.com/RocketChat/Rocket.Chat/pull/14656) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@tassoevan](https://github.com/tassoevan) & [@thaiphv](https://github.com/thaiphv)) - Regression: Allow debugging of cached collections by name ([#14862](https://github.com/RocketChat/Rocket.Chat/pull/14862)) @@ -15101,11 +15278,15 @@ - [@AnBo83](https://github.com/AnBo83) - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@knrt10](https://github.com/knrt10) - [@lolimay](https://github.com/lolimay) - [@mohamedar97](https://github.com/mohamedar97) +- [@renatobecker](https://github.com/renatobecker) - [@ruKurz](https://github.com/ruKurz) - [@sonbn0](https://github.com/sonbn0) +- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@wreiske](https://github.com/wreiske) @@ -15113,16 +15294,12 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@PrajvalRaval](https://github.com/PrajvalRaval) -- [@alansikora](https://github.com/alansikora) - [@engelgabriel](https://github.com/engelgabriel) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.1.5 `2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -15136,11 +15313,11 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) @@ -15200,27 +15377,27 @@ ### 🐛 Bug fixes -- Anonymous chat read ([#14717](https://github.com/RocketChat/Rocket.Chat/pull/14717)) +- Anonymous chat read ([#14717](https://github.com/RocketChat/Rocket.Chat/pull/14717) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - User Real Name being erased when not modified ([#14711](https://github.com/RocketChat/Rocket.Chat/pull/14711) by [@Hudell](https://github.com/Hudell)) -- User status information on User Info panel ([#14763](https://github.com/RocketChat/Rocket.Chat/pull/14763)) +- User status information on User Info panel ([#14763](https://github.com/RocketChat/Rocket.Chat/pull/14763) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes -- Release 1.1.2 ([#14823](https://github.com/RocketChat/Rocket.Chat/pull/14823) by [@Hudell](https://github.com/Hudell)) +- Release 1.1.2 ([#14823](https://github.com/RocketChat/Rocket.Chat/pull/14823) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -15243,17 +15420,17 @@ 🔍 Minor changes -- Removing unnecesary federation configs ([#14674](https://github.com/RocketChat/Rocket.Chat/pull/14674)) +- Removing unnecesary federation configs ([#14674](https://github.com/RocketChat/Rocket.Chat/pull/14674) by [@alansikora](https://github.com/alansikora)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@alansikora](https://github.com/alansikora) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@alansikora](https://github.com/alansikora) - [@ggazzo](https://github.com/ggazzo) # 1.1.0 @@ -15273,26 +15450,26 @@ - Missing "view-outside-room_description" translation key ([#13680](https://github.com/RocketChat/Rocket.Chat/pull/13680) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Returns custom emojis through the Livechat REST API ([#14370](https://github.com/RocketChat/Rocket.Chat/pull/14370)) +- Returns custom emojis through the Livechat REST API ([#14370](https://github.com/RocketChat/Rocket.Chat/pull/14370) by [@renatobecker](https://github.com/renatobecker)) -- Setting option to mark as containing a secret/password ([#10273](https://github.com/RocketChat/Rocket.Chat/pull/10273)) +- Setting option to mark as containing a secret/password ([#10273](https://github.com/RocketChat/Rocket.Chat/pull/10273) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) ### 🚀 Improvements -- Added flag `skipActiveUsersToBeReady` to not wait the load of `active users` to present the Web interface ([#14431](https://github.com/RocketChat/Rocket.Chat/pull/14431)) +- Added flag `skipActiveUsersToBeReady` to not wait the load of `active users` to present the Web interface ([#14431](https://github.com/RocketChat/Rocket.Chat/pull/14431) by [@tassoevan](https://github.com/tassoevan)) - Allow change Discussion's properties ([#14389](https://github.com/RocketChat/Rocket.Chat/pull/14389)) - Change user presence events to Meteor Streams ([#14488](https://github.com/RocketChat/Rocket.Chat/pull/14488)) -- Don't show unread count badge in burger menu if it is from the opened room ([#12971](https://github.com/RocketChat/Rocket.Chat/pull/12971)) +- Don't show unread count badge in burger menu if it is from the opened room ([#12971](https://github.com/RocketChat/Rocket.Chat/pull/12971) by [@tassoevan](https://github.com/tassoevan)) - Don't use regex to find users ([#14397](https://github.com/RocketChat/Rocket.Chat/pull/14397)) - jump to selected message on open thread ([#14460](https://github.com/RocketChat/Rocket.Chat/pull/14460)) -- Livechat CRM secret token optional ([#14022](https://github.com/RocketChat/Rocket.Chat/pull/14022)) +- Livechat CRM secret token optional ([#14022](https://github.com/RocketChat/Rocket.Chat/pull/14022) by [@renatobecker](https://github.com/renatobecker)) - Message rendering time ([#14252](https://github.com/RocketChat/Rocket.Chat/pull/14252)) @@ -15307,7 +15484,7 @@ - `Alphabetical` translation in DE ([#14490](https://github.com/RocketChat/Rocket.Chat/pull/14490) by [@AnBo83](https://github.com/AnBo83)) -- Allow data URLs in isURL/getURL helpers ([#14464](https://github.com/RocketChat/Rocket.Chat/pull/14464)) +- Allow data URLs in isURL/getURL helpers ([#14464](https://github.com/RocketChat/Rocket.Chat/pull/14464) by [@tassoevan](https://github.com/tassoevan)) - Avatar images on old Livechat client ([#14590](https://github.com/RocketChat/Rocket.Chat/pull/14590) by [@arminfelder](https://github.com/arminfelder)) @@ -15321,17 +15498,17 @@ - Channel settings form to textarea for Topic and Description ([#13328](https://github.com/RocketChat/Rocket.Chat/pull/13328) by [@supra08](https://github.com/supra08)) -- Custom scripts descriptions were not clear enough ([#14516](https://github.com/RocketChat/Rocket.Chat/pull/14516)) +- Custom scripts descriptions were not clear enough ([#14516](https://github.com/RocketChat/Rocket.Chat/pull/14516) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Discussion name being invalid ([#14442](https://github.com/RocketChat/Rocket.Chat/pull/14442)) -- Downloading files when running in sub directory ([#14485](https://github.com/RocketChat/Rocket.Chat/pull/14485) by [@miolane](https://github.com/miolane)) +- Downloading files when running in sub directory ([#14485](https://github.com/RocketChat/Rocket.Chat/pull/14485) by [@miolane](https://github.com/miolane) & [@tassoevan](https://github.com/tassoevan)) -- Duplicated link to jump to message ([#14505](https://github.com/RocketChat/Rocket.Chat/pull/14505)) +- Duplicated link to jump to message ([#14505](https://github.com/RocketChat/Rocket.Chat/pull/14505) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - E2E messages not decrypting in message threads ([#14580](https://github.com/RocketChat/Rocket.Chat/pull/14580)) -- Edit Message when down arrow is pressed. ([#14369](https://github.com/RocketChat/Rocket.Chat/pull/14369) by [@Kailash0311](https://github.com/Kailash0311)) +- Edit Message when down arrow is pressed. ([#14369](https://github.com/RocketChat/Rocket.Chat/pull/14369) by [@Kailash0311](https://github.com/Kailash0311) & [@tassoevan](https://github.com/tassoevan)) - Elements in User Info require some padding ([#13640](https://github.com/RocketChat/Rocket.Chat/pull/13640) by [@mushroomgenie](https://github.com/mushroomgenie)) @@ -15341,21 +15518,21 @@ - Error when accessing avatar with no token ([#14293](https://github.com/RocketChat/Rocket.Chat/pull/14293)) -- Escape unrecognized slash command message ([#14432](https://github.com/RocketChat/Rocket.Chat/pull/14432)) +- Escape unrecognized slash command message ([#14432](https://github.com/RocketChat/Rocket.Chat/pull/14432) by [@tassoevan](https://github.com/tassoevan)) - Exception on crowd sync due to a wrong logging method ([#14405](https://github.com/RocketChat/Rocket.Chat/pull/14405)) - Fallback to mongo version that doesn't require clusterMonitor role ([#14403](https://github.com/RocketChat/Rocket.Chat/pull/14403)) -- Fix redirect to First channel after login ([#14434](https://github.com/RocketChat/Rocket.Chat/pull/14434)) +- Fix redirect to First channel after login ([#14434](https://github.com/RocketChat/Rocket.Chat/pull/14434) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- IE11 support ([#14422](https://github.com/RocketChat/Rocket.Chat/pull/14422)) +- IE11 support ([#14422](https://github.com/RocketChat/Rocket.Chat/pull/14422) by [@tassoevan](https://github.com/tassoevan)) -- Ignored messages ([#14465](https://github.com/RocketChat/Rocket.Chat/pull/14465)) +- Ignored messages ([#14465](https://github.com/RocketChat/Rocket.Chat/pull/14465) by [@tassoevan](https://github.com/tassoevan)) -- Inject code at the end of tag ([#14623](https://github.com/RocketChat/Rocket.Chat/pull/14623)) +- Inject code at the end of tag ([#14623](https://github.com/RocketChat/Rocket.Chat/pull/14623) by [@tassoevan](https://github.com/tassoevan)) -- Mailer breaking if user doesn't have an email address ([#14614](https://github.com/RocketChat/Rocket.Chat/pull/14614)) +- Mailer breaking if user doesn't have an email address ([#14614](https://github.com/RocketChat/Rocket.Chat/pull/14614) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Main thread title on replies ([#14372](https://github.com/RocketChat/Rocket.Chat/pull/14372)) @@ -15371,31 +15548,31 @@ - New day separator overlapping above system message ([#14362](https://github.com/RocketChat/Rocket.Chat/pull/14362)) -- No feedback when adding users that already exists in a room ([#14534](https://github.com/RocketChat/Rocket.Chat/pull/14534) by [@gsunit](https://github.com/gsunit)) +- No feedback when adding users that already exists in a room ([#14534](https://github.com/RocketChat/Rocket.Chat/pull/14534) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@gsunit](https://github.com/gsunit)) - Optional exit on Unhandled Promise Rejection ([#14291](https://github.com/RocketChat/Rocket.Chat/pull/14291)) - Popup cloud console in new window ([#14296](https://github.com/RocketChat/Rocket.Chat/pull/14296)) -- Pressing Enter in User Search field at channel causes reload ([#14388](https://github.com/RocketChat/Rocket.Chat/pull/14388)) +- Pressing Enter in User Search field at channel causes reload ([#14388](https://github.com/RocketChat/Rocket.Chat/pull/14388) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) - preview pdf its not working ([#14419](https://github.com/RocketChat/Rocket.Chat/pull/14419)) -- Remove Livechat guest data was removing more rooms than expected ([#14509](https://github.com/RocketChat/Rocket.Chat/pull/14509)) +- Remove Livechat guest data was removing more rooms than expected ([#14509](https://github.com/RocketChat/Rocket.Chat/pull/14509) by [@renatobecker](https://github.com/renatobecker)) - RocketChat client sending out video call requests unnecessarily ([#14496](https://github.com/RocketChat/Rocket.Chat/pull/14496)) -- Role `user` has being added after email verification even for non anonymous users ([#14263](https://github.com/RocketChat/Rocket.Chat/pull/14263)) +- Role `user` has being added after email verification even for non anonymous users ([#14263](https://github.com/RocketChat/Rocket.Chat/pull/14263) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Role name spacing on Permissions page ([#14625](https://github.com/RocketChat/Rocket.Chat/pull/14625)) +- Role name spacing on Permissions page ([#14625](https://github.com/RocketChat/Rocket.Chat/pull/14625) by [@tassoevan](https://github.com/tassoevan)) -- Room name was undefined in some info dialogs ([#14415](https://github.com/RocketChat/Rocket.Chat/pull/14415)) +- Room name was undefined in some info dialogs ([#14415](https://github.com/RocketChat/Rocket.Chat/pull/14415) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - SAML credentialToken removal was preventing mobile from being able to authenticate ([#14345](https://github.com/RocketChat/Rocket.Chat/pull/14345)) -- Save custom emoji with special characters causes some errors ([#14456](https://github.com/RocketChat/Rocket.Chat/pull/14456)) +- Save custom emoji with special characters causes some errors ([#14456](https://github.com/RocketChat/Rocket.Chat/pull/14456) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Send replyTo for livechat offline messages ([#14568](https://github.com/RocketChat/Rocket.Chat/pull/14568)) +- Send replyTo for livechat offline messages ([#14568](https://github.com/RocketChat/Rocket.Chat/pull/14568) by [@renatobecker](https://github.com/renatobecker)) - Several problems with read-only rooms and muted users ([#11311](https://github.com/RocketChat/Rocket.Chat/pull/11311) by [@Hudell](https://github.com/Hudell)) @@ -15409,15 +15586,15 @@ - Unnecessary meteor.defer on openRoom ([#14396](https://github.com/RocketChat/Rocket.Chat/pull/14396)) -- Unread property of the room's lastMessage object was being wrong some times ([#13919](https://github.com/RocketChat/Rocket.Chat/pull/13919)) +- Unread property of the room's lastMessage object was being wrong some times ([#13919](https://github.com/RocketChat/Rocket.Chat/pull/13919) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Users actions in administration were returning error ([#14400](https://github.com/RocketChat/Rocket.Chat/pull/14400)) +- Users actions in administration were returning error ([#14400](https://github.com/RocketChat/Rocket.Chat/pull/14400) by [@tassoevan](https://github.com/tassoevan)) -- Verify if the user is requesting your own information in users.info ([#14242](https://github.com/RocketChat/Rocket.Chat/pull/14242)) +- Verify if the user is requesting your own information in users.info ([#14242](https://github.com/RocketChat/Rocket.Chat/pull/14242) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Wrong header at Apps admin section ([#14290](https://github.com/RocketChat/Rocket.Chat/pull/14290)) -- Wrong token name was generating error on Gitlab OAuth login ([#14379](https://github.com/RocketChat/Rocket.Chat/pull/14379)) +- Wrong token name was generating error on Gitlab OAuth login ([#14379](https://github.com/RocketChat/Rocket.Chat/pull/14379) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - You must join to view messages in this channel ([#14461](https://github.com/RocketChat/Rocket.Chat/pull/14461)) @@ -15429,23 +15606,23 @@ - [IMPROVEMENT] Add tooltip to to notify user the purpose of back button in discussion ([#13872](https://github.com/RocketChat/Rocket.Chat/pull/13872) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- [IMPROVEMENT] Don't group messages with different alias ([#14257](https://github.com/RocketChat/Rocket.Chat/pull/14257) by [@jungeonkim](https://github.com/jungeonkim)) +- [IMPROVEMENT] Don't group messages with different alias ([#14257](https://github.com/RocketChat/Rocket.Chat/pull/14257) by [@jungeonkim](https://github.com/jungeonkim) & [@tassoevan](https://github.com/tassoevan)) -- [REGRESSION] Fix Slack bridge channel owner on channel creation ([#14565](https://github.com/RocketChat/Rocket.Chat/pull/14565)) +- [REGRESSION] Fix Slack bridge channel owner on channel creation ([#14565](https://github.com/RocketChat/Rocket.Chat/pull/14565) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Add digitalocean button to readme ([#14583](https://github.com/RocketChat/Rocket.Chat/pull/14583)) - Add missing german translations ([#14386](https://github.com/RocketChat/Rocket.Chat/pull/14386) by [@mrsimpson](https://github.com/mrsimpson)) -- Allow removing description, topic and annoucement of rooms(set as empty string) ([#13682](https://github.com/RocketChat/Rocket.Chat/pull/13682)) +- Allow removing description, topic and annoucement of rooms(set as empty string) ([#13682](https://github.com/RocketChat/Rocket.Chat/pull/13682) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Ci improvements ([#14600](https://github.com/RocketChat/Rocket.Chat/pull/14600)) - eslint errors currently on develop ([#14518](https://github.com/RocketChat/Rocket.Chat/pull/14518) by [@Hudell](https://github.com/Hudell)) -- Federation i18n message changes ([#14595](https://github.com/RocketChat/Rocket.Chat/pull/14595)) +- Federation i18n message changes ([#14595](https://github.com/RocketChat/Rocket.Chat/pull/14595) by [@alansikora](https://github.com/alansikora)) -- fix discussions: remove restriction for editing room info, server side ([#14039](https://github.com/RocketChat/Rocket.Chat/pull/14039) by [@mrsimpson](https://github.com/mrsimpson)) +- fix discussions: remove restriction for editing room info, server side ([#14039](https://github.com/RocketChat/Rocket.Chat/pull/14039) by [@mrsimpson](https://github.com/mrsimpson) & [@tassoevan](https://github.com/tassoevan)) - Fix emoji replacing some chars ([#14570](https://github.com/RocketChat/Rocket.Chat/pull/14570)) @@ -15502,6 +15679,8 @@ - [@AnBo83](https://github.com/AnBo83) - [@Hudell](https://github.com/Hudell) - [@Kailash0311](https://github.com/Kailash0311) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@arminfelder](https://github.com/arminfelder) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@bhardwajaditya](https://github.com/bhardwajaditya) @@ -15514,22 +15693,20 @@ - [@mjovanovic0](https://github.com/mjovanovic0) - [@mrsimpson](https://github.com/mrsimpson) - [@mushroomgenie](https://github.com/mushroomgenie) +- [@renatobecker](https://github.com/renatobecker) - [@supra08](https://github.com/supra08) +- [@tassoevan](https://github.com/tassoevan) - [@wreiske](https://github.com/wreiske) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.0.5 `2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -15543,11 +15720,11 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) @@ -15580,23 +15757,23 @@ 🔍 Minor changes -- Release 1.0.3 ([#14446](https://github.com/RocketChat/Rocket.Chat/pull/14446) by [@mrsimpson](https://github.com/mrsimpson)) +- Release 1.0.3 ([#14446](https://github.com/RocketChat/Rocket.Chat/pull/14446) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@mrsimpson](https://github.com/mrsimpson) & [@tassoevan](https://github.com/tassoevan)) ### 👩‍💻👨‍💻 Contributors 😍 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@mrsimpson](https://github.com/mrsimpson) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.0.2 `2019-04-30 · 2 🚀 · 8 🐛 · 6 🔍 · 10 👩‍💻👨‍💻` @@ -15620,17 +15797,17 @@ - Duplicate thread message after editing ([#14330](https://github.com/RocketChat/Rocket.Chat/pull/14330)) -- Missing i18n for some new Permissions ([#14011](https://github.com/RocketChat/Rocket.Chat/pull/14011) by [@lolimay](https://github.com/lolimay)) +- Missing i18n for some new Permissions ([#14011](https://github.com/RocketChat/Rocket.Chat/pull/14011) by [@lolimay](https://github.com/lolimay) & [@tassoevan](https://github.com/tassoevan)) - New day separator rendered over thread reply ([#14328](https://github.com/RocketChat/Rocket.Chat/pull/14328)) -- Remove reference to inexistent field when deleting message in thread ([#14311](https://github.com/RocketChat/Rocket.Chat/pull/14311)) +- Remove reference to inexistent field when deleting message in thread ([#14311](https://github.com/RocketChat/Rocket.Chat/pull/14311) by [@tassoevan](https://github.com/tassoevan)) - show roles on message ([#14313](https://github.com/RocketChat/Rocket.Chat/pull/14313)) -- Unread line and new day separator were not aligned ([#14338](https://github.com/RocketChat/Rocket.Chat/pull/14338)) +- Unread line and new day separator were not aligned ([#14338](https://github.com/RocketChat/Rocket.Chat/pull/14338) by [@tassoevan](https://github.com/tassoevan)) -- View Logs admin page was broken and not rendering color logs ([#14316](https://github.com/RocketChat/Rocket.Chat/pull/14316)) +- View Logs admin page was broken and not rendering color logs ([#14316](https://github.com/RocketChat/Rocket.Chat/pull/14316) by [@tassoevan](https://github.com/tassoevan))
🔍 Minor changes @@ -15640,13 +15817,13 @@ - [Regression] Anonymous user fix ([#14301](https://github.com/RocketChat/Rocket.Chat/pull/14301) by [@knrt10](https://github.com/knrt10)) -- Add cross-browser select arrow positioning ([#14318](https://github.com/RocketChat/Rocket.Chat/pull/14318)) +- Add cross-browser select arrow positioning ([#14318](https://github.com/RocketChat/Rocket.Chat/pull/14318) by [@tassoevan](https://github.com/tassoevan)) - Coerces the MongoDB version string ([#14299](https://github.com/RocketChat/Rocket.Chat/pull/14299) by [@thaiphv](https://github.com/thaiphv)) - i18n: Update German strings ([#14182](https://github.com/RocketChat/Rocket.Chat/pull/14182) by [@AnBo83](https://github.com/AnBo83)) -- Release 1.0.2 ([#14339](https://github.com/RocketChat/Rocket.Chat/pull/14339) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@thaiphv](https://github.com/thaiphv)) +- Release 1.0.2 ([#14339](https://github.com/RocketChat/Rocket.Chat/pull/14339) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@tassoevan](https://github.com/tassoevan) & [@thaiphv](https://github.com/thaiphv))
@@ -15656,6 +15833,7 @@ - [@knrt10](https://github.com/knrt10) - [@lolimay](https://github.com/lolimay) - [@mohamedar97](https://github.com/mohamedar97) +- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) ### 👩‍💻👨‍💻 Core Team 🤓 @@ -15664,7 +15842,6 @@ - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 1.0.1 `2019-04-28 · 7 🐛 · 4 👩‍💻👨‍💻` @@ -15716,34 +15893,34 @@ - Remove deprecated file upload engine Slingshot ([#13724](https://github.com/RocketChat/Rocket.Chat/pull/13724)) -- Remove internal hubot package ([#13522](https://github.com/RocketChat/Rocket.Chat/pull/13522)) +- Remove internal hubot package ([#13522](https://github.com/RocketChat/Rocket.Chat/pull/13522) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Require OPLOG/REPLICASET to run Rocket.Chat ([#14227](https://github.com/RocketChat/Rocket.Chat/pull/14227)) ### 🎉 New features -- - Add setting to request a comment when closing Livechat room ([#13983](https://github.com/RocketChat/Rocket.Chat/pull/13983) by [@knrt10](https://github.com/knrt10)) +- - Add setting to request a comment when closing Livechat room ([#13983](https://github.com/RocketChat/Rocket.Chat/pull/13983) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) - Add an option to delete file in files list ([#13815](https://github.com/RocketChat/Rocket.Chat/pull/13815)) -- Add e-mail field on Livechat Departments ([#13775](https://github.com/RocketChat/Rocket.Chat/pull/13775)) +- Add e-mail field on Livechat Departments ([#13775](https://github.com/RocketChat/Rocket.Chat/pull/13775) by [@renatobecker](https://github.com/renatobecker)) -- Add GET method to fetch Livechat message through REST API ([#14147](https://github.com/RocketChat/Rocket.Chat/pull/14147)) +- Add GET method to fetch Livechat message through REST API ([#14147](https://github.com/RocketChat/Rocket.Chat/pull/14147) by [@renatobecker](https://github.com/renatobecker)) - Add message action to copy message to input as reply ([#12626](https://github.com/RocketChat/Rocket.Chat/pull/12626) by [@mrsimpson](https://github.com/mrsimpson)) -- Add missing remove add leader channel ([#13315](https://github.com/RocketChat/Rocket.Chat/pull/13315) by [@Montel](https://github.com/Montel)) +- Add missing remove add leader channel ([#13315](https://github.com/RocketChat/Rocket.Chat/pull/13315) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Montel](https://github.com/Montel)) - Add offset parameter to channels.history, groups.history, dm.history ([#13310](https://github.com/RocketChat/Rocket.Chat/pull/13310) by [@xbolshe](https://github.com/xbolshe)) - Add parseUrls field to the apps message converter ([#13248](https://github.com/RocketChat/Rocket.Chat/pull/13248)) -- Add support to updatedSince parameter in emoji-custom.list and deprecated old endpoint ([#13510](https://github.com/RocketChat/Rocket.Chat/pull/13510)) +- Add support to updatedSince parameter in emoji-custom.list and deprecated old endpoint ([#13510](https://github.com/RocketChat/Rocket.Chat/pull/13510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Add Voxtelesys to list of SMS providers ([#13697](https://github.com/RocketChat/Rocket.Chat/pull/13697) by [@jhnburke8](https://github.com/jhnburke8) & [@john08burke](https://github.com/john08burke)) -- allow drop files on thread ([#14214](https://github.com/RocketChat/Rocket.Chat/pull/14214)) +- allow drop files on thread ([#14214](https://github.com/RocketChat/Rocket.Chat/pull/14214) by [@tassoevan](https://github.com/tassoevan)) - Allow sending long messages as attachments ([#13819](https://github.com/RocketChat/Rocket.Chat/pull/13819)) @@ -15751,11 +15928,11 @@ - Chatpal: Enable custom search parameters ([#13829](https://github.com/RocketChat/Rocket.Chat/pull/13829) by [@Peym4n](https://github.com/Peym4n)) -- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525)) +- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525) by [@renatobecker](https://github.com/renatobecker)) - Discussions ([#13541](https://github.com/RocketChat/Rocket.Chat/pull/13541) by [@mrsimpson](https://github.com/mrsimpson) & [@vickyokrm](https://github.com/vickyokrm)) -- Federation ([#12370](https://github.com/RocketChat/Rocket.Chat/pull/12370)) +- Federation ([#12370](https://github.com/RocketChat/Rocket.Chat/pull/12370) by [@alansikora](https://github.com/alansikora)) - legal notice page ([#12472](https://github.com/RocketChat/Rocket.Chat/pull/12472) by [@localguru](https://github.com/localguru)) @@ -15767,36 +15944,36 @@ - option to not use nrr (experimental) ([#14224](https://github.com/RocketChat/Rocket.Chat/pull/14224)) -- Permission to assign roles ([#13597](https://github.com/RocketChat/Rocket.Chat/pull/13597)) +- Permission to assign roles ([#13597](https://github.com/RocketChat/Rocket.Chat/pull/13597) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Provide new Livechat client as community feature ([#13723](https://github.com/RocketChat/Rocket.Chat/pull/13723)) +- Provide new Livechat client as community feature ([#13723](https://github.com/RocketChat/Rocket.Chat/pull/13723) by [@renatobecker](https://github.com/renatobecker)) -- reply with a file ([#12095](https://github.com/RocketChat/Rocket.Chat/pull/12095) by [@rssilva](https://github.com/rssilva)) +- reply with a file ([#12095](https://github.com/RocketChat/Rocket.Chat/pull/12095) by [@rssilva](https://github.com/rssilva) & [@tassoevan](https://github.com/tassoevan)) -- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308)) +- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308) by [@renatobecker](https://github.com/renatobecker)) -- Rest endpoints of discussions ([#13987](https://github.com/RocketChat/Rocket.Chat/pull/13987)) +- Rest endpoints of discussions ([#13987](https://github.com/RocketChat/Rocket.Chat/pull/13987) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Rest threads ([#14045](https://github.com/RocketChat/Rocket.Chat/pull/14045)) +- Rest threads ([#14045](https://github.com/RocketChat/Rocket.Chat/pull/14045) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Set up livechat connections created from new client ([#14236](https://github.com/RocketChat/Rocket.Chat/pull/14236)) +- Set up livechat connections created from new client ([#14236](https://github.com/RocketChat/Rocket.Chat/pull/14236) by [@renatobecker](https://github.com/renatobecker)) -- Show department field on Livechat visitor panel ([#13530](https://github.com/RocketChat/Rocket.Chat/pull/13530)) +- Show department field on Livechat visitor panel ([#13530](https://github.com/RocketChat/Rocket.Chat/pull/13530) by [@renatobecker](https://github.com/renatobecker)) - Threads V 1.0 ([#13996](https://github.com/RocketChat/Rocket.Chat/pull/13996)) -- Update message actions ([#14268](https://github.com/RocketChat/Rocket.Chat/pull/14268)) +- Update message actions ([#14268](https://github.com/RocketChat/Rocket.Chat/pull/14268) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - User avatars from external source ([#7929](https://github.com/RocketChat/Rocket.Chat/pull/7929) by [@mjovanovic0](https://github.com/mjovanovic0)) -- users.setActiveStatus endpoint in rest api ([#13443](https://github.com/RocketChat/Rocket.Chat/pull/13443) by [@thayannevls](https://github.com/thayannevls)) +- users.setActiveStatus endpoint in rest api ([#13443](https://github.com/RocketChat/Rocket.Chat/pull/13443) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@thayannevls](https://github.com/thayannevls)) ### 🚀 Improvements - Add decoding for commonName (cn) and displayName attributes for SAML ([#12347](https://github.com/RocketChat/Rocket.Chat/pull/12347) by [@pkolmann](https://github.com/pkolmann)) -- Add department field on find guest method ([#13491](https://github.com/RocketChat/Rocket.Chat/pull/13491)) +- Add department field on find guest method ([#13491](https://github.com/RocketChat/Rocket.Chat/pull/13491) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) - Add index for room's ts ([#13726](https://github.com/RocketChat/Rocket.Chat/pull/13726)) @@ -15808,39 +15985,39 @@ - Attachment download caching ([#14137](https://github.com/RocketChat/Rocket.Chat/pull/14137) by [@wreiske](https://github.com/wreiske)) -- Deprecate fixCordova helper ([#13598](https://github.com/RocketChat/Rocket.Chat/pull/13598)) +- Deprecate fixCordova helper ([#13598](https://github.com/RocketChat/Rocket.Chat/pull/13598) by [@tassoevan](https://github.com/tassoevan)) - Disable X-Powered-By header in all known express middlewares ([#13388](https://github.com/RocketChat/Rocket.Chat/pull/13388)) - End to end tests ([#13401](https://github.com/RocketChat/Rocket.Chat/pull/13401)) -- Filter agents with autocomplete input instead of select element ([#13730](https://github.com/RocketChat/Rocket.Chat/pull/13730)) +- Filter agents with autocomplete input instead of select element ([#13730](https://github.com/RocketChat/Rocket.Chat/pull/13730) by [@renatobecker](https://github.com/renatobecker)) - Get avatar from oauth ([#14131](https://github.com/RocketChat/Rocket.Chat/pull/14131)) -- Ignore agent status when queuing incoming livechats via Guest Pool ([#13818](https://github.com/RocketChat/Rocket.Chat/pull/13818)) +- Ignore agent status when queuing incoming livechats via Guest Pool ([#13818](https://github.com/RocketChat/Rocket.Chat/pull/13818) by [@renatobecker](https://github.com/renatobecker)) - Include more information to help with bug reports and debugging ([#14047](https://github.com/RocketChat/Rocket.Chat/pull/14047)) - Join channels by sending a message or join button (#13752) ([#13752](https://github.com/RocketChat/Rocket.Chat/pull/13752) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- KaTeX and Autolinker message rendering ([#11698](https://github.com/RocketChat/Rocket.Chat/pull/11698)) +- KaTeX and Autolinker message rendering ([#11698](https://github.com/RocketChat/Rocket.Chat/pull/11698) by [@tassoevan](https://github.com/tassoevan)) - Line height on static content pages ([#11673](https://github.com/RocketChat/Rocket.Chat/pull/11673) by [@timkinnane](https://github.com/timkinnane)) - new icons ([#13289](https://github.com/RocketChat/Rocket.Chat/pull/13289)) -- New sidebar item badges, mention links, and ticks ([#14030](https://github.com/RocketChat/Rocket.Chat/pull/14030)) +- New sidebar item badges, mention links, and ticks ([#14030](https://github.com/RocketChat/Rocket.Chat/pull/14030) by [@tassoevan](https://github.com/tassoevan)) - OAuth Role Sync ([#13761](https://github.com/RocketChat/Rocket.Chat/pull/13761) by [@hypery2k](https://github.com/hypery2k)) -- Remove dangling side-nav styles ([#13584](https://github.com/RocketChat/Rocket.Chat/pull/13584)) +- Remove dangling side-nav styles ([#13584](https://github.com/RocketChat/Rocket.Chat/pull/13584) by [@tassoevan](https://github.com/tassoevan)) -- Remove setting to show a livechat is waiting ([#13992](https://github.com/RocketChat/Rocket.Chat/pull/13992)) +- Remove setting to show a livechat is waiting ([#13992](https://github.com/RocketChat/Rocket.Chat/pull/13992) by [@renatobecker](https://github.com/renatobecker)) - Remove unnecessary "File Upload". ([#13743](https://github.com/RocketChat/Rocket.Chat/pull/13743) by [@knrt10](https://github.com/knrt10)) -- Replace livechat inquiry dialog with preview room ([#13986](https://github.com/RocketChat/Rocket.Chat/pull/13986)) +- Replace livechat inquiry dialog with preview room ([#13986](https://github.com/RocketChat/Rocket.Chat/pull/13986) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) - Replaces color #13679A to #1d74f5 ([#13796](https://github.com/RocketChat/Rocket.Chat/pull/13796) by [@fliptrail](https://github.com/fliptrail)) @@ -15865,15 +16042,15 @@ - .bin extension added to attached file names ([#13468](https://github.com/RocketChat/Rocket.Chat/pull/13468) by [@Hudell](https://github.com/Hudell)) -- Ability to activate an app installed by zip even offline ([#13563](https://github.com/RocketChat/Rocket.Chat/pull/13563)) +- Ability to activate an app installed by zip even offline ([#13563](https://github.com/RocketChat/Rocket.Chat/pull/13563) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add custom MIME types for *.ico extension ([#13969](https://github.com/RocketChat/Rocket.Chat/pull/13969)) +- Add custom MIME types for *.ico extension ([#13969](https://github.com/RocketChat/Rocket.Chat/pull/13969) by [@tassoevan](https://github.com/tassoevan)) - Add retries to docker-compose.yml, to wait for MongoDB to be ready ([#13199](https://github.com/RocketChat/Rocket.Chat/pull/13199) by [@tiangolo](https://github.com/tiangolo)) - Adds Proper Language display name for many languages ([#13714](https://github.com/RocketChat/Rocket.Chat/pull/13714) by [@fliptrail](https://github.com/fliptrail)) -- Align burger menu in header with content matching room header ([#14265](https://github.com/RocketChat/Rocket.Chat/pull/14265)) +- Align burger menu in header with content matching room header ([#14265](https://github.com/RocketChat/Rocket.Chat/pull/14265) by [@tassoevan](https://github.com/tassoevan)) - allow user to logout before set username ([#13439](https://github.com/RocketChat/Rocket.Chat/pull/13439)) @@ -15881,15 +16058,15 @@ - Attachments without dates were showing December 31, 1970 ([#13428](https://github.com/RocketChat/Rocket.Chat/pull/13428) by [@wreiske](https://github.com/wreiske)) -- Audio message recording ([#13727](https://github.com/RocketChat/Rocket.Chat/pull/13727)) +- Audio message recording ([#13727](https://github.com/RocketChat/Rocket.Chat/pull/13727) by [@tassoevan](https://github.com/tassoevan)) -- Audio message recording issues ([#13486](https://github.com/RocketChat/Rocket.Chat/pull/13486)) +- Audio message recording issues ([#13486](https://github.com/RocketChat/Rocket.Chat/pull/13486) by [@tassoevan](https://github.com/tassoevan)) -- Auto hide Livechat room from sidebar on close ([#13824](https://github.com/RocketChat/Rocket.Chat/pull/13824) by [@knrt10](https://github.com/knrt10)) +- Auto hide Livechat room from sidebar on close ([#13824](https://github.com/RocketChat/Rocket.Chat/pull/13824) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) - Auto-translate toggle not updating rendered messages ([#14262](https://github.com/RocketChat/Rocket.Chat/pull/14262)) -- Autogrow not working properly for many message boxes ([#14163](https://github.com/RocketChat/Rocket.Chat/pull/14163)) +- Autogrow not working properly for many message boxes ([#14163](https://github.com/RocketChat/Rocket.Chat/pull/14163) by [@tassoevan](https://github.com/tassoevan)) - Avatar fonts for PNG and JPG ([#13681](https://github.com/RocketChat/Rocket.Chat/pull/13681)) @@ -15897,11 +16074,11 @@ - Block User Icon ([#13630](https://github.com/RocketChat/Rocket.Chat/pull/13630) by [@knrt10](https://github.com/knrt10)) -- Bugfix markdown Marked link new tab ([#13245](https://github.com/RocketChat/Rocket.Chat/pull/13245) by [@DeviaVir](https://github.com/DeviaVir)) +- Bugfix markdown Marked link new tab ([#13245](https://github.com/RocketChat/Rocket.Chat/pull/13245) by [@DeviaVir](https://github.com/DeviaVir) & [@tassoevan](https://github.com/tassoevan)) -- Change localStorage keys to work when server is running in a subdir ([#13968](https://github.com/RocketChat/Rocket.Chat/pull/13968)) +- Change localStorage keys to work when server is running in a subdir ([#13968](https://github.com/RocketChat/Rocket.Chat/pull/13968) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Change userId of rate limiter, change to logged user ([#13442](https://github.com/RocketChat/Rocket.Chat/pull/13442)) +- Change userId of rate limiter, change to logged user ([#13442](https://github.com/RocketChat/Rocket.Chat/pull/13442) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Changing Room name updates the webhook ([#13672](https://github.com/RocketChat/Rocket.Chat/pull/13672) by [@knrt10](https://github.com/knrt10)) @@ -15915,47 +16092,47 @@ - Custom Oauth store refresh and id tokens with expiresIn ([#14121](https://github.com/RocketChat/Rocket.Chat/pull/14121) by [@ralfbecker](https://github.com/ralfbecker)) -- Directory and Apps logs page ([#13938](https://github.com/RocketChat/Rocket.Chat/pull/13938)) +- Directory and Apps logs page ([#13938](https://github.com/RocketChat/Rocket.Chat/pull/13938) by [@tassoevan](https://github.com/tassoevan)) -- Display first message when taking Livechat inquiry ([#13896](https://github.com/RocketChat/Rocket.Chat/pull/13896)) +- Display first message when taking Livechat inquiry ([#13896](https://github.com/RocketChat/Rocket.Chat/pull/13896) by [@renatobecker](https://github.com/renatobecker)) -- Do not allow change avatars of another users without permission ([#13629](https://github.com/RocketChat/Rocket.Chat/pull/13629)) +- Do not allow change avatars of another users without permission ([#13629](https://github.com/RocketChat/Rocket.Chat/pull/13629) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Emoji detection at line breaks ([#13447](https://github.com/RocketChat/Rocket.Chat/pull/13447) by [@savish28](https://github.com/savish28)) -- Empty result when getting badge count notification ([#14244](https://github.com/RocketChat/Rocket.Chat/pull/14244)) +- Empty result when getting badge count notification ([#14244](https://github.com/RocketChat/Rocket.Chat/pull/14244) by [@renatobecker](https://github.com/renatobecker)) -- Error when recording data into the connection object ([#13553](https://github.com/RocketChat/Rocket.Chat/pull/13553)) +- Error when recording data into the connection object ([#13553](https://github.com/RocketChat/Rocket.Chat/pull/13553) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341)) +- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix issue cannot filter channels by name ([#12952](https://github.com/RocketChat/Rocket.Chat/pull/12952) by [@huydang284](https://github.com/huydang284)) -- Fix rendering of links in the announcement modal ([#13250](https://github.com/RocketChat/Rocket.Chat/pull/13250) by [@supra08](https://github.com/supra08)) +- Fix rendering of links in the announcement modal ([#13250](https://github.com/RocketChat/Rocket.Chat/pull/13250) by [@supra08](https://github.com/supra08) & [@tassoevan](https://github.com/tassoevan)) - Fix snap refresh hook ([#13702](https://github.com/RocketChat/Rocket.Chat/pull/13702)) -- Fix wrong this scope in Notifications ([#13515](https://github.com/RocketChat/Rocket.Chat/pull/13515)) +- Fix wrong this scope in Notifications ([#13515](https://github.com/RocketChat/Rocket.Chat/pull/13515) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fixed grammatical error. ([#13559](https://github.com/RocketChat/Rocket.Chat/pull/13559) by [@gsunit](https://github.com/gsunit)) - Fixed rocketchat-oembed meta fragment pulling ([#13056](https://github.com/RocketChat/Rocket.Chat/pull/13056) by [@wreiske](https://github.com/wreiske)) -- Fixed text for "bulk-register-user" ([#11558](https://github.com/RocketChat/Rocket.Chat/pull/11558) by [@the4ndy](https://github.com/the4ndy)) +- Fixed text for "bulk-register-user" ([#11558](https://github.com/RocketChat/Rocket.Chat/pull/11558) by [@tassoevan](https://github.com/tassoevan) & [@the4ndy](https://github.com/the4ndy)) - Fixing rooms find by type and name ([#11451](https://github.com/RocketChat/Rocket.Chat/pull/11451) by [@hmagarotto](https://github.com/hmagarotto)) -- Focus on input when emoji picker box is open was not working ([#13981](https://github.com/RocketChat/Rocket.Chat/pull/13981)) +- Focus on input when emoji picker box is open was not working ([#13981](https://github.com/RocketChat/Rocket.Chat/pull/13981) by [@tassoevan](https://github.com/tassoevan)) -- Forwarded Livechat visitor name is not getting updated on the sidebar ([#13783](https://github.com/RocketChat/Rocket.Chat/pull/13783) by [@zolbayars](https://github.com/zolbayars)) +- Forwarded Livechat visitor name is not getting updated on the sidebar ([#13783](https://github.com/RocketChat/Rocket.Chat/pull/13783) by [@renatobecker](https://github.com/renatobecker) & [@zolbayars](https://github.com/zolbayars)) -- Get next Livechat agent endpoint ([#13485](https://github.com/RocketChat/Rocket.Chat/pull/13485)) +- Get next Livechat agent endpoint ([#13485](https://github.com/RocketChat/Rocket.Chat/pull/13485) by [@renatobecker](https://github.com/renatobecker)) -- Groups endpoints permission validations ([#13994](https://github.com/RocketChat/Rocket.Chat/pull/13994)) +- Groups endpoints permission validations ([#13994](https://github.com/RocketChat/Rocket.Chat/pull/13994) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Handle showing/hiding input in messageBox ([#13564](https://github.com/RocketChat/Rocket.Chat/pull/13564)) +- Handle showing/hiding input in messageBox ([#13564](https://github.com/RocketChat/Rocket.Chat/pull/13564) by [@tassoevan](https://github.com/tassoevan)) -- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell)) +- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell) & [@tassoevan](https://github.com/tassoevan)) - Hipchat Enterprise Importer not generating subscriptions ([#13293](https://github.com/RocketChat/Rocket.Chat/pull/13293) by [@Hudell](https://github.com/Hudell)) @@ -15973,11 +16150,11 @@ - link of k8s deploy ([#13612](https://github.com/RocketChat/Rocket.Chat/pull/13612) by [@Mr-Linus](https://github.com/Mr-Linus)) -- Links and upload paths when running in a subdir ([#13982](https://github.com/RocketChat/Rocket.Chat/pull/13982)) +- Links and upload paths when running in a subdir ([#13982](https://github.com/RocketChat/Rocket.Chat/pull/13982) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Livechat office hours ([#14031](https://github.com/RocketChat/Rocket.Chat/pull/14031)) +- Livechat office hours ([#14031](https://github.com/RocketChat/Rocket.Chat/pull/14031) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) -- Livechat user registration in another department ([#10695](https://github.com/RocketChat/Rocket.Chat/pull/10695)) +- Livechat user registration in another department ([#10695](https://github.com/RocketChat/Rocket.Chat/pull/10695) by [@renatobecker](https://github.com/renatobecker)) - Loading theme CSS on first server startup ([#13953](https://github.com/RocketChat/Rocket.Chat/pull/13953)) @@ -15987,21 +16164,21 @@ - Message updating by Apps ([#13294](https://github.com/RocketChat/Rocket.Chat/pull/13294)) -- Minor issues detected after testing the new Livechat client ([#13521](https://github.com/RocketChat/Rocket.Chat/pull/13521)) +- Minor issues detected after testing the new Livechat client ([#13521](https://github.com/RocketChat/Rocket.Chat/pull/13521) by [@renatobecker](https://github.com/renatobecker)) -- Missing connection headers on Livechat REST API ([#14130](https://github.com/RocketChat/Rocket.Chat/pull/14130)) +- Missing connection headers on Livechat REST API ([#14130](https://github.com/RocketChat/Rocket.Chat/pull/14130) by [@renatobecker](https://github.com/renatobecker)) - Mobile view and re-enable E2E tests ([#13322](https://github.com/RocketChat/Rocket.Chat/pull/13322)) -- No new room created when conversation is closed ([#13753](https://github.com/RocketChat/Rocket.Chat/pull/13753) by [@knrt10](https://github.com/knrt10)) +- No new room created when conversation is closed ([#13753](https://github.com/RocketChat/Rocket.Chat/pull/13753) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) -- Non-latin room names and other slugifications ([#13467](https://github.com/RocketChat/Rocket.Chat/pull/13467)) +- Non-latin room names and other slugifications ([#13467](https://github.com/RocketChat/Rocket.Chat/pull/13467) by [@tassoevan](https://github.com/tassoevan)) -- Normalize TAPi18n language string on Livechat widget ([#14012](https://github.com/RocketChat/Rocket.Chat/pull/14012)) +- Normalize TAPi18n language string on Livechat widget ([#14012](https://github.com/RocketChat/Rocket.Chat/pull/14012) by [@renatobecker](https://github.com/renatobecker)) - Obey audio notification preferences ([#14188](https://github.com/RocketChat/Rocket.Chat/pull/14188)) -- Opening a Livechat room from another agent ([#13951](https://github.com/RocketChat/Rocket.Chat/pull/13951)) +- Opening a Livechat room from another agent ([#13951](https://github.com/RocketChat/Rocket.Chat/pull/13951) by [@renatobecker](https://github.com/renatobecker)) - OTR dialog issue ([#13755](https://github.com/RocketChat/Rocket.Chat/pull/13755) by [@knrt10](https://github.com/knrt10)) @@ -16015,37 +16192,37 @@ - Rate Limiter was limiting communication between instances ([#13326](https://github.com/RocketChat/Rocket.Chat/pull/13326)) -- Read Receipt for Livechat Messages fixed ([#13832](https://github.com/RocketChat/Rocket.Chat/pull/13832) by [@knrt10](https://github.com/knrt10)) +- Read Receipt for Livechat Messages fixed ([#13832](https://github.com/RocketChat/Rocket.Chat/pull/13832) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) -- Real names were not displayed in the reactions (API/UI) ([#13495](https://github.com/RocketChat/Rocket.Chat/pull/13495)) +- Real names were not displayed in the reactions (API/UI) ([#13495](https://github.com/RocketChat/Rocket.Chat/pull/13495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) -- Receiving agent for new livechats from REST API ([#14103](https://github.com/RocketChat/Rocket.Chat/pull/14103)) +- Receiving agent for new livechats from REST API ([#14103](https://github.com/RocketChat/Rocket.Chat/pull/14103) by [@renatobecker](https://github.com/renatobecker)) - Remove Room info for Direct Messages (#9383) ([#12429](https://github.com/RocketChat/Rocket.Chat/pull/12429) by [@vinade](https://github.com/vinade)) -- Remove spaces in some i18n files ([#13801](https://github.com/RocketChat/Rocket.Chat/pull/13801)) +- Remove spaces in some i18n files ([#13801](https://github.com/RocketChat/Rocket.Chat/pull/13801) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - renderField template to correct short property usage ([#14148](https://github.com/RocketChat/Rocket.Chat/pull/14148)) - REST endpoint for creating custom emojis ([#13306](https://github.com/RocketChat/Rocket.Chat/pull/13306)) -- Restart required to apply changes in API Rate Limiter settings ([#13451](https://github.com/RocketChat/Rocket.Chat/pull/13451)) +- Restart required to apply changes in API Rate Limiter settings ([#13451](https://github.com/RocketChat/Rocket.Chat/pull/13451) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Right arrows in default HTML content ([#13502](https://github.com/RocketChat/Rocket.Chat/pull/13502)) +- Right arrows in default HTML content ([#13502](https://github.com/RocketChat/Rocket.Chat/pull/13502) by [@tassoevan](https://github.com/tassoevan)) - SAML certificate settings don't follow a pattern ([#14179](https://github.com/RocketChat/Rocket.Chat/pull/14179) by [@Hudell](https://github.com/Hudell)) - Setup wizard calling 'saveSetting' for each field/setting ([#13349](https://github.com/RocketChat/Rocket.Chat/pull/13349)) -- Sidenav does not open on some admin pages ([#14010](https://github.com/RocketChat/Rocket.Chat/pull/14010)) +- Sidenav does not open on some admin pages ([#14010](https://github.com/RocketChat/Rocket.Chat/pull/14010) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) -- Sidenav mouse hover was slow ([#13482](https://github.com/RocketChat/Rocket.Chat/pull/13482)) +- Sidenav mouse hover was slow ([#13482](https://github.com/RocketChat/Rocket.Chat/pull/13482) by [@tassoevan](https://github.com/tassoevan)) -- Slackbridge private channels ([#14273](https://github.com/RocketChat/Rocket.Chat/pull/14273) by [@Hudell](https://github.com/Hudell) & [@nylen](https://github.com/nylen)) +- Slackbridge private channels ([#14273](https://github.com/RocketChat/Rocket.Chat/pull/14273) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@nylen](https://github.com/nylen)) -- Small improvements on message box ([#13444](https://github.com/RocketChat/Rocket.Chat/pull/13444)) +- Small improvements on message box ([#13444](https://github.com/RocketChat/Rocket.Chat/pull/13444) by [@tassoevan](https://github.com/tassoevan)) -- Some Safari bugs ([#13895](https://github.com/RocketChat/Rocket.Chat/pull/13895)) +- Some Safari bugs ([#13895](https://github.com/RocketChat/Rocket.Chat/pull/13895) by [@tassoevan](https://github.com/tassoevan)) - Stop livestream ([#13676](https://github.com/RocketChat/Rocket.Chat/pull/13676)) @@ -16067,9 +16244,9 @@ - VIDEO/JITSI multiple calls before video call ([#13855](https://github.com/RocketChat/Rocket.Chat/pull/13855)) -- View All members button now not in direct room ([#14081](https://github.com/RocketChat/Rocket.Chat/pull/14081) by [@knrt10](https://github.com/knrt10)) +- View All members button now not in direct room ([#14081](https://github.com/RocketChat/Rocket.Chat/pull/14081) by [@knrt10](https://github.com/knrt10) & [@tassoevan](https://github.com/tassoevan)) -- WebRTC wasn't working duo to design and browser's APIs changes ([#13675](https://github.com/RocketChat/Rocket.Chat/pull/13675)) +- WebRTC wasn't working duo to design and browser's APIs changes ([#13675](https://github.com/RocketChat/Rocket.Chat/pull/13675) by [@tassoevan](https://github.com/tassoevan)) - wrong importing of e2e ([#13863](https://github.com/RocketChat/Rocket.Chat/pull/13863)) @@ -16081,67 +16258,67 @@ 🔍 Minor changes -- Convert rocketchat-apps to main module structure ([#13409](https://github.com/RocketChat/Rocket.Chat/pull/13409)) +- Convert rocketchat-apps to main module structure ([#13409](https://github.com/RocketChat/Rocket.Chat/pull/13409) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-lib to main module structure ([#13415](https://github.com/RocketChat/Rocket.Chat/pull/13415)) +- Convert rocketchat-lib to main module structure ([#13415](https://github.com/RocketChat/Rocket.Chat/pull/13415) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix some imports from wrong packages, remove exports and files unused in rc-ui ([#13422](https://github.com/RocketChat/Rocket.Chat/pull/13422)) +- Fix some imports from wrong packages, remove exports and files unused in rc-ui ([#13422](https://github.com/RocketChat/Rocket.Chat/pull/13422) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Import missed functions to remove dependency of RC namespace ([#13414](https://github.com/RocketChat/Rocket.Chat/pull/13414)) +- Import missed functions to remove dependency of RC namespace ([#13414](https://github.com/RocketChat/Rocket.Chat/pull/13414) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in livechat/client ([#13370](https://github.com/RocketChat/Rocket.Chat/pull/13370)) +- Remove dependency of RC namespace in livechat/client ([#13370](https://github.com/RocketChat/Rocket.Chat/pull/13370) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-integrations and importer-hipchat-enterprise ([#13386](https://github.com/RocketChat/Rocket.Chat/pull/13386)) +- Remove dependency of RC namespace in rc-integrations and importer-hipchat-enterprise ([#13386](https://github.com/RocketChat/Rocket.Chat/pull/13386) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-livechat/server/publications ([#13383](https://github.com/RocketChat/Rocket.Chat/pull/13383)) +- Remove dependency of RC namespace in rc-livechat/server/publications ([#13383](https://github.com/RocketChat/Rocket.Chat/pull/13383) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-message-pin and message-snippet ([#13343](https://github.com/RocketChat/Rocket.Chat/pull/13343)) +- Remove dependency of RC namespace in rc-message-pin and message-snippet ([#13343](https://github.com/RocketChat/Rocket.Chat/pull/13343) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-oembed and rc-otr ([#13345](https://github.com/RocketChat/Rocket.Chat/pull/13345)) +- Remove dependency of RC namespace in rc-oembed and rc-otr ([#13345](https://github.com/RocketChat/Rocket.Chat/pull/13345) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-reactions, retention-policy and search ([#13347](https://github.com/RocketChat/Rocket.Chat/pull/13347)) +- Remove dependency of RC namespace in rc-reactions, retention-policy and search ([#13347](https://github.com/RocketChat/Rocket.Chat/pull/13347) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-slash-archiveroom, create, help, hide, invite, inviteall and join ([#13356](https://github.com/RocketChat/Rocket.Chat/pull/13356)) +- Remove dependency of RC namespace in rc-slash-archiveroom, create, help, hide, invite, inviteall and join ([#13356](https://github.com/RocketChat/Rocket.Chat/pull/13356) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-smarsh-connector, sms and spotify ([#13358](https://github.com/RocketChat/Rocket.Chat/pull/13358)) +- Remove dependency of RC namespace in rc-smarsh-connector, sms and spotify ([#13358](https://github.com/RocketChat/Rocket.Chat/pull/13358) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-statistics and tokenpass ([#13359](https://github.com/RocketChat/Rocket.Chat/pull/13359)) +- Remove dependency of RC namespace in rc-statistics and tokenpass ([#13359](https://github.com/RocketChat/Rocket.Chat/pull/13359) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-ui-master, ui-message- user-data-download and version-check ([#13365](https://github.com/RocketChat/Rocket.Chat/pull/13365)) +- Remove dependency of RC namespace in rc-ui-master, ui-message- user-data-download and version-check ([#13365](https://github.com/RocketChat/Rocket.Chat/pull/13365) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-ui, ui-account and ui-admin ([#13361](https://github.com/RocketChat/Rocket.Chat/pull/13361)) +- Remove dependency of RC namespace in rc-ui, ui-account and ui-admin ([#13361](https://github.com/RocketChat/Rocket.Chat/pull/13361) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-videobridge and webdav ([#13366](https://github.com/RocketChat/Rocket.Chat/pull/13366)) +- Remove dependency of RC namespace in rc-videobridge and webdav ([#13366](https://github.com/RocketChat/Rocket.Chat/pull/13366) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root client folder, imports/message-read-receipt and imports/personal-access-tokens ([#13389](https://github.com/RocketChat/Rocket.Chat/pull/13389)) +- Remove dependency of RC namespace in root client folder, imports/message-read-receipt and imports/personal-access-tokens ([#13389](https://github.com/RocketChat/Rocket.Chat/pull/13389) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root server folder - step 1 ([#13390](https://github.com/RocketChat/Rocket.Chat/pull/13390)) +- Remove dependency of RC namespace in root server folder - step 1 ([#13390](https://github.com/RocketChat/Rocket.Chat/pull/13390) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root server folder - step 4 ([#13400](https://github.com/RocketChat/Rocket.Chat/pull/13400)) +- Remove dependency of RC namespace in root server folder - step 4 ([#13400](https://github.com/RocketChat/Rocket.Chat/pull/13400) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove functions from globals ([#13421](https://github.com/RocketChat/Rocket.Chat/pull/13421)) +- Remove functions from globals ([#13421](https://github.com/RocketChat/Rocket.Chat/pull/13421) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove LIvechat global variable from RC namespace ([#13378](https://github.com/RocketChat/Rocket.Chat/pull/13378)) +- Remove LIvechat global variable from RC namespace ([#13378](https://github.com/RocketChat/Rocket.Chat/pull/13378) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove unused files and code in rc-lib - step 1 ([#13416](https://github.com/RocketChat/Rocket.Chat/pull/13416)) +- Remove unused files and code in rc-lib - step 1 ([#13416](https://github.com/RocketChat/Rocket.Chat/pull/13416) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove unused files and code in rc-lib - step 3 ([#13420](https://github.com/RocketChat/Rocket.Chat/pull/13420)) +- Remove unused files and code in rc-lib - step 3 ([#13420](https://github.com/RocketChat/Rocket.Chat/pull/13420) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove unused files in rc-lib - step 2 ([#13419](https://github.com/RocketChat/Rocket.Chat/pull/13419)) +- Remove unused files in rc-lib - step 2 ([#13419](https://github.com/RocketChat/Rocket.Chat/pull/13419) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - [BUG] Icon Fixed for Knowledge base on Livechat ([#13806](https://github.com/RocketChat/Rocket.Chat/pull/13806) by [@knrt10](https://github.com/knrt10)) -- [New] Reply privately to group messages ([#14150](https://github.com/RocketChat/Rocket.Chat/pull/14150) by [@bhardwajaditya](https://github.com/bhardwajaditya)) +- [New] Reply privately to group messages ([#14150](https://github.com/RocketChat/Rocket.Chat/pull/14150) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@bhardwajaditya](https://github.com/bhardwajaditya)) -- [Regression] Fix integrations message example ([#14111](https://github.com/RocketChat/Rocket.Chat/pull/14111)) +- [Regression] Fix integrations message example ([#14111](https://github.com/RocketChat/Rocket.Chat/pull/14111) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - [REGRESSION] Fix variable name references in message template ([#14184](https://github.com/RocketChat/Rocket.Chat/pull/14184)) -- [REGRESSION] Messages sent by livechat's guests are losing sender info ([#14174](https://github.com/RocketChat/Rocket.Chat/pull/14174)) +- [REGRESSION] Messages sent by livechat's guests are losing sender info ([#14174](https://github.com/RocketChat/Rocket.Chat/pull/14174) by [@renatobecker](https://github.com/renatobecker)) - [Regression] Personal Access Token list fixed ([#14216](https://github.com/RocketChat/Rocket.Chat/pull/14216) by [@knrt10](https://github.com/knrt10)) -- Add better positioning for tooltips on edges ([#13472](https://github.com/RocketChat/Rocket.Chat/pull/13472)) +- Add better positioning for tooltips on edges ([#13472](https://github.com/RocketChat/Rocket.Chat/pull/13472) by [@tassoevan](https://github.com/tassoevan)) - Add Houston config ([#13707](https://github.com/RocketChat/Rocket.Chat/pull/13707)) @@ -16149,29 +16326,29 @@ - Add support to search for all users in directory ([#13803](https://github.com/RocketChat/Rocket.Chat/pull/13803)) -- Added federation ping, loopback and dashboard ([#14007](https://github.com/RocketChat/Rocket.Chat/pull/14007)) +- Added federation ping, loopback and dashboard ([#14007](https://github.com/RocketChat/Rocket.Chat/pull/14007) by [@alansikora](https://github.com/alansikora)) - Adds French translation of Personal Access Token ([#13779](https://github.com/RocketChat/Rocket.Chat/pull/13779) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Allow set env var METEOR_OPLOG_TOO_FAR_BEHIND ([#14017](https://github.com/RocketChat/Rocket.Chat/pull/14017)) -- Broken styles in Administration's contextual bar ([#14222](https://github.com/RocketChat/Rocket.Chat/pull/14222)) +- Broken styles in Administration's contextual bar ([#14222](https://github.com/RocketChat/Rocket.Chat/pull/14222) by [@tassoevan](https://github.com/tassoevan)) -- Change dynamic dependency of FileUpload in Messages models ([#13776](https://github.com/RocketChat/Rocket.Chat/pull/13776)) +- Change dynamic dependency of FileUpload in Messages models ([#13776](https://github.com/RocketChat/Rocket.Chat/pull/13776) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Change the way to resolve DNS for Federation ([#13695](https://github.com/RocketChat/Rocket.Chat/pull/13695)) +- Change the way to resolve DNS for Federation ([#13695](https://github.com/RocketChat/Rocket.Chat/pull/13695) by [@alansikora](https://github.com/alansikora)) - Convert imports to relative paths ([#13740](https://github.com/RocketChat/Rocket.Chat/pull/13740)) -- Convert rc-nrr and slashcommands open to main module structure ([#13520](https://github.com/RocketChat/Rocket.Chat/pull/13520)) +- Convert rc-nrr and slashcommands open to main module structure ([#13520](https://github.com/RocketChat/Rocket.Chat/pull/13520) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- created function to allow change default values, fix loading search users ([#14177](https://github.com/RocketChat/Rocket.Chat/pull/14177)) +- created function to allow change default values, fix loading search users ([#14177](https://github.com/RocketChat/Rocket.Chat/pull/14177) by [@tassoevan](https://github.com/tassoevan)) - Depack: Use mainModule for root files ([#13508](https://github.com/RocketChat/Rocket.Chat/pull/13508)) -- Depackaging ([#13483](https://github.com/RocketChat/Rocket.Chat/pull/13483)) +- Depackaging ([#13483](https://github.com/RocketChat/Rocket.Chat/pull/13483) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Deprecate /api/v1/info in favor of /api/info ([#13798](https://github.com/RocketChat/Rocket.Chat/pull/13798)) +- Deprecate /api/v1/info in favor of /api/info ([#13798](https://github.com/RocketChat/Rocket.Chat/pull/13798) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - ESLint: Add more import rules ([#14226](https://github.com/RocketChat/Rocket.Chat/pull/14226)) @@ -16193,23 +16370,23 @@ - Fix room re-rendering ([#14044](https://github.com/RocketChat/Rocket.Chat/pull/14044)) -- Fix sending message from action buttons in messages ([#14101](https://github.com/RocketChat/Rocket.Chat/pull/14101)) +- Fix sending message from action buttons in messages ([#14101](https://github.com/RocketChat/Rocket.Chat/pull/14101) by [@tassoevan](https://github.com/tassoevan)) - Fix sending notifications to mentions on threads and discussion email sender ([#14043](https://github.com/RocketChat/Rocket.Chat/pull/14043)) - Fix shield indentation ([#14048](https://github.com/RocketChat/Rocket.Chat/pull/14048)) -- Fix threads rendering performance ([#14059](https://github.com/RocketChat/Rocket.Chat/pull/14059)) +- Fix threads rendering performance ([#14059](https://github.com/RocketChat/Rocket.Chat/pull/14059) by [@tassoevan](https://github.com/tassoevan)) - Fix threads tests ([#14180](https://github.com/RocketChat/Rocket.Chat/pull/14180)) -- Fix top bar unread message counter ([#14102](https://github.com/RocketChat/Rocket.Chat/pull/14102)) +- Fix top bar unread message counter ([#14102](https://github.com/RocketChat/Rocket.Chat/pull/14102) by [@tassoevan](https://github.com/tassoevan)) - Fix update apps capability of updating messages ([#14118](https://github.com/RocketChat/Rocket.Chat/pull/14118)) - Fix wrong imports ([#13601](https://github.com/RocketChat/Rocket.Chat/pull/13601)) -- Fix: addRoomAccessValidator method created for Threads ([#13789](https://github.com/RocketChat/Rocket.Chat/pull/13789)) +- Fix: addRoomAccessValidator method created for Threads ([#13789](https://github.com/RocketChat/Rocket.Chat/pull/13789) by [@renatobecker](https://github.com/renatobecker)) - Fix: Error when version check endpoint was returning invalid data ([#14089](https://github.com/RocketChat/Rocket.Chat/pull/14089)) @@ -16217,17 +16394,17 @@ - Fix: Mongo.setConnectionOptions was not being set correctly ([#13586](https://github.com/RocketChat/Rocket.Chat/pull/13586)) -- Fix: Remove message class `sequential` if `new-day` is present ([#14116](https://github.com/RocketChat/Rocket.Chat/pull/14116)) +- Fix: Remove message class `sequential` if `new-day` is present ([#14116](https://github.com/RocketChat/Rocket.Chat/pull/14116) by [@tassoevan](https://github.com/tassoevan)) - Fix: Skip thread notifications on message edit ([#14100](https://github.com/RocketChat/Rocket.Chat/pull/14100)) -- Fix: Some german translations ([#13299](https://github.com/RocketChat/Rocket.Chat/pull/13299) by [@soenkef](https://github.com/soenkef)) +- Fix: Some german translations ([#13299](https://github.com/RocketChat/Rocket.Chat/pull/13299) by [@soenkef](https://github.com/soenkef) & [@tassoevan](https://github.com/tassoevan)) - Fix: Tests were not exiting RC instances ([#14054](https://github.com/RocketChat/Rocket.Chat/pull/14054)) -- Force some words to translate in other languages ([#13367](https://github.com/RocketChat/Rocket.Chat/pull/13367) by [@soltanabadiyan](https://github.com/soltanabadiyan)) +- Force some words to translate in other languages ([#13367](https://github.com/RocketChat/Rocket.Chat/pull/13367) by [@soltanabadiyan](https://github.com/soltanabadiyan) & [@tassoevan](https://github.com/tassoevan)) -- Force unstyling of blockquote under .message-body--unstyled ([#14274](https://github.com/RocketChat/Rocket.Chat/pull/14274)) +- Force unstyling of blockquote under .message-body--unstyled ([#14274](https://github.com/RocketChat/Rocket.Chat/pull/14274) by [@tassoevan](https://github.com/tassoevan)) - Improve message validation ([#14266](https://github.com/RocketChat/Rocket.Chat/pull/14266)) @@ -16237,7 +16414,7 @@ - Improve: Send cloud token to Federation Hub ([#13651](https://github.com/RocketChat/Rocket.Chat/pull/13651)) -- Improve: Support search and adding federated users through regular endpoints ([#13936](https://github.com/RocketChat/Rocket.Chat/pull/13936)) +- Improve: Support search and adding federated users through regular endpoints ([#13936](https://github.com/RocketChat/Rocket.Chat/pull/13936) by [@alansikora](https://github.com/alansikora)) - Increment user counter on DMs ([#14185](https://github.com/RocketChat/Rocket.Chat/pull/14185)) @@ -16255,49 +16432,49 @@ - Lingohub sync and additional fixes ([#13825](https://github.com/RocketChat/Rocket.Chat/pull/13825)) -- Merge master into develop & Set version to 1.0.0-develop ([#13435](https://github.com/RocketChat/Rocket.Chat/pull/13435) by [@Hudell](https://github.com/Hudell) & [@TkTech](https://github.com/TkTech) & [@theundefined](https://github.com/theundefined)) +- Merge master into develop & Set version to 1.0.0-develop ([#13435](https://github.com/RocketChat/Rocket.Chat/pull/13435) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@TkTech](https://github.com/TkTech) & [@renatobecker](https://github.com/renatobecker) & [@theundefined](https://github.com/theundefined)) - Move LDAP Escape to login handler ([#14234](https://github.com/RocketChat/Rocket.Chat/pull/14234)) - Move mongo config away from cors package ([#13531](https://github.com/RocketChat/Rocket.Chat/pull/13531)) -- Move rc-livechat server models to rc-models ([#13384](https://github.com/RocketChat/Rocket.Chat/pull/13384)) +- Move rc-livechat server models to rc-models ([#13384](https://github.com/RocketChat/Rocket.Chat/pull/13384) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - New threads layout ([#14269](https://github.com/RocketChat/Rocket.Chat/pull/14269)) - OpenShift custom OAuth support ([#13925](https://github.com/RocketChat/Rocket.Chat/pull/13925) by [@bsharrow](https://github.com/bsharrow)) -- Prevent click on reply thread to trigger flex tab closing ([#14215](https://github.com/RocketChat/Rocket.Chat/pull/14215)) +- Prevent click on reply thread to trigger flex tab closing ([#14215](https://github.com/RocketChat/Rocket.Chat/pull/14215) by [@tassoevan](https://github.com/tassoevan)) - Prevent error for ldap login with invalid characters ([#14160](https://github.com/RocketChat/Rocket.Chat/pull/14160)) -- Prevent error on normalize thread message for preview ([#14170](https://github.com/RocketChat/Rocket.Chat/pull/14170)) +- Prevent error on normalize thread message for preview ([#14170](https://github.com/RocketChat/Rocket.Chat/pull/14170) by [@tassoevan](https://github.com/tassoevan)) - Prioritize user-mentions badge ([#14057](https://github.com/RocketChat/Rocket.Chat/pull/14057)) -- Proper thread quote, clear message box on send, and other nice things to have ([#14049](https://github.com/RocketChat/Rocket.Chat/pull/14049)) +- Proper thread quote, clear message box on send, and other nice things to have ([#14049](https://github.com/RocketChat/Rocket.Chat/pull/14049) by [@tassoevan](https://github.com/tassoevan)) - Regression: Active room was not being marked ([#14276](https://github.com/RocketChat/Rocket.Chat/pull/14276)) -- Regression: Add debounce on admin users search to avoid blocking by DDP Rate Limiter ([#13529](https://github.com/RocketChat/Rocket.Chat/pull/13529)) +- Regression: Add debounce on admin users search to avoid blocking by DDP Rate Limiter ([#13529](https://github.com/RocketChat/Rocket.Chat/pull/13529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Regression: Add missing translations used in Apps pages ([#13674](https://github.com/RocketChat/Rocket.Chat/pull/13674)) +- Regression: Add missing translations used in Apps pages ([#13674](https://github.com/RocketChat/Rocket.Chat/pull/13674) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Admin embedded layout ([#14229](https://github.com/RocketChat/Rocket.Chat/pull/14229)) +- Regression: Admin embedded layout ([#14229](https://github.com/RocketChat/Rocket.Chat/pull/14229) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Broken UI for messages ([#14223](https://github.com/RocketChat/Rocket.Chat/pull/14223)) +- Regression: Broken UI for messages ([#14223](https://github.com/RocketChat/Rocket.Chat/pull/14223) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Cursor position set to beginning when editing a message ([#14245](https://github.com/RocketChat/Rocket.Chat/pull/14245)) +- Regression: Cursor position set to beginning when editing a message ([#14245](https://github.com/RocketChat/Rocket.Chat/pull/14245) by [@tassoevan](https://github.com/tassoevan)) - Regression: Discussions - Invite users and DM ([#13646](https://github.com/RocketChat/Rocket.Chat/pull/13646)) -- Regression: Discussions were not showing on Tab Bar ([#14050](https://github.com/RocketChat/Rocket.Chat/pull/14050) by [@knrt10](https://github.com/knrt10)) +- Regression: Discussions were not showing on Tab Bar ([#14050](https://github.com/RocketChat/Rocket.Chat/pull/14050) by [@knrt10](https://github.com/knrt10) & [@tassoevan](https://github.com/tassoevan)) - Regression: Exception on notification when adding someone in room via mention ([#14251](https://github.com/RocketChat/Rocket.Chat/pull/14251)) - Regression: fix app pages styles ([#13567](https://github.com/RocketChat/Rocket.Chat/pull/13567)) -- Regression: Fix autolinker that was not parsing urls correctly ([#13497](https://github.com/RocketChat/Rocket.Chat/pull/13497)) +- Regression: Fix autolinker that was not parsing urls correctly ([#13497](https://github.com/RocketChat/Rocket.Chat/pull/13497) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: fix drop file ([#14225](https://github.com/RocketChat/Rocket.Chat/pull/14225)) @@ -16307,23 +16484,23 @@ - Regression: Fix icon for DMs ([#13679](https://github.com/RocketChat/Rocket.Chat/pull/13679)) -- Regression: Fix wrong imports in rc-models ([#13516](https://github.com/RocketChat/Rocket.Chat/pull/13516)) +- Regression: Fix wrong imports in rc-models ([#13516](https://github.com/RocketChat/Rocket.Chat/pull/13516) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: grouping messages on threads ([#14238](https://github.com/RocketChat/Rocket.Chat/pull/14238)) -- Regression: Message box does not go back to initial state after sending a message ([#14161](https://github.com/RocketChat/Rocket.Chat/pull/14161)) +- Regression: Message box does not go back to initial state after sending a message ([#14161](https://github.com/RocketChat/Rocket.Chat/pull/14161) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Message box geolocation was throwing error ([#13496](https://github.com/RocketChat/Rocket.Chat/pull/13496)) +- Regression: Message box geolocation was throwing error ([#13496](https://github.com/RocketChat/Rocket.Chat/pull/13496) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) -- Regression: Missing settings import at `packages/rocketchat-livechat/server/methods/saveAppearance.js` ([#13573](https://github.com/RocketChat/Rocket.Chat/pull/13573)) +- Regression: Missing settings import at `packages/rocketchat-livechat/server/methods/saveAppearance.js` ([#13573](https://github.com/RocketChat/Rocket.Chat/pull/13573) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: Not updating subscriptions and not showing desktop notifcations ([#13509](https://github.com/RocketChat/Rocket.Chat/pull/13509)) -- Regression: Prevent startup errors for mentions parsing ([#14219](https://github.com/RocketChat/Rocket.Chat/pull/14219)) +- Regression: Prevent startup errors for mentions parsing ([#14219](https://github.com/RocketChat/Rocket.Chat/pull/14219) by [@tassoevan](https://github.com/tassoevan)) - Regression: Prune Threads ([#13683](https://github.com/RocketChat/Rocket.Chat/pull/13683)) -- Regression: Remove border from unstyled message body ([#14235](https://github.com/RocketChat/Rocket.Chat/pull/14235)) +- Regression: Remove border from unstyled message body ([#14235](https://github.com/RocketChat/Rocket.Chat/pull/14235) by [@tassoevan](https://github.com/tassoevan)) - Regression: removed backup files ([#13729](https://github.com/RocketChat/Rocket.Chat/pull/13729)) @@ -16331,85 +16508,85 @@ - Regression: Sidebar create new channel hover text ([#13658](https://github.com/RocketChat/Rocket.Chat/pull/13658) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Regression: System messages styling ([#14189](https://github.com/RocketChat/Rocket.Chat/pull/14189)) +- Regression: System messages styling ([#14189](https://github.com/RocketChat/Rocket.Chat/pull/14189) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Table admin pages ([#13411](https://github.com/RocketChat/Rocket.Chat/pull/13411)) +- Regression: Table admin pages ([#13411](https://github.com/RocketChat/Rocket.Chat/pull/13411) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Template error ([#13410](https://github.com/RocketChat/Rocket.Chat/pull/13410)) +- Regression: Template error ([#13410](https://github.com/RocketChat/Rocket.Chat/pull/13410) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Threads styles improvement ([#13741](https://github.com/RocketChat/Rocket.Chat/pull/13741)) +- Regression: Threads styles improvement ([#13741](https://github.com/RocketChat/Rocket.Chat/pull/13741) by [@tassoevan](https://github.com/tassoevan)) - Regression: User autocomplete was not listing users from correct room ([#14125](https://github.com/RocketChat/Rocket.Chat/pull/14125)) - Regression: User Discussions join message ([#13656](https://github.com/RocketChat/Rocket.Chat/pull/13656) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Regression: wrong expression at messageBox.actions.remove() ([#14192](https://github.com/RocketChat/Rocket.Chat/pull/14192)) +- Regression: wrong expression at messageBox.actions.remove() ([#14192](https://github.com/RocketChat/Rocket.Chat/pull/14192) by [@tassoevan](https://github.com/tassoevan)) - Remove bitcoin link in Readme.md since the link is broken ([#13935](https://github.com/RocketChat/Rocket.Chat/pull/13935) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Remove dependency of RC namespace in rc-livechat/imports, lib, server/api, server/hooks and server/lib ([#13379](https://github.com/RocketChat/Rocket.Chat/pull/13379)) +- Remove dependency of RC namespace in rc-livechat/imports, lib, server/api, server/hooks and server/lib ([#13379](https://github.com/RocketChat/Rocket.Chat/pull/13379) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-livechat/server/methods ([#13382](https://github.com/RocketChat/Rocket.Chat/pull/13382)) +- Remove dependency of RC namespace in rc-livechat/server/methods ([#13382](https://github.com/RocketChat/Rocket.Chat/pull/13382) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-livechat/server/models ([#13377](https://github.com/RocketChat/Rocket.Chat/pull/13377)) +- Remove dependency of RC namespace in rc-livechat/server/models ([#13377](https://github.com/RocketChat/Rocket.Chat/pull/13377) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-oauth2-server and message-star ([#13344](https://github.com/RocketChat/Rocket.Chat/pull/13344)) +- Remove dependency of RC namespace in rc-oauth2-server and message-star ([#13344](https://github.com/RocketChat/Rocket.Chat/pull/13344) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-setup-wizard, slackbridge and asciiarts ([#13348](https://github.com/RocketChat/Rocket.Chat/pull/13348)) +- Remove dependency of RC namespace in rc-setup-wizard, slackbridge and asciiarts ([#13348](https://github.com/RocketChat/Rocket.Chat/pull/13348) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-slash-kick, leave, me, msg, mute, open, topic and unarchiveroom ([#13357](https://github.com/RocketChat/Rocket.Chat/pull/13357)) +- Remove dependency of RC namespace in rc-slash-kick, leave, me, msg, mute, open, topic and unarchiveroom ([#13357](https://github.com/RocketChat/Rocket.Chat/pull/13357) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-ui-clean-history, ui-admin and ui-login ([#13362](https://github.com/RocketChat/Rocket.Chat/pull/13362)) +- Remove dependency of RC namespace in rc-ui-clean-history, ui-admin and ui-login ([#13362](https://github.com/RocketChat/Rocket.Chat/pull/13362) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in rc-wordpress, chatpal-search and irc ([#13492](https://github.com/RocketChat/Rocket.Chat/pull/13492)) +- Remove dependency of RC namespace in rc-wordpress, chatpal-search and irc ([#13492](https://github.com/RocketChat/Rocket.Chat/pull/13492) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root server folder - step 2 ([#13397](https://github.com/RocketChat/Rocket.Chat/pull/13397)) +- Remove dependency of RC namespace in root server folder - step 2 ([#13397](https://github.com/RocketChat/Rocket.Chat/pull/13397) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root server folder - step 3 ([#13398](https://github.com/RocketChat/Rocket.Chat/pull/13398)) +- Remove dependency of RC namespace in root server folder - step 3 ([#13398](https://github.com/RocketChat/Rocket.Chat/pull/13398) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root server folder - step 5 ([#13402](https://github.com/RocketChat/Rocket.Chat/pull/13402)) +- Remove dependency of RC namespace in root server folder - step 5 ([#13402](https://github.com/RocketChat/Rocket.Chat/pull/13402) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RC namespace in root server folder - step 6 ([#13405](https://github.com/RocketChat/Rocket.Chat/pull/13405)) +- Remove dependency of RC namespace in root server folder - step 6 ([#13405](https://github.com/RocketChat/Rocket.Chat/pull/13405) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove Npm.depends and Npm.require except those that are inside package.js ([#13518](https://github.com/RocketChat/Rocket.Chat/pull/13518)) +- Remove Npm.depends and Npm.require except those that are inside package.js ([#13518](https://github.com/RocketChat/Rocket.Chat/pull/13518) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove Package references ([#13523](https://github.com/RocketChat/Rocket.Chat/pull/13523)) +- Remove Package references ([#13523](https://github.com/RocketChat/Rocket.Chat/pull/13523) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Remove Sandstorm support ([#13773](https://github.com/RocketChat/Rocket.Chat/pull/13773)) -- Remove some bad references to messageBox ([#13954](https://github.com/RocketChat/Rocket.Chat/pull/13954)) +- Remove some bad references to messageBox ([#13954](https://github.com/RocketChat/Rocket.Chat/pull/13954) by [@tassoevan](https://github.com/tassoevan)) - Remove some index.js files routing for server/client files ([#13772](https://github.com/RocketChat/Rocket.Chat/pull/13772)) -- Remove unused files ([#13833](https://github.com/RocketChat/Rocket.Chat/pull/13833)) +- Remove unused files ([#13833](https://github.com/RocketChat/Rocket.Chat/pull/13833) by [@tassoevan](https://github.com/tassoevan)) - Remove unused files ([#13725](https://github.com/RocketChat/Rocket.Chat/pull/13725)) -- Remove unused style ([#13834](https://github.com/RocketChat/Rocket.Chat/pull/13834)) +- Remove unused style ([#13834](https://github.com/RocketChat/Rocket.Chat/pull/13834) by [@tassoevan](https://github.com/tassoevan)) - Removed old templates ([#13406](https://github.com/RocketChat/Rocket.Chat/pull/13406)) -- Removing (almost) every dynamic imports ([#13767](https://github.com/RocketChat/Rocket.Chat/pull/13767)) +- Removing (almost) every dynamic imports ([#13767](https://github.com/RocketChat/Rocket.Chat/pull/13767) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Rename Cloud to Connectivity Services & split Apps in Apps and Marketplace ([#14211](https://github.com/RocketChat/Rocket.Chat/pull/14211)) - Rename Threads to Discussion ([#13782](https://github.com/RocketChat/Rocket.Chat/pull/13782)) -- Settings: disable reset button ([#14026](https://github.com/RocketChat/Rocket.Chat/pull/14026)) +- Settings: disable reset button ([#14026](https://github.com/RocketChat/Rocket.Chat/pull/14026) by [@alansikora](https://github.com/alansikora)) -- Settings: hiding reset button for readonly fields ([#14025](https://github.com/RocketChat/Rocket.Chat/pull/14025)) +- Settings: hiding reset button for readonly fields ([#14025](https://github.com/RocketChat/Rocket.Chat/pull/14025) by [@alansikora](https://github.com/alansikora)) - Show discussion avatar ([#14053](https://github.com/RocketChat/Rocket.Chat/pull/14053)) - Small improvements to federation callbacks/hooks ([#13946](https://github.com/RocketChat/Rocket.Chat/pull/13946)) -- Smaller thread replies and system messages ([#14099](https://github.com/RocketChat/Rocket.Chat/pull/14099)) +- Smaller thread replies and system messages ([#14099](https://github.com/RocketChat/Rocket.Chat/pull/14099) by [@tassoevan](https://github.com/tassoevan)) -- Unify mime-type package configuration ([#14217](https://github.com/RocketChat/Rocket.Chat/pull/14217)) +- Unify mime-type package configuration ([#14217](https://github.com/RocketChat/Rocket.Chat/pull/14217) by [@tassoevan](https://github.com/tassoevan)) - Unstuck observers every minute ([#14076](https://github.com/RocketChat/Rocket.Chat/pull/14076)) -- Update badges and mention links colors ([#14071](https://github.com/RocketChat/Rocket.Chat/pull/14071)) +- Update badges and mention links colors ([#14071](https://github.com/RocketChat/Rocket.Chat/pull/14071) by [@tassoevan](https://github.com/tassoevan)) - Update eslint config ([#13966](https://github.com/RocketChat/Rocket.Chat/pull/13966)) @@ -16421,9 +16598,9 @@ - Use CircleCI Debian Stretch images ([#13906](https://github.com/RocketChat/Rocket.Chat/pull/13906)) -- Use main message as thread tab title ([#14213](https://github.com/RocketChat/Rocket.Chat/pull/14213)) +- Use main message as thread tab title ([#14213](https://github.com/RocketChat/Rocket.Chat/pull/14213) by [@tassoevan](https://github.com/tassoevan)) -- Use own logic to get thread infos via REST ([#14210](https://github.com/RocketChat/Rocket.Chat/pull/14210)) +- Use own logic to get thread infos via REST ([#14210](https://github.com/RocketChat/Rocket.Chat/pull/14210) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - User remove role dialog fixed ([#13874](https://github.com/RocketChat/Rocket.Chat/pull/13874) by [@bhardwajaditya](https://github.com/bhardwajaditya)) @@ -16436,11 +16613,13 @@ - [@DeviaVir](https://github.com/DeviaVir) - [@Hudell](https://github.com/Hudell) - [@Kailash0311](https://github.com/Kailash0311) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@MohammedEssehemy](https://github.com/MohammedEssehemy) - [@Montel](https://github.com/Montel) - [@Mr-Linus](https://github.com/Mr-Linus) - [@Peym4n](https://github.com/Peym4n) - [@TkTech](https://github.com/TkTech) +- [@alansikora](https://github.com/alansikora) - [@algomaster99](https://github.com/algomaster99) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@bhardwajaditya](https://github.com/bhardwajaditya) @@ -16461,12 +16640,14 @@ - [@nylen](https://github.com/nylen) - [@pkolmann](https://github.com/pkolmann) - [@ralfbecker](https://github.com/ralfbecker) +- [@renatobecker](https://github.com/renatobecker) - [@rssilva](https://github.com/rssilva) - [@savish28](https://github.com/savish28) - [@soenkef](https://github.com/soenkef) - [@soltanabadiyan](https://github.com/soltanabadiyan) - [@steerben](https://github.com/steerben) - [@supra08](https://github.com/supra08) +- [@tassoevan](https://github.com/tassoevan) - [@thayannevls](https://github.com/thayannevls) - [@the4ndy](https://github.com/the4ndy) - [@theundefined](https://github.com/theundefined) @@ -16484,18 +16665,14 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.74.3 `2019-02-13 · 3 🚀 · 11 🐛 · 3 🔍 · 9 👩‍💻👨‍💻` @@ -16517,25 +16694,25 @@ ### 🐛 Bug fixes -- "Test Desktop Notifications" not triggering a notification ([#13457](https://github.com/RocketChat/Rocket.Chat/pull/13457)) +- "Test Desktop Notifications" not triggering a notification ([#13457](https://github.com/RocketChat/Rocket.Chat/pull/13457) by [@tassoevan](https://github.com/tassoevan)) -- Invalid condition on getting next livechat agent over REST API endpoint ([#13360](https://github.com/RocketChat/Rocket.Chat/pull/13360)) +- Invalid condition on getting next livechat agent over REST API endpoint ([#13360](https://github.com/RocketChat/Rocket.Chat/pull/13360) by [@renatobecker](https://github.com/renatobecker)) - Invalid push gateway configuration, requires the uniqueId ([#13423](https://github.com/RocketChat/Rocket.Chat/pull/13423)) -- Misaligned upload progress bar "cancel" button ([#13407](https://github.com/RocketChat/Rocket.Chat/pull/13407)) +- Misaligned upload progress bar "cancel" button ([#13407](https://github.com/RocketChat/Rocket.Chat/pull/13407) by [@tassoevan](https://github.com/tassoevan)) - Not translated emails ([#13452](https://github.com/RocketChat/Rocket.Chat/pull/13452)) -- Notify private settings changes even on public settings changed ([#13369](https://github.com/RocketChat/Rocket.Chat/pull/13369)) +- Notify private settings changes even on public settings changed ([#13369](https://github.com/RocketChat/Rocket.Chat/pull/13369) by [@tassoevan](https://github.com/tassoevan)) -- Properly escape custom emoji names for pattern matching ([#13408](https://github.com/RocketChat/Rocket.Chat/pull/13408)) +- Properly escape custom emoji names for pattern matching ([#13408](https://github.com/RocketChat/Rocket.Chat/pull/13408) by [@tassoevan](https://github.com/tassoevan)) - Several Problems on HipChat Importer ([#13336](https://github.com/RocketChat/Rocket.Chat/pull/13336) by [@Hudell](https://github.com/Hudell)) - Translated and incorrect i18n variables ([#13463](https://github.com/RocketChat/Rocket.Chat/pull/13463) by [@leonboot](https://github.com/leonboot)) -- Update Russian localization ([#13244](https://github.com/RocketChat/Rocket.Chat/pull/13244) by [@BehindLoader](https://github.com/BehindLoader)) +- Update Russian localization ([#13244](https://github.com/RocketChat/Rocket.Chat/pull/13244) by [@BehindLoader](https://github.com/BehindLoader) & [@tassoevan](https://github.com/tassoevan)) - XML-decryption module not found ([#13437](https://github.com/RocketChat/Rocket.Chat/pull/13437) by [@Hudell](https://github.com/Hudell)) @@ -16545,7 +16722,7 @@ - Regression: Remove console.log on email translations ([#13456](https://github.com/RocketChat/Rocket.Chat/pull/13456)) -- Release 0.74.3 ([#13474](https://github.com/RocketChat/Rocket.Chat/pull/13474) by [@BehindLoader](https://github.com/BehindLoader) & [@Hudell](https://github.com/Hudell) & [@leonboot](https://github.com/leonboot)) +- Release 0.74.3 ([#13474](https://github.com/RocketChat/Rocket.Chat/pull/13474) by [@BehindLoader](https://github.com/BehindLoader) & [@Hudell](https://github.com/Hudell) & [@leonboot](https://github.com/leonboot) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) - Room loading improvements ([#13471](https://github.com/RocketChat/Rocket.Chat/pull/13471)) @@ -16556,15 +16733,15 @@ - [@BehindLoader](https://github.com/BehindLoader) - [@Hudell](https://github.com/Hudell) - [@leonboot](https://github.com/leonboot) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.74.2 `2019-02-05 · 1 🚀 · 3 🐛 · 4 👩‍💻👨‍💻` @@ -16608,18 +16785,18 @@ - Add parseUrls field to the apps message converter ([#13248](https://github.com/RocketChat/Rocket.Chat/pull/13248)) -- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525)) +- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525) by [@renatobecker](https://github.com/renatobecker)) - Limit all DDP/Websocket requests (configurable via admin panel) ([#13311](https://github.com/RocketChat/Rocket.Chat/pull/13311)) -- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308)) +- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308) by [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes -- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341)) +- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell)) +- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell) & [@tassoevan](https://github.com/tassoevan)) - Hipchat Enterprise Importer not generating subscriptions ([#13293](https://github.com/RocketChat/Rocket.Chat/pull/13293) by [@Hudell](https://github.com/Hudell)) @@ -16642,16 +16819,16 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.74.0 `2019-01-28 · 11 🎉 · 11 🚀 · 15 🐛 · 36 🔍 · 22 👩‍💻👨‍💻` @@ -16664,25 +16841,25 @@ ### 🎉 New features -- Add Allow Methods directive to CORS ([#13073](https://github.com/RocketChat/Rocket.Chat/pull/13073)) +- Add Allow Methods directive to CORS ([#13073](https://github.com/RocketChat/Rocket.Chat/pull/13073) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add create, update and delete endpoint for custom emojis ([#13160](https://github.com/RocketChat/Rocket.Chat/pull/13160)) +- Add create, update and delete endpoint for custom emojis ([#13160](https://github.com/RocketChat/Rocket.Chat/pull/13160) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add new Livechat REST endpoint to update the visitor's status ([#13108](https://github.com/RocketChat/Rocket.Chat/pull/13108)) +- Add new Livechat REST endpoint to update the visitor's status ([#13108](https://github.com/RocketChat/Rocket.Chat/pull/13108) by [@renatobecker](https://github.com/renatobecker)) -- Add rate limiter to REST endpoints ([#11251](https://github.com/RocketChat/Rocket.Chat/pull/11251)) +- Add rate limiter to REST endpoints ([#11251](https://github.com/RocketChat/Rocket.Chat/pull/11251) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Added an option to disable email when activate and deactivate users ([#13183](https://github.com/RocketChat/Rocket.Chat/pull/13183)) +- Added an option to disable email when activate and deactivate users ([#13183](https://github.com/RocketChat/Rocket.Chat/pull/13183) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Added endpoint to update timeout of the jitsi video conference ([#13167](https://github.com/RocketChat/Rocket.Chat/pull/13167)) +- Added endpoint to update timeout of the jitsi video conference ([#13167](https://github.com/RocketChat/Rocket.Chat/pull/13167) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Added stream to notify when agent status change ([#13076](https://github.com/RocketChat/Rocket.Chat/pull/13076)) +- Added stream to notify when agent status change ([#13076](https://github.com/RocketChat/Rocket.Chat/pull/13076) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Cloud Integration ([#13013](https://github.com/RocketChat/Rocket.Chat/pull/13013)) - Display total number of files and total upload size in admin ([#13184](https://github.com/RocketChat/Rocket.Chat/pull/13184)) -- Livechat GDPR compliance ([#12982](https://github.com/RocketChat/Rocket.Chat/pull/12982)) +- Livechat GDPR compliance ([#12982](https://github.com/RocketChat/Rocket.Chat/pull/12982) by [@renatobecker](https://github.com/renatobecker)) - SAML: Adds possibility to decrypt encrypted assertions ([#12153](https://github.com/RocketChat/Rocket.Chat/pull/12153) by [@gerbsen](https://github.com/gerbsen)) @@ -16693,7 +16870,7 @@ - Adds history log for all Importers and improves HipChat import performance ([#13083](https://github.com/RocketChat/Rocket.Chat/pull/13083) by [@Hudell](https://github.com/Hudell)) -- Adds the "showConnecting" property to Livechat Config payload ([#13158](https://github.com/RocketChat/Rocket.Chat/pull/13158)) +- Adds the "showConnecting" property to Livechat Config payload ([#13158](https://github.com/RocketChat/Rocket.Chat/pull/13158) by [@renatobecker](https://github.com/renatobecker)) - Change the way the app detail screen shows support link when it's an email ([#13129](https://github.com/RocketChat/Rocket.Chat/pull/13129)) @@ -16701,15 +16878,15 @@ - Inject metrics on callbacks ([#13266](https://github.com/RocketChat/Rocket.Chat/pull/13266)) -- New Livechat statistics added to statistics collector ([#13168](https://github.com/RocketChat/Rocket.Chat/pull/13168)) +- New Livechat statistics added to statistics collector ([#13168](https://github.com/RocketChat/Rocket.Chat/pull/13168) by [@renatobecker](https://github.com/renatobecker)) - Persian translations ([#13114](https://github.com/RocketChat/Rocket.Chat/pull/13114) by [@behnejad](https://github.com/behnejad)) - Process alerts from update checking ([#13194](https://github.com/RocketChat/Rocket.Chat/pull/13194)) -- Return room type field on Livechat findRoom method ([#13078](https://github.com/RocketChat/Rocket.Chat/pull/13078)) +- Return room type field on Livechat findRoom method ([#13078](https://github.com/RocketChat/Rocket.Chat/pull/13078) by [@renatobecker](https://github.com/renatobecker)) -- Return visitorEmails field on Livechat findGuest method ([#13097](https://github.com/RocketChat/Rocket.Chat/pull/13097)) +- Return visitorEmails field on Livechat findGuest method ([#13097](https://github.com/RocketChat/Rocket.Chat/pull/13097) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes @@ -16720,7 +16897,7 @@ - Change input type of e2e to password ([#13077](https://github.com/RocketChat/Rocket.Chat/pull/13077) by [@supra08](https://github.com/supra08)) -- Change webdav creation, due to changes in the npm lib after last update ([#13170](https://github.com/RocketChat/Rocket.Chat/pull/13170)) +- Change webdav creation, due to changes in the npm lib after last update ([#13170](https://github.com/RocketChat/Rocket.Chat/pull/13170) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Emoticons not displayed in room topic ([#12858](https://github.com/RocketChat/Rocket.Chat/pull/12858) by [@alexbartsch](https://github.com/alexbartsch)) @@ -16730,13 +16907,13 @@ - Notifications for mentions not working on large rooms and don't emit desktop notifications for offline users ([#13067](https://github.com/RocketChat/Rocket.Chat/pull/13067)) -- Remove ES6 code from Livechat widget script ([#13105](https://github.com/RocketChat/Rocket.Chat/pull/13105)) +- Remove ES6 code from Livechat widget script ([#13105](https://github.com/RocketChat/Rocket.Chat/pull/13105) by [@tassoevan](https://github.com/tassoevan)) - Remove unused code for Cordova ([#13188](https://github.com/RocketChat/Rocket.Chat/pull/13188)) - REST api client base url on subdir ([#13180](https://github.com/RocketChat/Rocket.Chat/pull/13180)) -- REST API endpoint `users.getPersonalAccessTokens` error when user has no access tokens ([#13150](https://github.com/RocketChat/Rocket.Chat/pull/13150)) +- REST API endpoint `users.getPersonalAccessTokens` error when user has no access tokens ([#13150](https://github.com/RocketChat/Rocket.Chat/pull/13150) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Snap upgrade add post-refresh hook ([#13153](https://github.com/RocketChat/Rocket.Chat/pull/13153)) @@ -16748,75 +16925,75 @@ 🔍 Minor changes -- Remove dependency of RocketChat namespace and push-notifications ([#13137](https://github.com/RocketChat/Rocket.Chat/pull/13137)) +- Remove dependency of RocketChat namespace and push-notifications ([#13137](https://github.com/RocketChat/Rocket.Chat/pull/13137) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Change apps engine persistence bridge method to updateByAssociations ([#13239](https://github.com/RocketChat/Rocket.Chat/pull/13239)) -- Convert rocketchat-file-upload to main module structure ([#13094](https://github.com/RocketChat/Rocket.Chat/pull/13094)) +- Convert rocketchat-file-upload to main module structure ([#13094](https://github.com/RocketChat/Rocket.Chat/pull/13094) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-master to main module structure ([#13107](https://github.com/RocketChat/Rocket.Chat/pull/13107)) +- Convert rocketchat-ui-master to main module structure ([#13107](https://github.com/RocketChat/Rocket.Chat/pull/13107) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-sidenav to main module structure ([#13098](https://github.com/RocketChat/Rocket.Chat/pull/13098)) +- Convert rocketchat-ui-sidenav to main module structure ([#13098](https://github.com/RocketChat/Rocket.Chat/pull/13098) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-webrtc to main module structure ([#13117](https://github.com/RocketChat/Rocket.Chat/pull/13117)) +- Convert rocketchat-webrtc to main module structure ([#13117](https://github.com/RocketChat/Rocket.Chat/pull/13117) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat:ui to main module structure ([#13132](https://github.com/RocketChat/Rocket.Chat/pull/13132)) +- Convert rocketchat:ui to main module structure ([#13132](https://github.com/RocketChat/Rocket.Chat/pull/13132) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Globals/main module custom oauth ([#13037](https://github.com/RocketChat/Rocket.Chat/pull/13037)) +- Globals/main module custom oauth ([#13037](https://github.com/RocketChat/Rocket.Chat/pull/13037) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Globals/move rocketchat notifications ([#13035](https://github.com/RocketChat/Rocket.Chat/pull/13035)) +- Globals/move rocketchat notifications ([#13035](https://github.com/RocketChat/Rocket.Chat/pull/13035) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Language: Edit typo "Обновлить" ([#13177](https://github.com/RocketChat/Rocket.Chat/pull/13177) by [@zpavlig](https://github.com/zpavlig)) - LingoHub based on develop ([#13201](https://github.com/RocketChat/Rocket.Chat/pull/13201)) -- Merge master into develop & Set version to 0.74.0-develop ([#13050](https://github.com/RocketChat/Rocket.Chat/pull/13050) by [@Hudell](https://github.com/Hudell) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan)) +- Merge master into develop & Set version to 0.74.0-develop ([#13050](https://github.com/RocketChat/Rocket.Chat/pull/13050) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) -- Move rocketchat models ([#13027](https://github.com/RocketChat/Rocket.Chat/pull/13027)) +- Move rocketchat models ([#13027](https://github.com/RocketChat/Rocket.Chat/pull/13027) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move rocketchat promises ([#13039](https://github.com/RocketChat/Rocket.Chat/pull/13039)) +- Move rocketchat promises ([#13039](https://github.com/RocketChat/Rocket.Chat/pull/13039) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move rocketchat settings to specific package ([#13026](https://github.com/RocketChat/Rocket.Chat/pull/13026)) +- Move rocketchat settings to specific package ([#13026](https://github.com/RocketChat/Rocket.Chat/pull/13026) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move some function to utils ([#13122](https://github.com/RocketChat/Rocket.Chat/pull/13122)) +- Move some function to utils ([#13122](https://github.com/RocketChat/Rocket.Chat/pull/13122) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move some ui function to ui-utils ([#13123](https://github.com/RocketChat/Rocket.Chat/pull/13123)) +- Move some ui function to ui-utils ([#13123](https://github.com/RocketChat/Rocket.Chat/pull/13123) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move UI Collections to rocketchat:models ([#13064](https://github.com/RocketChat/Rocket.Chat/pull/13064)) +- Move UI Collections to rocketchat:models ([#13064](https://github.com/RocketChat/Rocket.Chat/pull/13064) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move/create rocketchat callbacks ([#13034](https://github.com/RocketChat/Rocket.Chat/pull/13034)) +- Move/create rocketchat callbacks ([#13034](https://github.com/RocketChat/Rocket.Chat/pull/13034) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move/create rocketchat metrics ([#13032](https://github.com/RocketChat/Rocket.Chat/pull/13032)) +- Move/create rocketchat metrics ([#13032](https://github.com/RocketChat/Rocket.Chat/pull/13032) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: Fix audio message upload ([#13224](https://github.com/RocketChat/Rocket.Chat/pull/13224)) - Regression: Fix emoji search ([#13207](https://github.com/RocketChat/Rocket.Chat/pull/13207)) -- Regression: Fix export AudioRecorder ([#13192](https://github.com/RocketChat/Rocket.Chat/pull/13192)) +- Regression: Fix export AudioRecorder ([#13192](https://github.com/RocketChat/Rocket.Chat/pull/13192) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: fix rooms model's collection name ([#13146](https://github.com/RocketChat/Rocket.Chat/pull/13146)) - Regression: fix upload permissions ([#13157](https://github.com/RocketChat/Rocket.Chat/pull/13157)) -- Release 0.74.0 ([#13270](https://github.com/RocketChat/Rocket.Chat/pull/13270) by [@Xuhao](https://github.com/Xuhao) & [@supra08](https://github.com/supra08)) +- Release 0.74.0 ([#13270](https://github.com/RocketChat/Rocket.Chat/pull/13270) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Xuhao](https://github.com/Xuhao) & [@supra08](https://github.com/supra08) & [@tassoevan](https://github.com/tassoevan)) -- Remove dependency between lib and authz ([#13066](https://github.com/RocketChat/Rocket.Chat/pull/13066)) +- Remove dependency between lib and authz ([#13066](https://github.com/RocketChat/Rocket.Chat/pull/13066) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency between RocketChat namespace and migrations ([#13133](https://github.com/RocketChat/Rocket.Chat/pull/13133)) +- Remove dependency between RocketChat namespace and migrations ([#13133](https://github.com/RocketChat/Rocket.Chat/pull/13133) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RocketChat namespace and custom-sounds ([#13136](https://github.com/RocketChat/Rocket.Chat/pull/13136)) +- Remove dependency of RocketChat namespace and custom-sounds ([#13136](https://github.com/RocketChat/Rocket.Chat/pull/13136) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RocketChat namespace and logger ([#13135](https://github.com/RocketChat/Rocket.Chat/pull/13135)) +- Remove dependency of RocketChat namespace and logger ([#13135](https://github.com/RocketChat/Rocket.Chat/pull/13135) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove dependency of RocketChat namespace inside rocketchat:ui ([#13131](https://github.com/RocketChat/Rocket.Chat/pull/13131)) +- Remove dependency of RocketChat namespace inside rocketchat:ui ([#13131](https://github.com/RocketChat/Rocket.Chat/pull/13131) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove directly dependency between lib and e2e ([#13115](https://github.com/RocketChat/Rocket.Chat/pull/13115)) +- Remove directly dependency between lib and e2e ([#13115](https://github.com/RocketChat/Rocket.Chat/pull/13115) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove directly dependency between rocketchat:lib and emoji ([#13118](https://github.com/RocketChat/Rocket.Chat/pull/13118)) +- Remove directly dependency between rocketchat:lib and emoji ([#13118](https://github.com/RocketChat/Rocket.Chat/pull/13118) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove incorrect pt-BR translation ([#13074](https://github.com/RocketChat/Rocket.Chat/pull/13074)) +- Remove incorrect pt-BR translation ([#13074](https://github.com/RocketChat/Rocket.Chat/pull/13074) by [@tassoevan](https://github.com/tassoevan)) -- Rocketchat mailer ([#13036](https://github.com/RocketChat/Rocket.Chat/pull/13036)) +- Rocketchat mailer ([#13036](https://github.com/RocketChat/Rocket.Chat/pull/13036) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Test only MongoDB with oplog versions 3.2 and 4.0 for PRs ([#13119](https://github.com/RocketChat/Rocket.Chat/pull/13119)) @@ -16827,28 +17004,28 @@ - [@Hudell](https://github.com/Hudell) - [@Jeroeny](https://github.com/Jeroeny) - [@Kailash0311](https://github.com/Kailash0311) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Xuhao](https://github.com/Xuhao) - [@alexbartsch](https://github.com/alexbartsch) - [@behnejad](https://github.com/behnejad) - [@gerbsen](https://github.com/gerbsen) - [@ohmonster](https://github.com/ohmonster) - [@piotrkochan](https://github.com/piotrkochan) +- [@renatobecker](https://github.com/renatobecker) - [@supra08](https://github.com/supra08) +- [@tassoevan](https://github.com/tassoevan) - [@zpavlig](https://github.com/zpavlig) ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.73.2 `2019-01-07 · 1 🎉 · 1 🔍 · 3 👩‍💻👨‍💻` @@ -16924,29 +17101,29 @@ - /api/v1/spotlight: return joinCodeRequired field for rooms ([#12651](https://github.com/RocketChat/Rocket.Chat/pull/12651) by [@cardoso](https://github.com/cardoso)) -- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309)) +- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add query parameter support to emoji-custom endpoint ([#12754](https://github.com/RocketChat/Rocket.Chat/pull/12754)) +- Add query parameter support to emoji-custom endpoint ([#12754](https://github.com/RocketChat/Rocket.Chat/pull/12754) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Added a link to contributing.md ([#12856](https://github.com/RocketChat/Rocket.Chat/pull/12856) by [@sanketsingh24](https://github.com/sanketsingh24)) -- Added chat.getDeletedMessages since specific date ([#13010](https://github.com/RocketChat/Rocket.Chat/pull/13010)) +- Added chat.getDeletedMessages since specific date ([#13010](https://github.com/RocketChat/Rocket.Chat/pull/13010) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Config hooks for snap ([#12351](https://github.com/RocketChat/Rocket.Chat/pull/12351)) -- Create new permission.listAll endpoint to be able to use updatedSince parameter ([#12748](https://github.com/RocketChat/Rocket.Chat/pull/12748)) +- Create new permission.listAll endpoint to be able to use updatedSince parameter ([#12748](https://github.com/RocketChat/Rocket.Chat/pull/12748) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Download button for each file in fileslist ([#12874](https://github.com/RocketChat/Rocket.Chat/pull/12874) by [@alexbartsch](https://github.com/alexbartsch)) +- Download button for each file in fileslist ([#12874](https://github.com/RocketChat/Rocket.Chat/pull/12874) by [@alexbartsch](https://github.com/alexbartsch) & [@tassoevan](https://github.com/tassoevan)) - Include message type & id in push notification payload ([#12771](https://github.com/RocketChat/Rocket.Chat/pull/12771) by [@cardoso](https://github.com/cardoso)) -- Livechat registration form message ([#12597](https://github.com/RocketChat/Rocket.Chat/pull/12597)) +- Livechat registration form message ([#12597](https://github.com/RocketChat/Rocket.Chat/pull/12597) by [@renatobecker](https://github.com/renatobecker)) -- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378)) +- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378) by [@tassoevan](https://github.com/tassoevan)) - Mandatory 2fa for role ([#9748](https://github.com/RocketChat/Rocket.Chat/pull/9748) by [@Hudell](https://github.com/Hudell) & [@karlprieb](https://github.com/karlprieb)) -- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623)) +- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Option to reset e2e key ([#12483](https://github.com/RocketChat/Rocket.Chat/pull/12483) by [@Hudell](https://github.com/Hudell)) @@ -16965,15 +17142,15 @@ - Add more methods to deal with rooms via Rocket.Chat.Apps ([#12680](https://github.com/RocketChat/Rocket.Chat/pull/12680)) -- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561)) +- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561) by [@renatobecker](https://github.com/renatobecker)) -- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105)) +- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Adding debugging instructions in README ([#12989](https://github.com/RocketChat/Rocket.Chat/pull/12989) by [@hypery2k](https://github.com/hypery2k)) - Allow apps to update persistence by association ([#12714](https://github.com/RocketChat/Rocket.Chat/pull/12714)) -- Allow transfer Livechats to online agents only ([#13008](https://github.com/RocketChat/Rocket.Chat/pull/13008)) +- Allow transfer Livechats to online agents only ([#13008](https://github.com/RocketChat/Rocket.Chat/pull/13008) by [@renatobecker](https://github.com/renatobecker)) - Atlassian Crowd settings and option to sync user data ([#12616](https://github.com/RocketChat/Rocket.Chat/pull/12616)) @@ -16991,17 +17168,17 @@ - Hipchat Enterprise Importer ([#12985](https://github.com/RocketChat/Rocket.Chat/pull/12985) by [@Hudell](https://github.com/Hudell)) -- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522)) +- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522) by [@renatobecker](https://github.com/renatobecker)) -- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563)) +- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Japanese translations ([#12382](https://github.com/RocketChat/Rocket.Chat/pull/12382) by [@ura14h](https://github.com/ura14h)) -- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@vinade](https://github.com/vinade)) +- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@tassoevan](https://github.com/tassoevan) & [@vinade](https://github.com/vinade)) -- Returning an open room object in the Livechat config endpoint ([#12865](https://github.com/RocketChat/Rocket.Chat/pull/12865)) +- Returning an open room object in the Livechat config endpoint ([#12865](https://github.com/RocketChat/Rocket.Chat/pull/12865) by [@renatobecker](https://github.com/renatobecker)) -- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock)) +- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock) & [@tassoevan](https://github.com/tassoevan)) - Use MongoBD aggregation to get users from a room ([#12566](https://github.com/RocketChat/Rocket.Chat/pull/12566)) @@ -17020,21 +17197,21 @@ - Autotranslate icon on message action menu ([#12585](https://github.com/RocketChat/Rocket.Chat/pull/12585)) -- Avoiding links with highlighted words ([#12123](https://github.com/RocketChat/Rocket.Chat/pull/12123) by [@rssilva](https://github.com/rssilva)) +- Avoiding links with highlighted words ([#12123](https://github.com/RocketChat/Rocket.Chat/pull/12123) by [@rssilva](https://github.com/rssilva) & [@tassoevan](https://github.com/tassoevan)) - cannot reset password ([#12903](https://github.com/RocketChat/Rocket.Chat/pull/12903) by [@Hudell](https://github.com/Hudell)) - CAS Login not working with renamed users ([#12860](https://github.com/RocketChat/Rocket.Chat/pull/12860) by [@Hudell](https://github.com/Hudell)) -- Change field checks in RocketChat.saveStreamingOptions ([#12973](https://github.com/RocketChat/Rocket.Chat/pull/12973)) +- Change field checks in RocketChat.saveStreamingOptions ([#12973](https://github.com/RocketChat/Rocket.Chat/pull/12973) by [@tassoevan](https://github.com/tassoevan)) -- Change JSON to EJSON.parse query to support type Date ([#12706](https://github.com/RocketChat/Rocket.Chat/pull/12706)) +- Change JSON to EJSON.parse query to support type Date ([#12706](https://github.com/RocketChat/Rocket.Chat/pull/12706) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb)) +- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb) & [@tassoevan](https://github.com/tassoevan)) -- Check for object falsehood before referencing properties in saveRoomSettings ([#12972](https://github.com/RocketChat/Rocket.Chat/pull/12972)) +- Check for object falsehood before referencing properties in saveRoomSettings ([#12972](https://github.com/RocketChat/Rocket.Chat/pull/12972) by [@tassoevan](https://github.com/tassoevan)) -- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632)) +- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632) by [@tassoevan](https://github.com/tassoevan)) - Correct roomName value in Mail Messages (#12363) ([#12453](https://github.com/RocketChat/Rocket.Chat/pull/12453) by [@vinade](https://github.com/vinade)) @@ -17044,7 +17221,7 @@ - DE translation for idle-time-limit ([#12637](https://github.com/RocketChat/Rocket.Chat/pull/12637) by [@pfuender](https://github.com/pfuender)) -- Download files without extension wasn't possible ([#13033](https://github.com/RocketChat/Rocket.Chat/pull/13033)) +- Download files without extension wasn't possible ([#13033](https://github.com/RocketChat/Rocket.Chat/pull/13033) by [@tassoevan](https://github.com/tassoevan)) - E2E`s password reaveal text is always `>%S` when language is zh ([#12795](https://github.com/RocketChat/Rocket.Chat/pull/12795) by [@lvyue](https://github.com/lvyue)) @@ -17054,13 +17231,13 @@ - Exception in getSingleMessage ([#12970](https://github.com/RocketChat/Rocket.Chat/pull/12970) by [@tsukiRep](https://github.com/tsukiRep)) -- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643)) +- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix set avatar http call, to avoid SSL errors ([#12790](https://github.com/RocketChat/Rocket.Chat/pull/12790)) +- Fix set avatar http call, to avoid SSL errors ([#12790](https://github.com/RocketChat/Rocket.Chat/pull/12790) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix users.setPreferences endpoint, set language correctly ([#12734](https://github.com/RocketChat/Rocket.Chat/pull/12734)) +- Fix users.setPreferences endpoint, set language correctly ([#12734](https://github.com/RocketChat/Rocket.Chat/pull/12734) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408)) +- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fixed Anonymous Registration ([#12633](https://github.com/RocketChat/Rocket.Chat/pull/12633) by [@wreiske](https://github.com/wreiske)) @@ -17068,17 +17245,17 @@ - Google Cloud Storage storage provider ([#12843](https://github.com/RocketChat/Rocket.Chat/pull/12843)) -- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507)) +- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507) by [@tassoevan](https://github.com/tassoevan)) - high cpu usage ~ svg icon ([#12677](https://github.com/RocketChat/Rocket.Chat/pull/12677) by [@ph1p](https://github.com/ph1p)) -- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570)) +- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Incorrect parameter name in Livechat stream ([#12851](https://github.com/RocketChat/Rocket.Chat/pull/12851)) +- Incorrect parameter name in Livechat stream ([#12851](https://github.com/RocketChat/Rocket.Chat/pull/12851) by [@renatobecker](https://github.com/renatobecker)) -- Inherit font family in message user card ([#13004](https://github.com/RocketChat/Rocket.Chat/pull/13004)) +- Inherit font family in message user card ([#13004](https://github.com/RocketChat/Rocket.Chat/pull/13004) by [@tassoevan](https://github.com/tassoevan)) -- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900)) +- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900) by [@tassoevan](https://github.com/tassoevan)) - Manage own integrations permissions check ([#12397](https://github.com/RocketChat/Rocket.Chat/pull/12397)) @@ -17086,41 +17263,41 @@ - Nested Markdown blocks not parsed properly ([#12998](https://github.com/RocketChat/Rocket.Chat/pull/12998) by [@Hudell](https://github.com/Hudell)) -- Padding for message box in embedded layout ([#12556](https://github.com/RocketChat/Rocket.Chat/pull/12556)) +- Padding for message box in embedded layout ([#12556](https://github.com/RocketChat/Rocket.Chat/pull/12556) by [@tassoevan](https://github.com/tassoevan)) -- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882)) +- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882) by [@tassoevan](https://github.com/tassoevan)) -- Pin and unpin message were not checking permissions ([#12739](https://github.com/RocketChat/Rocket.Chat/pull/12739)) +- Pin and unpin message were not checking permissions ([#12739](https://github.com/RocketChat/Rocket.Chat/pull/12739) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558)) +- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Provide better Dutch translations 🇳🇱 ([#12792](https://github.com/RocketChat/Rocket.Chat/pull/12792) by [@mathysie](https://github.com/mathysie)) +- Provide better Dutch translations 🇳🇱 ([#12792](https://github.com/RocketChat/Rocket.Chat/pull/12792) by [@mathysie](https://github.com/mathysie) & [@tassoevan](https://github.com/tassoevan)) - Readable validation on the apps engine environment bridge ([#12994](https://github.com/RocketChat/Rocket.Chat/pull/12994)) -- Remove sharp's deprecation warnings on image upload ([#12980](https://github.com/RocketChat/Rocket.Chat/pull/12980)) +- Remove sharp's deprecation warnings on image upload ([#12980](https://github.com/RocketChat/Rocket.Chat/pull/12980) by [@tassoevan](https://github.com/tassoevan)) - Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) - Revert Jitsi external API to an asset ([#12954](https://github.com/RocketChat/Rocket.Chat/pull/12954)) -- Some deprecation issues for media recording ([#12948](https://github.com/RocketChat/Rocket.Chat/pull/12948)) +- Some deprecation issues for media recording ([#12948](https://github.com/RocketChat/Rocket.Chat/pull/12948) by [@tassoevan](https://github.com/tassoevan)) -- Some icons were missing ([#12913](https://github.com/RocketChat/Rocket.Chat/pull/12913)) +- Some icons were missing ([#12913](https://github.com/RocketChat/Rocket.Chat/pull/12913) by [@tassoevan](https://github.com/tassoevan)) - Spotlight being called while in background ([#12957](https://github.com/RocketChat/Rocket.Chat/pull/12957)) - Spotlight method being called multiple times ([#12536](https://github.com/RocketChat/Rocket.Chat/pull/12536)) -- Stop click event propagation on mention link or user card ([#12983](https://github.com/RocketChat/Rocket.Chat/pull/12983)) +- Stop click event propagation on mention link or user card ([#12983](https://github.com/RocketChat/Rocket.Chat/pull/12983) by [@tassoevan](https://github.com/tassoevan)) - Stream of my_message wasn't sending the room information ([#12914](https://github.com/RocketChat/Rocket.Chat/pull/12914)) - stream room-changed ([#12411](https://github.com/RocketChat/Rocket.Chat/pull/12411)) -- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713)) +- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713) by [@tassoevan](https://github.com/tassoevan)) -- Use web.browser.legacy bundle for Livechat script ([#12975](https://github.com/RocketChat/Rocket.Chat/pull/12975)) +- Use web.browser.legacy bundle for Livechat script ([#12975](https://github.com/RocketChat/Rocket.Chat/pull/12975) by [@tassoevan](https://github.com/tassoevan)) - User data download fails when a room has been deleted. ([#12829](https://github.com/RocketChat/Rocket.Chat/pull/12829) by [@Hudell](https://github.com/Hudell)) @@ -17128,27 +17305,27 @@ - Webdav integration account settings were being shown even when Webdav was disabled ([#12569](https://github.com/RocketChat/Rocket.Chat/pull/12569) by [@karakayasemi](https://github.com/karakayasemi)) -- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539)) +- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes -- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594)) +- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604)) +- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666)) +- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679)) +- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-mentions-flextab to main module structure ([#12757](https://github.com/RocketChat/Rocket.Chat/pull/12757)) +- Convert rocketchat-mentions-flextab to main module structure ([#12757](https://github.com/RocketChat/Rocket.Chat/pull/12757) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-reactions to main module structure ([#12888](https://github.com/RocketChat/Rocket.Chat/pull/12888)) +- Convert rocketchat-reactions to main module structure ([#12888](https://github.com/RocketChat/Rocket.Chat/pull/12888) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-account to main module structure ([#12842](https://github.com/RocketChat/Rocket.Chat/pull/12842)) +- Convert rocketchat-ui-account to main module structure ([#12842](https://github.com/RocketChat/Rocket.Chat/pull/12842) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-flextab to main module structure ([#12859](https://github.com/RocketChat/Rocket.Chat/pull/12859)) +- Convert rocketchat-ui-flextab to main module structure ([#12859](https://github.com/RocketChat/Rocket.Chat/pull/12859) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - [DOCS] Remove Cordova links, include F-Droid download button and few other adjustments ([#12583](https://github.com/RocketChat/Rocket.Chat/pull/12583) by [@rafaelks](https://github.com/rafaelks)) @@ -17156,215 +17333,215 @@ - Added "npm install" to quick start for developers ([#12374](https://github.com/RocketChat/Rocket.Chat/pull/12374) by [@wreiske](https://github.com/wreiske)) -- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647)) +- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Bump Apps Engine to 1.3.0 ([#12705](https://github.com/RocketChat/Rocket.Chat/pull/12705)) -- Change `chat.getDeletedMessages` to get messages after informed date and return only message's _id ([#13021](https://github.com/RocketChat/Rocket.Chat/pull/13021)) +- Change `chat.getDeletedMessages` to get messages after informed date and return only message's _id ([#13021](https://github.com/RocketChat/Rocket.Chat/pull/13021) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - changed maxRoomsOpen ([#12949](https://github.com/RocketChat/Rocket.Chat/pull/12949)) -- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485)) +- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605)) +- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486)) +- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491)) +- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495)) +- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501)) +- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503)) +- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506)) +- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510)) +- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521)) +- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523)) +- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529)) +- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530)) +- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531)) +- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532)) +- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537)) +- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538)) +- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595)) +- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596)) +- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599)) +- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600)) +- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601)) +- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603)) +- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606)) +- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607)) +- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644)) +- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642)) +- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646)) +- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649)) +- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657)) +- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658)) +- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659)) +- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661)) +- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662)) +- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663)) +- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664)) +- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665)) +- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669)) +- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670)) +- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671)) +- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672)) +- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674)) +- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-katex to main module structure ([#12895](https://github.com/RocketChat/Rocket.Chat/pull/12895)) +- Convert rocketchat-katex to main module structure ([#12895](https://github.com/RocketChat/Rocket.Chat/pull/12895) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678)) +- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-livechat to main module structure ([#12942](https://github.com/RocketChat/Rocket.Chat/pull/12942)) +- Convert rocketchat-livechat to main module structure ([#12942](https://github.com/RocketChat/Rocket.Chat/pull/12942) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-logger to main module structure and remove Logger from eslintrc ([#12995](https://github.com/RocketChat/Rocket.Chat/pull/12995)) +- Convert rocketchat-logger to main module structure and remove Logger from eslintrc ([#12995](https://github.com/RocketChat/Rocket.Chat/pull/12995) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682)) +- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-mapview to main module structure ([#12701](https://github.com/RocketChat/Rocket.Chat/pull/12701)) +- Convert rocketchat-mapview to main module structure ([#12701](https://github.com/RocketChat/Rocket.Chat/pull/12701) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-markdown to main module structure ([#12755](https://github.com/RocketChat/Rocket.Chat/pull/12755)) +- Convert rocketchat-markdown to main module structure ([#12755](https://github.com/RocketChat/Rocket.Chat/pull/12755) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-mentions to main module structure ([#12756](https://github.com/RocketChat/Rocket.Chat/pull/12756)) +- Convert rocketchat-mentions to main module structure ([#12756](https://github.com/RocketChat/Rocket.Chat/pull/12756) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-message-action to main module structure ([#12759](https://github.com/RocketChat/Rocket.Chat/pull/12759)) +- Convert rocketchat-message-action to main module structure ([#12759](https://github.com/RocketChat/Rocket.Chat/pull/12759) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-message-attachments to main module structure ([#12760](https://github.com/RocketChat/Rocket.Chat/pull/12760)) +- Convert rocketchat-message-attachments to main module structure ([#12760](https://github.com/RocketChat/Rocket.Chat/pull/12760) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-message-mark-as-unread to main module structure ([#12766](https://github.com/RocketChat/Rocket.Chat/pull/12766)) +- Convert rocketchat-message-mark-as-unread to main module structure ([#12766](https://github.com/RocketChat/Rocket.Chat/pull/12766) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-message-pin to main module structure ([#12767](https://github.com/RocketChat/Rocket.Chat/pull/12767)) +- Convert rocketchat-message-pin to main module structure ([#12767](https://github.com/RocketChat/Rocket.Chat/pull/12767) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-message-snippet to main module structure ([#12768](https://github.com/RocketChat/Rocket.Chat/pull/12768)) +- Convert rocketchat-message-snippet to main module structure ([#12768](https://github.com/RocketChat/Rocket.Chat/pull/12768) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-message-star to main module structure ([#12770](https://github.com/RocketChat/Rocket.Chat/pull/12770)) +- Convert rocketchat-message-star to main module structure ([#12770](https://github.com/RocketChat/Rocket.Chat/pull/12770) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-migrations to main-module structure ([#12772](https://github.com/RocketChat/Rocket.Chat/pull/12772)) +- Convert rocketchat-migrations to main-module structure ([#12772](https://github.com/RocketChat/Rocket.Chat/pull/12772) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-oauth2-server-config to main module structure ([#12773](https://github.com/RocketChat/Rocket.Chat/pull/12773)) +- Convert rocketchat-oauth2-server-config to main module structure ([#12773](https://github.com/RocketChat/Rocket.Chat/pull/12773) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-oembed to main module structure ([#12775](https://github.com/RocketChat/Rocket.Chat/pull/12775)) +- Convert rocketchat-oembed to main module structure ([#12775](https://github.com/RocketChat/Rocket.Chat/pull/12775) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-otr to main module structure ([#12777](https://github.com/RocketChat/Rocket.Chat/pull/12777)) +- Convert rocketchat-otr to main module structure ([#12777](https://github.com/RocketChat/Rocket.Chat/pull/12777) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-push-notifications to main module structure ([#12778](https://github.com/RocketChat/Rocket.Chat/pull/12778)) +- Convert rocketchat-push-notifications to main module structure ([#12778](https://github.com/RocketChat/Rocket.Chat/pull/12778) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-retention-policy to main module structure ([#12797](https://github.com/RocketChat/Rocket.Chat/pull/12797)) +- Convert rocketchat-retention-policy to main module structure ([#12797](https://github.com/RocketChat/Rocket.Chat/pull/12797) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-sandstorm to main module structure ([#12799](https://github.com/RocketChat/Rocket.Chat/pull/12799)) +- Convert rocketchat-sandstorm to main module structure ([#12799](https://github.com/RocketChat/Rocket.Chat/pull/12799) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-search to main module structure ([#12801](https://github.com/RocketChat/Rocket.Chat/pull/12801)) +- Convert rocketchat-search to main module structure ([#12801](https://github.com/RocketChat/Rocket.Chat/pull/12801) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-setup-wizard to main module structure ([#12806](https://github.com/RocketChat/Rocket.Chat/pull/12806)) +- Convert rocketchat-setup-wizard to main module structure ([#12806](https://github.com/RocketChat/Rocket.Chat/pull/12806) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slackbridge to main module structure ([#12807](https://github.com/RocketChat/Rocket.Chat/pull/12807)) +- Convert rocketchat-slackbridge to main module structure ([#12807](https://github.com/RocketChat/Rocket.Chat/pull/12807) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcomands-archiveroom to main module structure ([#12810](https://github.com/RocketChat/Rocket.Chat/pull/12810)) +- Convert rocketchat-slashcomands-archiveroom to main module structure ([#12810](https://github.com/RocketChat/Rocket.Chat/pull/12810) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-asciiarts to main module structure ([#12808](https://github.com/RocketChat/Rocket.Chat/pull/12808)) +- Convert rocketchat-slashcommands-asciiarts to main module structure ([#12808](https://github.com/RocketChat/Rocket.Chat/pull/12808) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-create to main module structure ([#12811](https://github.com/RocketChat/Rocket.Chat/pull/12811)) +- Convert rocketchat-slashcommands-create to main module structure ([#12811](https://github.com/RocketChat/Rocket.Chat/pull/12811) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-help to main module structure ([#12812](https://github.com/RocketChat/Rocket.Chat/pull/12812)) +- Convert rocketchat-slashcommands-help to main module structure ([#12812](https://github.com/RocketChat/Rocket.Chat/pull/12812) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-hide to main module structure ([#12813](https://github.com/RocketChat/Rocket.Chat/pull/12813)) +- Convert rocketchat-slashcommands-hide to main module structure ([#12813](https://github.com/RocketChat/Rocket.Chat/pull/12813) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-invite to main module structure ([#12814](https://github.com/RocketChat/Rocket.Chat/pull/12814)) +- Convert rocketchat-slashcommands-invite to main module structure ([#12814](https://github.com/RocketChat/Rocket.Chat/pull/12814) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-inviteall to main module structure ([#12815](https://github.com/RocketChat/Rocket.Chat/pull/12815)) +- Convert rocketchat-slashcommands-inviteall to main module structure ([#12815](https://github.com/RocketChat/Rocket.Chat/pull/12815) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-join to main module structure ([#12816](https://github.com/RocketChat/Rocket.Chat/pull/12816)) +- Convert rocketchat-slashcommands-join to main module structure ([#12816](https://github.com/RocketChat/Rocket.Chat/pull/12816) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-kick to main module structure ([#12817](https://github.com/RocketChat/Rocket.Chat/pull/12817)) +- Convert rocketchat-slashcommands-kick to main module structure ([#12817](https://github.com/RocketChat/Rocket.Chat/pull/12817) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-leave to main module structure ([#12821](https://github.com/RocketChat/Rocket.Chat/pull/12821)) +- Convert rocketchat-slashcommands-leave to main module structure ([#12821](https://github.com/RocketChat/Rocket.Chat/pull/12821) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-me to main module structure ([#12822](https://github.com/RocketChat/Rocket.Chat/pull/12822)) +- Convert rocketchat-slashcommands-me to main module structure ([#12822](https://github.com/RocketChat/Rocket.Chat/pull/12822) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-msg to main module structure ([#12823](https://github.com/RocketChat/Rocket.Chat/pull/12823)) +- Convert rocketchat-slashcommands-msg to main module structure ([#12823](https://github.com/RocketChat/Rocket.Chat/pull/12823) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-mute to main module structure ([#12824](https://github.com/RocketChat/Rocket.Chat/pull/12824)) +- Convert rocketchat-slashcommands-mute to main module structure ([#12824](https://github.com/RocketChat/Rocket.Chat/pull/12824) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-open to main module structure ([#12825](https://github.com/RocketChat/Rocket.Chat/pull/12825)) +- Convert rocketchat-slashcommands-open to main module structure ([#12825](https://github.com/RocketChat/Rocket.Chat/pull/12825) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-topic to main module structure ([#12826](https://github.com/RocketChat/Rocket.Chat/pull/12826)) +- Convert rocketchat-slashcommands-topic to main module structure ([#12826](https://github.com/RocketChat/Rocket.Chat/pull/12826) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slashcommands-unarchiveroom to main module structure ([#12827](https://github.com/RocketChat/Rocket.Chat/pull/12827)) +- Convert rocketchat-slashcommands-unarchiveroom to main module structure ([#12827](https://github.com/RocketChat/Rocket.Chat/pull/12827) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-slider to main module structure ([#12828](https://github.com/RocketChat/Rocket.Chat/pull/12828)) +- Convert rocketchat-slider to main module structure ([#12828](https://github.com/RocketChat/Rocket.Chat/pull/12828) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-smarsh-connector to main module structure ([#12830](https://github.com/RocketChat/Rocket.Chat/pull/12830)) +- Convert rocketchat-smarsh-connector to main module structure ([#12830](https://github.com/RocketChat/Rocket.Chat/pull/12830) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-sms to main module structure ([#12831](https://github.com/RocketChat/Rocket.Chat/pull/12831)) +- Convert rocketchat-sms to main module structure ([#12831](https://github.com/RocketChat/Rocket.Chat/pull/12831) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-spotify to main module structure ([#12832](https://github.com/RocketChat/Rocket.Chat/pull/12832)) +- Convert rocketchat-spotify to main module structure ([#12832](https://github.com/RocketChat/Rocket.Chat/pull/12832) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-statistics to main module structure ([#12833](https://github.com/RocketChat/Rocket.Chat/pull/12833)) +- Convert rocketchat-statistics to main module structure ([#12833](https://github.com/RocketChat/Rocket.Chat/pull/12833) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-theme to main module structure ([#12896](https://github.com/RocketChat/Rocket.Chat/pull/12896)) +- Convert rocketchat-theme to main module structure ([#12896](https://github.com/RocketChat/Rocket.Chat/pull/12896) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-token-login to main module structure ([#12837](https://github.com/RocketChat/Rocket.Chat/pull/12837)) +- Convert rocketchat-token-login to main module structure ([#12837](https://github.com/RocketChat/Rocket.Chat/pull/12837) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-tokenpass to main module structure ([#12838](https://github.com/RocketChat/Rocket.Chat/pull/12838)) +- Convert rocketchat-tokenpass to main module structure ([#12838](https://github.com/RocketChat/Rocket.Chat/pull/12838) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-tooltip to main module structure ([#12839](https://github.com/RocketChat/Rocket.Chat/pull/12839)) +- Convert rocketchat-tooltip to main module structure ([#12839](https://github.com/RocketChat/Rocket.Chat/pull/12839) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-admin to main module structure ([#12844](https://github.com/RocketChat/Rocket.Chat/pull/12844)) +- Convert rocketchat-ui-admin to main module structure ([#12844](https://github.com/RocketChat/Rocket.Chat/pull/12844) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-clean-history to main module structure ([#12846](https://github.com/RocketChat/Rocket.Chat/pull/12846)) +- Convert rocketchat-ui-clean-history to main module structure ([#12846](https://github.com/RocketChat/Rocket.Chat/pull/12846) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-login to main module structure ([#12861](https://github.com/RocketChat/Rocket.Chat/pull/12861)) +- Convert rocketchat-ui-login to main module structure ([#12861](https://github.com/RocketChat/Rocket.Chat/pull/12861) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-message to main module structure ([#12871](https://github.com/RocketChat/Rocket.Chat/pull/12871)) +- Convert rocketchat-ui-message to main module structure ([#12871](https://github.com/RocketChat/Rocket.Chat/pull/12871) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ui-vrecord to main module structure ([#12875](https://github.com/RocketChat/Rocket.Chat/pull/12875)) +- Convert rocketchat-ui-vrecord to main module structure ([#12875](https://github.com/RocketChat/Rocket.Chat/pull/12875) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-user-data-dowload to main module structure ([#12877](https://github.com/RocketChat/Rocket.Chat/pull/12877)) +- Convert rocketchat-user-data-dowload to main module structure ([#12877](https://github.com/RocketChat/Rocket.Chat/pull/12877) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-version-check to main module structure ([#12879](https://github.com/RocketChat/Rocket.Chat/pull/12879)) +- Convert rocketchat-version-check to main module structure ([#12879](https://github.com/RocketChat/Rocket.Chat/pull/12879) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-videobridge to main module structure ([#12881](https://github.com/RocketChat/Rocket.Chat/pull/12881)) +- Convert rocketchat-videobridge to main module structure ([#12881](https://github.com/RocketChat/Rocket.Chat/pull/12881) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-webdav to main module structure ([#12886](https://github.com/RocketChat/Rocket.Chat/pull/12886)) +- Convert rocketchat-webdav to main module structure ([#12886](https://github.com/RocketChat/Rocket.Chat/pull/12886) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-wordpress to main module structure ([#12887](https://github.com/RocketChat/Rocket.Chat/pull/12887)) +- Convert rocketchat-wordpress to main module structure ([#12887](https://github.com/RocketChat/Rocket.Chat/pull/12887) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Dependencies update ([#12624](https://github.com/RocketChat/Rocket.Chat/pull/12624)) @@ -17374,21 +17551,21 @@ - Fix CSS import order ([#12524](https://github.com/RocketChat/Rocket.Chat/pull/12524)) -- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509)) +- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509) by [@tassoevan](https://github.com/tassoevan)) - Fix punctuation, spelling, and grammar ([#12451](https://github.com/RocketChat/Rocket.Chat/pull/12451) by [@imronras](https://github.com/imronras)) - Fix some Ukrainian translations ([#12712](https://github.com/RocketChat/Rocket.Chat/pull/12712) by [@zdumitru](https://github.com/zdumitru)) -- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625)) +- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645)) +- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix: Developers not being able to debug root files in VSCode ([#12440](https://github.com/RocketChat/Rocket.Chat/pull/12440) by [@mrsimpson](https://github.com/mrsimpson)) -- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699)) +- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707)) +- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix: snap push from ci ([#12883](https://github.com/RocketChat/Rocket.Chat/pull/12883)) @@ -17410,41 +17587,41 @@ - Move globals of test to a specific eslintrc file ([#12959](https://github.com/RocketChat/Rocket.Chat/pull/12959)) -- Move isFirefox and isChrome functions to rocketchat-utils ([#13011](https://github.com/RocketChat/Rocket.Chat/pull/13011)) +- Move isFirefox and isChrome functions to rocketchat-utils ([#13011](https://github.com/RocketChat/Rocket.Chat/pull/13011) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Move tapi18n t and isRtl functions from ui to utils ([#13005](https://github.com/RocketChat/Rocket.Chat/pull/13005)) +- Move tapi18n t and isRtl functions from ui to utils ([#13005](https://github.com/RocketChat/Rocket.Chat/pull/13005) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735)) +- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736)) +- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737)) +- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729)) +- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729) by [@tassoevan](https://github.com/tassoevan)) -- Regression: List of custom emojis wasn't working ([#13031](https://github.com/RocketChat/Rocket.Chat/pull/13031)) +- Regression: List of custom emojis wasn't working ([#13031](https://github.com/RocketChat/Rocket.Chat/pull/13031) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901)) +- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901) by [@tassoevan](https://github.com/tassoevan)) -- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan)) +- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) - Removal of EJSON, Accounts, Email, HTTP, Random, ReactiveDict, ReactiveVar, SHA256 and WebApp global variables ([#12377](https://github.com/RocketChat/Rocket.Chat/pull/12377)) -- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410)) +- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Removal of Meteor global variable ([#12371](https://github.com/RocketChat/Rocket.Chat/pull/12371)) -- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467)) +- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433)) +- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove /* globals */ from files wave-1 ([#12984](https://github.com/RocketChat/Rocket.Chat/pull/12984)) +- Remove /* globals */ from files wave-1 ([#12984](https://github.com/RocketChat/Rocket.Chat/pull/12984) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove /* globals */ wave 2 ([#12988](https://github.com/RocketChat/Rocket.Chat/pull/12988)) +- Remove /* globals */ wave 2 ([#12988](https://github.com/RocketChat/Rocket.Chat/pull/12988) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove /* globals */ wave 3 ([#12997](https://github.com/RocketChat/Rocket.Chat/pull/12997)) +- Remove /* globals */ wave 3 ([#12997](https://github.com/RocketChat/Rocket.Chat/pull/12997) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove /* globals */ wave 4 ([#12999](https://github.com/RocketChat/Rocket.Chat/pull/12999)) +- Remove /* globals */ wave 4 ([#12999](https://github.com/RocketChat/Rocket.Chat/pull/12999) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Remove conventional changelog cli, we are using our own cli now (Houston) ([#12798](https://github.com/RocketChat/Rocket.Chat/pull/12798)) @@ -17452,13 +17629,13 @@ - Remove global toastr ([#12961](https://github.com/RocketChat/Rocket.Chat/pull/12961)) -- Remove rocketchat-tutum package ([#12840](https://github.com/RocketChat/Rocket.Chat/pull/12840)) +- Remove rocketchat-tutum package ([#12840](https://github.com/RocketChat/Rocket.Chat/pull/12840) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426)) +- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426) by [@tassoevan](https://github.com/tassoevan)) -- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650)) +- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Revert imports of css, reAdd them to the addFiles function ([#12934](https://github.com/RocketChat/Rocket.Chat/pull/12934)) +- Revert imports of css, reAdd them to the addFiles function ([#12934](https://github.com/RocketChat/Rocket.Chat/pull/12934) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Update Apps Engine to 1.3.1 ([#12741](https://github.com/RocketChat/Rocket.Chat/pull/12741)) @@ -17471,6 +17648,7 @@ - [@AndreamApp](https://github.com/AndreamApp) - [@Hudell](https://github.com/Hudell) - [@Ismaw34](https://github.com/Ismaw34) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@alexbartsch](https://github.com/alexbartsch) - [@cardoso](https://github.com/cardoso) - [@cyberb](https://github.com/cyberb) @@ -17489,8 +17667,10 @@ - [@piotrkochan](https://github.com/piotrkochan) - [@rafaelks](https://github.com/rafaelks) - [@ramrami](https://github.com/ramrami) +- [@renatobecker](https://github.com/renatobecker) - [@rssilva](https://github.com/rssilva) - [@sanketsingh24](https://github.com/sanketsingh24) +- [@tassoevan](https://github.com/tassoevan) - [@tsukiRep](https://github.com/tsukiRep) - [@ura14h](https://github.com/ura14h) - [@vinade](https://github.com/vinade) @@ -17500,16 +17680,13 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.72.3 `2018-12-12 · 1 🔍 · 5 👩‍💻👨‍💻` @@ -17518,7 +17695,7 @@ 🔍 Minor changes -- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan)) +- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan))
@@ -17526,12 +17703,12 @@ - [@Hudell](https://github.com/Hudell) - [@piotrkochan](https://github.com/piotrkochan) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) -- [@tassoevan](https://github.com/tassoevan) # 0.72.2 `2018-12-10 · 3 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` @@ -17539,9 +17716,9 @@ ### 🐛 Bug fixes -- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900)) +- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900) by [@tassoevan](https://github.com/tassoevan)) -- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882)) +- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882) by [@tassoevan](https://github.com/tassoevan)) - Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) @@ -17549,14 +17726,17 @@ 🔍 Minor changes -- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901)) +- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901) by [@tassoevan](https://github.com/tassoevan)) +### 👩‍💻👨‍💻 Contributors 😍 + +- [@tassoevan](https://github.com/tassoevan) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.72.1 `2018-12-05 · 4 🐛 · 3 🔍 · 8 👩‍💻👨‍💻` @@ -17568,7 +17748,7 @@ - Change spread operator to Array.from for Edge browser ([#12818](https://github.com/RocketChat/Rocket.Chat/pull/12818) by [@ohmonster](https://github.com/ohmonster)) -- Emoji as avatar ([#12805](https://github.com/RocketChat/Rocket.Chat/pull/12805)) +- Emoji as avatar ([#12805](https://github.com/RocketChat/Rocket.Chat/pull/12805) by [@tassoevan](https://github.com/tassoevan)) - Missing HipChat Enterprise Importer ([#12847](https://github.com/RocketChat/Rocket.Chat/pull/12847) by [@Hudell](https://github.com/Hudell)) @@ -17578,25 +17758,25 @@ - Bump Apps-Engine version ([#12848](https://github.com/RocketChat/Rocket.Chat/pull/12848)) -- Change file order in rocketchat-cors ([#12804](https://github.com/RocketChat/Rocket.Chat/pull/12804)) +- Change file order in rocketchat-cors ([#12804](https://github.com/RocketChat/Rocket.Chat/pull/12804) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Release 0.72.1 ([#12850](https://github.com/RocketChat/Rocket.Chat/pull/12850) by [@Hudell](https://github.com/Hudell) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan)) +- Release 0.72.1 ([#12850](https://github.com/RocketChat/Rocket.Chat/pull/12850) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ohmonster](https://github.com/ohmonster) - [@piotrkochan](https://github.com/piotrkochan) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.72.0 `2018-11-28 · 2 ️️️⚠️ · 6 🎉 · 16 🚀 · 22 🐛 · 79 🔍 · 25 👩‍💻👨‍💻` @@ -17613,11 +17793,11 @@ - /api/v1/spotlight: return joinCodeRequired field for rooms ([#12651](https://github.com/RocketChat/Rocket.Chat/pull/12651) by [@cardoso](https://github.com/cardoso)) -- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309)) +- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378)) +- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378) by [@tassoevan](https://github.com/tassoevan)) -- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623)) +- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Option to reset e2e key ([#12483](https://github.com/RocketChat/Rocket.Chat/pull/12483) by [@Hudell](https://github.com/Hudell)) @@ -17630,9 +17810,9 @@ - Add more methods to deal with rooms via Rocket.Chat.Apps ([#12680](https://github.com/RocketChat/Rocket.Chat/pull/12680)) -- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561)) +- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561) by [@renatobecker](https://github.com/renatobecker)) -- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105)) +- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Allow apps to update persistence by association ([#12714](https://github.com/RocketChat/Rocket.Chat/pull/12714)) @@ -17648,15 +17828,15 @@ - German translations ([#12471](https://github.com/RocketChat/Rocket.Chat/pull/12471) by [@mrsimpson](https://github.com/mrsimpson)) -- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522)) +- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522) by [@renatobecker](https://github.com/renatobecker)) -- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563)) +- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Japanese translations ([#12382](https://github.com/RocketChat/Rocket.Chat/pull/12382) by [@ura14h](https://github.com/ura14h)) -- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@vinade](https://github.com/vinade)) +- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@tassoevan](https://github.com/tassoevan) & [@vinade](https://github.com/vinade)) -- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock)) +- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock) & [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes @@ -17669,9 +17849,9 @@ - Admin styles ([#12602](https://github.com/RocketChat/Rocket.Chat/pull/12602)) -- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb)) +- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb) & [@tassoevan](https://github.com/tassoevan)) -- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632)) +- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632) by [@tassoevan](https://github.com/tassoevan)) - Correct roomName value in Mail Messages (#12363) ([#12453](https://github.com/RocketChat/Rocket.Chat/pull/12453) by [@vinade](https://github.com/vinade)) @@ -17679,159 +17859,159 @@ - Emoji picker is not in viewport on small screens ([#12457](https://github.com/RocketChat/Rocket.Chat/pull/12457) by [@ramrami](https://github.com/ramrami)) -- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643)) +- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408)) +- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fixed Anonymous Registration ([#12633](https://github.com/RocketChat/Rocket.Chat/pull/12633) by [@wreiske](https://github.com/wreiske)) - German translation for for API_EmbedIgnoredHosts label ([#12518](https://github.com/RocketChat/Rocket.Chat/pull/12518) by [@mbrodala](https://github.com/mbrodala)) -- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507)) +- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507) by [@tassoevan](https://github.com/tassoevan)) - high cpu usage ~ svg icon ([#12677](https://github.com/RocketChat/Rocket.Chat/pull/12677) by [@ph1p](https://github.com/ph1p)) -- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570)) +- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Manage own integrations permissions check ([#12397](https://github.com/RocketChat/Rocket.Chat/pull/12397)) -- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558)) +- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Spotlight method being called multiple times ([#12536](https://github.com/RocketChat/Rocket.Chat/pull/12536)) - stream room-changed ([#12411](https://github.com/RocketChat/Rocket.Chat/pull/12411)) -- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713)) +- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713) by [@tassoevan](https://github.com/tassoevan)) -- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539)) +- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes -- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594)) +- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604)) +- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666)) +- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679)) +- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - [DOCS] Remove Cordova links, include F-Droid download button and few other adjustments ([#12583](https://github.com/RocketChat/Rocket.Chat/pull/12583) by [@rafaelks](https://github.com/rafaelks)) - Added "npm install" to quick start for developers ([#12374](https://github.com/RocketChat/Rocket.Chat/pull/12374) by [@wreiske](https://github.com/wreiske)) -- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647)) +- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Bump Apps Engine to 1.3.0 ([#12705](https://github.com/RocketChat/Rocket.Chat/pull/12705)) -- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485)) +- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605)) +- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486)) +- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491)) +- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495)) +- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501)) +- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503)) +- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506)) +- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510)) +- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521)) +- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523)) +- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529)) +- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530)) +- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531)) +- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532)) +- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537)) +- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538)) +- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595)) +- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596)) +- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599)) +- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600)) +- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601)) +- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603)) +- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606)) +- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607)) +- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644)) +- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642)) +- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646)) +- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649)) +- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657)) +- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658)) +- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659)) +- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661)) +- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662)) +- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663)) +- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664)) +- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665)) +- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669)) +- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670)) +- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671)) +- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672)) +- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674)) +- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678)) +- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682)) +- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix crowd error with import of SyncedCron ([#12641](https://github.com/RocketChat/Rocket.Chat/pull/12641)) - Fix CSS import order ([#12524](https://github.com/RocketChat/Rocket.Chat/pull/12524)) -- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509)) +- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509) by [@tassoevan](https://github.com/tassoevan)) - Fix punctuation, spelling, and grammar ([#12451](https://github.com/RocketChat/Rocket.Chat/pull/12451) by [@imronras](https://github.com/imronras)) - Fix some Ukrainian translations ([#12712](https://github.com/RocketChat/Rocket.Chat/pull/12712) by [@zdumitru](https://github.com/zdumitru)) -- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625)) +- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645)) +- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix: Developers not being able to debug root files in VSCode ([#12440](https://github.com/RocketChat/Rocket.Chat/pull/12440) by [@mrsimpson](https://github.com/mrsimpson)) -- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699)) +- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707)) +- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Improve: Add missing translation keys. ([#12708](https://github.com/RocketChat/Rocket.Chat/pull/12708) by [@ura14h](https://github.com/ura14h)) @@ -17841,27 +18021,27 @@ - Merge master into develop & Set version to 0.72.0-develop ([#12460](https://github.com/RocketChat/Rocket.Chat/pull/12460) by [@Hudell](https://github.com/Hudell)) -- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735)) +- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736)) +- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737)) +- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737) by [@tassoevan](https://github.com/tassoevan)) -- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729)) +- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729) by [@tassoevan](https://github.com/tassoevan)) - Removal of EJSON, Accounts, Email, HTTP, Random, ReactiveDict, ReactiveVar, SHA256 and WebApp global variables ([#12377](https://github.com/RocketChat/Rocket.Chat/pull/12377)) -- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410)) +- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Removal of Meteor global variable ([#12371](https://github.com/RocketChat/Rocket.Chat/pull/12371)) -- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467)) +- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433)) +- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426)) +- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426) by [@tassoevan](https://github.com/tassoevan)) -- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650)) +- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Update Apps Engine to 1.3.1 ([#12741](https://github.com/RocketChat/Rocket.Chat/pull/12741)) @@ -17874,6 +18054,7 @@ - [@AndreamApp](https://github.com/AndreamApp) - [@Hudell](https://github.com/Hudell) - [@Ismaw34](https://github.com/Ismaw34) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@cardoso](https://github.com/cardoso) - [@imronras](https://github.com/imronras) - [@karlprieb](https://github.com/karlprieb) @@ -17884,6 +18065,8 @@ - [@ph1p](https://github.com/ph1p) - [@rafaelks](https://github.com/rafaelks) - [@ramrami](https://github.com/ramrami) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@ura14h](https://github.com/ura14h) - [@vinade](https://github.com/vinade) - [@wreiske](https://github.com/wreiske) @@ -17891,14 +18074,11 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.71.2 `2018-12-10 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -17950,9 +18130,9 @@ ### ⚠️ BREAKING CHANGES -- Add expiration to API login tokens and fix duplicate login tokens created by LDAP ([#12186](https://github.com/RocketChat/Rocket.Chat/pull/12186)) +- Add expiration to API login tokens and fix duplicate login tokens created by LDAP ([#12186](https://github.com/RocketChat/Rocket.Chat/pull/12186) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Update `lastMessage` rooms property and convert the "starred" property, to the same format ([#12266](https://github.com/RocketChat/Rocket.Chat/pull/12266)) +- Update `lastMessage` rooms property and convert the "starred" property, to the same format ([#12266](https://github.com/RocketChat/Rocket.Chat/pull/12266) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) ### 🎉 New features @@ -17961,11 +18141,11 @@ - Add "help wanted" section to Readme ([#12432](https://github.com/RocketChat/Rocket.Chat/pull/12432) by [@isabellarussell](https://github.com/isabellarussell)) -- Add delete channel mutation to GraphQL API ([#11860](https://github.com/RocketChat/Rocket.Chat/pull/11860)) +- Add delete channel mutation to GraphQL API ([#11860](https://github.com/RocketChat/Rocket.Chat/pull/11860) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - PDF message attachment preview (client side rendering) ([#10519](https://github.com/RocketChat/Rocket.Chat/pull/10519) by [@kb0304](https://github.com/kb0304)) -- sidenav size on large screens ([#12372](https://github.com/RocketChat/Rocket.Chat/pull/12372)) +- sidenav size on large screens ([#12372](https://github.com/RocketChat/Rocket.Chat/pull/12372) by [@tassoevan](https://github.com/tassoevan)) ### 🚀 Improvements @@ -17974,16 +18154,16 @@ - Allow the imports to accept any file type ([#12425](https://github.com/RocketChat/Rocket.Chat/pull/12425)) -- Avoid unnecessary calls to Meteor.user() on client ([#11212](https://github.com/RocketChat/Rocket.Chat/pull/11212)) +- Avoid unnecessary calls to Meteor.user() on client ([#11212](https://github.com/RocketChat/Rocket.Chat/pull/11212) by [@tassoevan](https://github.com/tassoevan)) -- Livechat room closure endpoints ([#12360](https://github.com/RocketChat/Rocket.Chat/pull/12360)) +- Livechat room closure endpoints ([#12360](https://github.com/RocketChat/Rocket.Chat/pull/12360) by [@renatobecker](https://github.com/renatobecker)) -- Set Livechat department before register guest ([#12161](https://github.com/RocketChat/Rocket.Chat/pull/12161)) +- Set Livechat department before register guest ([#12161](https://github.com/RocketChat/Rocket.Chat/pull/12161) by [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes -- Add image dimensions to attachment even when no reorientation is required ([#11521](https://github.com/RocketChat/Rocket.Chat/pull/11521)) +- Add image dimensions to attachment even when no reorientation is required ([#11521](https://github.com/RocketChat/Rocket.Chat/pull/11521) by [@tassoevan](https://github.com/tassoevan)) - Apps not being able to state how the action buttons are aligned ([#12391](https://github.com/RocketChat/Rocket.Chat/pull/12391)) @@ -17993,7 +18173,7 @@ - avatar?_dc=undefined ([#12365](https://github.com/RocketChat/Rocket.Chat/pull/12365)) -- Blockstack errors in IE 11 ([#12338](https://github.com/RocketChat/Rocket.Chat/pull/12338)) +- Blockstack errors in IE 11 ([#12338](https://github.com/RocketChat/Rocket.Chat/pull/12338) by [@tassoevan](https://github.com/tassoevan)) - Cast env var setting to int based on option type ([#12194](https://github.com/RocketChat/Rocket.Chat/pull/12194) by [@crazy-max](https://github.com/crazy-max)) @@ -18011,9 +18191,9 @@ - iframe login token not checked ([#12158](https://github.com/RocketChat/Rocket.Chat/pull/12158) by [@nimetu](https://github.com/nimetu)) -- Ignore errors when creating image preview for uploads ([#12424](https://github.com/RocketChat/Rocket.Chat/pull/12424)) +- Ignore errors when creating image preview for uploads ([#12424](https://github.com/RocketChat/Rocket.Chat/pull/12424) by [@tassoevan](https://github.com/tassoevan)) -- Invalid destructuring on Livechat API endpoint ([#12354](https://github.com/RocketChat/Rocket.Chat/pull/12354)) +- Invalid destructuring on Livechat API endpoint ([#12354](https://github.com/RocketChat/Rocket.Chat/pull/12354) by [@renatobecker](https://github.com/renatobecker)) - Last message not updating after message delete if show deleted status is on ([#12350](https://github.com/RocketChat/Rocket.Chat/pull/12350)) @@ -18021,13 +18201,13 @@ - Modal confirm on enter ([#12283](https://github.com/RocketChat/Rocket.Chat/pull/12283)) -- Remove e2e from users endpoint responses ([#12344](https://github.com/RocketChat/Rocket.Chat/pull/12344)) +- Remove e2e from users endpoint responses ([#12344](https://github.com/RocketChat/Rocket.Chat/pull/12344) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST `users.setAvatar` endpoint wasn't allowing update the avatar of other users even with correct permissions ([#11431](https://github.com/RocketChat/Rocket.Chat/pull/11431)) +- REST `users.setAvatar` endpoint wasn't allowing update the avatar of other users even with correct permissions ([#11431](https://github.com/RocketChat/Rocket.Chat/pull/11431) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Slack importer: image previews not showing ([#11875](https://github.com/RocketChat/Rocket.Chat/pull/11875) by [@Hudell](https://github.com/Hudell) & [@madguy02](https://github.com/madguy02)) -- users.register endpoint to not create an user if username already being used ([#12297](https://github.com/RocketChat/Rocket.Chat/pull/12297)) +- users.register endpoint to not create an user if username already being used ([#12297](https://github.com/RocketChat/Rocket.Chat/pull/12297) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes @@ -18043,7 +18223,7 @@ - Improve: Drop database between running tests on CI ([#12358](https://github.com/RocketChat/Rocket.Chat/pull/12358)) -- Regression: Change `starred` message property from object to array ([#12405](https://github.com/RocketChat/Rocket.Chat/pull/12405)) +- Regression: Change `starred` message property from object to array ([#12405](https://github.com/RocketChat/Rocket.Chat/pull/12405) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: do not render pdf preview on safari <= 12 ([#12375](https://github.com/RocketChat/Rocket.Chat/pull/12375)) @@ -18057,6 +18237,7 @@ - [@Hudell](https://github.com/Hudell) - [@MarcosEllys](https://github.com/MarcosEllys) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@crazy-max](https://github.com/crazy-max) - [@isabellarussell](https://github.com/isabellarussell) - [@kb0304](https://github.com/kb0304) @@ -18064,20 +18245,19 @@ - [@nikeee](https://github.com/nikeee) - [@nimetu](https://github.com/nimetu) - [@pmmaga](https://github.com/pmmaga) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@teresy](https://github.com/teresy) - [@upiksaleh](https://github.com/upiksaleh) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Sing-Li](https://github.com/Sing-Li) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.70.5 `2018-12-10 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -18167,7 +18347,7 @@ - Emails' logo and links ([#12241](https://github.com/RocketChat/Rocket.Chat/pull/12241)) -- Livechat CRM integration running when disabled ([#12242](https://github.com/RocketChat/Rocket.Chat/pull/12242)) +- Livechat CRM integration running when disabled ([#12242](https://github.com/RocketChat/Rocket.Chat/pull/12242) by [@renatobecker](https://github.com/renatobecker)) - Livechat integration with RDStation ([#12257](https://github.com/RocketChat/Rocket.Chat/pull/12257)) @@ -18175,7 +18355,7 @@ - Message editing was duplicating reply quotes ([#12263](https://github.com/RocketChat/Rocket.Chat/pull/12263)) -- Set default action for Setup Wizard form submit ([#12240](https://github.com/RocketChat/Rocket.Chat/pull/12240)) +- Set default action for Setup Wizard form submit ([#12240](https://github.com/RocketChat/Rocket.Chat/pull/12240) by [@tassoevan](https://github.com/tassoevan))
🔍 Minor changes @@ -18189,7 +18369,7 @@ - Regression: fix modal submit ([#12233](https://github.com/RocketChat/Rocket.Chat/pull/12233)) -- Release 0.70.1 ([#12270](https://github.com/RocketChat/Rocket.Chat/pull/12270) by [@Hudell](https://github.com/Hudell) & [@edzluhan](https://github.com/edzluhan) & [@theorenck](https://github.com/theorenck)) +- Release 0.70.1 ([#12270](https://github.com/RocketChat/Rocket.Chat/pull/12270) by [@Hudell](https://github.com/Hudell) & [@edzluhan](https://github.com/edzluhan) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan) & [@theorenck](https://github.com/theorenck))
@@ -18199,16 +18379,16 @@ - [@cardoso](https://github.com/cardoso) - [@edzluhan](https://github.com/edzluhan) - [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) - [@theorenck](https://github.com/theorenck) - [@timkinnane](https://github.com/timkinnane) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.70.0 `2018-09-28 · 2 ️️️⚠️ · 18 🎉 · 3 🚀 · 35 🐛 · 19 🔍 · 32 👩‍💻👨‍💻` @@ -18227,7 +18407,7 @@ ### 🎉 New features -- Add Livechat Analytics permission ([#12184](https://github.com/RocketChat/Rocket.Chat/pull/12184)) +- Add Livechat Analytics permission ([#12184](https://github.com/RocketChat/Rocket.Chat/pull/12184) by [@renatobecker](https://github.com/renatobecker)) - Allow multiple subcommands in MIGRATION_VERSION env variable ([#11184](https://github.com/RocketChat/Rocket.Chat/pull/11184) by [@arch119](https://github.com/arch119)) @@ -18247,15 +18427,15 @@ - Livechat notifications on new incoming inquiries for guest-pool ([#10588](https://github.com/RocketChat/Rocket.Chat/pull/10588) by [@mrsimpson](https://github.com/mrsimpson)) -- Livechat REST endpoints ([#11900](https://github.com/RocketChat/Rocket.Chat/pull/11900)) +- Livechat REST endpoints ([#11900](https://github.com/RocketChat/Rocket.Chat/pull/11900) by [@renatobecker](https://github.com/renatobecker)) - Livechat trigger option to run only once ([#12068](https://github.com/RocketChat/Rocket.Chat/pull/12068) by [@edzluhan](https://github.com/edzluhan)) -- REST endpoint to set groups' announcement ([#11905](https://github.com/RocketChat/Rocket.Chat/pull/11905)) +- REST endpoint to set groups' announcement ([#11905](https://github.com/RocketChat/Rocket.Chat/pull/11905) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - REST endpoints to create roles and assign roles to users ([#11855](https://github.com/RocketChat/Rocket.Chat/pull/11855) by [@aferreira44](https://github.com/aferreira44)) -- REST endpoints to get moderators from groups and channels ([#11909](https://github.com/RocketChat/Rocket.Chat/pull/11909)) +- REST endpoints to get moderators from groups and channels ([#11909](https://github.com/RocketChat/Rocket.Chat/pull/11909) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Support for end to end encryption ([#10094](https://github.com/RocketChat/Rocket.Chat/pull/10094) by [@mrinaldhar](https://github.com/mrinaldhar)) @@ -18291,7 +18471,7 @@ - Changing Mentions.userMentionRegex pattern to include
tag ([#12043](https://github.com/RocketChat/Rocket.Chat/pull/12043) by [@rssilva](https://github.com/rssilva)) -- Close popover on shortcuts and writing ([#11562](https://github.com/RocketChat/Rocket.Chat/pull/11562)) +- Close popover on shortcuts and writing ([#11562](https://github.com/RocketChat/Rocket.Chat/pull/11562) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Direct messages leaking into logs ([#11863](https://github.com/RocketChat/Rocket.Chat/pull/11863) by [@Hudell](https://github.com/Hudell)) @@ -18301,7 +18481,7 @@ - Duplicated message buttons ([#11853](https://github.com/RocketChat/Rocket.Chat/pull/11853) by [@ubarsaiyan](https://github.com/ubarsaiyan)) -- Files list missing from popover menu when owner of room ([#11565](https://github.com/RocketChat/Rocket.Chat/pull/11565)) +- Files list missing from popover menu when owner of room ([#11565](https://github.com/RocketChat/Rocket.Chat/pull/11565) by [@tassoevan](https://github.com/tassoevan)) - Fixing spacement between tags and words on some labels ([#12018](https://github.com/RocketChat/Rocket.Chat/pull/12018) by [@rssilva](https://github.com/rssilva)) @@ -18313,7 +18493,7 @@ - Horizontal scroll on user info tab ([#12102](https://github.com/RocketChat/Rocket.Chat/pull/12102) by [@rssilva](https://github.com/rssilva)) -- Internal error when cross-origin with CORS is disabled ([#11953](https://github.com/RocketChat/Rocket.Chat/pull/11953)) +- Internal error when cross-origin with CORS is disabled ([#11953](https://github.com/RocketChat/Rocket.Chat/pull/11953) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - IRC Federation no longer working ([#11906](https://github.com/RocketChat/Rocket.Chat/pull/11906) by [@Hudell](https://github.com/Hudell)) @@ -18323,7 +18503,7 @@ - Markdown ampersand escape on links ([#12140](https://github.com/RocketChat/Rocket.Chat/pull/12140) by [@rssilva](https://github.com/rssilva)) -- Message reaction in GraphQL API ([#11967](https://github.com/RocketChat/Rocket.Chat/pull/11967)) +- Message reaction in GraphQL API ([#11967](https://github.com/RocketChat/Rocket.Chat/pull/11967) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Not able to set per-channel retention policies if no global policy is set for this channel type ([#11927](https://github.com/RocketChat/Rocket.Chat/pull/11927) by [@vynmera](https://github.com/vynmera)) @@ -18331,7 +18511,7 @@ - Position of popover component on mobile ([#12038](https://github.com/RocketChat/Rocket.Chat/pull/12038)) -- Prevent form submission in Files List search ([#11999](https://github.com/RocketChat/Rocket.Chat/pull/11999)) +- Prevent form submission in Files List search ([#11999](https://github.com/RocketChat/Rocket.Chat/pull/11999) by [@tassoevan](https://github.com/tassoevan)) - Re-add the eye-off icon ([#12079](https://github.com/RocketChat/Rocket.Chat/pull/12079) by [@MIKI785](https://github.com/MIKI785)) @@ -18379,7 +18559,7 @@ - LingoHub based on develop ([#11936](https://github.com/RocketChat/Rocket.Chat/pull/11936)) -- Merge master into develop & Set version to 0.70.0-develop ([#11921](https://github.com/RocketChat/Rocket.Chat/pull/11921) by [@Hudell](https://github.com/Hudell) & [@c0dzilla](https://github.com/c0dzilla) & [@rndmh3ro](https://github.com/rndmh3ro) & [@ubarsaiyan](https://github.com/ubarsaiyan) & [@vynmera](https://github.com/vynmera)) +- Merge master into develop & Set version to 0.70.0-develop ([#11921](https://github.com/RocketChat/Rocket.Chat/pull/11921) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@c0dzilla](https://github.com/c0dzilla) & [@renatobecker](https://github.com/renatobecker) & [@rndmh3ro](https://github.com/rndmh3ro) & [@tassoevan](https://github.com/tassoevan) & [@ubarsaiyan](https://github.com/ubarsaiyan) & [@vynmera](https://github.com/vynmera)) - New: Option to change E2E key ([#12169](https://github.com/RocketChat/Rocket.Chat/pull/12169) by [@Hudell](https://github.com/Hudell)) @@ -18393,6 +18573,8 @@ - [@Hudell](https://github.com/Hudell) - [@MIKI785](https://github.com/MIKI785) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@TobiasKappe](https://github.com/TobiasKappe) - [@aferreira44](https://github.com/aferreira44) - [@arch119](https://github.com/arch119) @@ -18406,8 +18588,10 @@ - [@mrsimpson](https://github.com/mrsimpson) - [@ohmonster](https://github.com/ohmonster) - [@pkgodara](https://github.com/pkgodara) +- [@renatobecker](https://github.com/renatobecker) - [@rndmh3ro](https://github.com/rndmh3ro) - [@rssilva](https://github.com/rssilva) +- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) - [@timkinnane](https://github.com/timkinnane) - [@ubarsaiyan](https://github.com/ubarsaiyan) @@ -18416,16 +18600,12 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.69.2 `2018-09-11 · 1 🎉 · 4 🐛 · 6 👩‍💻👨‍💻` @@ -18504,9 +18684,9 @@ - Make font of unread items bolder for better contrast ([#8602](https://github.com/RocketChat/Rocket.Chat/pull/8602) by [@ausminternet](https://github.com/ausminternet)) -- Personal access tokens for users to create API tokens ([#11638](https://github.com/RocketChat/Rocket.Chat/pull/11638)) +- Personal access tokens for users to create API tokens ([#11638](https://github.com/RocketChat/Rocket.Chat/pull/11638) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST endpoint to manage server assets ([#11697](https://github.com/RocketChat/Rocket.Chat/pull/11697)) +- REST endpoint to manage server assets ([#11697](https://github.com/RocketChat/Rocket.Chat/pull/11697) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Rich message text and image buttons ([#11473](https://github.com/RocketChat/Rocket.Chat/pull/11473) by [@ubarsaiyan](https://github.com/ubarsaiyan)) @@ -18525,7 +18705,7 @@ - Add template tag #{userdn} to filter LDAP group member format ([#11662](https://github.com/RocketChat/Rocket.Chat/pull/11662) by [@crazy-max](https://github.com/crazy-max)) -- Escape parameters before send them to email template ([#11644](https://github.com/RocketChat/Rocket.Chat/pull/11644)) +- Escape parameters before send them to email template ([#11644](https://github.com/RocketChat/Rocket.Chat/pull/11644) by [@tassoevan](https://github.com/tassoevan)) - Messagebox fix performance ([#11686](https://github.com/RocketChat/Rocket.Chat/pull/11686)) @@ -18533,18 +18713,18 @@ - Role tag UI ([#11674](https://github.com/RocketChat/Rocket.Chat/pull/11674) by [@timkinnane](https://github.com/timkinnane)) -- Start storing Livechat department within rooms ([#11733](https://github.com/RocketChat/Rocket.Chat/pull/11733)) +- Start storing Livechat department within rooms ([#11733](https://github.com/RocketChat/Rocket.Chat/pull/11733) by [@renatobecker](https://github.com/renatobecker)) -- Warn about push settings that need server restart ([#11784](https://github.com/RocketChat/Rocket.Chat/pull/11784)) +- Warn about push settings that need server restart ([#11784](https://github.com/RocketChat/Rocket.Chat/pull/11784) by [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes -- "User is typing" not working in new Livechat session ([#11670](https://github.com/RocketChat/Rocket.Chat/pull/11670)) +- "User is typing" not working in new Livechat session ([#11670](https://github.com/RocketChat/Rocket.Chat/pull/11670) by [@renatobecker](https://github.com/renatobecker)) - App's i18nAlert is only being displayed as "i18nAlert" ([#11802](https://github.com/RocketChat/Rocket.Chat/pull/11802)) -- Apply Cordova fix in lazy-loaded images sources ([#11807](https://github.com/RocketChat/Rocket.Chat/pull/11807)) +- Apply Cordova fix in lazy-loaded images sources ([#11807](https://github.com/RocketChat/Rocket.Chat/pull/11807) by [@tassoevan](https://github.com/tassoevan)) - Broken logo on setup wizard ([#11708](https://github.com/RocketChat/Rocket.Chat/pull/11708)) @@ -18558,25 +18738,25 @@ - Default server language not being applied ([#11719](https://github.com/RocketChat/Rocket.Chat/pull/11719)) -- Delete removed user's subscriptions ([#10700](https://github.com/RocketChat/Rocket.Chat/pull/10700) by [@Hudell](https://github.com/Hudell)) +- Delete removed user's subscriptions ([#10700](https://github.com/RocketChat/Rocket.Chat/pull/10700) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- directory search table not clickable lines ([#11809](https://github.com/RocketChat/Rocket.Chat/pull/11809)) +- directory search table not clickable lines ([#11809](https://github.com/RocketChat/Rocket.Chat/pull/11809) by [@tassoevan](https://github.com/tassoevan)) -- Escape meta data before inject in head tag ([#11730](https://github.com/RocketChat/Rocket.Chat/pull/11730)) +- Escape meta data before inject in head tag ([#11730](https://github.com/RocketChat/Rocket.Chat/pull/11730) by [@tassoevan](https://github.com/tassoevan)) - Fix links in `onTableItemClick` of the directroy page ([#11543](https://github.com/RocketChat/Rocket.Chat/pull/11543) by [@ura14h](https://github.com/ura14h)) -- Fix permalink of message when running system with subdir ([#11781](https://github.com/RocketChat/Rocket.Chat/pull/11781) by [@ura14h](https://github.com/ura14h)) +- Fix permalink of message when running system with subdir ([#11781](https://github.com/RocketChat/Rocket.Chat/pull/11781) by [@tassoevan](https://github.com/tassoevan) & [@ura14h](https://github.com/ura14h)) - Fixing timeAgo function on directory ([#11728](https://github.com/RocketChat/Rocket.Chat/pull/11728) by [@rssilva](https://github.com/rssilva)) - Incorrect migration version in v130.js ([#11544](https://github.com/RocketChat/Rocket.Chat/pull/11544) by [@c0dzilla](https://github.com/c0dzilla)) -- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830)) +- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830) by [@renatobecker](https://github.com/renatobecker)) -- Livechat rooms starting with two unread message counter ([#11834](https://github.com/RocketChat/Rocket.Chat/pull/11834)) +- Livechat rooms starting with two unread message counter ([#11834](https://github.com/RocketChat/Rocket.Chat/pull/11834) by [@renatobecker](https://github.com/renatobecker)) -- LiveChat switch department not working ([#11011](https://github.com/RocketChat/Rocket.Chat/pull/11011)) +- LiveChat switch department not working ([#11011](https://github.com/RocketChat/Rocket.Chat/pull/11011) by [@renatobecker](https://github.com/renatobecker)) - Login logo now centered on small screens ([#11626](https://github.com/RocketChat/Rocket.Chat/pull/11626) by [@wreiske](https://github.com/wreiske)) @@ -18606,11 +18786,11 @@ - Render Attachment Pretext When Markdown Specified ([#11578](https://github.com/RocketChat/Rocket.Chat/pull/11578) by [@glstewart17](https://github.com/glstewart17)) -- REST `im.members` endpoint not working without sort parameter ([#11821](https://github.com/RocketChat/Rocket.Chat/pull/11821)) +- REST `im.members` endpoint not working without sort parameter ([#11821](https://github.com/RocketChat/Rocket.Chat/pull/11821) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST endpoints to update user not respecting some settings ([#11474](https://github.com/RocketChat/Rocket.Chat/pull/11474)) +- REST endpoints to update user not respecting some settings ([#11474](https://github.com/RocketChat/Rocket.Chat/pull/11474) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Results pagination on /directory REST endpoint ([#11551](https://github.com/RocketChat/Rocket.Chat/pull/11551)) +- Results pagination on /directory REST endpoint ([#11551](https://github.com/RocketChat/Rocket.Chat/pull/11551) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Return room ID for groups where user joined ([#11703](https://github.com/RocketChat/Rocket.Chat/pull/11703) by [@timkinnane](https://github.com/timkinnane)) @@ -18620,13 +18800,13 @@ - SAML login not working when user has multiple emails ([#11642](https://github.com/RocketChat/Rocket.Chat/pull/11642) by [@Hudell](https://github.com/Hudell)) -- Searching by `undefined` via REST when using `query` param ([#11657](https://github.com/RocketChat/Rocket.Chat/pull/11657)) +- Searching by `undefined` via REST when using `query` param ([#11657](https://github.com/RocketChat/Rocket.Chat/pull/11657) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Some assets were pointing to nonexistent path ([#11796](https://github.com/RocketChat/Rocket.Chat/pull/11796)) - Translations were not unique per app allowing conflicts among apps ([#11878](https://github.com/RocketChat/Rocket.Chat/pull/11878)) -- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625)) +- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - wrong create date of channels and users on directory view ([#11682](https://github.com/RocketChat/Rocket.Chat/pull/11682) by [@gsperezb](https://github.com/gsperezb)) @@ -18664,6 +18844,7 @@ - [@Atisom](https://github.com/Atisom) - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@TheReal1604](https://github.com/TheReal1604) - [@ausminternet](https://github.com/ausminternet) - [@c0dzilla](https://github.com/c0dzilla) @@ -18673,8 +18854,10 @@ - [@gsperezb](https://github.com/gsperezb) - [@jukper](https://github.com/jukper) - [@kable-wilmoth](https://github.com/kable-wilmoth) +- [@renatobecker](https://github.com/renatobecker) - [@rndmh3ro](https://github.com/rndmh3ro) - [@rssilva](https://github.com/rssilva) +- [@tassoevan](https://github.com/tassoevan) - [@timkinnane](https://github.com/timkinnane) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@ura14h](https://github.com/ura14h) @@ -18683,15 +18866,12 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.68.5 `2018-08-23 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -18703,9 +18883,9 @@ ### 🐛 Bug fixes -- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830)) +- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@renatobecker](https://github.com/renatobecker) @@ -18752,24 +18932,24 @@ - SAML login not working when user has multiple emails ([#11642](https://github.com/RocketChat/Rocket.Chat/pull/11642) by [@Hudell](https://github.com/Hudell)) -- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625)) +- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes -- Release 0.68.3 ([#11650](https://github.com/RocketChat/Rocket.Chat/pull/11650) by [@Hudell](https://github.com/Hudell) & [@rndmh3ro](https://github.com/rndmh3ro)) +- Release 0.68.3 ([#11650](https://github.com/RocketChat/Rocket.Chat/pull/11650) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rndmh3ro](https://github.com/rndmh3ro))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@rndmh3ro](https://github.com/rndmh3ro) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@sampaiodiego](https://github.com/sampaiodiego) # 0.68.2 @@ -18810,7 +18990,7 @@ ### 🐛 Bug fixes -- `Jump to message` search result action ([#11613](https://github.com/RocketChat/Rocket.Chat/pull/11613)) +- `Jump to message` search result action ([#11613](https://github.com/RocketChat/Rocket.Chat/pull/11613) by [@tassoevan](https://github.com/tassoevan)) - HipChat importer wasn’t compatible with latest exports ([#11597](https://github.com/RocketChat/Rocket.Chat/pull/11597)) @@ -18818,16 +18998,19 @@ 🔍 Minor changes -- Release 0.68.1 ([#11616](https://github.com/RocketChat/Rocket.Chat/pull/11616)) +- Release 0.68.1 ([#11616](https://github.com/RocketChat/Rocket.Chat/pull/11616) by [@tassoevan](https://github.com/tassoevan))
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@tassoevan](https://github.com/tassoevan) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@engelgabriel](https://github.com/engelgabriel) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.68.0 `2018-07-27 · 2 ️️️⚠️ · 13 🎉 · 3 🚀 · 23 🐛 · 10 🔍 · 21 👩‍💻👨‍💻` @@ -18839,22 +19022,22 @@ ### ⚠️ BREAKING CHANGES -- Remove deprecated /user.roles endpoint ([#11493](https://github.com/RocketChat/Rocket.Chat/pull/11493)) +- Remove deprecated /user.roles endpoint ([#11493](https://github.com/RocketChat/Rocket.Chat/pull/11493) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Update GraphQL dependencies ([#11430](https://github.com/RocketChat/Rocket.Chat/pull/11430)) +- Update GraphQL dependencies ([#11430](https://github.com/RocketChat/Rocket.Chat/pull/11430) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) ### 🎉 New features - Accept resumeToken as query param to log in ([#11443](https://github.com/RocketChat/Rocket.Chat/pull/11443)) -- Add /roles.list REST endpoint to retrieve all server roles ([#11500](https://github.com/RocketChat/Rocket.Chat/pull/11500)) +- Add /roles.list REST endpoint to retrieve all server roles ([#11500](https://github.com/RocketChat/Rocket.Chat/pull/11500) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add /users.deleteOwnAccount REST endpoint to an user delete his own account ([#11488](https://github.com/RocketChat/Rocket.Chat/pull/11488)) +- Add /users.deleteOwnAccount REST endpoint to an user delete his own account ([#11488](https://github.com/RocketChat/Rocket.Chat/pull/11488) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Livechat File Upload ([#10514](https://github.com/RocketChat/Rocket.Chat/pull/10514)) +- Livechat File Upload ([#10514](https://github.com/RocketChat/Rocket.Chat/pull/10514) by [@renatobecker](https://github.com/renatobecker)) -- Make WebRTC not enabled by default ([#11489](https://github.com/RocketChat/Rocket.Chat/pull/11489)) +- Make WebRTC not enabled by default ([#11489](https://github.com/RocketChat/Rocket.Chat/pull/11489) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Message retention policy and pruning ([#11236](https://github.com/RocketChat/Rocket.Chat/pull/11236) by [@vynmera](https://github.com/vynmera)) @@ -18862,7 +19045,7 @@ - Replaced old logo with the new ones ([#11491](https://github.com/RocketChat/Rocket.Chat/pull/11491) by [@brunosquadros](https://github.com/brunosquadros)) -- Room files search form ([#11486](https://github.com/RocketChat/Rocket.Chat/pull/11486)) +- Room files search form ([#11486](https://github.com/RocketChat/Rocket.Chat/pull/11486) by [@tassoevan](https://github.com/tassoevan)) - search only default tone emoji Popup search ([#10017](https://github.com/RocketChat/Rocket.Chat/pull/10017) by [@Joe-mcgee](https://github.com/Joe-mcgee)) @@ -18875,7 +19058,7 @@ ### 🚀 Improvements -- Allow markdown in room topic, announcement, and description including single quotes ([#11408](https://github.com/RocketChat/Rocket.Chat/pull/11408)) +- Allow markdown in room topic, announcement, and description including single quotes ([#11408](https://github.com/RocketChat/Rocket.Chat/pull/11408) by [@tassoevan](https://github.com/tassoevan)) - Set default max upload size to 100mb ([#11327](https://github.com/RocketChat/Rocket.Chat/pull/11327) by [@cardoso](https://github.com/cardoso)) @@ -18884,13 +19067,13 @@ ### 🐛 Bug fixes -- Add customFields property to /me REST endpoint response ([#11496](https://github.com/RocketChat/Rocket.Chat/pull/11496)) +- Add customFields property to /me REST endpoint response ([#11496](https://github.com/RocketChat/Rocket.Chat/pull/11496) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - broadcast channel reply ([#11462](https://github.com/RocketChat/Rocket.Chat/pull/11462)) -- Check for channels property on message object before parsing mentions ([#11527](https://github.com/RocketChat/Rocket.Chat/pull/11527)) +- Check for channels property on message object before parsing mentions ([#11527](https://github.com/RocketChat/Rocket.Chat/pull/11527) by [@tassoevan](https://github.com/tassoevan)) -- Decrease room leader bar z-index ([#11450](https://github.com/RocketChat/Rocket.Chat/pull/11450)) +- Decrease room leader bar z-index ([#11450](https://github.com/RocketChat/Rocket.Chat/pull/11450) by [@tassoevan](https://github.com/tassoevan)) - empty blockquote ([#11526](https://github.com/RocketChat/Rocket.Chat/pull/11526)) @@ -18898,7 +19081,7 @@ - Invalid permalink URLs for Direct Messages ([#11507](https://github.com/RocketChat/Rocket.Chat/pull/11507) by [@Hudell](https://github.com/Hudell)) -- Loading and setting fixes for i18n and RTL ([#11363](https://github.com/RocketChat/Rocket.Chat/pull/11363)) +- Loading and setting fixes for i18n and RTL ([#11363](https://github.com/RocketChat/Rocket.Chat/pull/11363) by [@tassoevan](https://github.com/tassoevan)) - Marked parser breaking announcements and mentions at the start of messages ([#11357](https://github.com/RocketChat/Rocket.Chat/pull/11357) by [@vynmera](https://github.com/vynmera)) @@ -18906,27 +19089,27 @@ - New favicons size too small ([#11524](https://github.com/RocketChat/Rocket.Chat/pull/11524) by [@brunosquadros](https://github.com/brunosquadros)) -- Only escape HTML from details in toast error messages ([#11459](https://github.com/RocketChat/Rocket.Chat/pull/11459)) +- Only escape HTML from details in toast error messages ([#11459](https://github.com/RocketChat/Rocket.Chat/pull/11459) by [@tassoevan](https://github.com/tassoevan)) - Record popup ([#11349](https://github.com/RocketChat/Rocket.Chat/pull/11349)) -- Refinements in message popup mentions ([#11441](https://github.com/RocketChat/Rocket.Chat/pull/11441)) +- Refinements in message popup mentions ([#11441](https://github.com/RocketChat/Rocket.Chat/pull/11441) by [@tassoevan](https://github.com/tassoevan)) -- Remove title attribute from sidebar items ([#11298](https://github.com/RocketChat/Rocket.Chat/pull/11298)) +- Remove title attribute from sidebar items ([#11298](https://github.com/RocketChat/Rocket.Chat/pull/11298) by [@tassoevan](https://github.com/tassoevan)) -- Render reply preview with message as a common message ([#11534](https://github.com/RocketChat/Rocket.Chat/pull/11534)) +- Render reply preview with message as a common message ([#11534](https://github.com/RocketChat/Rocket.Chat/pull/11534) by [@tassoevan](https://github.com/tassoevan)) - RocketChat.settings.get causing memory leak (sometimes) ([#11487](https://github.com/RocketChat/Rocket.Chat/pull/11487)) - SAML issues ([#11135](https://github.com/RocketChat/Rocket.Chat/pull/11135) by [@Hudell](https://github.com/Hudell) & [@arminfelder](https://github.com/arminfelder)) -- Send Livechat back to Guest Pool ([#10731](https://github.com/RocketChat/Rocket.Chat/pull/10731)) +- Send Livechat back to Guest Pool ([#10731](https://github.com/RocketChat/Rocket.Chat/pull/10731) by [@renatobecker](https://github.com/renatobecker)) - Snap font issue for sharp ([#11514](https://github.com/RocketChat/Rocket.Chat/pull/11514)) - Unlimited upload file size not working ([#11471](https://github.com/RocketChat/Rocket.Chat/pull/11471) by [@Hudell](https://github.com/Hudell)) -- Unreads counter for new rooms on /channels.counters REST endpoint ([#11531](https://github.com/RocketChat/Rocket.Chat/pull/11531)) +- Unreads counter for new rooms on /channels.counters REST endpoint ([#11531](https://github.com/RocketChat/Rocket.Chat/pull/11531) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Wrap custom fields in user profile to new line ([#10119](https://github.com/RocketChat/Rocket.Chat/pull/10119) by [@PhpXp](https://github.com/PhpXp) & [@karlprieb](https://github.com/karlprieb)) @@ -18938,11 +19121,11 @@ - Merge master into develop & Set version to 0.68.0-develop ([#11536](https://github.com/RocketChat/Rocket.Chat/pull/11536)) -- Regression: Add missing LiveChat permission to allow removing closed rooms ([#11423](https://github.com/RocketChat/Rocket.Chat/pull/11423)) +- Regression: Add missing LiveChat permission to allow removing closed rooms ([#11423](https://github.com/RocketChat/Rocket.Chat/pull/11423) by [@renatobecker](https://github.com/renatobecker)) - Regression: Fix purge message's translations ([#11590](https://github.com/RocketChat/Rocket.Chat/pull/11590)) -- Regression: Make message popup user mentions reactive again ([#11567](https://github.com/RocketChat/Rocket.Chat/pull/11567)) +- Regression: Make message popup user mentions reactive again ([#11567](https://github.com/RocketChat/Rocket.Chat/pull/11567) by [@tassoevan](https://github.com/tassoevan)) - Regression: nonReactive to nonreactive ([#11550](https://github.com/RocketChat/Rocket.Chat/pull/11550)) @@ -18961,27 +19144,27 @@ - [@HappyTobi](https://github.com/HappyTobi) - [@Hudell](https://github.com/Hudell) - [@Joe-mcgee](https://github.com/Joe-mcgee) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@PhpXp](https://github.com/PhpXp) - [@arminfelder](https://github.com/arminfelder) - [@arungalva](https://github.com/arungalva) - [@brunosquadros](https://github.com/brunosquadros) - [@cardoso](https://github.com/cardoso) - [@karlprieb](https://github.com/karlprieb) +- [@renatobecker](https://github.com/renatobecker) - [@soundstorm](https://github.com/soundstorm) +- [@tassoevan](https://github.com/tassoevan) - [@tpDBL](https://github.com/tpDBL) - [@vynmera](https://github.com/vynmera) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.67.0 `2018-07-20 · 1 ️️️⚠️ · 1 🎉 · 2 🚀 · 15 🐛 · 7 🔍 · 11 👩‍💻👨‍💻` @@ -18998,12 +19181,12 @@ ### 🎉 New features -- Additional Livechat iFrame API's ([#10918](https://github.com/RocketChat/Rocket.Chat/pull/10918)) +- Additional Livechat iFrame API's ([#10918](https://github.com/RocketChat/Rocket.Chat/pull/10918) by [@renatobecker](https://github.com/renatobecker)) ### 🚀 Improvements -- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254)) +- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254) by [@tassoevan](https://github.com/tassoevan)) - Stop sort callbacks on run ([#11330](https://github.com/RocketChat/Rocket.Chat/pull/11330)) @@ -19012,15 +19195,15 @@ - All messages notifications via email were sent as mention alert ([#11398](https://github.com/RocketChat/Rocket.Chat/pull/11398)) -- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266)) +- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266) by [@renatobecker](https://github.com/renatobecker)) -- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406)) +- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406) by [@renatobecker](https://github.com/renatobecker)) - Livestream muted when audio only option was enabled ([#11267](https://github.com/RocketChat/Rocket.Chat/pull/11267) by [@gdelavald](https://github.com/gdelavald)) - Message attachment's fields with different sizes ([#11342](https://github.com/RocketChat/Rocket.Chat/pull/11342)) -- Message popup responsiveness in slash commands ([#11313](https://github.com/RocketChat/Rocket.Chat/pull/11313)) +- Message popup responsiveness in slash commands ([#11313](https://github.com/RocketChat/Rocket.Chat/pull/11313) by [@tassoevan](https://github.com/tassoevan)) - Notification preferences being lost when switching view mode ([#11295](https://github.com/RocketChat/Rocket.Chat/pull/11295)) @@ -19036,7 +19219,7 @@ - sort fname sidenav ([#11358](https://github.com/RocketChat/Rocket.Chat/pull/11358)) -- SVG icons code ([#11319](https://github.com/RocketChat/Rocket.Chat/pull/11319)) +- SVG icons code ([#11319](https://github.com/RocketChat/Rocket.Chat/pull/11319) by [@tassoevan](https://github.com/tassoevan)) - web app manifest errors as reported by Chrome DevTools ([#9991](https://github.com/RocketChat/Rocket.Chat/pull/9991) by [@justinribeiro](https://github.com/justinribeiro)) @@ -19046,11 +19229,11 @@ - Fix dependency issue in redhat image ([#11497](https://github.com/RocketChat/Rocket.Chat/pull/11497)) -- Merge master into develop & Set version to 0.67.0-develop ([#11417](https://github.com/RocketChat/Rocket.Chat/pull/11417)) +- Merge master into develop & Set version to 0.67.0-develop ([#11417](https://github.com/RocketChat/Rocket.Chat/pull/11417) by [@renatobecker](https://github.com/renatobecker)) -- Merge master into develop & Set version to 0.67.0-develop ([#11399](https://github.com/RocketChat/Rocket.Chat/pull/11399)) +- Merge master into develop & Set version to 0.67.0-develop ([#11399](https://github.com/RocketChat/Rocket.Chat/pull/11399) by [@renatobecker](https://github.com/renatobecker)) -- Merge master into develop & Set version to 0.67.0-develop ([#11348](https://github.com/RocketChat/Rocket.Chat/pull/11348) by [@Hudell](https://github.com/Hudell) & [@gdelavald](https://github.com/gdelavald)) +- Merge master into develop & Set version to 0.67.0-develop ([#11348](https://github.com/RocketChat/Rocket.Chat/pull/11348) by [@Hudell](https://github.com/Hudell) & [@gdelavald](https://github.com/gdelavald) & [@tassoevan](https://github.com/tassoevan)) - Merge master into develop & Set version to 0.67.0-develop ([#11290](https://github.com/RocketChat/Rocket.Chat/pull/11290)) @@ -19066,16 +19249,16 @@ - [@c0dzilla](https://github.com/c0dzilla) - [@gdelavald](https://github.com/gdelavald) - [@justinribeiro](https://github.com/justinribeiro) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.66.3 `2018-07-09 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -19089,11 +19272,14 @@ - All messages notifications via email were sent as mention alert ([#11398](https://github.com/RocketChat/Rocket.Chat/pull/11398)) -- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406)) +- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406) by [@renatobecker](https://github.com/renatobecker)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@renatobecker](https://github.com/renatobecker) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@rodrigok](https://github.com/rodrigok) # 0.66.2 @@ -19106,7 +19292,7 @@ ### 🐛 Bug fixes -- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266)) +- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266) by [@renatobecker](https://github.com/renatobecker)) - Remove file snap store doesn't like ([#11365](https://github.com/RocketChat/Rocket.Chat/pull/11365)) @@ -19120,10 +19306,13 @@
+### 👩‍💻👨‍💻 Contributors 😍 + +- [@renatobecker](https://github.com/renatobecker) + ### 👩‍💻👨‍💻 Core Team 🤓 - [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -19137,7 +19326,7 @@ ### 🚀 Improvements -- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254)) +- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254) by [@tassoevan](https://github.com/tassoevan)) ### 🐛 Bug fixes @@ -19156,13 +19345,13 @@ - [@Hudell](https://github.com/Hudell) - [@gdelavald](https://github.com/gdelavald) +- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.66.0 `2018-06-27 · 1 ️️️⚠️ · 23 🎉 · 3 🚀 · 59 🐛 · 47 🔍 · 45 👩‍💻👨‍💻` @@ -19174,16 +19363,16 @@ ### ⚠️ BREAKING CHANGES -- Always remove the field `services` from user data responses in REST API ([#10799](https://github.com/RocketChat/Rocket.Chat/pull/10799)) +- Always remove the field `services` from user data responses in REST API ([#10799](https://github.com/RocketChat/Rocket.Chat/pull/10799) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) ### 🎉 New features -- Add input to set time for avatar cache control ([#10958](https://github.com/RocketChat/Rocket.Chat/pull/10958)) +- Add input to set time for avatar cache control ([#10958](https://github.com/RocketChat/Rocket.Chat/pull/10958) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Add prometheus port config ([#11115](https://github.com/RocketChat/Rocket.Chat/pull/11115) by [@brylie](https://github.com/brylie) & [@stuartpb](https://github.com/stuartpb) & [@thaiphv](https://github.com/thaiphv)) -- Button to remove closed LiveChat rooms ([#10301](https://github.com/RocketChat/Rocket.Chat/pull/10301)) +- Button to remove closed LiveChat rooms ([#10301](https://github.com/RocketChat/Rocket.Chat/pull/10301) by [@renatobecker](https://github.com/renatobecker)) - Changes all 'mergeChannels' to 'groupByType'. ([#10055](https://github.com/RocketChat/Rocket.Chat/pull/10055) by [@mikaelmello](https://github.com/mikaelmello)) @@ -19211,7 +19400,7 @@ - REST API endpoints `permissions.list` and `permissions.update`. Deprecated endpoint `permissions` ([#10975](https://github.com/RocketChat/Rocket.Chat/pull/10975) by [@vynmera](https://github.com/vynmera)) -- Send LiveChat visitor navigation history as messages ([#10091](https://github.com/RocketChat/Rocket.Chat/pull/10091)) +- Send LiveChat visitor navigation history as messages ([#10091](https://github.com/RocketChat/Rocket.Chat/pull/10091) by [@renatobecker](https://github.com/renatobecker)) - Set Document Domain property in IFrame ([#9751](https://github.com/RocketChat/Rocket.Chat/pull/9751) by [@kb0304](https://github.com/kb0304)) @@ -19241,11 +19430,11 @@ - "blank" screen on iOS < 11 ([#11199](https://github.com/RocketChat/Rocket.Chat/pull/11199)) -- /groups.invite not allow a user to invite even with permission ([#11010](https://github.com/RocketChat/Rocket.Chat/pull/11010) by [@Hudell](https://github.com/Hudell)) +- /groups.invite not allow a user to invite even with permission ([#11010](https://github.com/RocketChat/Rocket.Chat/pull/11010) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add parameter to REST chat.react endpoint, to make it work like a setter ([#10447](https://github.com/RocketChat/Rocket.Chat/pull/10447)) +- Add parameter to REST chat.react endpoint, to make it work like a setter ([#10447](https://github.com/RocketChat/Rocket.Chat/pull/10447) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Allow inviting livechat managers to the same LiveChat room ([#10956](https://github.com/RocketChat/Rocket.Chat/pull/10956)) +- Allow inviting livechat managers to the same LiveChat room ([#10956](https://github.com/RocketChat/Rocket.Chat/pull/10956) by [@renatobecker](https://github.com/renatobecker)) - Application crashing on startup when trying to log errors to `exceptions` channel ([#10934](https://github.com/RocketChat/Rocket.Chat/pull/10934)) @@ -19255,13 +19444,13 @@ - Build for Sandstorm missing dependence for capnp ([#11056](https://github.com/RocketChat/Rocket.Chat/pull/11056) by [@peterlee0127](https://github.com/peterlee0127)) -- Can't access the `/account/profile` ([#11089](https://github.com/RocketChat/Rocket.Chat/pull/11089)) +- Can't access the `/account/profile` ([#11089](https://github.com/RocketChat/Rocket.Chat/pull/11089) by [@tassoevan](https://github.com/tassoevan)) - Cannot read property 'debug' of undefined when trying to use REST API ([#10805](https://github.com/RocketChat/Rocket.Chat/pull/10805) by [@haffla](https://github.com/haffla)) -- Confirm password on set new password user profile ([#11095](https://github.com/RocketChat/Rocket.Chat/pull/11095)) +- Confirm password on set new password user profile ([#11095](https://github.com/RocketChat/Rocket.Chat/pull/11095) by [@tassoevan](https://github.com/tassoevan)) -- Default selected language ([#11150](https://github.com/RocketChat/Rocket.Chat/pull/11150)) +- Default selected language ([#11150](https://github.com/RocketChat/Rocket.Chat/pull/11150) by [@tassoevan](https://github.com/tassoevan)) - Exception in metrics generation ([#11072](https://github.com/RocketChat/Rocket.Chat/pull/11072)) @@ -19271,7 +19460,7 @@ - flex-tab icons missing ([#11049](https://github.com/RocketChat/Rocket.Chat/pull/11049)) -- Generated random password visible to the user ([#11096](https://github.com/RocketChat/Rocket.Chat/pull/11096)) +- Generated random password visible to the user ([#11096](https://github.com/RocketChat/Rocket.Chat/pull/11096) by [@tassoevan](https://github.com/tassoevan)) - HipChat Cloud import fails to import rooms ([#11188](https://github.com/RocketChat/Rocket.Chat/pull/11188) by [@Hudell](https://github.com/Hudell)) @@ -19291,11 +19480,11 @@ - Link previews not being removed from messages after removed on editing ([#11063](https://github.com/RocketChat/Rocket.Chat/pull/11063)) -- LiveChat appearance changes not being saved ([#11111](https://github.com/RocketChat/Rocket.Chat/pull/11111)) +- LiveChat appearance changes not being saved ([#11111](https://github.com/RocketChat/Rocket.Chat/pull/11111) by [@renatobecker](https://github.com/renatobecker)) -- Livechat icon with status ([#11177](https://github.com/RocketChat/Rocket.Chat/pull/11177)) +- Livechat icon with status ([#11177](https://github.com/RocketChat/Rocket.Chat/pull/11177) by [@tassoevan](https://github.com/tassoevan)) -- Livechat visitor not being prompted for transcript when himself is closing the chat ([#10767](https://github.com/RocketChat/Rocket.Chat/pull/10767)) +- Livechat visitor not being prompted for transcript when himself is closing the chat ([#10767](https://github.com/RocketChat/Rocket.Chat/pull/10767) by [@renatobecker](https://github.com/renatobecker)) - Message_AllowedMaxSize fails for emoji sequences ([#10431](https://github.com/RocketChat/Rocket.Chat/pull/10431) by [@c0dzilla](https://github.com/c0dzilla)) @@ -19307,29 +19496,29 @@ - Overlapping of search text and cancel search icon (X) ([#10294](https://github.com/RocketChat/Rocket.Chat/pull/10294) by [@taeven](https://github.com/taeven)) -- Popover position ([#11113](https://github.com/RocketChat/Rocket.Chat/pull/11113)) +- Popover position ([#11113](https://github.com/RocketChat/Rocket.Chat/pull/11113) by [@tassoevan](https://github.com/tassoevan)) - Preview of large images not resizing to fit the area and having scrollbars ([#10998](https://github.com/RocketChat/Rocket.Chat/pull/10998) by [@vynmera](https://github.com/vynmera)) - Reaction Toggle was not working when omitting the last parameter from the API (DDP and REST) ([#11276](https://github.com/RocketChat/Rocket.Chat/pull/11276) by [@Hudell](https://github.com/Hudell)) -- Remove failed upload messages when switching rooms ([#11132](https://github.com/RocketChat/Rocket.Chat/pull/11132)) +- Remove failed upload messages when switching rooms ([#11132](https://github.com/RocketChat/Rocket.Chat/pull/11132) by [@tassoevan](https://github.com/tassoevan)) - Remove outdated 2FA warning for mobile clients ([#10916](https://github.com/RocketChat/Rocket.Chat/pull/10916) by [@cardoso](https://github.com/cardoso)) - remove sidebar on embedded view ([#11183](https://github.com/RocketChat/Rocket.Chat/pull/11183)) -- Rendering of emails and mentions in messages ([#11165](https://github.com/RocketChat/Rocket.Chat/pull/11165)) +- Rendering of emails and mentions in messages ([#11165](https://github.com/RocketChat/Rocket.Chat/pull/11165) by [@tassoevan](https://github.com/tassoevan)) -- REST API: Add more test cases for `/login` ([#10999](https://github.com/RocketChat/Rocket.Chat/pull/10999)) +- REST API: Add more test cases for `/login` ([#10999](https://github.com/RocketChat/Rocket.Chat/pull/10999) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST endpoint `users.updateOwnBasicInfo` was not returning errors for invalid names and trying to save custom fields when empty ([#11204](https://github.com/RocketChat/Rocket.Chat/pull/11204)) +- REST endpoint `users.updateOwnBasicInfo` was not returning errors for invalid names and trying to save custom fields when empty ([#11204](https://github.com/RocketChat/Rocket.Chat/pull/11204) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Room creation error due absence of subscriptions ([#11178](https://github.com/RocketChat/Rocket.Chat/pull/11178)) +- Room creation error due absence of subscriptions ([#11178](https://github.com/RocketChat/Rocket.Chat/pull/11178) by [@tassoevan](https://github.com/tassoevan)) - Rooms list sorting by activity multiple re-renders and case sensitive sorting alphabetically ([#9959](https://github.com/RocketChat/Rocket.Chat/pull/9959) by [@JoseRenan](https://github.com/JoseRenan) & [@karlprieb](https://github.com/karlprieb)) -- set-toolbar-items postMessage ([#11109](https://github.com/RocketChat/Rocket.Chat/pull/11109)) +- set-toolbar-items postMessage ([#11109](https://github.com/RocketChat/Rocket.Chat/pull/11109) by [@tassoevan](https://github.com/tassoevan)) - Some typos in the error message names ([#11136](https://github.com/RocketChat/Rocket.Chat/pull/11136) by [@vynmera](https://github.com/vynmera)) @@ -19337,7 +19526,7 @@ - The process was freezing in some cases when HTTP calls exceeds timeout on integrations ([#11253](https://github.com/RocketChat/Rocket.Chat/pull/11253)) -- title and value attachments are optionals on sendMessage method ([#11021](https://github.com/RocketChat/Rocket.Chat/pull/11021)) +- title and value attachments are optionals on sendMessage method ([#11021](https://github.com/RocketChat/Rocket.Chat/pull/11021) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Update capnproto dependence for Sandstorm Build ([#11263](https://github.com/RocketChat/Rocket.Chat/pull/11263) by [@peterlee0127](https://github.com/peterlee0127)) @@ -19363,7 +19552,7 @@ - Add Dockerfile with MongoDB ([#10971](https://github.com/RocketChat/Rocket.Chat/pull/10971)) -- Add verification to make sure the user exists in REST insert object helper ([#11008](https://github.com/RocketChat/Rocket.Chat/pull/11008)) +- Add verification to make sure the user exists in REST insert object helper ([#11008](https://github.com/RocketChat/Rocket.Chat/pull/11008) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Build Docker image on CI ([#11076](https://github.com/RocketChat/Rocket.Chat/pull/11076)) @@ -19381,7 +19570,7 @@ - Fix readme typo ([#5](https://github.com/RocketChat/Rocket.Chat/pull/5) by [@filipealva](https://github.com/filipealva)) -- IRC Federation: RFC2813 implementation (ngIRCd) ([#10113](https://github.com/RocketChat/Rocket.Chat/pull/10113) by [@Hudell](https://github.com/Hudell) & [@cpitman](https://github.com/cpitman) & [@lindoelio](https://github.com/lindoelio)) +- IRC Federation: RFC2813 implementation (ngIRCd) ([#10113](https://github.com/RocketChat/Rocket.Chat/pull/10113) by [@Hudell](https://github.com/Hudell) & [@alansikora](https://github.com/alansikora) & [@cpitman](https://github.com/cpitman) & [@lindoelio](https://github.com/lindoelio)) - LingoHub based on develop ([#11208](https://github.com/RocketChat/Rocket.Chat/pull/11208)) @@ -19459,6 +19648,8 @@ - [@Hudell](https://github.com/Hudell) - [@JoseRenan](https://github.com/JoseRenan) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@brylie](https://github.com/brylie) - [@c0dzilla](https://github.com/c0dzilla) - [@cardoso](https://github.com/cardoso) @@ -19485,26 +19676,24 @@ - [@pkgodara](https://github.com/pkgodara) - [@rafaelks](https://github.com/rafaelks) - [@rakhi2104](https://github.com/rakhi2104) +- [@renatobecker](https://github.com/renatobecker) - [@rw4lll](https://github.com/rw4lll) - [@saplla](https://github.com/saplla) - [@stuartpb](https://github.com/stuartpb) - [@taeven](https://github.com/taeven) +- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) - [@timkinnane](https://github.com/timkinnane) - [@vynmera](https://github.com/vynmera) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) -- [@tassoevan](https://github.com/tassoevan) # 0.65.2 `2018-06-16 · 1 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` @@ -19576,13 +19765,13 @@ - Add permission `view-broadcast-member-list` ([#10753](https://github.com/RocketChat/Rocket.Chat/pull/10753) by [@cardoso](https://github.com/cardoso)) -- Add REST API endpoint `users.getUsernameSuggestion` to get username suggestion ([#10702](https://github.com/RocketChat/Rocket.Chat/pull/10702)) +- Add REST API endpoint `users.getUsernameSuggestion` to get username suggestion ([#10702](https://github.com/RocketChat/Rocket.Chat/pull/10702) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add REST API endpoints `channels.counters`, `groups.counters and `im.counters` ([#9679](https://github.com/RocketChat/Rocket.Chat/pull/9679) by [@xbolshe](https://github.com/xbolshe)) +- Add REST API endpoints `channels.counters`, `groups.counters and `im.counters` ([#9679](https://github.com/RocketChat/Rocket.Chat/pull/9679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@xbolshe](https://github.com/xbolshe)) - Add REST API endpoints `channels.setCustomFields` and `groups.setCustomFields` ([#9733](https://github.com/RocketChat/Rocket.Chat/pull/9733) by [@xbolshe](https://github.com/xbolshe)) -- Add REST endpoint `subscriptions.unread` to mark messages as unread ([#10778](https://github.com/RocketChat/Rocket.Chat/pull/10778)) +- Add REST endpoint `subscriptions.unread` to mark messages as unread ([#10778](https://github.com/RocketChat/Rocket.Chat/pull/10778) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Add REST endpoints `channels.roles` & `groups.roles` ([#10607](https://github.com/RocketChat/Rocket.Chat/pull/10607) by [@cardoso](https://github.com/cardoso) & [@rafaelks](https://github.com/rafaelks)) @@ -19592,15 +19781,15 @@ - Lazy load image attachments ([#10608](https://github.com/RocketChat/Rocket.Chat/pull/10608) by [@karlprieb](https://github.com/karlprieb)) -- Now is possible to access files using header authorization (`x-user-id` and `x-auth-token`) ([#10741](https://github.com/RocketChat/Rocket.Chat/pull/10741)) +- Now is possible to access files using header authorization (`x-user-id` and `x-auth-token`) ([#10741](https://github.com/RocketChat/Rocket.Chat/pull/10741) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Options to enable/disable each Livechat registration form field ([#10584](https://github.com/RocketChat/Rocket.Chat/pull/10584)) +- Options to enable/disable each Livechat registration form field ([#10584](https://github.com/RocketChat/Rocket.Chat/pull/10584) by [@renatobecker](https://github.com/renatobecker)) -- REST API endpoint `/me` now returns all the settings, including the default values ([#10662](https://github.com/RocketChat/Rocket.Chat/pull/10662)) +- REST API endpoint `/me` now returns all the settings, including the default values ([#10662](https://github.com/RocketChat/Rocket.Chat/pull/10662) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST API endpoint `settings` now allow set colors and trigger actions ([#10488](https://github.com/RocketChat/Rocket.Chat/pull/10488) by [@ThomasRoehl](https://github.com/ThomasRoehl)) +- REST API endpoint `settings` now allow set colors and trigger actions ([#10488](https://github.com/RocketChat/Rocket.Chat/pull/10488) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ThomasRoehl](https://github.com/ThomasRoehl)) -- Return the result of the `/me` endpoint within the result of the `/login` endpoint ([#10677](https://github.com/RocketChat/Rocket.Chat/pull/10677)) +- Return the result of the `/me` endpoint within the result of the `/login` endpoint ([#10677](https://github.com/RocketChat/Rocket.Chat/pull/10677) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Setup Wizard ([#10523](https://github.com/RocketChat/Rocket.Chat/pull/10523) by [@karlprieb](https://github.com/karlprieb)) @@ -19613,7 +19802,7 @@ - Cancel button wasn't working while uploading file ([#10715](https://github.com/RocketChat/Rocket.Chat/pull/10715) by [@Mr-Gryphon](https://github.com/Mr-Gryphon) & [@karlprieb](https://github.com/karlprieb)) -- Channel owner was being set as muted when creating a read-only channel ([#10665](https://github.com/RocketChat/Rocket.Chat/pull/10665)) +- Channel owner was being set as muted when creating a read-only channel ([#10665](https://github.com/RocketChat/Rocket.Chat/pull/10665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Enabling `Collapse Embedded Media by Default` was hiding replies and quotes ([#10427](https://github.com/RocketChat/Rocket.Chat/pull/10427) by [@c0dzilla](https://github.com/c0dzilla)) @@ -19625,9 +19814,9 @@ - Layout badge cutting on unread messages for long names ([#10846](https://github.com/RocketChat/Rocket.Chat/pull/10846) by [@kos4live](https://github.com/kos4live)) -- Livechat managers were not being able to send messages in some cases ([#10663](https://github.com/RocketChat/Rocket.Chat/pull/10663)) +- Livechat managers were not being able to send messages in some cases ([#10663](https://github.com/RocketChat/Rocket.Chat/pull/10663) by [@renatobecker](https://github.com/renatobecker)) -- Livechat settings not appearing correctly ([#10612](https://github.com/RocketChat/Rocket.Chat/pull/10612)) +- Livechat settings not appearing correctly ([#10612](https://github.com/RocketChat/Rocket.Chat/pull/10612) by [@renatobecker](https://github.com/renatobecker)) - Message box emoji icon was flickering when typing a text ([#10678](https://github.com/RocketChat/Rocket.Chat/pull/10678) by [@gdelavald](https://github.com/gdelavald)) @@ -19635,7 +19824,7 @@ - Missing option to disable/enable System Messages ([#10704](https://github.com/RocketChat/Rocket.Chat/pull/10704)) -- Missing pagination fields in the response of REST /directory endpoint ([#10840](https://github.com/RocketChat/Rocket.Chat/pull/10840)) +- Missing pagination fields in the response of REST /directory endpoint ([#10840](https://github.com/RocketChat/Rocket.Chat/pull/10840) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Not escaping special chars on mentions ([#10793](https://github.com/RocketChat/Rocket.Chat/pull/10793) by [@erhan-](https://github.com/erhan-)) @@ -19647,7 +19836,7 @@ - SAML wasn't working correctly when running multiple instances ([#10681](https://github.com/RocketChat/Rocket.Chat/pull/10681) by [@Hudell](https://github.com/Hudell)) -- Send a message when muted returns inconsistent result in chat.sendMessage ([#10720](https://github.com/RocketChat/Rocket.Chat/pull/10720)) +- Send a message when muted returns inconsistent result in chat.sendMessage ([#10720](https://github.com/RocketChat/Rocket.Chat/pull/10720) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Slack-Bridge bug when migrating to 0.64.1 ([#10875](https://github.com/RocketChat/Rocket.Chat/pull/10875)) @@ -19655,7 +19844,7 @@ - UI was not disabling the actions when users has had no permissions to create channels or add users to rooms ([#10564](https://github.com/RocketChat/Rocket.Chat/pull/10564) by [@cfunkles](https://github.com/cfunkles) & [@chuckAtCataworx](https://github.com/chuckAtCataworx)) -- User's preference `Unread on Top` wasn't working for LiveChat rooms ([#10734](https://github.com/RocketChat/Rocket.Chat/pull/10734)) +- User's preference `Unread on Top` wasn't working for LiveChat rooms ([#10734](https://github.com/RocketChat/Rocket.Chat/pull/10734) by [@renatobecker](https://github.com/renatobecker))
🔍 Minor changes @@ -19681,7 +19870,7 @@ - Fix: Manage apps layout was a bit confuse ([#10882](https://github.com/RocketChat/Rocket.Chat/pull/10882) by [@gdelavald](https://github.com/gdelavald)) -- Fix: Regression in REST API endpoint `/me` ([#10833](https://github.com/RocketChat/Rocket.Chat/pull/10833)) +- Fix: Regression in REST API endpoint `/me` ([#10833](https://github.com/RocketChat/Rocket.Chat/pull/10833) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix: Regression Lazyload fix shuffle avatars ([#10887](https://github.com/RocketChat/Rocket.Chat/pull/10887)) @@ -19717,7 +19906,7 @@ - Regression: Make settings `Site_Name` and `Language` public again ([#10848](https://github.com/RocketChat/Rocket.Chat/pull/10848)) -- Release 0.65.0 ([#10893](https://github.com/RocketChat/Rocket.Chat/pull/10893) by [@Hudell](https://github.com/Hudell) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) +- Release 0.65.0 ([#10893](https://github.com/RocketChat/Rocket.Chat/pull/10893) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) - Wizard improvements ([#10776](https://github.com/RocketChat/Rocket.Chat/pull/10776)) @@ -19726,6 +19915,7 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Mr-Gryphon](https://github.com/Mr-Gryphon) - [@Sameesunkaria](https://github.com/Sameesunkaria) - [@ThomasRoehl](https://github.com/ThomasRoehl) @@ -19740,17 +19930,16 @@ - [@nsuchy](https://github.com/nsuchy) - [@peccu](https://github.com/peccu) - [@rafaelks](https://github.com/rafaelks) +- [@renatobecker](https://github.com/renatobecker) - [@winterstefan](https://github.com/winterstefan) - [@xbolshe](https://github.com/xbolshe) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -19765,13 +19954,14 @@ 🔍 Minor changes -- Release 0.64.2 ([#10812](https://github.com/RocketChat/Rocket.Chat/pull/10812) by [@Hudell](https://github.com/Hudell) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) +- Release 0.64.2 ([#10812](https://github.com/RocketChat/Rocket.Chat/pull/10812) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Sameesunkaria](https://github.com/Sameesunkaria) - [@cardoso](https://github.com/cardoso) - [@erhan-](https://github.com/erhan-) @@ -19782,7 +19972,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -19843,7 +20032,7 @@ - The property "settings" is no longer available to regular users via rest api ([#10411](https://github.com/RocketChat/Rocket.Chat/pull/10411)) -- Validate incoming message schema ([#9922](https://github.com/RocketChat/Rocket.Chat/pull/9922)) +- Validate incoming message schema ([#9922](https://github.com/RocketChat/Rocket.Chat/pull/9922) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) ### 🎉 New features @@ -19862,7 +20051,7 @@ - GDPR - Right to access and Data Portability ([#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906) by [@Hudell](https://github.com/Hudell)) -- Livechat setting to customize ended conversation message ([#10108](https://github.com/RocketChat/Rocket.Chat/pull/10108)) +- Livechat setting to customize ended conversation message ([#10108](https://github.com/RocketChat/Rocket.Chat/pull/10108) by [@renatobecker](https://github.com/renatobecker)) - Option to ignore users on channels ([#10517](https://github.com/RocketChat/Rocket.Chat/pull/10517) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) @@ -19870,13 +20059,13 @@ - Prevent the browser to autocomplete some setting fields ([#10439](https://github.com/RocketChat/Rocket.Chat/pull/10439) by [@gdelavald](https://github.com/gdelavald)) -- REST API endpoint `/directory` ([#10442](https://github.com/RocketChat/Rocket.Chat/pull/10442)) +- REST API endpoint `/directory` ([#10442](https://github.com/RocketChat/Rocket.Chat/pull/10442) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST API endpoint `rooms.favorite` to favorite and unfavorite rooms ([#10342](https://github.com/RocketChat/Rocket.Chat/pull/10342)) +- REST API endpoint `rooms.favorite` to favorite and unfavorite rooms ([#10342](https://github.com/RocketChat/Rocket.Chat/pull/10342) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST endpoint to recover forgotten password ([#10371](https://github.com/RocketChat/Rocket.Chat/pull/10371)) +- REST endpoint to recover forgotten password ([#10371](https://github.com/RocketChat/Rocket.Chat/pull/10371) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST endpoint to report messages ([#10354](https://github.com/RocketChat/Rocket.Chat/pull/10354)) +- REST endpoint to report messages ([#10354](https://github.com/RocketChat/Rocket.Chat/pull/10354) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Search Provider Framework ([#10110](https://github.com/RocketChat/Rocket.Chat/pull/10110) by [@tkurz](https://github.com/tkurz)) @@ -19891,7 +20080,7 @@ - "Idle Time Limit" using milliseconds instead of seconds ([#9824](https://github.com/RocketChat/Rocket.Chat/pull/9824) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) -- Add user object to responses in /*.files Rest endpoints ([#10480](https://github.com/RocketChat/Rocket.Chat/pull/10480)) +- Add user object to responses in /*.files Rest endpoints ([#10480](https://github.com/RocketChat/Rocket.Chat/pull/10480) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Autocomplete list when inviting a user was partial hidden ([#10409](https://github.com/RocketChat/Rocket.Chat/pull/10409) by [@karlprieb](https://github.com/karlprieb)) @@ -19917,9 +20106,9 @@ - Links being embedded inside of blockquotes ([#10496](https://github.com/RocketChat/Rocket.Chat/pull/10496) by [@gdelavald](https://github.com/gdelavald)) -- Livechat desktop notifications not being displayed ([#10221](https://github.com/RocketChat/Rocket.Chat/pull/10221)) +- Livechat desktop notifications not being displayed ([#10221](https://github.com/RocketChat/Rocket.Chat/pull/10221) by [@renatobecker](https://github.com/renatobecker)) -- Livechat translation files being ignored ([#10369](https://github.com/RocketChat/Rocket.Chat/pull/10369)) +- Livechat translation files being ignored ([#10369](https://github.com/RocketChat/Rocket.Chat/pull/10369) by [@renatobecker](https://github.com/renatobecker)) - Member list search with no results ([#10599](https://github.com/RocketChat/Rocket.Chat/pull/10599)) @@ -19945,13 +20134,13 @@ - Remove a user from the user's list when creating a new channel removes the wrong user ([#10423](https://github.com/RocketChat/Rocket.Chat/pull/10423) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) -- Rename method to clean history of messages ([#10498](https://github.com/RocketChat/Rocket.Chat/pull/10498)) +- Rename method to clean history of messages ([#10498](https://github.com/RocketChat/Rocket.Chat/pull/10498) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Renaming agent's username within Livechat's department ([#10344](https://github.com/RocketChat/Rocket.Chat/pull/10344)) +- Renaming agent's username within Livechat's department ([#10344](https://github.com/RocketChat/Rocket.Chat/pull/10344) by [@renatobecker](https://github.com/renatobecker)) -- REST API OAuth services endpoint were missing fields and flag to indicate custom services ([#10299](https://github.com/RocketChat/Rocket.Chat/pull/10299)) +- REST API OAuth services endpoint were missing fields and flag to indicate custom services ([#10299](https://github.com/RocketChat/Rocket.Chat/pull/10299) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- REST spotlight API wasn't allowing searches with # and @ ([#10410](https://github.com/RocketChat/Rocket.Chat/pull/10410)) +- REST spotlight API wasn't allowing searches with # and @ ([#10410](https://github.com/RocketChat/Rocket.Chat/pull/10410) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Room's name was cutting instead of having ellipses on sidebar ([#10430](https://github.com/RocketChat/Rocket.Chat/pull/10430)) @@ -19997,7 +20186,7 @@ - Fix and improve vietnamese translation ([#10397](https://github.com/RocketChat/Rocket.Chat/pull/10397) by [@TDiNguyen](https://github.com/TDiNguyen) & [@tttt-conan](https://github.com/tttt-conan)) -- Fix: Remove "secret" from REST endpoint /settings.oauth response ([#10513](https://github.com/RocketChat/Rocket.Chat/pull/10513)) +- Fix: Remove "secret" from REST endpoint /settings.oauth response ([#10513](https://github.com/RocketChat/Rocket.Chat/pull/10513) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Included missing lib for migrations ([#10532](https://github.com/RocketChat/Rocket.Chat/pull/10532) by [@Hudell](https://github.com/Hudell)) @@ -20017,7 +20206,7 @@ - Regression: Fix announcement bar being displayed without content ([#10554](https://github.com/RocketChat/Rocket.Chat/pull/10554) by [@gdelavald](https://github.com/gdelavald)) -- Regression: Inconsistent response of settings.oauth endpoint ([#10553](https://github.com/RocketChat/Rocket.Chat/pull/10553)) +- Regression: Inconsistent response of settings.oauth endpoint ([#10553](https://github.com/RocketChat/Rocket.Chat/pull/10553) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Regression: Remove added mentions on quote/reply ([#10571](https://github.com/RocketChat/Rocket.Chat/pull/10571) by [@gdelavald](https://github.com/gdelavald)) @@ -20046,6 +20235,7 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Prakharsvnit](https://github.com/Prakharsvnit) - [@TDiNguyen](https://github.com/TDiNguyen) - [@TwizzyDizzy](https://github.com/TwizzyDizzy) @@ -20063,6 +20253,7 @@ - [@nsuchy](https://github.com/nsuchy) - [@okaybroda](https://github.com/okaybroda) - [@rafaelks](https://github.com/rafaelks) +- [@renatobecker](https://github.com/renatobecker) - [@strangerintheq](https://github.com/strangerintheq) - [@t3hchipmunk](https://github.com/t3hchipmunk) - [@tkurz](https://github.com/tkurz) @@ -20070,12 +20261,10 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20169,21 +20358,21 @@ - Add leave public channel & leave private channel permissions ([#9584](https://github.com/RocketChat/Rocket.Chat/pull/9584) by [@kb0304](https://github.com/kb0304)) -- Add option to login via REST using Facebook and Twitter tokens ([#9816](https://github.com/RocketChat/Rocket.Chat/pull/9816)) +- Add option to login via REST using Facebook and Twitter tokens ([#9816](https://github.com/RocketChat/Rocket.Chat/pull/9816) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Add REST endpoint to get the list of custom emojis ([#9629](https://github.com/RocketChat/Rocket.Chat/pull/9629)) +- Add REST endpoint to get the list of custom emojis ([#9629](https://github.com/RocketChat/Rocket.Chat/pull/9629) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Added endpoint to get the list of available oauth services ([#10144](https://github.com/RocketChat/Rocket.Chat/pull/10144)) +- Added endpoint to get the list of available oauth services ([#10144](https://github.com/RocketChat/Rocket.Chat/pull/10144) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Added endpoint to retrieve mentions of a channel ([#10105](https://github.com/RocketChat/Rocket.Chat/pull/10105)) +- Added endpoint to retrieve mentions of a channel ([#10105](https://github.com/RocketChat/Rocket.Chat/pull/10105) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Added GET/POST channels.notifications ([#10128](https://github.com/RocketChat/Rocket.Chat/pull/10128)) +- Added GET/POST channels.notifications ([#10128](https://github.com/RocketChat/Rocket.Chat/pull/10128) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Announcement bar color wasn't using color from theming variables ([#9367](https://github.com/RocketChat/Rocket.Chat/pull/9367) by [@cyclops24](https://github.com/cyclops24) & [@karlprieb](https://github.com/karlprieb)) - Audio recording as mp3 and better ui for recording ([#9726](https://github.com/RocketChat/Rocket.Chat/pull/9726) by [@kb0304](https://github.com/kb0304)) -- Endpoint to retrieve message read receipts ([#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907)) +- Endpoint to retrieve message read receipts ([#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - GDPR Right to be forgotten/erased ([#9947](https://github.com/RocketChat/Rocket.Chat/pull/9947) by [@Hudell](https://github.com/Hudell)) @@ -20201,16 +20390,16 @@ - Setting to configure max delta for 2fa ([#9732](https://github.com/RocketChat/Rocket.Chat/pull/9732) by [@Hudell](https://github.com/Hudell)) -- Support for agent's phone field ([#10123](https://github.com/RocketChat/Rocket.Chat/pull/10123)) +- Support for agent's phone field ([#10123](https://github.com/RocketChat/Rocket.Chat/pull/10123) by [@renatobecker](https://github.com/renatobecker)) ### 🐛 Bug fixes - "View All Members" button inside channel's "User Info" is over sized ([#10012](https://github.com/RocketChat/Rocket.Chat/pull/10012) by [@karlprieb](https://github.com/karlprieb)) -- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240)) +- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Able to react with invalid emoji ([#8667](https://github.com/RocketChat/Rocket.Chat/pull/8667) by [@mutdmour](https://github.com/mutdmour)) +- Able to react with invalid emoji ([#8667](https://github.com/RocketChat/Rocket.Chat/pull/8667) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@mutdmour](https://github.com/mutdmour)) - Apostrophe-containing URL misparsed ([#9739](https://github.com/RocketChat/Rocket.Chat/pull/9739) by [@lunaticmonk](https://github.com/lunaticmonk)) @@ -20258,7 +20447,7 @@ - Reactions not working on mobile ([#10104](https://github.com/RocketChat/Rocket.Chat/pull/10104)) -- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009)) +- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist ([#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) by [@trongthanh](https://github.com/trongthanh)) @@ -20272,9 +20461,9 @@ - user status on sidenav ([#10222](https://github.com/RocketChat/Rocket.Chat/pull/10222)) -- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719)) +- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) -- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224)) +- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Wrong switch button border color ([#10081](https://github.com/RocketChat/Rocket.Chat/pull/10081) by [@kb0304](https://github.com/kb0304)) @@ -20284,7 +20473,7 @@ - [OTHER] Reactivate all tests ([#10036](https://github.com/RocketChat/Rocket.Chat/pull/10036)) -- [OTHER] Reactivate API tests ([#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844) by [@karlprieb](https://github.com/karlprieb)) +- [OTHER] Reactivate API tests ([#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@karlprieb](https://github.com/karlprieb)) - Add a few listener supports for the Rocket.Chat Apps ([#10154](https://github.com/RocketChat/Rocket.Chat/pull/10154)) @@ -20308,13 +20497,13 @@ - Fix: Reaction endpoint/api only working with regular emojis ([#10323](https://github.com/RocketChat/Rocket.Chat/pull/10323)) -- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257)) +- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Fix: Scroll on content page ([#10300](https://github.com/RocketChat/Rocket.Chat/pull/10300)) - LingoHub based on develop ([#10243](https://github.com/RocketChat/Rocket.Chat/pull/10243)) -- Release 0.63.0 ([#10324](https://github.com/RocketChat/Rocket.Chat/pull/10324) by [@Hudell](https://github.com/Hudell) & [@Joe-mcgee](https://github.com/Joe-mcgee) & [@TopHattedCat](https://github.com/TopHattedCat) & [@hmagarotto](https://github.com/hmagarotto) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@karlprieb](https://github.com/karlprieb) & [@kb0304](https://github.com/kb0304) & [@lunaticmonk](https://github.com/lunaticmonk) & [@ramrami](https://github.com/ramrami)) +- Release 0.63.0 ([#10324](https://github.com/RocketChat/Rocket.Chat/pull/10324) by [@Hudell](https://github.com/Hudell) & [@Joe-mcgee](https://github.com/Joe-mcgee) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@TopHattedCat](https://github.com/TopHattedCat) & [@hmagarotto](https://github.com/hmagarotto) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@karlprieb](https://github.com/karlprieb) & [@kb0304](https://github.com/kb0304) & [@lunaticmonk](https://github.com/lunaticmonk) & [@ramrami](https://github.com/ramrami)) - Rename migration name on 108 to match file name ([#10237](https://github.com/RocketChat/Rocket.Chat/pull/10237)) @@ -20328,6 +20517,7 @@ - [@Hudell](https://github.com/Hudell) - [@Joe-mcgee](https://github.com/Joe-mcgee) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@SeanPackham](https://github.com/SeanPackham) - [@TopHattedCat](https://github.com/TopHattedCat) - [@bernardoetrevisan](https://github.com/bernardoetrevisan) @@ -20341,17 +20531,16 @@ - [@mutdmour](https://github.com/mutdmour) - [@pierreozoux](https://github.com/pierreozoux) - [@ramrami](https://github.com/ramrami) +- [@renatobecker](https://github.com/renatobecker) - [@trongthanh](https://github.com/trongthanh) - [@ubarsaiyan](https://github.com/ubarsaiyan) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20369,13 +20558,13 @@ - Message editing is crashing the server when read receipts are enabled ([#10061](https://github.com/RocketChat/Rocket.Chat/pull/10061)) -- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009)) +- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist ([#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) by [@trongthanh](https://github.com/trongthanh)) - Update preferences of users with settings: null was crashing the server ([#10076](https://github.com/RocketChat/Rocket.Chat/pull/10076)) -- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719)) +- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719) by [@MarcosSpessatto](https://github.com/MarcosSpessatto))
🔍 Minor changes @@ -20387,11 +20576,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@trongthanh](https://github.com/trongthanh) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20446,11 +20635,11 @@ ### 🎉 New features -- Add documentation requirement to PRs ([#9658](https://github.com/RocketChat/Rocket.Chat/pull/9658) by [@SeanPackham](https://github.com/SeanPackham)) +- Add documentation requirement to PRs ([#9658](https://github.com/RocketChat/Rocket.Chat/pull/9658) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@SeanPackham](https://github.com/SeanPackham)) - Add route to get user shield/badge ([#9549](https://github.com/RocketChat/Rocket.Chat/pull/9549) by [@kb0304](https://github.com/kb0304)) -- Add user settings / preferences API endpoint ([#9457](https://github.com/RocketChat/Rocket.Chat/pull/9457) by [@jgtoriginal](https://github.com/jgtoriginal)) +- Add user settings / preferences API endpoint ([#9457](https://github.com/RocketChat/Rocket.Chat/pull/9457) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@jgtoriginal](https://github.com/jgtoriginal)) - Alert admins when user requires approval & alert users when the account is approved/activated/deactivated ([#7098](https://github.com/RocketChat/Rocket.Chat/pull/7098) by [@luisfn](https://github.com/luisfn)) @@ -20460,7 +20649,7 @@ - Allow sounds when conversation is focused ([#9312](https://github.com/RocketChat/Rocket.Chat/pull/9312) by [@RationalCoding](https://github.com/RationalCoding)) -- API to fetch permissions & user roles ([#9519](https://github.com/RocketChat/Rocket.Chat/pull/9519) by [@rafaelks](https://github.com/rafaelks)) +- API to fetch permissions & user roles ([#9519](https://github.com/RocketChat/Rocket.Chat/pull/9519) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rafaelks](https://github.com/rafaelks)) - Browse more channels / Directory ([#9642](https://github.com/RocketChat/Rocket.Chat/pull/9642) by [@karlprieb](https://github.com/karlprieb)) @@ -20490,7 +20679,7 @@ - Request mongoDB version in github issue template ([#9807](https://github.com/RocketChat/Rocket.Chat/pull/9807) by [@TwizzyDizzy](https://github.com/TwizzyDizzy)) -- REST API to use Spotlight ([#9509](https://github.com/RocketChat/Rocket.Chat/pull/9509) by [@rafaelks](https://github.com/rafaelks)) +- REST API to use Spotlight ([#9509](https://github.com/RocketChat/Rocket.Chat/pull/9509) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rafaelks](https://github.com/rafaelks)) - Version update check ([#9793](https://github.com/RocketChat/Rocket.Chat/pull/9793)) @@ -20501,13 +20690,13 @@ - API to retrive rooms was returning empty objects ([#9737](https://github.com/RocketChat/Rocket.Chat/pull/9737)) -- Chat Message Reactions REST API End Point ([#9487](https://github.com/RocketChat/Rocket.Chat/pull/9487) by [@jgtoriginal](https://github.com/jgtoriginal)) +- Chat Message Reactions REST API End Point ([#9487](https://github.com/RocketChat/Rocket.Chat/pull/9487) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@jgtoriginal](https://github.com/jgtoriginal)) - Chrome 64 breaks jitsi-meet iframe ([#9560](https://github.com/RocketChat/Rocket.Chat/pull/9560) by [@speedy01](https://github.com/speedy01)) - Close button on file upload bar was not working ([#9662](https://github.com/RocketChat/Rocket.Chat/pull/9662) by [@karlprieb](https://github.com/karlprieb)) -- Close Livechat conversation by visitor not working in version 0.61.0 ([#9714](https://github.com/RocketChat/Rocket.Chat/pull/9714)) +- Close Livechat conversation by visitor not working in version 0.61.0 ([#9714](https://github.com/RocketChat/Rocket.Chat/pull/9714) by [@renatobecker](https://github.com/renatobecker)) - Custom emoji was cropping sometimes ([#9676](https://github.com/RocketChat/Rocket.Chat/pull/9676) by [@anu-007](https://github.com/anu-007)) @@ -20517,7 +20706,7 @@ - Emoji rendering on last message ([#9776](https://github.com/RocketChat/Rocket.Chat/pull/9776)) -- Facebook integration in livechat not working on version 0.61.0 ([#9640](https://github.com/RocketChat/Rocket.Chat/pull/9640)) +- Facebook integration in livechat not working on version 0.61.0 ([#9640](https://github.com/RocketChat/Rocket.Chat/pull/9640) by [@renatobecker](https://github.com/renatobecker)) - Formal pronouns and some small mistakes in German texts ([#9067](https://github.com/RocketChat/Rocket.Chat/pull/9067) by [@AmShaegar13](https://github.com/AmShaegar13)) @@ -20541,7 +20730,7 @@ - Missing string 'Username_already_exist' on the accountProfile page ([#9610](https://github.com/RocketChat/Rocket.Chat/pull/9610) by [@lunaticmonk](https://github.com/lunaticmonk)) -- Not receiving sound notifications in rooms created by new LiveChats ([#9802](https://github.com/RocketChat/Rocket.Chat/pull/9802)) +- Not receiving sound notifications in rooms created by new LiveChats ([#9802](https://github.com/RocketChat/Rocket.Chat/pull/9802) by [@renatobecker](https://github.com/renatobecker)) - Parsing messages with multiple markdown matches ignore some tokens ([#9884](https://github.com/RocketChat/Rocket.Chat/pull/9884) by [@c0dzilla](https://github.com/c0dzilla)) @@ -20603,13 +20792,13 @@ - Regression: Overlapping header in user profile panel ([#9889](https://github.com/RocketChat/Rocket.Chat/pull/9889) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) -- Regression: Page was not respecting the window height on Firefox ([#9804](https://github.com/RocketChat/Rocket.Chat/pull/9804)) +- Regression: Page was not respecting the window height on Firefox ([#9804](https://github.com/RocketChat/Rocket.Chat/pull/9804) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Regression: Search bar is now full width ([#9839](https://github.com/RocketChat/Rocket.Chat/pull/9839) by [@karlprieb](https://github.com/karlprieb)) - Regression: sort on room's list not working correctly ([#9897](https://github.com/RocketChat/Rocket.Chat/pull/9897)) -- Release 0.62.0 ([#9935](https://github.com/RocketChat/Rocket.Chat/pull/9935)) +- Release 0.62.0 ([#9935](https://github.com/RocketChat/Rocket.Chat/pull/9935) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker)) - Sync from Master ([#9796](https://github.com/RocketChat/Rocket.Chat/pull/9796) by [@HammyHavoc](https://github.com/HammyHavoc)) @@ -20624,6 +20813,8 @@ - [@AmShaegar13](https://github.com/AmShaegar13) - [@HammyHavoc](https://github.com/HammyHavoc) - [@JSzaszvari](https://github.com/JSzaszvari) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RationalCoding](https://github.com/RationalCoding) - [@SeanPackham](https://github.com/SeanPackham) - [@TwizzyDizzy](https://github.com/TwizzyDizzy) @@ -20647,6 +20838,7 @@ - [@mrsimpson](https://github.com/mrsimpson) - [@rafaelks](https://github.com/rafaelks) - [@ramrami](https://github.com/ramrami) +- [@renatobecker](https://github.com/renatobecker) - [@savikko](https://github.com/savikko) - [@sizrar](https://github.com/sizrar) - [@speedy01](https://github.com/speedy01) @@ -20654,13 +20846,10 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) -- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20738,7 +20927,7 @@ - Contextual bar mail messages ([#9510](https://github.com/RocketChat/Rocket.Chat/pull/9510) by [@karlprieb](https://github.com/karlprieb)) -- Contextual Bar Redesign ([#8411](https://github.com/RocketChat/Rocket.Chat/pull/8411) by [@karlprieb](https://github.com/karlprieb)) +- Contextual Bar Redesign ([#8411](https://github.com/RocketChat/Rocket.Chat/pull/8411) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@karlprieb](https://github.com/karlprieb)) - Indicate the Self DM room ([#9234](https://github.com/RocketChat/Rocket.Chat/pull/9234)) @@ -20930,6 +21119,7 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@HammyHavoc](https://github.com/HammyHavoc) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@TheReal1604](https://github.com/TheReal1604) - [@cpitman](https://github.com/cpitman) - [@cyclops24](https://github.com/cyclops24) @@ -20947,7 +21137,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@frdmn](https://github.com/frdmn) - [@geekgonecrazy](https://github.com/geekgonecrazy) @@ -21107,7 +21296,7 @@ - Add settings for allow user direct messages to yourself ([#8066](https://github.com/RocketChat/Rocket.Chat/pull/8066) by [@lindoelio](https://github.com/lindoelio)) -- Add sweet alert to video call tab ([#8108](https://github.com/RocketChat/Rocket.Chat/pull/8108)) +- Add sweet alert to video call tab ([#8108](https://github.com/RocketChat/Rocket.Chat/pull/8108) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Add yunohost.org installation method to Readme.md ([#8037](https://github.com/RocketChat/Rocket.Chat/pull/8037) by [@selamanse](https://github.com/selamanse)) @@ -21266,7 +21455,7 @@ - Dynamic popover ([#8101](https://github.com/RocketChat/Rocket.Chat/pull/8101) by [@karlprieb](https://github.com/karlprieb)) -- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317)) +- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Email verification indicator added ([#7923](https://github.com/RocketChat/Rocket.Chat/pull/7923) by [@aditya19496](https://github.com/aditya19496)) @@ -21290,7 +21479,7 @@ - Fix e-mail message forward ([#8645](https://github.com/RocketChat/Rocket.Chat/pull/8645)) -- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754)) +- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - fix emoji package path so they show up correctly in browser ([#8822](https://github.com/RocketChat/Rocket.Chat/pull/8822) by [@ryoshimizu](https://github.com/ryoshimizu)) @@ -21306,7 +21495,7 @@ - Fix setting user avatar on LDAP login ([#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099)) -- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963)) +- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix typos ([#8679](https://github.com/RocketChat/Rocket.Chat/pull/8679)) @@ -21336,7 +21525,7 @@ - Invalid Code message for password protected channel ([#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491)) -- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048)) +- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Issue #8166 where empty analytics setting breaks to load Piwik script ([#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) by [@ruKurz](https://github.com/ruKurz)) @@ -21382,7 +21571,7 @@ - Migration 103 wrong converting primrary colors ([#8544](https://github.com/RocketChat/Rocket.Chat/pull/8544)) -- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357)) +- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Missing placeholder translations ([#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286)) @@ -21394,7 +21583,7 @@ - Move emojipicker css to theme package ([#9243](https://github.com/RocketChat/Rocket.Chat/pull/9243) by [@karlprieb](https://github.com/karlprieb)) -- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059)) +- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Notification is not sent when a video conference start ([#8828](https://github.com/RocketChat/Rocket.Chat/pull/8828) by [@deepseainside75](https://github.com/deepseainside75) & [@stefanoverducci](https://github.com/stefanoverducci)) @@ -21422,7 +21611,7 @@ - RTL ([#8112](https://github.com/RocketChat/Rocket.Chat/pull/8112)) -- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047)) +- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Scrollbar not using new style ([#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190)) @@ -21550,7 +21739,7 @@ - Add curl, its missing on worker nodes so has to be explicitly added ([#9248](https://github.com/RocketChat/Rocket.Chat/pull/9248)) -- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394)) +- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Added d2c.io to deployment ([#8975](https://github.com/RocketChat/Rocket.Chat/pull/8975) by [@mastappl](https://github.com/mastappl)) @@ -21570,7 +21759,7 @@ - Deps update ([#8273](https://github.com/RocketChat/Rocket.Chat/pull/8273)) -- Develop sync ([#7866](https://github.com/RocketChat/Rocket.Chat/pull/7866)) +- Develop sync ([#7866](https://github.com/RocketChat/Rocket.Chat/pull/7866) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Do not change room icon color when room is unread ([#9257](https://github.com/RocketChat/Rocket.Chat/pull/9257)) @@ -21719,6 +21908,7 @@ - [@HammyHavoc](https://github.com/HammyHavoc) - [@Kiran-Rao](https://github.com/Kiran-Rao) - [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Pharserror](https://github.com/Pharserror) - [@RekkyRek](https://github.com/RekkyRek) - [@Rzeszow](https://github.com/Rzeszow) @@ -21780,7 +21970,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -22088,7 +22277,7 @@ - Email message forward error ([#7846](https://github.com/RocketChat/Rocket.Chat/pull/7846)) -- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317)) +- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Emoji Picker hidden for reactions in RTL ([#8300](https://github.com/RocketChat/Rocket.Chat/pull/8300) by [@karlprieb](https://github.com/karlprieb)) @@ -22108,7 +22297,7 @@ - Fix Dutch translation ([#7814](https://github.com/RocketChat/Rocket.Chat/pull/7814) by [@maarten-v](https://github.com/maarten-v)) -- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754)) +- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix google play logo on repo README ([#7912](https://github.com/RocketChat/Rocket.Chat/pull/7912) by [@luizbills](https://github.com/luizbills)) @@ -22130,7 +22319,7 @@ - Fix setting user avatar on LDAP login ([#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099)) -- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963)) +- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fixed function closure syntax allowing validation emails to be sent. ([#7758](https://github.com/RocketChat/Rocket.Chat/pull/7758) by [@snoozan](https://github.com/snoozan)) @@ -22144,7 +22333,7 @@ - Invalid Code message for password protected channel ([#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491)) -- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048)) +- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Issue #8166 where empty analytics setting breaks to load Piwik script ([#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) by [@ruKurz](https://github.com/ruKurz)) @@ -22172,11 +22361,11 @@ - meteor-accounts-saml issue with ns0,ns1 namespaces, makes it compatible with pysaml2 lib ([#7721](https://github.com/RocketChat/Rocket.Chat/pull/7721) by [@arminfelder](https://github.com/arminfelder)) -- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357)) +- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Missing placeholder translations ([#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286)) -- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059)) +- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - OTR buttons padding ([#7954](https://github.com/RocketChat/Rocket.Chat/pull/7954) by [@karlprieb](https://github.com/karlprieb)) @@ -22208,7 +22397,7 @@ - scroll on flex-tab ([#7748](https://github.com/RocketChat/Rocket.Chat/pull/7748)) -- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047)) +- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Scrollbar not using new style ([#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190)) @@ -22244,7 +22433,7 @@ - Text area lost text when page reloads ([#8159](https://github.com/RocketChat/Rocket.Chat/pull/8159)) -- Textarea on firefox ([#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986)) +- Textarea on firefox ([#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - TypeError: Cannot read property 't' of undefined ([#8298](https://github.com/RocketChat/Rocket.Chat/pull/8298)) @@ -22262,7 +22451,7 @@ - Window exception when parsing Markdown on server ([#7893](https://github.com/RocketChat/Rocket.Chat/pull/7893)) -- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639)) +- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Wrong file name when upload to AWS S3 ([#8296](https://github.com/RocketChat/Rocket.Chat/pull/8296)) @@ -22296,7 +22485,7 @@ - 0.58.3 ([#8335](https://github.com/RocketChat/Rocket.Chat/pull/8335)) -- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394)) +- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Additions to the REST API ([#7793](https://github.com/RocketChat/Rocket.Chat/pull/7793)) @@ -22358,7 +22547,7 @@ - npm deps update ([#8197](https://github.com/RocketChat/Rocket.Chat/pull/8197)) -- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652)) +- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - readme-file: fix broken link ([#8253](https://github.com/RocketChat/Rocket.Chat/pull/8253) by [@vcapretz](https://github.com/vcapretz)) @@ -22384,6 +22573,7 @@ - [@Darkneon](https://github.com/Darkneon) - [@Kiran-Rao](https://github.com/Kiran-Rao) - [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@MichaelGooden](https://github.com/MichaelGooden) - [@Rohlik](https://github.com/Rohlik) - [@Rzeszow](https://github.com/Rzeszow) @@ -22421,7 +22611,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -22484,7 +22673,7 @@ ### 🐛 Bug fixes -- Fix flex tab not opening and getting offscreen ([#7781](https://github.com/RocketChat/Rocket.Chat/pull/7781)) +- Fix flex tab not opening and getting offscreen ([#7781](https://github.com/RocketChat/Rocket.Chat/pull/7781) by [@MartinSchoeler](https://github.com/MartinSchoeler))
🔍 Minor changes @@ -22494,9 +22683,12 @@
-### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@rodrigok](https://github.com/rodrigok) # 0.58.0 @@ -22546,9 +22738,9 @@ - Do not rate limit bots on createDirectMessage ([#7326](https://github.com/RocketChat/Rocket.Chat/pull/7326) by [@jangmarker](https://github.com/jangmarker)) -- Edit user permissions ([#7309](https://github.com/RocketChat/Rocket.Chat/pull/7309)) +- Edit user permissions ([#7309](https://github.com/RocketChat/Rocket.Chat/pull/7309) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- flex-tab now is side by side with message list ([#7448](https://github.com/RocketChat/Rocket.Chat/pull/7448) by [@karlprieb](https://github.com/karlprieb)) +- flex-tab now is side by side with message list ([#7448](https://github.com/RocketChat/Rocket.Chat/pull/7448) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@karlprieb](https://github.com/karlprieb)) - Force use of MongoDB for spotlight queries ([#7311](https://github.com/RocketChat/Rocket.Chat/pull/7311)) @@ -22562,11 +22754,11 @@ - Show different shape for alert numbers when have mentions ([#7580](https://github.com/RocketChat/Rocket.Chat/pull/7580)) -- Show emojis and file uploads on notifications ([#7559](https://github.com/RocketChat/Rocket.Chat/pull/7559)) +- Show emojis and file uploads on notifications ([#7559](https://github.com/RocketChat/Rocket.Chat/pull/7559) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Show room leader at top of chat when user scrolls down. Set and unset leader as admin. ([#7526](https://github.com/RocketChat/Rocket.Chat/pull/7526) by [@danischreiber](https://github.com/danischreiber)) -- Update meteor to 1.5.1 ([#7496](https://github.com/RocketChat/Rocket.Chat/pull/7496)) +- Update meteor to 1.5.1 ([#7496](https://github.com/RocketChat/Rocket.Chat/pull/7496) by [@MartinSchoeler](https://github.com/MartinSchoeler)) ### 🐛 Bug fixes @@ -22587,25 +22779,25 @@ - Fix admin room list show the correct i18n type ([#7582](https://github.com/RocketChat/Rocket.Chat/pull/7582) by [@ccfang](https://github.com/ccfang)) -- Fix Block Delete Message After (n) Minutes ([#7207](https://github.com/RocketChat/Rocket.Chat/pull/7207)) +- Fix Block Delete Message After (n) Minutes ([#7207](https://github.com/RocketChat/Rocket.Chat/pull/7207) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix Custom Fields Crashing on Register ([#7617](https://github.com/RocketChat/Rocket.Chat/pull/7617)) +- Fix Custom Fields Crashing on Register ([#7617](https://github.com/RocketChat/Rocket.Chat/pull/7617) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix editing others messages ([#7200](https://github.com/RocketChat/Rocket.Chat/pull/7200)) -- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431)) +- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix emoji picker translations ([#7195](https://github.com/RocketChat/Rocket.Chat/pull/7195)) +- Fix emoji picker translations ([#7195](https://github.com/RocketChat/Rocket.Chat/pull/7195) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix error on image preview due to undefined description|title ([#7187](https://github.com/RocketChat/Rocket.Chat/pull/7187)) - Fix file upload on Slack import ([#7469](https://github.com/RocketChat/Rocket.Chat/pull/7469)) -- Fix geolocation button ([#7322](https://github.com/RocketChat/Rocket.Chat/pull/7322)) +- Fix geolocation button ([#7322](https://github.com/RocketChat/Rocket.Chat/pull/7322) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix hiding flex-tab on embedded view ([#7486](https://github.com/RocketChat/Rocket.Chat/pull/7486)) -- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320)) +- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix messagebox growth ([#7629](https://github.com/RocketChat/Rocket.Chat/pull/7629)) @@ -22613,15 +22805,15 @@ - Fix oembed previews not being shown ([#7208](https://github.com/RocketChat/Rocket.Chat/pull/7208)) -- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432)) +- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix room load on first hit ([#7687](https://github.com/RocketChat/Rocket.Chat/pull/7687)) -- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321)) +- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403)) +- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix Word Placement Anywhere on WebHooks ([#7392](https://github.com/RocketChat/Rocket.Chat/pull/7392)) +- Fix Word Placement Anywhere on WebHooks ([#7392](https://github.com/RocketChat/Rocket.Chat/pull/7392) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Issue #7365: added check for the existence of a parameter in the CAS URL ([#7471](https://github.com/RocketChat/Rocket.Chat/pull/7471) by [@wsw70](https://github.com/wsw70)) @@ -22659,11 +22851,11 @@ - URL parse error fix for issue #7169 ([#7538](https://github.com/RocketChat/Rocket.Chat/pull/7538) by [@satyapramodh](https://github.com/satyapramodh)) -- Use I18n on "File Uploaded" ([#7199](https://github.com/RocketChat/Rocket.Chat/pull/7199)) +- Use I18n on "File Uploaded" ([#7199](https://github.com/RocketChat/Rocket.Chat/pull/7199) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - User avatar image background ([#7572](https://github.com/RocketChat/Rocket.Chat/pull/7572) by [@filipedelimabrito](https://github.com/filipedelimabrito)) -- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639)) +- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Wrong render of snippet’s name ([#7630](https://github.com/RocketChat/Rocket.Chat/pull/7630)) @@ -22679,13 +22871,13 @@ - Add missing parts of `one click to direct message` ([#7608](https://github.com/RocketChat/Rocket.Chat/pull/7608)) -- Better Issue Template ([#7492](https://github.com/RocketChat/Rocket.Chat/pull/7492)) +- Better Issue Template ([#7492](https://github.com/RocketChat/Rocket.Chat/pull/7492) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Develop sync ([#7590](https://github.com/RocketChat/Rocket.Chat/pull/7590)) - Develop sync ([#7500](https://github.com/RocketChat/Rocket.Chat/pull/7500) by [@thinkeridea](https://github.com/thinkeridea)) -- Develop sync ([#7363](https://github.com/RocketChat/Rocket.Chat/pull/7363) by [@JSzaszvari](https://github.com/JSzaszvari)) +- Develop sync ([#7363](https://github.com/RocketChat/Rocket.Chat/pull/7363) by [@JSzaszvari](https://github.com/JSzaszvari) & [@MartinSchoeler](https://github.com/MartinSchoeler)) - Escape error messages ([#7308](https://github.com/RocketChat/Rocket.Chat/pull/7308)) @@ -22701,9 +22893,9 @@ - LingoHub based on develop ([#7594](https://github.com/RocketChat/Rocket.Chat/pull/7594)) -- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652)) +- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Release 0.58.0 ([#7752](https://github.com/RocketChat/Rocket.Chat/pull/7752) by [@flaviogrossi](https://github.com/flaviogrossi) & [@jangmarker](https://github.com/jangmarker) & [@karlprieb](https://github.com/karlprieb) & [@pierreozoux](https://github.com/pierreozoux) & [@ryoshimizu](https://github.com/ryoshimizu)) +- Release 0.58.0 ([#7752](https://github.com/RocketChat/Rocket.Chat/pull/7752) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@flaviogrossi](https://github.com/flaviogrossi) & [@jangmarker](https://github.com/jangmarker) & [@karlprieb](https://github.com/karlprieb) & [@pierreozoux](https://github.com/pierreozoux) & [@ryoshimizu](https://github.com/ryoshimizu)) - Sync Master with 0.57.3 ([#7690](https://github.com/RocketChat/Rocket.Chat/pull/7690)) @@ -22716,6 +22908,7 @@ - [@AhmetS](https://github.com/AhmetS) - [@Darkneon](https://github.com/Darkneon) - [@JSzaszvari](https://github.com/JSzaszvari) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Oliver84](https://github.com/Oliver84) - [@al3x](https://github.com/al3x) - [@borsden](https://github.com/borsden) @@ -22741,7 +22934,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -22784,9 +22976,9 @@ - file upload broken when running in subdirectory https://github.com… ([#7395](https://github.com/RocketChat/Rocket.Chat/pull/7395) by [@ryoshimizu](https://github.com/ryoshimizu)) -- Fix Anonymous User ([#7444](https://github.com/RocketChat/Rocket.Chat/pull/7444)) +- Fix Anonymous User ([#7444](https://github.com/RocketChat/Rocket.Chat/pull/7444) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix Join Channel Without Preview Room Permission ([#7535](https://github.com/RocketChat/Rocket.Chat/pull/7535)) +- Fix Join Channel Without Preview Room Permission ([#7535](https://github.com/RocketChat/Rocket.Chat/pull/7535) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Improve build script example ([#7555](https://github.com/RocketChat/Rocket.Chat/pull/7555)) @@ -22794,7 +22986,7 @@ - Modernize rate limiting of sendMessage ([#7325](https://github.com/RocketChat/Rocket.Chat/pull/7325) by [@jangmarker](https://github.com/jangmarker)) -- Use UTF8 setting for /create command ([#7394](https://github.com/RocketChat/Rocket.Chat/pull/7394)) +- Use UTF8 setting for /create command ([#7394](https://github.com/RocketChat/Rocket.Chat/pull/7394) by [@MartinSchoeler](https://github.com/MartinSchoeler))
🔍 Minor changes @@ -22807,13 +22999,13 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Darkneon](https://github.com/Darkneon) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@jangmarker](https://github.com/jangmarker) - [@rasos](https://github.com/rasos) - [@ryoshimizu](https://github.com/ryoshimizu) ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@graywolf336](https://github.com/graywolf336) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -22829,19 +23021,22 @@ - Always set LDAP properties on login ([#7472](https://github.com/RocketChat/Rocket.Chat/pull/7472)) -- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431)) +- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix file upload on Slack import ([#7469](https://github.com/RocketChat/Rocket.Chat/pull/7469)) -- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432)) +- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403)) +- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - S3 uploads not working for custom URLs ([#7443](https://github.com/RocketChat/Rocket.Chat/pull/7443)) -### 👩‍💻👨‍💻 Core Team 🤓 +### 👩‍💻👨‍💻 Contributors 😍 - [@MartinSchoeler](https://github.com/MartinSchoeler) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -22893,7 +23088,7 @@ - New avatar storage types ([#6788](https://github.com/RocketChat/Rocket.Chat/pull/6788)) -- postcss parser and cssnext implementation ([#6982](https://github.com/RocketChat/Rocket.Chat/pull/6982)) +- postcss parser and cssnext implementation ([#6982](https://github.com/RocketChat/Rocket.Chat/pull/6982) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Show full name in mentions if use full name setting enabled ([#6690](https://github.com/RocketChat/Rocket.Chat/pull/6690) by [@alexbrazier](https://github.com/alexbrazier)) @@ -22926,7 +23121,7 @@ - edit button on firefox ([#7105](https://github.com/RocketChat/Rocket.Chat/pull/7105)) -- Fix all reactions having the same username ([#7157](https://github.com/RocketChat/Rocket.Chat/pull/7157)) +- Fix all reactions having the same username ([#7157](https://github.com/RocketChat/Rocket.Chat/pull/7157) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix avatar upload via users.setAvatar REST endpoint ([#7045](https://github.com/RocketChat/Rocket.Chat/pull/7045)) @@ -22940,7 +23135,7 @@ - Fix highlightjs bug ([#6991](https://github.com/RocketChat/Rocket.Chat/pull/6991)) -- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320)) +- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix login with Meteor saving an object as email address ([#6974](https://github.com/RocketChat/Rocket.Chat/pull/6974)) @@ -22948,11 +23143,11 @@ - Fix oembed previews not being shown ([#7208](https://github.com/RocketChat/Rocket.Chat/pull/7208)) -- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321)) +- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix the failing tests ([#7094](https://github.com/RocketChat/Rocket.Chat/pull/7094)) +- Fix the failing tests ([#7094](https://github.com/RocketChat/Rocket.Chat/pull/7094) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Fix the other tests failing due chimp update ([#6986](https://github.com/RocketChat/Rocket.Chat/pull/6986)) +- Fix the other tests failing due chimp update ([#6986](https://github.com/RocketChat/Rocket.Chat/pull/6986) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix user's customFields not being saved correctly ([#7358](https://github.com/RocketChat/Rocket.Chat/pull/7358)) @@ -22960,7 +23155,7 @@ - Improve avatar migration ([#7352](https://github.com/RocketChat/Rocket.Chat/pull/7352)) -- Improve Tests ([#7049](https://github.com/RocketChat/Rocket.Chat/pull/7049)) +- Improve Tests ([#7049](https://github.com/RocketChat/Rocket.Chat/pull/7049) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - make channels.create API check for create-c ([#6968](https://github.com/RocketChat/Rocket.Chat/pull/6968) by [@reist](https://github.com/reist)) @@ -23008,19 +23203,19 @@ - Convert hipchat importer to js ([#7146](https://github.com/RocketChat/Rocket.Chat/pull/7146)) -- Convert irc package to js ([#7022](https://github.com/RocketChat/Rocket.Chat/pull/7022)) +- Convert irc package to js ([#7022](https://github.com/RocketChat/Rocket.Chat/pull/7022) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Convert Livechat from Coffeescript to JavaScript ([#7096](https://github.com/RocketChat/Rocket.Chat/pull/7096)) -- Convert meteor-autocomplete package to js ([#6936](https://github.com/RocketChat/Rocket.Chat/pull/6936)) +- Convert meteor-autocomplete package to js ([#6936](https://github.com/RocketChat/Rocket.Chat/pull/6936) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert oauth2-server-config package to js ([#7017](https://github.com/RocketChat/Rocket.Chat/pull/7017)) +- Convert oauth2-server-config package to js ([#7017](https://github.com/RocketChat/Rocket.Chat/pull/7017) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Ui Account Package to Js ([#6795](https://github.com/RocketChat/Rocket.Chat/pull/6795)) +- Convert Ui Account Package to Js ([#6795](https://github.com/RocketChat/Rocket.Chat/pull/6795) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert ui-admin package to js ([#6911](https://github.com/RocketChat/Rocket.Chat/pull/6911)) +- Convert ui-admin package to js ([#6911](https://github.com/RocketChat/Rocket.Chat/pull/6911) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert WebRTC Package to Js ([#6775](https://github.com/RocketChat/Rocket.Chat/pull/6775)) +- Convert WebRTC Package to Js ([#6775](https://github.com/RocketChat/Rocket.Chat/pull/6775) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - converted rocketchat-importer ([#7018](https://github.com/RocketChat/Rocket.Chat/pull/7018)) @@ -23030,7 +23225,7 @@ - Fix mobile avatars ([#7177](https://github.com/RocketChat/Rocket.Chat/pull/7177)) -- fix the crashing tests ([#6976](https://github.com/RocketChat/Rocket.Chat/pull/6976)) +- fix the crashing tests ([#6976](https://github.com/RocketChat/Rocket.Chat/pull/6976) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Fix the Zapier oAuth return url to the new one ([#7215](https://github.com/RocketChat/Rocket.Chat/pull/7215)) @@ -23044,7 +23239,7 @@ - Remove missing CoffeeScript dependencies ([#7154](https://github.com/RocketChat/Rocket.Chat/pull/7154)) -- Remove Useless Jasmine Tests ([#7062](https://github.com/RocketChat/Rocket.Chat/pull/7062)) +- Remove Useless Jasmine Tests ([#7062](https://github.com/RocketChat/Rocket.Chat/pull/7062) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Rocketchat ui message ([#6914](https://github.com/RocketChat/Rocket.Chat/pull/6914)) @@ -23062,6 +23257,7 @@ - [@ExTechOp](https://github.com/ExTechOp) - [@JSzaszvari](https://github.com/JSzaszvari) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@abrom](https://github.com/abrom) - [@alexbrazier](https://github.com/alexbrazier) - [@bbrauns](https://github.com/bbrauns) @@ -23080,7 +23276,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -23099,7 +23294,7 @@ ### 🎉 New features -- Add a pointer cursor to message images ([#6881](https://github.com/RocketChat/Rocket.Chat/pull/6881)) +- Add a pointer cursor to message images ([#6881](https://github.com/RocketChat/Rocket.Chat/pull/6881) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Add a setting to not run outgoing integrations on message edits ([#6615](https://github.com/RocketChat/Rocket.Chat/pull/6615)) @@ -23178,17 +23373,17 @@ - Breaking long URLS to prevent overflow ([#6368](https://github.com/RocketChat/Rocket.Chat/pull/6368) by [@robertdown](https://github.com/robertdown)) -- Convert Katex Package to Js ([#6671](https://github.com/RocketChat/Rocket.Chat/pull/6671)) +- Convert Katex Package to Js ([#6671](https://github.com/RocketChat/Rocket.Chat/pull/6671) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Mailer Package to Js ([#6780](https://github.com/RocketChat/Rocket.Chat/pull/6780)) +- Convert Mailer Package to Js ([#6780](https://github.com/RocketChat/Rocket.Chat/pull/6780) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Convert markdown to js ([#6694](https://github.com/RocketChat/Rocket.Chat/pull/6694) by [@ehkasper](https://github.com/ehkasper)) -- Convert Mentions-Flextab Package to Js ([#6689](https://github.com/RocketChat/Rocket.Chat/pull/6689)) +- Convert Mentions-Flextab Package to Js ([#6689](https://github.com/RocketChat/Rocket.Chat/pull/6689) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Message-Star Package to js ([#6781](https://github.com/RocketChat/Rocket.Chat/pull/6781)) +- Convert Message-Star Package to js ([#6781](https://github.com/RocketChat/Rocket.Chat/pull/6781) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Oembed Package to Js ([#6688](https://github.com/RocketChat/Rocket.Chat/pull/6688)) +- Convert Oembed Package to Js ([#6688](https://github.com/RocketChat/Rocket.Chat/pull/6688) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Converted rocketchat-lib 3 ([#6672](https://github.com/RocketChat/Rocket.Chat/pull/6672)) @@ -23212,6 +23407,7 @@ ### 👩‍💻👨‍💻 Contributors 😍 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@abrom](https://github.com/abrom) - [@alexbrazier](https://github.com/alexbrazier) - [@ehkasper](https://github.com/ehkasper) @@ -23226,7 +23422,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -23374,35 +23569,35 @@ - Clipboard [Firefox version < 50] ([#6280](https://github.com/RocketChat/Rocket.Chat/pull/6280)) -- Convert ChatOps Package to JavaScript ([#6425](https://github.com/RocketChat/Rocket.Chat/pull/6425)) +- Convert ChatOps Package to JavaScript ([#6425](https://github.com/RocketChat/Rocket.Chat/pull/6425) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Dolphin Package to JavaScript ([#6427](https://github.com/RocketChat/Rocket.Chat/pull/6427)) +- Convert Dolphin Package to JavaScript ([#6427](https://github.com/RocketChat/Rocket.Chat/pull/6427) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert File Package to js ([#6503](https://github.com/RocketChat/Rocket.Chat/pull/6503)) +- Convert File Package to js ([#6503](https://github.com/RocketChat/Rocket.Chat/pull/6503) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- convert mapview package to js ([#6471](https://github.com/RocketChat/Rocket.Chat/pull/6471)) +- convert mapview package to js ([#6471](https://github.com/RocketChat/Rocket.Chat/pull/6471) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Message Pin Package to JS ([#6576](https://github.com/RocketChat/Rocket.Chat/pull/6576)) +- Convert Message Pin Package to JS ([#6576](https://github.com/RocketChat/Rocket.Chat/pull/6576) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - convert rocketchat-ui part 2 ([#6539](https://github.com/RocketChat/Rocket.Chat/pull/6539)) -- Convert Spotify Package to JS ([#6449](https://github.com/RocketChat/Rocket.Chat/pull/6449)) +- Convert Spotify Package to JS ([#6449](https://github.com/RocketChat/Rocket.Chat/pull/6449) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Statistics Package to JS ([#6447](https://github.com/RocketChat/Rocket.Chat/pull/6447)) +- Convert Statistics Package to JS ([#6447](https://github.com/RocketChat/Rocket.Chat/pull/6447) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Theme Package to JS ([#6491](https://github.com/RocketChat/Rocket.Chat/pull/6491)) +- Convert Theme Package to JS ([#6491](https://github.com/RocketChat/Rocket.Chat/pull/6491) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Tutum Package to JS ([#6446](https://github.com/RocketChat/Rocket.Chat/pull/6446)) +- Convert Tutum Package to JS ([#6446](https://github.com/RocketChat/Rocket.Chat/pull/6446) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Ui-Login Package to Js ([#6561](https://github.com/RocketChat/Rocket.Chat/pull/6561)) +- Convert Ui-Login Package to Js ([#6561](https://github.com/RocketChat/Rocket.Chat/pull/6561) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Ui-Master Package to Js ([#6498](https://github.com/RocketChat/Rocket.Chat/pull/6498)) +- Convert Ui-Master Package to Js ([#6498](https://github.com/RocketChat/Rocket.Chat/pull/6498) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert ui-vrecord Package to JS ([#6473](https://github.com/RocketChat/Rocket.Chat/pull/6473)) +- Convert ui-vrecord Package to JS ([#6473](https://github.com/RocketChat/Rocket.Chat/pull/6473) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Version Package to JS ([#6494](https://github.com/RocketChat/Rocket.Chat/pull/6494)) +- Convert Version Package to JS ([#6494](https://github.com/RocketChat/Rocket.Chat/pull/6494) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Convert Wordpress Package to js ([#6499](https://github.com/RocketChat/Rocket.Chat/pull/6499)) +- Convert Wordpress Package to js ([#6499](https://github.com/RocketChat/Rocket.Chat/pull/6499) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - converted getAvatarUrlFromUsername ([#6496](https://github.com/RocketChat/Rocket.Chat/pull/6496)) @@ -23456,11 +23651,11 @@ - fixed typo in readme.md ([#6580](https://github.com/RocketChat/Rocket.Chat/pull/6580) by [@sezinkarli](https://github.com/sezinkarli)) -- Flex-Tab CoffeeScript to JavaScript I ([#6276](https://github.com/RocketChat/Rocket.Chat/pull/6276)) +- Flex-Tab CoffeeScript to JavaScript I ([#6276](https://github.com/RocketChat/Rocket.Chat/pull/6276) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Flex-Tab CoffeeScript to JavaScript II ([#6277](https://github.com/RocketChat/Rocket.Chat/pull/6277)) +- Flex-Tab CoffeeScript to JavaScript II ([#6277](https://github.com/RocketChat/Rocket.Chat/pull/6277) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Flex-Tab CoffeeScript to JavaScript III ([#6278](https://github.com/RocketChat/Rocket.Chat/pull/6278)) +- Flex-Tab CoffeeScript to JavaScript III ([#6278](https://github.com/RocketChat/Rocket.Chat/pull/6278) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - focus first textbox element ([#6257](https://github.com/RocketChat/Rocket.Chat/pull/6257) by [@a5his](https://github.com/a5his)) @@ -23480,19 +23675,19 @@ - Make favicon package easier to read. ([#6422](https://github.com/RocketChat/Rocket.Chat/pull/6422) by [@Kiran-Rao](https://github.com/Kiran-Rao)) -- Max textarea height ([#6409](https://github.com/RocketChat/Rocket.Chat/pull/6409)) +- Max textarea height ([#6409](https://github.com/RocketChat/Rocket.Chat/pull/6409) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - meteor update ([#6631](https://github.com/RocketChat/Rocket.Chat/pull/6631)) - Move room display name logic to roomType definition ([#6585](https://github.com/RocketChat/Rocket.Chat/pull/6585)) -- Move wordpress packages client files to client folder ([#6571](https://github.com/RocketChat/Rocket.Chat/pull/6571)) +- Move wordpress packages client files to client folder ([#6571](https://github.com/RocketChat/Rocket.Chat/pull/6571) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - New feature: Room announcement ([#6351](https://github.com/RocketChat/Rocket.Chat/pull/6351) by [@billtt](https://github.com/billtt)) - Only configure LoggerManager on server ([#6596](https://github.com/RocketChat/Rocket.Chat/pull/6596)) -- Password reset Cleaner text ([#6319](https://github.com/RocketChat/Rocket.Chat/pull/6319)) +- Password reset Cleaner text ([#6319](https://github.com/RocketChat/Rocket.Chat/pull/6319) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - POC Google Natural Language integration ([#6298](https://github.com/RocketChat/Rocket.Chat/pull/6298)) @@ -23500,7 +23695,7 @@ - Remove coffeescript package from ui-sidenav ([#6542](https://github.com/RocketChat/Rocket.Chat/pull/6542) by [@Kiran-Rao](https://github.com/Kiran-Rao)) -- Remove Deprecated Shared Secret Package ([#6540](https://github.com/RocketChat/Rocket.Chat/pull/6540)) +- Remove Deprecated Shared Secret Package ([#6540](https://github.com/RocketChat/Rocket.Chat/pull/6540) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - rocketchat-channel-settings coffee to js ([#6551](https://github.com/RocketChat/Rocket.Chat/pull/6551)) @@ -23510,11 +23705,11 @@ - rocketchat-ui coffee to js part1 ([#6504](https://github.com/RocketChat/Rocket.Chat/pull/6504)) -- Side-nav CoffeeScript to JavaScript ([#6264](https://github.com/RocketChat/Rocket.Chat/pull/6264)) +- Side-nav CoffeeScript to JavaScript ([#6264](https://github.com/RocketChat/Rocket.Chat/pull/6264) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Side-nav CoffeeScript to JavaScript II ([#6266](https://github.com/RocketChat/Rocket.Chat/pull/6266)) +- Side-nav CoffeeScript to JavaScript II ([#6266](https://github.com/RocketChat/Rocket.Chat/pull/6266) by [@MartinSchoeler](https://github.com/MartinSchoeler)) -- Side-nav CoffeeScript to JavaScript III ([#6274](https://github.com/RocketChat/Rocket.Chat/pull/6274)) +- Side-nav CoffeeScript to JavaScript III ([#6274](https://github.com/RocketChat/Rocket.Chat/pull/6274) by [@MartinSchoeler](https://github.com/MartinSchoeler)) - Use real name instead of username for messages and direct messages list ([#3851](https://github.com/RocketChat/Rocket.Chat/pull/3851) by [@alexbrazier](https://github.com/alexbrazier)) @@ -23524,6 +23719,7 @@ - [@Kiran-Rao](https://github.com/Kiran-Rao) - [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@a5his](https://github.com/a5his) - [@alexbrazier](https://github.com/alexbrazier) - [@billtt](https://github.com/billtt) @@ -23540,7 +23736,6 @@ ### 👩‍💻👨‍💻 Core Team 🤓 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index f4581777e19a..aa21ddbf2e75 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-rc.3 +ENV RC_VERSION 4.7.0-rc.4 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index f3f980bdae9e..0880093021ce 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-rc.3/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0-rc.4/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index 07ad1e0e3d02..d9c3487493b7 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-rc.3 +version: 4.7.0-rc.4 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 220423d7d142..48572f96557e 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-rc.3" + "version": "4.7.0-rc.4" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 02f5a6a84f1a..26fcabbec240 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-rc.3", + "version": "4.7.0-rc.4", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index 5685bb76fa48..e60086a81300 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-rc.3", + "version": "4.7.0-rc.4", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 2059a0e1e69dac8047b395ed7449084bc36178f5 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Tue, 3 May 2022 19:41:12 -0300 Subject: [PATCH 006/145] Bump version to 4.7.0-rc.5 --- .github/history.json | 39 + HISTORY.md | 5881 ++++++++--------- apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 2917 insertions(+), 3015 deletions(-) diff --git a/.github/history.json b/.github/history.json index 725974f7c87e..fb6d5f41f9dc 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74347,6 +74347,45 @@ ] } ] + }, + "4.7.0-rc.5": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [ + { + "pr": "25380", + "title": "Regression: Fix clicking on visitor's chat in the sidebar does not display the chat window", + "userLogin": "filipemarins", + "description": "Fix: livechat room not opening.", + "contributors": [ + "filipemarins" + ] + }, + { + "pr": "25314", + "title": "Regression: Fix size of custom emoji and render emoji on thread message preview", + "userLogin": "filipemarins", + "contributors": [ + "filipemarins", + "gabriellsh" + ] + }, + { + "pr": "25371", + "title": "Chore: Bump fuselage", + "userLogin": "gabriellsh", + "contributors": [ + "gabriellsh" + ] + } + ] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index 162d1c5e3770..fba8c6dad0c9 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,28 @@ # 4.7.0 (Under Release Candidate Process) +## 4.7.0-rc.5 +`2022-05-03 · 3 🔍 · 2 👩‍💻👨‍💻` + +
+🔍 Minor changes + + +- Chore: Bump fuselage ([#25371](https://github.com/RocketChat/Rocket.Chat/pull/25371)) + +- Regression: Fix clicking on visitor's chat in the sidebar does not display the chat window ([#25380](https://github.com/RocketChat/Rocket.Chat/pull/25380)) + + Fix: livechat room not opening. + +- Regression: Fix size of custom emoji and render emoji on thread message preview ([#25314](https://github.com/RocketChat/Rocket.Chat/pull/25314)) + +
+ +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@filipemarins](https://github.com/filipemarins) +- [@gabriellsh](https://github.com/gabriellsh) + ## 4.7.0-rc.4 `2022-05-02 · 6 🔍 · 7 👩‍💻👨‍💻` @@ -12,7 +34,7 @@ - Chore: Create README.md for Rest Typings ([#25335](https://github.com/RocketChat/Rocket.Chat/pull/25335)) -- Regression: bump onboarding-ui version ([#25320](https://github.com/RocketChat/Rocket.Chat/pull/25320) by [@guijun13](https://github.com/guijun13)) +- Regression: bump onboarding-ui version ([#25320](https://github.com/RocketChat/Rocket.Chat/pull/25320)) - Bump to 'next' the onboarding-ui package from fuselage. - Update from 'companyEmail' to 'email' adminData usage types @@ -21,23 +43,20 @@ Incorrect text in reaction tooltip has been fixed -- Regression: Fix multi line is not showing an empty line between lines ([#25317](https://github.com/RocketChat/Rocket.Chat/pull/25317) by [@filipemarins](https://github.com/filipemarins)) +- Regression: Fix multi line is not showing an empty line between lines ([#25317](https://github.com/RocketChat/Rocket.Chat/pull/25317)) -- Regression: Rocket.Chat Webapp not loading. ([#25349](https://github.com/RocketChat/Rocket.Chat/pull/25349) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Rocket.Chat Webapp not loading. ([#25349](https://github.com/RocketChat/Rocket.Chat/pull/25349))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@filipemarins](https://github.com/filipemarins) -- [@guijun13](https://github.com/guijun13) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) +- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@guijun13](https://github.com/guijun13) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) ## 4.7.0-rc.3 @@ -67,7 +86,7 @@ 🔍 Minor changes -- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218) by [@souzaramon](https://github.com/souzaramon)) +- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218)) - data and test-failure should be ignored - ensure scripts use cross-env @@ -76,7 +95,7 @@ - Regression: Change preference to be default legacy messages ([#25255](https://github.com/RocketChat/Rocket.Chat/pull/25255)) -- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306) by [@filipemarins](https://github.com/filipemarins)) +- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306)) - Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings ([#25319](https://github.com/RocketChat/Rocket.Chat/pull/25319)) @@ -90,18 +109,15 @@
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@filipemarins](https://github.com/filipemarins) -- [@souzaramon](https://github.com/souzaramon) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) +- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@souzaramon](https://github.com/souzaramon) ## 4.7.0-rc.1 `2022-04-26 · 4 🔍 · 4 👩‍💻👨‍💻` @@ -110,9 +126,9 @@ 🔍 Minor changes -- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299) by [@filipemarins](https://github.com/filipemarins)) +- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299)) -- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305)) - Regression: Shows error if micro service cannot connect to Mongo ([#25301](https://github.com/RocketChat/Rocket.Chat/pull/25301)) @@ -120,14 +136,11 @@ -### 👩‍💻👨‍💻 Contributors 😍 - -- [@filipemarins](https://github.com/filipemarins) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@filipemarins](https://github.com/filipemarins) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) ## 4.7.0-rc.0 @@ -138,7 +151,7 @@ - Add expire index to integration history ([#25087](https://github.com/RocketChat/Rocket.Chat/pull/25087)) -- Alpha Matrix Federation ([#23688](https://github.com/RocketChat/Rocket.Chat/pull/23688) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@alansikora](https://github.com/alansikora)) +- Alpha Matrix Federation ([#23688](https://github.com/RocketChat/Rocket.Chat/pull/23688)) Experimental support for Matrix Federation with a Bridge @@ -182,22 +195,22 @@ - Improve active/hover colors in account sidebar ([#25024](https://github.com/RocketChat/Rocket.Chat/pull/25024) by [@Himanshu664](https://github.com/Himanshu664)) -- Performance for some Omnichannel features ([#25217](https://github.com/RocketChat/Rocket.Chat/pull/25217) by [@KevLehman](https://github.com/KevLehman)) +- Performance for some Omnichannel features ([#25217](https://github.com/RocketChat/Rocket.Chat/pull/25217)) -- Rename upgrade tab routes ([#25097](https://github.com/RocketChat/Rocket.Chat/pull/25097) by [@guijun13](https://github.com/guijun13)) +- Rename upgrade tab routes ([#25097](https://github.com/RocketChat/Rocket.Chat/pull/25097)) Change 'upgrade tab' routes names from camelCase ('goFullyFeatured') to kebab-case ('go-fully-featured') due to URL naming consistency. Changed types, main function and test. ### 🐛 Bug fixes -- Add katex render to new message react template ([#25239](https://github.com/RocketChat/Rocket.Chat/pull/25239) by [@filipemarins](https://github.com/filipemarins)) +- Add katex render to new message react template ([#25239](https://github.com/RocketChat/Rocket.Chat/pull/25239)) - Add reaction not working in legacy messages ([#25222](https://github.com/RocketChat/Rocket.Chat/pull/25222)) - Added invalid password error message ([#24714](https://github.com/RocketChat/Rocket.Chat/pull/24714) by [@Himanshu664](https://github.com/Himanshu664)) -- Adjust email label in Setup Wizard i18n files ([#25260](https://github.com/RocketChat/Rocket.Chat/pull/25260) by [@guijun13](https://github.com/guijun13)) +- Adjust email label in Setup Wizard i18n files ([#25260](https://github.com/RocketChat/Rocket.Chat/pull/25260)) - remove 'Company' label on onboarding email keys in certain languages @@ -218,7 +231,7 @@ - After: ![image](https://user-images.githubusercontent.com/30026625/161831092-9ee77b51-b083-4f45-9c48-ab2e0511c4d6.png) -- Client disconnection on network loss ([#25170](https://github.com/RocketChat/Rocket.Chat/pull/25170) by [@KevLehman](https://github.com/KevLehman) & [@amolghode1981](https://github.com/amolghode1981)) +- Client disconnection on network loss ([#25170](https://github.com/RocketChat/Rocket.Chat/pull/25170)) Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online unless agent explicitly logs off. @@ -239,7 +252,7 @@ When the server is disconnected, it should be indicated on the phone button. -- Close room when dismiss wrap up call modal ([#25056](https://github.com/RocketChat/Rocket.Chat/pull/25056) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Close room when dismiss wrap up call modal ([#25056](https://github.com/RocketChat/Rocket.Chat/pull/25056)) - Custom sound error toast messages ([#24515](https://github.com/RocketChat/Rocket.Chat/pull/24515) by [@Himanshu664](https://github.com/Himanshu664)) @@ -256,11 +269,11 @@ - Desktop notification on multi-instance environments ([#25220](https://github.com/RocketChat/Rocket.Chat/pull/25220)) -- End call button disappearing when on-hold ([#24936](https://github.com/RocketChat/Rocket.Chat/pull/24936) by [@tiagoevanp](https://github.com/tiagoevanp)) +- End call button disappearing when on-hold ([#24936](https://github.com/RocketChat/Rocket.Chat/pull/24936)) - FormData uploads not working ([#25069](https://github.com/RocketChat/Rocket.Chat/pull/25069)) -- Full error message is visible ([#24856](https://github.com/RocketChat/Rocket.Chat/pull/24856) by [@Himanshu664](https://github.com/Himanshu664) & [@tassoevan](https://github.com/tassoevan)) +- Full error message is visible ([#24856](https://github.com/RocketChat/Rocket.Chat/pull/24856) by [@Himanshu664](https://github.com/Himanshu664)) - Incorrect websocket url in livechat widget ([#25261](https://github.com/RocketChat/Rocket.Chat/pull/25261)) @@ -268,7 +281,7 @@ - Message menu action not working on legacy messages. ([#25148](https://github.com/RocketChat/Rocket.Chat/pull/25148)) -- Message preview not available for queued chats ([#25092](https://github.com/RocketChat/Rocket.Chat/pull/25092) by [@KevLehman](https://github.com/KevLehman)) +- Message preview not available for queued chats ([#25092](https://github.com/RocketChat/Rocket.Chat/pull/25092)) - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) @@ -280,13 +293,13 @@ ### after Screen Shot 2022-03-29 at 11 48 05 -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) Modify Meteor's `HTTP.call` to add back proxy support -- Read receipts show with color gray when not read yet ([#25244](https://github.com/RocketChat/Rocket.Chat/pull/25244) by [@filipemarins](https://github.com/filipemarins)) +- Read receipts show with color gray when not read yet ([#25244](https://github.com/RocketChat/Rocket.Chat/pull/25244)) -- Read receipts showing before message read ([#25216](https://github.com/RocketChat/Rocket.Chat/pull/25216) by [@filipemarins](https://github.com/filipemarins)) +- Read receipts showing before message read ([#25216](https://github.com/RocketChat/Rocket.Chat/pull/25216)) - Replace encrypted text to Encrypted Message Placeholder ([#24166](https://github.com/RocketChat/Rocket.Chat/pull/24166)) @@ -296,7 +309,7 @@ ### after Screenshot 2022-01-13 at 8 57 47 PM -- Reply button behavior on broadcast channel ([#25175](https://github.com/RocketChat/Rocket.Chat/pull/25175) by [@filipemarins](https://github.com/filipemarins)) +- Reply button behavior on broadcast channel ([#25175](https://github.com/RocketChat/Rocket.Chat/pull/25175)) Hide reply button for the user that sent the message @@ -310,7 +323,7 @@ - Upgrade Tab showing for a split second ([#25050](https://github.com/RocketChat/Rocket.Chat/pull/25050)) -- Use correct room property for call ended at ([#24932](https://github.com/RocketChat/Rocket.Chat/pull/24932) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Use correct room property for call ended at ([#24932](https://github.com/RocketChat/Rocket.Chat/pull/24932)) - UserAutoComplete not rendering UserAvatar correctly ([#25055](https://github.com/RocketChat/Rocket.Chat/pull/25055)) @@ -331,9 +344,9 @@ ### after ![Screen Shot 2022-04-07 at 00 07 13](https://user-images.githubusercontent.com/27704687/162112353-afd6aac6-b27c-4470-a642-631b8080d59e.png) -- Video and Audio not skipping forward ([#19866](https://github.com/RocketChat/Rocket.Chat/pull/19866) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Video and Audio not skipping forward ([#19866](https://github.com/RocketChat/Rocket.Chat/pull/19866)) -- VoIP disabled/enabled sequence puts voip agent in error state ([#25230](https://github.com/RocketChat/Rocket.Chat/pull/25230) by [@KevLehman](https://github.com/KevLehman) & [@amolghode1981](https://github.com/amolghode1981)) +- VoIP disabled/enabled sequence puts voip agent in error state ([#25230](https://github.com/RocketChat/Rocket.Chat/pull/25230)) Initially it was thought that the issue occurs because of the race condition while changing the client settings vs those settings reflected on server side. So a natural solution to solve this is to wait for setting change event 'private-settings-changed'. Then if 'VoIP_Enabled' is updated and it is true, set voipEnabled to true in useVoipClient.ts (on client side) @@ -381,23 +394,23 @@ - Chore: Convert LivechatAgentActivity to raw model and TS ([#25123](https://github.com/RocketChat/Rocket.Chat/pull/25123)) -- Chore: Convert Mailer to TS ([#25121](https://github.com/RocketChat/Rocket.Chat/pull/25121) by [@juliajforesti](https://github.com/juliajforesti)) +- Chore: Convert Mailer to TS ([#25121](https://github.com/RocketChat/Rocket.Chat/pull/25121)) -- Chore: Convert NotificationStatus to TS ([#25125](https://github.com/RocketChat/Rocket.Chat/pull/25125) by [@jeanfbrito](https://github.com/jeanfbrito)) +- Chore: Convert NotificationStatus to TS ([#25125](https://github.com/RocketChat/Rocket.Chat/pull/25125)) -- Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275)) -- Chore: Migrate oauth2server to typescript ([#25126](https://github.com/RocketChat/Rocket.Chat/pull/25126) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Migrate oauth2server to typescript ([#25126](https://github.com/RocketChat/Rocket.Chat/pull/25126)) - Chore: Minor dependency updates ([#25269](https://github.com/RocketChat/Rocket.Chat/pull/25269)) -- Chore: Missing keys in APIsDisplay ([#24464](https://github.com/RocketChat/Rocket.Chat/pull/24464) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Missing keys in APIsDisplay ([#24464](https://github.com/RocketChat/Rocket.Chat/pull/24464)) - Chore: Monorepo ([#25074](https://github.com/RocketChat/Rocket.Chat/pull/25074)) - Chore: move definitions to packages ([#25085](https://github.com/RocketChat/Rocket.Chat/pull/25085)) -- Chore: organize test files and fix code coverage ([#24900](https://github.com/RocketChat/Rocket.Chat/pull/24900) by [@tmontini](https://github.com/tmontini)) +- Chore: organize test files and fix code coverage ([#24900](https://github.com/RocketChat/Rocket.Chat/pull/24900)) - Chore: Remove Alpine image deps after using them ([#25053](https://github.com/RocketChat/Rocket.Chat/pull/25053)) @@ -419,29 +432,29 @@ npx hygen package new test ``` -- Chore: Tests with Playwright (task: All works) ([#25122](https://github.com/RocketChat/Rocket.Chat/pull/25122) by [@weslley543](https://github.com/weslley543)) +- Chore: Tests with Playwright (task: All works) ([#25122](https://github.com/RocketChat/Rocket.Chat/pull/25122)) -- Chore: Tests with Playwright (task: ROC-28, 09-channels) ([#25196](https://github.com/RocketChat/Rocket.Chat/pull/25196) by [@tmontini](https://github.com/tmontini)) +- Chore: Tests with Playwright (task: ROC-28, 09-channels) ([#25196](https://github.com/RocketChat/Rocket.Chat/pull/25196)) - Chore: TS conversion folder client ([#25031](https://github.com/RocketChat/Rocket.Chat/pull/25031)) - Chore: TS migration SortList ([#25167](https://github.com/RocketChat/Rocket.Chat/pull/25167)) -- Chore: Update Livechat to the last version ([#25257](https://github.com/RocketChat/Rocket.Chat/pull/25257) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Chore: Update Livechat to the last version ([#25257](https://github.com/RocketChat/Rocket.Chat/pull/25257)) -- Chore: Update Livechat version ([#25130](https://github.com/RocketChat/Rocket.Chat/pull/25130) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Chore: Update Livechat version ([#25130](https://github.com/RocketChat/Rocket.Chat/pull/25130)) -- Chore: update OTR icon ([#24521](https://github.com/RocketChat/Rocket.Chat/pull/24521) by [@kibonusp](https://github.com/kibonusp) & [@tassoevan](https://github.com/tassoevan)) +- Chore: update OTR icon ([#24521](https://github.com/RocketChat/Rocket.Chat/pull/24521) by [@kibonusp](https://github.com/kibonusp)) I changed the shredder icon in OTR contextual bar to the stopwatch icon, recently added to the fuselage. - i18n: Language update from LingoHub 🤖 on 2022-04-04Z ([#25043](https://github.com/RocketChat/Rocket.Chat/pull/25043)) -- Merge master into develop & Set version to 4.7.0-develop ([#25028](https://github.com/RocketChat/Rocket.Chat/pull/25028) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) +- Merge master into develop & Set version to 4.7.0-develop ([#25028](https://github.com/RocketChat/Rocket.Chat/pull/25028)) -- Regression: Add select message to system message and thread preview and allow select on legacy template ([#25251](https://github.com/RocketChat/Rocket.Chat/pull/25251) by [@filipemarins](https://github.com/filipemarins)) +- Regression: Add select message to system message and thread preview and allow select on legacy template ([#25251](https://github.com/RocketChat/Rocket.Chat/pull/25251)) -- Regression: Avatar not loading on first direct message ([#25211](https://github.com/RocketChat/Rocket.Chat/pull/25211) by [@filipemarins](https://github.com/filipemarins)) +- Regression: Avatar not loading on first direct message ([#25211](https://github.com/RocketChat/Rocket.Chat/pull/25211)) fix avatar not loading on a first direct message @@ -455,7 +468,7 @@ - Regression: Fix services Docker build on CI ([#25181](https://github.com/RocketChat/Rocket.Chat/pull/25181)) -- Regression: Show username and real name on the message system ([#25254](https://github.com/RocketChat/Rocket.Chat/pull/25254) by [@filipemarins](https://github.com/filipemarins)) +- Regression: Show username and real name on the message system ([#25254](https://github.com/RocketChat/Rocket.Chat/pull/25254)) - Regression: yarn dev triggers build dependencies ([#25208](https://github.com/RocketChat/Rocket.Chat/pull/25208)) @@ -463,42 +476,42 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@Himanshu664](https://github.com/Himanshu664) -- [@KevLehman](https://github.com/KevLehman) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aakash-gitdev](https://github.com/aakash-gitdev) -- [@alansikora](https://github.com/alansikora) -- [@amolghode1981](https://github.com/amolghode1981) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@dependabot[bot]](https://github.com/dependabot[bot]) -- [@filipemarins](https://github.com/filipemarins) -- [@guijun13](https://github.com/guijun13) -- [@jeanfbrito](https://github.com/jeanfbrito) -- [@juliajforesti](https://github.com/juliajforesti) - [@kibonusp](https://github.com/kibonusp) - [@nishant23122000](https://github.com/nishant23122000) - [@paulobernardoaf](https://github.com/paulobernardoaf) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sidmohanty11](https://github.com/sidmohanty11) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) -- [@tmontini](https://github.com/tmontini) -- [@weslley543](https://github.com/weslley543) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@KevLehman](https://github.com/KevLehman) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@amolghode1981](https://github.com/amolghode1981) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) +- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@guijun13](https://github.com/guijun13) +- [@jeanfbrito](https://github.com/jeanfbrito) +- [@juliajforesti](https://github.com/juliajforesti) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) +- [@tmontini](https://github.com/tmontini) +- [@weslley543](https://github.com/weslley543) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.6.3 @@ -570,7 +583,7 @@ - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) Modify Meteor's `HTTP.call` to add back proxy support @@ -584,14 +597,11 @@ ### after ![Screen Shot 2022-04-04 at 16 49 00](https://user-images.githubusercontent.com/27704687/161620720-3e27774d-c241-46ca-b764-932a9295d709.png) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) - [@yash-rajpal](https://github.com/yash-rajpal) @@ -609,7 +619,7 @@ - Telemetry Events ([#24781](https://github.com/RocketChat/Rocket.Chat/pull/24781) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) -- Upgrade Tab ([#24835](https://github.com/RocketChat/Rocket.Chat/pull/24835) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Upgrade Tab ([#24835](https://github.com/RocketChat/Rocket.Chat/pull/24835)) ![image](https://user-images.githubusercontent.com/27704687/160172260-c656282e-a487-4092-948d-d11c9bacb598.png) @@ -618,7 +628,7 @@ - **ENTERPRISE:** Don't start presence monitor when running micro services ([#24739](https://github.com/RocketChat/Rocket.Chat/pull/24739)) -- Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887) by [@KevLehman](https://github.com/KevLehman) & [@cauefcr](https://github.com/cauefcr)) +- Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887)) - Total of Canned response messages sent - Total of tags used @@ -632,24 +642,24 @@ - Amount of Calls placed on hold (1x per call) - Fixed Session Aggregation type definitions -- New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749) by [@cauefcr](https://github.com/cauefcr)) +- New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749)) https://app.clickup.com/t/1z4zg4e -- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837) by [@KevLehman](https://github.com/KevLehman)) +- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837)) - Updated links in readme ([#24028](https://github.com/RocketChat/Rocket.Chat/pull/24028) by [@aswinidev](https://github.com/aswinidev)) -- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748) by [@tiagoevanp](https://github.com/tiagoevanp)) +- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748)) -- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750)) ### 🐛 Bug fixes - "livechat/webrtc.call" endpoint not working ([#24804](https://github.com/RocketChat/Rocket.Chat/pull/24804)) -- "Match error" when converting a team to a channel ([#24629](https://github.com/RocketChat/Rocket.Chat/pull/24629) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- "Match error" when converting a team to a channel ([#24629](https://github.com/RocketChat/Rocket.Chat/pull/24629)) - Fix "Match error" when trying to convert a channel to a team; @@ -661,27 +671,27 @@ - **ENTERPRISE:** Presence micro service logic ([#24724](https://github.com/RocketChat/Rocket.Chat/pull/24724)) -- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838) by [@tiagoevanp](https://github.com/tiagoevanp)) +- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) - Improve the CallProvider code; - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. -- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732) by [@tassoevan](https://github.com/tassoevan)) +- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) - API Error preventing adding an email to users without one (like bot/app users) ([#24709](https://github.com/RocketChat/Rocket.Chat/pull/24709)) -- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760)) - Apple OAuth ([#24879](https://github.com/RocketChat/Rocket.Chat/pull/24879)) - auto-join team channels not honoring user preferences ([#24779](https://github.com/RocketChat/Rocket.Chat/pull/24779) by [@ostjen](https://github.com/ostjen)) -- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) - Broken multiple OAuth integrations ([#24705](https://github.com/RocketChat/Rocket.Chat/pull/24705)) -- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677) by [@juliajforesti](https://github.com/juliajforesti) & [@tassoevan](https://github.com/tassoevan)) +- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677)) - Critical: Incorrect visitor getting assigned to a chat from apps ([#24805](https://github.com/RocketChat/Rocket.Chat/pull/24805)) @@ -702,7 +712,7 @@ - DDP streamer errors ([#24710](https://github.com/RocketChat/Rocket.Chat/pull/24710)) -- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864) by [@KevLehman](https://github.com/KevLehman)) +- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864)) - Duplicated 'name' log key ([#24590](https://github.com/RocketChat/Rocket.Chat/pull/24590)) @@ -719,7 +729,7 @@ https://user-images.githubusercontent.com/53515714/150325012-91413025-786e-4ce0-ae75-629f6b05b024.mp4 -- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994) by [@tiagoevanp](https://github.com/tiagoevanp)) +- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994)) Remove infinity loop inside useVoipClient hook. @@ -727,14 +737,14 @@ - Ignore customClass on messages ([#24845](https://github.com/RocketChat/Rocket.Chat/pull/24845)) -- LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320)) - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); - Display the avatar image preview (orientation) according to the `FileUpload_RotateImages` setting. -- Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882) by [@KevLehman](https://github.com/KevLehman)) +- Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882)) -- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674)) - Fix missing sender's username on messages imported from Slack. @@ -742,11 +752,11 @@ - no id of room closer in livechat-close message ([#24683](https://github.com/RocketChat/Rocket.Chat/pull/24683)) -- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623) by [@tassoevan](https://github.com/tassoevan)) +- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623)) A race condition on `useRoomIcon` -- delayed merge of rooms and subscriptions -- was causing a UI crash whenever someone tried to open a DM from the user card component. -- Prevent call button toggle when user is on call ([#24758](https://github.com/RocketChat/Rocket.Chat/pull/24758) by [@KevLehman](https://github.com/KevLehman)) +- Prevent call button toggle when user is on call ([#24758](https://github.com/RocketChat/Rocket.Chat/pull/24758)) - Prune Message issue ([#24424](https://github.com/RocketChat/Rocket.Chat/pull/24424) by [@nishant23122000](https://github.com/nishant23122000)) @@ -754,21 +764,21 @@ - Register with Secret URL ([#24921](https://github.com/RocketChat/Rocket.Chat/pull/24921)) -- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@tassoevan](https://github.com/tassoevan)) +- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) Removed the logic for calling the `rooms.adminRooms` endPoint from the `RoomsTable` Component and moved it to its parent component `RoomsPage`. This allows to call the endPoint `rooms.adminRooms` from `EditRoomContextBar` Component which is also has `RoomPage` Component as its parent. Also added a succes toast message after the successful deletion of room. -- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812) by [@juliajforesti](https://github.com/juliajforesti)) +- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812)) -- Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897)) - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); - Fix the "Hide System Messages" option for the "Room archived" and "Room unarchived" system messages; -- room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955) by [@filipemarins](https://github.com/filipemarins) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) When the room object is searched for the first time, it does not exist on the front object yet (subscription), adding a fallback search for room list will guarantee to search the room details. @@ -778,43 +788,43 @@ after: https://user-images.githubusercontent.com/9275105/160223244-84d0d2a1-3d95-464d-8b8a-e264b0d4d690.mp4 -- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696)) - Fix rooms' message counter not being incremented on message import. -- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930)) -- Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052)) - Throw an error when trying to delete a role (User or Subscription role) that are still being used; - Fix "Invalid Role" error for custom roles in Role Editing sidebar; - Fix "Users in Role" screen for custom roles. -- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752) by [@KevLehman](https://github.com/KevLehman)) +- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) -- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680)) -- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829) by [@KevLehman](https://github.com/KevLehman)) +- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829)) -- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743)) - Do not send system messages when adding or removing a new or existing _group_ from a team. -- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737)) -- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661) by [@renatobecker](https://github.com/renatobecker)) +- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661)) -- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789) by [@amolghode1981](https://github.com/amolghode1981)) +- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789)) -- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607)) -- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657) by [@amolghode1981](https://github.com/amolghode1981)) +- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657)) -- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792) by [@KevLehman](https://github.com/KevLehman)) +- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792)) - Wrong business hour behavior ([#24896](https://github.com/RocketChat/Rocket.Chat/pull/24896)) -- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799) by [@KevLehman](https://github.com/KevLehman)) +- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799))
🔍 Minor changes @@ -866,47 +876,47 @@ - Bump url-parse from 1.5.7 to 1.5.10 ([#24640](https://github.com/RocketChat/Rocket.Chat/pull/24640) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: Add E2E tests for livechat/room.close ([#24729](https://github.com/RocketChat/Rocket.Chat/pull/24729) by [@KevLehman](https://github.com/KevLehman) & [@Muramatsu2602](https://github.com/Muramatsu2602)) +- Chore: Add E2E tests for livechat/room.close ([#24729](https://github.com/RocketChat/Rocket.Chat/pull/24729) by [@Muramatsu2602](https://github.com/Muramatsu2602)) * Create a new test suite file under tests/end-to-end/api/livechat * Create tests for the following endpoint: + ivechat/room.close -- Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@KevLehman](https://github.com/KevLehman) & [@Muramatsu2602](https://github.com/Muramatsu2602)) +- Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@Muramatsu2602](https://github.com/Muramatsu2602)) - Create a new test suite file under tests/end-to-end/api/livechat - Create tests for the following endpoints: + livechat/visitor (create visitor, update visitor, add custom fields to visitors) -- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925) by [@gerzonc](https://github.com/gerzonc)) +- Chore: add some missing REST definitions ([#24925](https://github.com/RocketChat/Rocket.Chat/pull/24925)) On the [mobile client](https://github.com/RocketChat/Rocket.Chat.ReactNative), we made an effort to collect more `REST API` definitions that are missing on the server side during our migration to TypeScript. Since we're both migrating to TypeScript, we thought it would be a good idea to share those so you guys can benefit from our initiative. -- Chore: added Server Instances endpoint types ([#24507](https://github.com/RocketChat/Rocket.Chat/pull/24507) by [@felipe-rod123](https://github.com/felipe-rod123)) +- Chore: added Server Instances endpoint types ([#24507](https://github.com/RocketChat/Rocket.Chat/pull/24507)) Created typing for endpoint definitions on `instances.ts`. -- Chore: added settings endpoint types ([#24506](https://github.com/RocketChat/Rocket.Chat/pull/24506) by [@felipe-rod123](https://github.com/felipe-rod123)) +- Chore: added settings endpoint types ([#24506](https://github.com/RocketChat/Rocket.Chat/pull/24506)) Created typing for endpoint definitions on `settings.ts`. -- Chore: APIClass types ([#24747](https://github.com/RocketChat/Rocket.Chat/pull/24747) by [@felipe-rod123](https://github.com/felipe-rod123)) +- Chore: APIClass types ([#24747](https://github.com/RocketChat/Rocket.Chat/pull/24747)) This pull request creates a new `restivus` module (.d.ts) for the `api.js` file. -- Chore: Bump Fuselage packages ([#25015](https://github.com/RocketChat/Rocket.Chat/pull/25015) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Bump Fuselage packages ([#25015](https://github.com/RocketChat/Rocket.Chat/pull/25015)) It uses the last stable version of Fuselage packages. -- Chore: Convert server functions from javascript to typescript ([#24384](https://github.com/RocketChat/Rocket.Chat/pull/24384) by [@felipe-rod123](https://github.com/felipe-rod123)) +- Chore: Convert server functions from javascript to typescript ([#24384](https://github.com/RocketChat/Rocket.Chat/pull/24384)) This pull request will be used to rewrite some functions on the Chat Engine to Typescript, in order to increase security and specify variable types on the code. -- Chore: converted more hooks to typescript ([#24628](https://github.com/RocketChat/Rocket.Chat/pull/24628) by [@felipe-rod123](https://github.com/felipe-rod123)) +- Chore: converted more hooks to typescript ([#24628](https://github.com/RocketChat/Rocket.Chat/pull/24628)) Converted some functions on `client/hooks/` from JavaScript to Typescript. -- Chore: Fix Cypress tests ([#24544](https://github.com/RocketChat/Rocket.Chat/pull/24544) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Fix Cypress tests ([#24544](https://github.com/RocketChat/Rocket.Chat/pull/24544)) - Chore: Fix grammatical errors in Code of Conduct ([#24759](https://github.com/RocketChat/Rocket.Chat/pull/24759) by [@aadishJ01](https://github.com/aadishJ01)) @@ -918,7 +928,7 @@ - Chore: Improve logger to allow log of `unknown` values ([#24726](https://github.com/RocketChat/Rocket.Chat/pull/24726)) -- Chore: Improvements on role syncing (ldap, oauth and saml) ([#23824](https://github.com/RocketChat/Rocket.Chat/pull/23824) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Chore: Improvements on role syncing (ldap, oauth and saml) ([#23824](https://github.com/RocketChat/Rocket.Chat/pull/23824)) - Chore: Micro services fixes and cleanup ([#24753](https://github.com/RocketChat/Rocket.Chat/pull/24753)) @@ -926,15 +936,15 @@ - Chore: Skip local services changes when shutting down duplicated services ([#24810](https://github.com/RocketChat/Rocket.Chat/pull/24810)) -- Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969)) - Stories from `ee/` included; - Differentiate root story kinds; - Mocking of `ServerContext` via Storybook parameters. -- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) -- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990)) - Chore(deps-dev): Bump @types/mock-require from 2.0.0 to 2.0.1 ([#24574](https://github.com/RocketChat/Rocket.Chat/pull/24574) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -948,18 +958,18 @@ - i18n: Language update from LingoHub 🤖 on 2022-03-28Z ([#24971](https://github.com/RocketChat/Rocket.Chat/pull/24971)) -- Merge master into develop & Set version to 4.6.0-develop ([#24653](https://github.com/RocketChat/Rocket.Chat/pull/24653) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Merge master into develop & Set version to 4.6.0-develop ([#24653](https://github.com/RocketChat/Rocket.Chat/pull/24653)) - Regression: Add createdOTR index ([#25017](https://github.com/RocketChat/Rocket.Chat/pull/25017)) -- Regression: Call doesn't stop ringing after agent unregistration ([#24908](https://github.com/RocketChat/Rocket.Chat/pull/24908) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Call doesn't stop ringing after agent unregistration ([#24908](https://github.com/RocketChat/Rocket.Chat/pull/24908)) -- Regression: Custom roles displaying ID instead of name on some admin screens ([#24999](https://github.com/RocketChat/Rocket.Chat/pull/24999) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Custom roles displaying ID instead of name on some admin screens ([#24999](https://github.com/RocketChat/Rocket.Chat/pull/24999)) ![image](https://user-images.githubusercontent.com/55164754/160981416-555bcaa1-c075-4260-937c-64523472da43.png) ![image](https://user-images.githubusercontent.com/55164754/160981452-6eae4e74-8425-4073-8256-472aba72b9db.png) -- Regression: Error is raised when there's no Asterisk queue available yet ([#24980](https://github.com/RocketChat/Rocket.Chat/pull/24980) by [@amolghode1981](https://github.com/amolghode1981)) +- Regression: Error is raised when there's no Asterisk queue available yet ([#24980](https://github.com/RocketChat/Rocket.Chat/pull/24980)) - Regression: Fix account service login expiration ([#24920](https://github.com/RocketChat/Rocket.Chat/pull/24920)) @@ -971,7 +981,7 @@ - Regression: Register services right away ([#24800](https://github.com/RocketChat/Rocket.Chat/pull/24800)) -- Regression: Role Sync not always working ([#24850](https://github.com/RocketChat/Rocket.Chat/pull/24850) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Role Sync not always working ([#24850](https://github.com/RocketChat/Rocket.Chat/pull/24850))
@@ -980,39 +990,39 @@ - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) - [@Himanshu664](https://github.com/Himanshu664) - [@JMoVS](https://github.com/JMoVS) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Muramatsu2602](https://github.com/Muramatsu2602) - [@aadishJ01](https://github.com/aadishJ01) -- [@amolghode1981](https://github.com/amolghode1981) - [@aswinidev](https://github.com/aswinidev) -- [@cauefcr](https://github.com/cauefcr) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) -- [@felipe-rod123](https://github.com/felipe-rod123) -- [@filipemarins](https://github.com/filipemarins) -- [@gerzonc](https://github.com/gerzonc) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@nishant23122000](https://github.com/nishant23122000) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@tkurz](https://github.com/tkurz) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@amolghode1981](https://github.com/amolghode1981) +- [@cauefcr](https://github.com/cauefcr) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) +- [@felipe-rod123](https://github.com/felipe-rod123) +- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@gerzonc](https://github.com/gerzonc) - [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.5.6 @@ -1029,16 +1039,13 @@ - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) Modify Meteor's `HTTP.call` to add back proxy support -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.5.5 @@ -1053,13 +1060,13 @@ ### 🐛 Bug fixes -- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994) by [@tiagoevanp](https://github.com/tiagoevanp)) +- High CPU usage caused by CallProvider ([#24994](https://github.com/RocketChat/Rocket.Chat/pull/24994)) Remove infinity loop inside useVoipClient hook. #closes #24970 -- Multiple issues starting a new DM ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955) by [@filipemarins](https://github.com/filipemarins) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Multiple issues starting a new DM ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) When the room object is searched for the first time, it does not exist on the front object yet (subscription), adding a fallback search for room list will guarantee to search the room details. @@ -1073,23 +1080,20 @@ 🔍 Minor changes -- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat ([#24990](https://github.com/RocketChat/Rocket.Chat/pull/24990)) -- Release 4.5.5 ([#24998](https://github.com/RocketChat/Rocket.Chat/pull/24998) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@filipemarins](https://github.com/filipemarins) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Release 4.5.5 ([#24998](https://github.com/RocketChat/Rocket.Chat/pull/24998)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) - [@filipemarins](https://github.com/filipemarins) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@tiagoevanp](https://github.com/tiagoevanp) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) # 4.5.4 `2022-03-24 · 1 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` @@ -1103,24 +1107,21 @@ ### 🐛 Bug fixes -- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML Force name to string ([#24930](https://github.com/RocketChat/Rocket.Chat/pull/24930))
🔍 Minor changes -- Release 4.5.4 ([#24938](https://github.com/RocketChat/Rocket.Chat/pull/24938) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) +- Release 4.5.4 ([#24938](https://github.com/RocketChat/Rocket.Chat/pull/24938))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) # 4.5.3 `2022-03-21 · 2 🚀 · 8 🐛 · 1 🔍 · 5 👩‍💻👨‍💻` @@ -1134,32 +1135,32 @@ ### 🚀 Improvements -- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837) by [@KevLehman](https://github.com/KevLehman)) +- Standarize queue behavior for managers and agents when subscribing ([#24837](https://github.com/RocketChat/Rocket.Chat/pull/24837)) -- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748) by [@tiagoevanp](https://github.com/tiagoevanp)) +- UX - VoIP Call Component ([#24748](https://github.com/RocketChat/Rocket.Chat/pull/24748)) ### 🐛 Bug fixes -- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838) by [@tiagoevanp](https://github.com/tiagoevanp)) +- **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) - Improve the CallProvider code; - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. -- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) - Custom script not being fired ([#24901](https://github.com/RocketChat/Rocket.Chat/pull/24901)) -- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864) by [@KevLehman](https://github.com/KevLehman)) +- Disable voip button when call is in progress ([#24864](https://github.com/RocketChat/Rocket.Chat/pull/24864)) -- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752) by [@KevLehman](https://github.com/KevLehman)) +- Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) -- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829) by [@KevLehman](https://github.com/KevLehman)) +- Show only enabled departments on forward ([#24829](https://github.com/RocketChat/Rocket.Chat/pull/24829)) -- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789) by [@amolghode1981](https://github.com/amolghode1981)) +- VoIP button gets disabled whenever user status changes ([#24789](https://github.com/RocketChat/Rocket.Chat/pull/24789)) -- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799) by [@KevLehman](https://github.com/KevLehman)) +- Wrong param usage on queue summary call ([#24799](https://github.com/RocketChat/Rocket.Chat/pull/24799))
🔍 Minor changes @@ -1169,16 +1170,13 @@
-### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) - [@amolghode1981](https://github.com/amolghode1981) -- [@tiagoevanp](https://github.com/tiagoevanp) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) # 4.5.2 `2022-03-12 · 1 🚀 · 7 🐛 · 1 🔍 · 8 👩‍💻👨‍💻` @@ -1192,26 +1190,26 @@ ### 🚀 Improvements -- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Voip Extensions disabled state ([#24750](https://github.com/RocketChat/Rocket.Chat/pull/24750)) ### 🐛 Bug fixes - "livechat/webrtc.call" endpoint not working ([#24804](https://github.com/RocketChat/Rocket.Chat/pull/24804)) -- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732) by [@tassoevan](https://github.com/tassoevan)) +- `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) - Broken multiple OAuth integrations ([#24705](https://github.com/RocketChat/Rocket.Chat/pull/24705)) - Critical: Incorrect visitor getting assigned to a chat from apps ([#24805](https://github.com/RocketChat/Rocket.Chat/pull/24805)) -- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623) by [@tassoevan](https://github.com/tassoevan)) +- Opening a new DM from user card ([#24623](https://github.com/RocketChat/Rocket.Chat/pull/24623)) A race condition on `useRoomIcon` -- delayed merge of rooms and subscriptions -- was causing a UI crash whenever someone tried to open a DM from the user card component. -- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812) by [@juliajforesti](https://github.com/juliajforesti)) +- Revert AutoComplete ([#24812](https://github.com/RocketChat/Rocket.Chat/pull/24812)) -- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792) by [@KevLehman](https://github.com/KevLehman)) +- VoipExtensionsPage component call ([#24792](https://github.com/RocketChat/Rocket.Chat/pull/24792))
🔍 Minor changes @@ -1221,19 +1219,16 @@
-### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) - [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@juliajforesti](https://github.com/juliajforesti) -- [@tassoevan](https://github.com/tassoevan) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@debdutdeb](https://github.com/debdutdeb) - [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) - [@murtaza98](https://github.com/murtaza98) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 4.5.1 `2022-03-09 · 13 🐛 · 2 🔍 · 12 👩‍💻👨‍💻` @@ -1247,71 +1242,71 @@ ### 🐛 Bug fixes -- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Apple login script being loaded even when Apple Login is disabled. ([#24760](https://github.com/RocketChat/Rocket.Chat/pull/24760)) -- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677) by [@juliajforesti](https://github.com/juliajforesti) & [@tassoevan](https://github.com/tassoevan)) +- Components for user search ([#24677](https://github.com/RocketChat/Rocket.Chat/pull/24677)) - Duplicated 'name' log key ([#24590](https://github.com/RocketChat/Rocket.Chat/pull/24590)) -- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Missing username on messages imported from Slack ([#24674](https://github.com/RocketChat/Rocket.Chat/pull/24674)) - Fix missing sender's username on messages imported from Slack. - no id of room closer in livechat-close message ([#24683](https://github.com/RocketChat/Rocket.Chat/pull/24683)) -- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@tassoevan](https://github.com/tassoevan)) +- Reload roomslist after successful deletion of a room from admin panel. ([#23795](https://github.com/RocketChat/Rocket.Chat/pull/23795) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) Removed the logic for calling the `rooms.adminRooms` endPoint from the `RoomsTable` Component and moved it to its parent component `RoomsPage`. This allows to call the endPoint `rooms.adminRooms` from `EditRoomContextBar` Component which is also has `RoomPage` Component as its parent. Also added a succes toast message after the successful deletion of room. -- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Room's message count not being incremented on import ([#24696](https://github.com/RocketChat/Rocket.Chat/pull/24696)) - Fix rooms' message counter not being incremented on message import. -- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Show only available agents on extension association modal ([#24680](https://github.com/RocketChat/Rocket.Chat/pull/24680)) -- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- System messages are sent when adding or removing a group from a team ([#24743](https://github.com/RocketChat/Rocket.Chat/pull/24743)) - Do not send system messages when adding or removing a new or existing _group_ from a team. -- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Typo and placeholder on wrap up call modal ([#24737](https://github.com/RocketChat/Rocket.Chat/pull/24737)) -- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661) by [@renatobecker](https://github.com/renatobecker)) +- Typo in wrap-up term ([#24661](https://github.com/RocketChat/Rocket.Chat/pull/24661)) -- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- VoIP Enable/Disable setting on CallContext/CallProvider Notifications ([#24607](https://github.com/RocketChat/Rocket.Chat/pull/24607)) -- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657) by [@amolghode1981](https://github.com/amolghode1981)) +- Voip Stream Reinitialization Error ([#24657](https://github.com/RocketChat/Rocket.Chat/pull/24657))
🔍 Minor changes -- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) -- Release 4.5.1 ([#24782](https://github.com/RocketChat/Rocket.Chat/pull/24782) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@amolghode1981](https://github.com/amolghode1981) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@juliajforesti](https://github.com/juliajforesti) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Release 4.5.1 ([#24782](https://github.com/RocketChat/Rocket.Chat/pull/24782) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@cuonghuunguyen](https://github.com/cuonghuunguyen))
### 👩‍💻👨‍💻 Contributors 😍 - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) +- [@cuonghuunguyen](https://github.com/cuonghuunguyen) + +### 👩‍💻👨‍💻 Core Team 🤓 + - [@KevLehman](https://github.com/KevLehman) - [@MartinSchoeler](https://github.com/MartinSchoeler) - [@amolghode1981](https://github.com/amolghode1981) -- [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@juliajforesti](https://github.com/juliajforesti) - [@matheusbsilva137](https://github.com/matheusbsilva137) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) - [@tiagoevanp](https://github.com/tiagoevanp) -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@sampaiodiego](https://github.com/sampaiodiego) - # 4.5.0 `2022-02-28 · 3 🎉 · 15 🚀 · 19 🐛 · 72 🔍 · 30 👩‍💻👨‍💻` @@ -1324,15 +1319,15 @@ ### 🎉 New features -- E2E password generator ([#24114](https://github.com/RocketChat/Rocket.Chat/pull/24114) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- E2E password generator ([#24114](https://github.com/RocketChat/Rocket.Chat/pull/24114) by [@eduardofcabrera](https://github.com/eduardofcabrera) & [@ostjen](https://github.com/ostjen)) -- Marketplace sort filter ([#24567](https://github.com/RocketChat/Rocket.Chat/pull/24567) by [@rique223](https://github.com/rique223)) +- Marketplace sort filter ([#24567](https://github.com/RocketChat/Rocket.Chat/pull/24567)) Implemented a sort filter for the marketplace screen. This component sorts the marketplace apps list in 4 ways, alphabetical order(A-Z), inverse alphabetical order(Z-A), most recently updated(MRU), and least recent updated(LRU). Besides that, I've generalized some components and types to increase code reusability, renamed some helpers as well as deleted some useless ones, and inserted the necessary new translations on the English i18n dictionary. Demo gif: ![Marketplace sort filter](https://user-images.githubusercontent.com/43561537/155033709-e07a6306-a85a-4f7f-9624-b53ba5dd7fa9.gif) -- VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@amolghode1981](https://github.com/amolghode1981) & [@tiagoevanp](https://github.com/tiagoevanp)) +- VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102)) - Created VoipService to manage VoIP connections and PBX connection - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) @@ -1354,7 +1349,7 @@ - **ENTERPRISE:** Improve how micro services are loaded ([#24388](https://github.com/RocketChat/Rocket.Chat/pull/24388)) -- Add return button in chats opened from the list of current chats ([#24458](https://github.com/RocketChat/Rocket.Chat/pull/24458) by [@LucasFASouza](https://github.com/LucasFASouza) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Add return button in chats opened from the list of current chats ([#24458](https://github.com/RocketChat/Rocket.Chat/pull/24458) by [@LucasFASouza](https://github.com/LucasFASouza)) The new return button for Omnichannel chats came out with release 3.15 but the feature was only available for chats that were opened from Omnichannel Contact Center. Now, the same UI/UX is supported for chats opened from Current Chats list. @@ -1365,7 +1360,7 @@ ![image](https://user-images.githubusercontent.com/32396925/153285591-fad8e4a0-d2ea-4a02-8b2a-15e383b3c876.png) -- Add tooltips on action buttons of Canned Response message composer ([#24483](https://github.com/RocketChat/Rocket.Chat/pull/24483) by [@LucasFASouza](https://github.com/LucasFASouza) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Add tooltips on action buttons of Canned Response message composer ([#24483](https://github.com/RocketChat/Rocket.Chat/pull/24483) by [@LucasFASouza](https://github.com/LucasFASouza)) The tooltips were missing on the action buttons of CR message composer. @@ -1373,7 +1368,7 @@ Users can now feel more encouraged to use these actions knowing what they are supposed to do. -- Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@ostjen](https://github.com/ostjen)) - Add user to room on "Click to Join!" button press; - Display the "Join" button in discussions inside channels (keeping the behavior consistent with discussions inside groups). @@ -1384,7 +1379,7 @@ The text content from chatbox goes to the file description when drag and drop a file. -- Close modal on esc and outside click ([#24275](https://github.com/RocketChat/Rocket.Chat/pull/24275) by [@tassoevan](https://github.com/tassoevan)) +- Close modal on esc and outside click ([#24275](https://github.com/RocketChat/Rocket.Chat/pull/24275)) This is a QUICK change in order to close modals pressing Esc button and clicking outside of it **intentionally**. @@ -1396,7 +1391,7 @@ ### after ![Screen Shot 2022-01-28 at 13 32 02](https://user-images.githubusercontent.com/27704687/151585101-75b98502-9aae-4198-bc3e-4956750e5d8b.png) -- Convert tag edit with department data to tsx ([#24369](https://github.com/RocketChat/Rocket.Chat/pull/24369) by [@LucasFASouza](https://github.com/LucasFASouza) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Convert tag edit with department data to tsx ([#24369](https://github.com/RocketChat/Rocket.Chat/pull/24369) by [@LucasFASouza](https://github.com/LucasFASouza)) - Descriptive tooltip for Encrypted Key on Room Header ([#24121](https://github.com/RocketChat/Rocket.Chat/pull/24121)) @@ -1404,7 +1399,7 @@ OTR system messages to indicate key refresh and joining chat to users. -- Purchase Type Filter for marketplace apps and Categories filter anchor refactoring ([#24454](https://github.com/RocketChat/Rocket.Chat/pull/24454) by [@rique223](https://github.com/rique223)) +- Purchase Type Filter for marketplace apps and Categories filter anchor refactoring ([#24454](https://github.com/RocketChat/Rocket.Chat/pull/24454)) Implemented a filter by purchase type(free or paid) component for the apps screen of the marketplace. Besides that, new entries on the dictionary, fixed some parts of the App type (purchaseType was typed as unknown and price as string), and created some helpers to work alongside the filter. Will be refactoring the categories filter anchor and then will open this PR for reviews. @@ -1415,7 +1410,7 @@ Demo gif: ![New categories filter anchor(PR)](https://user-images.githubusercontent.com/43561537/153422427-28012b7d-e0ec-45f4-861d-c9368c57ad04.gif) -- Replace AutoComplete in UserAutoComplete & UserAutoCompleteMultiple components ([#24529](https://github.com/RocketChat/Rocket.Chat/pull/24529) by [@juliajforesti](https://github.com/juliajforesti) & [@tassoevan](https://github.com/tassoevan)) +- Replace AutoComplete in UserAutoComplete & UserAutoCompleteMultiple components ([#24529](https://github.com/RocketChat/Rocket.Chat/pull/24529)) This PR replaces a deprecated fuselage's component `AutoComplete` in favor of `Select` and `MultiSelect` which fixes some of UX/UI issues in selecting users @@ -1429,7 +1424,7 @@ Currently Slash Commands don't work in an E2EE room, as we encrypt the message before slash command is detected by the server, So removed encryption for slash commands in e2e rooms. -- Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@ostjen](https://github.com/ostjen)) - Delete some keys that aren't being used (eg: User_left_female). - Add new Teams' system messages: @@ -1449,13 +1444,13 @@ - Add ?close to OAuth callback url ([#24381](https://github.com/RocketChat/Rocket.Chat/pull/24381)) -- GDPR action to forget visitor data on request ([#24441](https://github.com/RocketChat/Rocket.Chat/pull/24441) by [@KevLehman](https://github.com/KevLehman)) +- GDPR action to forget visitor data on request ([#24441](https://github.com/RocketChat/Rocket.Chat/pull/24441)) - Implement client errors on ddp-streamer ([#24310](https://github.com/RocketChat/Rocket.Chat/pull/24310)) -- Inconsistent validation of user's access to rooms ([#24037](https://github.com/RocketChat/Rocket.Chat/pull/24037) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Inconsistent validation of user's access to rooms ([#24037](https://github.com/RocketChat/Rocket.Chat/pull/24037) by [@ostjen](https://github.com/ostjen)) -- Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253) by [@guijun13](https://github.com/guijun13) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253)) * Fix users selecting by fixing their _id * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone @@ -1465,23 +1460,23 @@ - Oembed request not respecting payload limit ([#24418](https://github.com/RocketChat/Rocket.Chat/pull/24418)) -- Omnichannel managers can't join chats in progress ([#24553](https://github.com/RocketChat/Rocket.Chat/pull/24553) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel managers can't join chats in progress ([#24553](https://github.com/RocketChat/Rocket.Chat/pull/24553)) - Outgoing webhook without scripts not saving messages ([#24401](https://github.com/RocketChat/Rocket.Chat/pull/24401)) -- Prevent Apps Bridge to remove visitor status from room ([#24305](https://github.com/RocketChat/Rocket.Chat/pull/24305) by [@KevLehman](https://github.com/KevLehman)) +- Prevent Apps Bridge to remove visitor status from room ([#24305](https://github.com/RocketChat/Rocket.Chat/pull/24305)) - Read receipts showing first messages of the room as read even if not read by everyone ([#24508](https://github.com/RocketChat/Rocket.Chat/pull/24508)) -- respect `Accounts_Registration_Users_Default_Roles` setting ([#24173](https://github.com/RocketChat/Rocket.Chat/pull/24173) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- respect `Accounts_Registration_Users_Default_Roles` setting ([#24173](https://github.com/RocketChat/Rocket.Chat/pull/24173)) - Fix `user` role being added as default regardless of the `Accounts_Registration_Users_Default_Roles` setting. - Room context tabs not working in Omnichannel current chats page ([#24559](https://github.com/RocketChat/Rocket.Chat/pull/24559)) -- Skip admin info in setup wizard for servers with admin registered ([#24485](https://github.com/RocketChat/Rocket.Chat/pull/24485) by [@tassoevan](https://github.com/tassoevan)) +- Skip admin info in setup wizard for servers with admin registered ([#24485](https://github.com/RocketChat/Rocket.Chat/pull/24485)) -- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407) by [@tassoevan](https://github.com/tassoevan)) +- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407)) - Slash commands previews not working ([#24387](https://github.com/RocketChat/Rocket.Chat/pull/24387) by [@ostjen](https://github.com/ostjen)) @@ -1489,7 +1484,7 @@ Fix `bio` and `prid` startup index creation errors. -- typo on register server tooltip of setup wizard ([#24466](https://github.com/RocketChat/Rocket.Chat/pull/24466) by [@filipemarins](https://github.com/filipemarins)) +- typo on register server tooltip of setup wizard ([#24466](https://github.com/RocketChat/Rocket.Chat/pull/24466))
🔍 Minor changes @@ -1527,19 +1522,19 @@ - Bump vm2 from 3.9.5 to 3.9.7 in /ee/server/services ([#24509](https://github.com/RocketChat/Rocket.Chat/pull/24509) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: `twoFactorRequired` signature ([#24518](https://github.com/RocketChat/Rocket.Chat/pull/24518) by [@tassoevan](https://github.com/tassoevan)) +- Chore: `twoFactorRequired` signature ([#24518](https://github.com/RocketChat/Rocket.Chat/pull/24518)) Improved type checking for decorator `twoFactorRequired`. - Chore: Add description to global OTR setting ([#24333](https://github.com/RocketChat/Rocket.Chat/pull/24333) by [@pedrogssouza](https://github.com/pedrogssouza)) -- Chore: Bump Fuselage packages ([#24573](https://github.com/RocketChat/Rocket.Chat/pull/24573) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Bump Fuselage packages ([#24573](https://github.com/RocketChat/Rocket.Chat/pull/24573)) It uses the last stable version of Fuselage packages. - Chore: bump fuselage version ([#24453](https://github.com/RocketChat/Rocket.Chat/pull/24453)) -- Chore: Convert JS files to Typescript ([#24410](https://github.com/RocketChat/Rocket.Chat/pull/24410) by [@felipe-rod123](https://github.com/felipe-rod123)) +- Chore: Convert JS files to Typescript ([#24410](https://github.com/RocketChat/Rocket.Chat/pull/24410)) This pull request converts 26 more files from Javascript to Typescript, to check variable types and increase validation on the code. @@ -1575,13 +1570,13 @@ - Chore: Remove storybook build job from CI ([#24530](https://github.com/RocketChat/Rocket.Chat/pull/24530)) -- Chore: roomTypes: Stop mixing client and server code together ([#24536](https://github.com/RocketChat/Rocket.Chat/pull/24536) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Chore: roomTypes: Stop mixing client and server code together ([#24536](https://github.com/RocketChat/Rocket.Chat/pull/24536)) - Chore: Run tests using microservices deployment on CI ([#24513](https://github.com/RocketChat/Rocket.Chat/pull/24513)) - Chore: Set Docker image tag to latest only when really latest ([#24366](https://github.com/RocketChat/Rocket.Chat/pull/24366)) -- Chore: Unify ILivechatAgent with ILivechatAgentRecord ([#24406](https://github.com/RocketChat/Rocket.Chat/pull/24406) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Unify ILivechatAgent with ILivechatAgentRecord ([#24406](https://github.com/RocketChat/Rocket.Chat/pull/24406)) - Chore: Update Apps-Engine ([#24568](https://github.com/RocketChat/Rocket.Chat/pull/24568)) @@ -1611,24 +1606,24 @@ - Regression: Admin Sidebar colors inverted. ([#24609](https://github.com/RocketChat/Rocket.Chat/pull/24609)) -- Regression: Bunch of settings fixes for VoIP ([#24594](https://github.com/RocketChat/Rocket.Chat/pull/24594) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Bunch of settings fixes for VoIP ([#24594](https://github.com/RocketChat/Rocket.Chat/pull/24594)) - Regression: Do not show toast on incoming voip calls ([#24619](https://github.com/RocketChat/Rocket.Chat/pull/24619)) -- Regression: Encode registration info as JWT when signing key is provided ([#24626](https://github.com/RocketChat/Rocket.Chat/pull/24626) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Encode registration info as JWT when signing key is provided ([#24626](https://github.com/RocketChat/Rocket.Chat/pull/24626)) -- Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585)) - Fix `Mentioned room not found` error when importing rooms from Slack; - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); - Fix incorrect message count on imported rooms; - Fix missing username on messages imported from Slack; -- Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583)) - Regression: Extension List panel UI not aligned with designs ([#24645](https://github.com/RocketChat/Rocket.Chat/pull/24645)) -- Regression: Fix double value on holdTime and empty msg on last message ([#24630](https://github.com/RocketChat/Rocket.Chat/pull/24630) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix double value on holdTime and empty msg on last message ([#24630](https://github.com/RocketChat/Rocket.Chat/pull/24630)) - Regression: Fix in-correct room status shown to agents ([#24592](https://github.com/RocketChat/Rocket.Chat/pull/24592)) @@ -1636,21 +1631,21 @@ - Regression: Fix room not getting created due to null visitor status ([#24562](https://github.com/RocketChat/Rocket.Chat/pull/24562)) -- Regression: Fix time fields and wrap up in Voip Room Contexual bar ([#24625](https://github.com/RocketChat/Rocket.Chat/pull/24625) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix time fields and wrap up in Voip Room Contexual bar ([#24625](https://github.com/RocketChat/Rocket.Chat/pull/24625)) - Regression: Fix time format on Voip system messages ([#24603](https://github.com/RocketChat/Rocket.Chat/pull/24603)) - Regression: Fix translation for call started message ([#24615](https://github.com/RocketChat/Rocket.Chat/pull/24615)) -- Regression: Fix wrong tab name for VoIP settings ([#24647](https://github.com/RocketChat/Rocket.Chat/pull/24647) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Fix wrong tab name for VoIP settings ([#24647](https://github.com/RocketChat/Rocket.Chat/pull/24647)) -- Regression: Fixes in Voice Contextual Bar and Directory ([#24596](https://github.com/RocketChat/Rocket.Chat/pull/24596) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fixes in Voice Contextual Bar and Directory ([#24596](https://github.com/RocketChat/Rocket.Chat/pull/24596)) -- Regression: If Asterisk suddenly goes down, server has no way to know. Causes server to get stuck. Needs restart ([#24624](https://github.com/RocketChat/Rocket.Chat/pull/24624) by [@KevLehman](https://github.com/KevLehman) & [@amolghode1981](https://github.com/amolghode1981)) +- Regression: If Asterisk suddenly goes down, server has no way to know. Causes server to get stuck. Needs restart ([#24624](https://github.com/RocketChat/Rocket.Chat/pull/24624)) - Regression: Mark all rooms as read modal closing instantly. ([#24610](https://github.com/RocketChat/Rocket.Chat/pull/24610)) -- Regression: No audio when call comes from Skype/IP phone ([#24602](https://github.com/RocketChat/Rocket.Chat/pull/24602) by [@amolghode1981](https://github.com/amolghode1981)) +- Regression: No audio when call comes from Skype/IP phone ([#24602](https://github.com/RocketChat/Rocket.Chat/pull/24602)) The audio was not rendered because of re-rendering of react element based on queueCounter and roomInfo. queueCounter and roomInfo cause the dom to re-render when call gets accepted @@ -1664,13 +1659,13 @@ This fix provides a way to re-initialise the rendering elements in VoIP user and calls this function on useEffect() if the re-render has happen. -- Regression: Prevent button from losing state when rerendering ([#24648](https://github.com/RocketChat/Rocket.Chat/pull/24648) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Prevent button from losing state when rerendering ([#24648](https://github.com/RocketChat/Rocket.Chat/pull/24648)) -- Regression: Prevent connect to asterisk when VoIP is disabled ([#24601](https://github.com/RocketChat/Rocket.Chat/pull/24601) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Prevent connect to asterisk when VoIP is disabled ([#24601](https://github.com/RocketChat/Rocket.Chat/pull/24601)) -- Regression: Queue counter aggregator for incoming/hanged calls ([#24635](https://github.com/RocketChat/Rocket.Chat/pull/24635) by [@amolghode1981](https://github.com/amolghode1981)) +- Regression: Queue counter aggregator for incoming/hanged calls ([#24635](https://github.com/RocketChat/Rocket.Chat/pull/24635)) -- Regression: Refresh server connection when MI server settings change ([#24649](https://github.com/RocketChat/Rocket.Chat/pull/24649) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Refresh server connection when MI server settings change ([#24649](https://github.com/RocketChat/Rocket.Chat/pull/24649)) - Regression: Server crashing if Voip credentials are invalid ([#24646](https://github.com/RocketChat/Rocket.Chat/pull/24646)) @@ -1680,37 +1675,37 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) - [@LucasFASouza](https://github.com/LucasFASouza) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@amolghode1981](https://github.com/amolghode1981) - [@aswinidev](https://github.com/aswinidev) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) -- [@felipe-rod123](https://github.com/felipe-rod123) -- [@filipemarins](https://github.com/filipemarins) -- [@guijun13](https://github.com/guijun13) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) - [@pedrogssouza](https://github.com/pedrogssouza) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@rique223](https://github.com/rique223) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@albuquerquefabio](https://github.com/albuquerquefabio) +- [@amolghode1981](https://github.com/amolghode1981) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) +- [@felipe-rod123](https://github.com/felipe-rod123) +- [@filipemarins](https://github.com/filipemarins) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@guijun13](https://github.com/guijun13) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@ujorgeleite](https://github.com/ujorgeleite) - [@yash-rajpal](https://github.com/yash-rajpal) @@ -1728,16 +1723,13 @@ - NPS never finishing sending results ([#25067](https://github.com/RocketChat/Rocket.Chat/pull/25067)) -- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Proxy settings being ignored ([#25022](https://github.com/RocketChat/Rocket.Chat/pull/25022)) Modify Meteor's `HTTP.call` to add back proxy support -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.4.2 @@ -1760,17 +1752,14 @@ - Chore: bump fuselage version ([#24453](https://github.com/RocketChat/Rocket.Chat/pull/24453)) -- Release 4.4.2 ([#24459](https://github.com/RocketChat/Rocket.Chat/pull/24459) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 4.4.2 ([#24459](https://github.com/RocketChat/Rocket.Chat/pull/24459))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.4.1 @@ -1791,7 +1780,7 @@ - Outgoing webhook without scripts not saving messages ([#24401](https://github.com/RocketChat/Rocket.Chat/pull/24401)) -- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407) by [@tassoevan](https://github.com/tassoevan)) +- Skip cloud steps for registered servers on setup wizard ([#24407](https://github.com/RocketChat/Rocket.Chat/pull/24407)) - Slash commands previews not working ([#24387](https://github.com/RocketChat/Rocket.Chat/pull/24387) by [@ostjen](https://github.com/ostjen)) @@ -1803,21 +1792,21 @@ 🔍 Minor changes -- Release 4.4.1 ([#24432](https://github.com/RocketChat/Rocket.Chat/pull/24432) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 4.4.1 ([#24432](https://github.com/RocketChat/Rocket.Chat/pull/24432) by [@ostjen](https://github.com/ostjen)) ### 👩‍💻👨‍💻 Contributors 😍 - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 4.4.0 `2022-01-28 · 4 🎉 · 13 🚀 · 29 🐛 · 44 🔍 · 34 👩‍💻👨‍💻` @@ -1831,9 +1820,9 @@ ### 🎉 New features -- **EE:** Allow to filter departments by Business Units on Livechat ([#24162](https://github.com/RocketChat/Rocket.Chat/pull/24162) by [@renatobecker](https://github.com/renatobecker)) +- **EE:** Allow to filter departments by Business Units on Livechat ([#24162](https://github.com/RocketChat/Rocket.Chat/pull/24162)) -- App empty states component, category filter and empty states error variation implementations ([#23818](https://github.com/RocketChat/Rocket.Chat/pull/23818) by [@rique223](https://github.com/rique223)) +- App empty states component, category filter and empty states error variation implementations ([#23818](https://github.com/RocketChat/Rocket.Chat/pull/23818)) Created and implemented the category filters component: Demo gif: @@ -1849,7 +1838,7 @@ - Apple Login ([#24060](https://github.com/RocketChat/Rocket.Chat/pull/24060)) -- Enabling emoji on custom status ([#24170](https://github.com/RocketChat/Rocket.Chat/pull/24170) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) +- Enabling emoji on custom status ([#24170](https://github.com/RocketChat/Rocket.Chat/pull/24170)) ### 🚀 Improvements @@ -1875,9 +1864,9 @@ ![Screen Shot 2022-01-13 at 13 38 59](https://user-images.githubusercontent.com/27704687/149371232-3d292f5e-e8b0-41e1-b065-90a80a5f08ce.png) ![Screen Shot 2022-01-13 at 13 39 08](https://user-images.githubusercontent.com/27704687/149371263-64fd09e4-456e-48ee-9976-83f42b90e4d9.png) -- Importer text for CSV upload file format ([#23817](https://github.com/RocketChat/Rocket.Chat/pull/23817) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- Importer text for CSV upload file format ([#23817](https://github.com/RocketChat/Rocket.Chat/pull/23817) by [@ostjen](https://github.com/ostjen)) -- lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen)) - On `statistics` object the property `get` is an async function now. - We need to collect additional data of feature activation through the statistics collector. @@ -1889,7 +1878,7 @@ ![image](https://user-images.githubusercontent.com/8591547/150033087-92721b76-9203-42fe-ac2e-5b9eca50edab.png) -- Rewrite AddWebdavAccountModal to React Component ([#24070](https://github.com/RocketChat/Rocket.Chat/pull/24070) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite AddWebdavAccountModal to React Component ([#24070](https://github.com/RocketChat/Rocket.Chat/pull/24070)) ### before ![image](https://user-images.githubusercontent.com/27704687/147777054-bf2f84e4-5226-4ebc-ab6e-287b83889b85.png) @@ -1897,11 +1886,11 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/147769132-2b938ae8-aba3-4230-876d-572e46268b9a.png) -- Rewrite Omnichannel Queue Page to React ([#24176](https://github.com/RocketChat/Rocket.Chat/pull/24176) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Rewrite Omnichannel Queue Page to React ([#24176](https://github.com/RocketChat/Rocket.Chat/pull/24176)) ![image](https://user-images.githubusercontent.com/17487063/149458880-03c201ab-11cd-4c71-82aa-51bd557d3b6e.png) -- Rewrite roomNotFound to React Component ([#24044](https://github.com/RocketChat/Rocket.Chat/pull/24044) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite roomNotFound to React Component ([#24044](https://github.com/RocketChat/Rocket.Chat/pull/24044)) ### before ![image](https://user-images.githubusercontent.com/27704687/147608307-468e6955-5db4-40c5-86a7-91448ac03427.png) @@ -1911,7 +1900,7 @@ ![image](https://user-images.githubusercontent.com/27704687/149158027-e39bc0a0-4c33-465b-83e0-873e558a037b.png) ![image](https://user-images.githubusercontent.com/27704687/149157692-3e73c0b4-1759-430c-b1c4-b521e47d774d.png) -- Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676) by [@tassoevan](https://github.com/tassoevan)) +- Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676)) This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: - A brand new visual design; @@ -1922,16 +1911,16 @@ ![Kapture 2022-01-20 at 11 19 47](https://user-images.githubusercontent.com/27704687/150356868-425666b4-511f-4690-9ce5-e61b839b1d19.gif) -- Show Channel Icons on Room Header & Info panels ([#24239](https://github.com/RocketChat/Rocket.Chat/pull/24239) by [@KevLehman](https://github.com/KevLehman)) +- Show Channel Icons on Room Header & Info panels ([#24239](https://github.com/RocketChat/Rocket.Chat/pull/24239)) Updates Omnichannel Header & room Info component to render the source info Built on top of https://github.com/RocketChat/Rocket.Chat/pull/24237 -- Throw 404 error in invalid endpoints ([#24053](https://github.com/RocketChat/Rocket.Chat/pull/24053) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Throw 404 error in invalid endpoints ([#24053](https://github.com/RocketChat/Rocket.Chat/pull/24053)) - Throw 404 error when trying to call invalid endpoints. -- Throw 404 error in invalid endpoints" ([#24118](https://github.com/RocketChat/Rocket.Chat/pull/24118) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Throw 404 error in invalid endpoints" ([#24118](https://github.com/RocketChat/Rocket.Chat/pull/24118)) ### 🐛 Bug fixes @@ -1944,15 +1933,15 @@ Introduction of new event `IPreEmailSent` was breaking the email function when the Apps-Engine framework was disabled in the administration -- **EE:** Agent cannot change status to Available despite being within open business hours ([#24112](https://github.com/RocketChat/Rocket.Chat/pull/24112) by [@KevLehman](https://github.com/KevLehman)) +- **EE:** Agent cannot change status to Available despite being within open business hours ([#24112](https://github.com/RocketChat/Rocket.Chat/pull/24112)) -- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142)) - Remove trailing slashes from Engagement Dashboard API requests; - App Framework Enable hanging indefinitely ([#24158](https://github.com/RocketChat/Rocket.Chat/pull/24158)) -- Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241) by [@thassiov](https://github.com/thassiov)) +- Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241)) Fixes: @@ -1963,11 +1952,11 @@ https://user-images.githubusercontent.com/733282/150420847-59bfcf8a-24a9-4dc5-8609-0d92dba38b70.mp4 -- Avoid updating all rooms with visitor abandonment queries ([#24252](https://github.com/RocketChat/Rocket.Chat/pull/24252) by [@KevLehman](https://github.com/KevLehman)) +- Avoid updating all rooms with visitor abandonment queries ([#24252](https://github.com/RocketChat/Rocket.Chat/pull/24252)) -- Change canned response model index to match other definition ([#24235](https://github.com/RocketChat/Rocket.Chat/pull/24235) by [@KevLehman](https://github.com/KevLehman)) +- Change canned response model index to match other definition ([#24235](https://github.com/RocketChat/Rocket.Chat/pull/24235)) -- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090)) - Update use of `setRealName` function to `_setRealName`. @@ -1987,19 +1976,19 @@ - Discussions not loading message history if not joined ([#24316](https://github.com/RocketChat/Rocket.Chat/pull/24316)) -- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096) by [@tassoevan](https://github.com/tassoevan)) +- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) It: - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. -- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) Right now, if we try to press enter for a new line on multi-line modal input... it auto triggers the submit event. This PR fixes this behaviour by not submitting the modal in case the enter was pressed within an input text with multiline expected -- Errors on advanced sync prevent LDAP users from logging in ([#23958](https://github.com/RocketChat/Rocket.Chat/pull/23958) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Errors on advanced sync prevent LDAP users from logging in ([#23958](https://github.com/RocketChat/Rocket.Chat/pull/23958) by [@ostjen](https://github.com/ostjen)) -- Filter ability for admin room checkboxes ([#23970](https://github.com/RocketChat/Rocket.Chat/pull/23970) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@sidmohanty11](https://github.com/sidmohanty11)) +- Filter ability for admin room checkboxes ([#23970](https://github.com/RocketChat/Rocket.Chat/pull/23970) by [@sidmohanty11](https://github.com/sidmohanty11)) Now, @@ -2011,11 +2000,11 @@ - Fixed broken links in setup wizard ([#24248](https://github.com/RocketChat/Rocket.Chat/pull/24248) by [@Himanshu664](https://github.com/Himanshu664)) -- Fixing the changing custom status behavior ([#24218](https://github.com/RocketChat/Rocket.Chat/pull/24218) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) +- Fixing the changing custom status behavior ([#24218](https://github.com/RocketChat/Rocket.Chat/pull/24218)) -- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068) by [@tassoevan](https://github.com/tassoevan)) +- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068)) -- Make canned responses popup dependent on Canned_responses_enabled setting ([#23804](https://github.com/RocketChat/Rocket.Chat/pull/23804) by [@KevLehman](https://github.com/KevLehman)) +- Make canned responses popup dependent on Canned_responses_enabled setting ([#23804](https://github.com/RocketChat/Rocket.Chat/pull/23804)) - MAU when using micro services ([#24204](https://github.com/RocketChat/Rocket.Chat/pull/24204)) @@ -2023,13 +2012,13 @@ - MongoError during startup saying "ns not found" ([#24015](https://github.com/RocketChat/Rocket.Chat/pull/24015)) -- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039) by [@KevLehman](https://github.com/KevLehman)) +- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039)) - Omnichannel enabled setting not working when creating rooms ([#24067](https://github.com/RocketChat/Rocket.Chat/pull/24067)) - openUserInfo not working after changing room types ([#24098](https://github.com/RocketChat/Rocket.Chat/pull/24098) by [@grahhnt](https://github.com/grahhnt)) -- Password error should not be shown when selecting set random password ([#21181](https://github.com/RocketChat/Rocket.Chat/pull/21181) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Password error should not be shown when selecting set random password ([#21181](https://github.com/RocketChat/Rocket.Chat/pull/21181)) We should not keep `password` as required field when we check set random password field. In this password should not be required @@ -2051,13 +2040,13 @@ - Bump follow-redirects from 1.14.5 to 1.14.7 in /ee/server/services ([#24182](https://github.com/RocketChat/Rocket.Chat/pull/24182) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: add script to fix code with prettier ([#24054](https://github.com/RocketChat/Rocket.Chat/pull/24054) by [@KevLehman](https://github.com/KevLehman)) +- Chore: add script to fix code with prettier ([#24054](https://github.com/RocketChat/Rocket.Chat/pull/24054)) -- Chore: Apply generics to infer types of useForm hook ([#22400](https://github.com/RocketChat/Rocket.Chat/pull/22400) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Apply generics to infer types of useForm hook ([#22400](https://github.com/RocketChat/Rocket.Chat/pull/22400)) - Chore: Bump fuselage hooks ([#24233](https://github.com/RocketChat/Rocket.Chat/pull/24233)) -- Chore: Bump Livechat package version to 1.12.0 ([#24232](https://github.com/RocketChat/Rocket.Chat/pull/24232) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Chore: Bump Livechat package version to 1.12.0 ([#24232](https://github.com/RocketChat/Rocket.Chat/pull/24232)) - Chore: Convert model LoginServiceConfiguration to raw ([#24187](https://github.com/RocketChat/Rocket.Chat/pull/24187)) @@ -2065,25 +2054,25 @@ - Chore: Include REG_TOKEN in docker-compose ([#24123](https://github.com/RocketChat/Rocket.Chat/pull/24123)) -- Chore: Migrate useOutsideClick to fuselage-hooks ([#24133](https://github.com/RocketChat/Rocket.Chat/pull/24133) by [@juliajforesti](https://github.com/juliajforesti)) +- Chore: Migrate useOutsideClick to fuselage-hooks ([#24133](https://github.com/RocketChat/Rocket.Chat/pull/24133)) -- Chore: Move `callbacks` to /lib ([#23456](https://github.com/RocketChat/Rocket.Chat/pull/23456) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Move `callbacks` to /lib ([#23456](https://github.com/RocketChat/Rocket.Chat/pull/23456)) It moves to `/lib`, migrates to TypeScript, and deprecates the `callbacks` API. - Chore: Prettier for us all ([#24000](https://github.com/RocketChat/Rocket.Chat/pull/24000)) -- Chore: Remove unused assets ([#24023](https://github.com/RocketChat/Rocket.Chat/pull/24023) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Remove unused assets ([#24023](https://github.com/RocketChat/Rocket.Chat/pull/24023)) - Chore: Removing hubot from docker-compose ([#23591](https://github.com/RocketChat/Rocket.Chat/pull/23591)) Remove hubot from docker-compose. This is forcing everyone to spin up Hubot every time they deploy Rocket.Chat and not that many people are using it. So we are wasting resources on peoples machines by forcing it -- Chore: Replace `isEmail` with `validateEmail` ([#24020](https://github.com/RocketChat/Rocket.Chat/pull/24020) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Replace `isEmail` with `validateEmail` ([#24020](https://github.com/RocketChat/Rocket.Chat/pull/24020)) Follows #23816. -- Chore: Replace Blaze templates ([#24165](https://github.com/RocketChat/Rocket.Chat/pull/24165) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Replace Blaze templates ([#24165](https://github.com/RocketChat/Rocket.Chat/pull/24165)) It replaces some templates used by login and invitation flows with React components. It also drops `main` template, allowing `appLayout` to just handle components now. @@ -2095,17 +2084,17 @@ - Chore: Update Apps-Engine version ([#24335](https://github.com/RocketChat/Rocket.Chat/pull/24335)) -- Chore: Update copyright notices ([#24022](https://github.com/RocketChat/Rocket.Chat/pull/24022) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Update copyright notices ([#24022](https://github.com/RocketChat/Rocket.Chat/pull/24022)) Update date range in copyright notices to `2015-2022`. -- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091)) - Chore: Update mem to 8.1.1 ([#23954](https://github.com/RocketChat/Rocket.Chat/pull/23954)) - Chore: Update Meteor to 2.5.3 ([#24075](https://github.com/RocketChat/Rocket.Chat/pull/24075)) -- Chore: Update Omnichannel widget version to 1.11.2 ([#24169](https://github.com/RocketChat/Rocket.Chat/pull/24169) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Chore: Update Omnichannel widget version to 1.11.2 ([#24169](https://github.com/RocketChat/Rocket.Chat/pull/24169)) - Chore: Update pino and pino-pretty ([#24242](https://github.com/RocketChat/Rocket.Chat/pull/24242)) @@ -2117,17 +2106,17 @@ - Merge master into develop & Set version to 4.4.0-develop ([#24049](https://github.com/RocketChat/Rocket.Chat/pull/24049)) -- Regression: Align Omni-Source icon sizes with designs ([#24269](https://github.com/RocketChat/Rocket.Chat/pull/24269) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Align Omni-Source icon sizes with designs ([#24269](https://github.com/RocketChat/Rocket.Chat/pull/24269)) -- Regression: Create migration to fix index issue at boot ([#24289](https://github.com/RocketChat/Rocket.Chat/pull/24289) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Create migration to fix index issue at boot ([#24289](https://github.com/RocketChat/Rocket.Chat/pull/24289)) - Regression: Discussion room crashing ([#24272](https://github.com/RocketChat/Rocket.Chat/pull/24272)) -- Regression: Enable custom emoji on admin custom status page ([#24186](https://github.com/RocketChat/Rocket.Chat/pull/24186) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) +- Regression: Enable custom emoji on admin custom status page ([#24186](https://github.com/RocketChat/Rocket.Chat/pull/24186)) - Regression: Fix Alpine release tag ([#24259](https://github.com/RocketChat/Rocket.Chat/pull/24259)) -- Regression: Fix Default Business hour overriding other Business Hours ([#24288](https://github.com/RocketChat/Rocket.Chat/pull/24288) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Fix Default Business hour overriding other Business Hours ([#24288](https://github.com/RocketChat/Rocket.Chat/pull/24288)) - Regression: Fix handling of http requests in apps bridge ([#24211](https://github.com/RocketChat/Rocket.Chat/pull/24211)) @@ -2141,11 +2130,11 @@ To maintain compatibility, we forced an empty body whenever we have a GET or HEAD request. This was probably the case previously, with the body of requests made with this methods being ignored either before being sent or in the third party server receiving the request -- Regression: Fix OmnichannelAppSourceRoomIcon sizes ([#24322](https://github.com/RocketChat/Rocket.Chat/pull/24322) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Fix OmnichannelAppSourceRoomIcon sizes ([#24322](https://github.com/RocketChat/Rocket.Chat/pull/24322)) - Regression: Fix pino child log levels ([#24302](https://github.com/RocketChat/Rocket.Chat/pull/24302)) -- Regression: Remove extra call to `useOutsideClick` hook not following the function signature ([#24243](https://github.com/RocketChat/Rocket.Chat/pull/24243) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove extra call to `useOutsideClick` hook not following the function signature ([#24243](https://github.com/RocketChat/Rocket.Chat/pull/24243)) It migrates `client/sidebar/header/actions/Search` component to TypeScript and mitigates a invalid call to `Array.prototype.every`: @@ -2163,32 +2152,24 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) - [@Himanshu664](https://github.com/Himanshu664) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@arshxyz](https://github.com/arshxyz) - [@aswinidev](https://github.com/aswinidev) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@eduardofcabrera](https://github.com/eduardofcabrera) - [@grahhnt](https://github.com/grahhnt) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@mbreslein-thd](https://github.com/mbreslein-thd) - [@nishant23122000](https://github.com/nishant23122000) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@rique223](https://github.com/rique223) - [@sidmohanty11](https://github.com/sidmohanty11) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@KevLehman](https://github.com/KevLehman) - [@LuluGO](https://github.com/LuluGO) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@albuquerquefabio](https://github.com/albuquerquefabio) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) @@ -2196,9 +2177,17 @@ - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.3.3 @@ -2243,17 +2232,17 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- **ENTERPRISE:** Leading slashes in Engagement Dashboard API requests ([#24142](https://github.com/RocketChat/Rocket.Chat/pull/24142)) - Remove trailing slashes from Engagement Dashboard API requests; - App Framework Enable hanging indefinitely ([#24158](https://github.com/RocketChat/Rocket.Chat/pull/24158)) -- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CSV Importer failing to import users ([#24090](https://github.com/RocketChat/Rocket.Chat/pull/24090)) - Update use of `setRealName` function to `_setRealName`. -- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068) by [@tassoevan](https://github.com/tassoevan)) +- Integration section crashing opening in My Account ([#24068](https://github.com/RocketChat/Rocket.Chat/pull/24068)) - Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) @@ -2268,9 +2257,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@gronke](https://github.com/gronke) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 @@ -2278,7 +2264,10 @@ - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.3.1 @@ -2301,17 +2290,17 @@ Introduction of new event `IPreEmailSent` was breaking the email function when the Apps-Engine framework was disabled in the administration -- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096) by [@tassoevan](https://github.com/tassoevan)) +- Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) It: - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. -- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) Right now, if we try to press enter for a new line on multi-line modal input... it auto triggers the submit event. This PR fixes this behaviour by not submitting the modal in case the enter was pressed within an input text with multiline expected -- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039) by [@KevLehman](https://github.com/KevLehman)) +- Omnichannel Current chats pagination not working ([#24039](https://github.com/RocketChat/Rocket.Chat/pull/24039)) - Omnichannel enabled setting not working when creating rooms ([#24067](https://github.com/RocketChat/Rocket.Chat/pull/24067)) @@ -2319,21 +2308,18 @@ 🔍 Minor changes -- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat to 1.11.1 ([#24091](https://github.com/RocketChat/Rocket.Chat/pull/24091)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) - [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@d-gubert](https://github.com/d-gubert) - [@murtaza98](https://github.com/murtaza98) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) # 4.3.0 `2021-12-28 · 7 🎉 · 5 🚀 · 26 🐛 · 37 🔍 · 28 👩‍💻👨‍💻` @@ -2351,7 +2337,7 @@ Introduces a new event called before an email is sent by the Mailer. Apps can intercept and modify the email that will be sent, or even prevent it from being sent altogether. For more details, check https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/461/files#diff-301e8a58164edbf315da2a43c4923f153dbc909573de1e60aa9f730f7488ac82 -- **APPS:** Allow apps to open contextual bar ([#23843](https://github.com/RocketChat/Rocket.Chat/pull/23843) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Allow apps to open contextual bar ([#23843](https://github.com/RocketChat/Rocket.Chat/pull/23843)) Opens a contextual bar using app ui interactions (`CONTEXTUAL_BAR_OPEN`) @@ -2368,22 +2354,22 @@ Add an optional param named `closer` into `LivechatBridge.closeRoom` so that it will be possible to close the room and send a close room message with the correct room closer. If the param is not passed, use the room visitor as the room closer. -- **EE:** Introduce fallback department support ([#23939](https://github.com/RocketChat/Rocket.Chat/pull/23939) by [@KevLehman](https://github.com/KevLehman)) +- **EE:** Introduce fallback department support ([#23939](https://github.com/RocketChat/Rocket.Chat/pull/23939)) -- Show Omnichannel room icon based on source definition ([#23912](https://github.com/RocketChat/Rocket.Chat/pull/23912) by [@AllanPazRibeiro](https://github.com/AllanPazRibeiro)) +- Show Omnichannel room icon based on source definition ([#23912](https://github.com/RocketChat/Rocket.Chat/pull/23912)) ### 🚀 Improvements -- Allow e-mail channel to be used without default department. ([#23945](https://github.com/RocketChat/Rocket.Chat/pull/23945) by [@cauefcr](https://github.com/cauefcr)) +- Allow e-mail channel to be used without default department. ([#23945](https://github.com/RocketChat/Rocket.Chat/pull/23945)) Due to a missing condition in the e-mail input processing, Rocket.Chat was unable to receive e-mails from e-mail channels that did not have a default department. -- Omnichannel Visitor Endpoints error handling ([#23819](https://github.com/RocketChat/Rocket.Chat/pull/23819) by [@KevLehman](https://github.com/KevLehman)) +- Omnichannel Visitor Endpoints error handling ([#23819](https://github.com/RocketChat/Rocket.Chat/pull/23819)) -- Replace SortListItem and CreateListItem with ListItem ([#24007](https://github.com/RocketChat/Rocket.Chat/pull/24007) by [@juliajforesti](https://github.com/juliajforesti)) +- Replace SortListItem and CreateListItem with ListItem ([#24007](https://github.com/RocketChat/Rocket.Chat/pull/24007)) -- Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879)) - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); - Remove outdated translations (for this setting's description). @@ -2395,7 +2381,7 @@ ### 🐛 Bug fixes -- Add CSP to authorize auto-close of CAS login window ([#23215](https://github.com/RocketChat/Rocket.Chat/pull/23215) by [@goyome](https://github.com/goyome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Add CSP to authorize auto-close of CAS login window ([#23215](https://github.com/RocketChat/Rocket.Chat/pull/23215) by [@goyome](https://github.com/goyome)) Add the hash of the JS inside the page that won't close ( window.close(); ) @@ -2405,7 +2391,7 @@ - Broken links present in some languages ([#23987](https://github.com/RocketChat/Rocket.Chat/pull/23987) by [@aswinidev](https://github.com/aswinidev)) -- Changes on department agents should mark form as dirty ([#19640](https://github.com/RocketChat/Rocket.Chat/pull/19640) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Changes on department agents should mark form as dirty ([#19640](https://github.com/RocketChat/Rocket.Chat/pull/19640) by [@rafaelblink](https://github.com/rafaelblink)) - creating room with federated member ([#23347](https://github.com/RocketChat/Rocket.Chat/pull/23347) by [@qwertiko](https://github.com/qwertiko)) @@ -2419,7 +2405,7 @@ - Email notifications settings not being honored on new DMs ([#23574](https://github.com/RocketChat/Rocket.Chat/pull/23574) by [@ostjen](https://github.com/ostjen)) -- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859)) - Fix `usersInRole` array used to send email to activate a user. @@ -2450,7 +2436,7 @@ - Fix Jitsi timeout update -- which caused the "Jitsi call already ended" error when trying to join a call some time after its creation; -- LDAP Sync doing nothing when set to only import new users. ([#23823](https://github.com/RocketChat/Rocket.Chat/pull/23823) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP Sync doing nothing when set to only import new users. ([#23823](https://github.com/RocketChat/Rocket.Chat/pull/23823)) - Missing custom user status ellipsis ([#23831](https://github.com/RocketChat/Rocket.Chat/pull/23831)) @@ -2483,7 +2469,7 @@ Removing edit message from messageBox and local storage on messageBox destroyed. -- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796) by [@tassoevan](https://github.com/tassoevan)) +- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796)) Upgrades `sharp` to avoid a segmentation fault on CentOS 7 during startup related to `sharp.node` being loaded via `process.dlopen()`. @@ -2497,7 +2483,7 @@ Derived from PR https://github.com/RocketChat/Rocket.Chat/pull/19238 -- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861) by [@rique223](https://github.com/rique223)) +- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861)) This PR solves a bug on the marketplace that was happening with WhatsApp where it was displaying a trial button even though it didn't have a free trial period. The new verification I've added checks if the app is subscription-based and then checks if it has 0 trial days in all of its tiers. If it does, it shows a subscribe button. If it doesn't, it displays a trial button. Also, I've exposed the itsEnterpriseOnly flag as an extra measure in the case of apps like Facebook Messenger that are enterprise-only and consequently should show the subscribe button. Before: @@ -2523,23 +2509,23 @@ - Chore: added last login to users.list ([#23846](https://github.com/RocketChat/Rocket.Chat/pull/23846) by [@ostjen](https://github.com/ostjen)) -- Chore: Bump fuselage 0.31.0 ([#24046](https://github.com/RocketChat/Rocket.Chat/pull/24046) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Bump fuselage 0.31.0 ([#24046](https://github.com/RocketChat/Rocket.Chat/pull/24046)) -- Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816)) - Create lib for validating emails - Modify places that validate emails to use the new central function - Chore: Change Menu props to accept next fuselage version ([#23839](https://github.com/RocketChat/Rocket.Chat/pull/23839)) -- Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822)) - Create NPM script to add new migrations - TODO: Infer next migration number from file list - Chore: Deleted LivechatPageVisited ([#23993](https://github.com/RocketChat/Rocket.Chat/pull/23993) by [@ostjen](https://github.com/ostjen)) -- Chore: Enable prefer-optional-chain ESLint rule for TypeScript files ([#23786](https://github.com/RocketChat/Rocket.Chat/pull/23786) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Enable prefer-optional-chain ESLint rule for TypeScript files ([#23786](https://github.com/RocketChat/Rocket.Chat/pull/23786)) > Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted. > The more code you have, the more places there are for bugs to hide. The longer checkouts or compiles take. The longer it takes a new employee to make sense of your system. If you have to refactor there's more stuff to move around. @@ -2571,19 +2557,19 @@ - Chore: Fix hasRole warning ([#23914](https://github.com/RocketChat/Rocket.Chat/pull/23914)) -- Chore: Remove the `mobile-download-file` permission ([#23996](https://github.com/RocketChat/Rocket.Chat/pull/23996) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Chore: Remove the `mobile-download-file` permission ([#23996](https://github.com/RocketChat/Rocket.Chat/pull/23996)) - Remove the `mobile-download-file` permission and its descriptions. -- Chore: Replace new typography ([#23756](https://github.com/RocketChat/Rocket.Chat/pull/23756) by [@juliajforesti](https://github.com/juliajforesti)) +- Chore: Replace new typography ([#23756](https://github.com/RocketChat/Rocket.Chat/pull/23756)) -- Chore: Replace typography ([#24021](https://github.com/RocketChat/Rocket.Chat/pull/24021) by [@juliajforesti](https://github.com/juliajforesti)) +- Chore: Replace typography ([#24021](https://github.com/RocketChat/Rocket.Chat/pull/24021)) - Chore: Update Apps-Engine to latest ([#24045](https://github.com/RocketChat/Rocket.Chat/pull/24045)) - Chore: update docker image base to latest node 12 patch ([#23875](https://github.com/RocketChat/Rocket.Chat/pull/23875)) -- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913)) - Chore: Update pino deps ([#23922](https://github.com/RocketChat/Rocket.Chat/pull/23922)) @@ -2603,7 +2589,7 @@ Add a migration to add source property to all the omnichannel rooms which don't have it yet. All these rooms will have source type as `other` -- Regression: Add optional chaining to possibly undefined fields ([#24033](https://github.com/RocketChat/Rocket.Chat/pull/24033) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Add optional chaining to possibly undefined fields ([#24033](https://github.com/RocketChat/Rocket.Chat/pull/24033)) - Regression: addAction verification breaking rooms ([#24019](https://github.com/RocketChat/Rocket.Chat/pull/24019)) @@ -2615,17 +2601,17 @@ - Regression: Fix omnichannel empty source usage ([#24008](https://github.com/RocketChat/Rocket.Chat/pull/24008)) -- Regression: Let Meteor.absoluteUrl.defaultOptions.rootUrl as baseURI ([#24009](https://github.com/RocketChat/Rocket.Chat/pull/24009) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Let Meteor.absoluteUrl.defaultOptions.rootUrl as baseURI ([#24009](https://github.com/RocketChat/Rocket.Chat/pull/24009)) - Regression: Missing padding in popover with custom template ([#23877](https://github.com/RocketChat/Rocket.Chat/pull/23877)) ![Screen Shot 2021-12-06 at 14 16 40](https://user-images.githubusercontent.com/27704687/144891474-a5bf982e-56af-46df-b472-adf9d999ce02.png) -- Regression: Remove dangling console.log ([#24034](https://github.com/RocketChat/Rocket.Chat/pull/24034) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove dangling console.log ([#24034](https://github.com/RocketChat/Rocket.Chat/pull/24034)) A empty array have been printed to console due to a promise chained to `console.log` and `console.error` calls, probably for debugging purposes. -- Regression: Remove self from fallback departments dropdown ([#24018](https://github.com/RocketChat/Rocket.Chat/pull/24018) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Remove self from fallback departments dropdown ([#24018](https://github.com/RocketChat/Rocket.Chat/pull/24018)) - Regression: Toolbox render item ([#23862](https://github.com/RocketChat/Rocket.Chat/pull/23862)) @@ -2633,36 +2619,36 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aswinidev](https://github.com/aswinidev) -- [@cauefcr](https://github.com/cauefcr) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@goyome](https://github.com/goyome) -- [@juliajforesti](https://github.com/juliajforesti) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@qwertiko](https://github.com/qwertiko) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@rique223](https://github.com/rique223) - [@sidmohanty11](https://github.com/sidmohanty11) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@AllanPazRibeiro](https://github.com/AllanPazRibeiro) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@cauefcr](https://github.com/cauefcr) - [@d-gubert](https://github.com/d-gubert) - [@debdutdeb](https://github.com/debdutdeb) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@juliajforesti](https://github.com/juliajforesti) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) +- [@rique223](https://github.com/rique223) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.2.2 @@ -2707,11 +2693,11 @@ ### 🐛 Bug fixes -- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Error when creating an inactive user in admin panel ([#23859](https://github.com/RocketChat/Rocket.Chat/pull/23859)) - Fix `usersInRole` array used to send email to activate a user. -- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796) by [@tassoevan](https://github.com/tassoevan)) +- Segmentation fault on CentOS 7 due to outdated `sharp` ([#23796](https://github.com/RocketChat/Rocket.Chat/pull/23796)) Upgrades `sharp` to avoid a segmentation fault on CentOS 7 during startup related to `sharp.node` being loaded via `process.dlopen()`. @@ -2719,7 +2705,7 @@ - teams.removeMembers client usage ([#23857](https://github.com/RocketChat/Rocket.Chat/pull/23857)) -- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861) by [@rique223](https://github.com/rique223)) +- Wrong button for non trial apps ([#23861](https://github.com/RocketChat/Rocket.Chat/pull/23861)) This PR solves a bug on the marketplace that was happening with WhatsApp where it was displaying a trial button even though it didn't have a free trial period. The new verification I've added checks if the app is subscription-based and then checks if it has 0 trial days in all of its tiers. If it does, it shows a subscribe button. If it doesn't, it displays a trial button. Also, I've exposed the itsEnterpriseOnly flag as an extra measure in the case of apps like Facebook Messenger that are enterprise-only and consequently should show the subscribe button. Before: @@ -2731,26 +2717,23 @@ 🔍 Minor changes -- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat ([#23913](https://github.com/RocketChat/Rocket.Chat/pull/23913)) -- Release 4.2.1 ([#23917](https://github.com/RocketChat/Rocket.Chat/pull/23917) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@rique223](https://github.com/rique223) & [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Release 4.2.1 ([#23917](https://github.com/RocketChat/Rocket.Chat/pull/23917)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@dougfabris](https://github.com/dougfabris) +- [@ggazzo](https://github.com/ggazzo) - [@matheusbsilva137](https://github.com/matheusbsilva137) - [@rique223](https://github.com/rique223) +- [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) - [@tiagoevanp](https://github.com/tiagoevanp) -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@dougfabris](https://github.com/dougfabris) -- [@ggazzo](https://github.com/ggazzo) -- [@sampaiodiego](https://github.com/sampaiodiego) - # 4.2.0 `2021-11-30 · 9 🎉 · 7 🚀 · 26 🐛 · 27 🔍 · 24 👩‍💻👨‍💻` @@ -2763,7 +2746,7 @@ ### 🎉 New features -- Allow Omnichannel statistics to be collected. ([#23694](https://github.com/RocketChat/Rocket.Chat/pull/23694) by [@cauefcr](https://github.com/cauefcr)) +- Allow Omnichannel statistics to be collected. ([#23694](https://github.com/RocketChat/Rocket.Chat/pull/23694)) This PR adds the possibility for business stakeholders to see what is actually being used of the Omnichannel integrations. @@ -2779,24 +2762,24 @@ - Permission for download/uploading files on mobile ([#23686](https://github.com/RocketChat/Rocket.Chat/pull/23686) by [@ostjen](https://github.com/ostjen)) -- Permissions for interacting with Omnichannel Contact Center ([#23389](https://github.com/RocketChat/Rocket.Chat/pull/23389) by [@cauefcr](https://github.com/cauefcr)) +- Permissions for interacting with Omnichannel Contact Center ([#23389](https://github.com/RocketChat/Rocket.Chat/pull/23389)) Adds a new permission, one that allows for control over user access to Omnichannel Contact Center, - Rate limiting for user registering ([#23732](https://github.com/RocketChat/Rocket.Chat/pull/23732) by [@ostjen](https://github.com/ostjen)) -- REST endpoints to manage Omnichannel Business Units ([#23750](https://github.com/RocketChat/Rocket.Chat/pull/23750) by [@KevLehman](https://github.com/KevLehman)) +- REST endpoints to manage Omnichannel Business Units ([#23750](https://github.com/RocketChat/Rocket.Chat/pull/23750)) Basic documentation about endpoints can be found at https://www.postman.com/kaleman960/workspace/rocketchat-public-api/request/3865466-71502450-8c8f-42b4-8954-1cd3d01fcb0c -- Show on-hold metrics on analytics pages and current chats ([#23498](https://github.com/RocketChat/Rocket.Chat/pull/23498) by [@KevLehman](https://github.com/KevLehman)) +- Show on-hold metrics on analytics pages and current chats ([#23498](https://github.com/RocketChat/Rocket.Chat/pull/23498)) ### 🚀 Improvements - Allow override of default department for SMS Livechat sessions ([#23626](https://github.com/RocketChat/Rocket.Chat/pull/23626) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547) by [@tassoevan](https://github.com/tassoevan)) +- Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547)) - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); @@ -2824,11 +2807,11 @@ Since the endpoint supports both, department ID and department Name, so we're renaming it to reflect the same. `departmentName` -> `department` -- Reduce complexity in some functions ([#23387](https://github.com/RocketChat/Rocket.Chat/pull/23387) by [@tassoevan](https://github.com/tassoevan)) +- Reduce complexity in some functions ([#23387](https://github.com/RocketChat/Rocket.Chat/pull/23387)) Overhauls all places where eslint's `complexity` rule is disabled. -- Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735) by [@tassoevan](https://github.com/tassoevan)) +- Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735)) It: - Adds stricter types for `API`; @@ -2842,19 +2825,19 @@ - "to users" not working in export message ([#23576](https://github.com/RocketChat/Rocket.Chat/pull/23576) by [@ostjen](https://github.com/ostjen)) -- **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588)) - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); - Fix "Merge Roles" and "Channel Mapping" not being performed/updated on OAuth login. -- **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673)) - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; - Update "Channels" tab name to "Rooms". -- **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703) by [@KevLehman](https://github.com/KevLehman)) +- **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703)) -- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608)) - App update flow failing in HA setups ([#23607](https://github.com/RocketChat/Rocket.Chat/pull/23607)) @@ -2872,7 +2855,7 @@ Removed "generic" autofocus on sidenav template. -- Await promise to handle error when attempting to transfer a room ([#23739](https://github.com/RocketChat/Rocket.Chat/pull/23739) by [@KevLehman](https://github.com/KevLehman)) +- Await promise to handle error when attempting to transfer a room ([#23739](https://github.com/RocketChat/Rocket.Chat/pull/23739)) - broken avatar preview when changing avatar ([#23659](https://github.com/RocketChat/Rocket.Chat/pull/23659) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) @@ -2880,43 +2863,43 @@ - Fix typo in FR translation ([#23711](https://github.com/RocketChat/Rocket.Chat/pull/23711) by [@Cormoran96](https://github.com/Cormoran96)) -- Fixed E2E default room settings not being honoured ([#23468](https://github.com/RocketChat/Rocket.Chat/pull/23468) by [@TheDigitalEagle](https://github.com/TheDigitalEagle) & [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- Fixed E2E default room settings not being honoured ([#23468](https://github.com/RocketChat/Rocket.Chat/pull/23468) by [@TheDigitalEagle](https://github.com/TheDigitalEagle) & [@ostjen](https://github.com/ostjen)) -- LDAP users being disabled when an AD security policy is enabled ([#23820](https://github.com/RocketChat/Rocket.Chat/pull/23820) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP users being disabled when an AD security policy is enabled ([#23820](https://github.com/RocketChat/Rocket.Chat/pull/23820)) -- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627)) - Missing user roles in edit user tab ([#23734](https://github.com/RocketChat/Rocket.Chat/pull/23734)) -- New specific endpoint for contactChatHistoryMessages with right permissions ([#23533](https://github.com/RocketChat/Rocket.Chat/pull/23533) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- New specific endpoint for contactChatHistoryMessages with right permissions ([#23533](https://github.com/RocketChat/Rocket.Chat/pull/23533)) Anyone with 'View Omnichannel Rooms' permission can see the History Messages. -- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487)) - Add a migration to update the `Accounts_Default_User_Preferences_pushNotifications` setting's value to the `Accounts_Default_User_Preferences_mobileNotifications` setting's value; - Remove the `Accounts_Default_User_Preferences_mobileNotifications` setting (replaced by `Accounts_Default_User_Preferences_pushNotifications`); - Rename 'mobileNotifications' user's preference to 'pushNotifications'. -- Omnichannel business hours page breaking navigation ([#23595](https://github.com/RocketChat/Rocket.Chat/pull/23595) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Omnichannel business hours page breaking navigation ([#23595](https://github.com/RocketChat/Rocket.Chat/pull/23595) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) -- Omnichannel contact center navigation ([#23691](https://github.com/RocketChat/Rocket.Chat/pull/23691) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Omnichannel contact center navigation ([#23691](https://github.com/RocketChat/Rocket.Chat/pull/23691)) Derives from: https://github.com/RocketChat/Rocket.Chat/pull/23656 This PR includes a different approach to solving navigation problems following the same code structure and UI definitions of other "ActionButtons" components in Sidebar. -- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587) by [@KevLehman](https://github.com/KevLehman)) +- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587)) - Omnichannel webhooks can't be saved ([#23641](https://github.com/RocketChat/Rocket.Chat/pull/23641) by [@Aman-Maheshwari](https://github.com/Aman-Maheshwari)) -- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661) by [@renatobecker](https://github.com/renatobecker)) +- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661)) -- PhotoSwipe crashing on show ([#23499](https://github.com/RocketChat/Rocket.Chat/pull/23499) by [@tassoevan](https://github.com/tassoevan)) +- PhotoSwipe crashing on show ([#23499](https://github.com/RocketChat/Rocket.Chat/pull/23499)) Waits for initial content to load before showing it. -- Prevent UserAction.addStream without Subscription ([#23705](https://github.com/RocketChat/Rocket.Chat/pull/23705) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Prevent UserAction.addStream without Subscription ([#23705](https://github.com/RocketChat/Rocket.Chat/pull/23705)) When you take an Omnichannel chat from queue, the guest's typing information will appear. @@ -2926,19 +2909,19 @@ 🔍 Minor changes -- Chore: add `no-bidi` rule ([#23695](https://github.com/RocketChat/Rocket.Chat/pull/23695) by [@KevLehman](https://github.com/KevLehman)) +- Chore: add `no-bidi` rule ([#23695](https://github.com/RocketChat/Rocket.Chat/pull/23695)) -- Chore: add index on appId + associations for apps_persistence collection ([#23675](https://github.com/RocketChat/Rocket.Chat/pull/23675) by [@KevLehman](https://github.com/KevLehman)) +- Chore: add index on appId + associations for apps_persistence collection ([#23675](https://github.com/RocketChat/Rocket.Chat/pull/23675)) -- Chore: Api definitions ([#23701](https://github.com/RocketChat/Rocket.Chat/pull/23701) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Api definitions ([#23701](https://github.com/RocketChat/Rocket.Chat/pull/23701)) -- Chore: Bump Rocket.Chat@livechat to 1.10 ([#23768](https://github.com/RocketChat/Rocket.Chat/pull/23768) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Bump Rocket.Chat@livechat to 1.10 ([#23768](https://github.com/RocketChat/Rocket.Chat/pull/23768)) - Chore: Convert Fiber models to async Step 1 ([#23633](https://github.com/RocketChat/Rocket.Chat/pull/23633)) - Chore: Generic Table ([#23745](https://github.com/RocketChat/Rocket.Chat/pull/23745)) -- Chore: Mocha testing configuration ([#23706](https://github.com/RocketChat/Rocket.Chat/pull/23706) by [@KevLehman](https://github.com/KevLehman) & [@tassoevan](https://github.com/tassoevan)) +- Chore: Mocha testing configuration ([#23706](https://github.com/RocketChat/Rocket.Chat/pull/23706)) We've been writing integration tests for the REST API quite regularly, but we can't say the same for UI-related modules. This PR is based on the assumption that _improving the developer experience on writing tests_ would increase our coverage and promote the adoption even for newcomers. @@ -2962,7 +2945,7 @@ - Enable JSX support on our default Babel configuration; - Adopt [testing library](https://testing-library.com/). -- Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452)) - Move all external module declarations (definitions and augmentations) to `/definition/externals`; - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; @@ -2970,9 +2953,9 @@ - Chore: Remove duplicated 'name' key from rate limiter logs ([#23771](https://github.com/RocketChat/Rocket.Chat/pull/23771)) -- Chore: Remove useCallbacks ([#23696](https://github.com/RocketChat/Rocket.Chat/pull/23696) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Remove useCallbacks ([#23696](https://github.com/RocketChat/Rocket.Chat/pull/23696)) -- Chore: Type omnichannel models ([#23758](https://github.com/RocketChat/Rocket.Chat/pull/23758) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Type omnichannel models ([#23758](https://github.com/RocketChat/Rocket.Chat/pull/23758)) - Chore: Update settings.ts ([#23769](https://github.com/RocketChat/Rocket.Chat/pull/23769)) @@ -2984,7 +2967,7 @@ - Regression: Units endpoint to TS ([#23757](https://github.com/RocketChat/Rocket.Chat/pull/23757)) -- Regression: "When is the chat busier" and "Users by time of day" charts are not working ([#23815](https://github.com/RocketChat/Rocket.Chat/pull/23815) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: "When is the chat busier" and "Users by time of day" charts are not working ([#23815](https://github.com/RocketChat/Rocket.Chat/pull/23815)) - Fix "When is the chat busier" (Hours) and "Users by time of day" charts, which weren't displaying any data; @@ -2992,7 +2975,7 @@ - Regression: Add trash to raw models ([#23774](https://github.com/RocketChat/Rocket.Chat/pull/23774)) -- Regression: Current Chats not Filtering ([#23803](https://github.com/RocketChat/Rocket.Chat/pull/23803) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Current Chats not Filtering ([#23803](https://github.com/RocketChat/Rocket.Chat/pull/23803)) - Regression: Fix incorrect API path for livechat calls ([#23778](https://github.com/RocketChat/Rocket.Chat/pull/23778)) @@ -3000,7 +2983,7 @@ - Regression: Fix sendMessagesToAdmins not in Fiber ([#23770](https://github.com/RocketChat/Rocket.Chat/pull/23770)) -- Regression: Fix sort param on omnichannel endpoints ([#23789](https://github.com/RocketChat/Rocket.Chat/pull/23789) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Fix sort param on omnichannel endpoints ([#23789](https://github.com/RocketChat/Rocket.Chat/pull/23789)) - Regression: Improve AggregationCursor types ([#23692](https://github.com/RocketChat/Rocket.Chat/pull/23692)) @@ -3018,29 +3001,29 @@ - [@Cormoran96](https://github.com/Cormoran96) - [@Deepak-learner](https://github.com/Deepak-learner) - [@Jeanstaquet](https://github.com/Jeanstaquet) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@TheDigitalEagle](https://github.com/TheDigitalEagle) - [@bhardwajaditya](https://github.com/bhardwajaditya) -- [@cauefcr](https://github.com/cauefcr) - [@dhruvjain99](https://github.com/dhruvjain99) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@cauefcr](https://github.com/cauefcr) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) # 4.1.2 `2021-11-08 · 3 🐛 · 3 👩‍💻👨‍💻` @@ -3054,17 +3037,17 @@ ### 🐛 Bug fixes -- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Notifications are not being filtered ([#23487](https://github.com/RocketChat/Rocket.Chat/pull/23487)) - Add a migration to update the `Accounts_Default_User_Preferences_pushNotifications` setting's value to the `Accounts_Default_User_Preferences_mobileNotifications` setting's value; - Remove the `Accounts_Default_User_Preferences_mobileNotifications` setting (replaced by `Accounts_Default_User_Preferences_pushNotifications`); - Rename 'mobileNotifications' user's preference to 'pushNotifications'. -- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587) by [@KevLehman](https://github.com/KevLehman)) +- Omnichannel status being changed on page refresh ([#23587](https://github.com/RocketChat/Rocket.Chat/pull/23587)) -- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661) by [@renatobecker](https://github.com/renatobecker)) +- Performance issues when running Omnichannel job queue dispatcher ([#23661](https://github.com/RocketChat/Rocket.Chat/pull/23661)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) - [@matheusbsilva137](https://github.com/matheusbsilva137) @@ -3082,23 +3065,20 @@ ### 🐛 Bug fixes -- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Advanced LDAP Sync Features ([#23608](https://github.com/RocketChat/Rocket.Chat/pull/23608)) - App update flow failing in HA setups ([#23607](https://github.com/RocketChat/Rocket.Chat/pull/23607)) The flow for app updates is broken in specific scenarios with HA setups. Here we change the method calls in the Apps-Engine to avoid race conditions -- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP users not being re-activated on login ([#23627](https://github.com/RocketChat/Rocket.Chat/pull/23627)) - Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.1.0 @@ -3122,14 +3102,14 @@ Added markdown to custom fields to render links -- Allow Omnichannel to handle huge queues ([#23392](https://github.com/RocketChat/Rocket.Chat/pull/23392) by [@KevLehman](https://github.com/KevLehman)) +- Allow Omnichannel to handle huge queues ([#23392](https://github.com/RocketChat/Rocket.Chat/pull/23392)) - Make Livechat Instructions setting multi-line ([#23515](https://github.com/RocketChat/Rocket.Chat/pull/23515)) Since now we're supporting markdown text on this field (via this PR - https://github.com/RocketChat/Rocket.Chat.Livechat/pull/648), it would be nice to make this setting multiline so users can have more space to edit the text ![image](https://user-images.githubusercontent.com/34130764/138146712-13e4968b-5312-4d53-b44c-b5699c5e49c1.png) -- optimized groups.listAll response time ([#22941](https://github.com/RocketChat/Rocket.Chat/pull/22941) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- optimized groups.listAll response time ([#22941](https://github.com/RocketChat/Rocket.Chat/pull/22941) by [@ostjen](https://github.com/ostjen)) groups.listAll endpoint was having performance issues, specially when the total number of groups was high. This happened because the endpoint was loading all objects in memory then using splice to paginate, instead of paginating beforehand. @@ -3144,14 +3124,14 @@ ### 🐛 Bug fixes -- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. - **ENTERPRISE:** Omnichannel agent is not leaving the room when a forwarded chat is queued ([#23404](https://github.com/RocketChat/Rocket.Chat/pull/23404)) -- Admins can't update or reset user avatars when the "Allow User Avatar Change" setting is off ([#23228](https://github.com/RocketChat/Rocket.Chat/pull/23228) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- Admins can't update or reset user avatars when the "Allow User Avatar Change" setting is off ([#23228](https://github.com/RocketChat/Rocket.Chat/pull/23228)) - Allow admins (or any other user with the `edit-other-user-avatar` permission) to update or reset user avatars even when the "Allow User Avatar Change" setting is off. @@ -3165,13 +3145,13 @@ Fixes BigBlueButton integration -- Delay start of email inbox ([#23521](https://github.com/RocketChat/Rocket.Chat/pull/23521) by [@KevLehman](https://github.com/KevLehman)) +- Delay start of email inbox ([#23521](https://github.com/RocketChat/Rocket.Chat/pull/23521)) - imported migration v240 ([#23374](https://github.com/RocketChat/Rocket.Chat/pull/23374) by [@ostjen](https://github.com/ostjen)) - LDAP not stoping after wrong password ([#23382](https://github.com/RocketChat/Rocket.Chat/pull/23382)) -- Markdown quote message style ([#23462](https://github.com/RocketChat/Rocket.Chat/pull/23462) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Markdown quote message style ([#23462](https://github.com/RocketChat/Rocket.Chat/pull/23462)) Before: ![image](https://user-images.githubusercontent.com/17487063/137496669-3abecab4-cf90-45cb-8b1b-d9411a5682dd.png) @@ -3183,7 +3163,7 @@ - MongoDB deprecation link ([#23381](https://github.com/RocketChat/Rocket.Chat/pull/23381)) -- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541)) - Omni-Webhook's retry mechanism going in infinite loop ([#23394](https://github.com/RocketChat/Rocket.Chat/pull/23394)) @@ -3191,7 +3171,7 @@ Whenever the Routing system setting changes, and omnichannel is disabled, then we shouldn't start the queue. -- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522) by [@KevLehman](https://github.com/KevLehman)) +- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522)) - Read only description in team creation ([#23213](https://github.com/RocketChat/Rocket.Chat/pull/23213)) @@ -3201,24 +3181,24 @@ - resumeToken not working ([#23379](https://github.com/RocketChat/Rocket.Chat/pull/23379)) -- Rewrite missing webRTC feature ([#23172](https://github.com/RocketChat/Rocket.Chat/pull/23172) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite missing webRTC feature ([#23172](https://github.com/RocketChat/Rocket.Chat/pull/23172)) -- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event; -- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473) by [@KevLehman](https://github.com/KevLehman)) +- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) -- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen)) -- useEndpointAction replace by useEndpointActionExperimental ([#23469](https://github.com/RocketChat/Rocket.Chat/pull/23469) by [@tiagoevanp](https://github.com/tiagoevanp)) +- useEndpointAction replace by useEndpointActionExperimental ([#23469](https://github.com/RocketChat/Rocket.Chat/pull/23469)) - user/agent upload not working via Apps Engine after 3.16.0 ([#23393](https://github.com/RocketChat/Rocket.Chat/pull/23393)) Fixes #22974 -- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378)) - Update `roles` and `type` fields only if they are specified in the data imported from LDAP (otherwise, no changes are applied). @@ -3232,25 +3212,25 @@ - Chore: clean README ([#23342](https://github.com/RocketChat/Rocket.Chat/pull/23342) by [@AbhJ](https://github.com/AbhJ)) -- Chore: Document REST API endpoints (banners) ([#23361](https://github.com/RocketChat/Rocket.Chat/pull/23361) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Document REST API endpoints (banners) ([#23361](https://github.com/RocketChat/Rocket.Chat/pull/23361)) Describes endpoints for banners on REST API using a JSDoc annotation compatible with OpenAPI spec. -- Chore: Document REST API endpoints (DNS) ([#23405](https://github.com/RocketChat/Rocket.Chat/pull/23405) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Document REST API endpoints (DNS) ([#23405](https://github.com/RocketChat/Rocket.Chat/pull/23405)) Describes endpoints for DNS on REST API using a JSDoc annotation compatible with OpenAPI spec. -- Chore: Document REST API endpoints (E2E) ([#23430](https://github.com/RocketChat/Rocket.Chat/pull/23430) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Document REST API endpoints (E2E) ([#23430](https://github.com/RocketChat/Rocket.Chat/pull/23430)) Describes endpoints for end-to-end encryption on REST API using a JSDoc annotation compatible with OpenAPI spec. -- Chore: Document REST API endpoints (Misc) ([#23428](https://github.com/RocketChat/Rocket.Chat/pull/23428) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Document REST API endpoints (Misc) ([#23428](https://github.com/RocketChat/Rocket.Chat/pull/23428)) Describes miscellaneous endpoints on REST API using a JSDoc annotation compatible with OpenAPI spec. - Chore: Ensure all permissions are created up to this point ([#23514](https://github.com/RocketChat/Rocket.Chat/pull/23514)) -- Chore: Fix some TS warnings ([#23524](https://github.com/RocketChat/Rocket.Chat/pull/23524) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Fix some TS warnings ([#23524](https://github.com/RocketChat/Rocket.Chat/pull/23524)) - Chore: Fixed a Typo in 11-admin.js test ([#23355](https://github.com/RocketChat/Rocket.Chat/pull/23355) by [@badbart](https://github.com/badbart)) @@ -3258,31 +3238,31 @@ Just prevent to perform 200 deletions for registers that not even exist -- Chore: Make omnichannel settings dependent on omnichannel being enabled ([#23495](https://github.com/RocketChat/Rocket.Chat/pull/23495) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Make omnichannel settings dependent on omnichannel being enabled ([#23495](https://github.com/RocketChat/Rocket.Chat/pull/23495)) -- Chore: Migrate some React components/hooks to TypeScript ([#23370](https://github.com/RocketChat/Rocket.Chat/pull/23370) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Migrate some React components/hooks to TypeScript ([#23370](https://github.com/RocketChat/Rocket.Chat/pull/23370)) Just low-hanging fruits. -- Chore: Move `addMinutesToADate` helper ([#23490](https://github.com/RocketChat/Rocket.Chat/pull/23490) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Move `addMinutesToADate` helper ([#23490](https://github.com/RocketChat/Rocket.Chat/pull/23490)) -- Chore: Move `isEmail` helper ([#23489](https://github.com/RocketChat/Rocket.Chat/pull/23489) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Move `isEmail` helper ([#23489](https://github.com/RocketChat/Rocket.Chat/pull/23489)) -- Chore: Move `isJSON` helper ([#23491](https://github.com/RocketChat/Rocket.Chat/pull/23491) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Move `isJSON` helper ([#23491](https://github.com/RocketChat/Rocket.Chat/pull/23491)) -- Chore: Move components away from /app/ ([#23360](https://github.com/RocketChat/Rocket.Chat/pull/23360) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Move components away from /app/ ([#23360](https://github.com/RocketChat/Rocket.Chat/pull/23360)) We currently do NOT recommend placing React components under `/app`. -- Chore: Partially migrate 2FA client code to TypeScript ([#23419](https://github.com/RocketChat/Rocket.Chat/pull/23419) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Partially migrate 2FA client code to TypeScript ([#23419](https://github.com/RocketChat/Rocket.Chat/pull/23419)) Additionally, hides `toastr` behind an module to handle UI's toast notifications. -- Chore: Remove dangling README file ([#23385](https://github.com/RocketChat/Rocket.Chat/pull/23385) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Remove dangling README file ([#23385](https://github.com/RocketChat/Rocket.Chat/pull/23385)) Removes the elderly `server/restapi/README.md`. -- Chore: Replace `promises` helper ([#23488](https://github.com/RocketChat/Rocket.Chat/pull/23488) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Replace `promises` helper ([#23488](https://github.com/RocketChat/Rocket.Chat/pull/23488)) - Chore: Startup Time ([#23210](https://github.com/RocketChat/Rocket.Chat/pull/23210)) @@ -3298,23 +3278,23 @@ - Chore: Update Apps-Engine version ([#23375](https://github.com/RocketChat/Rocket.Chat/pull/23375)) -- Chore: Update Livechat Package ([#23523](https://github.com/RocketChat/Rocket.Chat/pull/23523) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat Package ([#23523](https://github.com/RocketChat/Rocket.Chat/pull/23523)) - Chore: Update pino and pino-pretty ([#23510](https://github.com/RocketChat/Rocket.Chat/pull/23510)) -- Chore: Upgrade Storybook ([#23364](https://github.com/RocketChat/Rocket.Chat/pull/23364) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Upgrade Storybook ([#23364](https://github.com/RocketChat/Rocket.Chat/pull/23364)) -- i18n: Language update from LingoHub 🤖 on 2021-10-18Z ([#23486](https://github.com/RocketChat/Rocket.Chat/pull/23486) by [@KevLehman](https://github.com/KevLehman)) +- i18n: Language update from LingoHub 🤖 on 2021-10-18Z ([#23486](https://github.com/RocketChat/Rocket.Chat/pull/23486)) - Merge master into develop & Set version to 4.1.0-develop ([#23362](https://github.com/RocketChat/Rocket.Chat/pull/23362)) -- Regression: Debounce call based on params on omnichannel queue dispatch ([#23577](https://github.com/RocketChat/Rocket.Chat/pull/23577) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Debounce call based on params on omnichannel queue dispatch ([#23577](https://github.com/RocketChat/Rocket.Chat/pull/23577)) - Regression: Fix enterprise setting validation ([#23519](https://github.com/RocketChat/Rocket.Chat/pull/23519)) - Regression: Fix user typings style ([#23511](https://github.com/RocketChat/Rocket.Chat/pull/23511)) -- Regression: Mail body contains `undefined` text ([#23552](https://github.com/RocketChat/Rocket.Chat/pull/23552) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Mail body contains `undefined` text ([#23552](https://github.com/RocketChat/Rocket.Chat/pull/23552)) ### Before ![image](https://user-images.githubusercontent.com/2263066/138733018-10449892-5c2d-46fb-9355-00e98e0d6c9f.png) @@ -3326,11 +3306,11 @@ - Regression: Prevent Settings Unit Test Error ([#23506](https://github.com/RocketChat/Rocket.Chat/pull/23506)) -- Regression: Routing method not available when called from listeners at startup ([#23568](https://github.com/RocketChat/Rocket.Chat/pull/23568) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Routing method not available when called from listeners at startup ([#23568](https://github.com/RocketChat/Rocket.Chat/pull/23568)) - Regression: Settings order ([#23528](https://github.com/RocketChat/Rocket.Chat/pull/23528)) -- Regression: Waiting_queue setting not being applied due to missing module key ([#23531](https://github.com/RocketChat/Rocket.Chat/pull/23531) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Waiting_queue setting not being applied due to missing module key ([#23531](https://github.com/RocketChat/Rocket.Chat/pull/23531)) - Regression: watchByRegex without Fibers ([#23529](https://github.com/RocketChat/Rocket.Chat/pull/23529)) @@ -3342,29 +3322,29 @@ - [@AbhJ](https://github.com/AbhJ) - [@Aman-Maheshwari](https://github.com/Aman-Maheshwari) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@badbart](https://github.com/badbart) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@dependabot[bot]](https://github.com/dependabot[bot]) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Sing-Li](https://github.com/Sing-Li) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 4.0.5 @@ -3379,22 +3359,19 @@ ### 🐛 Bug fixes -- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- OAuth login not working on mobile app ([#23541](https://github.com/RocketChat/Rocket.Chat/pull/23541))
🔍 Minor changes -- Release 4.0.5 ([#23554](https://github.com/RocketChat/Rocket.Chat/pull/23554) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 4.0.5 ([#23554](https://github.com/RocketChat/Rocket.Chat/pull/23554))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 4.0.4 @@ -3409,9 +3386,9 @@ ### 🐛 Bug fixes -- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522) by [@KevLehman](https://github.com/KevLehman)) +- Queue error handling and unlocking behavior ([#23522](https://github.com/RocketChat/Rocket.Chat/pull/23522)) -- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event; @@ -3420,18 +3397,15 @@ 🔍 Minor changes -- Release 4.0.4 ([#23532](https://github.com/RocketChat/Rocket.Chat/pull/23532) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Release 4.0.4 ([#23532](https://github.com/RocketChat/Rocket.Chat/pull/23532)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) - [@matheusbsilva137](https://github.com/matheusbsilva137) - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@sampaiodiego](https://github.com/sampaiodiego) # 4.0.3 @@ -3446,29 +3420,26 @@ ### 🐛 Bug fixes -- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. -- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473) by [@KevLehman](https://github.com/KevLehman)) +- Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473))
🔍 Minor changes -- Release 4.0.3 ([#23496](https://github.com/RocketChat/Rocket.Chat/pull/23496) by [@KevLehman](https://github.com/KevLehman) & [@thassiov](https://github.com/thassiov)) +- Release 4.0.3 ([#23496](https://github.com/RocketChat/Rocket.Chat/pull/23496))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@KevLehman](https://github.com/KevLehman) -- [@thassiov](https://github.com/thassiov) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@thassiov](https://github.com/thassiov) # 4.0.2 `2021-10-14 · 4 🐛 · 1 🔍 · 3 👩‍💻👨‍💻` @@ -3535,9 +3506,9 @@ - resumeToken not working ([#23379](https://github.com/RocketChat/Rocket.Chat/pull/23379)) -- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- unwanted toastr error message when deleting user ([#23372](https://github.com/RocketChat/Rocket.Chat/pull/23372) by [@ostjen](https://github.com/ostjen)) -- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Users' `roles` and `type` being reset to default on LDAP DataSync ([#23378](https://github.com/RocketChat/Rocket.Chat/pull/23378)) - Update `roles` and `type` fields only if they are specified in the data imported from LDAP (otherwise, no changes are applied). @@ -3547,22 +3518,22 @@ - Chore: Update Apps-Engine version ([#23375](https://github.com/RocketChat/Rocket.Chat/pull/23375)) -- Release 4.0.1 ([#23386](https://github.com/RocketChat/Rocket.Chat/pull/23386) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen) & [@wolbernd](https://github.com/wolbernd)) +- Release 4.0.1 ([#23386](https://github.com/RocketChat/Rocket.Chat/pull/23386) by [@ostjen](https://github.com/ostjen) & [@wolbernd](https://github.com/wolbernd)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) -- [@tassoevan](https://github.com/tassoevan) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 4.0.0 `2021-10-01 · 15 ️️️⚠️ · 4 🎉 · 11 🚀 · 24 🐛 · 67 🔍 · 26 👩‍💻👨‍💻` @@ -3576,33 +3547,33 @@ ### ⚠️ BREAKING CHANGES -- **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013)) - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; - Split the data in multiple CSV files. -- **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014)) - Fix CSV file downloaded in the Engagement Dashboard's New Users section; - Add column headers to the CSV file downloaded from the Engagement Dashboard's New Users section. -- **ENTERPRISE:** Missing headers in CSV files downloaded from the Engagement Dashboard ([#23223](https://github.com/RocketChat/Rocket.Chat/pull/23223) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- **ENTERPRISE:** Missing headers in CSV files downloaded from the Engagement Dashboard ([#23223](https://github.com/RocketChat/Rocket.Chat/pull/23223)) - Add headers to all CSV files downloaded from the "Messages" and "Channels" tabs from the Engagement Dashboard; - Add headers to the CSV file downloaded from the "Users by time of day" section (in the "Users" tab). -- LDAP Refactoring ([#23171](https://github.com/RocketChat/Rocket.Chat/pull/23171) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP Refactoring ([#23171](https://github.com/RocketChat/Rocket.Chat/pull/23171)) -- Moved advanced oAuth features to EE ([#23201](https://github.com/RocketChat/Rocket.Chat/pull/23201) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Moved advanced oAuth features to EE ([#23201](https://github.com/RocketChat/Rocket.Chat/pull/23201) by [@ostjen](https://github.com/ostjen)) -- Moved role-sync and advanced SAML settings to EE ([#23107](https://github.com/RocketChat/Rocket.Chat/pull/23107) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Moved role-sync and advanced SAML settings to EE ([#23107](https://github.com/RocketChat/Rocket.Chat/pull/23107) by [@ostjen](https://github.com/ostjen)) - Moved SAML custom field map to EE ([#23319](https://github.com/RocketChat/Rocket.Chat/pull/23319) by [@ostjen](https://github.com/ostjen)) - Remove cordova compatibility setting ([#23302](https://github.com/RocketChat/Rocket.Chat/pull/23302) by [@ostjen](https://github.com/ostjen)) -- Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162) by [@tassoevan](https://github.com/tassoevan)) +- Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162)) The following REST endpoints were removed: @@ -3627,7 +3598,7 @@ This aims to clean up the code, since upgrades jumping 2 major versions are too risky and hard to maintain, we'll keep only migration from that last major (in this case 3.x). -- Remove patch info from endpoint /api/info for non-logged in users ([#16050](https://github.com/RocketChat/Rocket.Chat/pull/16050) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- Remove patch info from endpoint /api/info for non-logged in users ([#16050](https://github.com/RocketChat/Rocket.Chat/pull/16050)) - Removed support of MongoDB 3.4; Deprecated MongoDB 3.6 and 4.0 ([#22907](https://github.com/RocketChat/Rocket.Chat/pull/22907) by [@ostjen](https://github.com/ostjen)) @@ -3650,17 +3621,17 @@ ### 🎉 New features -- **APPS:** Get livechat's room transcript via bridge method ([#22985](https://github.com/RocketChat/Rocket.Chat/pull/22985) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Get livechat's room transcript via bridge method ([#22985](https://github.com/RocketChat/Rocket.Chat/pull/22985)) Adds a new method for retrieving a room's transcript via a new method in the Livechat bridge - Add activity indicators for Uploading and Recording using new API; Support thread context; Deprecate the old typing API ([#22392](https://github.com/RocketChat/Rocket.Chat/pull/22392) by [@sumukhah](https://github.com/sumukhah)) -- Omnichannel source identification fields ([#23090](https://github.com/RocketChat/Rocket.Chat/pull/23090) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Omnichannel source identification fields ([#23090](https://github.com/RocketChat/Rocket.Chat/pull/23090)) This PR adds new fields to the room schema that aids in the identification of the source that created an Omnichannel room, which can be either via livechat widget, SMS, app, etc. -- Seats Cap ([#23017](https://github.com/RocketChat/Rocket.Chat/pull/23017) by [@g-thome](https://github.com/g-thome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Seats Cap ([#23017](https://github.com/RocketChat/Rocket.Chat/pull/23017) by [@g-thome](https://github.com/g-thome)) - Adding New Members - Awareness of seats usage while adding new members @@ -3684,7 +3655,7 @@ ### 🚀 Improvements -- **APPS:** New storage strategy for Apps-Engine file packages ([#22657](https://github.com/RocketChat/Rocket.Chat/pull/22657) by [@thassiov](https://github.com/thassiov)) +- **APPS:** New storage strategy for Apps-Engine file packages ([#22657](https://github.com/RocketChat/Rocket.Chat/pull/22657)) This is an enabler for our initiative to support NPM packages in the Apps-Engine. @@ -3692,23 +3663,23 @@ When we allow apps to include NPM packages, the size of the App package itself will be potentially _very large_ (I'm looking at you `node_modules`). Thus we'll be changing the strategy to store apps either with GridFS or the host's File System itself. -- **APPS:** Return task ids when using the scheduler api ([#23023](https://github.com/RocketChat/Rocket.Chat/pull/23023) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Return task ids when using the scheduler api ([#23023](https://github.com/RocketChat/Rocket.Chat/pull/23023)) In the methods that create tasks (`scheduleRecurring` and `scheduleOnce`) return the `id` of the document created in the database so the user can cancel each task individually. - Add missing pt-BR translations, fix typos and unify language ([#23176](https://github.com/RocketChat/Rocket.Chat/pull/23176) by [@gabrieloliverio](https://github.com/gabrieloliverio)) -- Better text for auth banner ([#23256](https://github.com/RocketChat/Rocket.Chat/pull/23256) by [@g-thome](https://github.com/g-thome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Better text for auth banner ([#23256](https://github.com/RocketChat/Rocket.Chat/pull/23256) by [@g-thome](https://github.com/g-thome)) Change the text in the banner warning for auth changes -- Canned response admin settings ([#23190](https://github.com/RocketChat/Rocket.Chat/pull/23190) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Canned response admin settings ([#23190](https://github.com/RocketChat/Rocket.Chat/pull/23190)) - Change log format to JSON ([#22975](https://github.com/RocketChat/Rocket.Chat/pull/22975)) -- Change occurences of Livechat to Omnichannel in ES translations were applicable ([#23199](https://github.com/RocketChat/Rocket.Chat/pull/23199) by [@KevLehman](https://github.com/KevLehman)) +- Change occurences of Livechat to Omnichannel in ES translations were applicable ([#23199](https://github.com/RocketChat/Rocket.Chat/pull/23199)) -- Do not re-create General room on every server start ([#22957](https://github.com/RocketChat/Rocket.Chat/pull/22957) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Do not re-create General room on every server start ([#22957](https://github.com/RocketChat/Rocket.Chat/pull/22957)) - Check the `Show_Setup_Wizard` Setting's value to control whether the general room should be created. This channel will only be created if the `Show_Setup_Wizard` Setting is 'pending'. @@ -3718,42 +3689,42 @@ - Throw error if no appId is provided to useUIKitHandleAction ([#23221](https://github.com/RocketChat/Rocket.Chat/pull/23221)) -- Use PaginatedSelectFiltered in department edition ([#23054](https://github.com/RocketChat/Rocket.Chat/pull/23054) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Use PaginatedSelectFiltered in department edition ([#23054](https://github.com/RocketChat/Rocket.Chat/pull/23054)) ### 🐛 Bug fixes -- "Parent channel or group" search in discussions' creation throws "Unexpected end of JSON input" error ([#23076](https://github.com/RocketChat/Rocket.Chat/pull/23076) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- "Parent channel or group" search in discussions' creation throws "Unexpected end of JSON input" error ([#23076](https://github.com/RocketChat/Rocket.Chat/pull/23076)) - Use `encodeURIComponent()` to encode values received by `_generateQueryFromParams()`. -- "Read Only" and "Allow Reacting" system messages are missing in rooms ([#23037](https://github.com/RocketChat/Rocket.Chat/pull/23037) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen)) +- "Read Only" and "Allow Reacting" system messages are missing in rooms ([#23037](https://github.com/RocketChat/Rocket.Chat/pull/23037) by [@ostjen](https://github.com/ostjen)) - Add system message to notify changes on the **"Read Only"** setting; - Add system message to notify changes on the **"Allow Reacting"** setting; - Fix "Allow Reacting" setting's description (updated from "Only authorized users can write new messages" to "Only authorized users can react to messages"). ![system-messages](https://user-images.githubusercontent.com/36537004/130883527-9eb47fcd-c8e5-41fb-af34-5d99bd0a6780.PNG) -- Add check before placing chat on-hold to confirm that contact sent last message ([#23053](https://github.com/RocketChat/Rocket.Chat/pull/23053) by [@KevLehman](https://github.com/KevLehman)) +- Add check before placing chat on-hold to confirm that contact sent last message ([#23053](https://github.com/RocketChat/Rocket.Chat/pull/23053)) -- Add missing custom fields to apps' users converter ([#21176](https://github.com/RocketChat/Rocket.Chat/pull/21176) by [@casalsgh](https://github.com/casalsgh) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@thassiov](https://github.com/thassiov)) +- Add missing custom fields to apps' users converter ([#21176](https://github.com/RocketChat/Rocket.Chat/pull/21176) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Avoid bots to be marked as unavailable when log off/login ([#23262](https://github.com/RocketChat/Rocket.Chat/pull/23262) by [@KevLehman](https://github.com/KevLehman)) +- Avoid bots to be marked as unavailable when log off/login ([#23262](https://github.com/RocketChat/Rocket.Chat/pull/23262)) -- Can't edit profile information if any field update setting is disabled ([#23110](https://github.com/RocketChat/Rocket.Chat/pull/23110) by [@casalsgh](https://github.com/casalsgh) & [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Can't edit profile information if any field update setting is disabled ([#23110](https://github.com/RocketChat/Rocket.Chat/pull/23110)) - Check which fields have been updated before throwing errors in `validateUserEditing`. -- Inaccurate use of 'Mobile notifications' instead of 'Push notifications' in i18n strings ([#22978](https://github.com/RocketChat/Rocket.Chat/pull/22978) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@ostjen](https://github.com/ostjen)) +- Inaccurate use of 'Mobile notifications' instead of 'Push notifications' in i18n strings ([#22978](https://github.com/RocketChat/Rocket.Chat/pull/22978) by [@ostjen](https://github.com/ostjen)) - Fix inaccurate use of 'Mobile notifications' (which is misleading in German) by 'Push notifications'; - Update `'Notification_Mobile_Default_For'` key to `'Notification_Push_Default_For'` (and text to 'Send Push Notifications For' for English Language); - Update `'Accounts_Default_User_Preferences_mobileNotifications'` key to `'Accounts_Default_User_Preferences_pushNotifications'`; - Update `'Mobile_Notifications_Default_Alert'` key to `'Mobile_Push_Notifications_Default_Alert'`; -- Logging out from other clients ([#23276](https://github.com/RocketChat/Rocket.Chat/pull/23276) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Logging out from other clients ([#23276](https://github.com/RocketChat/Rocket.Chat/pull/23276)) -- Mark agents as unavailable when they logout ([#23219](https://github.com/RocketChat/Rocket.Chat/pull/23219) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Mark agents as unavailable when they logout ([#23219](https://github.com/RocketChat/Rocket.Chat/pull/23219)) - Modals is cutting pixels of the content ([#23243](https://github.com/RocketChat/Rocket.Chat/pull/23243)) @@ -3762,9 +3733,9 @@ - Omnichannel On hold chats being forwarded to offline agents ([#23185](https://github.com/RocketChat/Rocket.Chat/pull/23185)) -- Omnichannel transcript button without user's email ([#23150](https://github.com/RocketChat/Rocket.Chat/pull/23150) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Omnichannel transcript button without user's email ([#23150](https://github.com/RocketChat/Rocket.Chat/pull/23150)) -- Prevent users to edit an existing role when adding a new one with the same name used before. ([#22407](https://github.com/RocketChat/Rocket.Chat/pull/22407) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Prevent users to edit an existing role when adding a new one with the same name used before. ([#22407](https://github.com/RocketChat/Rocket.Chat/pull/22407) by [@lucassartor](https://github.com/lucassartor)) ### before ![Peek 2021-07-13 16-31](https://user-images.githubusercontent.com/27704687/125513721-953d84f4-1c95-45ca-80e1-b00992b874f6.gif) @@ -3772,16 +3743,16 @@ ### after ![Peek 2021-07-13 16-34](https://user-images.githubusercontent.com/27704687/125514098-91ee8014-51e5-4c62-9027-5538acf57d08.gif) -- Remove doubled "Canned Responses" strings ([#23056](https://github.com/RocketChat/Rocket.Chat/pull/23056) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- Remove doubled "Canned Responses" strings ([#23056](https://github.com/RocketChat/Rocket.Chat/pull/23056)) - Remove doubled canned response setting introduced in #22703 (by setting id change); - Update "Canned Responses" keys to "Canned_Responses". -- Remove margin from quote inside quote ([#21779](https://github.com/RocketChat/Rocket.Chat/pull/21779) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Remove margin from quote inside quote ([#21779](https://github.com/RocketChat/Rocket.Chat/pull/21779)) ![image](https://user-images.githubusercontent.com/17487063/116253926-4a89e600-a747-11eb-9172-f2ed1245fa1b.png) -- Save department agents ([#23209](https://github.com/RocketChat/Rocket.Chat/pull/23209) by [@KevLehman](https://github.com/KevLehman) & [@casalsgh](https://github.com/casalsgh) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Save department agents ([#23209](https://github.com/RocketChat/Rocket.Chat/pull/23209)) - Sidebar not closing when clicking in Home or Directory on mobile view ([#23218](https://github.com/RocketChat/Rocket.Chat/pull/23218)) @@ -3791,7 +3762,7 @@ ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) - remove useSidebarClose hook -- Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261) by [@KevLehman](https://github.com/KevLehman)) +- Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261)) - Add missing key logs - Stop queue (and logs) when livechat is disabled or when routing method does not support queue @@ -3799,15 +3770,15 @@ - Toolbox click not working on Safari(iOS) ([#23244](https://github.com/RocketChat/Rocket.Chat/pull/23244)) -- transfer message when tranferring room by Apps Engine ([#23074](https://github.com/RocketChat/Rocket.Chat/pull/23074) by [@KevLehman](https://github.com/KevLehman) & [@cuonghuunguyen](https://github.com/cuonghuunguyen)) +- transfer message when tranferring room by Apps Engine ([#23074](https://github.com/RocketChat/Rocket.Chat/pull/23074) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) - Update bugsnag package ([#23104](https://github.com/RocketChat/Rocket.Chat/pull/23104)) -- User list not being updated after creation/deletion of user ([#23032](https://github.com/RocketChat/Rocket.Chat/pull/23032) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- User list not being updated after creation/deletion of user ([#23032](https://github.com/RocketChat/Rocket.Chat/pull/23032) by [@ostjen](https://github.com/ostjen)) -- Wrap canned-responses endpoints with ee license ([#23204](https://github.com/RocketChat/Rocket.Chat/pull/23204) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Wrap canned-responses endpoints with ee license ([#23204](https://github.com/RocketChat/Rocket.Chat/pull/23204)) -- Wrong docs link on Omni-Webhook page ([#23117](https://github.com/RocketChat/Rocket.Chat/pull/23117) by [@KevLehman](https://github.com/KevLehman)) +- Wrong docs link on Omni-Webhook page ([#23117](https://github.com/RocketChat/Rocket.Chat/pull/23117))
🔍 Minor changes @@ -3855,33 +3826,33 @@ - Bump xml-crypto from 2.1.2 to 2.1.3 ([#23141](https://github.com/RocketChat/Rocket.Chat/pull/23141) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Chore: Change Ubuntu version to 20.04 on all GitHub Actions ([#23200](https://github.com/RocketChat/Rocket.Chat/pull/23200) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Change Ubuntu version to 20.04 on all GitHub Actions ([#23200](https://github.com/RocketChat/Rocket.Chat/pull/23200)) -- Chore: client endpoints typings ([#23152](https://github.com/RocketChat/Rocket.Chat/pull/23152) by [@tassoevan](https://github.com/tassoevan)) +- Chore: client endpoints typings ([#23152](https://github.com/RocketChat/Rocket.Chat/pull/23152)) -- Chore: Convert VerticalBar component to typescript ([#22542](https://github.com/RocketChat/Rocket.Chat/pull/22542) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Convert VerticalBar component to typescript ([#22542](https://github.com/RocketChat/Rocket.Chat/pull/22542)) - Chore: Environmental variable for marketplace url ([#22922](https://github.com/RocketChat/Rocket.Chat/pull/22922)) - Chore: Make SMTP empty on docker-compose so registration won't hang out of the box ([#23255](https://github.com/RocketChat/Rocket.Chat/pull/23255)) -- Chore: Move client helpers ([#23178](https://github.com/RocketChat/Rocket.Chat/pull/23178) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Move client helpers ([#23178](https://github.com/RocketChat/Rocket.Chat/pull/23178)) Moves helper modules under `app/` to `client/lib/utils/`. -- Chore: Re-enable session tests on local after removal of mongo-unit ([#23263](https://github.com/RocketChat/Rocket.Chat/pull/23263) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Re-enable session tests on local after removal of mongo-unit ([#23263](https://github.com/RocketChat/Rocket.Chat/pull/23263)) - Chore: Remove non-used dependencies ([#23109](https://github.com/RocketChat/Rocket.Chat/pull/23109)) - Chore: Remove wrong usages of `Meteor.wrapAsync` ([#23079](https://github.com/RocketChat/Rocket.Chat/pull/23079)) -- Chore: Update Livechat widget to 1.9.4 ([#23198](https://github.com/RocketChat/Rocket.Chat/pull/23198) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat widget to 1.9.4 ([#23198](https://github.com/RocketChat/Rocket.Chat/pull/23198)) - Chore: Update pino and pino-pretty ([#23269](https://github.com/RocketChat/Rocket.Chat/pull/23269)) - Chore: Update pino and pino-pretty ([#23157](https://github.com/RocketChat/Rocket.Chat/pull/23157)) -- Chore: Upgrade limax ([#23187](https://github.com/RocketChat/Rocket.Chat/pull/23187) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Upgrade limax ([#23187](https://github.com/RocketChat/Rocket.Chat/pull/23187)) Upgrades `limax` for faster slugify algorithm. @@ -3893,20 +3864,20 @@ - Merge master into develop & Set version to 4.0.0 ([#23086](https://github.com/RocketChat/Rocket.Chat/pull/23086)) -- Regression: "Join" button not working ([#23320](https://github.com/RocketChat/Rocket.Chat/pull/23320) by [@tassoevan](https://github.com/tassoevan)) +- Regression: "Join" button not working ([#23320](https://github.com/RocketChat/Rocket.Chat/pull/23320)) -- Regression: `renderEmoji` helper referred as a template ([#23212](https://github.com/RocketChat/Rocket.Chat/pull/23212) by [@tassoevan](https://github.com/tassoevan)) +- Regression: `renderEmoji` helper referred as a template ([#23212](https://github.com/RocketChat/Rocket.Chat/pull/23212)) -- Regression: Add default value when no cookies are present ([#23318](https://github.com/RocketChat/Rocket.Chat/pull/23318) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Add default value when no cookies are present ([#23318](https://github.com/RocketChat/Rocket.Chat/pull/23318)) -- Regression: Blank screen in Jitsi video calls ([#23322](https://github.com/RocketChat/Rocket.Chat/pull/23322) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: Blank screen in Jitsi video calls ([#23322](https://github.com/RocketChat/Rocket.Chat/pull/23322)) - Fix Jitsi calls being disposed even when "Open in new window" setting is disabled; - Fix misspelling on `CallJitsWithData.js` file name. - Regression: Create new loggers based on server log level ([#23297](https://github.com/RocketChat/Rocket.Chat/pull/23297)) -- Regression: Fix app storage migration ([#23286](https://github.com/RocketChat/Rocket.Chat/pull/23286) by [@thassiov](https://github.com/thassiov)) +- Regression: Fix app storage migration ([#23286](https://github.com/RocketChat/Rocket.Chat/pull/23286)) The previous version of this migration didn't take into consideration apps that were installed prior to [Rocket.Chat@3.8.0](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.8.0), which [removed the typescript compiler from the server](https://github.com/RocketChat/Rocket.Chat/pull/18687) and into the CLI. As a result, the zip files inside each installed app's document in the database had typescript files in them instead of the now required javascript files. @@ -3916,33 +3887,33 @@ - Regression: Fix Bugsnag not started error ([#23308](https://github.com/RocketChat/Rocket.Chat/pull/23308)) -- Regression: Fix channel icons on queue ([#23304](https://github.com/RocketChat/Rocket.Chat/pull/23304) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix channel icons on queue ([#23304](https://github.com/RocketChat/Rocket.Chat/pull/23304)) -- Regression: Fix user registration stuck ([#23254](https://github.com/RocketChat/Rocket.Chat/pull/23254) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Fix user registration stuck ([#23254](https://github.com/RocketChat/Rocket.Chat/pull/23254)) - Regression: Fix view logs admin screen ([#23194](https://github.com/RocketChat/Rocket.Chat/pull/23194)) -- Regression: invalid `call` import ([#23328](https://github.com/RocketChat/Rocket.Chat/pull/23328) by [@tassoevan](https://github.com/tassoevan)) +- Regression: invalid `call` import ([#23328](https://github.com/RocketChat/Rocket.Chat/pull/23328)) -- Regression: invalid `call` import ([#23334](https://github.com/RocketChat/Rocket.Chat/pull/23334) by [@tassoevan](https://github.com/tassoevan)) +- Regression: invalid `call` import ([#23334](https://github.com/RocketChat/Rocket.Chat/pull/23334)) -- Regression: LDAP Channel/Role Sync not working ([#23311](https://github.com/RocketChat/Rocket.Chat/pull/23311) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: LDAP Channel/Role Sync not working ([#23311](https://github.com/RocketChat/Rocket.Chat/pull/23311)) -- Regression: LDAP Issues ([#23306](https://github.com/RocketChat/Rocket.Chat/pull/23306) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: LDAP Issues ([#23306](https://github.com/RocketChat/Rocket.Chat/pull/23306)) -- Regression: LDAP Refactoring ([#23231](https://github.com/RocketChat/Rocket.Chat/pull/23231) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: LDAP Refactoring ([#23231](https://github.com/RocketChat/Rocket.Chat/pull/23231)) -- Regression: LDAP User Data Sync not always working ([#23321](https://github.com/RocketChat/Rocket.Chat/pull/23321) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: LDAP User Data Sync not always working ([#23321](https://github.com/RocketChat/Rocket.Chat/pull/23321)) -- Regression: LDAP: Handle base authentication and prevent crash ([#23331](https://github.com/RocketChat/Rocket.Chat/pull/23331) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: LDAP: Handle base authentication and prevent crash ([#23331](https://github.com/RocketChat/Rocket.Chat/pull/23331)) When AD requires TLS the auth crashes the server if StartTLS is not set, the error shows at the end because the code was not waiting on this operation. -- Regression: Log Sections not respecting Log Level setting ([#23230](https://github.com/RocketChat/Rocket.Chat/pull/23230) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Log Sections not respecting Log Level setting ([#23230](https://github.com/RocketChat/Rocket.Chat/pull/23230)) -- Regression: Missing i18n key ([#23282](https://github.com/RocketChat/Rocket.Chat/pull/23282) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Missing i18n key ([#23282](https://github.com/RocketChat/Rocket.Chat/pull/23282)) -- Regression: Properly trickle-down state from UsersPage to UsersTable ([#23196](https://github.com/RocketChat/Rocket.Chat/pull/23196) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Properly trickle-down state from UsersPage to UsersTable ([#23196](https://github.com/RocketChat/Rocket.Chat/pull/23196)) Spotted by @gabriellsh. @@ -3952,53 +3923,53 @@ - Regression: Request seats url ([#23317](https://github.com/RocketChat/Rocket.Chat/pull/23317)) -- Regression: SAML identifier mapping ([#23330](https://github.com/RocketChat/Rocket.Chat/pull/23330) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: SAML identifier mapping ([#23330](https://github.com/RocketChat/Rocket.Chat/pull/23330)) - Regression: Seats Cap banner not being disabled if not enterprise ([#23278](https://github.com/RocketChat/Rocket.Chat/pull/23278)) -- Regression: View Logs administration page crashing ([#23205](https://github.com/RocketChat/Rocket.Chat/pull/23205) by [@tassoevan](https://github.com/tassoevan)) +- Regression: View Logs administration page crashing ([#23205](https://github.com/RocketChat/Rocket.Chat/pull/23205)) Fixes the `stdout.queue` endpoint; makes the components type-safe. -- Regression: wrong settings order ([#23281](https://github.com/RocketChat/Rocket.Chat/pull/23281) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: wrong settings order ([#23281](https://github.com/RocketChat/Rocket.Chat/pull/23281)) -- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@KevLehman](https://github.com/KevLehman) & [@g-thome](https://github.com/g-thome)) +- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@g-thome](https://github.com/g-thome)) -- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338) by [@KevLehman](https://github.com/KevLehman)) +- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338))
### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@casalsgh](https://github.com/casalsgh) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@gabrieloliverio](https://github.com/gabrieloliverio) - [@lucassartor](https://github.com/lucassartor) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@sumukhah](https://github.com/sumukhah) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@casalsgh](https://github.com/casalsgh) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.18.2 `2021-10-01 · 2 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` @@ -4014,26 +3985,23 @@ - Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) -- Update visitor info on email reception based on current inbox settings ([#23280](https://github.com/RocketChat/Rocket.Chat/pull/23280) by [@KevLehman](https://github.com/KevLehman)) +- Update visitor info on email reception based on current inbox settings ([#23280](https://github.com/RocketChat/Rocket.Chat/pull/23280))
🔍 Minor changes -- Regression: Change some logs to new format ([#23307](https://github.com/RocketChat/Rocket.Chat/pull/23307) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Change some logs to new format ([#23307](https://github.com/RocketChat/Rocket.Chat/pull/23307)) -- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338) by [@KevLehman](https://github.com/KevLehman)) +- Release 3.18.2 ([#23338](https://github.com/RocketChat/Rocket.Chat/pull/23338))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@KevLehman](https://github.com/KevLehman) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.18.1 @@ -4053,28 +4021,28 @@ ### 🐛 Bug fixes -- Change way emails are validated on livechat registerGuest method ([#23089](https://github.com/RocketChat/Rocket.Chat/pull/23089) by [@KevLehman](https://github.com/KevLehman)) +- Change way emails are validated on livechat registerGuest method ([#23089](https://github.com/RocketChat/Rocket.Chat/pull/23089))
🔍 Minor changes -- Regression: Auth banner for EE ([#23091](https://github.com/RocketChat/Rocket.Chat/pull/23091) by [@casalsgh](https://github.com/casalsgh) & [@g-thome](https://github.com/g-thome)) +- Regression: Auth banner for EE ([#23091](https://github.com/RocketChat/Rocket.Chat/pull/23091) by [@g-thome](https://github.com/g-thome)) Dimisses auth banners assigned to EE admins and prevents new ones from appearing. -- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@KevLehman](https://github.com/KevLehman) & [@g-thome](https://github.com/g-thome)) +- Release 3.18.1 ([#23135](https://github.com/RocketChat/Rocket.Chat/pull/23135) by [@g-thome](https://github.com/g-thome))
### 👩‍💻👨‍💻 Contributors 😍 - -- [@KevLehman](https://github.com/KevLehman) -- [@casalsgh](https://github.com/casalsgh) + - [@g-thome](https://github.com/g-thome) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@casalsgh](https://github.com/casalsgh) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.18.0 @@ -4089,7 +4057,7 @@ ### 🎉 New features -- **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955)) - Add new settings to support closing chats that have been too long on waiting queue - Moved old settings to new "Queue Management" section @@ -4099,7 +4067,7 @@ Add a banner to inform admins about future authentication changes. This banner targets servers that use some sort of authentication service since they're the ones which this update concerns the most. -- Report "Read Receipts" setting on stat collector ([#23033](https://github.com/RocketChat/Rocket.Chat/pull/23033) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Report "Read Receipts" setting on stat collector ([#23033](https://github.com/RocketChat/Rocket.Chat/pull/23033)) - REST endpoint to delete a DM and allow DM for two other users ([#18022](https://github.com/RocketChat/Rocket.Chat/pull/18022) by [@abrom](https://github.com/abrom)) @@ -4118,11 +4086,11 @@ - Add default permission 'start-discussion' and 'start-discussion-other-user' to app user ([#22577](https://github.com/RocketChat/Rocket.Chat/pull/22577)) -- Create thumbnails from uploaded images ([#20907](https://github.com/RocketChat/Rocket.Chat/pull/20907) by [@KevLehman](https://github.com/KevLehman) & [@tassoevan](https://github.com/tassoevan)) +- Create thumbnails from uploaded images ([#20907](https://github.com/RocketChat/Rocket.Chat/pull/20907)) - Exclude archived rooms from unread-message count ([#22515](https://github.com/RocketChat/Rocket.Chat/pull/22515) by [@nmagedman](https://github.com/nmagedman)) -- Increase the verbosity of Omnichannel routing system debugging outputs ([#22977](https://github.com/RocketChat/Rocket.Chat/pull/22977) by [@KevLehman](https://github.com/KevLehman)) +- Increase the verbosity of Omnichannel routing system debugging outputs ([#22977](https://github.com/RocketChat/Rocket.Chat/pull/22977)) - Rewrite File Upload Modal ([#22750](https://github.com/RocketChat/Rocket.Chat/pull/22750)) @@ -4135,9 +4103,9 @@ Files larger than 10mb: ![image](https://user-images.githubusercontent.com/40830821/127222611-5265040f-a06b-4ec5-b528-89b40e6a9072.png) -- Types from currentChatsPage.tsx ([#22967](https://github.com/RocketChat/Rocket.Chat/pull/22967) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Types from currentChatsPage.tsx ([#22967](https://github.com/RocketChat/Rocket.Chat/pull/22967)) -- Use tag autocomplete in more places ([#22902](https://github.com/RocketChat/Rocket.Chat/pull/22902) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Use tag autocomplete in more places ([#22902](https://github.com/RocketChat/Rocket.Chat/pull/22902)) Use the proper autocomplete component for omnichannel tags, this adds proper sorting of results and better consistency. @@ -4146,14 +4114,14 @@ - "Read Only" field description is incorrect when the option is checked ([#21868](https://github.com/RocketChat/Rocket.Chat/pull/21868) by [@epif4nio](https://github.com/epif4nio)) -- "Users By Time of the Day" chart displays incorrect data for Local Timezone ([#22836](https://github.com/RocketChat/Rocket.Chat/pull/22836) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- "Users By Time of the Day" chart displays incorrect data for Local Timezone ([#22836](https://github.com/RocketChat/Rocket.Chat/pull/22836)) - Add local timezone conversion to the "Users By Time of the Day" chart in the Engagement Dashboard; - Simplify date creations by using `endOf` and `startOf` methods. -- Atlassian Crowd connection not working ([#22996](https://github.com/RocketChat/Rocket.Chat/pull/22996) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@piotrkochan](https://github.com/piotrkochan)) +- Atlassian Crowd connection not working ([#22996](https://github.com/RocketChat/Rocket.Chat/pull/22996) by [@piotrkochan](https://github.com/piotrkochan)) -- Audio recording doesn't stop in direct messages on channel switch ([#22880](https://github.com/RocketChat/Rocket.Chat/pull/22880) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Audio recording doesn't stop in direct messages on channel switch ([#22880](https://github.com/RocketChat/Rocket.Chat/pull/22880)) - Cancel audio recordings on message bar destroy event. ![test-22372](https://user-images.githubusercontent.com/36537004/128569780-d83747b0-fb9c-4dc6-9bc5-7ae573e720c8.gif) @@ -4170,15 +4138,15 @@ - Manually approve new users is not applied to SAML users ([#22823](https://github.com/RocketChat/Rocket.Chat/pull/22823) by [@ostjen](https://github.com/ostjen)) -- Production-environment dependencies ([#22868](https://github.com/RocketChat/Rocket.Chat/pull/22868) by [@tassoevan](https://github.com/tassoevan)) +- Production-environment dependencies ([#22868](https://github.com/RocketChat/Rocket.Chat/pull/22868)) `@rocket.chat/icons` was incorrectly referred as development dependency. -- QuickActions for mobile screen ([#23016](https://github.com/RocketChat/Rocket.Chat/pull/23016) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- QuickActions for mobile screen ([#23016](https://github.com/RocketChat/Rocket.Chat/pull/23016)) -- Registration not possible with TOTP and email verification ([#22778](https://github.com/RocketChat/Rocket.Chat/pull/22778) by [@ostjen](https://github.com/ostjen) & [@tassoevan](https://github.com/tassoevan)) +- Registration not possible with TOTP and email verification ([#22778](https://github.com/RocketChat/Rocket.Chat/pull/22778) by [@ostjen](https://github.com/ostjen)) -- Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850)) - Added new setting to manage timezones - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) @@ -4192,7 +4160,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/128103633-ec7b93fc-4667-4dc9-bad3-bfffaff3974e.png) -- Threads and discussions searches don't display proper results ([#22914](https://github.com/RocketChat/Rocket.Chat/pull/22914) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Threads and discussions searches don't display proper results ([#22914](https://github.com/RocketChat/Rocket.Chat/pull/22914)) - _Fix_ issue in discussions search (which wasn't working after a search with no results was made); - _Improve_ discussions and threads searches: both searches (`chat.getDiscussions` and `chat.getThreadsList`) are now case insensitive (do NOT differ capital from lower letters) and match incomplete words or terms. @@ -4201,11 +4169,11 @@ - TypeError on Callout type prop ([#22790](https://github.com/RocketChat/Rocket.Chat/pull/22790) by [@hrahul2605](https://github.com/hrahul2605)) -- User is still asked for 2FA confirmation even if it is deactivated ([#22801](https://github.com/RocketChat/Rocket.Chat/pull/22801) by [@ostjen](https://github.com/ostjen) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- User is still asked for 2FA confirmation even if it is deactivated ([#22801](https://github.com/RocketChat/Rocket.Chat/pull/22801) by [@ostjen](https://github.com/ostjen)) - User presence being processes even if presence monitor was disabled ([#22927](https://github.com/RocketChat/Rocket.Chat/pull/22927)) -- users registered via third party apps bypass custom required fields ([#22396](https://github.com/RocketChat/Rocket.Chat/pull/22396) by [@g-thome](https://github.com/g-thome) & [@tassoevan](https://github.com/tassoevan)) +- users registered via third party apps bypass custom required fields ([#22396](https://github.com/RocketChat/Rocket.Chat/pull/22396) by [@g-thome](https://github.com/g-thome)) moves the custom fields from the initial registration form to the "pick a username" screen so that everyone is forced to fill the custom required fields @@ -4221,7 +4189,7 @@ Changed gpg keyserver in RHEL Dockerfile to openpgp.org due to deprecation of the SKS keyserver network. -- Chore: Fix typo in rtl.css ([#22431](https://github.com/RocketChat/Rocket.Chat/pull/22431) by [@eltociear](https://github.com/eltociear) & [@tassoevan](https://github.com/tassoevan)) +- Chore: Fix typo in rtl.css ([#22431](https://github.com/RocketChat/Rocket.Chat/pull/22431) by [@eltociear](https://github.com/eltociear)) - Chore: Prevent new JS files being added ([#22972](https://github.com/RocketChat/Rocket.Chat/pull/22972)) @@ -4233,7 +4201,7 @@ This PR intends to provide a really simple way for us to start many instances of Rocket.Chat connected in a cluster. -- Chore: Update Livechat widget to 1.9.4 ([#22990](https://github.com/RocketChat/Rocket.Chat/pull/22990) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Update Livechat widget to 1.9.4 ([#22990](https://github.com/RocketChat/Rocket.Chat/pull/22990)) - i18n: Language update from LingoHub 🤖 on 2021-08-09Z ([#22888](https://github.com/RocketChat/Rocket.Chat/pull/22888)) @@ -4245,7 +4213,7 @@ - Regression: Attachment not rendering on message ([#23046](https://github.com/RocketChat/Rocket.Chat/pull/23046)) -- Regression: File upload name suggestion ([#22953](https://github.com/RocketChat/Rocket.Chat/pull/22953) by [@tassoevan](https://github.com/tassoevan)) +- Regression: File upload name suggestion ([#22953](https://github.com/RocketChat/Rocket.Chat/pull/22953)) Before: ![image](https://user-images.githubusercontent.com/40830821/129774936-ecdbe9a1-5e3f-4a0a-ad1e-6f13eb15c60b.png) @@ -4258,22 +4226,20 @@ - Regression: Fix creation of self-DMs ([#23015](https://github.com/RocketChat/Rocket.Chat/pull/23015)) -- Regression: Logs were missing from Omnichannel callback methods ([#23048](https://github.com/RocketChat/Rocket.Chat/pull/23048) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Logs were missing from Omnichannel callback methods ([#23048](https://github.com/RocketChat/Rocket.Chat/pull/23048)) - Regression: no-js-action bump version ([#22997](https://github.com/RocketChat/Rocket.Chat/pull/22997)) - Regression: readNow blocked by a invalid condition ([#22952](https://github.com/RocketChat/Rocket.Chat/pull/22952)) -- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@thassiov](https://github.com/thassiov)) +- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942)) -- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@abrom](https://github.com/abrom) - [@aditya-mitra](https://github.com/aditya-mitra) - [@eltociear](https://github.com/eltociear) @@ -4281,25 +4247,27 @@ - [@g-thome](https://github.com/g-thome) - [@hrahul2605](https://github.com/hrahul2605) - [@jsm84](https://github.com/jsm84) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@nmagedman](https://github.com/nmagedman) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@piotrkochan](https://github.com/piotrkochan) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.17.2 `2021-08-26 · 3 🐛 · 1 🔍 · 5 👩‍💻👨‍💻` @@ -4317,9 +4285,9 @@ Building on top of https://github.com/RocketChat/Rocket.Chat/pull/22838 -- Error getting default agent when routing system algorithm is Auto Selection ([#22976](https://github.com/RocketChat/Rocket.Chat/pull/22976) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Error getting default agent when routing system algorithm is Auto Selection ([#22976](https://github.com/RocketChat/Rocket.Chat/pull/22976)) -- Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991)) - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter - Fixed an issue when both user & system setting to manange EE max number of chats allowed were set to 0 @@ -4328,19 +4296,19 @@ 🔍 Minor changes -- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.17.2 ([#23045](https://github.com/RocketChat/Rocket.Chat/pull/23045)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) - [@Shailesh351](https://github.com/Shailesh351) -- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) - [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.17.1 @@ -4355,43 +4323,40 @@ ### 🐛 Bug fixes -- "Click to Join" button is not working if there are no muted users in the room ([#22871](https://github.com/RocketChat/Rocket.Chat/pull/22871) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- "Click to Join" button is not working if there are no muted users in the room ([#22871](https://github.com/RocketChat/Rocket.Chat/pull/22871)) - Add check to `room.muted` array so as to cover the case in which it is `undefined`; -- Apps-Engine's scheduler failing to update run tasks ([#22882](https://github.com/RocketChat/Rocket.Chat/pull/22882) by [@thassiov](https://github.com/thassiov)) +- Apps-Engine's scheduler failing to update run tasks ([#22882](https://github.com/RocketChat/Rocket.Chat/pull/22882)) [Agenda](https://github.com/agenda/agenda), the library that manages scheduling, depended on setting a job property named `nextRunAt` as `undefined` to signal whether it should be run on schedule or not. [Rocket.Chat's current Mongo driver](https://github.com/RocketChat/Rocket.Chat/pull/22399) ignores `undefined` values when updating documents and this was causing jobs to never stop running as Agenda couldn't clear that property (set them as `undefined`). This updates Rocket.Chat's dependency on Agenda.js to point to [a fork that fixes the problem](https://github.com/RocketChat/agenda/releases/tag/3.1.2). -- Close omnichannel conversations when agent is deactivated ([#22917](https://github.com/RocketChat/Rocket.Chat/pull/22917) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Close omnichannel conversations when agent is deactivated ([#22917](https://github.com/RocketChat/Rocket.Chat/pull/22917)) -- Message update not working in some cases ([#22856](https://github.com/RocketChat/Rocket.Chat/pull/22856) by [@KevLehman](https://github.com/KevLehman)) +- Message update not working in some cases ([#22856](https://github.com/RocketChat/Rocket.Chat/pull/22856)) -- Use correct param on saveBusinessHour method ([#22835](https://github.com/RocketChat/Rocket.Chat/pull/22835) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Use correct param on saveBusinessHour method ([#22835](https://github.com/RocketChat/Rocket.Chat/pull/22835))
🔍 Minor changes -- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@thassiov](https://github.com/thassiov)) +- Release 3.17.1 ([#22942](https://github.com/RocketChat/Rocket.Chat/pull/22942))
-### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) +- [@d-gubert](https://github.com/d-gubert) - [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@murtaza98](https://github.com/murtaza98) - [@renatobecker](https://github.com/renatobecker) +- [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) - [@thassiov](https://github.com/thassiov) -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@d-gubert](https://github.com/d-gubert) -- [@murtaza98](https://github.com/murtaza98) -- [@sampaiodiego](https://github.com/sampaiodiego) - # 3.17.0 `2021-07-30 · 7 🎉 · 19 🚀 · 39 🐛 · 56 🔍 · 28 👩‍💻👨‍💻` @@ -4404,15 +4369,15 @@ ### 🎉 New features -- `roles.delete` endpoint ([#22497](https://github.com/RocketChat/Rocket.Chat/pull/22497) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- `roles.delete` endpoint ([#22497](https://github.com/RocketChat/Rocket.Chat/pull/22497) by [@lucassartor](https://github.com/lucassartor)) -- Collect data about LDAP, SAML, CAS and OAuth usage. ([#22719](https://github.com/RocketChat/Rocket.Chat/pull/22719) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Collect data about LDAP, SAML, CAS and OAuth usage. ([#22719](https://github.com/RocketChat/Rocket.Chat/pull/22719)) -- Convert Team to Channel ([#22476](https://github.com/RocketChat/Rocket.Chat/pull/22476) by [@KevLehman](https://github.com/KevLehman) & [@tassoevan](https://github.com/tassoevan)) +- Convert Team to Channel ([#22476](https://github.com/RocketChat/Rocket.Chat/pull/22476)) ![image](https://user-images.githubusercontent.com/27704687/123525502-8558bd80-d6a7-11eb-8211-12633cb3b5c6.png) -- Federation setup ([#22208](https://github.com/RocketChat/Rocket.Chat/pull/22208) by [@alansikora](https://github.com/alansikora) & [@g-thome](https://github.com/g-thome)) +- Federation setup ([#22208](https://github.com/RocketChat/Rocket.Chat/pull/22208) by [@g-thome](https://github.com/g-thome)) - Logout other user endpoint ([#22661](https://github.com/RocketChat/Rocket.Chat/pull/22661) by [@ostjen](https://github.com/ostjen)) @@ -4426,14 +4391,14 @@ ### 🚀 Improvements -- Canned responses ([#22703](https://github.com/RocketChat/Rocket.Chat/pull/22703) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Canned responses ([#22703](https://github.com/RocketChat/Rocket.Chat/pull/22703) by [@rafaelblink](https://github.com/rafaelblink)) - Change message deletion confirmation modal to toast ([#22544](https://github.com/RocketChat/Rocket.Chat/pull/22544)) Changed a timed modal for a toast message ![image](https://user-images.githubusercontent.com/40830821/124192670-0646f900-da9c-11eb-941c-9ae35421f6ef.png) -- Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705) by [@thassiov](https://github.com/thassiov)) +- Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705)) * Add `appId` field to the data saved by the Scheduler * Add `appId` index to `rocketchat_apps_persistence` model @@ -4445,19 +4410,19 @@ ![image](https://user-images.githubusercontent.com/1810309/126246655-2ce3cb5f-b2f5-456e-a9c4-beccd9b3ef41.png) -- Make `shortcut` field of canned responses unique ([#22700](https://github.com/RocketChat/Rocket.Chat/pull/22700) by [@KevLehman](https://github.com/KevLehman)) +- Make `shortcut` field of canned responses unique ([#22700](https://github.com/RocketChat/Rocket.Chat/pull/22700)) -- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123)) Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments -- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) +- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@rafaelblink](https://github.com/rafaelblink)) This uses the paginated multiselect for the EE tags selection, allowing more than 50 tags to be shown. - Preview message URLs only once ([#22516](https://github.com/RocketChat/Rocket.Chat/pull/22516) by [@nmagedman](https://github.com/nmagedman)) -- Refactor `livechat.registerGuest` function ([#22684](https://github.com/RocketChat/Rocket.Chat/pull/22684) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Refactor `livechat.registerGuest` function ([#22684](https://github.com/RocketChat/Rocket.Chat/pull/22684)) - Replace OTR Icon on Contextual Bar & Update Icons ([#22377](https://github.com/RocketChat/Rocket.Chat/pull/22377)) @@ -4471,7 +4436,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/123840219-74e15680-d8e4-11eb-95aa-00a990ffe0e7.png) -- Return open room if available for visitors ([#22742](https://github.com/RocketChat/Rocket.Chat/pull/22742) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Return open room if available for visitors ([#22742](https://github.com/RocketChat/Rocket.Chat/pull/22742)) - Rewrite Enter Encryption Password Modal ([#22456](https://github.com/RocketChat/Rocket.Chat/pull/22456)) @@ -4490,7 +4455,7 @@ ![image](https://user-images.githubusercontent.com/40830821/124513354-04897800-ddb1-11eb-96f4-41fe906ca0d7.png) ![image](https://user-images.githubusercontent.com/40830821/124513395-1b2fcf00-ddb1-11eb-83e4-3f8f9b4676ba.png) -- Rewrite Save Encryption Password Modal ([#22447](https://github.com/RocketChat/Rocket.Chat/pull/22447) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite Save Encryption Password Modal ([#22447](https://github.com/RocketChat/Rocket.Chat/pull/22447)) ### before ![image](https://user-images.githubusercontent.com/27704687/122980201-c337a800-d36e-11eb-8e2b-68534cea8e1e.png) @@ -4504,9 +4469,9 @@ ![image](https://user-images.githubusercontent.com/40830821/124157878-a3d80380-da6f-11eb-8bd8-03dffd14c658.png) -- Sidebar icons margins ([#22498](https://github.com/RocketChat/Rocket.Chat/pull/22498) by [@tassoevan](https://github.com/tassoevan)) +- Sidebar icons margins ([#22498](https://github.com/RocketChat/Rocket.Chat/pull/22498)) -- Update README.md ([#22462](https://github.com/RocketChat/Rocket.Chat/pull/22462) by [@Faria-TechWrite](https://github.com/Faria-TechWrite)) +- Update README.md ([#22462](https://github.com/RocketChat/Rocket.Chat/pull/22462)) - Wrong error message when trying to create a blocked username ([#22452](https://github.com/RocketChat/Rocket.Chat/pull/22452) by [@lucassartor](https://github.com/lucassartor)) @@ -4521,15 +4486,15 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Engagement Dashboard displaying incorrect data about active users ([#22381](https://github.com/RocketChat/Rocket.Chat/pull/22381) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- **ENTERPRISE:** Engagement Dashboard displaying incorrect data about active users ([#22381](https://github.com/RocketChat/Rocket.Chat/pull/22381)) - Fix sessions' and users' grouping in the Engagement Dashboard API endpoints; - Fix the data displayed in the charts from the "Active users", "Users by time of day" and "When is the chat busier?" sections of the Engagement Dashboard; - Replace label used to describe the amount of Active Users in the License section of the Info page. -- **ENTERPRISE:** Make AutoSelect algo take current agent load in consideration ([#22611](https://github.com/RocketChat/Rocket.Chat/pull/22611) by [@KevLehman](https://github.com/KevLehman)) +- **ENTERPRISE:** Make AutoSelect algo take current agent load in consideration ([#22611](https://github.com/RocketChat/Rocket.Chat/pull/22611)) -- **ENTERPRISE:** Race condition on Omnichannel visitor abandoned callback ([#22413](https://github.com/RocketChat/Rocket.Chat/pull/22413) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Race condition on Omnichannel visitor abandoned callback ([#22413](https://github.com/RocketChat/Rocket.Chat/pull/22413)) As you can see [here](https://github.com/RocketChat/Rocket.Chat/blob/857791c39c97b51b5b6fd3718e0c816959a81c3b/ee/app/livechat-enterprise/server/lib/Helper.js#L127) the `predictedVisitorAbandonment` flag is not set if the room object doesn't have `v.lastMessageTs` property. So we need to always make sure the `v.lastMessageTs` is set before this method is called. @@ -4548,9 +4513,9 @@ ![image](https://user-images.githubusercontent.com/28611993/127041404-dfca7f6a-2b8b-4c15-9cbd-c6238fac0063.png) -- Bugs in AutoCompleteDepartment ([#22414](https://github.com/RocketChat/Rocket.Chat/pull/22414) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Bugs in AutoCompleteDepartment ([#22414](https://github.com/RocketChat/Rocket.Chat/pull/22414)) -- Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170)) - Hide 'Call' buttons from the tab bar for muted users; - Display an error when a muted user attempts to enter a call using the 'Click to Join!' button. @@ -4566,7 +4531,7 @@ ### aditional fix :rocket: - unnecessary `TeamsMembers` component removed -- Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor) & [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor)) When trying to create a discussion using the top left sidebar modal with an role that don't have the `view-other-user-channels ` permission, an empty list would be shown, which is a wrong behavior. Also, when being able to use this modal, discussions were listed as options, which is also a wrong behavior as there can't be nested discussions. @@ -4583,9 +4548,9 @@ - Channels or Teams deleted are not removed from the sidebar. ([#22613](https://github.com/RocketChat/Rocket.Chat/pull/22613) by [@ostjen](https://github.com/ostjen)) -- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584)) -- Confirm owner change process when deleting own account ([#22609](https://github.com/RocketChat/Rocket.Chat/pull/22609) by [@tassoevan](https://github.com/tassoevan)) +- Confirm owner change process when deleting own account ([#22609](https://github.com/RocketChat/Rocket.Chat/pull/22609)) - Content-Security-Policy ignoring CDN configuration ([#22791](https://github.com/RocketChat/Rocket.Chat/pull/22791) by [@nmagedman](https://github.com/nmagedman)) @@ -4599,11 +4564,11 @@ ![image](https://user-images.githubusercontent.com/28611993/126388304-6ac76574-6924-426e-843d-afd53dc1c874.png) -- crush in the getChannelHistory method ([#22667](https://github.com/RocketChat/Rocket.Chat/pull/22667) by [@MaestroArt](https://github.com/MaestroArt) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- crush in the getChannelHistory method ([#22667](https://github.com/RocketChat/Rocket.Chat/pull/22667) by [@MaestroArt](https://github.com/MaestroArt)) -- Deleting own account asks for the username in the UI instead of the password ([#22405](https://github.com/RocketChat/Rocket.Chat/pull/22405) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Deleting own account asks for the username in the UI instead of the password ([#22405](https://github.com/RocketChat/Rocket.Chat/pull/22405)) -- Emoji not rendered on attachments description ([#22437](https://github.com/RocketChat/Rocket.Chat/pull/22437) by [@tassoevan](https://github.com/tassoevan)) +- Emoji not rendered on attachments description ([#22437](https://github.com/RocketChat/Rocket.Chat/pull/22437)) - Error in permission check for getLivechatDepartmentByNameOrId method in Apps ([#22545](https://github.com/RocketChat/Rocket.Chat/pull/22545)) @@ -4613,23 +4578,23 @@ Updated Apps-Engine version fixes errors with apps using livechat features. -- Livechat config endpoint is not returning all settings ([#22686](https://github.com/RocketChat/Rocket.Chat/pull/22686) by [@renatobecker](https://github.com/renatobecker)) +- Livechat config endpoint is not returning all settings ([#22686](https://github.com/RocketChat/Rocket.Chat/pull/22686)) - Livechat webhook request without headers ([#22589](https://github.com/RocketChat/Rocket.Chat/pull/22589)) - Markdown for UiKit blocks ([#22619](https://github.com/RocketChat/Rocket.Chat/pull/22619)) -- Omnichannel - Fix issue with modals on room preview mode. ([#22541](https://github.com/RocketChat/Rocket.Chat/pull/22541) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel - Fix issue with modals on room preview mode. ([#22541](https://github.com/RocketChat/Rocket.Chat/pull/22541)) -- Omnichannel/Twilio - When a file is sent as first message, chat is not queued ([#22590](https://github.com/RocketChat/Rocket.Chat/pull/22590) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel/Twilio - When a file is sent as first message, chat is not queued ([#22590](https://github.com/RocketChat/Rocket.Chat/pull/22590)) - Prune messages not applying the user filter ([#22506](https://github.com/RocketChat/Rocket.Chat/pull/22506)) -- Put title into AutocompleteDepartment components ([#22417](https://github.com/RocketChat/Rocket.Chat/pull/22417) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Put title into AutocompleteDepartment components ([#22417](https://github.com/RocketChat/Rocket.Chat/pull/22417)) Dependencies: https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/475 -- Quote message not working for Livechat visitors ([#22586](https://github.com/RocketChat/Rocket.Chat/pull/22586) by [@KevLehman](https://github.com/KevLehman)) +- Quote message not working for Livechat visitors ([#22586](https://github.com/RocketChat/Rocket.Chat/pull/22586)) ### Before: ![image](https://user-images.githubusercontent.com/34130764/124583613-de2b1180-de70-11eb-82aa-18564b317626.png) @@ -4649,22 +4614,22 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/123711336-b3c0cf00-d846-11eb-9408-a686d8668ba5.png) -- Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699)) - Fix 'not iterable' errors in the `normalizeMessage` function; - Remove stack traces from errors thrown by the `jitsi:updateTimeout` (and other `Meteor.Error`s) method. -- Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424)) -- Sort AutocompleteDepartmentsMultiple ([#22419](https://github.com/RocketChat/Rocket.Chat/pull/22419) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Sort AutocompleteDepartmentsMultiple ([#22419](https://github.com/RocketChat/Rocket.Chat/pull/22419)) - status message won't show up for other users ([#22110](https://github.com/RocketChat/Rocket.Chat/pull/22110) by [@g-thome](https://github.com/g-thome)) replace the current blaze block that queries the local session store by a react component that fetches memoized user data -- Store department value correctly ([#22685](https://github.com/RocketChat/Rocket.Chat/pull/22685) by [@KevLehman](https://github.com/KevLehman) & [@renatobecker](https://github.com/renatobecker)) +- Store department value correctly ([#22685](https://github.com/RocketChat/Rocket.Chat/pull/22685)) -- Support ID param on createVisitor method ([#22772](https://github.com/RocketChat/Rocket.Chat/pull/22772) by [@KevLehman](https://github.com/KevLehman)) +- Support ID param on createVisitor method ([#22772](https://github.com/RocketChat/Rocket.Chat/pull/22772)) - UIKit URL prop being ignored for buttons ([#22579](https://github.com/RocketChat/Rocket.Chat/pull/22579)) @@ -4672,7 +4637,7 @@ - Use room's last message time when visitor did not send any message ([#22695](https://github.com/RocketChat/Rocket.Chat/pull/22695) by [@ericrosenthal](https://github.com/ericrosenthal)) -- VisitorClientInfo not showing ([#22593](https://github.com/RocketChat/Rocket.Chat/pull/22593) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- VisitorClientInfo not showing ([#22593](https://github.com/RocketChat/Rocket.Chat/pull/22593)) ![image](https://user-images.githubusercontent.com/17487063/124694887-87492a80-deb8-11eb-89a3-a0e407841a32.png) @@ -4694,9 +4659,9 @@ - Chore: added pagination to search msg endpoint ([#22632](https://github.com/RocketChat/Rocket.Chat/pull/22632) by [@ostjen](https://github.com/ostjen)) -- Chore: Create README.md ([#22615](https://github.com/RocketChat/Rocket.Chat/pull/22615) by [@Faria-TechWrite](https://github.com/Faria-TechWrite)) +- Chore: Create README.md ([#22615](https://github.com/RocketChat/Rocket.Chat/pull/22615)) -- Chore: Enable Omnicahnnel by default ([#22697](https://github.com/RocketChat/Rocket.Chat/pull/22697) by [@KevLehman](https://github.com/KevLehman) & [@ostjen](https://github.com/ostjen)) +- Chore: Enable Omnicahnnel by default ([#22697](https://github.com/RocketChat/Rocket.Chat/pull/22697) by [@ostjen](https://github.com/ostjen)) - Chore: Meteor 2.2 and bump dependencies ([#22399](https://github.com/RocketChat/Rocket.Chat/pull/22399)) @@ -4704,7 +4669,7 @@ - Chore: Remove Sodium from the main client ([#22459](https://github.com/RocketChat/Rocket.Chat/pull/22459)) -- Chore: Review some dependencies ([#22522](https://github.com/RocketChat/Rocket.Chat/pull/22522) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Review some dependencies ([#22522](https://github.com/RocketChat/Rocket.Chat/pull/22522)) Upgrade some development dependencies. @@ -4714,9 +4679,9 @@ - Chore: Upgrade NPM dependencies ([#22562](https://github.com/RocketChat/Rocket.Chat/pull/22562)) -- Chore: Use projection instead of fields to avoid error log ([#22629](https://github.com/RocketChat/Rocket.Chat/pull/22629) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Use projection instead of fields to avoid error log ([#22629](https://github.com/RocketChat/Rocket.Chat/pull/22629)) -- Fix Closed chats doesn't shows who picked the call ([#22368](https://github.com/RocketChat/Rocket.Chat/pull/22368) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Fix Closed chats doesn't shows who picked the call ([#22368](https://github.com/RocketChat/Rocket.Chat/pull/22368)) - i18n: Language update from LingoHub 🤖 on 2021-06-28Z ([#22491](https://github.com/RocketChat/Rocket.Chat/pull/22491)) @@ -4724,28 +4689,28 @@ - Merge master into develop & Set version to 3.17.0-develop ([#22493](https://github.com/RocketChat/Rocket.Chat/pull/22493)) -- Regression: Added missing translate keys for Federation ([#22810](https://github.com/RocketChat/Rocket.Chat/pull/22810) by [@alansikora](https://github.com/alansikora)) +- Regression: Added missing translate keys for Federation ([#22810](https://github.com/RocketChat/Rocket.Chat/pull/22810)) -- Regression: Allow users to search canned responses based on shortcut or content ([#22735](https://github.com/RocketChat/Rocket.Chat/pull/22735) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Allow users to search canned responses based on shortcut or content ([#22735](https://github.com/RocketChat/Rocket.Chat/pull/22735)) -- Regression: Allow users to update canned responses scope ([#22738](https://github.com/RocketChat/Rocket.Chat/pull/22738) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Allow users to update canned responses scope ([#22738](https://github.com/RocketChat/Rocket.Chat/pull/22738)) -- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620)) -- Regression: Check for text before parse preview in create canned response form ([#22754](https://github.com/RocketChat/Rocket.Chat/pull/22754) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Check for text before parse preview in create canned response form ([#22754](https://github.com/RocketChat/Rocket.Chat/pull/22754)) - Regression: Client crashing on startup ([#22610](https://github.com/RocketChat/Rocket.Chat/pull/22610)) -- Regression: Create livechat-monitor permissions for Canned Responses ([#22781](https://github.com/RocketChat/Rocket.Chat/pull/22781) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Create livechat-monitor permissions for Canned Responses ([#22781](https://github.com/RocketChat/Rocket.Chat/pull/22781)) -- Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794)) - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; - Downgrade `@nivo/line` version. **Expected behavior:** ![active-users-engagement-dashboard](https://user-images.githubusercontent.com/36537004/127372185-390dc42f-bc90-4841-a22b-731f0aafcafe.PNG) -- Regression: Data in the "New Users" section is delayed in 1 day ([#22751](https://github.com/RocketChat/Rocket.Chat/pull/22751) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Data in the "New Users" section is delayed in 1 day ([#22751](https://github.com/RocketChat/Rocket.Chat/pull/22751)) - Update nivo version (which was causing errors in the bar chart); - Fix 1 day delay in '7 days' and '30 days' periods; @@ -4755,40 +4720,40 @@ fix some linting warnings on federation modal -- Regression: Filter of canned responses in contextual-bar ([#22762](https://github.com/RocketChat/Rocket.Chat/pull/22762) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Filter of canned responses in contextual-bar ([#22762](https://github.com/RocketChat/Rocket.Chat/pull/22762)) -- Regression: fix canned responses filters for monitors ([#22782](https://github.com/RocketChat/Rocket.Chat/pull/22782) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: fix canned responses filters for monitors ([#22782](https://github.com/RocketChat/Rocket.Chat/pull/22782)) -- Regression: Fix canned responses permissions for monitors & managers ([#22793](https://github.com/RocketChat/Rocket.Chat/pull/22793) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Fix canned responses permissions for monitors & managers ([#22793](https://github.com/RocketChat/Rocket.Chat/pull/22793)) -- Regression: Fix ee microservices build ([#22656](https://github.com/RocketChat/Rocket.Chat/pull/22656) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Fix ee microservices build ([#22656](https://github.com/RocketChat/Rocket.Chat/pull/22656)) -- Regression: Fix empty canned responses table when searching ([#22743](https://github.com/RocketChat/Rocket.Chat/pull/22743) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix empty canned responses table when searching ([#22743](https://github.com/RocketChat/Rocket.Chat/pull/22743)) -- Regression: Fix empty tag field ([#22767](https://github.com/RocketChat/Rocket.Chat/pull/22767) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix empty tag field ([#22767](https://github.com/RocketChat/Rocket.Chat/pull/22767)) -- Regression: fix non ee tag field on canned responses ([#22775](https://github.com/RocketChat/Rocket.Chat/pull/22775) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: fix non ee tag field on canned responses ([#22775](https://github.com/RocketChat/Rocket.Chat/pull/22775)) -- Regression: fix outdated data on canned filters ([#22766](https://github.com/RocketChat/Rocket.Chat/pull/22766) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: fix outdated data on canned filters ([#22766](https://github.com/RocketChat/Rocket.Chat/pull/22766)) -- Regression: Fix tooltip style in the "Busiest Chat Times" chart ([#22813](https://github.com/RocketChat/Rocket.Chat/pull/22813) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: Fix tooltip style in the "Busiest Chat Times" chart ([#22813](https://github.com/RocketChat/Rocket.Chat/pull/22813)) - Fix tooltip in the Engagement Dashboard's "Busiest Chat Times" chart (Hours). **Expected behavior:** ![busiest-times-ed](https://user-images.githubusercontent.com/36537004/127527827-465397ed-f089-4fb7-9ab2-6fa8cea6abdf.PNG) -- Regression: Fix users not being able to see the scope of the canned m… ([#22760](https://github.com/RocketChat/Rocket.Chat/pull/22760) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix users not being able to see the scope of the canned m… ([#22760](https://github.com/RocketChat/Rocket.Chat/pull/22760)) -- Regression: Fixes empty department field on edit canned responses ([#22741](https://github.com/RocketChat/Rocket.Chat/pull/22741) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Fixes empty department field on edit canned responses ([#22741](https://github.com/RocketChat/Rocket.Chat/pull/22741)) This fixes the empty department field when editing a canned response via table on omnichannel menu. this also convert some of the files to TS that were created in js initially, also created/adjusted some types -- Regression: Internal Error when saving files using GridFS ([#22792](https://github.com/RocketChat/Rocket.Chat/pull/22792) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Internal Error when saving files using GridFS ([#22792](https://github.com/RocketChat/Rocket.Chat/pull/22792)) - Regression: observe-sequence version syntax broken on IE ([#22557](https://github.com/RocketChat/Rocket.Chat/pull/22557)) -- Regression: Parse canned responses placeholders ([#22777](https://github.com/RocketChat/Rocket.Chat/pull/22777) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Parse canned responses placeholders ([#22777](https://github.com/RocketChat/Rocket.Chat/pull/22777)) - Regression: Prevent custom status from being visible in sequential messages ([#22733](https://github.com/RocketChat/Rocket.Chat/pull/22733)) @@ -4798,23 +4763,23 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/126641752-3163eb95-1cd4-4d99-a61a-4d06d9e7e13e.png) -- Regression: Properly force newline in attachment fields ([#22727](https://github.com/RocketChat/Rocket.Chat/pull/22727) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Properly force newline in attachment fields ([#22727](https://github.com/RocketChat/Rocket.Chat/pull/22727)) I've incorrectly enforcing the newline character in attachment fields, resulting in "<br />" text being rendered. -- Regression: Remove Tags from canned response filter ([#22779](https://github.com/RocketChat/Rocket.Chat/pull/22779) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Remove Tags from canned response filter ([#22779](https://github.com/RocketChat/Rocket.Chat/pull/22779)) -- Regression: Replaced manual state control with a .once event ([#22800](https://github.com/RocketChat/Rocket.Chat/pull/22800) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Replaced manual state control with a .once event ([#22800](https://github.com/RocketChat/Rocket.Chat/pull/22800)) -- Regression: Rocket.Chat crashes on startup if there's a Custom OAuth service configured ([#22740](https://github.com/RocketChat/Rocket.Chat/pull/22740) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Rocket.Chat crashes on startup if there's a Custom OAuth service configured ([#22740](https://github.com/RocketChat/Rocket.Chat/pull/22740)) -- Regression: roles.removeUserFromRole API not working with scoped roles. ([#22799](https://github.com/RocketChat/Rocket.Chat/pull/22799) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Regression: roles.removeUserFromRole API not working with scoped roles. ([#22799](https://github.com/RocketChat/Rocket.Chat/pull/22799)) -- Regression: Small UI changes Federation ([#22811](https://github.com/RocketChat/Rocket.Chat/pull/22811) by [@alansikora](https://github.com/alansikora) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Small UI changes Federation ([#22811](https://github.com/RocketChat/Rocket.Chat/pull/22811)) -- Regression: Text wrap in MarkdownTextEditor and PreviewText ([#22798](https://github.com/RocketChat/Rocket.Chat/pull/22798) by [@KevLehman](https://github.com/KevLehman) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Text wrap in MarkdownTextEditor and PreviewText ([#22798](https://github.com/RocketChat/Rocket.Chat/pull/22798)) -- Regression: Translate scope on canned responses dashboard ([#22773](https://github.com/RocketChat/Rocket.Chat/pull/22773) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Translate scope on canned responses dashboard ([#22773](https://github.com/RocketChat/Rocket.Chat/pull/22773)) - Release 3.16.4 ([#22815](https://github.com/RocketChat/Rocket.Chat/pull/22815)) @@ -4825,36 +4790,36 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Cosnavel](https://github.com/Cosnavel) -- [@Faria-TechWrite](https://github.com/Faria-TechWrite) -- [@KevLehman](https://github.com/KevLehman) - [@MaestroArt](https://github.com/MaestroArt) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@cprice-kgi](https://github.com/cprice-kgi) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@ericrosenthal](https://github.com/ericrosenthal) - [@g-thome](https://github.com/g-thome) - [@lucassartor](https://github.com/lucassartor) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@nmagedman](https://github.com/nmagedman) - [@ostjen](https://github.com/ostjen) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) - [@snyk-bot](https://github.com/snyk-bot) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@Faria-TechWrite](https://github.com/Faria-TechWrite) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.16.4 `2021-07-30 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -4894,12 +4859,12 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@g-thome](https://github.com/g-thome) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.16.2 @@ -4914,7 +4879,7 @@ ### 🐛 Bug fixes -- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Checks the list of agents if at least one is online ([#22584](https://github.com/RocketChat/Rocket.Chat/pull/22584)) - Error in permission check for getLivechatDepartmentByNameOrId method in Apps ([#22545](https://github.com/RocketChat/Rocket.Chat/pull/22545)) @@ -4928,19 +4893,16 @@ 🔍 Minor changes -- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Change the name of called methods in Users model ([#22620](https://github.com/RocketChat/Rocket.Chat/pull/22620)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@tiagoevanp](https://github.com/tiagoevanp) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.16.1 `2021-07-01 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -4977,7 +4939,7 @@ ### 🎉 New features -- Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188)) - Add new `teams.converToChannel` endpoint; - Update `ConvertToTeam` modal text (since this action can now be reversed); @@ -5005,45 +4967,45 @@ and besides that some suggars syntax like `addScript` and `addStyle` were added, this way the application already takes care of inserting the elements and providing the content automatically. -- Open modals in side effects outside React ([#22247](https://github.com/RocketChat/Rocket.Chat/pull/22247) by [@tassoevan](https://github.com/tassoevan)) +- Open modals in side effects outside React ([#22247](https://github.com/RocketChat/Rocket.Chat/pull/22247)) - Remove "Game Center" setting ([#22232](https://github.com/RocketChat/Rocket.Chat/pull/22232) by [@lolimay](https://github.com/lolimay)) ### 🚀 Improvements -- **APPS:** Refactor bridges ([#21253](https://github.com/RocketChat/Rocket.Chat/pull/21253) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Refactor bridges ([#21253](https://github.com/RocketChat/Rocket.Chat/pull/21253)) Make the bridge classes extend abstract classes provided by the engine instead of just implementing an interface. The new abstract classes feature proxy methods used for permission verification in each method. This is also offers space to add more behaviors before executing the actual bridge methods. -- Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312) by [@tassoevan](https://github.com/tassoevan)) +- Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312)) Added 2 new settings: - `Admin > Video Conference > Big Blue Button > Enable for teams` - `Admin > Video Conference > Jitsi > Enable in teams` -- Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker)) +- Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097)) - Add modal to close chats when tags/comments are not required ([#22245](https://github.com/RocketChat/Rocket.Chat/pull/22245) by [@rafaelblink](https://github.com/rafaelblink)) When neither tags or comments are required to close a livechat, show this modal instead: ![Screen Shot 2021-05-20 at 7 33 19 PM](https://user-images.githubusercontent.com/20868078/119057741-6af23c80-b9a3-11eb-902f-f8a7458ad11c.png) -- Fallback messages on contextual bar ([#22376](https://github.com/RocketChat/Rocket.Chat/pull/22376) by [@tassoevan](https://github.com/tassoevan)) +- Fallback messages on contextual bar ([#22376](https://github.com/RocketChat/Rocket.Chat/pull/22376)) ![image](https://user-images.githubusercontent.com/27704687/122301100-9569e380-ced6-11eb-992a-e3a7fd9d0d73.png) -- Missing tests to `fname` and `prid` in the `rooms.createDiscussion` endpoint ([#22223](https://github.com/RocketChat/Rocket.Chat/pull/22223) by [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Missing tests to `fname` and `prid` in the `rooms.createDiscussion` endpoint ([#22223](https://github.com/RocketChat/Rocket.Chat/pull/22223)) - Add tests to the values of `fname` and `prid` in the `rooms.createDiscussion` endpoint's results. -- New indexes for Omnichannel-related collections ([#22367](https://github.com/RocketChat/Rocket.Chat/pull/22367) by [@renatobecker](https://github.com/renatobecker)) +- New indexes for Omnichannel-related collections ([#22367](https://github.com/RocketChat/Rocket.Chat/pull/22367)) -- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Paginated department select on forward chat ([#22123](https://github.com/RocketChat/Rocket.Chat/pull/22123)) Changes the department dropdown to use the new paginated selects, allowing for searching and displaying more than 50 departments -- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) +- Paginated multiselect for EE tags ([#22315](https://github.com/RocketChat/Rocket.Chat/pull/22315) by [@rafaelblink](https://github.com/rafaelblink)) This uses the paginated multiselect for the EE tags selection, allowing more than 50 tags to be shown. @@ -5055,7 +5017,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/119752125-c8d6c680-be72-11eb-8444-2e0c7cb1c600.png) -- Rewrite create direct modal ([#22209](https://github.com/RocketChat/Rocket.Chat/pull/22209) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite create direct modal ([#22209](https://github.com/RocketChat/Rocket.Chat/pull/22209)) ![image](https://user-images.githubusercontent.com/27704687/120384584-bb02c480-c2fc-11eb-8e8e-c197b08b5201.png) @@ -5072,9 +5034,9 @@ ### 🐛 Bug fixes -- _updatedAt attribute not being automatically updated by raw models ([#22306](https://github.com/RocketChat/Rocket.Chat/pull/22306) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- _updatedAt attribute not being automatically updated by raw models ([#22306](https://github.com/RocketChat/Rocket.Chat/pull/22306)) -- **EE:** Canned responses can't be deleted ([#22095](https://github.com/RocketChat/Rocket.Chat/pull/22095) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **EE:** Canned responses can't be deleted ([#22095](https://github.com/RocketChat/Rocket.Chat/pull/22095) by [@rafaelblink](https://github.com/rafaelblink)) Deletion button has been removed from the edition option. @@ -5088,14 +5050,14 @@ Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup. -- **ENTERPRISE:** Prevent Visitor Abandonment after forwarding chat ([#22243](https://github.com/RocketChat/Rocket.Chat/pull/22243) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Prevent Visitor Abandonment after forwarding chat ([#22243](https://github.com/RocketChat/Rocket.Chat/pull/22243)) Currently the Visitor Abandonment timer isn't affected when the chat is forwarded. However this is affecting the UX in certain situations like eg: A bot forwarding a chat to an human agent ![image](https://user-images.githubusercontent.com/34130764/120896383-e4925780-c63e-11eb-937e-ffd7c4836159.png) To solve this issue, we'll now be stoping the Visitor Abandonment timer once a chat is forwarded. -- **IMPROVE:** Prevent creation of duplicated roles and new `roles.update` endpoint ([#22279](https://github.com/RocketChat/Rocket.Chat/pull/22279) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- **IMPROVE:** Prevent creation of duplicated roles and new `roles.update` endpoint ([#22279](https://github.com/RocketChat/Rocket.Chat/pull/22279) by [@lucassartor](https://github.com/lucassartor)) Currently, the action of updating a role is broken: because roles have their `_id` = `name`, when updating a role there's no way to validate if the user is trying to update or create a new role with a name that already exists - which causes wrong behaviors, such as roles with the same name and not being able to update them. @@ -5111,9 +5073,9 @@ FIxes erros where, on HA setups, instances that DID NOT originate the action of uninstalling and updating an app would maintain the wrong status of apps when they received the notification of these events via Streamer. -- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290) by [@tassoevan](https://github.com/tassoevan)) +- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290)) -- Auditing page not printing all messages ([#22272](https://github.com/RocketChat/Rocket.Chat/pull/22272) by [@tassoevan](https://github.com/tassoevan)) +- Auditing page not printing all messages ([#22272](https://github.com/RocketChat/Rocket.Chat/pull/22272)) Changed CSS so printed media from the auditing page includes all page content. @@ -5125,7 +5087,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/120216113-f8882480-c20c-11eb-9afb-b127e66a43da.png) -- Cancel button and success toast at Leave Team modal ([#22373](https://github.com/RocketChat/Rocket.Chat/pull/22373) by [@tassoevan](https://github.com/tassoevan)) +- Cancel button and success toast at Leave Team modal ([#22373](https://github.com/RocketChat/Rocket.Chat/pull/22373)) - Chore: `team.addMembers` doesn't add member to main team room ([#22169](https://github.com/RocketChat/Rocket.Chat/pull/22169) by [@lucassartor](https://github.com/lucassartor)) @@ -5143,15 +5105,15 @@ - DeepL supported languages ([#22326](https://github.com/RocketChat/Rocket.Chat/pull/22326) by [@mrsimpson](https://github.com/mrsimpson)) -- Error generating Jitsi Token ([#22301](https://github.com/RocketChat/Rocket.Chat/pull/22301) by [@tassoevan](https://github.com/tassoevan)) +- Error generating Jitsi Token ([#22301](https://github.com/RocketChat/Rocket.Chat/pull/22301)) -- Game center close button ([#22353](https://github.com/RocketChat/Rocket.Chat/pull/22353) by [@tassoevan](https://github.com/tassoevan)) +- Game center close button ([#22353](https://github.com/RocketChat/Rocket.Chat/pull/22353)) ![Peek 2021-06-14 18-19](https://user-images.githubusercontent.com/27704687/121960896-155c4600-cd3d-11eb-9be9-9712f4a1087b.gif) -- Jitsi integration sending random "join now" messages ([#22277](https://github.com/RocketChat/Rocket.Chat/pull/22277) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Jitsi integration sending random "join now" messages ([#22277](https://github.com/RocketChat/Rocket.Chat/pull/22277)) -- LDAP and SAML: changed usernames are not reflected on old data ([#22304](https://github.com/RocketChat/Rocket.Chat/pull/22304) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP and SAML: changed usernames are not reflected on old data ([#22304](https://github.com/RocketChat/Rocket.Chat/pull/22304)) - Members tab visual issues ([#22138](https://github.com/RocketChat/Rocket.Chat/pull/22138)) @@ -5167,7 +5129,7 @@ This PR overrides the function that processes the data for that specific connection, preventing the cache and everything else to be processed since we already have our low-level listener to process the data. -- Message box hiding on mobile view (Safari) ([#22212](https://github.com/RocketChat/Rocket.Chat/pull/22212) by [@tassoevan](https://github.com/tassoevan)) +- Message box hiding on mobile view (Safari) ([#22212](https://github.com/RocketChat/Rocket.Chat/pull/22212)) ### before ![image](https://user-images.githubusercontent.com/27704687/120404256-5b1c1600-c31c-11eb-96e9-860e4132db5f.png) @@ -5193,7 +5155,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/121606635-e97f4e80-ca24-11eb-81f7-af8b0cc41c89.png) -- Not possible to edit some messages inside threads ([#22325](https://github.com/RocketChat/Rocket.Chat/pull/22325) by [@tassoevan](https://github.com/tassoevan)) +- Not possible to edit some messages inside threads ([#22325](https://github.com/RocketChat/Rocket.Chat/pull/22325)) ### Before ![before](https://user-images.githubusercontent.com/27704687/121755733-4eeb4200-caee-11eb-9d77-1b498c38c478.gif) @@ -5203,27 +5165,27 @@ - Notifications not using user's name ([#22309](https://github.com/RocketChat/Rocket.Chat/pull/22309)) -- OAuth login not working on electron app with temp sessions. ([#22401](https://github.com/RocketChat/Rocket.Chat/pull/22401) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- OAuth login not working on electron app with temp sessions. ([#22401](https://github.com/RocketChat/Rocket.Chat/pull/22401)) -- Omnichannel information panel is not displaying departments correctly ([#22155](https://github.com/RocketChat/Rocket.Chat/pull/22155) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel information panel is not displaying departments correctly ([#22155](https://github.com/RocketChat/Rocket.Chat/pull/22155)) -- Permission check for teams.listRoomsOfUser ([#22313](https://github.com/RocketChat/Rocket.Chat/pull/22313) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Permission check for teams.listRoomsOfUser ([#22313](https://github.com/RocketChat/Rocket.Chat/pull/22313)) If the user is trying to list his own channels, the permission check is skipped. -- Read receipts are broken ([#22203](https://github.com/RocketChat/Rocket.Chat/pull/22203) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Read receipts are broken ([#22203](https://github.com/RocketChat/Rocket.Chat/pull/22203)) -- Remove invalid check before sending notifications to Omnichannel online agents ([#22278](https://github.com/RocketChat/Rocket.Chat/pull/22278) by [@renatobecker](https://github.com/renatobecker)) +- Remove invalid check before sending notifications to Omnichannel online agents ([#22278](https://github.com/RocketChat/Rocket.Chat/pull/22278)) -- Remove useless message options from Omnichannel Rooms ([#21549](https://github.com/RocketChat/Rocket.Chat/pull/21549) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Remove useless message options from Omnichannel Rooms ([#21549](https://github.com/RocketChat/Rocket.Chat/pull/21549) by [@rafaelblink](https://github.com/rafaelblink)) - Removed follow button from message box in threads ([#21019](https://github.com/RocketChat/Rocket.Chat/pull/21019) by [@Darshilp326](https://github.com/Darshilp326)) Removed follow button from message box as it was coinciding with audio/file message in threads. -- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395) by [@tassoevan](https://github.com/tassoevan)) +- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395)) -- Sidebar not closing when clicking on a channel ([#22271](https://github.com/RocketChat/Rocket.Chat/pull/22271) by [@tassoevan](https://github.com/tassoevan)) +- Sidebar not closing when clicking on a channel ([#22271](https://github.com/RocketChat/Rocket.Chat/pull/22271)) ### before ![before](https://user-images.githubusercontent.com/27704687/121074843-c6e20100-c7aa-11eb-88db-76e39b57b064.gif) @@ -5231,20 +5193,20 @@ ### after ![after](https://user-images.githubusercontent.com/27704687/121074860-cb0e1e80-c7aa-11eb-9e96-06d75044b763.gif) -- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291) by [@renatobecker](https://github.com/renatobecker)) +- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291)) - Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) -- Unable to change protected role's description ([#22402](https://github.com/RocketChat/Rocket.Chat/pull/22402) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Unable to change protected role's description ([#22402](https://github.com/RocketChat/Rocket.Chat/pull/22402) by [@lucassartor](https://github.com/lucassartor)) -- Undefined error when forwarding chats to offline department ([#22154](https://github.com/RocketChat/Rocket.Chat/pull/22154) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Undefined error when forwarding chats to offline department ([#22154](https://github.com/RocketChat/Rocket.Chat/pull/22154) by [@rafaelblink](https://github.com/rafaelblink)) ![Screen Shot 2021-05-26 at 5 29 17 PM](https://user-images.githubusercontent.com/59577424/119727520-c495b380-be48-11eb-88a2-158017c7ad0a.png) Omnichannel agents are facing the error shown above when forwarding chats to offline departments. The error usually takes place when the routing system algorithm is **Manual Selection**. -- Unread bar in channel flash quickly and then disappear ([#22275](https://github.com/RocketChat/Rocket.Chat/pull/22275) by [@tassoevan](https://github.com/tassoevan)) +- Unread bar in channel flash quickly and then disappear ([#22275](https://github.com/RocketChat/Rocket.Chat/pull/22275)) ![unread_messages](https://user-images.githubusercontent.com/27704687/121092865-960dc600-c7c2-11eb-9074-81060d826811.gif) @@ -5275,15 +5237,15 @@ ![image](https://user-images.githubusercontent.com/40830821/119576154-93f14380-bd8e-11eb-8885-f889f2939bf4.png) ![image](https://user-images.githubusercontent.com/40830821/119576219-b5eac600-bd8e-11eb-832c-ea7a17a56bdd.png) -- Chore: Check PR Title on every submission ([#22140](https://github.com/RocketChat/Rocket.Chat/pull/22140) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Check PR Title on every submission ([#22140](https://github.com/RocketChat/Rocket.Chat/pull/22140)) -- Chore: Enable push gateway only if the server is registered ([#22346](https://github.com/RocketChat/Rocket.Chat/pull/22346) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Chore: Enable push gateway only if the server is registered ([#22346](https://github.com/RocketChat/Rocket.Chat/pull/22346) by [@lucassartor](https://github.com/lucassartor)) Currently, when creating an unregistered server, the default value of the push gateway setting is set to true and is disabled (it can't be changed unless the server is registered). This is a wrong behavior as an unregistered server **can't** use the push gateway. This PR creates a validation to check if the server is registered when enabling the push gateway. That way, even if the push gateway setting is turned on, but the server is unregistered, the push gateway **won't** work - it will behave like it is off. -- Chore: Enforce TypeScript on Storybook ([#22317](https://github.com/RocketChat/Rocket.Chat/pull/22317) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Enforce TypeScript on Storybook ([#22317](https://github.com/RocketChat/Rocket.Chat/pull/22317)) Rewrite some Storybook stories in TypeScript, as an example. @@ -5306,11 +5268,11 @@ - Merge master into develop & Set version to 3.16.0-develop ([#22184](https://github.com/RocketChat/Rocket.Chat/pull/22184)) -- Refactor few methods to improve Omnichannel flow ([#22321](https://github.com/RocketChat/Rocket.Chat/pull/22321) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Refactor few methods to improve Omnichannel flow ([#22321](https://github.com/RocketChat/Rocket.Chat/pull/22321)) -- Regression: Api tests not running ([#22369](https://github.com/RocketChat/Rocket.Chat/pull/22369) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Api tests not running ([#22369](https://github.com/RocketChat/Rocket.Chat/pull/22369)) -- Regression: Block-size property on firefox ([#22433](https://github.com/RocketChat/Rocket.Chat/pull/22433) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Block-size property on firefox ([#22433](https://github.com/RocketChat/Rocket.Chat/pull/22433)) - Regression: CSP for external Media and Frames ([#22465](https://github.com/RocketChat/Rocket.Chat/pull/22465)) @@ -5322,7 +5284,7 @@ - Regression: Fix livechat find departments ([#22472](https://github.com/RocketChat/Rocket.Chat/pull/22472)) -- Regression: Missing flexDirection on select field ([#22300](https://github.com/RocketChat/Rocket.Chat/pull/22300) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Missing flexDirection on select field ([#22300](https://github.com/RocketChat/Rocket.Chat/pull/22300)) ### before ![image](https://user-images.githubusercontent.com/27704687/121425905-532a2a80-c949-11eb-885f-e8ddaf5c8d5c.png) @@ -5330,42 +5292,42 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/121425770-283fd680-c949-11eb-8d94-86886f174599.png) -- Regression: RoomProvider using wrong types ([#22370](https://github.com/RocketChat/Rocket.Chat/pull/22370) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: RoomProvider using wrong types ([#22370](https://github.com/RocketChat/Rocket.Chat/pull/22370)) -- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483) by [@renatobecker](https://github.com/renatobecker)) +- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483)) -- Update README.md ([#22461](https://github.com/RocketChat/Rocket.Chat/pull/22461) by [@Faria-TechWrite](https://github.com/Faria-TechWrite)) +- Update README.md ([#22461](https://github.com/RocketChat/Rocket.Chat/pull/22461)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Darshilp326](https://github.com/Darshilp326) -- [@Faria-TechWrite](https://github.com/Faria-TechWrite) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@mrsimpson](https://github.com/mrsimpson) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) - [@rexzing](https://github.com/rexzing) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@Faria-TechWrite](https://github.com/Faria-TechWrite) +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.15.3 `2021-07-01 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -5401,7 +5363,7 @@ Fix omnichannel monitor permissions being added back to omnichannel monitor role on every startup. -- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291) by [@renatobecker](https://github.com/renatobecker)) +- Sound notification is not emitted when the Omnichannel chat comes from another department ([#22291](https://github.com/RocketChat/Rocket.Chat/pull/22291)) - Visitor info screen being updated multiple times ([#22482](https://github.com/RocketChat/Rocket.Chat/pull/22482)) @@ -5409,16 +5371,13 @@ 🔍 Minor changes -- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483) by [@renatobecker](https://github.com/renatobecker)) +- Release 3.15.2 ([#22483](https://github.com/RocketChat/Rocket.Chat/pull/22483)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.15.1 @@ -5433,9 +5392,9 @@ ### 🐛 Bug fixes -- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290) by [@tassoevan](https://github.com/tassoevan)) +- Attachments and avatars not rendered if deployed on subfolder ([#22290](https://github.com/RocketChat/Rocket.Chat/pull/22290)) -- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395) by [@tassoevan](https://github.com/tassoevan)) +- Setup wizard infinite loop when on subfolder. ([#22395](https://github.com/RocketChat/Rocket.Chat/pull/22395)) - Support DISABLE_PRESENCE_MONITOR env var in new DB watchers ([#22257](https://github.com/RocketChat/Rocket.Chat/pull/22257)) @@ -5447,14 +5406,11 @@ -### 👩‍💻👨‍💻 Contributors 😍 - -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.15.0 `2021-05-28 · 8 🎉 · 12 🚀 · 62 🐛 · 47 🔍 · 34 👩‍💻👨‍💻` @@ -5468,20 +5424,20 @@ ### 🎉 New features -- **APPS:** Ability for Rocket.Chat Apps to delete rooms ([#21875](https://github.com/RocketChat/Rocket.Chat/pull/21875) by [@lucassartor](https://github.com/lucassartor) & [@thassiov](https://github.com/thassiov)) +- **APPS:** Ability for Rocket.Chat Apps to delete rooms ([#21875](https://github.com/RocketChat/Rocket.Chat/pull/21875) by [@lucassartor](https://github.com/lucassartor)) Adds a new `delete` method on the rooms bridge in order to trigger the deletion of rooms via the Apps-Engine. -- **ENTERPRISE:** Introduce Load Rotation routing algorithm for Omnichannel ([#22090](https://github.com/RocketChat/Rocket.Chat/pull/22090) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Introduce Load Rotation routing algorithm for Omnichannel ([#22090](https://github.com/RocketChat/Rocket.Chat/pull/22090) by [@rafaelblink](https://github.com/rafaelblink)) This PR introduces a new Auto Chat Distribution (ACD) algorithm for Omnichannel: **Load Rotation**. The algorithm distributes chats to agents one by one, which means that when a new chat arrives, the agent with the oldest routing assignment time will be selected to serve the chat, regardless of the number of chats in progress each agent has. ![Screen Shot 2021-05-20 at 5 17 40 PM](https://user-images.githubusercontent.com/59577424/119043752-c61a3400-b98f-11eb-8543-f3176879af1d.png) -- Back button for Omnichannel ([#21647](https://github.com/RocketChat/Rocket.Chat/pull/21647) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Back button for Omnichannel ([#21647](https://github.com/RocketChat/Rocket.Chat/pull/21647) by [@rafaelblink](https://github.com/rafaelblink)) -- New Message Parser ([#21962](https://github.com/RocketChat/Rocket.Chat/pull/21962) by [@tassoevan](https://github.com/tassoevan)) +- New Message Parser ([#21962](https://github.com/RocketChat/Rocket.Chat/pull/21962)) The objective is to put an end to the confusion that we face having multiple parsers, and the problems that this brings, it is still experimental then users need to choose to use it. @@ -5489,7 +5445,7 @@ Besides, we no longer render raw html, instead we use components, so the xss attacks are over (the easy ones at least). Without further discoveries and at the fronted, we only reder what is delivered thus improving our performance. This can be used in multiple places, (message, alert, sidenav and in the entire mobile application.) -- Option to notify failed login attempts to a channel ([#21968](https://github.com/RocketChat/Rocket.Chat/pull/21968) by [@KevLehman](https://github.com/KevLehman)) +- Option to notify failed login attempts to a channel ([#21968](https://github.com/RocketChat/Rocket.Chat/pull/21968)) - Option to prevent users from using Invisible status ([#20084](https://github.com/RocketChat/Rocket.Chat/pull/20084) by [@lucassartor](https://github.com/lucassartor)) @@ -5510,7 +5466,7 @@ } ``` -- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) +- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@rafaelblink](https://github.com/rafaelblink)) REQUIRES https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/447 @@ -5520,20 +5476,20 @@ This Affects the monitors and departments inputs -- Remove exif metadata from uploaded files ([#22044](https://github.com/RocketChat/Rocket.Chat/pull/22044) by [@KevLehman](https://github.com/KevLehman)) +- Remove exif metadata from uploaded files ([#22044](https://github.com/RocketChat/Rocket.Chat/pull/22044)) ### 🚀 Improvements -- Add groups to the directory channels list ([#21687](https://github.com/RocketChat/Rocket.Chat/pull/21687) by [@KevLehman](https://github.com/KevLehman) & [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Add groups to the directory channels list ([#21687](https://github.com/RocketChat/Rocket.Chat/pull/21687)) - Add groups (private channels) to the directory channels list. Only groups in which the logged user is subscribed are shown in the list. -- Add support to queries in `channels.members` and `groups.members` endpoints ([#21414](https://github.com/RocketChat/Rocket.Chat/pull/21414) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Add support to queries in `channels.members` and `groups.members` endpoints ([#21414](https://github.com/RocketChat/Rocket.Chat/pull/21414)) - Add support to queries (within the `query` parameter) in `channels.members` and `groups.members` endpoints. -- Add support to queries in the `im.members` endpoint ([#21471](https://github.com/RocketChat/Rocket.Chat/pull/21471) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Add support to queries in the `im.members` endpoint ([#21471](https://github.com/RocketChat/Rocket.Chat/pull/21471)) - Add support to queries within the `name`, `username` and `status` parameters. @@ -5543,7 +5499,7 @@ - CAS popup login size input type ([#21907](https://github.com/RocketChat/Rocket.Chat/pull/21907) by [@Deepak-learner](https://github.com/Deepak-learner)) -- Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor)) Currently, there are some inconsistencies and incorrect behaviors on the 2FA settings, such as: @@ -5560,18 +5516,18 @@ ![image](https://user-images.githubusercontent.com/27704687/118047610-613c5980-b351-11eb-96c7-6b28ae24363e.png) -- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@rafaelblink](https://github.com/rafaelblink)) - Prevent gallery to close when clicking on a non-zoomable image ([#21854](https://github.com/RocketChat/Rocket.Chat/pull/21854)) - Replace method to API Endpoint on Prune Messages ([#21836](https://github.com/RocketChat/Rocket.Chat/pull/21836)) -- Support for Google OAuth for mobile app ([#22014](https://github.com/RocketChat/Rocket.Chat/pull/22014) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Support for Google OAuth for mobile app ([#22014](https://github.com/RocketChat/Rocket.Chat/pull/22014)) ### 🐛 Bug fixes -- **APPS:** Scheduler duplicating recurrent tasks after server restart ([#21866](https://github.com/RocketChat/Rocket.Chat/pull/21866) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Scheduler duplicating recurrent tasks after server restart ([#21866](https://github.com/RocketChat/Rocket.Chat/pull/21866)) Reintroduces the old method for creating recurring tasks in the apps' scheduler bridge to ensure tasks won't be duplicated. @@ -5579,15 +5535,15 @@ In the case of server restarts, every time this event happened and the app had the `startupSetting` configured to use _recurring tasks_, they would get recreated the same number of times. In the case of a server that restarts frequently (_n_ times), there would be the same (_n_) number of tasks duplicated (and running) in the system. -- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22128](https://github.com/RocketChat/Rocket.Chat/pull/22128) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22128](https://github.com/RocketChat/Rocket.Chat/pull/22128)) Currently, Omnichannel Monitors just can't forward chats to a department that is part of a `Business Unit` they're not supervising. This issue is causing critical problems on customer operations since this behaviour is not by design. The reason this issue is taking place is that, by design, Monitors just have access to departments related to the `Business Units` they're monitoring, but this restriction is designed only for Omnichannel management areas, which means in case the monitor is, also, an agent, they're supposed to be able to forward a chat to any available departments regardless the `Business Units` it's associated with. So, initially, the restriction was implemented on the `Department Model` and, now, we're implementing the logic properly and introducing a new parameter to department endpoints, so the client will define which type of departments it needs. -- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142)) -- Adding Custom Fields to show on user info check ([#20955](https://github.com/RocketChat/Rocket.Chat/pull/20955) by [@tassoevan](https://github.com/tassoevan)) +- Adding Custom Fields to show on user info check ([#20955](https://github.com/RocketChat/Rocket.Chat/pull/20955)) The setting custom fields to show under user info was not being used when rendering fields in user info. This pr adds those checks and only renders the fields mentioned under in admin -> accounts -> Custom Fields to Show in User Info. @@ -5595,11 +5551,11 @@ Added 'add-team-channel' permission to the 2 buttons in team channels contextual bar, for adding channels to teams. -- Adding retentionEnabledDefault check before showing warning message ([#20692](https://github.com/RocketChat/Rocket.Chat/pull/20692) by [@tassoevan](https://github.com/tassoevan)) +- Adding retentionEnabledDefault check before showing warning message ([#20692](https://github.com/RocketChat/Rocket.Chat/pull/20692)) Added check for retentionEnabledDefault before showing prune warning message. -- App crashes when downloads come from WebDAV and the server is not available ([#21985](https://github.com/RocketChat/Rocket.Chat/pull/21985) by [@KevLehman](https://github.com/KevLehman)) +- App crashes when downloads come from WebDAV and the server is not available ([#21985](https://github.com/RocketChat/Rocket.Chat/pull/21985)) - App license error detail message removed ([#22091](https://github.com/RocketChat/Rocket.Chat/pull/22091)) @@ -5611,9 +5567,9 @@ Captura de Tela 2021-05-06 às 18 07 07 -- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015)) -- Contact Bar not reactive ([#22016](https://github.com/RocketChat/Rocket.Chat/pull/22016) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Contact Bar not reactive ([#22016](https://github.com/RocketChat/Rocket.Chat/pull/22016) by [@rafaelblink](https://github.com/rafaelblink)) - Convert a channel to Team Modal Visual Issues ([#21967](https://github.com/RocketChat/Rocket.Chat/pull/21967)) @@ -5627,7 +5583,7 @@ - Custom OAuth not being completely deleted ([#21637](https://github.com/RocketChat/Rocket.Chat/pull/21637) by [@siva2204](https://github.com/siva2204)) -- Directory Table's Sort Function ([#21921](https://github.com/RocketChat/Rocket.Chat/pull/21921) by [@tassoevan](https://github.com/tassoevan)) +- Directory Table's Sort Function ([#21921](https://github.com/RocketChat/Rocket.Chat/pull/21921)) ### TableRow Margin Issue: ![image](https://user-images.githubusercontent.com/27704687/116907348-d6a07f80-ac17-11eb-9411-edfe0906bfe1.png) @@ -5637,7 +5593,7 @@ - Discussion names showing a random value ([#22172](https://github.com/RocketChat/Rocket.Chat/pull/22172)) -- Dismiss button for save your encryption password dialog Issue#13557 ([#19872](https://github.com/RocketChat/Rocket.Chat/pull/19872) by [@savish28](https://github.com/savish28) & [@tassoevan](https://github.com/tassoevan)) +- Dismiss button for save your encryption password dialog Issue#13557 ([#19872](https://github.com/RocketChat/Rocket.Chat/pull/19872) by [@savish28](https://github.com/savish28)) - Display Modes ([#22058](https://github.com/RocketChat/Rocket.Chat/pull/22058)) @@ -5657,7 +5613,7 @@ https://user-images.githubusercontent.com/45966964/117087470-d3101400-ad4f-11eb-8f44-0ebca830a4d8.mp4 -- errors when viewing a room that you're not subscribed to ([#21984](https://github.com/RocketChat/Rocket.Chat/pull/21984) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- errors when viewing a room that you're not subscribed to ([#21984](https://github.com/RocketChat/Rocket.Chat/pull/21984)) - Files list will not show deleted files. ([#21732](https://github.com/RocketChat/Rocket.Chat/pull/21732) by [@Darshilp326](https://github.com/Darshilp326)) @@ -5747,7 +5703,7 @@ - Missing proper permissions on Teams Channels ([#21946](https://github.com/RocketChat/Rocket.Chat/pull/21946)) -- No warning message is sent when user is removed from a team's main channel ([#21949](https://github.com/RocketChat/Rocket.Chat/pull/21949) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- No warning message is sent when user is removed from a team's main channel ([#21949](https://github.com/RocketChat/Rocket.Chat/pull/21949)) - Send a warning message to a team's main channel when a user is removed from the team; - Trigger events while removing a user from a team's main channel; @@ -5755,9 +5711,9 @@ - Not possible accept video call if "Hide right sidebar with click" is enabled ([#22175](https://github.com/RocketChat/Rocket.Chat/pull/22175)) -- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969) by [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969)) -- Open a new DM throwing error 404 ([#22100](https://github.com/RocketChat/Rocket.Chat/pull/22100) by [@tassoevan](https://github.com/tassoevan)) +- Open a new DM throwing error 404 ([#22100](https://github.com/RocketChat/Rocket.Chat/pull/22100)) Adapts the `openRoom` function to the new signature of `createDirectMessage`. @@ -5785,7 +5741,7 @@ ![redirect](https://user-images.githubusercontent.com/27704687/117078454-498d2180-ad10-11eb-9df2-936552a2b3ce.gif) -- Remove referer header when requesting attachment data ([#21987](https://github.com/RocketChat/Rocket.Chat/pull/21987) by [@KevLehman](https://github.com/KevLehman)) +- Remove referer header when requesting attachment data ([#21987](https://github.com/RocketChat/Rocket.Chat/pull/21987)) - Removed fields from User Info for which the user doesn't have permissions. ([#20923](https://github.com/RocketChat/Rocket.Chat/pull/20923) by [@Darshilp326](https://github.com/Darshilp326)) @@ -5793,11 +5749,11 @@ https://user-images.githubusercontent.com/55157259/109381351-f2c62e80-78ff-11eb-9289-e11072bf62f8.mp4 -- Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint ([#21539](https://github.com/RocketChat/Rocket.Chat/pull/21539) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint ([#21539](https://github.com/RocketChat/Rocket.Chat/pull/21539)) - Replace `query` param by `name`, `username` and `status` on the `teams.members` endpoint. -- Scenarios where 2FA enforcement was not working properly ([#22017](https://github.com/RocketChat/Rocket.Chat/pull/22017) by [@KevLehman](https://github.com/KevLehman)) +- Scenarios where 2FA enforcement was not working properly ([#22017](https://github.com/RocketChat/Rocket.Chat/pull/22017)) - Tooltip pointer is blocking Text ([#21645](https://github.com/RocketChat/Rocket.Chat/pull/21645) by [@sumukhah](https://github.com/sumukhah)) @@ -5828,7 +5784,7 @@ - Unable to get channels, sort by most recent message ([#21701](https://github.com/RocketChat/Rocket.Chat/pull/21701) by [@sumukhah](https://github.com/sumukhah)) -- Unable to update app manually ([#21215](https://github.com/RocketChat/Rocket.Chat/pull/21215) by [@thassiov](https://github.com/thassiov)) +- Unable to update app manually ([#21215](https://github.com/RocketChat/Rocket.Chat/pull/21215)) It allows for update of apps using a zip file. @@ -5842,7 +5798,7 @@ ![Peek 2021-05-13 11-18](https://user-images.githubusercontent.com/27704687/118138696-03555380-b3dd-11eb-8549-730fff0b4ea8.gif) -- Uploading files from WebDAV ([#21948](https://github.com/RocketChat/Rocket.Chat/pull/21948) by [@KevLehman](https://github.com/KevLehman)) +- Uploading files from WebDAV ([#21948](https://github.com/RocketChat/Rocket.Chat/pull/21948)) - User Impersonation through sendMessage API ([#20391](https://github.com/RocketChat/Rocket.Chat/pull/20391) by [@lucassartor](https://github.com/lucassartor)) @@ -5862,11 +5818,11 @@ Burger was not visible on a certain width, specifically between 600 to 780. if width is more than 780px sidebar is shown, if less than 600 then burger icon was shown. But it wasn't shown between 600px to 780 px. It was because for showing burger icon we were only checking for `isMobile` which is lenght only less than 600. So i added one more check for condition if length is less than 780 px. -- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947)) Fixes issue with the setting `Livechat_request_comment_when_closing_conversation` not working as intended -- Workaround for Autolinker phone problem ([#21515](https://github.com/RocketChat/Rocket.Chat/pull/21515) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Workaround for Autolinker phone problem ([#21515](https://github.com/RocketChat/Rocket.Chat/pull/21515)) - Wrong color and size, thread list Metrics ([#21950](https://github.com/RocketChat/Rocket.Chat/pull/21950)) @@ -5882,15 +5838,15 @@ 🔍 Minor changes -- [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043) by [@renatobecker](https://github.com/renatobecker)) +- [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043)) -- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048) by [@renatobecker](https://github.com/renatobecker)) +- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048)) - [FIXf] Parent Room Tag Overlapping ([#22009](https://github.com/RocketChat/Rocket.Chat/pull/22009)) ![tag](https://user-images.githubusercontent.com/27704687/117905720-069bf280-b2aa-11eb-81ed-a5b8c2152d54.gif) -- Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo) & [@KevLehman](https://github.com/KevLehman)) +- Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo)) Added two more test cases to the slash-command test suite: - 'should return an error when the command does not exist''; @@ -5904,7 +5860,7 @@ I added the missing Teams label in the i18n folder for EN, FR & NL -- Chore: Add mongo 4.2 to array of mongo versions supported ([#21550](https://github.com/RocketChat/Rocket.Chat/pull/21550) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Add mongo 4.2 to array of mongo versions supported ([#21550](https://github.com/RocketChat/Rocket.Chat/pull/21550)) - MongoDB 4.2 is now supported @@ -5916,7 +5872,7 @@ - Chore: Doc Client Readme ([#21588](https://github.com/RocketChat/Rocket.Chat/pull/21588) by [@umakantv](https://github.com/umakantv)) -- Chore: fix invalid type name on TS file ([#21814](https://github.com/RocketChat/Rocket.Chat/pull/21814) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Chore: fix invalid type name on TS file ([#21814](https://github.com/RocketChat/Rocket.Chat/pull/21814)) - Chore: Storybook organization and errors ([#21923](https://github.com/RocketChat/Rocket.Chat/pull/21923)) @@ -5945,7 +5901,7 @@ - Merge master into develop & Set version to 3.15.0-develop ([#21847](https://github.com/RocketChat/Rocket.Chat/pull/21847)) -- Regression: Add "User left team" message type ([#22109](https://github.com/RocketChat/Rocket.Chat/pull/22109) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: Add "User left team" message type ([#22109](https://github.com/RocketChat/Rocket.Chat/pull/22109)) - Add 'ult' system message type, which is sent when a user leaves a team ("Has left the team."). @@ -5953,7 +5909,7 @@ - Regression: Add impersonate permission to app role ([#22006](https://github.com/RocketChat/Rocket.Chat/pull/22006)) -- regression: bump Rocket.Chat.Fuselage package with paginated selects ([#22059](https://github.com/RocketChat/Rocket.Chat/pull/22059) by [@tiagoevanp](https://github.com/tiagoevanp)) +- regression: bump Rocket.Chat.Fuselage package with paginated selects ([#22059](https://github.com/RocketChat/Rocket.Chat/pull/22059)) - Regression: discussions display on sidebar ([#22157](https://github.com/RocketChat/Rocket.Chat/pull/22157)) @@ -5963,9 +5919,9 @@ ### group by type inactive ![image](https://user-images.githubusercontent.com/27704687/119742054-56a7b700-be5d-11eb-8810-e31d4216f573.png) -- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068)) -- Regression: Fix new 'message-impersonate' permission blocking livechat messages ([#21961](https://github.com/RocketChat/Rocket.Chat/pull/21961) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Fix new 'message-impersonate' permission blocking livechat messages ([#21961](https://github.com/RocketChat/Rocket.Chat/pull/21961)) - Regression: Fix send message validation ([#21982](https://github.com/RocketChat/Rocket.Chat/pull/21982)) @@ -5977,9 +5933,9 @@ - Regression: Improve migration 225 ([#22099](https://github.com/RocketChat/Rocket.Chat/pull/22099)) -- Regression: Make referrer header configurable ([#22126](https://github.com/RocketChat/Rocket.Chat/pull/22126) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Make referrer header configurable ([#22126](https://github.com/RocketChat/Rocket.Chat/pull/22126)) -- Regression: Match `name` or `fname` when fetching room to send notification for blocked log in attemps ([#22067](https://github.com/RocketChat/Rocket.Chat/pull/22067) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Match `name` or `fname` when fetching room to send notification for blocked log in attemps ([#22067](https://github.com/RocketChat/Rocket.Chat/pull/22067)) - regression: Migration 225 setting not being fetched correctly ([#22108](https://github.com/RocketChat/Rocket.Chat/pull/22108)) @@ -6012,7 +5968,7 @@ - Remove memory leak from userData ([#22094](https://github.com/RocketChat/Rocket.Chat/pull/22094) by [@g-thome](https://github.com/g-thome)) -- String helpers ([#21988](https://github.com/RocketChat/Rocket.Chat/pull/21988) by [@tassoevan](https://github.com/tassoevan)) +- String helpers ([#21988](https://github.com/RocketChat/Rocket.Chat/pull/21988)) It uses string helpers from a external package (`@rocket.chat/string-helpers`). @@ -6028,38 +5984,38 @@ - [@Deepak-learner](https://github.com/Deepak-learner) - [@EduardoPicolo](https://github.com/EduardoPicolo) - [@Jeanstaquet](https://github.com/Jeanstaquet) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aviaviavi](https://github.com/aviaviavi) - [@bhavayAnand9](https://github.com/bhavayAnand9) - [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@lucassartor](https://github.com/lucassartor) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) - [@renancleyson-dev](https://github.com/renancleyson-dev) -- [@renatobecker](https://github.com/renatobecker) - [@savish28](https://github.com/savish28) - [@siva2204](https://github.com/siva2204) - [@sumukhah](https://github.com/sumukhah) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@umakantv](https://github.com/umakantv) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.14.5 @@ -6128,7 +6084,7 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Monitors can't forward chats to departments that they are not supervising ([#22142](https://github.com/RocketChat/Rocket.Chat/pull/22142))
🔍 Minor changes @@ -6138,13 +6094,10 @@
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.14.2 @@ -6171,11 +6124,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) - [@g-thome](https://github.com/g-thome) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.14.1 @@ -6190,7 +6143,7 @@ ### 🎉 New features -- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink)) +- Paginated and Filtered selects on new/edit unit ([#22052](https://github.com/RocketChat/Rocket.Chat/pull/22052) by [@rafaelblink](https://github.com/rafaelblink)) REQUIRES https://github.com/RocketChat/Rocket.Chat.Fuselage/pull/447 @@ -6205,18 +6158,18 @@ - Forwarding Department behaviour with Waiting queue feature ([#22043](https://github.com/RocketChat/Rocket.Chat/pull/22043)) -- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Room Information panel flow when user save or close on form page. ([#21688](https://github.com/RocketChat/Rocket.Chat/pull/21688) by [@rafaelblink](https://github.com/rafaelblink)) ### 🐛 Bug fixes -- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Close stream properly at Omnichannel room when move to queue ([#22015](https://github.com/RocketChat/Rocket.Chat/pull/22015)) - IE11 support ([#21893](https://github.com/RocketChat/Rocket.Chat/pull/21893)) -- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969) by [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Notify with sound first message in queue list ([#21969](https://github.com/RocketChat/Rocket.Chat/pull/21969)) -- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- When closing chats a comment is always required ([#21947](https://github.com/RocketChat/Rocket.Chat/pull/21947)) Fixes issue with the setting `Livechat_request_comment_when_closing_conversation` not working as intended @@ -6224,26 +6177,26 @@ 🔍 Minor changes -- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048) by [@renatobecker](https://github.com/renatobecker)) +- [EE] Omnichannel monitors not authorized to view departments ([#22048](https://github.com/RocketChat/Rocket.Chat/pull/22048)) -- [Patch] [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22077](https://github.com/RocketChat/Rocket.Chat/pull/22077) by [@renatobecker](https://github.com/renatobecker) & [@tiagoevanp](https://github.com/tiagoevanp)) +- [Patch] [EE] Improve Forwarding Department behaviour with Waiting queue feature ([#22077](https://github.com/RocketChat/Rocket.Chat/pull/22077)) -- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- regression: fix departments with empty ancestors not being returned ([#22068](https://github.com/RocketChat/Rocket.Chat/pull/22068)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@dougfabris](https://github.com/dougfabris) - [@ggazzo](https://github.com/ggazzo) - [@murtaza98](https://github.com/murtaza98) +- [@renatobecker](https://github.com/renatobecker) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.14.0 `2021-04-28 · 9 🎉 · 9 🚀 · 55 🐛 · 38 🔍 · 30 👩‍💻👨‍💻` @@ -6265,13 +6218,13 @@ Adding the `user` information when installing and uninstalling an App to the Apps-Engine. -- **ENTERPRISE:** LDAP Teams Sync ([#21658](https://github.com/RocketChat/Rocket.Chat/pull/21658) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- **ENTERPRISE:** LDAP Teams Sync ([#21658](https://github.com/RocketChat/Rocket.Chat/pull/21658)) - **Enterprise:** Second layer encryption for data transport (alpha) ([#21692](https://github.com/RocketChat/Rocket.Chat/pull/21692)) The second layer encryption for data transport works implementing the ECDH algorithm where session keys are exchanged before the rest of the communication. This feature is **enterprise only** since it requires the micro-services architecture and it's in the early stage of tests as an **alpha** feature and documentation may not be available before the beta stage. -- New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318) by [@tassoevan](https://github.com/tassoevan)) +- New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318)) This _small_ PR does the following: @@ -6287,11 +6240,11 @@ - `import/named`, avoiding broken named imports. - A bunch of components were refactored to match the new ESLint rules. -- On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink)) ![image](https://user-images.githubusercontent.com/34130764/115442079-3a49a680-a22f-11eb-9ee8-6c705097cd57.png) -- Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607)) - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; @@ -6301,20 +6254,20 @@ ![Password_Change](https://user-images.githubusercontent.com/36537004/115035168-ac726200-9ea2-11eb-93c6-fc8182ba5f3f.png) ![Password_History](https://user-images.githubusercontent.com/36537004/115035175-ad0af880-9ea2-11eb-9f40-94c6327a9854.png) -- REST endpoint `teams.update` ([#21134](https://github.com/RocketChat/Rocket.Chat/pull/21134) by [@KevLehman](https://github.com/KevLehman) & [@g-thome](https://github.com/g-thome)) +- REST endpoint `teams.update` ([#21134](https://github.com/RocketChat/Rocket.Chat/pull/21134) by [@g-thome](https://github.com/g-thome)) add teams.update endpoint -- Standard Importer Structure ([#18357](https://github.com/RocketChat/Rocket.Chat/pull/18357) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Standard Importer Structure ([#18357](https://github.com/RocketChat/Rocket.Chat/pull/18357)) ### 🚀 Improvements -- **APPS:** Scheduler option to skip immediate execution of recurring jobs ([#21353](https://github.com/RocketChat/Rocket.Chat/pull/21353) by [@lolimay](https://github.com/lolimay) & [@thassiov](https://github.com/thassiov)) +- **APPS:** Scheduler option to skip immediate execution of recurring jobs ([#21353](https://github.com/RocketChat/Rocket.Chat/pull/21353) by [@lolimay](https://github.com/lolimay)) Create and schedule a task manually at `scheduleRecurring` method so the first iteration runs after the configured interval. This is accomplished by adding the setting `skipImmediate: true` when setting up the task. -- Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016)) Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): - admin; @@ -6336,17 +6289,17 @@ - Add support to range downloads on file system storage ([#21463](https://github.com/RocketChat/Rocket.Chat/pull/21463)) -- Alert on team deletion ([#21617](https://github.com/RocketChat/Rocket.Chat/pull/21617) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Alert on team deletion ([#21617](https://github.com/RocketChat/Rocket.Chat/pull/21617)) Screen Shot 2021-04-16 at 7 03 30 PM -- Do not require pre-configured tags in Omnichannel chats ([#21488](https://github.com/RocketChat/Rocket.Chat/pull/21488) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Do not require pre-configured tags in Omnichannel chats ([#21488](https://github.com/RocketChat/Rocket.Chat/pull/21488) by [@rafaelblink](https://github.com/rafaelblink)) -- OEmbed details by requesting using the accept language header on the request ([#21686](https://github.com/RocketChat/Rocket.Chat/pull/21686) by [@KevLehman](https://github.com/KevLehman)) +- OEmbed details by requesting using the accept language header on the request ([#21686](https://github.com/RocketChat/Rocket.Chat/pull/21686)) - Send `Accept-Language` header on oembed requests -- Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593) by [@KevLehman](https://github.com/KevLehman)) +- Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593)) - Create new MediaService (ideally, should be in charge of all media-related operations) - Resize emojis to 128x128 @@ -6354,13 +6307,13 @@ ### 🐛 Bug fixes -- **Enterprise:** Omnichannel simultaneous chat limit is not properly checking the limit by department ([#21839](https://github.com/RocketChat/Rocket.Chat/pull/21839) by [@renatobecker](https://github.com/renatobecker)) +- **Enterprise:** Omnichannel simultaneous chat limit is not properly checking the limit by department ([#21839](https://github.com/RocketChat/Rocket.Chat/pull/21839)) The Omnichannel Concurrent Chat Limit feature is not working properly when checking the limit per department, the reason is that the algorithm that fetches the number of ongoing chats per agent wasn't considering the department of the subscriptions, hence, the number returned from DB was bigger than it should be. - Add tag input to Closing Chat modal ([#21462](https://github.com/RocketChat/Rocket.Chat/pull/21462) by [@rafaelblink](https://github.com/rafaelblink)) -- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469) by [@KevLehman](https://github.com/KevLehman)) +- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469)) - Fix Administration/Users pagination @@ -6374,7 +6327,7 @@ https://user-images.githubusercontent.com/45966964/114222225-93335800-996e-11eb-833f-568e83129aae.mp4 -- Allows more than 25 threads to be loaded, fixes #21507 ([#21508](https://github.com/RocketChat/Rocket.Chat/pull/21508) by [@Jeanstaquet](https://github.com/Jeanstaquet) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Allows more than 25 threads to be loaded, fixes #21507 ([#21508](https://github.com/RocketChat/Rocket.Chat/pull/21508) by [@Jeanstaquet](https://github.com/Jeanstaquet)) - Allows to display more than 25 users maximum in the users list ([#21518](https://github.com/RocketChat/Rocket.Chat/pull/21518) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6389,27 +6342,27 @@ https://user-images.githubusercontent.com/45966964/114249895-364e9680-999c-11eb-985c-47aedc763488.mp4 -- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470) by [@thassiov](https://github.com/thassiov)) +- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470)) Fixes the marketplace app installation not correctly displaying the permissions modal. -- Archive permissions for room moderator ([#21563](https://github.com/RocketChat/Rocket.Chat/pull/21563) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Archive permissions for room moderator ([#21563](https://github.com/RocketChat/Rocket.Chat/pull/21563)) -- Attachment files are not rendered properly on SMS channels ([#21746](https://github.com/RocketChat/Rocket.Chat/pull/21746) by [@renatobecker](https://github.com/renatobecker)) +- Attachment files are not rendered properly on SMS channels ([#21746](https://github.com/RocketChat/Rocket.Chat/pull/21746)) -- Audio message same pattern as image message ([#21466](https://github.com/RocketChat/Rocket.Chat/pull/21466) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Audio message same pattern as image message ([#21466](https://github.com/RocketChat/Rocket.Chat/pull/21466)) ![image](https://user-images.githubusercontent.com/17487063/113760168-4c363000-96ec-11eb-9138-0fbcedb3fa42.png) -- Avoid sidebar being broke ([#21490](https://github.com/RocketChat/Rocket.Chat/pull/21490) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Avoid sidebar being broke ([#21490](https://github.com/RocketChat/Rocket.Chat/pull/21490)) -- Change margin size for quote messages ([#21461](https://github.com/RocketChat/Rocket.Chat/pull/21461) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Change margin size for quote messages ([#21461](https://github.com/RocketChat/Rocket.Chat/pull/21461)) ![image](https://user-images.githubusercontent.com/17487063/113723723-02d3e980-96c8-11eb-9bc7-70aab5ea8091.png) -- Change team private info text ([#21535](https://github.com/RocketChat/Rocket.Chat/pull/21535) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Change team private info text ([#21535](https://github.com/RocketChat/Rocket.Chat/pull/21535)) -- Change the active appearance for toolbox buttons ([#21416](https://github.com/RocketChat/Rocket.Chat/pull/21416) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Change the active appearance for toolbox buttons ([#21416](https://github.com/RocketChat/Rocket.Chat/pull/21416)) ![image](https://user-images.githubusercontent.com/17487063/113359447-2d1b5500-931e-11eb-81fa-86f60fcee3a9.png) @@ -6417,7 +6370,7 @@ Permissions 'start-discussion-other-user' and 'start-discussion' are checked everywhere before letting anyone start any discussions, this permission check was missing for message box actions, so added it. -- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink)) - Correcting the case there are no result in admin users list ([#21556](https://github.com/RocketChat/Rocket.Chat/pull/21556) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6425,7 +6378,7 @@ - Discussions not showing in Safari ([#21270](https://github.com/RocketChat/Rocket.Chat/pull/21270) by [@Kartik18g](https://github.com/Kartik18g)) -- Don't allow whitespace on bold, italic and strike ([#21483](https://github.com/RocketChat/Rocket.Chat/pull/21483) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Don't allow whitespace on bold, italic and strike ([#21483](https://github.com/RocketChat/Rocket.Chat/pull/21483)) Stops the original markdown rendered from rendering empty bold, italic and strike text. Stops `_ _`, `* *` and `~ ~` @@ -6437,7 +6390,7 @@ ![image](https://user-images.githubusercontent.com/27704687/116125858-5ff60600-a69c-11eb-9859-41f7393b78bf.png) -- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink)) - Fix the bugs opening discussions ([#21557](https://github.com/RocketChat/Rocket.Chat/pull/21557) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6449,7 +6402,7 @@ - Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink)) - Margins on contextual bar information ([#21457](https://github.com/RocketChat/Rocket.Chat/pull/21457)) @@ -6472,49 +6425,49 @@ Additional checks on message_link field before rendering message contents -- Omnichannel Activity Monitor closing chats returned to the queue ([#21782](https://github.com/RocketChat/Rocket.Chat/pull/21782) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Activity Monitor closing chats returned to the queue ([#21782](https://github.com/RocketChat/Rocket.Chat/pull/21782)) Fix `VisitorInactivityMonitor` is still monitoring rooms that returned to `Queue Chats` - Omnichannel current chats and agents grid aren't sorting by status properly ([#21616](https://github.com/RocketChat/Rocket.Chat/pull/21616) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485)) The Omnichannel Queue Manager is returning outdated room object when delegating the chat to an agent, hence, our Livechat widget is affected and the agent assigned to the chat is not displayed on the widget, only after refreshing/reloading. - Omnichannel room information panel breaking due to lack of data verification ([#21608](https://github.com/RocketChat/Rocket.Chat/pull/21608) by [@rafaelblink](https://github.com/rafaelblink)) -- public teams not appearing on spotlight search results ([#21495](https://github.com/RocketChat/Rocket.Chat/pull/21495) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- public teams not appearing on spotlight search results ([#21495](https://github.com/RocketChat/Rocket.Chat/pull/21495)) -- Remove all agent subscriptions when an Omnichannel chat is closed ([#21509](https://github.com/RocketChat/Rocket.Chat/pull/21509) by [@renatobecker](https://github.com/renatobecker)) +- Remove all agent subscriptions when an Omnichannel chat is closed ([#21509](https://github.com/RocketChat/Rocket.Chat/pull/21509)) -- Remove size prop from StatusBullet component ([#21428](https://github.com/RocketChat/Rocket.Chat/pull/21428) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Remove size prop from StatusBullet component ([#21428](https://github.com/RocketChat/Rocket.Chat/pull/21428)) -- Rename Omnichannel Rooms, Inquiries and Subscriptions when the Contact Name changes ([#21513](https://github.com/RocketChat/Rocket.Chat/pull/21513) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Rename Omnichannel Rooms, Inquiries and Subscriptions when the Contact Name changes ([#21513](https://github.com/RocketChat/Rocket.Chat/pull/21513) by [@rafaelblink](https://github.com/rafaelblink)) -- Rename team not working properly ([#21552](https://github.com/RocketChat/Rocket.Chat/pull/21552) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Rename team not working properly ([#21552](https://github.com/RocketChat/Rocket.Chat/pull/21552)) - Selected channels are not showing in Teams ([#21669](https://github.com/RocketChat/Rocket.Chat/pull/21669) by [@sumukhah](https://github.com/sumukhah)) -- Send alternative color to unread sidebar icon ([#21432](https://github.com/RocketChat/Rocket.Chat/pull/21432) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Send alternative color to unread sidebar icon ([#21432](https://github.com/RocketChat/Rocket.Chat/pull/21432)) ![image](https://user-images.githubusercontent.com/17487063/113469819-08f76b00-9427-11eb-942e-783c186ba7cd.png) -- Show direct rooms as readonly when one of the users is deactivated ([#21684](https://github.com/RocketChat/Rocket.Chat/pull/21684) by [@KevLehman](https://github.com/KevLehman)) +- Show direct rooms as readonly when one of the users is deactivated ([#21684](https://github.com/RocketChat/Rocket.Chat/pull/21684)) -- Tag component is no longer rendering on Chat Room Information panel ([#21429](https://github.com/RocketChat/Rocket.Chat/pull/21429) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Tag component is no longer rendering on Chat Room Information panel ([#21429](https://github.com/RocketChat/Rocket.Chat/pull/21429) by [@rafaelblink](https://github.com/rafaelblink)) - Team types in admin -> rooms. ([#21612](https://github.com/RocketChat/Rocket.Chat/pull/21612)) ![print](https://user-images.githubusercontent.com/40830821/115068327-82339b00-9ec8-11eb-8e37-726baf9d2db0.jpg) -- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491) by [@KevLehman](https://github.com/KevLehman)) +- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491)) - Fix teams.listRooms pagination for non-admin users - Too many request on loadHistory method ([#21594](https://github.com/RocketChat/Rocket.Chat/pull/21594)) -- Toolbox icons order ([#21739](https://github.com/RocketChat/Rocket.Chat/pull/21739) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Toolbox icons order ([#21739](https://github.com/RocketChat/Rocket.Chat/pull/21739)) - Typos/missing elements in the French translation ([#21525](https://github.com/RocketChat/Rocket.Chat/pull/21525) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -6524,18 +6477,18 @@ - Test_Desktop_Notifications was missing in the EN and FR file ![image](https://user-images.githubusercontent.com/45966964/114290186-e7792d80-9a7d-11eb-8164-3b5e72e93703.png) -- Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489) by [@KevLehman](https://github.com/KevLehman)) +- Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489)) - Fix `updateMessage` to avoid parsing URLs inside markdown - Honor `parseUrls` property when updating messages -- Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534)) - User status out of sync ([#21656](https://github.com/RocketChat/Rocket.Chat/pull/21656)) - Wrong title on Omnichannel contact information panel ([#21682](https://github.com/RocketChat/Rocket.Chat/pull/21682) by [@rafaelblink](https://github.com/rafaelblink)) -- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink)) - Wrong user in user info ([#21451](https://github.com/RocketChat/Rocket.Chat/pull/21451)) @@ -6553,9 +6506,9 @@ The link for deployment methods in readme was corrected from https://rocket.chat/docs/installation/paas-deployments/ to https://docs.rocket.chat/installation/paas-deployments Some more links to the documentations were giving 404 error which hence updated. -- [Improve] Remove useless tabbar options from Omnichannel rooms ([#21561](https://github.com/RocketChat/Rocket.Chat/pull/21561) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- [Improve] Remove useless tabbar options from Omnichannel rooms ([#21561](https://github.com/RocketChat/Rocket.Chat/pull/21561) by [@rafaelblink](https://github.com/rafaelblink)) -- A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527) by [@tassoevan](https://github.com/tassoevan)) +- A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527)) - The Meteor package **`kadira:blaze-layout` was removed**; - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; @@ -6583,7 +6536,7 @@ - Chore: Do not stop animations on Test Mode ([#21484](https://github.com/RocketChat/Rocket.Chat/pull/21484)) -- Chore: Increase testing coverage on password policy class ([#21482](https://github.com/RocketChat/Rocket.Chat/pull/21482) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Increase testing coverage on password policy class ([#21482](https://github.com/RocketChat/Rocket.Chat/pull/21482)) - Chore: Meteor update to 2.1.1 ([#21494](https://github.com/RocketChat/Rocket.Chat/pull/21494)) @@ -6591,7 +6544,7 @@ Meteor change log https://github.com/meteor/meteor/blob/devel/History.md#v211-2021-04-06 -- Chore: Remove control character from room model operation ([#21493](https://github.com/RocketChat/Rocket.Chat/pull/21493) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Chore: Remove control character from room model operation ([#21493](https://github.com/RocketChat/Rocket.Chat/pull/21493)) - Fix typo in app/apps/README file ([#21204](https://github.com/RocketChat/Rocket.Chat/pull/21204) by [@sauravjoshi23](https://github.com/sauravjoshi23)) @@ -6608,7 +6561,7 @@ - Merge master into develop & Set version to 3.14.0-develop ([#21441](https://github.com/RocketChat/Rocket.Chat/pull/21441)) -- QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778) by [@KevLehman](https://github.com/KevLehman)) +- QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778)) - Fixed canAccessRoom validation - Added e2e tests @@ -6643,11 +6596,11 @@ - regression: Markdown broken on safari ([#21780](https://github.com/RocketChat/Rocket.Chat/pull/21780)) -- Regression: Problem with Importer's logs ([#21812](https://github.com/RocketChat/Rocket.Chat/pull/21812) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Problem with Importer's logs ([#21812](https://github.com/RocketChat/Rocket.Chat/pull/21812)) - Regression: React + Blaze reconciliation ([#21567](https://github.com/RocketChat/Rocket.Chat/pull/21567)) -- Regression: Reactivate direct conversations only if all involved users are active ([#21714](https://github.com/RocketChat/Rocket.Chat/pull/21714) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Reactivate direct conversations only if all involved users are active ([#21714](https://github.com/RocketChat/Rocket.Chat/pull/21714)) - Regression: Reconnection not working properly due to changes on ECHD Proxy ([#21741](https://github.com/RocketChat/Rocket.Chat/pull/21741)) @@ -6655,11 +6608,11 @@ - regression: Team Channels actions ([#21417](https://github.com/RocketChat/Rocket.Chat/pull/21417)) -- Regression: team sync not accepting multiple teams ([#21768](https://github.com/RocketChat/Rocket.Chat/pull/21768) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: team sync not accepting multiple teams ([#21768](https://github.com/RocketChat/Rocket.Chat/pull/21768)) - Regression: Unread Threads Header and List ([#21816](https://github.com/RocketChat/Rocket.Chat/pull/21816)) -- Regression: Update fuselage for icons fix ([#21809](https://github.com/RocketChat/Rocket.Chat/pull/21809) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Update fuselage for icons fix ([#21809](https://github.com/RocketChat/Rocket.Chat/pull/21809)) @@ -6667,36 +6620,36 @@ - [@Jeanstaquet](https://github.com/Jeanstaquet) - [@Kartik18g](https://github.com/Kartik18g) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@g-thome](https://github.com/g-thome) - [@im-adithya](https://github.com/im-adithya) - [@joshi008](https://github.com/joshi008) - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) - [@sauravjoshi23](https://github.com/sauravjoshi23) - [@sumukhah](https://github.com/sumukhah) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@r0zbot](https://github.com/r0zbot) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.13.5 @@ -6731,17 +6684,17 @@ - Livechat not retrieving messages ([#21644](https://github.com/RocketChat/Rocket.Chat/pull/21644) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491) by [@KevLehman](https://github.com/KevLehman)) +- Team's channels list for teams with too many channels ([#21491](https://github.com/RocketChat/Rocket.Chat/pull/21491)) - Fix teams.listRooms pagination for non-admin users ### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.13.2 @@ -6766,13 +6719,10 @@ -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@KevLehman](https://github.com/KevLehman) - [@renatobecker](https://github.com/renatobecker) - -### 👩‍💻👨‍💻 Core Team 🤓 - - [@sampaiodiego](https://github.com/sampaiodiego) # 3.13.1 @@ -6789,49 +6739,49 @@ - Add tag input to Closing Chat modal ([#21462](https://github.com/RocketChat/Rocket.Chat/pull/21462) by [@rafaelblink](https://github.com/rafaelblink)) -- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469) by [@KevLehman](https://github.com/KevLehman)) +- Admin Users list pagination ([#21469](https://github.com/RocketChat/Rocket.Chat/pull/21469)) - Fix Administration/Users pagination -- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470) by [@thassiov](https://github.com/thassiov)) +- App installation from marketplace not correctly displaying the permissions ([#21470](https://github.com/RocketChat/Rocket.Chat/pull/21470)) Fixes the marketplace app installation not correctly displaying the permissions modal. -- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Close chat button is not available for Omnichannel agents ([#21481](https://github.com/RocketChat/Rocket.Chat/pull/21481) by [@rafaelblink](https://github.com/rafaelblink)) -- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Error when editing Omnichannel rooms without custom fields ([#21450](https://github.com/RocketChat/Rocket.Chat/pull/21450) by [@rafaelblink](https://github.com/rafaelblink)) - Header component breaking if user is not part of teams room. ([#21465](https://github.com/RocketChat/Rocket.Chat/pull/21465)) -- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Make Omnichannel's closing chat button the last action in the toolbox ([#21476](https://github.com/RocketChat/Rocket.Chat/pull/21476) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel queue manager returning outdated room object ([#21485](https://github.com/RocketChat/Rocket.Chat/pull/21485)) The Omnichannel Queue Manager is returning outdated room object when delegating the chat to an agent, hence, our Livechat widget is affected and the agent assigned to the chat is not displayed on the widget, only after refreshing/reloading. -- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Wrong useMemo on Priorities EE field. ([#21453](https://github.com/RocketChat/Rocket.Chat/pull/21453) by [@rafaelblink](https://github.com/rafaelblink))
🔍 Minor changes -- Release 3.13.1 ([#21486](https://github.com/RocketChat/Rocket.Chat/pull/21486) by [@KevLehman](https://github.com/KevLehman) & [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.13.1 ([#21486](https://github.com/RocketChat/Rocket.Chat/pull/21486) by [@rafaelblink](https://github.com/rafaelblink))
### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@thassiov](https://github.com/thassiov) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@thassiov](https://github.com/thassiov) # 3.13.0 `2021-04-04 · 7 🎉 · 11 🚀 · 36 🐛 · 61 🔍 · 38 👩‍💻👨‍💻` @@ -6854,7 +6804,7 @@ Added events and errors that trigger when a user leaves a room. That way it can communicate with the Apps-Engine by the `IPreRoomUserLeave` and `IPostRoomUserLeave` event interfaces. -- **Enterprise:** Omnichannel On-Hold Queue ([#20945](https://github.com/RocketChat/Rocket.Chat/pull/20945) by [@renatobecker](https://github.com/renatobecker)) +- **Enterprise:** Omnichannel On-Hold Queue ([#20945](https://github.com/RocketChat/Rocket.Chat/pull/20945)) ### About this feature This feature has been introduced to deal with Inactive chats. A chat is considered Inactive if an Omnichannel End User (aka Visitor) has not replied back to an agent in some time. These types of inactive chats become very important when an organisation has a limit set for `Max Simultaneous Chats per agent` which is defined by the following setting :point_down: , as more number of Inactive chats would directly affect an agent's productivity. @@ -6909,7 +6859,7 @@ - Quick action buttons for Omnichannel ([#21123](https://github.com/RocketChat/Rocket.Chat/pull/21123) by [@rafaelblink](https://github.com/rafaelblink)) -- Teams ([#20966](https://github.com/RocketChat/Rocket.Chat/pull/20966) by [@g-thome](https://github.com/g-thome) & [@matheusbsilva137](https://github.com/matheusbsilva137) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Teams ([#20966](https://github.com/RocketChat/Rocket.Chat/pull/20966) by [@g-thome](https://github.com/g-thome)) ## Teams @@ -6965,11 +6915,11 @@ https://user-images.githubusercontent.com/28918901/103813540-43e73e00-5086-11eb-8592-2877eb650f3e.mp4 -- Back to threads list button on threads contextual bar ([#20882](https://github.com/RocketChat/Rocket.Chat/pull/20882) by [@tassoevan](https://github.com/tassoevan)) +- Back to threads list button on threads contextual bar ([#20882](https://github.com/RocketChat/Rocket.Chat/pull/20882)) ![image](https://user-images.githubusercontent.com/27704687/108926702-ad62e200-761d-11eb-8c18-5406246a6955.png) -- Better new channel popover ([#21018](https://github.com/RocketChat/Rocket.Chat/pull/21018) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Better new channel popover ([#21018](https://github.com/RocketChat/Rocket.Chat/pull/21018)) - grammatical typos in pull request template ([#21115](https://github.com/RocketChat/Rocket.Chat/pull/21115) by [@sumukhah](https://github.com/sumukhah)) @@ -6985,9 +6935,9 @@ - Make debug logs of Apps configurable via Log_Level setting in the Admin panel ([#21000](https://github.com/RocketChat/Rocket.Chat/pull/21000) by [@cuonghuunguyen](https://github.com/cuonghuunguyen)) -- Re-design Omnichannel Room Info Panel ([#21199](https://github.com/RocketChat/Rocket.Chat/pull/21199) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Re-design Omnichannel Room Info Panel ([#21199](https://github.com/RocketChat/Rocket.Chat/pull/21199) by [@rafaelblink](https://github.com/rafaelblink)) -- Set description in create channel modal ([#21132](https://github.com/RocketChat/Rocket.Chat/pull/21132) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Set description in create channel modal ([#21132](https://github.com/RocketChat/Rocket.Chat/pull/21132)) - Sort Users List In Case Insensitive Manner ([#20790](https://github.com/RocketChat/Rocket.Chat/pull/20790) by [@aditya-mitra](https://github.com/aditya-mitra)) @@ -7005,7 +6955,7 @@ ### 🐛 Bug fixes -- 'Chats in Progress' Section is not rendering when the routing algorithm is not Manual Selection ([#21324](https://github.com/RocketChat/Rocket.Chat/pull/21324) by [@renatobecker](https://github.com/renatobecker)) +- 'Chats in Progress' Section is not rendering when the routing algorithm is not Manual Selection ([#21324](https://github.com/RocketChat/Rocket.Chat/pull/21324)) - "Taken At" and "Average of Response Time" fields not rendering properly on Room Information panel ([#21365](https://github.com/RocketChat/Rocket.Chat/pull/21365) by [@rafaelblink](https://github.com/rafaelblink)) @@ -7027,7 +6977,7 @@ Added hide unread counter check, if the show unread messages is turned off, now unread messages badge won't be shown to user. -- Broken message fields attachment handling ([#21069](https://github.com/RocketChat/Rocket.Chat/pull/21069) by [@tassoevan](https://github.com/tassoevan)) +- Broken message fields attachment handling ([#21069](https://github.com/RocketChat/Rocket.Chat/pull/21069)) Avoids an `undefined` value to break a rendered attachment. @@ -7066,7 +7016,7 @@ Added toast and disabled save. -- Ensure E2E is enabled/disabled on sending message ([#21084](https://github.com/RocketChat/Rocket.Chat/pull/21084) by [@tassoevan](https://github.com/tassoevan)) +- Ensure E2E is enabled/disabled on sending message ([#21084](https://github.com/RocketChat/Rocket.Chat/pull/21084)) Rooms which were encrypted somewhere in the past still could encrypt messages due to a race condition due to a query over `Subscriptions` collection. @@ -7080,15 +7030,15 @@ After : ![search_final](https://user-images.githubusercontent.com/56491104/111471521-fe628380-874e-11eb-8fa3-d1edb57587e1.png) -- Follow thread action on threads list ([#20881](https://github.com/RocketChat/Rocket.Chat/pull/20881) by [@tassoevan](https://github.com/tassoevan)) +- Follow thread action on threads list ([#20881](https://github.com/RocketChat/Rocket.Chat/pull/20881)) https://user-images.githubusercontent.com/27704687/108925036-a4bcdc80-761a-11eb-83b8-2df8960f74cb.mp4 - Iframe flags for audio and video on the BigBlueButton integration ([#20879](https://github.com/RocketChat/Rocket.Chat/pull/20879) by [@fcecagno](https://github.com/fcecagno)) -- Inactivity Time field displaying wrong information ([#21363](https://github.com/RocketChat/Rocket.Chat/pull/21363) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Inactivity Time field displaying wrong information ([#21363](https://github.com/RocketChat/Rocket.Chat/pull/21363) by [@rafaelblink](https://github.com/rafaelblink)) -- Incorrect time format of the Queue Time field on the room information page ([#21394](https://github.com/RocketChat/Rocket.Chat/pull/21394) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Incorrect time format of the Queue Time field on the room information page ([#21394](https://github.com/RocketChat/Rocket.Chat/pull/21394) by [@rafaelblink](https://github.com/rafaelblink)) - Make custom emoji file required ([#19583](https://github.com/RocketChat/Rocket.Chat/pull/19583) by [@m-shreyansh](https://github.com/m-shreyansh)) @@ -7111,11 +7061,11 @@ https://user-images.githubusercontent.com/69837339/111953097-274a9600-8b0c-11eb-9177-bec388b042bd.mp4 -- New Channel popover not closing ([#21080](https://github.com/RocketChat/Rocket.Chat/pull/21080) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- New Channel popover not closing ([#21080](https://github.com/RocketChat/Rocket.Chat/pull/21080)) https://user-images.githubusercontent.com/17487063/110828228-92c37680-8275-11eb-9fce-fb40765935a3.mp4 -- OEmbedURLWidget - Show Full Embedded Text Description ([#20569](https://github.com/RocketChat/Rocket.Chat/pull/20569) by [@aditya-mitra](https://github.com/aditya-mitra) & [@tassoevan](https://github.com/tassoevan)) +- OEmbedURLWidget - Show Full Embedded Text Description ([#20569](https://github.com/RocketChat/Rocket.Chat/pull/20569) by [@aditya-mitra](https://github.com/aditya-mitra)) Embeds were cutoff when either _urls had a long description_. This was handled by removing `overflow:hidden;text-overflow:ellipsis;` from the inline styles in [`oembedUrlWidget.html`](https://github.com/RocketChat/Rocket.Chat/blob/develop/app/oembed/client/oembedUrlWidget.html#L28). @@ -7128,7 +7078,7 @@ ![now](https://user-images.githubusercontent.com/55396651/107110794-ca06c800-6870-11eb-9b3b-168679936612.png) -- Reactions list showing users in reactions option of message action. ([#20753](https://github.com/RocketChat/Rocket.Chat/pull/20753) by [@Darshilp326](https://github.com/Darshilp326) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Reactions list showing users in reactions option of message action. ([#20753](https://github.com/RocketChat/Rocket.Chat/pull/20753) by [@Darshilp326](https://github.com/Darshilp326)) Reactions list shows emojis with respected users who have reacted with that emoji. @@ -7144,7 +7094,7 @@ ### After ![Screenshot from 2021-01-24 20-54-06](https://user-images.githubusercontent.com/38764067/105634940-82eb0100-5e86-11eb-8b90-e97a43c5e938.png) -- Replace wrong field description on Room Information panel ([#21395](https://github.com/RocketChat/Rocket.Chat/pull/21395) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Replace wrong field description on Room Information panel ([#21395](https://github.com/RocketChat/Rocket.Chat/pull/21395) by [@rafaelblink](https://github.com/rafaelblink)) - Reply count of message is decreased after a message from thread is deleted ([#19977](https://github.com/RocketChat/Rocket.Chat/pull/19977)) @@ -7156,7 +7106,7 @@ https://user-images.githubusercontent.com/55157259/111617086-b30cab80-8808-11eb-8740-3b4ffacfc322.mp4 -- Sidebar scroll missing full height ([#21071](https://github.com/RocketChat/Rocket.Chat/pull/21071) by [@tassoevan](https://github.com/tassoevan)) +- Sidebar scroll missing full height ([#21071](https://github.com/RocketChat/Rocket.Chat/pull/21071)) ![image](https://user-images.githubusercontent.com/27704687/110708646-c05ae200-81d9-11eb-86da-1d6a2e99b6e5.png) @@ -7164,13 +7114,13 @@ Fix undefined in Prune Messages in direct -- Unexpected open or close visitor info ([#21094](https://github.com/RocketChat/Rocket.Chat/pull/21094) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Unexpected open or close visitor info ([#21094](https://github.com/RocketChat/Rocket.Chat/pull/21094)) The VisitorInfo component closes or open every time a new message was sent, this PR fix that. -- Use the correct icons for DMs ([#21125](https://github.com/RocketChat/Rocket.Chat/pull/21125) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Use the correct icons for DMs ([#21125](https://github.com/RocketChat/Rocket.Chat/pull/21125)) -- Visitors.info endpoint being called multiple times ([#21350](https://github.com/RocketChat/Rocket.Chat/pull/21350) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Visitors.info endpoint being called multiple times ([#21350](https://github.com/RocketChat/Rocket.Chat/pull/21350) by [@rafaelblink](https://github.com/rafaelblink)) - Wrong license seats number administration info panel ([#21222](https://github.com/RocketChat/Rocket.Chat/pull/21222)) @@ -7182,11 +7132,11 @@ - [Fix] Broken useEffect opened new BBB Tab twice ([#20770](https://github.com/RocketChat/Rocket.Chat/pull/20770) by [@Cosnavel](https://github.com/Cosnavel)) -- Bump Livechat Widget ([#21264](https://github.com/RocketChat/Rocket.Chat/pull/21264) by [@renatobecker](https://github.com/renatobecker)) +- Bump Livechat Widget ([#21264](https://github.com/RocketChat/Rocket.Chat/pull/21264)) Update Livechat version to 1.9.0 -- Change the order of Sort Setup Wizard options ([#21073](https://github.com/RocketChat/Rocket.Chat/pull/21073) by [@tassoevan](https://github.com/tassoevan)) +- Change the order of Sort Setup Wizard options ([#21073](https://github.com/RocketChat/Rocket.Chat/pull/21073)) Sort options in select fields of settings during Setup Wizard according to browser's locale. @@ -7210,13 +7160,13 @@ - Chore: Meteor update 2.1 ([#21061](https://github.com/RocketChat/Rocket.Chat/pull/21061)) -- Chore: Remove `new Buffer` in favor of `Buffer.from` ([#20918](https://github.com/RocketChat/Rocket.Chat/pull/20918) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Remove `new Buffer` in favor of `Buffer.from` ([#20918](https://github.com/RocketChat/Rocket.Chat/pull/20918)) - Changes `new Buffer` to `Buffer.from` since the first one is deprecated. -- EE Team Mentions ([#21418](https://github.com/RocketChat/Rocket.Chat/pull/21418) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- EE Team Mentions ([#21418](https://github.com/RocketChat/Rocket.Chat/pull/21418)) -- Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015) by [@KevLehman](https://github.com/KevLehman)) +- Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015)) Add test for - settings/raw @@ -7224,60 +7174,60 @@ - Improve: NPS survey fetch ([#21263](https://github.com/RocketChat/Rocket.Chat/pull/21263)) -- Regression: New chat forwarding modal is not verifying mandatory values ([#21288](https://github.com/RocketChat/Rocket.Chat/pull/21288) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: New chat forwarding modal is not verifying mandatory values ([#21288](https://github.com/RocketChat/Rocket.Chat/pull/21288) by [@rafaelblink](https://github.com/rafaelblink)) -- Regression: Add BreadCrumbs tag into auto-join items ([#21294](https://github.com/RocketChat/Rocket.Chat/pull/21294) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Add BreadCrumbs tag into auto-join items ([#21294](https://github.com/RocketChat/Rocket.Chat/pull/21294)) -- Regression: Add call to eraseRoom method ([#21392](https://github.com/RocketChat/Rocket.Chat/pull/21392) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: Add call to eraseRoom method ([#21392](https://github.com/RocketChat/Rocket.Chat/pull/21392)) - Replace `removeById` by `eraseRoom` method's call (which not only deletes the room, but also erases its subscriptions and triggers some apps-engine events). -- Regression: Add isLastOwner property on teams.listRoomsOfUser endpoint ([#21323](https://github.com/RocketChat/Rocket.Chat/pull/21323) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Add isLastOwner property on teams.listRoomsOfUser endpoint ([#21323](https://github.com/RocketChat/Rocket.Chat/pull/21323)) - Regression: Add number of team members to teams.list and teams.listAll ([#21361](https://github.com/RocketChat/Rocket.Chat/pull/21361) by [@g-thome](https://github.com/g-thome)) -- Regression: Add scope to permission checks in Team's endpoints ([#21369](https://github.com/RocketChat/Rocket.Chat/pull/21369) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: Add scope to permission checks in Team's endpoints ([#21369](https://github.com/RocketChat/Rocket.Chat/pull/21369)) - Include scope (team's main room ID) in the permission checks; - Remove the `teamName` parameter from the `members`, `addMembers`, `updateMember` and `removeMembers` methods (since `teamId` will always be defined). -- Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327)) - Add support for queries (within the `query` parameter); - Add support to pagination (`offset` and `count`) when an user doesn't have the permission to get all rooms. -- Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351)) - Change `directory.js` to reduce function complexity - Add `teams` type of item. Directory will return all public teams & private teams the user is part of. -- Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295) by [@tassoevan](https://github.com/tassoevan)) +- Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295)) ![image](https://user-images.githubusercontent.com/27704687/112379914-7e489a80-8cc7-11eb-9b0b-e454bb05755d.png) -- Regression: Change name-error description ([#21385](https://github.com/RocketChat/Rocket.Chat/pull/21385) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Change name-error description ([#21385](https://github.com/RocketChat/Rocket.Chat/pull/21385)) -- Regression: Channel owner can't convert it into a team. ([#21349](https://github.com/RocketChat/Rocket.Chat/pull/21349) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Channel owner can't convert it into a team. ([#21349](https://github.com/RocketChat/Rocket.Chat/pull/21349)) -- Regression: Contact Chat History component not visible ([#21316](https://github.com/RocketChat/Rocket.Chat/pull/21316) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Contact Chat History component not visible ([#21316](https://github.com/RocketChat/Rocket.Chat/pull/21316)) - Regression: Delete team member from related team's rooms ([#21401](https://github.com/RocketChat/Rocket.Chat/pull/21401)) - regression: Directory - teams tab search ([#21419](https://github.com/RocketChat/Rocket.Chat/pull/21419)) -- Regression: directory not showing public channels of public teams ([#21400](https://github.com/RocketChat/Rocket.Chat/pull/21400) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: directory not showing public channels of public teams ([#21400](https://github.com/RocketChat/Rocket.Chat/pull/21400)) -- regression: Discussion room crashing if not member of parent channel ([#21310](https://github.com/RocketChat/Rocket.Chat/pull/21310) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- regression: Discussion room crashing if not member of parent channel ([#21310](https://github.com/RocketChat/Rocket.Chat/pull/21310)) - Regression: Error clicking on non joined channels on team channel list ([#21422](https://github.com/RocketChat/Rocket.Chat/pull/21422)) -- Regression: Fix channels not being added to team on creation ([#21370](https://github.com/RocketChat/Rocket.Chat/pull/21370) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Fix channels not being added to team on creation ([#21370](https://github.com/RocketChat/Rocket.Chat/pull/21370)) - Regression: Fix Members List Icon ([#21433](https://github.com/RocketChat/Rocket.Chat/pull/21433)) - Regression: Fix non encrypted rooms failing sending messages ([#21287](https://github.com/RocketChat/Rocket.Chat/pull/21287)) -- Regression: Fix reactivity on teamsMembers and roomMembers ([#21366](https://github.com/RocketChat/Rocket.Chat/pull/21366) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Fix reactivity on teamsMembers and roomMembers ([#21366](https://github.com/RocketChat/Rocket.Chat/pull/21366)) - Regression: Fix TeamsChannels reactivity ([#21384](https://github.com/RocketChat/Rocket.Chat/pull/21384)) @@ -7289,17 +7239,17 @@ - Regression: Headers icon breaking DMs ([#21412](https://github.com/RocketChat/Rocket.Chat/pull/21412)) -- Regression: invalid teams permission check. ([#21374](https://github.com/RocketChat/Rocket.Chat/pull/21374) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: invalid teams permission check. ([#21374](https://github.com/RocketChat/Rocket.Chat/pull/21374)) -- Regression: Modify canAccessRoom to adapt to teams specification ([#21372](https://github.com/RocketChat/Rocket.Chat/pull/21372) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Modify canAccessRoom to adapt to teams specification ([#21372](https://github.com/RocketChat/Rocket.Chat/pull/21372)) -- Regression: New endpoint to list rooms available to be added to any team ([#21373](https://github.com/RocketChat/Rocket.Chat/pull/21373) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: New endpoint to list rooms available to be added to any team ([#21373](https://github.com/RocketChat/Rocket.Chat/pull/21373)) -- Regression: Omnichannel agents can't access new action buttons ([#21306](https://github.com/RocketChat/Rocket.Chat/pull/21306) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Omnichannel agents can't access new action buttons ([#21306](https://github.com/RocketChat/Rocket.Chat/pull/21306)) -- Regression: Permissions missing on new Room Edit and Contact Edit form ([#21315](https://github.com/RocketChat/Rocket.Chat/pull/21315) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Permissions missing on new Room Edit and Contact Edit form ([#21315](https://github.com/RocketChat/Rocket.Chat/pull/21315) by [@rafaelblink](https://github.com/rafaelblink)) -- Regression: Quick action button missing for Omnichannel On-Hold queue ([#21285](https://github.com/RocketChat/Rocket.Chat/pull/21285) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Quick action button missing for Omnichannel On-Hold queue ([#21285](https://github.com/RocketChat/Rocket.Chat/pull/21285)) - Move the Manual On Hold button to the new Omnichannel Header ![image](https://user-images.githubusercontent.com/34130764/112291749-6ae10380-8cb6-11eb-94cd-e05efc14b1bf.png) @@ -7309,25 +7259,25 @@ - regression: Remove Breadcrumbs and update Tag component ([#21399](https://github.com/RocketChat/Rocket.Chat/pull/21399)) -- Regression: Remove channel action on add channel's modal don't work ([#21356](https://github.com/RocketChat/Rocket.Chat/pull/21356) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove channel action on add channel's modal don't work ([#21356](https://github.com/RocketChat/Rocket.Chat/pull/21356)) ![removechannel-on-add-existing-modal](https://user-images.githubusercontent.com/27704687/112911017-eda8fa80-90ca-11eb-9c24-47a70be0c314.gif) ![image](https://user-images.githubusercontent.com/27704687/112911052-02858e00-90cb-11eb-85a2-0ef1f5f9ffd9.png) -- Regression: Remove primary color from button in TeamChannels component ([#21293](https://github.com/RocketChat/Rocket.Chat/pull/21293) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Remove primary color from button in TeamChannels component ([#21293](https://github.com/RocketChat/Rocket.Chat/pull/21293)) -- regression: remove user modal not showing up ([#21348](https://github.com/RocketChat/Rocket.Chat/pull/21348) by [@tassoevan](https://github.com/tassoevan)) +- regression: remove user modal not showing up ([#21348](https://github.com/RocketChat/Rocket.Chat/pull/21348)) -- Regression: Removing user from team doesn't remove them from the team's room. ([#21291](https://github.com/RocketChat/Rocket.Chat/pull/21291) by [@KevLehman](https://github.com/KevLehman) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Removing user from team doesn't remove them from the team's room. ([#21291](https://github.com/RocketChat/Rocket.Chat/pull/21291)) - Remove subscription when calling `teams.removeMembers` -- Regression: Room Edit form not rendering priority and custom fields ([#21309](https://github.com/RocketChat/Rocket.Chat/pull/21309) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Room Edit form not rendering priority and custom fields ([#21309](https://github.com/RocketChat/Rocket.Chat/pull/21309) by [@rafaelblink](https://github.com/rafaelblink)) - Regression: rooms breaking after deleting a room from a team ([#21421](https://github.com/RocketChat/Rocket.Chat/pull/21421)) -- regression: Sidebar reactivity ([#21296](https://github.com/RocketChat/Rocket.Chat/pull/21296) by [@tassoevan](https://github.com/tassoevan)) +- regression: Sidebar reactivity ([#21296](https://github.com/RocketChat/Rocket.Chat/pull/21296)) - Regression: Team icons in mention ([#21367](https://github.com/RocketChat/Rocket.Chat/pull/21367)) @@ -7335,11 +7285,11 @@ - regression: Team info permissions ([#21387](https://github.com/RocketChat/Rocket.Chat/pull/21387)) -- Regression: Teams should not have same name as users ([#21371](https://github.com/RocketChat/Rocket.Chat/pull/21371) by [@alansikora](https://github.com/alansikora)) +- Regression: Teams should not have same name as users ([#21371](https://github.com/RocketChat/Rocket.Chat/pull/21371)) -- regression: Unable to add users while creating a team ([#21354](https://github.com/RocketChat/Rocket.Chat/pull/21354) by [@tassoevan](https://github.com/tassoevan)) +- regression: Unable to add users while creating a team ([#21354](https://github.com/RocketChat/Rocket.Chat/pull/21354)) -- Regression: Unify Contact information displayed on the Room header and Room Info ([#21312](https://github.com/RocketChat/Rocket.Chat/pull/21312) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Unify Contact information displayed on the Room header and Room Info ([#21312](https://github.com/RocketChat/Rocket.Chat/pull/21312) by [@rafaelblink](https://github.com/rafaelblink)) ![image](https://user-images.githubusercontent.com/34130764/112586659-35592900-8e22-11eb-94be-32bdff7ca883.png) @@ -7349,9 +7299,9 @@ - Regression: Unify team actions to add a room to a team ([#21386](https://github.com/RocketChat/Rocket.Chat/pull/21386)) -- Regression: unused names for team roles ([#21376](https://github.com/RocketChat/Rocket.Chat/pull/21376) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: unused names for team roles ([#21376](https://github.com/RocketChat/Rocket.Chat/pull/21376)) -- Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328) by [@KevLehman](https://github.com/KevLehman)) +- Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328)) - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. @@ -7359,11 +7309,11 @@ - Regression: user actions in admin ([#21307](https://github.com/RocketChat/Rocket.Chat/pull/21307)) -- Regression: View Channels button in Team info ([#21289](https://github.com/RocketChat/Rocket.Chat/pull/21289) by [@tassoevan](https://github.com/tassoevan)) +- Regression: View Channels button in Team info ([#21289](https://github.com/RocketChat/Rocket.Chat/pull/21289)) -- Regression: When only 'teams' type is provided, show only rooms with teamMain on `rooms.adminRooms` endpoint ([#21322](https://github.com/RocketChat/Rocket.Chat/pull/21322) by [@KevLehman](https://github.com/KevLehman)) +- Regression: When only 'teams' type is provided, show only rooms with teamMain on `rooms.adminRooms` endpoint ([#21322](https://github.com/RocketChat/Rocket.Chat/pull/21322)) -- Release 3.13.0 ([#21437](https://github.com/RocketChat/Rocket.Chat/pull/21437) by [@KevLehman](https://github.com/KevLehman) & [@MartinSchoeler](https://github.com/MartinSchoeler) & [@PriyaBihani](https://github.com/PriyaBihani) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@fcecagno](https://github.com/fcecagno) & [@lucassartor](https://github.com/lucassartor) & [@shrinish123](https://github.com/shrinish123) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Release 3.13.0 ([#21437](https://github.com/RocketChat/Rocket.Chat/pull/21437) by [@PriyaBihani](https://github.com/PriyaBihani) & [@cuonghuunguyen](https://github.com/cuonghuunguyen) & [@fcecagno](https://github.com/fcecagno) & [@lucassartor](https://github.com/lucassartor) & [@shrinish123](https://github.com/shrinish123)) - Update Apps-Engine version ([#21398](https://github.com/RocketChat/Rocket.Chat/pull/21398)) @@ -7373,14 +7323,11 @@ - [@Cosnavel](https://github.com/Cosnavel) - [@Darshilp326](https://github.com/Darshilp326) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@PriyaBihani](https://github.com/PriyaBihani) - [@RonLek](https://github.com/RonLek) - [@Tirieru](https://github.com/Tirieru) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@aditya-mitra](https://github.com/aditya-mitra) -- [@alansikora](https://github.com/alansikora) - [@cuonghuunguyen](https://github.com/cuonghuunguyen) - [@cyberShaw](https://github.com/cyberShaw) - [@fcecagno](https://github.com/fcecagno) @@ -7389,28 +7336,31 @@ - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) - [@m-shreyansh](https://github.com/m-shreyansh) -- [@matheusbsilva137](https://github.com/matheusbsilva137) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) - [@reda-alaoui](https://github.com/reda-alaoui) -- [@renatobecker](https://github.com/renatobecker) - [@shrinish123](https://github.com/shrinish123) - [@sumukhah](https://github.com/sumukhah) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@vova-zush](https://github.com/vova-zush) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@r0zbot](https://github.com/r0zbot) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.12.7 @@ -7467,12 +7417,12 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@KevLehman](https://github.com/KevLehman) - [@g-thome](https://github.com/g-thome) -- [@matheusbsilva137](https://github.com/matheusbsilva137) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.12.1 @@ -7487,7 +7437,7 @@ ### 🚀 Improvements -- Close Call contextual bar after starting jitsi call. ([#21004](https://github.com/RocketChat/Rocket.Chat/pull/21004) by [@tassoevan](https://github.com/tassoevan)) +- Close Call contextual bar after starting jitsi call. ([#21004](https://github.com/RocketChat/Rocket.Chat/pull/21004)) After jitsi call is started, if the call is started in a new window then we should close contextual tab bar. So, when 'YES' is pressed on modal, we call handleClose function if openNewWindow is true, as call doesn't starts on tab bar, it starts on new window. @@ -7495,20 +7445,17 @@ ### 🐛 Bug fixes -- Missing spaces on attachment ([#21020](https://github.com/RocketChat/Rocket.Chat/pull/21020) by [@tassoevan](https://github.com/tassoevan)) +- Missing spaces on attachment ([#21020](https://github.com/RocketChat/Rocket.Chat/pull/21020)) -- Stopping Jitsi reload ([#20973](https://github.com/RocketChat/Rocket.Chat/pull/20973) by [@tassoevan](https://github.com/tassoevan)) +- Stopping Jitsi reload ([#20973](https://github.com/RocketChat/Rocket.Chat/pull/20973)) The Function where Jitsi call is started gets called many times due to `room.usernames` dep of useMemo, this dep triggers reloading of this function many times. So removing this dep from useMemo dependencies -### 👩‍💻👨‍💻 Contributors 😍 - -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) +- [@tassoevan](https://github.com/tassoevan) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.12.0 @@ -7523,7 +7470,7 @@ ### 🎉 New features -- Button to unset Slackbridge's importIds ([#20549](https://github.com/RocketChat/Rocket.Chat/pull/20549) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Button to unset Slackbridge's importIds ([#20549](https://github.com/RocketChat/Rocket.Chat/pull/20549)) - Cloud Workspace bridge ([#20838](https://github.com/RocketChat/Rocket.Chat/pull/20838)) @@ -7537,7 +7484,7 @@ ![image](https://user-images.githubusercontent.com/27704687/106945019-1386d400-6706-11eb-90db-c12b50f260d5.png) -- Statistics about language usage ([#20832](https://github.com/RocketChat/Rocket.Chat/pull/20832) by [@g-thome](https://github.com/g-thome) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Statistics about language usage ([#20832](https://github.com/RocketChat/Rocket.Chat/pull/20832) by [@g-thome](https://github.com/g-thome)) track what languages get picked the most as preferred ui language. @@ -7546,7 +7493,7 @@ ### 🚀 Improvements -- Add symbol to indicate apps' required settings in the UI ([#20447](https://github.com/RocketChat/Rocket.Chat/pull/20447) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Add symbol to indicate apps' required settings in the UI ([#20447](https://github.com/RocketChat/Rocket.Chat/pull/20447)) - Apps are able to define **required** settings. These settings should not be left blank by the user and an error will be thrown and shown in the interface if an user attempts to save changes in the app details page leaving any required fields blank; ![prt_screen_required_app_settings_warning](https://user-images.githubusercontent.com/36537004/106032964-e73cd900-60af-11eb-8eab-c11fd651b593.png) @@ -7556,7 +7503,7 @@ - Add visual validation on users admin forms ([#20308](https://github.com/RocketChat/Rocket.Chat/pull/20308)) -- Added auto-focus for better user-experience. ([#19954](https://github.com/RocketChat/Rocket.Chat/pull/19954) by [@Darshilp326](https://github.com/Darshilp326) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Added auto-focus for better user-experience. ([#19954](https://github.com/RocketChat/Rocket.Chat/pull/19954) by [@Darshilp326](https://github.com/Darshilp326)) - Added disable button check for send invite button ([#20337](https://github.com/RocketChat/Rocket.Chat/pull/20337)) @@ -7592,7 +7539,7 @@ It brings more flexibility, allowing us to use different hooks and different components for each header -- Check Livechat message length through REST API endpoint ([#20366](https://github.com/RocketChat/Rocket.Chat/pull/20366) by [@renatobecker](https://github.com/renatobecker)) +- Check Livechat message length through REST API endpoint ([#20366](https://github.com/RocketChat/Rocket.Chat/pull/20366)) Added checks for message length for livechat message api, it shouldn't exceed specified character limit. @@ -7600,11 +7547,11 @@ Included new variables in customizable ones -- Make message field required in Omnichannel Triggers form ([#20827](https://github.com/RocketChat/Rocket.Chat/pull/20827) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Make message field required in Omnichannel Triggers form ([#20827](https://github.com/RocketChat/Rocket.Chat/pull/20827) by [@rafaelblink](https://github.com/rafaelblink)) -- New chat started system message for Omnichannel conversations ([#20814](https://github.com/RocketChat/Rocket.Chat/pull/20814) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- New chat started system message for Omnichannel conversations ([#20814](https://github.com/RocketChat/Rocket.Chat/pull/20814) by [@rafaelblink](https://github.com/rafaelblink)) -- Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392)) Remove: - react-window @@ -7615,11 +7562,11 @@ - react-virtuoso - rc-scrollbars -- Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778)) - Selector for default custom oauth key field ([#20573](https://github.com/RocketChat/Rocket.Chat/pull/20573) by [@paulobernardoaf](https://github.com/paulobernardoaf)) -- Update rc-scrollbars ([#20733](https://github.com/RocketChat/Rocket.Chat/pull/20733) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Update rc-scrollbars ([#20733](https://github.com/RocketChat/Rocket.Chat/pull/20733)) ### 🐛 Bug fixes @@ -7661,15 +7608,15 @@ So unsetting data if data isn't available to save. Will also fix bio and other fields. :) -- Admin Panel pages not visible in Safari ([#20912](https://github.com/RocketChat/Rocket.Chat/pull/20912) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Admin Panel pages not visible in Safari ([#20912](https://github.com/RocketChat/Rocket.Chat/pull/20912)) - Announcement with multiple lines fixed. ([#20381](https://github.com/RocketChat/Rocket.Chat/pull/20381)) Announcements with multiple lines used to break UI for announcements bar. Fixed it by replacing all break lines in announcement with empty space (" ") . The announcement modal would work as usual and show all break lines. -- Atlassian Crowd login with 2FA enabled ([#20834](https://github.com/RocketChat/Rocket.Chat/pull/20834) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Atlassian Crowd login with 2FA enabled ([#20834](https://github.com/RocketChat/Rocket.Chat/pull/20834)) -- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585)) Added target = '_self' to attachment link, this seems to fix the problem, without this attribute, error page is displayed. @@ -7679,7 +7626,7 @@ https://user-images.githubusercontent.com/28918901/104483631-5adde100-55ee-11eb-9938-64146bce127e.mp4 -- CAS login failing due to TOTP requirement ([#20840](https://github.com/RocketChat/Rocket.Chat/pull/20840) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CAS login failing due to TOTP requirement ([#20840](https://github.com/RocketChat/Rocket.Chat/pull/20840)) - Changed password input field for password access in edit room info. ([#20356](https://github.com/RocketChat/Rocket.Chat/pull/20356) by [@Darshilp326](https://github.com/Darshilp326)) @@ -7729,7 +7676,7 @@ - Download buttons on desktop app and CDN being ignored ([#20820](https://github.com/RocketChat/Rocket.Chat/pull/20820)) -- E2E issues ([#20704](https://github.com/RocketChat/Rocket.Chat/pull/20704) by [@tassoevan](https://github.com/tassoevan)) +- E2E issues ([#20704](https://github.com/RocketChat/Rocket.Chat/pull/20704)) - ESLint Warning - react-hooks/exhaustive-deps ([#20586](https://github.com/RocketChat/Rocket.Chat/pull/20586) by [@aditya-mitra](https://github.com/aditya-mitra)) @@ -7737,7 +7684,7 @@ - Event emitter warning ([#20663](https://github.com/RocketChat/Rocket.Chat/pull/20663)) -- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740) by [@renatobecker](https://github.com/renatobecker)) +- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740)) Due to a wrong property name, external applications were not able to change the priority of Omnichannel Inquires. @@ -7748,7 +7695,7 @@ https://user-images.githubusercontent.com/38764067/105613964-dfe5a900-5deb-11eb-80f2-21fc8dee57c0.mp4 -- Filters are not being applied correctly in Omnichannel Current Chats list ([#20320](https://github.com/RocketChat/Rocket.Chat/pull/20320) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Filters are not being applied correctly in Omnichannel Current Chats list ([#20320](https://github.com/RocketChat/Rocket.Chat/pull/20320) by [@rafaelblink](https://github.com/rafaelblink)) ### Before ![image](https://user-images.githubusercontent.com/2493803/105537672-082cb500-5cd1-11eb-8f1b-1726ba60420a.png) @@ -7764,17 +7711,17 @@ Able to Empty the highlighted text field in preferences -- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654)) - height prop on departments agents table ([#20833](https://github.com/RocketChat/Rocket.Chat/pull/20833)) ![image](https://user-images.githubusercontent.com/27704687/108572412-fbf83f80-72f0-11eb-801a-5f659000325d.png) -- Hide system messages not working on second save ([#20679](https://github.com/RocketChat/Rocket.Chat/pull/20679) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Hide system messages not working on second save ([#20679](https://github.com/RocketChat/Rocket.Chat/pull/20679)) -- Icon for OTR messages ([#20713](https://github.com/RocketChat/Rocket.Chat/pull/20713) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Icon for OTR messages ([#20713](https://github.com/RocketChat/Rocket.Chat/pull/20713)) -- Incorrect display of "Reply in Direct Message" in MessageAction ([#17968](https://github.com/RocketChat/Rocket.Chat/pull/17968) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@abrom](https://github.com/abrom)) +- Incorrect display of "Reply in Direct Message" in MessageAction ([#17968](https://github.com/RocketChat/Rocket.Chat/pull/17968) by [@abrom](https://github.com/abrom)) [FIX] Incorrect display of "Reply in Direct Message" in MessageAction @@ -7782,7 +7729,7 @@ - Unread messages count won't be incremented when the message sent is on a thread (thread count is treated different) -- Links not opening in new tabs ([#20651](https://github.com/RocketChat/Rocket.Chat/pull/20651) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Links not opening in new tabs ([#20651](https://github.com/RocketChat/Rocket.Chat/pull/20651)) - List of Omnichannel triggers is not listing data ([#20624](https://github.com/RocketChat/Rocket.Chat/pull/20624) by [@rafaelblink](https://github.com/rafaelblink)) @@ -7811,30 +7758,30 @@ ![image](https://user-images.githubusercontent.com/27704687/107807002-510ee100-6d46-11eb-86e9-d65da7ab4129.png) -- Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744) by [@matheusbsilva137](https://github.com/matheusbsilva137)) +- Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744)) - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; - The new setting is turned off (`false` value) by default. -- New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670)) - Notification worker stopping on error ([#20605](https://github.com/RocketChat/Rocket.Chat/pull/20605)) - OAuth Login not working on Firefox ([#20722](https://github.com/RocketChat/Rocket.Chat/pull/20722)) -- Omnichannel agents are unable to access the chat queue on the sidebar ([#20830](https://github.com/RocketChat/Rocket.Chat/pull/20830) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel agents are unable to access the chat queue on the sidebar ([#20830](https://github.com/RocketChat/Rocket.Chat/pull/20830) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662)) The `Omnichannel Routing System` is no longer assigning chats to `bot` agents when the `bot` agent is the default agent of the inquiry. -- Open Visitor Info when omnichannel chat was open ([#20868](https://github.com/RocketChat/Rocket.Chat/pull/20868) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Open Visitor Info when omnichannel chat was open ([#20868](https://github.com/RocketChat/Rocket.Chat/pull/20868)) - OTR issue ([#20592](https://github.com/RocketChat/Rocket.Chat/pull/20592)) Since the users are not being stored at the user collection anymore (thats a good thing actually), there is no such record to to fetch and show the username. -- Quoted messages from message links when user has no permission ([#20815](https://github.com/RocketChat/Rocket.Chat/pull/20815) by [@KevLehman](https://github.com/KevLehman)) +- Quoted messages from message links when user has no permission ([#20815](https://github.com/RocketChat/Rocket.Chat/pull/20815)) - Regenerate token modal on top of 2FA modal ([#20798](https://github.com/RocketChat/Rocket.Chat/pull/20798)) @@ -7849,7 +7796,7 @@ The getCommonRoomEvents() returned functions were bound to the starredMessages template twice. This was causing some bugs, as detailed in the Issue mentioned below. I removed the top events call that only bound the getCommonRoomEvents(). Therefore, only one call for the same is left, which is at the end of the file. Having the events bound just once removes the bugs mentioned. -- Remove warning problems from console ([#20800](https://github.com/RocketChat/Rocket.Chat/pull/20800) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Remove warning problems from console ([#20800](https://github.com/RocketChat/Rocket.Chat/pull/20800)) - Removed tooltip in kebab menu options. ([#20498](https://github.com/RocketChat/Rocket.Chat/pull/20498) by [@Darshilp326](https://github.com/Darshilp326)) @@ -7857,7 +7804,7 @@ https://user-images.githubusercontent.com/55157259/106246146-a53ca000-6233-11eb-9874-cbd1b4331bc0.mp4 -- Retry icon comes out of the div ([#20390](https://github.com/RocketChat/Rocket.Chat/pull/20390) by [@im-adithya](https://github.com/im-adithya) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Retry icon comes out of the div ([#20390](https://github.com/RocketChat/Rocket.Chat/pull/20390) by [@im-adithya](https://github.com/im-adithya)) Changed the height of the div container. @@ -7891,9 +7838,9 @@ Do not redirect to `/home` anymore after logging in with `resumeToken`. -- Server-side marked parsing ([#20665](https://github.com/RocketChat/Rocket.Chat/pull/20665) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Server-side marked parsing ([#20665](https://github.com/RocketChat/Rocket.Chat/pull/20665)) -- Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216)) - Fix: Slack Importer crashes when importing a large users.json file - Fix: Slack importer crashes when messages have invalid mentions @@ -7905,7 +7852,7 @@ - Reduce max allowed BSON size to avoid possible issues in some servers. - Improve handling of very large channel files. -- star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@bhavayAnand9](https://github.com/bhavayAnand9)) +- star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@bhavayAnand9](https://github.com/bhavayAnand9)) - Threads Issues ([#20725](https://github.com/RocketChat/Rocket.Chat/pull/20725)) @@ -7942,13 +7889,13 @@ - Added types to Emitters ([#20819](https://github.com/RocketChat/Rocket.Chat/pull/20819)) -- Bump Livechat Widget ([#20843](https://github.com/RocketChat/Rocket.Chat/pull/20843) by [@renatobecker](https://github.com/renatobecker)) +- Bump Livechat Widget ([#20843](https://github.com/RocketChat/Rocket.Chat/pull/20843)) Update Livechat version to `1.8.0` . - Chore: Change error message when marking empty chat as unread ([#20250](https://github.com/RocketChat/Rocket.Chat/pull/20250) by [@lucassartor](https://github.com/lucassartor)) -- Chore: Disable Sessions Aggregates tests locally ([#20607](https://github.com/RocketChat/Rocket.Chat/pull/20607) by [@KevLehman](https://github.com/KevLehman)) +- Chore: Disable Sessions Aggregates tests locally ([#20607](https://github.com/RocketChat/Rocket.Chat/pull/20607)) Disable Session aggregates tests in local environments For context, refer to: #20161 @@ -7959,15 +7906,15 @@ - Chore: Remove node-sprite-generator dependency ([#20545](https://github.com/RocketChat/Rocket.Chat/pull/20545)) -- Chore: Try building micro services early on CI ([#20046](https://github.com/RocketChat/Rocket.Chat/pull/20046) by [@renatobecker](https://github.com/renatobecker)) +- Chore: Try building micro services early on CI ([#20046](https://github.com/RocketChat/Rocket.Chat/pull/20046)) - Chore: update RC with the latest fuselage-polyfills ([#20709](https://github.com/RocketChat/Rocket.Chat/pull/20709)) -- Exclude user's own password from /me endpoint ([#20735](https://github.com/RocketChat/Rocket.Chat/pull/20735) by [@KevLehman](https://github.com/KevLehman)) +- Exclude user's own password from /me endpoint ([#20735](https://github.com/RocketChat/Rocket.Chat/pull/20735)) - Fix: Add network observe plug to snap ([#20852](https://github.com/RocketChat/Rocket.Chat/pull/20852)) -- Improve: Add more API tests ([#20738](https://github.com/RocketChat/Rocket.Chat/pull/20738) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Improve: Add more API tests ([#20738](https://github.com/RocketChat/Rocket.Chat/pull/20738)) Add end-to-end tests for untested endpoints. @@ -7977,7 +7924,7 @@ - Merge master into develop & Set version to 3.12.0-develop ([#20533](https://github.com/RocketChat/Rocket.Chat/pull/20533)) -- Mixed client and server code on Storybook ([#20799](https://github.com/RocketChat/Rocket.Chat/pull/20799) by [@tassoevan](https://github.com/tassoevan)) +- Mixed client and server code on Storybook ([#20799](https://github.com/RocketChat/Rocket.Chat/pull/20799)) For Storybook to work, we've mocked all modules under `**/server/`, thus making them suitable to hold all code that refers Node.js modules. This implies some duplication, between `client/` and `server/` modules, mediated by modules under `libs/`. @@ -7997,13 +7944,13 @@ - Regression: Prevent Message Attachment rendering ([#20860](https://github.com/RocketChat/Rocket.Chat/pull/20860)) -- Remove `uiKitText` reference ([#20625](https://github.com/RocketChat/Rocket.Chat/pull/20625) by [@tassoevan](https://github.com/tassoevan)) +- Remove `uiKitText` reference ([#20625](https://github.com/RocketChat/Rocket.Chat/pull/20625)) -- Rewrite: CreateChannel modal component ([#20617](https://github.com/RocketChat/Rocket.Chat/pull/20617) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Rewrite: CreateChannel modal component ([#20617](https://github.com/RocketChat/Rocket.Chat/pull/20617)) ![image](https://user-images.githubusercontent.com/17487063/107058434-5f438700-67b3-11eb-8cf2-1ad3d5008aa8.png) -- RoomFiles hook ([#20550](https://github.com/RocketChat/Rocket.Chat/pull/20550) by [@tiagoevanp](https://github.com/tiagoevanp)) +- RoomFiles hook ([#20550](https://github.com/RocketChat/Rocket.Chat/pull/20550)) - Update Apps-Engine version ([#20921](https://github.com/RocketChat/Rocket.Chat/pull/20921)) @@ -8018,8 +7965,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Darshilp326](https://github.com/Darshilp326) -- [@KevLehman](https://github.com/KevLehman) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RonLek](https://github.com/RonLek) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@abrom](https://github.com/abrom) @@ -8029,25 +7974,27 @@ - [@im-adithya](https://github.com/im-adithya) - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) -- [@matheusbsilva137](https://github.com/matheusbsilva137) - [@paulobernardoaf](https://github.com/paulobernardoaf) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@pierreozoux](https://github.com/pierreozoux) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@KevLehman](https://github.com/KevLehman) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@matheusbsilva137](https://github.com/matheusbsilva137) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@r0zbot](https://github.com/r0zbot) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.11.5 @@ -8080,7 +8027,7 @@ ### 🐛 Bug fixes -- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740) by [@renatobecker](https://github.com/renatobecker)) +- External systems not being able to change Omnichannel Inquiry priorities ([#20740](https://github.com/RocketChat/Rocket.Chat/pull/20740)) Due to a wrong property name, external applications were not able to change the priority of Omnichannel Inquires. @@ -8093,11 +8040,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@g-thome](https://github.com/g-thome) -- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) # 3.11.1 `2021-02-10 · 5 🐛 · 6 👩‍💻👨‍💻` @@ -8111,17 +8058,17 @@ ### 🐛 Bug fixes -- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Attachment download from title fixed ([#20585](https://github.com/RocketChat/Rocket.Chat/pull/20585)) Added target = '_self' to attachment link, this seems to fix the problem, without this attribute, error page is displayed. -- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Gif images aspect ratio on preview ([#20654](https://github.com/RocketChat/Rocket.Chat/pull/20654)) - Livechat bridge permission checkers ([#20653](https://github.com/RocketChat/Rocket.Chat/pull/20653) by [@lolimay](https://github.com/lolimay)) Update to latest patch version of the Apps-Engine with a fix for the Livechat bridge, as seen in https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/379 -- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Routing System not assigning chats to Bot agents ([#20662](https://github.com/RocketChat/Rocket.Chat/pull/20662)) The `Omnichannel Routing System` is no longer assigning chats to `bot` agents when the `bot` agent is the default agent of the inquiry. @@ -8130,13 +8077,13 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@lolimay](https://github.com/lolimay) -- [@renatobecker](https://github.com/renatobecker) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.11.0 @@ -8151,13 +8098,13 @@ ### 🎉 New features -- **Apps:** Apps Permission System ([#20078](https://github.com/RocketChat/Rocket.Chat/pull/20078) by [@thassiov](https://github.com/thassiov)) +- **Apps:** Apps Permission System ([#20078](https://github.com/RocketChat/Rocket.Chat/pull/20078)) - **Apps:** IPreFileUpload event ([#20285](https://github.com/RocketChat/Rocket.Chat/pull/20285) by [@lolimay](https://github.com/lolimay)) -- **ENTERPRISE:** Automatic transfer of unanswered conversations to another agent ([#20090](https://github.com/RocketChat/Rocket.Chat/pull/20090) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Automatic transfer of unanswered conversations to another agent ([#20090](https://github.com/RocketChat/Rocket.Chat/pull/20090)) -- **ENTERPRISE:** Omnichannel Contact Manager as preferred agent for routing ([#20244](https://github.com/RocketChat/Rocket.Chat/pull/20244) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Contact Manager as preferred agent for routing ([#20244](https://github.com/RocketChat/Rocket.Chat/pull/20244)) If the `Contact-Manager` is assigned to a Visitor, the chat will automatically get transferred to the respective Contact-Manager, provided the Contact-Manager is online. In-case the Contact-Manager is offline, the chat will be transferred to any other online agent. We have provided a setting to control this auto-assignment feature @@ -8173,7 +8120,7 @@ - If the Contact-Manager is online, the chat will appear in the Queue of Contact-Manager **ONLY** - If the Contact-Manager is offline, the chat will appear in the Queue of all related Agents/Manager ( like it's done right now ) -- Banner system and NPS ([#20221](https://github.com/RocketChat/Rocket.Chat/pull/20221) by [@tassoevan](https://github.com/tassoevan)) +- Banner system and NPS ([#20221](https://github.com/RocketChat/Rocket.Chat/pull/20221)) More robust and scalable banner system for alerting users. @@ -8209,7 +8156,7 @@ ![image](https://user-images.githubusercontent.com/2493803/105428971-45d90180-5c2f-11eb-992a-022a3df94471.png) -- Encrypted Discussions and new Encryption Permissions ([#20201](https://github.com/RocketChat/Rocket.Chat/pull/20201) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Encrypted Discussions and new Encryption Permissions ([#20201](https://github.com/RocketChat/Rocket.Chat/pull/20201)) - Server Info page ([#19517](https://github.com/RocketChat/Rocket.Chat/pull/19517)) @@ -8221,13 +8168,13 @@ Added a SAML setting to support updating room subscriptions each time a user logs in via SAML. Added a SAML setting to support including private rooms in SAML updated subscriptions (whether initial or on each logon). -- Autofocus on directory ([#20509](https://github.com/RocketChat/Rocket.Chat/pull/20509) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Autofocus on directory ([#20509](https://github.com/RocketChat/Rocket.Chat/pull/20509)) - Don't use global search by default ([#19777](https://github.com/RocketChat/Rocket.Chat/pull/19777) by [@i-kychukov](https://github.com/i-kychukov) & [@ikyuchukov](https://github.com/ikyuchukov)) Global chat search is not set by default now. -- Message Collection Hooks ([#20121](https://github.com/RocketChat/Rocket.Chat/pull/20121) by [@tassoevan](https://github.com/tassoevan)) +- Message Collection Hooks ([#20121](https://github.com/RocketChat/Rocket.Chat/pull/20121)) Integrating a list of messages into a React component imposes some challenges. Its content is provided by some REST API calls and live-updated by streamer events. To avoid too much coupling with React Hooks, the structures `RecordList`, `MessageList` and their derivatives are simple event emitters created and connected on components via some simple hooks, like `useThreadsList()` and `useRecordList()`. @@ -8255,11 +8202,11 @@ Remove unnecessary spaces from the translation key, and added English translation value for the key. -- **Apps:** Don't show the "review permissions" modal when there's none to review ([#20506](https://github.com/RocketChat/Rocket.Chat/pull/20506) by [@thassiov](https://github.com/thassiov)) +- **Apps:** Don't show the "review permissions" modal when there's none to review ([#20506](https://github.com/RocketChat/Rocket.Chat/pull/20506)) - **ENTERPRISE:** Auditing RoomAutocomplete ([#20311](https://github.com/RocketChat/Rocket.Chat/pull/20311)) -- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink)) - Actions from User Info panel ([#20073](https://github.com/RocketChat/Rocket.Chat/pull/20073) by [@Darshilp326](https://github.com/Darshilp326)) @@ -8282,7 +8229,7 @@ - Admin User Info email verified status ([#20110](https://github.com/RocketChat/Rocket.Chat/pull/20110) by [@bdelwood](https://github.com/bdelwood)) -- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink)) - Change header's favorite icon to filled star ([#20174](https://github.com/RocketChat/Rocket.Chat/pull/20174)) @@ -8324,13 +8271,13 @@ - Incorrect translations ZN ([#20245](https://github.com/RocketChat/Rocket.Chat/pull/20245) by [@moniang](https://github.com/moniang)) -- Initial values update on Account Preferences ([#19938](https://github.com/RocketChat/Rocket.Chat/pull/19938) by [@tassoevan](https://github.com/tassoevan)) +- Initial values update on Account Preferences ([#19938](https://github.com/RocketChat/Rocket.Chat/pull/19938)) -- Invalid filters on the Omnichannel Analytics page ([#19899](https://github.com/RocketChat/Rocket.Chat/pull/19899) by [@renatobecker](https://github.com/renatobecker)) +- Invalid filters on the Omnichannel Analytics page ([#19899](https://github.com/RocketChat/Rocket.Chat/pull/19899)) - Jump to message ([#20265](https://github.com/RocketChat/Rocket.Chat/pull/20265)) -- Livechat.RegisterGuest method removing unset fields ([#20124](https://github.com/RocketChat/Rocket.Chat/pull/20124) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Livechat.RegisterGuest method removing unset fields ([#20124](https://github.com/RocketChat/Rocket.Chat/pull/20124) by [@rafaelblink](https://github.com/rafaelblink)) After changes made on https://github.com/RocketChat/Rocket.Chat/pull/19931, the `Livechat.RegisterGuest` method started removing properties from the visitor inappropriately. The properties that did not receive value were removed from the object. Those changes were made to support the new Contact Form, but now the form has its own method to deal with Contact data so those changes are no longer necessary. @@ -8343,15 +8290,15 @@ - Meteor errors not translating for toast messages ([#19993](https://github.com/RocketChat/Rocket.Chat/pull/19993)) -- minWidth in FileIcon to prevent layout to broke ([#19942](https://github.com/RocketChat/Rocket.Chat/pull/19942) by [@tassoevan](https://github.com/tassoevan)) +- minWidth in FileIcon to prevent layout to broke ([#19942](https://github.com/RocketChat/Rocket.Chat/pull/19942)) ![image](https://user-images.githubusercontent.com/27704687/102934691-69b7f480-4483-11eb-995b-a8a9b72246aa.png) -- Normalize messages for users in endpoint chat.getStarredMessages ([#19962](https://github.com/RocketChat/Rocket.Chat/pull/19962) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Normalize messages for users in endpoint chat.getStarredMessages ([#19962](https://github.com/RocketChat/Rocket.Chat/pull/19962)) -- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003)) -- Omnichannel - Contact Center form is not validating custom fields properly ([#20196](https://github.com/RocketChat/Rocket.Chat/pull/20196) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel - Contact Center form is not validating custom fields properly ([#20196](https://github.com/RocketChat/Rocket.Chat/pull/20196) by [@rafaelblink](https://github.com/rafaelblink)) The contact form is accepting undefined values in required custom fields when creating or editing contacts, and, the errror message isn't following Rocket.chat design system. @@ -8367,13 +8314,13 @@ #### Edit ![image](https://user-images.githubusercontent.com/2493803/104770538-7b717c80-574f-11eb-829f-1ae304103369.png) -- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093)) -- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089)) - Profile picture changing with username ([#19992](https://github.com/RocketChat/Rocket.Chat/pull/19992)) @@ -8409,7 +8356,7 @@ https://user-images.githubusercontent.com/28918901/104960749-dbd81680-59fa-11eb-9c7b-2b257936f894.mp4 -- Search list filter ([#19937](https://github.com/RocketChat/Rocket.Chat/pull/19937) by [@tassoevan](https://github.com/tassoevan)) +- Search list filter ([#19937](https://github.com/RocketChat/Rocket.Chat/pull/19937)) - Sidebar palette color broken on IE ([#20457](https://github.com/RocketChat/Rocket.Chat/pull/20457)) @@ -8470,7 +8417,7 @@ - Chore: Fix i18n duplicated keys ([#19998](https://github.com/RocketChat/Rocket.Chat/pull/19998)) -- Chore: Recover and update Storybook ([#20047](https://github.com/RocketChat/Rocket.Chat/pull/20047) by [@tassoevan](https://github.com/tassoevan)) +- Chore: Recover and update Storybook ([#20047](https://github.com/RocketChat/Rocket.Chat/pull/20047)) It reenables Storybook's usage. @@ -8494,7 +8441,7 @@ **After**: ![image](https://user-images.githubusercontent.com/27704687/105274050-2e404100-5b7b-11eb-93b2-b6282a7bed95.png) -- regression: Announcement link open in new tab ([#20435](https://github.com/RocketChat/Rocket.Chat/pull/20435) by [@tiagoevanp](https://github.com/tiagoevanp)) +- regression: Announcement link open in new tab ([#20435](https://github.com/RocketChat/Rocket.Chat/pull/20435)) - Regression: Apps-Engine - Convert streams to buffers on file upload ([#20523](https://github.com/RocketChat/Rocket.Chat/pull/20523)) @@ -8502,7 +8449,7 @@ - Regression: Attachments ([#20291](https://github.com/RocketChat/Rocket.Chat/pull/20291)) -- Regression: Bio page not rendering ([#20450](https://github.com/RocketChat/Rocket.Chat/pull/20450) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Bio page not rendering ([#20450](https://github.com/RocketChat/Rocket.Chat/pull/20450)) - Regression: Change sort icon ([#20177](https://github.com/RocketChat/Rocket.Chat/pull/20177)) @@ -8512,7 +8459,7 @@ ### After ![image](https://user-images.githubusercontent.com/40830821/104366542-4cad9900-54f8-11eb-83ca-acb99899515a.png) -- Regression: Custom field labels are not displayed properly on Omnichannel Contact Profile form ([#20393](https://github.com/RocketChat/Rocket.Chat/pull/20393) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Custom field labels are not displayed properly on Omnichannel Contact Profile form ([#20393](https://github.com/RocketChat/Rocket.Chat/pull/20393) by [@rafaelblink](https://github.com/rafaelblink)) ### Before ![image](https://user-images.githubusercontent.com/2493803/105780399-20116c80-5f4f-11eb-9620-0901472e453b.png) @@ -8533,7 +8480,7 @@ - Regression: Fix Cron statistics TypeError ([#20343](https://github.com/RocketChat/Rocket.Chat/pull/20343) by [@RonLek](https://github.com/RonLek)) -- Regression: Fix duplicate email messages in multiple instances ([#20495](https://github.com/RocketChat/Rocket.Chat/pull/20495) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Fix duplicate email messages in multiple instances ([#20495](https://github.com/RocketChat/Rocket.Chat/pull/20495)) - Regression: Fix e2e paused state ([#20511](https://github.com/RocketChat/Rocket.Chat/pull/20511)) @@ -8547,7 +8494,7 @@ - Regression: Lint warnings and some datepicker ([#20280](https://github.com/RocketChat/Rocket.Chat/pull/20280)) -- Regression: NPS ([#20514](https://github.com/RocketChat/Rocket.Chat/pull/20514) by [@tassoevan](https://github.com/tassoevan)) +- Regression: NPS ([#20514](https://github.com/RocketChat/Rocket.Chat/pull/20514)) - Regression: reactAttachments cpu ([#20255](https://github.com/RocketChat/Rocket.Chat/pull/20255)) @@ -8588,7 +8535,7 @@ - Update "Industry" setting ([#20510](https://github.com/RocketChat/Rocket.Chat/pull/20510)) -- Update Apps-Engine and permissions translations ([#20491](https://github.com/RocketChat/Rocket.Chat/pull/20491) by [@lolimay](https://github.com/lolimay) & [@thassiov](https://github.com/thassiov)) +- Update Apps-Engine and permissions translations ([#20491](https://github.com/RocketChat/Rocket.Chat/pull/20491) by [@lolimay](https://github.com/lolimay)) Update Apps-Engine version and apply changes in translations for the changed permissions. Please review the texts on the translation files to make sure they're clear. @@ -8604,7 +8551,6 @@ - [@Darshilp326](https://github.com/Darshilp326) - [@Karting06](https://github.com/Karting06) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RonLek](https://github.com/RonLek) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@aditya-mitra](https://github.com/aditya-mitra) @@ -8616,26 +8562,27 @@ - [@lolimay](https://github.com/lolimay) - [@lucassartor](https://github.com/lucassartor) - [@moniang](https://github.com/moniang) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) - [@sushant52](https://github.com/sushant52) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@tlskinneriv](https://github.com/tlskinneriv) - [@wggdeveloper](https://github.com/wggdeveloper) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) - [@yash-rajpal](https://github.com/yash-rajpal) # 3.10.5 @@ -8736,41 +8683,41 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel custom fields not storing additional form values ([#19953](https://github.com/RocketChat/Rocket.Chat/pull/19953) by [@rafaelblink](https://github.com/rafaelblink)) - Actions from User Info panel ([#20073](https://github.com/RocketChat/Rocket.Chat/pull/20073) by [@Darshilp326](https://github.com/Darshilp326)) Users can be removed from channels without any error message. -- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Agent information panel not rendering ([#19965](https://github.com/RocketChat/Rocket.Chat/pull/19965) by [@rafaelblink](https://github.com/rafaelblink)) - Creation of Omnichannel rooms not working correctly through the Apps when the agent parameter is set ([#19997](https://github.com/RocketChat/Rocket.Chat/pull/19997)) - Messages being updated when not required after user changes his profile ([#20114](https://github.com/RocketChat/Rocket.Chat/pull/20114)) -- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- OAuth users being asked to change password on second login ([#20003](https://github.com/RocketChat/Rocket.Chat/pull/20003)) -- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Agents unable to take new chats in the queue ([#20022](https://github.com/RocketChat/Rocket.Chat/pull/20022) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Business Hours form is not being rendered ([#20007](https://github.com/RocketChat/Rocket.Chat/pull/20007) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel raw model importing meteor dependency ([#20093](https://github.com/RocketChat/Rocket.Chat/pull/20093)) -- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel rooms breaking after return to queue or forward ([#20089](https://github.com/RocketChat/Rocket.Chat/pull/20089)) - User Audio notification preference not being applied ([#20061](https://github.com/RocketChat/Rocket.Chat/pull/20061)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Darshilp326](https://github.com/Darshilp326) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.10.0 @@ -8785,9 +8732,9 @@ ### 🎉 New features -- Custom scroll ([#19701](https://github.com/RocketChat/Rocket.Chat/pull/19701) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Custom scroll ([#19701](https://github.com/RocketChat/Rocket.Chat/pull/19701)) -- Omnichannel Contact Center (Directory) ([#19931](https://github.com/RocketChat/Rocket.Chat/pull/19931) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Contact Center (Directory) ([#19931](https://github.com/RocketChat/Rocket.Chat/pull/19931) by [@rafaelblink](https://github.com/rafaelblink)) - REST Endpoint `instances.get` ([#19926](https://github.com/RocketChat/Rocket.Chat/pull/19926) by [@g-thome](https://github.com/g-thome)) @@ -8795,7 +8742,7 @@ - REST endpoints to add and retrieve Enterprise licenses ([#19925](https://github.com/RocketChat/Rocket.Chat/pull/19925) by [@g-thome](https://github.com/g-thome)) -- Update Checker Description ([#19892](https://github.com/RocketChat/Rocket.Chat/pull/19892) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Update Checker Description ([#19892](https://github.com/RocketChat/Rocket.Chat/pull/19892)) - User preference for audio notifications ([#19924](https://github.com/RocketChat/Rocket.Chat/pull/19924)) @@ -8804,7 +8751,7 @@ ### 🚀 Improvements -- Removed useEndpointDataExperimental hook usage ([#19496](https://github.com/RocketChat/Rocket.Chat/pull/19496) by [@tassoevan](https://github.com/tassoevan)) +- Removed useEndpointDataExperimental hook usage ([#19496](https://github.com/RocketChat/Rocket.Chat/pull/19496)) - Replace useClipboard ([#19764](https://github.com/RocketChat/Rocket.Chat/pull/19764)) @@ -8818,7 +8765,7 @@ - Rewrite contextualbar RoomMembers as React Component ([#19841](https://github.com/RocketChat/Rocket.Chat/pull/19841)) -- Rewrite NotificationPreferences to React component ([#19672](https://github.com/RocketChat/Rocket.Chat/pull/19672) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Rewrite NotificationPreferences to React component ([#19672](https://github.com/RocketChat/Rocket.Chat/pull/19672)) - Rewrite Room Files as React Component ([#19580](https://github.com/RocketChat/Rocket.Chat/pull/19580)) @@ -8827,21 +8774,21 @@ ### 🐛 Bug fixes -- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762)) -- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink)) - Add fallback message when show notification content is disabled ([#19516](https://github.com/RocketChat/Rocket.Chat/pull/19516) by [@youssef-md](https://github.com/youssef-md)) -- Admin Users screen sorting showing deactivated users in wrong order ([#19898](https://github.com/RocketChat/Rocket.Chat/pull/19898) by [@alansikora](https://github.com/alansikora)) +- Admin Users screen sorting showing deactivated users in wrong order ([#19898](https://github.com/RocketChat/Rocket.Chat/pull/19898)) -- Custom Avatar ([#19805](https://github.com/RocketChat/Rocket.Chat/pull/19805) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Custom Avatar ([#19805](https://github.com/RocketChat/Rocket.Chat/pull/19805)) - Download my data with file uploads ([#19862](https://github.com/RocketChat/Rocket.Chat/pull/19862)) -- Emails not showing up in Admin/Users ([#19727](https://github.com/RocketChat/Rocket.Chat/pull/19727) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Emails not showing up in Admin/Users ([#19727](https://github.com/RocketChat/Rocket.Chat/pull/19727)) -- File Tab Order ([#19729](https://github.com/RocketChat/Rocket.Chat/pull/19729) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- File Tab Order ([#19729](https://github.com/RocketChat/Rocket.Chat/pull/19729)) - Forgot password endpoint return status ([#19842](https://github.com/RocketChat/Rocket.Chat/pull/19842) by [@g-thome](https://github.com/g-thome)) @@ -8855,37 +8802,37 @@ - Image preview for image URLs on messages ([#19734](https://github.com/RocketChat/Rocket.Chat/pull/19734) by [@g-thome](https://github.com/g-thome)) -- Issue with oembed ([#19923](https://github.com/RocketChat/Rocket.Chat/pull/19923) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with oembed ([#19923](https://github.com/RocketChat/Rocket.Chat/pull/19923)) -- Issue with oembed ([#19886](https://github.com/RocketChat/Rocket.Chat/pull/19886) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with oembed ([#19886](https://github.com/RocketChat/Rocket.Chat/pull/19886)) -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) -- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) -- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945) by [@tassoevan](https://github.com/tassoevan)) +- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945)) - RoomForeword ([#19875](https://github.com/RocketChat/Rocket.Chat/pull/19875)) -- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746) by [@alansikora](https://github.com/alansikora)) +- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746)) - Sidebar UI disappearing ([#19725](https://github.com/RocketChat/Rocket.Chat/pull/19725)) -- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763) by [@thassiov](https://github.com/thassiov)) +- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763)) -- Spotify oEmbed ([#19825](https://github.com/RocketChat/Rocket.Chat/pull/19825) by [@tassoevan](https://github.com/tassoevan)) +- Spotify oEmbed ([#19825](https://github.com/RocketChat/Rocket.Chat/pull/19825)) - Startup error when using MongoDB with a password containing special characters ([#19749](https://github.com/RocketChat/Rocket.Chat/pull/19749)) -- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935) by [@tassoevan](https://github.com/tassoevan)) +- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935)) - UIKit Modal not scrolling ([#19690](https://github.com/RocketChat/Rocket.Chat/pull/19690)) - Update base image in Dockerfile.rhel ([#19036](https://github.com/RocketChat/Rocket.Chat/pull/19036) by [@andykrohg](https://github.com/andykrohg)) -- User email showing [object Object] ([#19870](https://github.com/RocketChat/Rocket.Chat/pull/19870) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- User email showing [object Object] ([#19870](https://github.com/RocketChat/Rocket.Chat/pull/19870)) - User Info 'Local Time' translation keyword ([#19879](https://github.com/RocketChat/Rocket.Chat/pull/19879) by [@J4r3tt](https://github.com/J4r3tt)) @@ -8901,7 +8848,7 @@ - Chore: Fix Caddy download URL in Snaps ([#19912](https://github.com/RocketChat/Rocket.Chat/pull/19912)) -- Chore: Add watch.settings to events whitelist ([#19850](https://github.com/RocketChat/Rocket.Chat/pull/19850) by [@alansikora](https://github.com/alansikora)) +- Chore: Add watch.settings to events whitelist ([#19850](https://github.com/RocketChat/Rocket.Chat/pull/19850)) - Chore: Change Youtube test to verify if has an iframe with max-width ([#19863](https://github.com/RocketChat/Rocket.Chat/pull/19863)) @@ -8929,19 +8876,19 @@ - Merge master into develop & Set version to 3.10.0-develop ([#19720](https://github.com/RocketChat/Rocket.Chat/pull/19720)) -- Message parsing and rendering - Phase 1 ([#19654](https://github.com/RocketChat/Rocket.Chat/pull/19654) by [@tassoevan](https://github.com/tassoevan)) +- Message parsing and rendering - Phase 1 ([#19654](https://github.com/RocketChat/Rocket.Chat/pull/19654)) - Regression: "My Account" page doesn't load ([#19753](https://github.com/RocketChat/Rocket.Chat/pull/19753) by [@g-thome](https://github.com/g-thome)) - Regression: Add currently running instance to instances.get endpoint ([#19955](https://github.com/RocketChat/Rocket.Chat/pull/19955) by [@g-thome](https://github.com/g-thome)) -- Regression: Add Members showing the wrong template ([#19748](https://github.com/RocketChat/Rocket.Chat/pull/19748) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Add Members showing the wrong template ([#19748](https://github.com/RocketChat/Rocket.Chat/pull/19748)) -- Regression: Add missing translations on the Omnichannel Contact Center(Directory) ([#19968](https://github.com/RocketChat/Rocket.Chat/pull/19968) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Add missing translations on the Omnichannel Contact Center(Directory) ([#19968](https://github.com/RocketChat/Rocket.Chat/pull/19968) by [@rafaelblink](https://github.com/rafaelblink)) - Regression: Admin Sidebar Scroll ([#19944](https://github.com/RocketChat/Rocket.Chat/pull/19944)) -- Regression: Check permissions properly when fetching rooms in Omnichannel Directory ([#19951](https://github.com/RocketChat/Rocket.Chat/pull/19951) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Check permissions properly when fetching rooms in Omnichannel Directory ([#19951](https://github.com/RocketChat/Rocket.Chat/pull/19951) by [@rafaelblink](https://github.com/rafaelblink)) - Regression: contextualBar folder structure ([#19761](https://github.com/RocketChat/Rocket.Chat/pull/19761)) @@ -8954,9 +8901,9 @@ After: ![image](https://user-images.githubusercontent.com/40830821/103242680-ee988780-4935-11eb-99e2-a95de99f78f1.png) -- Regression: Failed autolinker and markdown rendering ([#19831](https://github.com/RocketChat/Rocket.Chat/pull/19831) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Failed autolinker and markdown rendering ([#19831](https://github.com/RocketChat/Rocket.Chat/pull/19831)) -- Regression: fix broken members list ([#19806](https://github.com/RocketChat/Rocket.Chat/pull/19806) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: fix broken members list ([#19806](https://github.com/RocketChat/Rocket.Chat/pull/19806)) - Regression: Fix member list Actions ([#19876](https://github.com/RocketChat/Rocket.Chat/pull/19876)) @@ -8964,11 +8911,11 @@ - Regression: Fix Room Files for DMs ([#19874](https://github.com/RocketChat/Rocket.Chat/pull/19874)) -- Regression: Fix sorting indicators on Admin Users page ([#19950](https://github.com/RocketChat/Rocket.Chat/pull/19950) by [@alansikora](https://github.com/alansikora)) +- Regression: Fix sorting indicators on Admin Users page ([#19950](https://github.com/RocketChat/Rocket.Chat/pull/19950)) -- Regression: Header Styles fixes ([#19946](https://github.com/RocketChat/Rocket.Chat/pull/19946) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Header Styles fixes ([#19946](https://github.com/RocketChat/Rocket.Chat/pull/19946)) -- Regression: Omnichannel Custom Fields Form no longer working after refactoring ([#19948](https://github.com/RocketChat/Rocket.Chat/pull/19948) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Omnichannel Custom Fields Form no longer working after refactoring ([#19948](https://github.com/RocketChat/Rocket.Chat/pull/19948)) The Omnichannel `Custom Fields` form is not working anymore after some refactorings on client-side. When the user clicks on `Custom Field` in the Omnichannel menu, a blank page appears. @@ -8995,27 +8942,27 @@ - [@ArnoSaine](https://github.com/ArnoSaine) - [@J4r3tt](https://github.com/J4r3tt) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) -- [@alansikora](https://github.com/alansikora) - [@andykrohg](https://github.com/andykrohg) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@youssef-md](https://github.com/youssef-md) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.9.4 `2020-12-31 · 3 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` @@ -9029,11 +8976,11 @@ ### 🐛 Bug fixes -- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Departments Canned Responses ([#19830](https://github.com/RocketChat/Rocket.Chat/pull/19830)) -- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945) by [@tassoevan](https://github.com/tassoevan)) +- Room scrolling to top after returns to a opened room ([#19945](https://github.com/RocketChat/Rocket.Chat/pull/19945)) -- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935) by [@tassoevan](https://github.com/tassoevan)) +- Status on searchlist ([#19935](https://github.com/RocketChat/Rocket.Chat/pull/19935))
🔍 Minor changes @@ -9043,17 +8990,14 @@
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.9.3 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -9067,11 +9011,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -9087,27 +9031,27 @@ ### 🐛 Bug fixes -- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- 'Not Allowed' in message auditing ([#19762](https://github.com/RocketChat/Rocket.Chat/pull/19762)) -- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Department form is not correctly storing the list of departments allowed for forwarding ([#19793](https://github.com/RocketChat/Rocket.Chat/pull/19793) by [@rafaelblink](https://github.com/rafaelblink)) - Download my data with file uploads ([#19862](https://github.com/RocketChat/Rocket.Chat/pull/19862)) - Forgot password endpoint return status ([#19842](https://github.com/RocketChat/Rocket.Chat/pull/19842) by [@g-thome](https://github.com/g-thome)) -- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763) by [@thassiov](https://github.com/thassiov)) +- Some apps were not correctly enabled during startup in HA environments ([#19763](https://github.com/RocketChat/Rocket.Chat/pull/19763)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@g-thome](https://github.com/g-thome) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@thassiov](https://github.com/thassiov) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@thassiov](https://github.com/thassiov) # 3.9.1 `2020-12-05 · 5 🐛 · 4 👩‍💻👨‍💻` @@ -9125,7 +9069,7 @@ - Image preview for image URLs on messages ([#19734](https://github.com/RocketChat/Rocket.Chat/pull/19734) by [@g-thome](https://github.com/g-thome)) -- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746) by [@alansikora](https://github.com/alansikora)) +- Sidebar presence will now correctly update for Omnichannel rooms ([#19746](https://github.com/RocketChat/Rocket.Chat/pull/19746)) - Sidebar UI disappearing ([#19725](https://github.com/RocketChat/Rocket.Chat/pull/19725)) @@ -9133,11 +9077,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@alansikora](https://github.com/alansikora) - [@g-thome](https://github.com/g-thome) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@alansikora](https://github.com/alansikora) - [@gabriellsh](https://github.com/gabriellsh) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9153,20 +9097,20 @@ ### 🎉 New features -- 2 Factor Authentication when using OAuth and SAML ([#11726](https://github.com/RocketChat/Rocket.Chat/pull/11726) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- 2 Factor Authentication when using OAuth and SAML ([#11726](https://github.com/RocketChat/Rocket.Chat/pull/11726) by [@Hudell](https://github.com/Hudell)) -- Added setting to disable password changes for users who log in using SSO ([#10391](https://github.com/RocketChat/Rocket.Chat/pull/10391) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Added setting to disable password changes for users who log in using SSO ([#10391](https://github.com/RocketChat/Rocket.Chat/pull/10391) by [@Hudell](https://github.com/Hudell)) ### 🚀 Improvements -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Monitors page ([#19495](https://github.com/RocketChat/Rocket.Chat/pull/19495) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Monitors page ([#19495](https://github.com/RocketChat/Rocket.Chat/pull/19495) by [@rafaelblink](https://github.com/rafaelblink)) -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Priorities page ([#19512](https://github.com/RocketChat/Rocket.Chat/pull/19512) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Priorities page ([#19512](https://github.com/RocketChat/Rocket.Chat/pull/19512) by [@rafaelblink](https://github.com/rafaelblink)) -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Tags page ([#19510](https://github.com/RocketChat/Rocket.Chat/pull/19510) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Tags page ([#19510](https://github.com/RocketChat/Rocket.Chat/pull/19510) by [@rafaelblink](https://github.com/rafaelblink)) -- **ENTERPRISE:** UI/UX enhancements in Omnichannel Units page ([#19500](https://github.com/RocketChat/Rocket.Chat/pull/19500) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** UI/UX enhancements in Omnichannel Units page ([#19500](https://github.com/RocketChat/Rocket.Chat/pull/19500) by [@rafaelblink](https://github.com/rafaelblink)) - Add support to `replace` operation when using Change Stream ([#19579](https://github.com/RocketChat/Rocket.Chat/pull/19579)) @@ -9176,25 +9120,25 @@ Moved some libraries to dynamic imports Removed some shared code not used on the client side -- Forward Omnichannel room to agent in another department ([#19576](https://github.com/RocketChat/Rocket.Chat/pull/19576) by [@mrfigueiredo](https://github.com/mrfigueiredo) & [@renatobecker](https://github.com/renatobecker)) +- Forward Omnichannel room to agent in another department ([#19576](https://github.com/RocketChat/Rocket.Chat/pull/19576) by [@mrfigueiredo](https://github.com/mrfigueiredo)) -- KeyboardShortcuts as React component ([#19518](https://github.com/RocketChat/Rocket.Chat/pull/19518) by [@tiagoevanp](https://github.com/tiagoevanp)) +- KeyboardShortcuts as React component ([#19518](https://github.com/RocketChat/Rocket.Chat/pull/19518)) -- Remove Box dependence from Tag and Badge components ([#19467](https://github.com/RocketChat/Rocket.Chat/pull/19467) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Remove Box dependence from Tag and Badge components ([#19467](https://github.com/RocketChat/Rocket.Chat/pull/19467)) -- Remove Box props from Avatar component ([#19491](https://github.com/RocketChat/Rocket.Chat/pull/19491) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Remove Box props from Avatar component ([#19491](https://github.com/RocketChat/Rocket.Chat/pull/19491)) -- Rewrite Auto-Translate as a React component ([#19633](https://github.com/RocketChat/Rocket.Chat/pull/19633) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Rewrite Auto-Translate as a React component ([#19633](https://github.com/RocketChat/Rocket.Chat/pull/19633)) - Rewrite Room Info ([#19511](https://github.com/RocketChat/Rocket.Chat/pull/19511)) - SlackBridge threads performance improvement ([#19338](https://github.com/RocketChat/Rocket.Chat/pull/19338) by [@antkaz](https://github.com/antkaz)) -- UI/UX enhancements in department pages following the design system ([#19421](https://github.com/RocketChat/Rocket.Chat/pull/19421) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- UI/UX enhancements in department pages following the design system ([#19421](https://github.com/RocketChat/Rocket.Chat/pull/19421) by [@rafaelblink](https://github.com/rafaelblink)) -- UI/UX enhancements in Omnichannel Triggers page ([#19485](https://github.com/RocketChat/Rocket.Chat/pull/19485) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- UI/UX enhancements in Omnichannel Triggers page ([#19485](https://github.com/RocketChat/Rocket.Chat/pull/19485) by [@rafaelblink](https://github.com/rafaelblink)) -- UI/UX enhancements in Omnichannnel Current Chats page ([#19397](https://github.com/RocketChat/Rocket.Chat/pull/19397) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- UI/UX enhancements in Omnichannnel Current Chats page ([#19397](https://github.com/RocketChat/Rocket.Chat/pull/19397) by [@rafaelblink](https://github.com/rafaelblink)) ### 🐛 Bug fixes @@ -9205,67 +9149,67 @@ - Auto Translate ([#19599](https://github.com/RocketChat/Rocket.Chat/pull/19599)) -- Channel actions not working when reduce motion is active ([#19638](https://github.com/RocketChat/Rocket.Chat/pull/19638) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Channel actions not working when reduce motion is active ([#19638](https://github.com/RocketChat/Rocket.Chat/pull/19638)) -- Column width was not following the design system in Omnichannel Departments page ([#19601](https://github.com/RocketChat/Rocket.Chat/pull/19601) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Column width was not following the design system in Omnichannel Departments page ([#19601](https://github.com/RocketChat/Rocket.Chat/pull/19601) by [@rafaelblink](https://github.com/rafaelblink)) - Engagement dashboard on old Mongo versions ([#19616](https://github.com/RocketChat/Rocket.Chat/pull/19616)) - Engagement dashboard: graphs adjustment ([#19450](https://github.com/RocketChat/Rocket.Chat/pull/19450)) -- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561)) -- Input without label and email ordering missing on Omnichannel Agents page ([#19414](https://github.com/RocketChat/Rocket.Chat/pull/19414) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Input without label and email ordering missing on Omnichannel Agents page ([#19414](https://github.com/RocketChat/Rocket.Chat/pull/19414) by [@rafaelblink](https://github.com/rafaelblink)) -- Issue with drag and drop ([#19593](https://github.com/RocketChat/Rocket.Chat/pull/19593) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with drag and drop ([#19593](https://github.com/RocketChat/Rocket.Chat/pull/19593)) - LDAP Unique Identifier Field can not use operational attributes ([#19571](https://github.com/RocketChat/Rocket.Chat/pull/19571) by [@truongtx8](https://github.com/truongtx8)) -- Omnichannel Analytics page doesn't have field labels ([#19400](https://github.com/RocketChat/Rocket.Chat/pull/19400) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Analytics page doesn't have field labels ([#19400](https://github.com/RocketChat/Rocket.Chat/pull/19400) by [@rafaelblink](https://github.com/rafaelblink)) - Outgoing integrations without trigger words or with multiple commas ([#19488](https://github.com/RocketChat/Rocket.Chat/pull/19488) by [@g-thome](https://github.com/g-thome)) - Prevent headerRoom's click to open room/direct info ([#19596](https://github.com/RocketChat/Rocket.Chat/pull/19596)) -- Regex was not working properly on visitors.search endpoint ([#19577](https://github.com/RocketChat/Rocket.Chat/pull/19577) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Regex was not working properly on visitors.search endpoint ([#19577](https://github.com/RocketChat/Rocket.Chat/pull/19577) by [@rafaelblink](https://github.com/rafaelblink)) -- Restore Message View Mode Preference ([#19458](https://github.com/RocketChat/Rocket.Chat/pull/19458) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Restore Message View Mode Preference ([#19458](https://github.com/RocketChat/Rocket.Chat/pull/19458)) [FIX] Restore Message View Mode Preference - Role description not updating ([#19236](https://github.com/RocketChat/Rocket.Chat/pull/19236)) -- Save button enabled by default in Omnichannel Business Hours Form ([#19493](https://github.com/RocketChat/Rocket.Chat/pull/19493) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Save button enabled by default in Omnichannel Business Hours Form ([#19493](https://github.com/RocketChat/Rocket.Chat/pull/19493) by [@rafaelblink](https://github.com/rafaelblink)) - Settings may not update internal cache immediately ([#19628](https://github.com/RocketChat/Rocket.Chat/pull/19628) by [@g-thome](https://github.com/g-thome)) -- Setup Wizard User Creation Locking up ([#19509](https://github.com/RocketChat/Rocket.Chat/pull/19509) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Setup Wizard User Creation Locking up ([#19509](https://github.com/RocketChat/Rocket.Chat/pull/19509)) [FIX] Setup Wizard User Creation Locking up -- Size of embed Youtube on threads for small screens ([#19514](https://github.com/RocketChat/Rocket.Chat/pull/19514) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Size of embed Youtube on threads for small screens ([#19514](https://github.com/RocketChat/Rocket.Chat/pull/19514)) -- The width of list columns was not following the design system in Omnichannel Agents page ([#19625](https://github.com/RocketChat/Rocket.Chat/pull/19625) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- The width of list columns was not following the design system in Omnichannel Agents page ([#19625](https://github.com/RocketChat/Rocket.Chat/pull/19625) by [@rafaelblink](https://github.com/rafaelblink)) -- The width of list columns was not following the design system in Omnichannel Managers page ([#19624](https://github.com/RocketChat/Rocket.Chat/pull/19624) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- The width of list columns was not following the design system in Omnichannel Managers page ([#19624](https://github.com/RocketChat/Rocket.Chat/pull/19624) by [@rafaelblink](https://github.com/rafaelblink)) -- TOTP Being ignored when changing our own avatar ([#19475](https://github.com/RocketChat/Rocket.Chat/pull/19475) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- TOTP Being ignored when changing our own avatar ([#19475](https://github.com/RocketChat/Rocket.Chat/pull/19475)) [FIX] TOTP Being ignored when changing our own avatar - Typo in custom oauth from environment variable ([#19570](https://github.com/RocketChat/Rocket.Chat/pull/19570)) -- UI/UX issues on Omnichannel Managers page ([#19410](https://github.com/RocketChat/Rocket.Chat/pull/19410) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- UI/UX issues on Omnichannel Managers page ([#19410](https://github.com/RocketChat/Rocket.Chat/pull/19410) by [@rafaelblink](https://github.com/rafaelblink)) - Unread count for all messages when mentioning an user ([#16884](https://github.com/RocketChat/Rocket.Chat/pull/16884) by [@subham103](https://github.com/subham103)) -- Wrong margin of description field in Omnichannel Webhooks page ([#19487](https://github.com/RocketChat/Rocket.Chat/pull/19487) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- Wrong margin of description field in Omnichannel Webhooks page ([#19487](https://github.com/RocketChat/Rocket.Chat/pull/19487) by [@rafaelblink](https://github.com/rafaelblink))
🔍 Minor changes -- [IMPROVES] Omnichannel - Custom Fields pages. ([#19473](https://github.com/RocketChat/Rocket.Chat/pull/19473) by [@rafaelblink](https://github.com/rafaelblink) & [@renatobecker](https://github.com/renatobecker)) +- [IMPROVES] Omnichannel - Custom Fields pages. ([#19473](https://github.com/RocketChat/Rocket.Chat/pull/19473) by [@rafaelblink](https://github.com/rafaelblink)) - Bump bcrypt from 4.0.1 to 5.0.0 in /ee/server/services ([#19387](https://github.com/RocketChat/Rocket.Chat/pull/19387) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -9297,25 +9241,25 @@ - Regression: Fix Avatar x40 ([#19564](https://github.com/RocketChat/Rocket.Chat/pull/19564)) -- Regression: Fix Custom OAuth 2FA ([#19691](https://github.com/RocketChat/Rocket.Chat/pull/19691) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Fix Custom OAuth 2FA ([#19691](https://github.com/RocketChat/Rocket.Chat/pull/19691)) -- Regression: Fix LDAP 2FA not working when Login Fallback is off ([#19659](https://github.com/RocketChat/Rocket.Chat/pull/19659) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Fix LDAP 2FA not working when Login Fallback is off ([#19659](https://github.com/RocketChat/Rocket.Chat/pull/19659)) - Regression: Fix multiple react blazed template rendering at the same time ([#19679](https://github.com/RocketChat/Rocket.Chat/pull/19679)) -- Regression: Fix wrong template on photoswipe ([#19575](https://github.com/RocketChat/Rocket.Chat/pull/19575) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix wrong template on photoswipe ([#19575](https://github.com/RocketChat/Rocket.Chat/pull/19575)) -- Regression: Issues with Safari ([#19671](https://github.com/RocketChat/Rocket.Chat/pull/19671) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Issues with Safari ([#19671](https://github.com/RocketChat/Rocket.Chat/pull/19671)) -- Regression: object-fit for image element and Box margin in AppAvatar component ([#19698](https://github.com/RocketChat/Rocket.Chat/pull/19698) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: object-fit for image element and Box margin in AppAvatar component ([#19698](https://github.com/RocketChat/Rocket.Chat/pull/19698)) -- REGRESSION: Photoswipe not working ([#19569](https://github.com/RocketChat/Rocket.Chat/pull/19569) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- REGRESSION: Photoswipe not working ([#19569](https://github.com/RocketChat/Rocket.Chat/pull/19569)) - Regression: Room Info Edit action ([#19581](https://github.com/RocketChat/Rocket.Chat/pull/19581)) - Regression: Room Info maxAgeDefault variable ([#19582](https://github.com/RocketChat/Rocket.Chat/pull/19582)) -- Regression: URL preview problem ([#19685](https://github.com/RocketChat/Rocket.Chat/pull/19685) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: URL preview problem ([#19685](https://github.com/RocketChat/Rocket.Chat/pull/19685)) - Regression: Verticalbar size ([#19670](https://github.com/RocketChat/Rocket.Chat/pull/19670)) @@ -9332,29 +9276,29 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@g-thome](https://github.com/g-thome) - [@mrfigueiredo](https://github.com/mrfigueiredo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) - [@robertfromont](https://github.com/robertfromont) - [@subham103](https://github.com/subham103) -- [@tiagoevanp](https://github.com/tiagoevanp) - [@truongtx8](https://github.com/truongtx8) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.8.5 `2020-12-31 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -9389,11 +9333,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -9461,7 +9405,7 @@ - Engagement dashboard on old Mongo versions ([#19616](https://github.com/RocketChat/Rocket.Chat/pull/19616)) -- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- IE11 - Update ui kit and fuselage bundle ([#19561](https://github.com/RocketChat/Rocket.Chat/pull/19561)) - Typo in custom oauth from environment variable ([#19570](https://github.com/RocketChat/Rocket.Chat/pull/19570)) @@ -9471,14 +9415,11 @@ - Fix Docker preview image build ([#19627](https://github.com/RocketChat/Rocket.Chat/pull/19627)) -
- -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MartinSchoeler](https://github.com/MartinSchoeler) + ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9496,7 +9437,7 @@ - **Apps:** Add new typing bridge method (Typing-Indicator) ([#19228](https://github.com/RocketChat/Rocket.Chat/pull/19228) by [@lolimay](https://github.com/lolimay)) -- **APPS:** New Scheduler API ([#19290](https://github.com/RocketChat/Rocket.Chat/pull/19290) by [@thassiov](https://github.com/thassiov)) +- **APPS:** New Scheduler API ([#19290](https://github.com/RocketChat/Rocket.Chat/pull/19290)) - **Apps:** Remove TS compiler ([#18687](https://github.com/RocketChat/Rocket.Chat/pull/18687)) @@ -9510,7 +9451,7 @@ - Apps prometheus metrics ([#19320](https://github.com/RocketChat/Rocket.Chat/pull/19320)) -- Audits search by User ([#19275](https://github.com/RocketChat/Rocket.Chat/pull/19275) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Audits search by User ([#19275](https://github.com/RocketChat/Rocket.Chat/pull/19275)) - Branding updated with new logos ([#19440](https://github.com/RocketChat/Rocket.Chat/pull/19440)) @@ -9518,31 +9459,31 @@ - OAuth groups to channels mapping ([#18146](https://github.com/RocketChat/Rocket.Chat/pull/18146) by [@arminfelder](https://github.com/arminfelder)) -- Reaction view ([#18272](https://github.com/RocketChat/Rocket.Chat/pull/18272) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Reaction view ([#18272](https://github.com/RocketChat/Rocket.Chat/pull/18272)) -- Replace client-side event emitters ([#19368](https://github.com/RocketChat/Rocket.Chat/pull/19368) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Replace client-side event emitters ([#19368](https://github.com/RocketChat/Rocket.Chat/pull/19368)) - Whitelisting bad words ([#17120](https://github.com/RocketChat/Rocket.Chat/pull/17120) by [@aryankoul](https://github.com/aryankoul)) ### 🚀 Improvements -- **APPS:** Apps list page on servers without internet connection ([#19088](https://github.com/RocketChat/Rocket.Chat/pull/19088) by [@thassiov](https://github.com/thassiov)) +- **APPS:** Apps list page on servers without internet connection ([#19088](https://github.com/RocketChat/Rocket.Chat/pull/19088)) - Display channel avatar on the Header ([#19132](https://github.com/RocketChat/Rocket.Chat/pull/19132) by [@ba-9](https://github.com/ba-9) & [@bhavayAnand9](https://github.com/bhavayAnand9)) -- New sidebar layout ([#19089](https://github.com/RocketChat/Rocket.Chat/pull/19089) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- New sidebar layout ([#19089](https://github.com/RocketChat/Rocket.Chat/pull/19089)) - React Avatar Provider ([#19321](https://github.com/RocketChat/Rocket.Chat/pull/19321)) ### 🐛 Bug fixes -- "Export Messages" only works for global roles ([#19264](https://github.com/RocketChat/Rocket.Chat/pull/19264) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- "Export Messages" only works for global roles ([#19264](https://github.com/RocketChat/Rocket.Chat/pull/19264)) -- **ENTERPRISE:** Race condition on Omnichannel queues ([#19352](https://github.com/RocketChat/Rocket.Chat/pull/19352) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Race condition on Omnichannel queues ([#19352](https://github.com/RocketChat/Rocket.Chat/pull/19352)) -- 2FA required rendering blank page ([#19364](https://github.com/RocketChat/Rocket.Chat/pull/19364) by [@tassoevan](https://github.com/tassoevan)) +- 2FA required rendering blank page ([#19364](https://github.com/RocketChat/Rocket.Chat/pull/19364)) - Adding missing custom fields translation in my account's profile ([#19179](https://github.com/RocketChat/Rocket.Chat/pull/19179)) @@ -9550,39 +9491,39 @@ - Admin Sidebar overflowing ([#19101](https://github.com/RocketChat/Rocket.Chat/pull/19101)) -- Agent status offline and wrong i18n key ([#19199](https://github.com/RocketChat/Rocket.Chat/pull/19199) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Agent status offline and wrong i18n key ([#19199](https://github.com/RocketChat/Rocket.Chat/pull/19199)) -- Anonymous users are counted on the server statistics and engagement dashboard ([#19263](https://github.com/RocketChat/Rocket.Chat/pull/19263) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Anonymous users are counted on the server statistics and engagement dashboard ([#19263](https://github.com/RocketChat/Rocket.Chat/pull/19263)) -- Broken user info when a user don't have an email address ([#19339](https://github.com/RocketChat/Rocket.Chat/pull/19339) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Broken user info when a user don't have an email address ([#19339](https://github.com/RocketChat/Rocket.Chat/pull/19339)) -- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524)) - Cloud Register Allowing Empty Tokens ([#19501](https://github.com/RocketChat/Rocket.Chat/pull/19501)) -- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519)) - Don't send room name on notification ([#19247](https://github.com/RocketChat/Rocket.Chat/pull/19247)) - Error preventing from removing users without a role ([#19204](https://github.com/RocketChat/Rocket.Chat/pull/19204) by [@RohitKumar-200](https://github.com/RohitKumar-200)) -- Error when editing priority and required description ([#19170](https://github.com/RocketChat/Rocket.Chat/pull/19170) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Error when editing priority and required description ([#19170](https://github.com/RocketChat/Rocket.Chat/pull/19170)) - Integrations history page not reacting to changes. ([#19114](https://github.com/RocketChat/Rocket.Chat/pull/19114)) -- Invalid attachments on User Data downloads ([#19203](https://github.com/RocketChat/Rocket.Chat/pull/19203) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invalid attachments on User Data downloads ([#19203](https://github.com/RocketChat/Rocket.Chat/pull/19203)) -- IRC Bridge not working ([#19009](https://github.com/RocketChat/Rocket.Chat/pull/19009) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- IRC Bridge not working ([#19009](https://github.com/RocketChat/Rocket.Chat/pull/19009)) -- LDAP Sync Error Dup Key ([#19337](https://github.com/RocketChat/Rocket.Chat/pull/19337) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP Sync Error Dup Key ([#19337](https://github.com/RocketChat/Rocket.Chat/pull/19337)) -- Livechat Appearance label and reset button ([#19171](https://github.com/RocketChat/Rocket.Chat/pull/19171) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Livechat Appearance label and reset button ([#19171](https://github.com/RocketChat/Rocket.Chat/pull/19171)) -- Message actions on top of text ([#19316](https://github.com/RocketChat/Rocket.Chat/pull/19316) by [@tassoevan](https://github.com/tassoevan)) +- Message actions on top of text ([#19316](https://github.com/RocketChat/Rocket.Chat/pull/19316)) - Missing "Bio" in user's profile view (#18821) ([#19166](https://github.com/RocketChat/Rocket.Chat/pull/19166)) -- Non admin cannot add custom avatar to group ([#18960](https://github.com/RocketChat/Rocket.Chat/pull/18960) by [@FelipeParreira](https://github.com/FelipeParreira) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Non admin cannot add custom avatar to group ([#18960](https://github.com/RocketChat/Rocket.Chat/pull/18960) by [@FelipeParreira](https://github.com/FelipeParreira)) Allow non-admins to change room avatar. @@ -9590,7 +9531,7 @@ - Omnichannel - typo error label at current chats page ([#19379](https://github.com/RocketChat/Rocket.Chat/pull/19379) by [@rafaelblink](https://github.com/rafaelblink)) -- Omnichannel auditing required field ([#19201](https://github.com/RocketChat/Rocket.Chat/pull/19201) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Omnichannel auditing required field ([#19201](https://github.com/RocketChat/Rocket.Chat/pull/19201)) - Omnichannel: triggers page not rendering. ([#19134](https://github.com/RocketChat/Rocket.Chat/pull/19134)) @@ -9602,29 +9543,29 @@ fix(push): Set push notification priority to 'high' for FCM -- Remove requirements to tag description and department ([#19169](https://github.com/RocketChat/Rocket.Chat/pull/19169) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Remove requirements to tag description and department ([#19169](https://github.com/RocketChat/Rocket.Chat/pull/19169)) - SAML login undefined error message ([#18649](https://github.com/RocketChat/Rocket.Chat/pull/18649) by [@galshiff](https://github.com/galshiff)) Fixed the SAML login undefined error message -- Selecting the same department for multiple units ([#19168](https://github.com/RocketChat/Rocket.Chat/pull/19168) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Selecting the same department for multiple units ([#19168](https://github.com/RocketChat/Rocket.Chat/pull/19168)) -- Server Errors on new Client Connections ([#19266](https://github.com/RocketChat/Rocket.Chat/pull/19266) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Server Errors on new Client Connections ([#19266](https://github.com/RocketChat/Rocket.Chat/pull/19266)) -- Setting values being showed up in logs when using log level for debug ([#18239](https://github.com/RocketChat/Rocket.Chat/pull/18239) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Setting values being showed up in logs when using log level for debug ([#18239](https://github.com/RocketChat/Rocket.Chat/pull/18239)) -- Thread List showing wrong items ([#19351](https://github.com/RocketChat/Rocket.Chat/pull/19351) by [@tassoevan](https://github.com/tassoevan)) +- Thread List showing wrong items ([#19351](https://github.com/RocketChat/Rocket.Chat/pull/19351)) - Thread view in a channel user haven't joined (#19008) ([#19172](https://github.com/RocketChat/Rocket.Chat/pull/19172)) -- Use etag on user info ([#19349](https://github.com/RocketChat/Rocket.Chat/pull/19349) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Use etag on user info ([#19349](https://github.com/RocketChat/Rocket.Chat/pull/19349)) - UserCard Roles Description ([#19200](https://github.com/RocketChat/Rocket.Chat/pull/19200)) -- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133) by [@renatobecker](https://github.com/renatobecker)) +- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133)) -- Wrong avatar urls when using providers ([#18929](https://github.com/RocketChat/Rocket.Chat/pull/18929) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Wrong avatar urls when using providers ([#18929](https://github.com/RocketChat/Rocket.Chat/pull/18929))
🔍 Minor changes @@ -9632,9 +9573,9 @@ - Build micro services Docker images with correct tags ([#19418](https://github.com/RocketChat/Rocket.Chat/pull/19418)) -- Bump Livechat widget ([#19361](https://github.com/RocketChat/Rocket.Chat/pull/19361) by [@renatobecker](https://github.com/renatobecker)) +- Bump Livechat widget ([#19361](https://github.com/RocketChat/Rocket.Chat/pull/19361)) -- Bump Livechat widget ([#19478](https://github.com/RocketChat/Rocket.Chat/pull/19478) by [@renatobecker](https://github.com/renatobecker)) +- Bump Livechat widget ([#19478](https://github.com/RocketChat/Rocket.Chat/pull/19478)) - Bump object-path from 0.11.4 to 0.11.5 ([#19298](https://github.com/RocketChat/Rocket.Chat/pull/19298) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -9652,21 +9593,21 @@ - Micro Services: Prevent duplicated events ([#19435](https://github.com/RocketChat/Rocket.Chat/pull/19435)) -- Non-idiomatic React code ([#19303](https://github.com/RocketChat/Rocket.Chat/pull/19303) by [@tassoevan](https://github.com/tassoevan)) +- Non-idiomatic React code ([#19303](https://github.com/RocketChat/Rocket.Chat/pull/19303)) -- Reassessment of client helpers ([#19249](https://github.com/RocketChat/Rocket.Chat/pull/19249) by [@tassoevan](https://github.com/tassoevan)) +- Reassessment of client helpers ([#19249](https://github.com/RocketChat/Rocket.Chat/pull/19249)) -- Refactor some React Pages and Components ([#19202](https://github.com/RocketChat/Rocket.Chat/pull/19202) by [@tassoevan](https://github.com/tassoevan)) +- Refactor some React Pages and Components ([#19202](https://github.com/RocketChat/Rocket.Chat/pull/19202)) -- Refactor: Omnichannel departments ([#18920](https://github.com/RocketChat/Rocket.Chat/pull/18920) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Refactor: Omnichannel departments ([#18920](https://github.com/RocketChat/Rocket.Chat/pull/18920)) -- Regression: `Leave Room` modal not closing ([#19460](https://github.com/RocketChat/Rocket.Chat/pull/19460) by [@tassoevan](https://github.com/tassoevan)) +- Regression: `Leave Room` modal not closing ([#19460](https://github.com/RocketChat/Rocket.Chat/pull/19460)) -- Regression: Agent Status leading to broken page ([#19409](https://github.com/RocketChat/Rocket.Chat/pull/19409) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Agent Status leading to broken page ([#19409](https://github.com/RocketChat/Rocket.Chat/pull/19409)) -- Regression: Allow apps to schedule jobs along with processor register ([#19416](https://github.com/RocketChat/Rocket.Chat/pull/19416) by [@thassiov](https://github.com/thassiov)) +- Regression: Allow apps to schedule jobs along with processor register ([#19416](https://github.com/RocketChat/Rocket.Chat/pull/19416)) -- Regression: Attachment without title or description show "sent attachment" in view mode extended ([#19443](https://github.com/RocketChat/Rocket.Chat/pull/19443) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Attachment without title or description show "sent attachment" in view mode extended ([#19443](https://github.com/RocketChat/Rocket.Chat/pull/19443)) - Regression: Fix broadcast events when running as monolith ([#19498](https://github.com/RocketChat/Rocket.Chat/pull/19498)) @@ -9676,7 +9617,7 @@ - Regression: Fix presence request logic ([#19527](https://github.com/RocketChat/Rocket.Chat/pull/19527)) -- Regression: Fix presence status ([#19474](https://github.com/RocketChat/Rocket.Chat/pull/19474) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Fix presence status ([#19474](https://github.com/RocketChat/Rocket.Chat/pull/19474)) - Regression: Fix React warnings ([#19508](https://github.com/RocketChat/Rocket.Chat/pull/19508)) @@ -9684,13 +9625,13 @@ - Regression: Fix stream-room-data payload ([#19407](https://github.com/RocketChat/Rocket.Chat/pull/19407)) -- Regression: Fix Thread List order ([#19486](https://github.com/RocketChat/Rocket.Chat/pull/19486) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix Thread List order ([#19486](https://github.com/RocketChat/Rocket.Chat/pull/19486)) -- Regression: Fix visitor field missing on subscription payload ([#19412](https://github.com/RocketChat/Rocket.Chat/pull/19412) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Fix visitor field missing on subscription payload ([#19412](https://github.com/RocketChat/Rocket.Chat/pull/19412)) - Regression: GenericTable.HeaderCell does not accept on click anymore ([#19358](https://github.com/RocketChat/Rocket.Chat/pull/19358)) -- Regression: Pass `unset` parameter of updated `userData` notification ([#19380](https://github.com/RocketChat/Rocket.Chat/pull/19380) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Pass `unset` parameter of updated `userData` notification ([#19380](https://github.com/RocketChat/Rocket.Chat/pull/19380)) - Regression: Prevent network broker from starting when not needed ([#19532](https://github.com/RocketChat/Rocket.Chat/pull/19532)) @@ -9698,31 +9639,31 @@ - Regression: Rocket.Chat Apps updates always fail ([#19411](https://github.com/RocketChat/Rocket.Chat/pull/19411)) -- Regression: Room item menu display delay ([#19401](https://github.com/RocketChat/Rocket.Chat/pull/19401) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Room item menu display delay ([#19401](https://github.com/RocketChat/Rocket.Chat/pull/19401)) - Regression: Sidebar message preview escaping html ([#19382](https://github.com/RocketChat/Rocket.Chat/pull/19382)) -- Regression: Sidebar reactivity when read last messages ([#19449](https://github.com/RocketChat/Rocket.Chat/pull/19449) by [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Sidebar reactivity when read last messages ([#19449](https://github.com/RocketChat/Rocket.Chat/pull/19449)) -- Regression: Thread component not updating its message list ([#19390](https://github.com/RocketChat/Rocket.Chat/pull/19390) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Thread component not updating its message list ([#19390](https://github.com/RocketChat/Rocket.Chat/pull/19390)) -- Regression: Thread list misbehaving ([#19413](https://github.com/RocketChat/Rocket.Chat/pull/19413) by [@tassoevan](https://github.com/tassoevan) & [@tiagoevanp](https://github.com/tiagoevanp)) +- Regression: Thread list misbehaving ([#19413](https://github.com/RocketChat/Rocket.Chat/pull/19413)) -- Regression: Thread not showing for unloaded message ([#19402](https://github.com/RocketChat/Rocket.Chat/pull/19402) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Thread not showing for unloaded message ([#19402](https://github.com/RocketChat/Rocket.Chat/pull/19402)) - Regression: unable to mark room as read ([#19419](https://github.com/RocketChat/Rocket.Chat/pull/19419)) -- Regression: User card closing ([#19322](https://github.com/RocketChat/Rocket.Chat/pull/19322) by [@tassoevan](https://github.com/tassoevan)) +- Regression: User card closing ([#19322](https://github.com/RocketChat/Rocket.Chat/pull/19322)) -- Remove legacy modal template ([#19276](https://github.com/RocketChat/Rocket.Chat/pull/19276) by [@tassoevan](https://github.com/tassoevan)) +- Remove legacy modal template ([#19276](https://github.com/RocketChat/Rocket.Chat/pull/19276)) -- Remove legacy slider ([#19255](https://github.com/RocketChat/Rocket.Chat/pull/19255) by [@tassoevan](https://github.com/tassoevan)) +- Remove legacy slider ([#19255](https://github.com/RocketChat/Rocket.Chat/pull/19255)) - Remove unecessary return at the send code api ([#19494](https://github.com/RocketChat/Rocket.Chat/pull/19494)) - Remove WeDeploy from README ([#19342](https://github.com/RocketChat/Rocket.Chat/pull/19342) by [@lucas-andre](https://github.com/lucas-andre)) -- Rewrite: Reset Login Form ([#18237](https://github.com/RocketChat/Rocket.Chat/pull/18237) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Rewrite: Reset Login Form ([#18237](https://github.com/RocketChat/Rocket.Chat/pull/18237)) - Unify ephemeral message events ([#19464](https://github.com/RocketChat/Rocket.Chat/pull/19464)) @@ -9743,7 +9684,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@FelipeParreira](https://github.com/FelipeParreira) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RohitKumar-200](https://github.com/RohitKumar-200) - [@aradhya-gupta](https://github.com/aradhya-gupta) - [@arminfelder](https://github.com/arminfelder) @@ -9757,15 +9697,11 @@ - [@jgribonvald](https://github.com/jgribonvald) - [@lolimay](https://github.com/lolimay) - [@lucas-andre](https://github.com/lucas-andre) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rafaelblink](https://github.com/rafaelblink) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) -- [@tiagoevanp](https://github.com/tiagoevanp) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@dougfabris](https://github.com/dougfabris) - [@frdmn](https://github.com/frdmn) @@ -9773,8 +9709,13 @@ - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) +- [@tiagoevanp](https://github.com/tiagoevanp) # 3.7.4 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -9788,11 +9729,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -9828,26 +9769,23 @@ - Admin not working on IE11 ([#19348](https://github.com/RocketChat/Rocket.Chat/pull/19348)) -- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Channel creation not working on IE ([#19524](https://github.com/RocketChat/Rocket.Chat/pull/19524)) -- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Custom Emojis PNGs on IE11 ([#19519](https://github.com/RocketChat/Rocket.Chat/pull/19519)) -- Update Polyfills and fix directory in IE ([#19525](https://github.com/RocketChat/Rocket.Chat/pull/19525) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Update Polyfills and fix directory in IE ([#19525](https://github.com/RocketChat/Rocket.Chat/pull/19525))
🔍 Minor changes -- Release 3.7.2 ([#19529](https://github.com/RocketChat/Rocket.Chat/pull/19529) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Release 3.7.2 ([#19529](https://github.com/RocketChat/Rocket.Chat/pull/19529))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@MartinSchoeler](https://github.com/MartinSchoeler) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@dougfabris](https://github.com/dougfabris) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9876,16 +9814,13 @@ A missing configuration was not limiting the new oplog tailing to pool the database frequently even when no data was available, leading to both node and mongodb process been consuming high CPU even with low usage. This case was happening for installations using `mmapv1` database engine or when no admin access was granted to the database user, both preventing the usage of the new [Change Streams](https://docs.mongodb.com/manual/changeStreams/) implementation and fallbacking to our custom oplog implementation in replacement to the Meteor's one what was able to be disabled and use the native implementation via the environmental variable `USE_NATIVE_OPLOG=true`. -- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133) by [@renatobecker](https://github.com/renatobecker)) - -### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) +- VisitorAutoComplete component ([#19133](https://github.com/RocketChat/Rocket.Chat/pull/19133)) ### 👩‍💻👨‍💻 Core Team 🤓 - [@dougfabris](https://github.com/dougfabris) - [@gabriellsh](https://github.com/gabriellsh) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -9901,19 +9836,19 @@ ### 🎉 New features -- "Room avatar changed" system messages ([#18839](https://github.com/RocketChat/Rocket.Chat/pull/18839) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- "Room avatar changed" system messages ([#18839](https://github.com/RocketChat/Rocket.Chat/pull/18839)) -- **Apps:** Add a Livechat API - setCustomFields ([#18912](https://github.com/RocketChat/Rocket.Chat/pull/18912) by [@lolimay](https://github.com/lolimay) & [@thassiov](https://github.com/thassiov)) +- **Apps:** Add a Livechat API - setCustomFields ([#18912](https://github.com/RocketChat/Rocket.Chat/pull/18912) by [@lolimay](https://github.com/lolimay)) - **Apps:** Add a new upload API ([#18955](https://github.com/RocketChat/Rocket.Chat/pull/18955) by [@lolimay](https://github.com/lolimay)) -- **Apps:** Add support for new livechat guest's and room's events ([#18946](https://github.com/RocketChat/Rocket.Chat/pull/18946) by [@thassiov](https://github.com/thassiov)) +- **Apps:** Add support for new livechat guest's and room's events ([#18946](https://github.com/RocketChat/Rocket.Chat/pull/18946)) - **Apps:** Add support to the "encoding" option in http requests from Apps ([#19002](https://github.com/RocketChat/Rocket.Chat/pull/19002) by [@lolimay](https://github.com/lolimay)) - Apps-Engine v1.18.0 ([#19047](https://github.com/RocketChat/Rocket.Chat/pull/19047)) -- Option to require settings on wizard UI via ENV variables ([#18974](https://github.com/RocketChat/Rocket.Chat/pull/18974) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Option to require settings on wizard UI via ENV variables ([#18974](https://github.com/RocketChat/Rocket.Chat/pull/18974)) [NEW] Option to require settings on wizard UI via ENV variables @@ -9932,18 +9867,18 @@ - Added a new setting to allow/disallow saving media to device's gallery on mobile client -- Move jump to message outside menu ([#18928](https://github.com/RocketChat/Rocket.Chat/pull/18928) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Move jump to message outside menu ([#18928](https://github.com/RocketChat/Rocket.Chat/pull/18928)) -- Stop re-sending push notifications rejected by the gateway ([#18608](https://github.com/RocketChat/Rocket.Chat/pull/18608) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Stop re-sending push notifications rejected by the gateway ([#18608](https://github.com/RocketChat/Rocket.Chat/pull/18608)) ### 🐛 Bug fixes -- "Download my data" popup showing HTML code. ([#18947](https://github.com/RocketChat/Rocket.Chat/pull/18947) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- "Download my data" popup showing HTML code. ([#18947](https://github.com/RocketChat/Rocket.Chat/pull/18947)) -- "Save to WebDav" not working ([#18883](https://github.com/RocketChat/Rocket.Chat/pull/18883) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- "Save to WebDav" not working ([#18883](https://github.com/RocketChat/Rocket.Chat/pull/18883)) -- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835)) - API call users.setStatus does not trigger status update of clients ([#18961](https://github.com/RocketChat/Rocket.Chat/pull/18961) by [@FelipeParreira](https://github.com/FelipeParreira)) @@ -9967,9 +9902,9 @@ - e.sendToBottomIfNecessaryDebounced is not a function ([#18834](https://github.com/RocketChat/Rocket.Chat/pull/18834)) -- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948)) -- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978) by [@alansikora](https://github.com/alansikora)) +- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978)) - File upload (Avatars, Emoji, Sounds) ([#18841](https://github.com/RocketChat/Rocket.Chat/pull/18841)) @@ -9979,19 +9914,19 @@ - If there is `ufs` somewhere in url the request to api always returns 404 ([#18874](https://github.com/RocketChat/Rocket.Chat/pull/18874) by [@FelipeParreira](https://github.com/FelipeParreira)) -- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866)) - invite-all-from and invite-all-to commands don't work with multibyte room names ([#18919](https://github.com/RocketChat/Rocket.Chat/pull/18919) by [@FelipeParreira](https://github.com/FelipeParreira)) - Jitsi call start updating subscriptions ([#18837](https://github.com/RocketChat/Rocket.Chat/pull/18837)) -- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994)) - Non-upload requests being passed to UFS proxy middleware ([#18931](https://github.com/RocketChat/Rocket.Chat/pull/18931) by [@FelipeParreira](https://github.com/FelipeParreira)) Avoid non-upload request to be caught by UFS proxy middleware. -- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795)) - Open room after guest registration ([#18755](https://github.com/RocketChat/Rocket.Chat/pull/18755)) @@ -10013,15 +9948,15 @@ - Spurious expert role in startup data ([#18667](https://github.com/RocketChat/Rocket.Chat/pull/18667)) -- Stop adding push messages to queue if push is disabled ([#18830](https://github.com/RocketChat/Rocket.Chat/pull/18830) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Stop adding push messages to queue if push is disabled ([#18830](https://github.com/RocketChat/Rocket.Chat/pull/18830)) - User administration throwing a blank page if user has no role ([#18851](https://github.com/RocketChat/Rocket.Chat/pull/18851)) -- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852) by [@renatobecker](https://github.com/renatobecker)) +- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852)) - User Info: Email and name/username display, alignment on big screens, make admin action ([#18976](https://github.com/RocketChat/Rocket.Chat/pull/18976)) -- Users not being able to activate/deactivate E2E in DMs ([#18943](https://github.com/RocketChat/Rocket.Chat/pull/18943) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Users not being able to activate/deactivate E2E in DMs ([#18943](https://github.com/RocketChat/Rocket.Chat/pull/18943)) [FIX] Users not being able to activate/deactivate E2E in DMs @@ -10043,9 +9978,9 @@ - Fix french translations ([#18746](https://github.com/RocketChat/Rocket.Chat/pull/18746) by [@lsignac](https://github.com/lsignac)) -- Fix saveRoomSettings method complexity ([#18840](https://github.com/RocketChat/Rocket.Chat/pull/18840) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Fix saveRoomSettings method complexity ([#18840](https://github.com/RocketChat/Rocket.Chat/pull/18840)) -- Fix: Missing WebDav upload errors logs ([#18849](https://github.com/RocketChat/Rocket.Chat/pull/18849) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Fix: Missing WebDav upload errors logs ([#18849](https://github.com/RocketChat/Rocket.Chat/pull/18849)) - LingoHub based on develop ([#18973](https://github.com/RocketChat/Rocket.Chat/pull/18973)) @@ -10053,7 +9988,7 @@ - LingoHub based on develop ([#18761](https://github.com/RocketChat/Rocket.Chat/pull/18761)) -- Merge master into develop & Set version to 3.7.0-develop ([#18752](https://github.com/RocketChat/Rocket.Chat/pull/18752) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker) & [@thirsch](https://github.com/thirsch)) +- Merge master into develop & Set version to 3.7.0-develop ([#18752](https://github.com/RocketChat/Rocket.Chat/pull/18752) by [@thirsch](https://github.com/thirsch)) - New: Use database change streams when available ([#18892](https://github.com/RocketChat/Rocket.Chat/pull/18892)) @@ -10075,7 +10010,7 @@ - Regression: Handle MongoDB authentication issues ([#18993](https://github.com/RocketChat/Rocket.Chat/pull/18993)) -- Replace copying assets on post-install with symlinks ([#18707](https://github.com/RocketChat/Rocket.Chat/pull/18707) by [@tassoevan](https://github.com/tassoevan)) +- Replace copying assets on post-install with symlinks ([#18707](https://github.com/RocketChat/Rocket.Chat/pull/18707)) - Set some queries to prefer the secondary database ([#18887](https://github.com/RocketChat/Rocket.Chat/pull/18887)) @@ -10089,29 +10024,29 @@ - [@FelipeParreira](https://github.com/FelipeParreira) - [@Karting06](https://github.com/Karting06) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@d-sko](https://github.com/d-sko) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@lolimay](https://github.com/lolimay) - [@lsignac](https://github.com/lsignac) - [@mrtndwrd](https://github.com/mrtndwrd) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) - [@thirsch](https://github.com/thirsch) - [@wreiske](https://github.com/wreiske) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@diegolmello](https://github.com/diegolmello) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) # 3.6.3 `2020-09-25 · 4 🐛 · 2 🔍 · 4 👩‍💻👨‍💻` @@ -10125,11 +10060,11 @@ ### 🐛 Bug fixes -- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Errors in LDAP avatar sync preventing login ([#18948](https://github.com/RocketChat/Rocket.Chat/pull/18948)) -- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978) by [@alansikora](https://github.com/alansikora)) +- Federation issues ([#18978](https://github.com/RocketChat/Rocket.Chat/pull/18978)) -- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP avatar upload ([#18994](https://github.com/RocketChat/Rocket.Chat/pull/18994)) - PDF not rendering ([#18956](https://github.com/RocketChat/Rocket.Chat/pull/18956)) @@ -10139,18 +10074,15 @@ - Obey to settings properties ([#19020](https://github.com/RocketChat/Rocket.Chat/pull/19020)) -- Release 3.6.3 ([#19022](https://github.com/RocketChat/Rocket.Chat/pull/19022) by [@alansikora](https://github.com/alansikora) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.6.3 ([#19022](https://github.com/RocketChat/Rocket.Chat/pull/19022))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@alansikora](https://github.com/alansikora) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@alansikora](https://github.com/alansikora) - [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.6.2 @@ -10171,7 +10103,7 @@ Allow for user deactivation through REST API (even if user is the last owner of a room) -- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Ignore User action from user card ([#18866](https://github.com/RocketChat/Rocket.Chat/pull/18866)) - invite-all-from and invite-all-to commands don't work with multibyte room names ([#18919](https://github.com/RocketChat/Rocket.Chat/pull/18919) by [@FelipeParreira](https://github.com/FelipeParreira)) @@ -10187,12 +10119,12 @@ - [@FelipeParreira](https://github.com/FelipeParreira) - [@mrtndwrd](https://github.com/mrtndwrd) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@wreiske](https://github.com/wreiske) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.6.1 @@ -10207,27 +10139,24 @@ ### 🐛 Bug fixes -- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel service status switching to unavailable ([#18835](https://github.com/RocketChat/Rocket.Chat/pull/18835)) - File upload (Avatars, Emoji, Sounds) ([#18841](https://github.com/RocketChat/Rocket.Chat/pull/18841)) - IE11 support livechat widget ([#18850](https://github.com/RocketChat/Rocket.Chat/pull/18850)) -- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Current Chats open status filter not working ([#18795](https://github.com/RocketChat/Rocket.Chat/pull/18795)) - Showing alerts during setup wizard ([#18862](https://github.com/RocketChat/Rocket.Chat/pull/18862)) - User administration throwing a blank page if user has no role ([#18851](https://github.com/RocketChat/Rocket.Chat/pull/18851)) -- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852) by [@renatobecker](https://github.com/renatobecker)) - -### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) +- User can't invite or join other Omnichannel rooms ([#18852](https://github.com/RocketChat/Rocket.Chat/pull/18852)) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.6.0 @@ -10246,23 +10175,23 @@ - **Jitsi:** Setting to use room's name instead of room's id to generate the URL ([#17481](https://github.com/RocketChat/Rocket.Chat/pull/17481)) -- **Omnichannel:** Ability to set character message limit on Livechat widget ([#18261](https://github.com/RocketChat/Rocket.Chat/pull/18261) by [@oguhpereira](https://github.com/oguhpereira) & [@renatobecker](https://github.com/renatobecker)) +- **Omnichannel:** Ability to set character message limit on Livechat widget ([#18261](https://github.com/RocketChat/Rocket.Chat/pull/18261) by [@oguhpereira](https://github.com/oguhpereira)) - **Omnichannel:** Livechat widget support for rich messages via UiKit ([#18643](https://github.com/RocketChat/Rocket.Chat/pull/18643)) -- **Omnichannel/API:** Endpoint `livechat/room.visitor` to change Omnichannel room's visitor ([#18528](https://github.com/RocketChat/Rocket.Chat/pull/18528) by [@renatobecker](https://github.com/renatobecker)) +- **Omnichannel/API:** Endpoint `livechat/room.visitor` to change Omnichannel room's visitor ([#18528](https://github.com/RocketChat/Rocket.Chat/pull/18528)) -- **Omnichannel/API:** Endpoint `livechat/visitors.search` to search Livechat visitors ([#18514](https://github.com/RocketChat/Rocket.Chat/pull/18514) by [@renatobecker](https://github.com/renatobecker)) +- **Omnichannel/API:** Endpoint `livechat/visitors.search` to search Livechat visitors ([#18514](https://github.com/RocketChat/Rocket.Chat/pull/18514)) - Admin option to reset other users’ E2E encryption key ([#18642](https://github.com/RocketChat/Rocket.Chat/pull/18642)) Requires the 2FA password fallback enforcement enabled to work -- Banner for servers in the middle of the cloud registration process ([#18623](https://github.com/RocketChat/Rocket.Chat/pull/18623) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Banner for servers in the middle of the cloud registration process ([#18623](https://github.com/RocketChat/Rocket.Chat/pull/18623)) - Export room messages as file or directly via email ([#18606](https://github.com/RocketChat/Rocket.Chat/pull/18606)) -- Support for custom avatar images in channels ([#18443](https://github.com/RocketChat/Rocket.Chat/pull/18443) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Support for custom avatar images in channels ([#18443](https://github.com/RocketChat/Rocket.Chat/pull/18443)) ### 🚀 Improvements @@ -10273,13 +10202,13 @@ - Add new setting to enforce 2FA password fallback (enabled only for new installations) - Require 2FA to save settings and reset E2E Encryption keys -- **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker)) +- **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571)) -- **Security:** Admin info page requires permission `view-statistics` ([#18408](https://github.com/RocketChat/Rocket.Chat/pull/18408) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- **Security:** Admin info page requires permission `view-statistics` ([#18408](https://github.com/RocketChat/Rocket.Chat/pull/18408)) Users now require the `view-statistics` permission to be access the `admin/info` page -- **Slack bridge:** Add support to sync threads ([#15992](https://github.com/RocketChat/Rocket.Chat/pull/15992) by [@antkaz](https://github.com/antkaz) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- **Slack bridge:** Add support to sync threads ([#15992](https://github.com/RocketChat/Rocket.Chat/pull/15992) by [@antkaz](https://github.com/antkaz)) - New component and better look for tooltips ([#18399](https://github.com/RocketChat/Rocket.Chat/pull/18399)) @@ -10293,27 +10222,27 @@ - Agents enabledDepartment attribute not set on collection ([#18614](https://github.com/RocketChat/Rocket.Chat/pull/18614) by [@paulobernardoaf](https://github.com/paulobernardoaf)) -- Anonymous users were created as inactive if the manual approval setting was enabled ([#17427](https://github.com/RocketChat/Rocket.Chat/pull/17427) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Anonymous users were created as inactive if the manual approval setting was enabled ([#17427](https://github.com/RocketChat/Rocket.Chat/pull/17427)) -- Auto complete user suggestions ([#18437](https://github.com/RocketChat/Rocket.Chat/pull/18437) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Auto complete user suggestions ([#18437](https://github.com/RocketChat/Rocket.Chat/pull/18437)) Fixes the issue with broken user suggestions in threads when using `@` - Backdrop on front of modal. ([#18596](https://github.com/RocketChat/Rocket.Chat/pull/18596)) -- Custom fields title when no custom fields ([#18374](https://github.com/RocketChat/Rocket.Chat/pull/18374) by [@tassoevan](https://github.com/tassoevan)) +- Custom fields title when no custom fields ([#18374](https://github.com/RocketChat/Rocket.Chat/pull/18374)) -- Emojis on thread replies ([#18407](https://github.com/RocketChat/Rocket.Chat/pull/18407) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Emojis on thread replies ([#18407](https://github.com/RocketChat/Rocket.Chat/pull/18407)) Users can now see the emojis on thread replies -- Enabling Apple OAuth crashes other OAuth services ([#18563](https://github.com/RocketChat/Rocket.Chat/pull/18563) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Enabling Apple OAuth crashes other OAuth services ([#18563](https://github.com/RocketChat/Rocket.Chat/pull/18563)) -- Error when reading uploads from Livechat Visitor through the Apps Engine ([#18474](https://github.com/RocketChat/Rocket.Chat/pull/18474) by [@renatobecker](https://github.com/renatobecker)) +- Error when reading uploads from Livechat Visitor through the Apps Engine ([#18474](https://github.com/RocketChat/Rocket.Chat/pull/18474)) -- findOrCreateInvite REST endpoint ignoring `days` and `maxUses` params ([#18565](https://github.com/RocketChat/Rocket.Chat/pull/18565) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- findOrCreateInvite REST endpoint ignoring `days` and `maxUses` params ([#18565](https://github.com/RocketChat/Rocket.Chat/pull/18565)) -- Invalid sample JSON on admin settings ([#18595](https://github.com/RocketChat/Rocket.Chat/pull/18595) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invalid sample JSON on admin settings ([#18595](https://github.com/RocketChat/Rocket.Chat/pull/18595)) - MarkdownText usage ([#18621](https://github.com/RocketChat/Rocket.Chat/pull/18621)) @@ -10333,7 +10262,7 @@ - Sending notifications from senders without a name ([#18479](https://github.com/RocketChat/Rocket.Chat/pull/18479)) -- SMS integration not storing media files ([#18491](https://github.com/RocketChat/Rocket.Chat/pull/18491) by [@renatobecker](https://github.com/renatobecker)) +- SMS integration not storing media files ([#18491](https://github.com/RocketChat/Rocket.Chat/pull/18491)) - Thread reply disappearing and threads result on search ([#18349](https://github.com/RocketChat/Rocket.Chat/pull/18349)) @@ -10345,7 +10274,7 @@ - UserCard avatar cache (avatarETag) ([#18466](https://github.com/RocketChat/Rocket.Chat/pull/18466)) -- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594)) - Wrong rooms list order when last message date is missing ([#18639](https://github.com/RocketChat/Rocket.Chat/pull/18639)) @@ -10375,11 +10304,11 @@ - LingoHub based on develop ([#18465](https://github.com/RocketChat/Rocket.Chat/pull/18465)) -- Merge master into develop & Set version to 3.6.0-develop ([#18401](https://github.com/RocketChat/Rocket.Chat/pull/18401) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@omarchehab98](https://github.com/omarchehab98) & [@paulobernardoaf](https://github.com/paulobernardoaf) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) +- Merge master into develop & Set version to 3.6.0-develop ([#18401](https://github.com/RocketChat/Rocket.Chat/pull/18401) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@omarchehab98](https://github.com/omarchehab98) & [@paulobernardoaf](https://github.com/paulobernardoaf)) -- Missing email notification when an admin resets your E2E key ([#18673](https://github.com/RocketChat/Rocket.Chat/pull/18673) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Missing email notification when an admin resets your E2E key ([#18673](https://github.com/RocketChat/Rocket.Chat/pull/18673)) -- Omnichannel Admin rewritten in React (#18438) ([#18438](https://github.com/RocketChat/Rocket.Chat/pull/18438) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Omnichannel Admin rewritten in React (#18438) ([#18438](https://github.com/RocketChat/Rocket.Chat/pull/18438)) - Prevent directory API to return emails if the user has no permission ([#18478](https://github.com/RocketChat/Rocket.Chat/pull/18478)) @@ -10389,21 +10318,21 @@ - Regression: Accept visitors for uikit interactions ([#18706](https://github.com/RocketChat/Rocket.Chat/pull/18706)) -- Regression: Add remove popup to omnichannel custom fields ([#18719](https://github.com/RocketChat/Rocket.Chat/pull/18719) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Add remove popup to omnichannel custom fields ([#18719](https://github.com/RocketChat/Rocket.Chat/pull/18719)) -- Regression: Agents Page issues ([#18684](https://github.com/RocketChat/Rocket.Chat/pull/18684) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Agents Page issues ([#18684](https://github.com/RocketChat/Rocket.Chat/pull/18684)) -- Regression: Bundle the package `hepburn` ([#18715](https://github.com/RocketChat/Rocket.Chat/pull/18715) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Bundle the package `hepburn` ([#18715](https://github.com/RocketChat/Rocket.Chat/pull/18715)) - Regression: Fix room avatar file name ([#18544](https://github.com/RocketChat/Rocket.Chat/pull/18544)) -- Regression: Omnichannel Business Hours Issues ([#18723](https://github.com/RocketChat/Rocket.Chat/pull/18723) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Omnichannel Business Hours Issues ([#18723](https://github.com/RocketChat/Rocket.Chat/pull/18723)) -- Regression: Omnichannel Current Chat issues ([#18718](https://github.com/RocketChat/Rocket.Chat/pull/18718) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Omnichannel Current Chat issues ([#18718](https://github.com/RocketChat/Rocket.Chat/pull/18718)) -- Regression: Omnichannel Tags and Units issues ([#18705](https://github.com/RocketChat/Rocket.Chat/pull/18705) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Omnichannel Tags and Units issues ([#18705](https://github.com/RocketChat/Rocket.Chat/pull/18705)) -- Regression: Priorities Page issues ([#18685](https://github.com/RocketChat/Rocket.Chat/pull/18685) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Priorities Page issues ([#18685](https://github.com/RocketChat/Rocket.Chat/pull/18685)) - Regression: Revert silent: true ([#18671](https://github.com/RocketChat/Rocket.Chat/pull/18671)) @@ -10413,11 +10342,11 @@ - Regression: UI margins on Export Messages ([#18682](https://github.com/RocketChat/Rocket.Chat/pull/18682)) -- Regression: Update checker not being disabled properly. ([#18676](https://github.com/RocketChat/Rocket.Chat/pull/18676) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Update checker not being disabled properly. ([#18676](https://github.com/RocketChat/Rocket.Chat/pull/18676)) - Regression: Use user autocomplete on export messages ([#18726](https://github.com/RocketChat/Rocket.Chat/pull/18726)) -- Release 3.6.0 ([#18727](https://github.com/RocketChat/Rocket.Chat/pull/18727) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@juliagrala](https://github.com/juliagrala) & [@oguhpereira](https://github.com/oguhpereira) & [@renatobecker](https://github.com/renatobecker) & [@thirsch](https://github.com/thirsch)) +- Release 3.6.0 ([#18727](https://github.com/RocketChat/Rocket.Chat/pull/18727) by [@oguhpereira](https://github.com/oguhpereira) & [@thirsch](https://github.com/thirsch)) - Set default timeout of 20s for HTTP calls ([#18549](https://github.com/RocketChat/Rocket.Chat/pull/18549)) @@ -10425,38 +10354,38 @@ - Update dependencies ([#18593](https://github.com/RocketChat/Rocket.Chat/pull/18593)) -- Update README.md ([#18503](https://github.com/RocketChat/Rocket.Chat/pull/18503) by [@juliagrala](https://github.com/juliagrala)) +- Update README.md ([#18503](https://github.com/RocketChat/Rocket.Chat/pull/18503)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@densik](https://github.com/densik) - [@dependabot[bot]](https://github.com/dependabot[bot]) - [@dudizilla](https://github.com/dudizilla) - [@galshiff](https://github.com/galshiff) -- [@juliagrala](https://github.com/juliagrala) - [@oguhpereira](https://github.com/oguhpereira) - [@omarchehab98](https://github.com/omarchehab98) - [@paulobernardoaf](https://github.com/paulobernardoaf) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - [@thirsch](https://github.com/thirsch) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Sing-Li](https://github.com/Sing-Li) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@juliagrala](https://github.com/juliagrala) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.5.4 `2020-08-24 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` @@ -10501,23 +10430,20 @@ - UIKit Select and Multiselects not working ([#18598](https://github.com/RocketChat/Rocket.Chat/pull/18598)) -- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Users page in admin not working for inactive user joining ([#18594](https://github.com/RocketChat/Rocket.Chat/pull/18594))
🔍 Minor changes -- Release 3.5.3 ([#18610](https://github.com/RocketChat/Rocket.Chat/pull/18610) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.5.3 ([#18610](https://github.com/RocketChat/Rocket.Chat/pull/18610))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.5.2 @@ -10562,39 +10488,39 @@ - Appending 'false' to Jitsi URL ([#18430](https://github.com/RocketChat/Rocket.Chat/pull/18430)) -- Can't send long messages as attachment ([#18355](https://github.com/RocketChat/Rocket.Chat/pull/18355) by [@tassoevan](https://github.com/tassoevan)) +- Can't send long messages as attachment ([#18355](https://github.com/RocketChat/Rocket.Chat/pull/18355)) -- Error when updating omnichannel department without agents parameter ([#18428](https://github.com/RocketChat/Rocket.Chat/pull/18428) by [@renatobecker](https://github.com/renatobecker)) +- Error when updating omnichannel department without agents parameter ([#18428](https://github.com/RocketChat/Rocket.Chat/pull/18428)) -- Invalid MIME type when uploading audio files ([#18426](https://github.com/RocketChat/Rocket.Chat/pull/18426) by [@renatobecker](https://github.com/renatobecker)) +- Invalid MIME type when uploading audio files ([#18426](https://github.com/RocketChat/Rocket.Chat/pull/18426)) - Migration 194 ([#18457](https://github.com/RocketChat/Rocket.Chat/pull/18457) by [@thirsch](https://github.com/thirsch)) - Multiple push notifications sent via native drivers ([#18442](https://github.com/RocketChat/Rocket.Chat/pull/18442)) -- Omnichannel session monitor is not starting ([#18412](https://github.com/RocketChat/Rocket.Chat/pull/18412) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel session monitor is not starting ([#18412](https://github.com/RocketChat/Rocket.Chat/pull/18412)) -- Omnichannel Take Inquiry endpoint checking wrong permission ([#18446](https://github.com/RocketChat/Rocket.Chat/pull/18446) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Take Inquiry endpoint checking wrong permission ([#18446](https://github.com/RocketChat/Rocket.Chat/pull/18446))
🔍 Minor changes -- Release 3.5.1 ([#18452](https://github.com/RocketChat/Rocket.Chat/pull/18452) by [@renatobecker](https://github.com/renatobecker) & [@thirsch](https://github.com/thirsch)) +- Release 3.5.1 ([#18452](https://github.com/RocketChat/Rocket.Chat/pull/18452) by [@thirsch](https://github.com/thirsch))
### 👩‍💻👨‍💻 Contributors 😍 -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - [@thirsch](https://github.com/thirsch) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.5.0 `2020-07-27 · 8 🎉 · 5 🚀 · 29 🐛 · 34 🔍 · 21 👩‍💻👨‍💻` @@ -10612,13 +10538,13 @@ Enterprise installations will show tags on Admin panel with the type of the license applied. The tag will be visible on the top-left corner of the administration area as a badge helping administrators to identify which license they have. -- **ENTERPRISE:** Push Notification Data Privacy ([#18254](https://github.com/RocketChat/Rocket.Chat/pull/18254) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- **ENTERPRISE:** Push Notification Data Privacy ([#18254](https://github.com/RocketChat/Rocket.Chat/pull/18254)) - Added profile field to inform Nickname for users in order to be searchable ([#18260](https://github.com/RocketChat/Rocket.Chat/pull/18260)) Nickname is a new user field that can be used to better identify users when searching for someone to add in a channel or do a mention. Useful for large organizations or countries where name repetition is common. -- External MP3 encoder worker for audio recording ([#18277](https://github.com/RocketChat/Rocket.Chat/pull/18277) by [@tassoevan](https://github.com/tassoevan)) +- External MP3 encoder worker for audio recording ([#18277](https://github.com/RocketChat/Rocket.Chat/pull/18277)) - Sign in with apple (iOS client only) ([#18258](https://github.com/RocketChat/Rocket.Chat/pull/18258) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) @@ -10628,16 +10554,16 @@ - Update Apps-Engine version ([#18212](https://github.com/RocketChat/Rocket.Chat/pull/18212)) -- User profile and User card ([#18194](https://github.com/RocketChat/Rocket.Chat/pull/18194) by [@tassoevan](https://github.com/tassoevan)) +- User profile and User card ([#18194](https://github.com/RocketChat/Rocket.Chat/pull/18194)) ### 🚀 Improvements - Change setting that blocks unauthenticated access to avatar to public ([#18316](https://github.com/RocketChat/Rocket.Chat/pull/18316) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Improve performance and remove agents when the department is removed ([#17049](https://github.com/RocketChat/Rocket.Chat/pull/17049) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Improve performance and remove agents when the department is removed ([#17049](https://github.com/RocketChat/Rocket.Chat/pull/17049)) -- List dropdown ([#18081](https://github.com/RocketChat/Rocket.Chat/pull/18081) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- List dropdown ([#18081](https://github.com/RocketChat/Rocket.Chat/pull/18081)) - Mention autocomplete UI and performance improvements ([#18309](https://github.com/RocketChat/Rocket.Chat/pull/18309)) @@ -10661,15 +10587,15 @@ - Application not loading due to reverse proxy decoding API calls unnecessarily ([#18222](https://github.com/RocketChat/Rocket.Chat/pull/18222)) -- Apps page loading indefinitely if no Markeplace data ([#18274](https://github.com/RocketChat/Rocket.Chat/pull/18274) by [@tassoevan](https://github.com/tassoevan)) +- Apps page loading indefinitely if no Markeplace data ([#18274](https://github.com/RocketChat/Rocket.Chat/pull/18274)) - Bug on entering token in connectivity services ([#18317](https://github.com/RocketChat/Rocket.Chat/pull/18317)) - Cannot open admin when server uses ROOT_URL with subpath (#18105) ([#18147](https://github.com/RocketChat/Rocket.Chat/pull/18147) by [@omarchehab98](https://github.com/omarchehab98)) -- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238)) -- Clipboard not working when permalinking a pinned message ([#18047](https://github.com/RocketChat/Rocket.Chat/pull/18047) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Clipboard not working when permalinking a pinned message ([#18047](https://github.com/RocketChat/Rocket.Chat/pull/18047)) - Closing the admin does not return to last opened room ([#18308](https://github.com/RocketChat/Rocket.Chat/pull/18308)) @@ -10677,11 +10603,11 @@ - Delete user warning message undefined ([#18310](https://github.com/RocketChat/Rocket.Chat/pull/18310)) -- Don't show agent info in the transcript if the setting is disabled ([#18044](https://github.com/RocketChat/Rocket.Chat/pull/18044) by [@antkaz](https://github.com/antkaz) & [@renatobecker](https://github.com/renatobecker)) +- Don't show agent info in the transcript if the setting is disabled ([#18044](https://github.com/RocketChat/Rocket.Chat/pull/18044) by [@antkaz](https://github.com/antkaz)) -- Error when fetching a nonexistent business hour from the server ([#18315](https://github.com/RocketChat/Rocket.Chat/pull/18315) by [@renatobecker](https://github.com/renatobecker)) +- Error when fetching a nonexistent business hour from the server ([#18315](https://github.com/RocketChat/Rocket.Chat/pull/18315)) -- Few adjustments to accept fuselage theme ([#18009](https://github.com/RocketChat/Rocket.Chat/pull/18009) by [@tassoevan](https://github.com/tassoevan)) +- Few adjustments to accept fuselage theme ([#18009](https://github.com/RocketChat/Rocket.Chat/pull/18009)) - File uploads for unknown file types but nothing is blocked ([#18263](https://github.com/RocketChat/Rocket.Chat/pull/18263) by [@20051231](https://github.com/20051231)) @@ -10689,7 +10615,7 @@ - Geolocation permission being asked on load ([#18030](https://github.com/RocketChat/Rocket.Chat/pull/18030)) -- Local Account login error when both LDAP and Email 2FA are enabled ([#18318](https://github.com/RocketChat/Rocket.Chat/pull/18318) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Local Account login error when both LDAP and Email 2FA are enabled ([#18318](https://github.com/RocketChat/Rocket.Chat/pull/18318)) - Merge user custom fields on LDAP sync ([#17339](https://github.com/RocketChat/Rocket.Chat/pull/17339) by [@tobiasge](https://github.com/tobiasge)) @@ -10697,13 +10623,13 @@ - Missing Privacy Terms Cloud Register warning ([#18383](https://github.com/RocketChat/Rocket.Chat/pull/18383)) -- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185)) - Push gateway and cloud integration ([#18377](https://github.com/RocketChat/Rocket.Chat/pull/18377)) -- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224)) -- SAML login saves invalid username when receiving multiple values ([#18213](https://github.com/RocketChat/Rocket.Chat/pull/18213) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML login saves invalid username when receiving multiple values ([#18213](https://github.com/RocketChat/Rocket.Chat/pull/18213)) - SlackBridge error ([#18320](https://github.com/RocketChat/Rocket.Chat/pull/18320)) @@ -10711,7 +10637,7 @@ Update checker can now be disabled. -- Update link URL at AppsWhatIsIt ([#18240](https://github.com/RocketChat/Rocket.Chat/pull/18240) by [@tassoevan](https://github.com/tassoevan)) +- Update link URL at AppsWhatIsIt ([#18240](https://github.com/RocketChat/Rocket.Chat/pull/18240)) - View close uikit event sending wrong payload ([#18289](https://github.com/RocketChat/Rocket.Chat/pull/18289)) @@ -10719,21 +10645,21 @@ 🔍 Minor changes -- Broken link on readme ([#18358](https://github.com/RocketChat/Rocket.Chat/pull/18358) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Broken link on readme ([#18358](https://github.com/RocketChat/Rocket.Chat/pull/18358)) - LingoHub based on develop ([#18307](https://github.com/RocketChat/Rocket.Chat/pull/18307)) - LingoHub based on develop ([#18176](https://github.com/RocketChat/Rocket.Chat/pull/18176)) -- Merge master into develop & Set version to 3.5.0-develop ([#18083](https://github.com/RocketChat/Rocket.Chat/pull/18083) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) +- Merge master into develop & Set version to 3.5.0-develop ([#18083](https://github.com/RocketChat/Rocket.Chat/pull/18083) by [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha)) - Move the development guidelines to our handbook ([#18026](https://github.com/RocketChat/Rocket.Chat/pull/18026)) -- Regression - Profile page crashing for users without password ([#18287](https://github.com/RocketChat/Rocket.Chat/pull/18287) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression - Profile page crashing for users without password ([#18287](https://github.com/RocketChat/Rocket.Chat/pull/18287)) - Regression: Account Sidebar not rendering properly ([#18288](https://github.com/RocketChat/Rocket.Chat/pull/18288)) -- Regression: Admin User password ([#18350](https://github.com/RocketChat/Rocket.Chat/pull/18350) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Admin User password ([#18350](https://github.com/RocketChat/Rocket.Chat/pull/18350)) - Regression: Close UserCard if action opens a new page ([#18319](https://github.com/RocketChat/Rocket.Chat/pull/18319)) @@ -10743,21 +10669,21 @@ - Regression: Fix useUserSubscription usage ([#18378](https://github.com/RocketChat/Rocket.Chat/pull/18378)) -- Regression: Mentions in thread title ([#18369](https://github.com/RocketChat/Rocket.Chat/pull/18369) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Mentions in thread title ([#18369](https://github.com/RocketChat/Rocket.Chat/pull/18369)) - Regression: Message actions under "unread messages" warning ([#18273](https://github.com/RocketChat/Rocket.Chat/pull/18273)) -- Regression: MP3 worker ([#18371](https://github.com/RocketChat/Rocket.Chat/pull/18371) by [@tassoevan](https://github.com/tassoevan)) +- Regression: MP3 worker ([#18371](https://github.com/RocketChat/Rocket.Chat/pull/18371)) - Regression: nickname field in user profile. ([#18359](https://github.com/RocketChat/Rocket.Chat/pull/18359)) - Regression: Notification with id-only isn't showed by iOS devices ([#18353](https://github.com/RocketChat/Rocket.Chat/pull/18353) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Regression: Preferences crashing when User has no preferences set. ([#18341](https://github.com/RocketChat/Rocket.Chat/pull/18341) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Preferences crashing when User has no preferences set. ([#18341](https://github.com/RocketChat/Rocket.Chat/pull/18341)) - Regression: Provide a fallback text when push notification is idOnly ([#18373](https://github.com/RocketChat/Rocket.Chat/pull/18373) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Regression: Remove calls to Console API in useForm hook ([#18244](https://github.com/RocketChat/Rocket.Chat/pull/18244) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove calls to Console API in useForm hook ([#18244](https://github.com/RocketChat/Rocket.Chat/pull/18244)) - Regression: Return original message on push API ([#18386](https://github.com/RocketChat/Rocket.Chat/pull/18386)) @@ -10765,35 +10691,33 @@ - Regression: User Status selector ([#18343](https://github.com/RocketChat/Rocket.Chat/pull/18343)) -- Regression: Userinfo center avatar image ([#18354](https://github.com/RocketChat/Rocket.Chat/pull/18354) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Userinfo center avatar image ([#18354](https://github.com/RocketChat/Rocket.Chat/pull/18354)) - Regression: useStorage ([#18370](https://github.com/RocketChat/Rocket.Chat/pull/18370)) - Regression: useUserContext ([#18385](https://github.com/RocketChat/Rocket.Chat/pull/18385)) -- Regression: Wrong background in disabled inputs ([#18372](https://github.com/RocketChat/Rocket.Chat/pull/18372) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Wrong background in disabled inputs ([#18372](https://github.com/RocketChat/Rocket.Chat/pull/18372)) -- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98)) - Rewrite Contextual Bar Discussion List in React ([#18127](https://github.com/RocketChat/Rocket.Chat/pull/18127)) -- Rewrite: My Account > Integrations rewritten ([#18290](https://github.com/RocketChat/Rocket.Chat/pull/18290) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite: My Account > Integrations rewritten ([#18290](https://github.com/RocketChat/Rocket.Chat/pull/18290)) -- Rewrite: My Account using React ([#18106](https://github.com/RocketChat/Rocket.Chat/pull/18106) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite: My Account using React ([#18106](https://github.com/RocketChat/Rocket.Chat/pull/18106)) - Update Apps Engine ([#18389](https://github.com/RocketChat/Rocket.Chat/pull/18389)) - Update Apps-Engine to Beta version ([#18294](https://github.com/RocketChat/Rocket.Chat/pull/18294)) -- Update the API of React Hooks using Meteor's reactive system ([#18226](https://github.com/RocketChat/Rocket.Chat/pull/18226) by [@tassoevan](https://github.com/tassoevan)) +- Update the API of React Hooks using Meteor's reactive system ([#18226](https://github.com/RocketChat/Rocket.Chat/pull/18226)) ### 👩‍💻👨‍💻 Contributors 😍 - [@20051231](https://github.com/20051231) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@cking-vonix](https://github.com/cking-vonix) - [@darigovresearch](https://github.com/darigovresearch) @@ -10801,20 +10725,22 @@ - [@lpilz](https://github.com/lpilz) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@omarchehab98](https://github.com/omarchehab98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - [@tobiasge](https://github.com/tobiasge) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.4.2 `2020-07-10 · 6 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` @@ -10834,28 +10760,28 @@ - Cannot open admin when server uses ROOT_URL with subpath (#18105) ([#18147](https://github.com/RocketChat/Rocket.Chat/pull/18147) by [@omarchehab98](https://github.com/omarchehab98)) -- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CAS login not merging users with local accounts ([#18238](https://github.com/RocketChat/Rocket.Chat/pull/18238)) -- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Old Data Migrations breaking upgrades ([#18185](https://github.com/RocketChat/Rocket.Chat/pull/18185)) -- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML login crashing when receiving an array of roles ([#18224](https://github.com/RocketChat/Rocket.Chat/pull/18224))
🔍 Minor changes -- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.4.2 ([#18241](https://github.com/RocketChat/Rocket.Chat/pull/18241) by [@omarchehab98](https://github.com/omarchehab98))
### 👩‍💻👨‍💻 Contributors 😍 - [@omarchehab98](https://github.com/omarchehab98) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) # 3.4.1 @@ -10880,7 +10806,7 @@ - Not possible to read encrypted messages after disable E2E on channel level ([#18101](https://github.com/RocketChat/Rocket.Chat/pull/18101)) -- Omnichannel close room callback returning promise ([#18102](https://github.com/RocketChat/Rocket.Chat/pull/18102) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel close room callback returning promise ([#18102](https://github.com/RocketChat/Rocket.Chat/pull/18102)) - The livechat agent activity monitor wasn't being initialised because due to an internal error ([#18090](https://github.com/RocketChat/Rocket.Chat/pull/18090) by [@paulobernardoaf](https://github.com/paulobernardoaf)) @@ -10888,7 +10814,7 @@ 🔍 Minor changes -- Release 3.4.1 ([#18134](https://github.com/RocketChat/Rocket.Chat/pull/18134) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@paulobernardoaf](https://github.com/paulobernardoaf) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.4.1 ([#18134](https://github.com/RocketChat/Rocket.Chat/pull/18134) by [@densik](https://github.com/densik) & [@dudizilla](https://github.com/dudizilla) & [@paulobernardoaf](https://github.com/paulobernardoaf)) @@ -10897,12 +10823,12 @@ - [@densik](https://github.com/densik) - [@dudizilla](https://github.com/dudizilla) - [@paulobernardoaf](https://github.com/paulobernardoaf) -- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -10926,21 +10852,21 @@ - **API:** New endpoints to manage User Custom Status `custom-user-status.create`, custom-user-status.delete` and `custom-user-status.update` ([#16550](https://github.com/RocketChat/Rocket.Chat/pull/16550) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- **ENTERPRISE:** Download engagement data ([#17920](https://github.com/RocketChat/Rocket.Chat/pull/17920) by [@tassoevan](https://github.com/tassoevan)) +- **ENTERPRISE:** Download engagement data ([#17920](https://github.com/RocketChat/Rocket.Chat/pull/17920)) -- **ENTERPRISE:** Omnichannel multiple business hours ([#17947](https://github.com/RocketChat/Rocket.Chat/pull/17947) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- **ENTERPRISE:** Omnichannel multiple business hours ([#17947](https://github.com/RocketChat/Rocket.Chat/pull/17947)) - Ability to configure Jitsi room options via new setting `URL Suffix` ([#17950](https://github.com/RocketChat/Rocket.Chat/pull/17950) by [@fthiery](https://github.com/fthiery)) - Accept variable `#{userdn}` on LDAP group filter ([#16273](https://github.com/RocketChat/Rocket.Chat/pull/16273) by [@ChrissW-R1](https://github.com/ChrissW-R1)) -- Add ability to block failed login attempts by user and IP ([#17783](https://github.com/RocketChat/Rocket.Chat/pull/17783) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add ability to block failed login attempts by user and IP ([#17783](https://github.com/RocketChat/Rocket.Chat/pull/17783)) -- Allows agents to send chat transcript to omnichannel end-users ([#17774](https://github.com/RocketChat/Rocket.Chat/pull/17774) by [@renatobecker](https://github.com/renatobecker)) +- Allows agents to send chat transcript to omnichannel end-users ([#17774](https://github.com/RocketChat/Rocket.Chat/pull/17774)) -- Assign oldest active user as owner when deleting last room owner ([#16088](https://github.com/RocketChat/Rocket.Chat/pull/16088) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Assign oldest active user as owner when deleting last room owner ([#16088](https://github.com/RocketChat/Rocket.Chat/pull/16088)) -- Blocked Media Types setting ([#17617](https://github.com/RocketChat/Rocket.Chat/pull/17617) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Blocked Media Types setting ([#17617](https://github.com/RocketChat/Rocket.Chat/pull/17617)) - Highlight matching words in message search results ([#16166](https://github.com/RocketChat/Rocket.Chat/pull/16166) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -10948,16 +10874,16 @@ - Reply notification email to sender's email when the Direct Reply feature is disabled ([#15767](https://github.com/RocketChat/Rocket.Chat/pull/15767) by [@localguru](https://github.com/localguru)) -- Rewrite Apps ([#17906](https://github.com/RocketChat/Rocket.Chat/pull/17906) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite Apps ([#17906](https://github.com/RocketChat/Rocket.Chat/pull/17906)) -- Setting to determine if the LDAP user active state should be synced ([#17645](https://github.com/RocketChat/Rocket.Chat/pull/17645) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Setting to determine if the LDAP user active state should be synced ([#17645](https://github.com/RocketChat/Rocket.Chat/pull/17645)) -- Skip Export Operations that haven't been updated in over a day ([#16135](https://github.com/RocketChat/Rocket.Chat/pull/16135) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Skip Export Operations that haven't been updated in over a day ([#16135](https://github.com/RocketChat/Rocket.Chat/pull/16135)) ### 🚀 Improvements -- **Federation:** Add support for _tcp and protocol DNS entries ([#17818](https://github.com/RocketChat/Rocket.Chat/pull/17818) by [@alansikora](https://github.com/alansikora)) +- **Federation:** Add support for _tcp and protocol DNS entries ([#17818](https://github.com/RocketChat/Rocket.Chat/pull/17818)) - **Performance:** Add new database indexes to improve data query performance ([#17839](https://github.com/RocketChat/Rocket.Chat/pull/17839)) @@ -10971,21 +10897,21 @@ - Make the implementation of custom code easier by having placeholders for a custom folder ([#15106](https://github.com/RocketChat/Rocket.Chat/pull/15106) by [@justinr1234](https://github.com/justinr1234)) -- Performance editing Admin settings ([#17916](https://github.com/RocketChat/Rocket.Chat/pull/17916) by [@tassoevan](https://github.com/tassoevan)) +- Performance editing Admin settings ([#17916](https://github.com/RocketChat/Rocket.Chat/pull/17916)) -- React hooks lint rules ([#17941](https://github.com/RocketChat/Rocket.Chat/pull/17941) by [@tassoevan](https://github.com/tassoevan)) +- React hooks lint rules ([#17941](https://github.com/RocketChat/Rocket.Chat/pull/17941)) -- Refactor Omnichannel Office Hours feature ([#17824](https://github.com/RocketChat/Rocket.Chat/pull/17824) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Refactor Omnichannel Office Hours feature ([#17824](https://github.com/RocketChat/Rocket.Chat/pull/17824)) -- Refactor Omnichannel Past Chats List ([#17346](https://github.com/RocketChat/Rocket.Chat/pull/17346) by [@nitinkumartiwari](https://github.com/nitinkumartiwari) & [@renatobecker](https://github.com/renatobecker)) +- Refactor Omnichannel Past Chats List ([#17346](https://github.com/RocketChat/Rocket.Chat/pull/17346) by [@nitinkumartiwari](https://github.com/nitinkumartiwari)) -- Rewrite admin sidebar in React ([#17801](https://github.com/RocketChat/Rocket.Chat/pull/17801) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite admin sidebar in React ([#17801](https://github.com/RocketChat/Rocket.Chat/pull/17801)) -- Rewrite Federation Dashboard ([#17900](https://github.com/RocketChat/Rocket.Chat/pull/17900) by [@tassoevan](https://github.com/tassoevan)) +- Rewrite Federation Dashboard ([#17900](https://github.com/RocketChat/Rocket.Chat/pull/17900)) -- SAML implementation ([#17742](https://github.com/RocketChat/Rocket.Chat/pull/17742) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML implementation ([#17742](https://github.com/RocketChat/Rocket.Chat/pull/17742)) -- Slack import: Parse channel and user mentions ([#17637](https://github.com/RocketChat/Rocket.Chat/pull/17637) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Slack import: Parse channel and user mentions ([#17637](https://github.com/RocketChat/Rocket.Chat/pull/17637)) - Split NOTIFICATIONS_SCHEDULE_DELAY into three separate variables ([#17669](https://github.com/RocketChat/Rocket.Chat/pull/17669) by [@jazztickets](https://github.com/jazztickets)) @@ -10999,7 +10925,7 @@ - Use REST for DDP calls by default ([#17934](https://github.com/RocketChat/Rocket.Chat/pull/17934)) -- User avatar cache invalidation ([#17925](https://github.com/RocketChat/Rocket.Chat/pull/17925) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- User avatar cache invalidation ([#17925](https://github.com/RocketChat/Rocket.Chat/pull/17925)) ### 🐛 Bug fixes @@ -11010,7 +10936,7 @@ - Added explicit server oembed provider for Twitter ([#17954](https://github.com/RocketChat/Rocket.Chat/pull/17954) by [@Cleod9](https://github.com/Cleod9)) -- Autocomplete component is not working property when searching channels in the Livechat Departments form ([#17970](https://github.com/RocketChat/Rocket.Chat/pull/17970) by [@renatobecker](https://github.com/renatobecker)) +- Autocomplete component is not working property when searching channels in the Livechat Departments form ([#17970](https://github.com/RocketChat/Rocket.Chat/pull/17970)) - Cannot react while "Allow reaction" is set to true ([#17964](https://github.com/RocketChat/Rocket.Chat/pull/17964)) @@ -11034,7 +10960,7 @@ - Hide system message add/remove owner ([#17938](https://github.com/RocketChat/Rocket.Chat/pull/17938)) -- Importers progress sending too much update events to clients ([#17857](https://github.com/RocketChat/Rocket.Chat/pull/17857) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Importers progress sending too much update events to clients ([#17857](https://github.com/RocketChat/Rocket.Chat/pull/17857)) - Link preview containing HTML encoded chars ([#16512](https://github.com/RocketChat/Rocket.Chat/pull/16512)) @@ -11044,15 +10970,15 @@ - Message action popup doesn't adjust itself on screen resize ([#16508](https://github.com/RocketChat/Rocket.Chat/pull/16508) by [@ritvikjain99](https://github.com/ritvikjain99)) -- Missing i18n key for setting: Verify Email for External Accounts ([#18002](https://github.com/RocketChat/Rocket.Chat/pull/18002) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Missing i18n key for setting: Verify Email for External Accounts ([#18002](https://github.com/RocketChat/Rocket.Chat/pull/18002)) - Missing pinned icon indicator for messages pinned ([#16448](https://github.com/RocketChat/Rocket.Chat/pull/16448) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Missing User when forwarding Omnichannel conversations via Apps-Engine ([#17918](https://github.com/RocketChat/Rocket.Chat/pull/17918) by [@renatobecker](https://github.com/renatobecker)) +- Missing User when forwarding Omnichannel conversations via Apps-Engine ([#17918](https://github.com/RocketChat/Rocket.Chat/pull/17918)) -- New Omnichannel Past Chats list padding ([#17994](https://github.com/RocketChat/Rocket.Chat/pull/17994) by [@renatobecker](https://github.com/renatobecker)) +- New Omnichannel Past Chats list padding ([#17994](https://github.com/RocketChat/Rocket.Chat/pull/17994)) -- No rotate option, to prevent image quality loss ([#15196](https://github.com/RocketChat/Rocket.Chat/pull/15196) by [@stleitner](https://github.com/stleitner) & [@tassoevan](https://github.com/tassoevan)) +- No rotate option, to prevent image quality loss ([#15196](https://github.com/RocketChat/Rocket.Chat/pull/15196) by [@stleitner](https://github.com/stleitner)) - No Way to Display Password Policy on Password Reset Screen ([#16400](https://github.com/RocketChat/Rocket.Chat/pull/16400) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -11062,27 +10988,27 @@ - Profile save button not activates properly when changing the username field ([#16541](https://github.com/RocketChat/Rocket.Chat/pull/16541) by [@ritvikjain99](https://github.com/ritvikjain99)) -- ReadOnly Rooms permission checks ([#17709](https://github.com/RocketChat/Rocket.Chat/pull/17709) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- ReadOnly Rooms permission checks ([#17709](https://github.com/RocketChat/Rocket.Chat/pull/17709)) -- Reorder hljs ([#17854](https://github.com/RocketChat/Rocket.Chat/pull/17854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Reorder hljs ([#17854](https://github.com/RocketChat/Rocket.Chat/pull/17854)) - Set `x-content-type-options: nosniff` header ([#16232](https://github.com/RocketChat/Rocket.Chat/pull/16232) by [@aviral243](https://github.com/aviral243)) -- Some Login Buttons disappear after refreshing OAuth Services ([#17808](https://github.com/RocketChat/Rocket.Chat/pull/17808) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Some Login Buttons disappear after refreshing OAuth Services ([#17808](https://github.com/RocketChat/Rocket.Chat/pull/17808)) - Spotify embed link opens in same tab ([#13637](https://github.com/RocketChat/Rocket.Chat/pull/13637) by [@bhardwajaditya](https://github.com/bhardwajaditya)) - StreamCast stream to server only streamers ([#17942](https://github.com/RocketChat/Rocket.Chat/pull/17942)) -- UI is not rendering when trying to edit an user ([#17972](https://github.com/RocketChat/Rocket.Chat/pull/17972) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- UI is not rendering when trying to edit an user ([#17972](https://github.com/RocketChat/Rocket.Chat/pull/17972)) -- Undesirable message updates after user saving profile ([#17930](https://github.com/RocketChat/Rocket.Chat/pull/17930) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Undesirable message updates after user saving profile ([#17930](https://github.com/RocketChat/Rocket.Chat/pull/17930)) - Update AmazonS3 file upload with error handling and sync operation ([#10372](https://github.com/RocketChat/Rocket.Chat/pull/10372) by [@madhavmalhotra3089](https://github.com/madhavmalhotra3089)) - User can resend email verification if email is invalid or is empty ([#16095](https://github.com/RocketChat/Rocket.Chat/pull/16095) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- User is prompted to reset their password when logging with OAuth ([#18001](https://github.com/RocketChat/Rocket.Chat/pull/18001) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- User is prompted to reset their password when logging with OAuth ([#18001](https://github.com/RocketChat/Rocket.Chat/pull/18001)) - Video conferences being started by users without permission ([#17948](https://github.com/RocketChat/Rocket.Chat/pull/17948)) @@ -11100,7 +11026,7 @@ - Bump websocket-extensions from 0.1.3 to 0.1.4 ([#17837](https://github.com/RocketChat/Rocket.Chat/pull/17837) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Change some components' location ([#17893](https://github.com/RocketChat/Rocket.Chat/pull/17893) by [@tassoevan](https://github.com/tassoevan)) +- Change some components' location ([#17893](https://github.com/RocketChat/Rocket.Chat/pull/17893)) - Chatpal: limit results to current room ([#17718](https://github.com/RocketChat/Rocket.Chat/pull/17718) by [@mrsimpson](https://github.com/mrsimpson)) @@ -11108,7 +11034,7 @@ - Do not build Docker image for fork PRs ([#17370](https://github.com/RocketChat/Rocket.Chat/pull/17370)) -- Federation performance and bug fixes ([#17504](https://github.com/RocketChat/Rocket.Chat/pull/17504) by [@alansikora](https://github.com/alansikora) & [@hyfen](https://github.com/hyfen)) +- Federation performance and bug fixes ([#17504](https://github.com/RocketChat/Rocket.Chat/pull/17504) by [@hyfen](https://github.com/hyfen)) - Fix invalid develop payload to release service ([#17799](https://github.com/RocketChat/Rocket.Chat/pull/17799)) @@ -11126,19 +11052,19 @@ - LingoHub based on develop ([#17796](https://github.com/RocketChat/Rocket.Chat/pull/17796)) -- Merge master into develop & Set version to 3.4.0-develop ([#17764](https://github.com/RocketChat/Rocket.Chat/pull/17764) by [@lpilz](https://github.com/lpilz) & [@mtmr0x](https://github.com/mtmr0x) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Merge master into develop & Set version to 3.4.0-develop ([#17764](https://github.com/RocketChat/Rocket.Chat/pull/17764) by [@lpilz](https://github.com/lpilz) & [@mtmr0x](https://github.com/mtmr0x)) - Readme: Update Raspberry Pi 2 to Pi 4 ([#17031](https://github.com/RocketChat/Rocket.Chat/pull/17031) by [@EwoutH](https://github.com/EwoutH)) -- Refactor components and views to Storybook compatibility ([#17800](https://github.com/RocketChat/Rocket.Chat/pull/17800) by [@tassoevan](https://github.com/tassoevan)) +- Refactor components and views to Storybook compatibility ([#17800](https://github.com/RocketChat/Rocket.Chat/pull/17800)) -- Regresion: Issue with reply button on broadcast channels ([#18057](https://github.com/RocketChat/Rocket.Chat/pull/18057) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regresion: Issue with reply button on broadcast channels ([#18057](https://github.com/RocketChat/Rocket.Chat/pull/18057)) -- Regression - Incoming WebHook messages not showing up on the channel ([#18005](https://github.com/RocketChat/Rocket.Chat/pull/18005) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression - Incoming WebHook messages not showing up on the channel ([#18005](https://github.com/RocketChat/Rocket.Chat/pull/18005)) -- Regression - Unable to edit status on the Edit User panel of the admin ([#18032](https://github.com/RocketChat/Rocket.Chat/pull/18032) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression - Unable to edit status on the Edit User panel of the admin ([#18032](https://github.com/RocketChat/Rocket.Chat/pull/18032)) -- Regression: Admin User Edit panel is broken ([#17992](https://github.com/RocketChat/Rocket.Chat/pull/17992) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Admin User Edit panel is broken ([#17992](https://github.com/RocketChat/Rocket.Chat/pull/17992)) - Regression: App info broken ([#17979](https://github.com/RocketChat/Rocket.Chat/pull/17979) by [@lolimay](https://github.com/lolimay)) @@ -11164,31 +11090,31 @@ - Regression: Grouping Thread messages ([#18042](https://github.com/RocketChat/Rocket.Chat/pull/18042)) -- Regression: Image Upload not working ([#17993](https://github.com/RocketChat/Rocket.Chat/pull/17993) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Image Upload not working ([#17993](https://github.com/RocketChat/Rocket.Chat/pull/17993)) -- Regression: Improve Omnichannel Business Hours ([#18050](https://github.com/RocketChat/Rocket.Chat/pull/18050) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Regression: Improve Omnichannel Business Hours ([#18050](https://github.com/RocketChat/Rocket.Chat/pull/18050)) -- Regression: Improve the logic to get request IPs ([#18033](https://github.com/RocketChat/Rocket.Chat/pull/18033) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Improve the logic to get request IPs ([#18033](https://github.com/RocketChat/Rocket.Chat/pull/18033)) -- Regression: Infinite loop in CodeSettingInput ([#17949](https://github.com/RocketChat/Rocket.Chat/pull/17949) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Infinite loop in CodeSettingInput ([#17949](https://github.com/RocketChat/Rocket.Chat/pull/17949)) -- Regression: Infinite render loop on Setup Wizard ([#18074](https://github.com/RocketChat/Rocket.Chat/pull/18074) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Infinite render loop on Setup Wizard ([#18074](https://github.com/RocketChat/Rocket.Chat/pull/18074)) - Regression: Only add reply-to if sender has emails ([#17998](https://github.com/RocketChat/Rocket.Chat/pull/17998)) -- Regression: Repair CodeMirror component reactivity ([#18037](https://github.com/RocketChat/Rocket.Chat/pull/18037) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Repair CodeMirror component reactivity ([#18037](https://github.com/RocketChat/Rocket.Chat/pull/18037)) -- Regression: Reset section button ([#18007](https://github.com/RocketChat/Rocket.Chat/pull/18007) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Reset section button ([#18007](https://github.com/RocketChat/Rocket.Chat/pull/18007)) - Regression: Room flickering if open a thread ([#18004](https://github.com/RocketChat/Rocket.Chat/pull/18004)) -- Regression: Wrong padding and colors on some tabs ([#18068](https://github.com/RocketChat/Rocket.Chat/pull/18068) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Wrong padding and colors on some tabs ([#18068](https://github.com/RocketChat/Rocket.Chat/pull/18068)) - Release 3.3.3 ([#17875](https://github.com/RocketChat/Rocket.Chat/pull/17875)) - Remove unused accounts-js integration ([#17921](https://github.com/RocketChat/Rocket.Chat/pull/17921)) -- Remove useLazyRef hook usage ([#18003](https://github.com/RocketChat/Rocket.Chat/pull/18003) by [@tassoevan](https://github.com/tassoevan)) +- Remove useLazyRef hook usage ([#18003](https://github.com/RocketChat/Rocket.Chat/pull/18003)) - Revert "Regression: Fix wrong message grouping inside threads" ([#18043](https://github.com/RocketChat/Rocket.Chat/pull/18043)) @@ -11198,7 +11124,7 @@ - Update stale bot to v3 and run every 6 hours ([#17958](https://github.com/RocketChat/Rocket.Chat/pull/17958)) -- Upgrade Livechat Widget version to 1.6.0 ([#18070](https://github.com/RocketChat/Rocket.Chat/pull/18070) by [@renatobecker](https://github.com/renatobecker)) +- Upgrade Livechat Widget version to 1.6.0 ([#18070](https://github.com/RocketChat/Rocket.Chat/pull/18070)) - Wrap Info Page components with React.memo ([#17899](https://github.com/RocketChat/Rocket.Chat/pull/17899)) @@ -11212,10 +11138,7 @@ - [@EwoutH](https://github.com/EwoutH) - [@InstinctBas](https://github.com/InstinctBas) - [@Karting06](https://github.com/Karting06) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Siedlerchr](https://github.com/Siedlerchr) -- [@alansikora](https://github.com/alansikora) - [@alexbartsch](https://github.com/alexbartsch) - [@antkaz](https://github.com/antkaz) - [@ashwaniYDV](https://github.com/ashwaniYDV) @@ -11240,18 +11163,18 @@ - [@mtmr0x](https://github.com/mtmr0x) - [@nitinkumartiwari](https://github.com/nitinkumartiwari) - [@onurtemiz](https://github.com/onurtemiz) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@ritvikjain99](https://github.com/ritvikjain99) - [@stleitner](https://github.com/stleitner) -- [@tassoevan](https://github.com/tassoevan) - [@thomas-mc-work](https://github.com/thomas-mc-work) - [@tonobo](https://github.com/tonobo) - [@toshokan](https://github.com/toshokan) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Sing-Li](https://github.com/Sing-Li) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) @@ -11259,8 +11182,11 @@ - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) - [@murtaza98](https://github.com/murtaza98) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.3.3 `2020-06-11 · 2 🔍 · 1 👩‍💻👨‍💻` @@ -11335,9 +11261,9 @@ Fixed logic for public/private room types on room edit panel -- Omnichannel message link is broken in email notifications ([#17843](https://github.com/RocketChat/Rocket.Chat/pull/17843) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel message link is broken in email notifications ([#17843](https://github.com/RocketChat/Rocket.Chat/pull/17843)) -- SAML LogoutRequest sending wrong NameID ([#17860](https://github.com/RocketChat/Rocket.Chat/pull/17860) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML LogoutRequest sending wrong NameID ([#17860](https://github.com/RocketChat/Rocket.Chat/pull/17860)) - Slack importer settings object ([#17776](https://github.com/RocketChat/Rocket.Chat/pull/17776) by [@lpilz](https://github.com/lpilz)) @@ -11345,11 +11271,11 @@ 🔍 Minor changes -- [REGRESSION] Omnichannel visitor forward was applying wrong restrictions ([#17826](https://github.com/RocketChat/Rocket.Chat/pull/17826) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- [REGRESSION] Omnichannel visitor forward was applying wrong restrictions ([#17826](https://github.com/RocketChat/Rocket.Chat/pull/17826)) - Fix the update check not working ([#17809](https://github.com/RocketChat/Rocket.Chat/pull/17809)) -- Release 3.3.1 ([#17865](https://github.com/RocketChat/Rocket.Chat/pull/17865) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.3.1 ([#17865](https://github.com/RocketChat/Rocket.Chat/pull/17865) by [@cking-vonix](https://github.com/cking-vonix) & [@lpilz](https://github.com/lpilz) & [@mariaeduardacunha](https://github.com/mariaeduardacunha)) - Update Apps-Engine version ([#17804](https://github.com/RocketChat/Rocket.Chat/pull/17804)) @@ -11359,18 +11285,18 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@cking-vonix](https://github.com/cking-vonix) - [@lpilz](https://github.com/lpilz) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@graywolf336](https://github.com/graywolf336) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.3.0 @@ -11386,11 +11312,11 @@ - **APPS-ENGINE:** Essentials mechanism ([#17656](https://github.com/RocketChat/Rocket.Chat/pull/17656)) -- **Apps-Engine:** New Livechat event handlers ([#17033](https://github.com/RocketChat/Rocket.Chat/pull/17033) by [@lolimay](https://github.com/lolimay) & [@renatobecker](https://github.com/renatobecker)) +- **Apps-Engine:** New Livechat event handlers ([#17033](https://github.com/RocketChat/Rocket.Chat/pull/17033) by [@lolimay](https://github.com/lolimay)) - **Apps-Engine:** New Room events ([#17487](https://github.com/RocketChat/Rocket.Chat/pull/17487)) -- **ENTERPRISE:** Omnichannel Last-Chatted Agent Preferred option ([#17666](https://github.com/RocketChat/Rocket.Chat/pull/17666) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel Last-Chatted Agent Preferred option ([#17666](https://github.com/RocketChat/Rocket.Chat/pull/17666)) If activated, this feature will store the last agent that assisted each Omnichannel visitor when a conversation is taken. So, when a visitor returns(it works with any entry point, Livechat, Facebook, REST API, and so on) and starts a new chat, the routing system checks: @@ -11399,31 +11325,31 @@ After this process, if an agent has been found, the system will check the agent's availability to assist the new chat. If it's not available, then the routing system will get the next available agent in the queue. -- **ENTERPRISE:** Support for custom Livechat registration form fields ([#17581](https://github.com/RocketChat/Rocket.Chat/pull/17581) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Support for custom Livechat registration form fields ([#17581](https://github.com/RocketChat/Rocket.Chat/pull/17581)) -- **ENTERPRISE:** Support Omnichannel conversations auditing ([#17692](https://github.com/RocketChat/Rocket.Chat/pull/17692) by [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Support Omnichannel conversations auditing ([#17692](https://github.com/RocketChat/Rocket.Chat/pull/17692)) -- Add Livechat website URL to the offline message e-mail ([#17429](https://github.com/RocketChat/Rocket.Chat/pull/17429) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Add Livechat website URL to the offline message e-mail ([#17429](https://github.com/RocketChat/Rocket.Chat/pull/17429)) -- Add permissions to deal with Omnichannel custom fields ([#17567](https://github.com/RocketChat/Rocket.Chat/pull/17567) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Add permissions to deal with Omnichannel custom fields ([#17567](https://github.com/RocketChat/Rocket.Chat/pull/17567)) -- Add Permissions to deal with Omnichannel visitor past chats history ([#17580](https://github.com/RocketChat/Rocket.Chat/pull/17580) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add Permissions to deal with Omnichannel visitor past chats history ([#17580](https://github.com/RocketChat/Rocket.Chat/pull/17580)) -- Add the ability to send Livechat offline messages to a channel ([#17442](https://github.com/RocketChat/Rocket.Chat/pull/17442) by [@renatobecker](https://github.com/renatobecker)) +- Add the ability to send Livechat offline messages to a channel ([#17442](https://github.com/RocketChat/Rocket.Chat/pull/17442)) - Added "Add custom emoji" link to emoji picker ([#16250](https://github.com/RocketChat/Rocket.Chat/pull/16250)) - Added custom fields to Add/Edit user ([#17681](https://github.com/RocketChat/Rocket.Chat/pull/17681)) -- Admin refactor Second phase ([#17551](https://github.com/RocketChat/Rocket.Chat/pull/17551) by [@tassoevan](https://github.com/tassoevan)) +- Admin refactor Second phase ([#17551](https://github.com/RocketChat/Rocket.Chat/pull/17551)) -- Allow filtering Omnichannel analytics dashboards by department ([#17463](https://github.com/RocketChat/Rocket.Chat/pull/17463) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Allow filtering Omnichannel analytics dashboards by department ([#17463](https://github.com/RocketChat/Rocket.Chat/pull/17463)) -- API endpoint to fetch Omnichannel's room transfer history ([#17694](https://github.com/RocketChat/Rocket.Chat/pull/17694) by [@renatobecker](https://github.com/renatobecker)) +- API endpoint to fetch Omnichannel's room transfer history ([#17694](https://github.com/RocketChat/Rocket.Chat/pull/17694)) - Option to remove users from RocketChat if not found in Crowd ([#17619](https://github.com/RocketChat/Rocket.Chat/pull/17619) by [@ocanema](https://github.com/ocanema)) -- Rewrite admin pages ([#17388](https://github.com/RocketChat/Rocket.Chat/pull/17388) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@tassoevan](https://github.com/tassoevan)) +- Rewrite admin pages ([#17388](https://github.com/RocketChat/Rocket.Chat/pull/17388) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) - Screen Lock settings - mobile client ([#17523](https://github.com/RocketChat/Rocket.Chat/pull/17523) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) @@ -11440,22 +11366,22 @@ - Add env var to configure Chatpal URL and remove it from beta ([#16665](https://github.com/RocketChat/Rocket.Chat/pull/16665) by [@tkurz](https://github.com/tkurz)) -- Add new webhooks to the Omnichannel integration feature ([#17503](https://github.com/RocketChat/Rocket.Chat/pull/17503) by [@renatobecker](https://github.com/renatobecker)) +- Add new webhooks to the Omnichannel integration feature ([#17503](https://github.com/RocketChat/Rocket.Chat/pull/17503)) - Added divider between tables and paginations ([#17680](https://github.com/RocketChat/Rocket.Chat/pull/17680)) - Always shows the exact match first on user's and room's autocomplete for mentions and on sidebar search ([#16394](https://github.com/RocketChat/Rocket.Chat/pull/16394)) -- Display status information in the Omnichannel Agents list ([#17701](https://github.com/RocketChat/Rocket.Chat/pull/17701) by [@renatobecker](https://github.com/renatobecker)) +- Display status information in the Omnichannel Agents list ([#17701](https://github.com/RocketChat/Rocket.Chat/pull/17701)) - Starred Messages ([#17685](https://github.com/RocketChat/Rocket.Chat/pull/17685)) -- Unused styles ([#17554](https://github.com/RocketChat/Rocket.Chat/pull/17554) by [@tassoevan](https://github.com/tassoevan)) +- Unused styles ([#17554](https://github.com/RocketChat/Rocket.Chat/pull/17554)) ### 🐛 Bug fixes -- Agent's custom fields being leaked through the Livechat configuration endpoint ([#17640](https://github.com/RocketChat/Rocket.Chat/pull/17640) by [@renatobecker](https://github.com/renatobecker)) +- Agent's custom fields being leaked through the Livechat configuration endpoint ([#17640](https://github.com/RocketChat/Rocket.Chat/pull/17640)) - Allow owners to react inside broadcast channels ([#17687](https://github.com/RocketChat/Rocket.Chat/pull/17687) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -11463,13 +11389,13 @@ - Can't click on room's actions menu of sidebar list when in search mode ([#16548](https://github.com/RocketChat/Rocket.Chat/pull/16548) by [@ritvikjain99](https://github.com/ritvikjain99)) -- Change email verification label ([#17450](https://github.com/RocketChat/Rocket.Chat/pull/17450) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Change email verification label ([#17450](https://github.com/RocketChat/Rocket.Chat/pull/17450)) -- Default filters on Omnichannel Current Chats screen not showing on first load ([#17522](https://github.com/RocketChat/Rocket.Chat/pull/17522) by [@renatobecker](https://github.com/renatobecker)) +- Default filters on Omnichannel Current Chats screen not showing on first load ([#17522](https://github.com/RocketChat/Rocket.Chat/pull/17522)) - Directory search user placeholder ([#17652](https://github.com/RocketChat/Rocket.Chat/pull/17652) by [@zdumitru](https://github.com/zdumitru)) -- Do not allow passwords on private channels ([#15642](https://github.com/RocketChat/Rocket.Chat/pull/15642) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Do not allow passwords on private channels ([#15642](https://github.com/RocketChat/Rocket.Chat/pull/15642)) - Elements of "Personal Access Tokens" section out of alignment and unusable on very small screens ([#17129](https://github.com/RocketChat/Rocket.Chat/pull/17129) by [@Nikhil713](https://github.com/Nikhil713)) @@ -11485,11 +11411,11 @@ - Increasing highlight time in 3 seconds ([#17540](https://github.com/RocketChat/Rocket.Chat/pull/17540) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- Invalid CSS syntax ([#17541](https://github.com/RocketChat/Rocket.Chat/pull/17541) by [@tassoevan](https://github.com/tassoevan)) +- Invalid CSS syntax ([#17541](https://github.com/RocketChat/Rocket.Chat/pull/17541)) -- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508)) -- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579)) - Mail Messages > Cannot mail own user ([#17625](https://github.com/RocketChat/Rocket.Chat/pull/17625)) @@ -11506,15 +11432,15 @@ * Some translations were missing * Edit and delete of custom sounds were not working correctly -- Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553)) -- Omnichannel room priorities system messages were create on every saved room info ([#17479](https://github.com/RocketChat/Rocket.Chat/pull/17479) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Omnichannel room priorities system messages were create on every saved room info ([#17479](https://github.com/RocketChat/Rocket.Chat/pull/17479)) - Password reset/change accepting current password as new password ([#16331](https://github.com/RocketChat/Rocket.Chat/pull/16331) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Push settings enabled when push gateway is selected ([#17582](https://github.com/RocketChat/Rocket.Chat/pull/17582)) -- Queued Omnichannel webhook being triggered unnecessarily ([#17661](https://github.com/RocketChat/Rocket.Chat/pull/17661) by [@renatobecker](https://github.com/renatobecker)) +- Queued Omnichannel webhook being triggered unnecessarily ([#17661](https://github.com/RocketChat/Rocket.Chat/pull/17661)) - Reactions may present empty names of who reacted when using Real Names ([#17536](https://github.com/RocketChat/Rocket.Chat/pull/17536)) @@ -11522,21 +11448,21 @@ - Relative image path in oembededUrlWidget ([#15902](https://github.com/RocketChat/Rocket.Chat/pull/15902) by [@machester4](https://github.com/machester4)) -- Remove a non working setting "Notification Duration" ([#15737](https://github.com/RocketChat/Rocket.Chat/pull/15737) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Remove a non working setting "Notification Duration" ([#15737](https://github.com/RocketChat/Rocket.Chat/pull/15737)) -- Remove deprecated Omnichannel Knowledge Base feature ([#17387](https://github.com/RocketChat/Rocket.Chat/pull/17387) by [@renatobecker](https://github.com/renatobecker)) +- Remove deprecated Omnichannel Knowledge Base feature ([#17387](https://github.com/RocketChat/Rocket.Chat/pull/17387)) - remove multiple options from dontAskMeAgain ([#17514](https://github.com/RocketChat/Rocket.Chat/pull/17514) by [@TaimurAzhar](https://github.com/TaimurAzhar)) -- Replace obsolete X-FRAME-OPTIONS header on Livechat route ([#17419](https://github.com/RocketChat/Rocket.Chat/pull/17419) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace obsolete X-FRAME-OPTIONS header on Livechat route ([#17419](https://github.com/RocketChat/Rocket.Chat/pull/17419)) -- Replace postcss Meteor package ([#15929](https://github.com/RocketChat/Rocket.Chat/pull/15929) by [@tassoevan](https://github.com/tassoevan)) +- Replace postcss Meteor package ([#15929](https://github.com/RocketChat/Rocket.Chat/pull/15929)) -- Resolve 'app already exists' error on app update ([#17544](https://github.com/RocketChat/Rocket.Chat/pull/17544) by [@thassiov](https://github.com/thassiov)) +- Resolve 'app already exists' error on app update ([#17544](https://github.com/RocketChat/Rocket.Chat/pull/17544)) -- SAML IDP initiated logout error ([#17482](https://github.com/RocketChat/Rocket.Chat/pull/17482) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML IDP initiated logout error ([#17482](https://github.com/RocketChat/Rocket.Chat/pull/17482)) -- Secret Registration not properly validating Invite Token ([#17618](https://github.com/RocketChat/Rocket.Chat/pull/17618) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Secret Registration not properly validating Invite Token ([#17618](https://github.com/RocketChat/Rocket.Chat/pull/17618)) - Slack importer Link handling ([#17595](https://github.com/RocketChat/Rocket.Chat/pull/17595) by [@lpilz](https://github.com/lpilz)) @@ -11564,7 +11490,7 @@ - Improve: New PR Template ([#16968](https://github.com/RocketChat/Rocket.Chat/pull/16968) by [@regalstreak](https://github.com/regalstreak)) -- Improve: Remove index files from action-links, accounts and assets ([#17607](https://github.com/RocketChat/Rocket.Chat/pull/17607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Improve: Remove index files from action-links, accounts and assets ([#17607](https://github.com/RocketChat/Rocket.Chat/pull/17607)) - Improve: Remove uncessary RegExp query by email ([#17654](https://github.com/RocketChat/Rocket.Chat/pull/17654)) @@ -11580,7 +11506,7 @@ - RegExp improvements suggested by LGTM ([#17500](https://github.com/RocketChat/Rocket.Chat/pull/17500)) -- Regression: Fix error when performing Omnichannel queue checking ([#17700](https://github.com/RocketChat/Rocket.Chat/pull/17700) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Fix error when performing Omnichannel queue checking ([#17700](https://github.com/RocketChat/Rocket.Chat/pull/17700)) - Regression: Add missing return to afterSaveMessage callbacks ([#17715](https://github.com/RocketChat/Rocket.Chat/pull/17715)) @@ -11592,7 +11518,7 @@ - Regression: Fix Avatar Url Provider when CDN_PREFIX_ALL is false ([#17542](https://github.com/RocketChat/Rocket.Chat/pull/17542)) -- Regression: Fix error preventing creation of group DMs ([#17726](https://github.com/RocketChat/Rocket.Chat/pull/17726) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Regression: Fix error preventing creation of group DMs ([#17726](https://github.com/RocketChat/Rocket.Chat/pull/17726)) - Regression: Fix incorrect imports of the Apps-Engine ([#17695](https://github.com/RocketChat/Rocket.Chat/pull/17695)) @@ -11624,7 +11550,7 @@ - Regression: User edit form missing fields ([#17699](https://github.com/RocketChat/Rocket.Chat/pull/17699)) -- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x)) - Remove unnecessary setting redefinition ([#17587](https://github.com/RocketChat/Rocket.Chat/pull/17587)) @@ -11634,7 +11560,7 @@ - Update Fuselage version ([#17708](https://github.com/RocketChat/Rocket.Chat/pull/17708)) -- Upgrade Livechat Widget version to 1.5.0 ([#17710](https://github.com/RocketChat/Rocket.Chat/pull/17710) by [@renatobecker](https://github.com/renatobecker)) +- Upgrade Livechat Widget version to 1.5.0 ([#17710](https://github.com/RocketChat/Rocket.Chat/pull/17710)) - Use Users.findOneByAppId instead of querying directly ([#16480](https://github.com/RocketChat/Rocket.Chat/pull/16480) by [@lolimay](https://github.com/lolimay)) @@ -11642,8 +11568,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Nikhil713](https://github.com/Nikhil713) - [@TaimurAzhar](https://github.com/TaimurAzhar) - [@ashwaniYDV](https://github.com/ashwaniYDV) @@ -11660,28 +11584,30 @@ - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@mtmr0x](https://github.com/mtmr0x) - [@ocanema](https://github.com/ocanema) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@qwertiko](https://github.com/qwertiko) - [@regalstreak](https://github.com/regalstreak) -- [@renatobecker](https://github.com/renatobecker) - [@ritvikjain99](https://github.com/ritvikjain99) - [@ritwizsinha](https://github.com/ritwizsinha) - [@ryjones](https://github.com/ryjones) -- [@tassoevan](https://github.com/tassoevan) -- [@thassiov](https://github.com/thassiov) - [@tkurz](https://github.com/tkurz) - [@wreiske](https://github.com/wreiske) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) +- [@thassiov](https://github.com/thassiov) # 3.2.2 `2020-05-11 · 7 🐛 · 1 🔍 · 6 👩‍💻👨‍💻` @@ -11700,9 +11626,9 @@ - Error during data export for DMs ([#17577](https://github.com/RocketChat/Rocket.Chat/pull/17577) by [@mtmr0x](https://github.com/mtmr0x)) -- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP login on Enteprise Version ([#17508](https://github.com/RocketChat/Rocket.Chat/pull/17508)) -- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Login Forbidden on servers that had LDAP enabled in the past ([#17579](https://github.com/RocketChat/Rocket.Chat/pull/17579)) - Push settings enabled when push gateway is selected ([#17582](https://github.com/RocketChat/Rocket.Chat/pull/17582)) @@ -11714,19 +11640,19 @@ 🔍 Minor changes -- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.2.2 ([#17600](https://github.com/RocketChat/Rocket.Chat/pull/17600) by [@mtmr0x](https://github.com/mtmr0x)) ### 👩‍💻👨‍💻 Contributors 😍 - [@mtmr0x](https://github.com/mtmr0x) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) ### 👩‍💻👨‍💻 Core Team 🤓 - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -11741,22 +11667,19 @@ ### 🐛 Bug fixes -- LDAP login error on Enterprise version ([#17497](https://github.com/RocketChat/Rocket.Chat/pull/17497) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP login error on Enterprise version ([#17497](https://github.com/RocketChat/Rocket.Chat/pull/17497))
🔍 Minor changes -- Release 3.2.1 ([#17506](https://github.com/RocketChat/Rocket.Chat/pull/17506) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 3.2.1 ([#17506](https://github.com/RocketChat/Rocket.Chat/pull/17506))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.2.0 @@ -11770,27 +11693,27 @@ ### 🎉 New features -- **ENTERPRISE:** Allows to set a group of departments accepted for forwarding chats ([#17335](https://github.com/RocketChat/Rocket.Chat/pull/17335) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Allows to set a group of departments accepted for forwarding chats ([#17335](https://github.com/RocketChat/Rocket.Chat/pull/17335)) -- **ENTERPRISE:** Auto close abandoned Omnichannel rooms ([#17055](https://github.com/RocketChat/Rocket.Chat/pull/17055) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Auto close abandoned Omnichannel rooms ([#17055](https://github.com/RocketChat/Rocket.Chat/pull/17055)) -- **ENTERPRISE:** Omnichannel queue priorities ([#17141](https://github.com/RocketChat/Rocket.Chat/pull/17141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- **ENTERPRISE:** Omnichannel queue priorities ([#17141](https://github.com/RocketChat/Rocket.Chat/pull/17141)) -- **ENTERPRISE:** Restrict the permissions configuration for guest users ([#17333](https://github.com/RocketChat/Rocket.Chat/pull/17333) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- **ENTERPRISE:** Restrict the permissions configuration for guest users ([#17333](https://github.com/RocketChat/Rocket.Chat/pull/17333)) The **Guest** role is blocked for edition on the EE version. This will allow the EE customers to receive licenses with extra seats for Guests for free. The CE version continues to have the Guest role configurable. -- Add ability to set tags in the Omnichannel room closing dialog ([#17254](https://github.com/RocketChat/Rocket.Chat/pull/17254) by [@renatobecker](https://github.com/renatobecker)) +- Add ability to set tags in the Omnichannel room closing dialog ([#17254](https://github.com/RocketChat/Rocket.Chat/pull/17254)) -- Add Color variable to left sidebar ([#16806](https://github.com/RocketChat/Rocket.Chat/pull/16806) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Add Color variable to left sidebar ([#16806](https://github.com/RocketChat/Rocket.Chat/pull/16806)) -- Add MMS support to Voxtelesys ([#17217](https://github.com/RocketChat/Rocket.Chat/pull/17217) by [@john08burke](https://github.com/john08burke) & [@renatobecker](https://github.com/renatobecker)) +- Add MMS support to Voxtelesys ([#17217](https://github.com/RocketChat/Rocket.Chat/pull/17217) by [@john08burke](https://github.com/john08burke)) - Adds ability for Rocket.Chat Apps to create discussions ([#16683](https://github.com/RocketChat/Rocket.Chat/pull/16683) by [@lolimay](https://github.com/lolimay)) -- Allow to send Agent custom fields through the Omnichannel CRM integration ([#16286](https://github.com/RocketChat/Rocket.Chat/pull/16286) by [@renatobecker](https://github.com/renatobecker)) +- Allow to send Agent custom fields through the Omnichannel CRM integration ([#16286](https://github.com/RocketChat/Rocket.Chat/pull/16286)) -- Allow to set a comment when forwarding Omnichannel chats ([#17353](https://github.com/RocketChat/Rocket.Chat/pull/17353) by [@renatobecker](https://github.com/renatobecker)) +- Allow to set a comment when forwarding Omnichannel chats ([#17353](https://github.com/RocketChat/Rocket.Chat/pull/17353)) - Better Push and Email Notification logic ([#17357](https://github.com/RocketChat/Rocket.Chat/pull/17357)) @@ -11804,17 +11727,17 @@ - All the scheduled notifications for that user are rescheduled to now - The current notification goes back to the queue to be processed ordered by creation date -- Buttons to check/uncheck all users and channels on import ([#17207](https://github.com/RocketChat/Rocket.Chat/pull/17207) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Buttons to check/uncheck all users and channels on import ([#17207](https://github.com/RocketChat/Rocket.Chat/pull/17207)) - Default favorite channels ([#16025](https://github.com/RocketChat/Rocket.Chat/pull/16025)) -- Enable the IDP to choose the best authnContext ([#17222](https://github.com/RocketChat/Rocket.Chat/pull/17222) by [@felipecrp](https://github.com/felipecrp) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Enable the IDP to choose the best authnContext ([#17222](https://github.com/RocketChat/Rocket.Chat/pull/17222) by [@felipecrp](https://github.com/felipecrp)) - Error page when browser is not supported ([#17372](https://github.com/RocketChat/Rocket.Chat/pull/17372)) - Feature/custom oauth mail field and interpolation for mapped fields ([#15690](https://github.com/RocketChat/Rocket.Chat/pull/15690) by [@benkroeger](https://github.com/benkroeger)) -- Federation event for when users left rooms ([#17091](https://github.com/RocketChat/Rocket.Chat/pull/17091) by [@alansikora](https://github.com/alansikora)) +- Federation event for when users left rooms ([#17091](https://github.com/RocketChat/Rocket.Chat/pull/17091)) - Make the header for rooms clickable ([#16762](https://github.com/RocketChat/Rocket.Chat/pull/16762) by [@aKn1ghtOut](https://github.com/aKn1ghtOut)) @@ -11825,32 +11748,32 @@ - Add `file-title` and `file-desc` as new filter tag options on message search ([#16858](https://github.com/RocketChat/Rocket.Chat/pull/16858) by [@subham103](https://github.com/subham103)) -- Add possibility to sort the Omnichannel current chats list by column ([#17347](https://github.com/RocketChat/Rocket.Chat/pull/17347) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add possibility to sort the Omnichannel current chats list by column ([#17347](https://github.com/RocketChat/Rocket.Chat/pull/17347)) - Administration -> Mailer Rewrite. ([#17191](https://github.com/RocketChat/Rocket.Chat/pull/17191)) -- Administration Pages root rewritten ([#17209](https://github.com/RocketChat/Rocket.Chat/pull/17209) by [@tassoevan](https://github.com/tassoevan)) +- Administration Pages root rewritten ([#17209](https://github.com/RocketChat/Rocket.Chat/pull/17209)) - Change the SAML metadata order to conform to XSD specification ([#15488](https://github.com/RocketChat/Rocket.Chat/pull/15488) by [@fcrespo82](https://github.com/fcrespo82)) - Filter markdown in notifications ([#9995](https://github.com/RocketChat/Rocket.Chat/pull/9995) by [@c0dzilla](https://github.com/c0dzilla)) -- Increase decoupling between React components and Blaze templates ([#16642](https://github.com/RocketChat/Rocket.Chat/pull/16642) by [@tassoevan](https://github.com/tassoevan)) +- Increase decoupling between React components and Blaze templates ([#16642](https://github.com/RocketChat/Rocket.Chat/pull/16642)) -- Move CSS imports to `/app` modules ([#17261](https://github.com/RocketChat/Rocket.Chat/pull/17261) by [@tassoevan](https://github.com/tassoevan)) +- Move CSS imports to `/app` modules ([#17261](https://github.com/RocketChat/Rocket.Chat/pull/17261)) -- Redesign Administration > Import ([#17289](https://github.com/RocketChat/Rocket.Chat/pull/17289) by [@tassoevan](https://github.com/tassoevan)) +- Redesign Administration > Import ([#17289](https://github.com/RocketChat/Rocket.Chat/pull/17289)) - User gets UI feedback when message is pinned or unpinned ([#16056](https://github.com/RocketChat/Rocket.Chat/pull/16056) by [@ashwaniYDV](https://github.com/ashwaniYDV)) ### 🐛 Bug fixes -- "Invalid Invite" message when registration is disabled ([#17226](https://github.com/RocketChat/Rocket.Chat/pull/17226) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- "Invalid Invite" message when registration is disabled ([#17226](https://github.com/RocketChat/Rocket.Chat/pull/17226)) - 2FA not showing codes for Spanish translation ([#17378](https://github.com/RocketChat/Rocket.Chat/pull/17378) by [@RavenSystem](https://github.com/RavenSystem)) -- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275)) - Admin panel custom sounds, multiple sound playback fix and added single play/pause button ([#16215](https://github.com/RocketChat/Rocket.Chat/pull/16215) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -11862,7 +11785,7 @@ - Change wording to start DM from info panel ([#8799](https://github.com/RocketChat/Rocket.Chat/pull/8799)) -- CSV Importer fails when there are no users to import ([#16790](https://github.com/RocketChat/Rocket.Chat/pull/16790) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CSV Importer fails when there are no users to import ([#16790](https://github.com/RocketChat/Rocket.Chat/pull/16790)) - Directory default tab ([#17283](https://github.com/RocketChat/Rocket.Chat/pull/17283)) @@ -11872,17 +11795,17 @@ - Fixed email sort button in directory -> users ([#16606](https://github.com/RocketChat/Rocket.Chat/pull/16606) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Global event click-message-link not fired ([#16771](https://github.com/RocketChat/Rocket.Chat/pull/16771) by [@tassoevan](https://github.com/tassoevan)) +- Global event click-message-link not fired ([#16771](https://github.com/RocketChat/Rocket.Chat/pull/16771)) -- Import slack's multiple direct messages as direct rooms instead of private groups ([#17206](https://github.com/RocketChat/Rocket.Chat/pull/17206) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Import slack's multiple direct messages as direct rooms instead of private groups ([#17206](https://github.com/RocketChat/Rocket.Chat/pull/17206)) - In Create a New Channel, input should be focused on channel name instead of invite users ([#16405](https://github.com/RocketChat/Rocket.Chat/pull/16405) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302)) - No maxlength(120) defined for custom user status ([#16534](https://github.com/RocketChat/Rocket.Chat/pull/16534) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288)) - Popover component doesn't have scroll ([#17198](https://github.com/RocketChat/Rocket.Chat/pull/17198) by [@Nikhil713](https://github.com/Nikhil713)) @@ -11890,11 +11813,11 @@ - Red color error outline is not removed after password update on profile details ([#16536](https://github.com/RocketChat/Rocket.Chat/pull/16536) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Remove properties from users.info response ([#17238](https://github.com/RocketChat/Rocket.Chat/pull/17238) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove properties from users.info response ([#17238](https://github.com/RocketChat/Rocket.Chat/pull/17238)) -- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278)) -- SAML Idp Initiated Logout Error ([#17324](https://github.com/RocketChat/Rocket.Chat/pull/17324) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML Idp Initiated Logout Error ([#17324](https://github.com/RocketChat/Rocket.Chat/pull/17324)) - Search valid for emoji with dual name ([#16887](https://github.com/RocketChat/Rocket.Chat/pull/16887) by [@subham103](https://github.com/subham103)) @@ -11906,7 +11829,7 @@ - Translation for nl ([#16742](https://github.com/RocketChat/Rocket.Chat/pull/16742) by [@CC007](https://github.com/CC007)) -- Unsafe React portals mount/unmount ([#17265](https://github.com/RocketChat/Rocket.Chat/pull/17265) by [@tassoevan](https://github.com/tassoevan)) +- Unsafe React portals mount/unmount ([#17265](https://github.com/RocketChat/Rocket.Chat/pull/17265)) - Update ru.i18n.json ([#16869](https://github.com/RocketChat/Rocket.Chat/pull/16869) by [@1rV1N-git](https://github.com/1rV1N-git)) @@ -11918,13 +11841,13 @@ 🔍 Minor changes -- [CHORE] Move polyfills to client/ ([#17266](https://github.com/RocketChat/Rocket.Chat/pull/17266) by [@tassoevan](https://github.com/tassoevan)) +- [CHORE] Move polyfills to client/ ([#17266](https://github.com/RocketChat/Rocket.Chat/pull/17266)) -- Apply $and helper to message template ([#17280](https://github.com/RocketChat/Rocket.Chat/pull/17280) by [@tassoevan](https://github.com/tassoevan)) +- Apply $and helper to message template ([#17280](https://github.com/RocketChat/Rocket.Chat/pull/17280)) - Bump https-proxy-agent from 2.2.1 to 2.2.4 ([#17323](https://github.com/RocketChat/Rocket.Chat/pull/17323) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Complement Guest role restrictions for Enterprise ([#17393](https://github.com/RocketChat/Rocket.Chat/pull/17393) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Complement Guest role restrictions for Enterprise ([#17393](https://github.com/RocketChat/Rocket.Chat/pull/17393)) - Fix moving-to-a-single-codebase link in README ([#17297](https://github.com/RocketChat/Rocket.Chat/pull/17297) by [@Krinkle](https://github.com/Krinkle)) @@ -11936,21 +11859,21 @@ - Mailer Scrollbar ([#17322](https://github.com/RocketChat/Rocket.Chat/pull/17322)) -- Merge master into develop & Set version to 3.2.0-develop ([#17241](https://github.com/RocketChat/Rocket.Chat/pull/17241) by [@1rV1N-git](https://github.com/1rV1N-git) & [@renatobecker](https://github.com/renatobecker)) +- Merge master into develop & Set version to 3.2.0-develop ([#17241](https://github.com/RocketChat/Rocket.Chat/pull/17241) by [@1rV1N-git](https://github.com/1rV1N-git)) -- New hooks for RouterContext ([#17305](https://github.com/RocketChat/Rocket.Chat/pull/17305) by [@tassoevan](https://github.com/tassoevan)) +- New hooks for RouterContext ([#17305](https://github.com/RocketChat/Rocket.Chat/pull/17305)) -- Regression: Import data pagination ([#17355](https://github.com/RocketChat/Rocket.Chat/pull/17355) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Import data pagination ([#17355](https://github.com/RocketChat/Rocket.Chat/pull/17355)) - Regression: Storybook ([#17321](https://github.com/RocketChat/Rocket.Chat/pull/17321)) -- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde)) - Remove `@typescript-eslint/explicit-function-return-type` rule ([#17428](https://github.com/RocketChat/Rocket.Chat/pull/17428)) - Remove set as alias setting ([#16343](https://github.com/RocketChat/Rocket.Chat/pull/16343)) -- Static props for Administration route components ([#17285](https://github.com/RocketChat/Rocket.Chat/pull/17285) by [@tassoevan](https://github.com/tassoevan)) +- Static props for Administration route components ([#17285](https://github.com/RocketChat/Rocket.Chat/pull/17285)) - Update Apps-Engine to stable version ([#17287](https://github.com/RocketChat/Rocket.Chat/pull/17287)) @@ -11963,12 +11886,9 @@ - [@1rV1N-git](https://github.com/1rV1N-git) - [@CC007](https://github.com/CC007) - [@Krinkle](https://github.com/Krinkle) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Nikhil713](https://github.com/Nikhil713) - [@RavenSystem](https://github.com/RavenSystem) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) -- [@alansikora](https://github.com/alansikora) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@benkroeger](https://github.com/benkroeger) - [@c0dzilla](https://github.com/c0dzilla) @@ -11981,22 +11901,25 @@ - [@john08burke](https://github.com/john08burke) - [@lolimay](https://github.com/lolimay) - [@lpilz](https://github.com/lpilz) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) - [@subham103](https://github.com/subham103) - [@taiju271](https://github.com/taiju271) -- [@tassoevan](https://github.com/tassoevan) - [@wolbernd](https://github.com/wolbernd) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.1.3 `2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -12028,17 +11951,17 @@ - Allowing blocking a user on channels ([#17406](https://github.com/RocketChat/Rocket.Chat/pull/17406)) -- Bot Agents not being able to get Omnichannel Inquiries ([#17404](https://github.com/RocketChat/Rocket.Chat/pull/17404) by [@renatobecker](https://github.com/renatobecker)) +- Bot Agents not being able to get Omnichannel Inquiries ([#17404](https://github.com/RocketChat/Rocket.Chat/pull/17404)) - Empty Incoming webhook script field ([#17422](https://github.com/RocketChat/Rocket.Chat/pull/17422)) -- LDAP error when trying to add room with spaces in the name ([#17453](https://github.com/RocketChat/Rocket.Chat/pull/17453) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP error when trying to add room with spaces in the name ([#17453](https://github.com/RocketChat/Rocket.Chat/pull/17453)) - LDAP Sync error ([#17417](https://github.com/RocketChat/Rocket.Chat/pull/17417) by [@fastrde](https://github.com/fastrde)) -- New user added by admin doesn't receive random password email ([#17249](https://github.com/RocketChat/Rocket.Chat/pull/17249) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- New user added by admin doesn't receive random password email ([#17249](https://github.com/RocketChat/Rocket.Chat/pull/17249)) -- Omnichannel room info panel opening whenever a message is sent ([#17348](https://github.com/RocketChat/Rocket.Chat/pull/17348) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel room info panel opening whenever a message is sent ([#17348](https://github.com/RocketChat/Rocket.Chat/pull/17348)) - Web Client memory leak caused by the Emoji rendering ([#17320](https://github.com/RocketChat/Rocket.Chat/pull/17320)) @@ -12050,19 +11973,19 @@ - Regression: Fix mem usage with more than one argument ([#17391](https://github.com/RocketChat/Rocket.Chat/pull/17391)) -- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@renatobecker](https://github.com/renatobecker)) +- Release 3.1.2 ([#17454](https://github.com/RocketChat/Rocket.Chat/pull/17454) by [@fastrde](https://github.com/fastrde)) ### 👩‍💻👨‍💻 Contributors 😍 - [@fastrde](https://github.com/fastrde) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.1.1 @@ -12076,7 +11999,7 @@ ### 🐛 Bug fixes -- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- 404 error when clicking an username ([#17275](https://github.com/RocketChat/Rocket.Chat/pull/17275)) - Avatar on sidebar when showing real names ([#17286](https://github.com/RocketChat/Rocket.Chat/pull/17286)) @@ -12084,11 +12007,11 @@ - Discussions created from inside DMs were not working and some errors accessing recently created rooms ([#17282](https://github.com/RocketChat/Rocket.Chat/pull/17282)) -- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP users lose session on refresh ([#17302](https://github.com/RocketChat/Rocket.Chat/pull/17302)) -- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel SMS / WhatsApp integration errors due to missing location data ([#17288](https://github.com/RocketChat/Rocket.Chat/pull/17288)) -- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML assertion signature enforcement ([#17278](https://github.com/RocketChat/Rocket.Chat/pull/17278)) - User search on directory not working correctly ([#17299](https://github.com/RocketChat/Rocket.Chat/pull/17299)) @@ -12100,15 +12023,12 @@ -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12123,15 +12043,15 @@ ### 🎉 New features -- **ENTERPRISE:** Engagement Dashboard ([#16960](https://github.com/RocketChat/Rocket.Chat/pull/16960) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- **ENTERPRISE:** Engagement Dashboard ([#16960](https://github.com/RocketChat/Rocket.Chat/pull/16960)) -- Add default chat closing tags in Omnichannel departments ([#16859](https://github.com/RocketChat/Rocket.Chat/pull/16859) by [@renatobecker](https://github.com/renatobecker)) +- Add default chat closing tags in Omnichannel departments ([#16859](https://github.com/RocketChat/Rocket.Chat/pull/16859)) - Add omnichannel external frame feature ([#17038](https://github.com/RocketChat/Rocket.Chat/pull/17038)) - Add update method for user bridge ([#17077](https://github.com/RocketChat/Rocket.Chat/pull/17077)) -- Allow to set default department and location sharing on SMS / WhatsApp integration ([#16557](https://github.com/RocketChat/Rocket.Chat/pull/16557) by [@renatobecker](https://github.com/renatobecker)) +- Allow to set default department and location sharing on SMS / WhatsApp integration ([#16557](https://github.com/RocketChat/Rocket.Chat/pull/16557)) - API `users.deactivateIdle` for mass-disabling of idle users ([#16849](https://github.com/RocketChat/Rocket.Chat/pull/16849)) @@ -12147,17 +12067,17 @@ - Home button on sidebar ([#17052](https://github.com/RocketChat/Rocket.Chat/pull/17052)) -- Merge Sort List and View Mode menus and improve its UI/UX ([#17103](https://github.com/RocketChat/Rocket.Chat/pull/17103) by [@tassoevan](https://github.com/tassoevan)) +- Merge Sort List and View Mode menus and improve its UI/UX ([#17103](https://github.com/RocketChat/Rocket.Chat/pull/17103)) ![image](https://user-images.githubusercontent.com/5263975/78036622-e8db2a80-7340-11ea-91d0-65728eabdcb6.png) -- Open the Visitor Info panel automatically when the agent enters an Omnichannel room ([#16496](https://github.com/RocketChat/Rocket.Chat/pull/16496) by [@renatobecker](https://github.com/renatobecker)) +- Open the Visitor Info panel automatically when the agent enters an Omnichannel room ([#16496](https://github.com/RocketChat/Rocket.Chat/pull/16496)) -- Route to get updated roles after a date ([#16610](https://github.com/RocketChat/Rocket.Chat/pull/16610) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ashwaniYDV](https://github.com/ashwaniYDV)) +- Route to get updated roles after a date ([#16610](https://github.com/RocketChat/Rocket.Chat/pull/16610) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - SAML config to allow clock drift ([#16751](https://github.com/RocketChat/Rocket.Chat/pull/16751) by [@localguru](https://github.com/localguru)) -- Save default filters in the Omnichannel Current Chats list ([#16653](https://github.com/RocketChat/Rocket.Chat/pull/16653) by [@renatobecker](https://github.com/renatobecker)) +- Save default filters in the Omnichannel Current Chats list ([#16653](https://github.com/RocketChat/Rocket.Chat/pull/16653)) - Settings to enable E2E encryption for Private and Direct Rooms by default ([#16928](https://github.com/RocketChat/Rocket.Chat/pull/16928)) @@ -12177,11 +12097,11 @@ ### 🚀 Improvements -- Ability to change offline message button link on emails notifications ([#16784](https://github.com/RocketChat/Rocket.Chat/pull/16784) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Ability to change offline message button link on emails notifications ([#16784](https://github.com/RocketChat/Rocket.Chat/pull/16784)) - Accept open formarts of text, spreadsheet, presentation for upload by default ([#16502](https://github.com/RocketChat/Rocket.Chat/pull/16502)) -- Add option to require authentication on user's shield endpoint ([#16845](https://github.com/RocketChat/Rocket.Chat/pull/16845) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add option to require authentication on user's shield endpoint ([#16845](https://github.com/RocketChat/Rocket.Chat/pull/16845)) - Added autofocus to Directory ([#16217](https://github.com/RocketChat/Rocket.Chat/pull/16217) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -12199,23 +12119,23 @@ - Fallback content-type as application/octet-stream for FileSystem uploads ([#16776](https://github.com/RocketChat/Rocket.Chat/pull/16776) by [@georgmu](https://github.com/georgmu)) -- First data load from existing data on engagement dashboard ([#17035](https://github.com/RocketChat/Rocket.Chat/pull/17035) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- First data load from existing data on engagement dashboard ([#17035](https://github.com/RocketChat/Rocket.Chat/pull/17035)) - Increase the push throughput to prevent queuing ([#17194](https://github.com/RocketChat/Rocket.Chat/pull/17194)) -- Omnichannel aggregations performance improvements ([#16755](https://github.com/RocketChat/Rocket.Chat/pull/16755) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Omnichannel aggregations performance improvements ([#16755](https://github.com/RocketChat/Rocket.Chat/pull/16755)) - Removed the 'reply in thread' from thread replies ([#16630](https://github.com/RocketChat/Rocket.Chat/pull/16630) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Rename client-side term "Livechat" to "Omnichannel" ([#16752](https://github.com/RocketChat/Rocket.Chat/pull/16752) by [@renatobecker](https://github.com/renatobecker)) +- Rename client-side term "Livechat" to "Omnichannel" ([#16752](https://github.com/RocketChat/Rocket.Chat/pull/16752)) - Repeat “Reply In Thread” and “Add Reaction” inside the message actions menu ([#17073](https://github.com/RocketChat/Rocket.Chat/pull/17073)) -- Replace the Department select component by an Autocomplete input in Omnichannel UI ([#16669](https://github.com/RocketChat/Rocket.Chat/pull/16669) by [@renatobecker](https://github.com/renatobecker)) +- Replace the Department select component by an Autocomplete input in Omnichannel UI ([#16669](https://github.com/RocketChat/Rocket.Chat/pull/16669)) - Send files over REST API ([#16617](https://github.com/RocketChat/Rocket.Chat/pull/16617)) -- Tab Bar actions reorder ([#17072](https://github.com/RocketChat/Rocket.Chat/pull/17072) by [@tassoevan](https://github.com/tassoevan)) +- Tab Bar actions reorder ([#17072](https://github.com/RocketChat/Rocket.Chat/pull/17072)) - Use `rocket.cat` as default bot If `InternalHubot_Username` is undefined ([#16371](https://github.com/RocketChat/Rocket.Chat/pull/16371) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -12226,7 +12146,7 @@ - "Jump to message" is rendered twice when message is starred. ([#16170](https://github.com/RocketChat/Rocket.Chat/pull/16170) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- `users.setStatus` API was ignoring the user from params when trying to set status of other users ([#16128](https://github.com/RocketChat/Rocket.Chat/pull/16128) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rm-yakovenko](https://github.com/rm-yakovenko)) +- `users.setStatus` API was ignoring the user from params when trying to set status of other users ([#16128](https://github.com/RocketChat/Rocket.Chat/pull/16128) by [@rm-yakovenko](https://github.com/rm-yakovenko)) - Additional scroll when contextual bar is open ([#16667](https://github.com/RocketChat/Rocket.Chat/pull/16667)) @@ -12234,7 +12154,7 @@ - Admins can't sort users by email in directory view ([#15796](https://github.com/RocketChat/Rocket.Chat/pull/15796) by [@sneakson](https://github.com/sneakson)) -- Ancestral departments were not updated when an Omnichannel room is forwarded to another department ([#16958](https://github.com/RocketChat/Rocket.Chat/pull/16958) by [@renatobecker](https://github.com/renatobecker)) +- Ancestral departments were not updated when an Omnichannel room is forwarded to another department ([#16958](https://github.com/RocketChat/Rocket.Chat/pull/16958)) - Block user option inside admin view ([#16626](https://github.com/RocketChat/Rocket.Chat/pull/16626)) @@ -12246,11 +12166,11 @@ - CAS ignores username attribute map ([#16942](https://github.com/RocketChat/Rocket.Chat/pull/16942) by [@pmayer](https://github.com/pmayer)) -- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618) by [@renatobecker](https://github.com/renatobecker)) +- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618)) - Clear unread red line when the ESC key is pressed ([#16668](https://github.com/RocketChat/Rocket.Chat/pull/16668)) -- Color setting editing issues ([#16706](https://github.com/RocketChat/Rocket.Chat/pull/16706) by [@tassoevan](https://github.com/tassoevan)) +- Color setting editing issues ([#16706](https://github.com/RocketChat/Rocket.Chat/pull/16706)) - Custom OAuth Bug ([#16811](https://github.com/RocketChat/Rocket.Chat/pull/16811)) @@ -12284,7 +12204,7 @@ - Invite links counting users already joined ([#16591](https://github.com/RocketChat/Rocket.Chat/pull/16591) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787) by [@renatobecker](https://github.com/renatobecker)) +- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787)) - Language country has been ignored on translation load ([#16757](https://github.com/RocketChat/Rocket.Chat/pull/16757)) @@ -12292,7 +12212,7 @@ - LDAP sync admin action was not syncing existent users ([#16671](https://github.com/RocketChat/Rocket.Chat/pull/16671)) -- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623)) - Login with LinkedIn not mapping name and picture correctly ([#16955](https://github.com/RocketChat/Rocket.Chat/pull/16955)) @@ -12302,11 +12222,11 @@ - Messages doesn't send to Slack via SlackBridge after renaming channel ([#16565](https://github.com/RocketChat/Rocket.Chat/pull/16565) by [@antkaz](https://github.com/antkaz)) -- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132)) -- Omnichannel Inquiry names not being updated when the guest name changes ([#16782](https://github.com/RocketChat/Rocket.Chat/pull/16782) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Inquiry names not being updated when the guest name changes ([#16782](https://github.com/RocketChat/Rocket.Chat/pull/16782)) -- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603)) - Option BYPASS_OPLOG_VALIDATION not working ([#17143](https://github.com/RocketChat/Rocket.Chat/pull/17143)) @@ -12320,23 +12240,23 @@ - Race conditions on/before login ([#16989](https://github.com/RocketChat/Rocket.Chat/pull/16989)) -- Random errors on SAML logout ([#17227](https://github.com/RocketChat/Rocket.Chat/pull/17227) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Random errors on SAML logout ([#17227](https://github.com/RocketChat/Rocket.Chat/pull/17227)) -- Real-time data rendering on Omnichannel room info panel ([#16783](https://github.com/RocketChat/Rocket.Chat/pull/16783) by [@renatobecker](https://github.com/renatobecker)) +- Real-time data rendering on Omnichannel room info panel ([#16783](https://github.com/RocketChat/Rocket.Chat/pull/16783)) - Regression: Jitsi on external window infinite loop ([#16625](https://github.com/RocketChat/Rocket.Chat/pull/16625)) - Regression: New 'app' role with no permissions when updating to 3.0.0 ([#16637](https://github.com/RocketChat/Rocket.Chat/pull/16637)) -- Remove Reply in DM from Omnichannel rooms ([#16957](https://github.com/RocketChat/Rocket.Chat/pull/16957) by [@ashwaniYDV](https://github.com/ashwaniYDV) & [@renatobecker](https://github.com/renatobecker)) +- Remove Reply in DM from Omnichannel rooms ([#16957](https://github.com/RocketChat/Rocket.Chat/pull/16957) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Remove spaces from i18n placeholders to show Personal access token ([#16724](https://github.com/RocketChat/Rocket.Chat/pull/16724) by [@harakiwi1](https://github.com/harakiwi1)) -- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723)) -- Room event emitter passing an invalid parameter when finding removed subscriptions ([#17224](https://github.com/RocketChat/Rocket.Chat/pull/17224) by [@renatobecker](https://github.com/renatobecker)) +- Room event emitter passing an invalid parameter when finding removed subscriptions ([#17224](https://github.com/RocketChat/Rocket.Chat/pull/17224)) -- SAML login errors not showing on UI ([#17219](https://github.com/RocketChat/Rocket.Chat/pull/17219) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML login errors not showing on UI ([#17219](https://github.com/RocketChat/Rocket.Chat/pull/17219)) - Show error message if password and confirm password not equal ([#16247](https://github.com/RocketChat/Rocket.Chat/pull/16247) by [@ashwaniYDV](https://github.com/ashwaniYDV)) @@ -12346,25 +12266,25 @@ - Slash command preview: Wrong item being selected, Horizontal scroll ([#16750](https://github.com/RocketChat/Rocket.Chat/pull/16750)) -- Text formatted to remain within button even on screen resize ([#14136](https://github.com/RocketChat/Rocket.Chat/pull/14136) by [@Rodriq](https://github.com/Rodriq)) +- Text formatted to remain within button even on screen resize ([#14136](https://github.com/RocketChat/Rocket.Chat/pull/14136)) - There is no option to pin a thread message by admin ([#16457](https://github.com/RocketChat/Rocket.Chat/pull/16457) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699)) - UiKit not updating new actionIds received as responses from actions ([#16624](https://github.com/RocketChat/Rocket.Chat/pull/16624)) -- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) - Verification email body ([#17062](https://github.com/RocketChat/Rocket.Chat/pull/17062) by [@GOVINDDIXIT](https://github.com/GOVINDDIXIT)) -- WebRTC echo while talking ([#17145](https://github.com/RocketChat/Rocket.Chat/pull/17145) by [@1rV1N-git](https://github.com/1rV1N-git) & [@ndroo](https://github.com/ndroo) & [@renatobecker](https://github.com/renatobecker)) +- WebRTC echo while talking ([#17145](https://github.com/RocketChat/Rocket.Chat/pull/17145) by [@1rV1N-git](https://github.com/1rV1N-git) & [@ndroo](https://github.com/ndroo)) - When trying to quote messages inside threads the quote would be sent to room instead to the thread ([#16925](https://github.com/RocketChat/Rocket.Chat/pull/16925)) - Wrong message count statistics in Admin info page ([#16680](https://github.com/RocketChat/Rocket.Chat/pull/16680) by [@subham103](https://github.com/subham103)) -- Wrong SAML Response Signature Validation ([#16922](https://github.com/RocketChat/Rocket.Chat/pull/16922) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Wrong SAML Response Signature Validation ([#16922](https://github.com/RocketChat/Rocket.Chat/pull/16922)) - Wrong thread messages display in contextual bar ([#16835](https://github.com/RocketChat/Rocket.Chat/pull/16835) by [@ritwizsinha](https://github.com/ritwizsinha)) @@ -12376,21 +12296,21 @@ - [CHORE] Changed remaining SelectInput's to Select ([#16719](https://github.com/RocketChat/Rocket.Chat/pull/16719)) -- [CHORE] Look for Storybook stories on `app/` too ([#16595](https://github.com/RocketChat/Rocket.Chat/pull/16595) by [@tassoevan](https://github.com/tassoevan)) +- [CHORE] Look for Storybook stories on `app/` too ([#16595](https://github.com/RocketChat/Rocket.Chat/pull/16595)) -- [CHORE] Update snap install instructions ([#16720](https://github.com/RocketChat/Rocket.Chat/pull/16720) by [@tassoevan](https://github.com/tassoevan)) +- [CHORE] Update snap install instructions ([#16720](https://github.com/RocketChat/Rocket.Chat/pull/16720)) - [CHORE] Use REST API for sending audio messages ([#17237](https://github.com/RocketChat/Rocket.Chat/pull/17237)) -- Add an index to the name field for omnichannel department ([#16953](https://github.com/RocketChat/Rocket.Chat/pull/16953) by [@renatobecker](https://github.com/renatobecker)) +- Add an index to the name field for omnichannel department ([#16953](https://github.com/RocketChat/Rocket.Chat/pull/16953)) - Add Enterprise Edition license ([#16801](https://github.com/RocketChat/Rocket.Chat/pull/16801)) - Add lint to `.less` files ([#16893](https://github.com/RocketChat/Rocket.Chat/pull/16893)) -- Add methods to include room types on dashboard ([#16576](https://github.com/RocketChat/Rocket.Chat/pull/16576) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add methods to include room types on dashboard ([#16576](https://github.com/RocketChat/Rocket.Chat/pull/16576)) -- Add new Omnichannel department forwarding callback ([#16779](https://github.com/RocketChat/Rocket.Chat/pull/16779) by [@renatobecker](https://github.com/renatobecker)) +- Add new Omnichannel department forwarding callback ([#16779](https://github.com/RocketChat/Rocket.Chat/pull/16779)) - Add some missing ES translations ([#16120](https://github.com/RocketChat/Rocket.Chat/pull/16120) by [@ivanape](https://github.com/ivanape)) @@ -12432,7 +12352,7 @@ - Fix: Last message of Group DMs not showing the sender ([#17059](https://github.com/RocketChat/Rocket.Chat/pull/17059)) -- Fix: Make the AppLivechatBridge.createMessage works properly as a promise ([#16941](https://github.com/RocketChat/Rocket.Chat/pull/16941) by [@renatobecker](https://github.com/renatobecker)) +- Fix: Make the AppLivechatBridge.createMessage works properly as a promise ([#16941](https://github.com/RocketChat/Rocket.Chat/pull/16941)) - Fix: Missing checks for Troubleshoot > Disable Notifications ([#17155](https://github.com/RocketChat/Rocket.Chat/pull/17155)) @@ -12450,7 +12370,7 @@ - Improve room types usage ([#16753](https://github.com/RocketChat/Rocket.Chat/pull/16753)) -- Improve: Apps-engine E2E tests ([#16781](https://github.com/RocketChat/Rocket.Chat/pull/16781) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Improve: Apps-engine E2E tests ([#16781](https://github.com/RocketChat/Rocket.Chat/pull/16781)) - LingoHub based on develop ([#16837](https://github.com/RocketChat/Rocket.Chat/pull/16837)) @@ -12468,17 +12388,17 @@ - Reduce notifyUser propagation ([#17088](https://github.com/RocketChat/Rocket.Chat/pull/17088)) -- Regression: `users.setStatus` throwing an error if message is empty ([#17036](https://github.com/RocketChat/Rocket.Chat/pull/17036) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: `users.setStatus` throwing an error if message is empty ([#17036](https://github.com/RocketChat/Rocket.Chat/pull/17036)) - Regression: Admin create user button ([#17186](https://github.com/RocketChat/Rocket.Chat/pull/17186)) - Regression: Block users was not possible for 1:1 DMs ([#17105](https://github.com/RocketChat/Rocket.Chat/pull/17105)) -- Regression: Broken Search if users without DM subscriptions are listed ([#17074](https://github.com/RocketChat/Rocket.Chat/pull/17074) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Broken Search if users without DM subscriptions are listed ([#17074](https://github.com/RocketChat/Rocket.Chat/pull/17074)) - Regression: Can't login with 2FA over REST API when 2FA via Email is enabled ([#17128](https://github.com/RocketChat/Rocket.Chat/pull/17128) by [@djorkaeffalexandre](https://github.com/djorkaeffalexandre)) -- Regression: Check Omnichannel routing system before emitting queue changes ([#17087](https://github.com/RocketChat/Rocket.Chat/pull/17087) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Check Omnichannel routing system before emitting queue changes ([#17087](https://github.com/RocketChat/Rocket.Chat/pull/17087)) - Regression: Collapsible elements didn't respect attachment parameter. ([#16994](https://github.com/RocketChat/Rocket.Chat/pull/16994)) @@ -12500,7 +12420,7 @@ - Regression: Fix issue with opening rooms ([#17028](https://github.com/RocketChat/Rocket.Chat/pull/17028)) -- Regression: Fix omnichannel icon missing on sidebar ([#16775](https://github.com/RocketChat/Rocket.Chat/pull/16775) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Fix omnichannel icon missing on sidebar ([#16775](https://github.com/RocketChat/Rocket.Chat/pull/16775)) - Regression: Fix removing user not removing his 1-on-1 DMs ([#17057](https://github.com/RocketChat/Rocket.Chat/pull/17057)) @@ -12512,19 +12432,19 @@ - Regression: Invite links working for group DMs ([#17056](https://github.com/RocketChat/Rocket.Chat/pull/17056)) -- Regression: OmniChannel agent activity monitor was counting time wrongly ([#16979](https://github.com/RocketChat/Rocket.Chat/pull/16979) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: OmniChannel agent activity monitor was counting time wrongly ([#16979](https://github.com/RocketChat/Rocket.Chat/pull/16979)) - Regression: omnichannel manual queued sidebarlist ([#17048](https://github.com/RocketChat/Rocket.Chat/pull/17048)) -- Regression: Omnichannel notification on new conversations displaying incorrect information ([#16346](https://github.com/RocketChat/Rocket.Chat/pull/16346) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Omnichannel notification on new conversations displaying incorrect information ([#16346](https://github.com/RocketChat/Rocket.Chat/pull/16346)) - Regression: Overwrite model functions on EE only when license applied ([#17061](https://github.com/RocketChat/Rocket.Chat/pull/17061)) -- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017)) -- Regression: Remove old and closed Omnichannel inquiries ([#17113](https://github.com/RocketChat/Rocket.Chat/pull/17113) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Remove old and closed Omnichannel inquiries ([#17113](https://github.com/RocketChat/Rocket.Chat/pull/17113)) -- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999)) - Regression: Show upload errors ([#16681](https://github.com/RocketChat/Rocket.Chat/pull/16681)) @@ -12542,7 +12462,7 @@ - Update presence package ([#16786](https://github.com/RocketChat/Rocket.Chat/pull/16786)) -- Upgrade Livechat Widget version to 1.4.0 ([#16950](https://github.com/RocketChat/Rocket.Chat/pull/16950) by [@renatobecker](https://github.com/renatobecker)) +- Upgrade Livechat Widget version to 1.4.0 ([#16950](https://github.com/RocketChat/Rocket.Chat/pull/16950)) @@ -12550,9 +12470,7 @@ - [@1rV1N-git](https://github.com/1rV1N-git) - [@GOVINDDIXIT](https://github.com/GOVINDDIXIT) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Nikhil713](https://github.com/Nikhil713) -- [@Rodriq](https://github.com/Rodriq) - [@aKn1ghtOut](https://github.com/aKn1ghtOut) - [@antkaz](https://github.com/antkaz) - [@aryamanpuri](https://github.com/aryamanpuri) @@ -12571,18 +12489,17 @@ - [@lolimay](https://github.com/lolimay) - [@mrsimpson](https://github.com/mrsimpson) - [@ndroo](https://github.com/ndroo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@pmayer](https://github.com/pmayer) -- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) - [@rm-yakovenko](https://github.com/rm-yakovenko) - [@sneakson](https://github.com/sneakson) - [@subham103](https://github.com/subham103) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@PrajvalRaval](https://github.com/PrajvalRaval) +- [@Rodriq](https://github.com/Rodriq) - [@Sing-Li](https://github.com/Sing-Li) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) @@ -12590,8 +12507,11 @@ - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 3.0.13 `2020-05-11 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -12646,7 +12566,7 @@ ### 🐛 Bug fixes -- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132) by [@renatobecker](https://github.com/renatobecker)) +- Omnichannel endpoint `inquiries.getOne` returning only queued inquiries ([#17132](https://github.com/RocketChat/Rocket.Chat/pull/17132)) - Option BYPASS_OPLOG_VALIDATION not working ([#17143](https://github.com/RocketChat/Rocket.Chat/pull/17143)) @@ -12656,16 +12576,13 @@ - New metric to track oplog queue ([#17142](https://github.com/RocketChat/Rocket.Chat/pull/17142)) -- Release 3.0.11 ([#17148](https://github.com/RocketChat/Rocket.Chat/pull/17148) by [@renatobecker](https://github.com/renatobecker)) +- Release 3.0.11 ([#17148](https://github.com/RocketChat/Rocket.Chat/pull/17148)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12759,17 +12676,14 @@ - Reduce notifyUser propagation ([#17088](https://github.com/RocketChat/Rocket.Chat/pull/17088)) -- Regression: Remove model observe that was used to control the status of the Omnichannel agents ([#17078](https://github.com/RocketChat/Rocket.Chat/pull/17078) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Remove model observe that was used to control the status of the Omnichannel agents ([#17078](https://github.com/RocketChat/Rocket.Chat/pull/17078)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12785,11 +12699,11 @@ 🔍 Minor changes -- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Remove deprecated Omnichannel setting used to fetch the queue data through subscription ([#17017](https://github.com/RocketChat/Rocket.Chat/pull/17017)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@renatobecker](https://github.com/renatobecker) @@ -12804,17 +12718,17 @@ ### 🐛 Bug fixes -- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787) by [@renatobecker](https://github.com/renatobecker)) +- Keeps the agent in the room after accepting a new Omnichannel request ([#16787](https://github.com/RocketChat/Rocket.Chat/pull/16787))
🔍 Minor changes -- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Replace the Omnichannel queue model observe with Stream ([#16999](https://github.com/RocketChat/Rocket.Chat/pull/16999))
-### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@renatobecker](https://github.com/renatobecker) @@ -12853,15 +12767,12 @@ - Integrations page pagination ([#16838](https://github.com/RocketChat/Rocket.Chat/pull/16838)) -- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- TypeError when trying to load avatar of an invalid room. ([#16699](https://github.com/RocketChat/Rocket.Chat/pull/16699)) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.0.3 @@ -12875,7 +12786,7 @@ ### 🐛 Bug fixes -- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618) by [@renatobecker](https://github.com/renatobecker)) +- Check agent status when starting a new conversation with an agent assigned ([#16618](https://github.com/RocketChat/Rocket.Chat/pull/16618)) - Language country has been ignored on translation load ([#16757](https://github.com/RocketChat/Rocket.Chat/pull/16757)) @@ -12883,17 +12794,14 @@ - Manual Register use correct state for determining registered ([#16726](https://github.com/RocketChat/Rocket.Chat/pull/16726)) -- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) - -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) +- Rocket.Chat takes too long to set the username when it fails to send enrollment email ([#16723](https://github.com/RocketChat/Rocket.Chat/pull/16723)) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) # 3.0.2 @@ -12911,19 +12819,16 @@ - ie11 support ([#16682](https://github.com/RocketChat/Rocket.Chat/pull/16682)) -- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603) by [@renatobecker](https://github.com/renatobecker)) - -- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Omnichannel Inquiry queues when removing chats ([#16603](https://github.com/RocketChat/Rocket.Chat/pull/16603)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@renatobecker](https://github.com/renatobecker) +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@gabriellsh](https://github.com/gabriellsh) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) # 3.0.1 @@ -12943,7 +12848,7 @@ - Data converters overriding fields added by apps ([#16639](https://github.com/RocketChat/Rocket.Chat/pull/16639)) -- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- livechat/rooms endpoint not working with big amount of livechats ([#16623](https://github.com/RocketChat/Rocket.Chat/pull/16623)) - Regression: Jitsi on external window infinite loop ([#16625](https://github.com/RocketChat/Rocket.Chat/pull/16625)) @@ -12951,12 +12856,9 @@ - UiKit not updating new actionIds received as responses from actions ([#16624](https://github.com/RocketChat/Rocket.Chat/pull/16624)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -12974,11 +12876,11 @@ - Change apps/icon endpoint to return app's icon and use it to show on Ui Kit modal ([#16522](https://github.com/RocketChat/Rocket.Chat/pull/16522)) -- Filter System messages per room ([#16369](https://github.com/RocketChat/Rocket.Chat/pull/16369) by [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@renatobecker](https://github.com/renatobecker)) +- Filter System messages per room ([#16369](https://github.com/RocketChat/Rocket.Chat/pull/16369) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- Hide system messages ([#16243](https://github.com/RocketChat/Rocket.Chat/pull/16243) by [@mariaeduardacunha](https://github.com/mariaeduardacunha) & [@renatobecker](https://github.com/renatobecker)) +- Hide system messages ([#16243](https://github.com/RocketChat/Rocket.Chat/pull/16243) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- Remove deprecated publications ([#16351](https://github.com/RocketChat/Rocket.Chat/pull/16351) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove deprecated publications ([#16351](https://github.com/RocketChat/Rocket.Chat/pull/16351)) - Removed room counter from sidebar ([#16036](https://github.com/RocketChat/Rocket.Chat/pull/16036)) @@ -12991,9 +12893,9 @@ - Add GUI for customFields in Omnichannel conversations ([#15840](https://github.com/RocketChat/Rocket.Chat/pull/15840) by [@antkaz](https://github.com/antkaz)) -- Button to download admin server info ([#16059](https://github.com/RocketChat/Rocket.Chat/pull/16059) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Button to download admin server info ([#16059](https://github.com/RocketChat/Rocket.Chat/pull/16059)) -- Check the Omnichannel service status per Department ([#16425](https://github.com/RocketChat/Rocket.Chat/pull/16425) by [@lolimay](https://github.com/lolimay) & [@renatobecker](https://github.com/renatobecker)) +- Check the Omnichannel service status per Department ([#16425](https://github.com/RocketChat/Rocket.Chat/pull/16425) by [@lolimay](https://github.com/lolimay)) - Create a user for the Apps during installation ([#15896](https://github.com/RocketChat/Rocket.Chat/pull/15896) by [@Cool-fire](https://github.com/Cool-fire) & [@lolimay](https://github.com/lolimay)) @@ -13003,9 +12905,9 @@ - Setting Top navbar in embedded mode ([#16064](https://github.com/RocketChat/Rocket.Chat/pull/16064)) -- Sort the Omnichannel Chat list according to the user preferences ([#16437](https://github.com/RocketChat/Rocket.Chat/pull/16437) by [@renatobecker](https://github.com/renatobecker)) +- Sort the Omnichannel Chat list according to the user preferences ([#16437](https://github.com/RocketChat/Rocket.Chat/pull/16437)) -- UiKit - Interactive UI elements for Rocket.Chat Apps ([#16048](https://github.com/RocketChat/Rocket.Chat/pull/16048) by [@tassoevan](https://github.com/tassoevan)) +- UiKit - Interactive UI elements for Rocket.Chat Apps ([#16048](https://github.com/RocketChat/Rocket.Chat/pull/16048)) - update on mongo, node and caddy on snap ([#16167](https://github.com/RocketChat/Rocket.Chat/pull/16167)) @@ -13018,7 +12920,7 @@ - Log as info level when Method Rate Limiters are reached ([#16446](https://github.com/RocketChat/Rocket.Chat/pull/16446)) -- Major overhaul on data importers ([#16279](https://github.com/RocketChat/Rocket.Chat/pull/16279) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Major overhaul on data importers ([#16279](https://github.com/RocketChat/Rocket.Chat/pull/16279)) - Prevent "App user" from being deleted by the admin ([#16373](https://github.com/RocketChat/Rocket.Chat/pull/16373) by [@lolimay](https://github.com/lolimay)) @@ -13028,11 +12930,11 @@ - Set the color of the cancel button on modals to #bdbebf for enhanced visibiity ([#15913](https://github.com/RocketChat/Rocket.Chat/pull/15913) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Show more information related to the Omnichannel room closing data ([#16414](https://github.com/RocketChat/Rocket.Chat/pull/16414) by [@renatobecker](https://github.com/renatobecker)) +- Show more information related to the Omnichannel room closing data ([#16414](https://github.com/RocketChat/Rocket.Chat/pull/16414)) - Status Text form validation ([#16121](https://github.com/RocketChat/Rocket.Chat/pull/16121)) -- Update katex version ([#16393](https://github.com/RocketChat/Rocket.Chat/pull/16393) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Update katex version ([#16393](https://github.com/RocketChat/Rocket.Chat/pull/16393)) ### 🐛 Bug fixes @@ -13043,7 +12945,7 @@ - Adding 'lang' tag ([#16375](https://github.com/RocketChat/Rocket.Chat/pull/16375) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- api-bypass-rate-limiter permission was not working ([#16080](https://github.com/RocketChat/Rocket.Chat/pull/16080) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- api-bypass-rate-limiter permission was not working ([#16080](https://github.com/RocketChat/Rocket.Chat/pull/16080)) - App removal was moving logs to the trash collection ([#16362](https://github.com/RocketChat/Rocket.Chat/pull/16362)) @@ -13063,35 +12965,35 @@ - Error when successfully joining room by invite link ([#16571](https://github.com/RocketChat/Rocket.Chat/pull/16571)) -- FileUpload.getBuffer was not working through the Apps-Engine ([#16234](https://github.com/RocketChat/Rocket.Chat/pull/16234) by [@renatobecker](https://github.com/renatobecker)) +- FileUpload.getBuffer was not working through the Apps-Engine ([#16234](https://github.com/RocketChat/Rocket.Chat/pull/16234)) -- Highlight freezing the UI ([#16378](https://github.com/RocketChat/Rocket.Chat/pull/16378) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Highlight freezing the UI ([#16378](https://github.com/RocketChat/Rocket.Chat/pull/16378)) - Integrations admin page ([#16183](https://github.com/RocketChat/Rocket.Chat/pull/16183)) -- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233)) -- Introduce AppLivechatBridge.isOnlineAsync method ([#16467](https://github.com/RocketChat/Rocket.Chat/pull/16467) by [@renatobecker](https://github.com/renatobecker)) +- Introduce AppLivechatBridge.isOnlineAsync method ([#16467](https://github.com/RocketChat/Rocket.Chat/pull/16467)) - Invite links proxy URLs not working when using CDN ([#16581](https://github.com/RocketChat/Rocket.Chat/pull/16581)) -- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176)) -- Livechat Widget version 1.3.1 ([#16580](https://github.com/RocketChat/Rocket.Chat/pull/16580) by [@renatobecker](https://github.com/renatobecker)) +- Livechat Widget version 1.3.1 ([#16580](https://github.com/RocketChat/Rocket.Chat/pull/16580)) - Login change language button ([#16085](https://github.com/RocketChat/Rocket.Chat/pull/16085) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) - Mail Msg Cancel button not closing the flexbar ([#16263](https://github.com/RocketChat/Rocket.Chat/pull/16263) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Missing edited icon in newly created messages ([#16484](https://github.com/RocketChat/Rocket.Chat/pull/16484) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Missing edited icon in newly created messages ([#16484](https://github.com/RocketChat/Rocket.Chat/pull/16484)) -- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433)) - Read Message after receive a message and the room is opened ([#16473](https://github.com/RocketChat/Rocket.Chat/pull/16473)) - Readme Help wanted section ([#16197](https://github.com/RocketChat/Rocket.Chat/pull/16197)) -- Result of get avatar from url can be null ([#16123](https://github.com/RocketChat/Rocket.Chat/pull/16123) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Result of get avatar from url can be null ([#16123](https://github.com/RocketChat/Rocket.Chat/pull/16123)) - Role tags missing - Description field explanation ([#16356](https://github.com/RocketChat/Rocket.Chat/pull/16356) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -13103,7 +13005,7 @@ - Send message with pending messages ([#16474](https://github.com/RocketChat/Rocket.Chat/pull/16474)) -- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147) by [@tassoevan](https://github.com/tassoevan)) +- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147)) - Slack CSV User Importer ([#16253](https://github.com/RocketChat/Rocket.Chat/pull/16253)) @@ -13199,15 +13101,15 @@ - Regression: Update Uikit ([#16515](https://github.com/RocketChat/Rocket.Chat/pull/16515)) -- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444)) - Release 2.4.9 ([#16544](https://github.com/RocketChat/Rocket.Chat/pull/16544)) - Remove users.info being called without need ([#16504](https://github.com/RocketChat/Rocket.Chat/pull/16504)) -- Revert importer streamed uploads ([#16465](https://github.com/RocketChat/Rocket.Chat/pull/16465) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Revert importer streamed uploads ([#16465](https://github.com/RocketChat/Rocket.Chat/pull/16465)) -- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395)) - Send build artifacts to S3 ([#16237](https://github.com/RocketChat/Rocket.Chat/pull/16237)) @@ -13226,29 +13128,29 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Cool-fire](https://github.com/Cool-fire) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@aviral243](https://github.com/aviral243) - [@lolimay](https://github.com/lolimay) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@mrsimpson](https://github.com/mrsimpson) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) -- [@tassoevan](https://github.com/tassoevan) - [@vickyokrm](https://github.com/vickyokrm) ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 2.4.14 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -13262,11 +13164,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -13298,14 +13200,11 @@ ### 🐛 Bug fixes -- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) - -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- users.info endpoint not handling the error if the user does not exist ([#16495](https://github.com/RocketChat/Rocket.Chat/pull/16495)) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@sampaiodiego](https://github.com/sampaiodiego) # 2.4.9 @@ -13366,22 +13265,19 @@ ### 🐛 Bug fixes -- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Option to make a channel default ([#16433](https://github.com/RocketChat/Rocket.Chat/pull/16433))
🔍 Minor changes -- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Release 2.4.7 ([#16444](https://github.com/RocketChat/Rocket.Chat/pull/16444))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ggazzo](https://github.com/ggazzo) # 2.4.6 @@ -13398,18 +13294,15 @@ - Fix index creation for apps_logs collection ([#16401](https://github.com/RocketChat/Rocket.Chat/pull/16401)) -- Release 2.4.6 ([#16402](https://github.com/RocketChat/Rocket.Chat/pull/16402) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Release 2.4.6 ([#16402](https://github.com/RocketChat/Rocket.Chat/pull/16402)) -- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Revert message properties validation ([#16395](https://github.com/RocketChat/Rocket.Chat/pull/16395)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -13472,7 +13365,7 @@ ### 🐛 Bug fixes -- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invite links usage by channel owners/moderators ([#16176](https://github.com/RocketChat/Rocket.Chat/pull/16176)) - Unknown error when sending message if 'Set a User Name to Alias in Message' setting is enabled ([#16347](https://github.com/RocketChat/Rocket.Chat/pull/16347)) @@ -13480,16 +13373,13 @@ 🔍 Minor changes -- Release 2.4.3 ([#16358](https://github.com/RocketChat/Rocket.Chat/pull/16358) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Release 2.4.3 ([#16358](https://github.com/RocketChat/Rocket.Chat/pull/16358)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@sampaiodiego](https://github.com/sampaiodiego) # 2.4.2 @@ -13503,9 +13393,9 @@ ### 🐛 Bug fixes -- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Integrations list without pagination and outgoing integration creation ([#16233](https://github.com/RocketChat/Rocket.Chat/pull/16233)) -- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147) by [@tassoevan](https://github.com/tassoevan)) +- Setup Wizard inputs and Admin Settings ([#16147](https://github.com/RocketChat/Rocket.Chat/pull/16147)) - Slack CSV User Importer ([#16253](https://github.com/RocketChat/Rocket.Chat/pull/16253)) @@ -13515,19 +13405,16 @@ 🔍 Minor changes -- Release 2.4.2 ([#16274](https://github.com/RocketChat/Rocket.Chat/pull/16274) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- Release 2.4.2 ([#16274](https://github.com/RocketChat/Rocket.Chat/pull/16274)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 2.4.1 `2020-01-10 · 3 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` @@ -13575,117 +13462,117 @@ ### 🎉 New features -- Apps-Engine event for when a livechat room is closed ([#15837](https://github.com/RocketChat/Rocket.Chat/pull/15837) by [@lolimay](https://github.com/lolimay) & [@renatobecker](https://github.com/renatobecker)) +- Apps-Engine event for when a livechat room is closed ([#15837](https://github.com/RocketChat/Rocket.Chat/pull/15837) by [@lolimay](https://github.com/lolimay)) - Do not print emails in console on production mode ([#15928](https://github.com/RocketChat/Rocket.Chat/pull/15928)) -- Invite links: share a link to invite users ([#15933](https://github.com/RocketChat/Rocket.Chat/pull/15933) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invite links: share a link to invite users ([#15933](https://github.com/RocketChat/Rocket.Chat/pull/15933)) - Logout other clients when changing password ([#15927](https://github.com/RocketChat/Rocket.Chat/pull/15927)) ### 🚀 Improvements -- Add deprecate warning in some unused publications ([#15935](https://github.com/RocketChat/Rocket.Chat/pull/15935) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add deprecate warning in some unused publications ([#15935](https://github.com/RocketChat/Rocket.Chat/pull/15935)) -- Livechat realtime dashboard ([#15792](https://github.com/RocketChat/Rocket.Chat/pull/15792) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Livechat realtime dashboard ([#15792](https://github.com/RocketChat/Rocket.Chat/pull/15792)) - Move 'Reply in Thread' button from menu to message actions ([#15685](https://github.com/RocketChat/Rocket.Chat/pull/15685) by [@antkaz](https://github.com/antkaz)) -- Notify logged agents when their departments change ([#16033](https://github.com/RocketChat/Rocket.Chat/pull/16033) by [@renatobecker](https://github.com/renatobecker)) +- Notify logged agents when their departments change ([#16033](https://github.com/RocketChat/Rocket.Chat/pull/16033)) -- Replace adminRooms publication by REST ([#15948](https://github.com/RocketChat/Rocket.Chat/pull/15948) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace adminRooms publication by REST ([#15948](https://github.com/RocketChat/Rocket.Chat/pull/15948)) -- Replace customSounds publication by REST ([#15907](https://github.com/RocketChat/Rocket.Chat/pull/15907) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace customSounds publication by REST ([#15907](https://github.com/RocketChat/Rocket.Chat/pull/15907)) -- Replace discussionsOfARoom publication by REST ([#15908](https://github.com/RocketChat/Rocket.Chat/pull/15908) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace discussionsOfARoom publication by REST ([#15908](https://github.com/RocketChat/Rocket.Chat/pull/15908)) -- Replace forgotten livechat:departmentAgents subscriptions ([#15970](https://github.com/RocketChat/Rocket.Chat/pull/15970) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace forgotten livechat:departmentAgents subscriptions ([#15970](https://github.com/RocketChat/Rocket.Chat/pull/15970)) -- Replace fullEmojiData publication by REST ([#15901](https://github.com/RocketChat/Rocket.Chat/pull/15901) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace fullEmojiData publication by REST ([#15901](https://github.com/RocketChat/Rocket.Chat/pull/15901)) -- Replace fullUserData publication by REST ([#15650](https://github.com/RocketChat/Rocket.Chat/pull/15650) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace fullUserData publication by REST ([#15650](https://github.com/RocketChat/Rocket.Chat/pull/15650)) -- Replace fullUserStatusData publication by REST ([#15942](https://github.com/RocketChat/Rocket.Chat/pull/15942) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace fullUserStatusData publication by REST ([#15942](https://github.com/RocketChat/Rocket.Chat/pull/15942)) -- Replace integrations and integrationHistory publications by REST ([#15885](https://github.com/RocketChat/Rocket.Chat/pull/15885) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace integrations and integrationHistory publications by REST ([#15885](https://github.com/RocketChat/Rocket.Chat/pull/15885)) -- Replace livechat:customFields to REST ([#15496](https://github.com/RocketChat/Rocket.Chat/pull/15496) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace livechat:customFields to REST ([#15496](https://github.com/RocketChat/Rocket.Chat/pull/15496)) -- Replace livechat:inquiry publication by REST and Streamer ([#15977](https://github.com/RocketChat/Rocket.Chat/pull/15977) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace livechat:inquiry publication by REST and Streamer ([#15977](https://github.com/RocketChat/Rocket.Chat/pull/15977)) -- Replace livechat:managers publication by REST ([#15944](https://github.com/RocketChat/Rocket.Chat/pull/15944) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:managers publication by REST ([#15944](https://github.com/RocketChat/Rocket.Chat/pull/15944)) -- Replace livechat:officeHour publication to REST ([#15503](https://github.com/RocketChat/Rocket.Chat/pull/15503) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:officeHour publication to REST ([#15503](https://github.com/RocketChat/Rocket.Chat/pull/15503)) -- Replace livechat:queue subscription ([#15612](https://github.com/RocketChat/Rocket.Chat/pull/15612) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace livechat:queue subscription ([#15612](https://github.com/RocketChat/Rocket.Chat/pull/15612)) -- Replace livechat:rooms publication by REST ([#15968](https://github.com/RocketChat/Rocket.Chat/pull/15968) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:rooms publication by REST ([#15968](https://github.com/RocketChat/Rocket.Chat/pull/15968)) -- Replace livechat:visitorHistory publication by REST ([#15943](https://github.com/RocketChat/Rocket.Chat/pull/15943) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace livechat:visitorHistory publication by REST ([#15943](https://github.com/RocketChat/Rocket.Chat/pull/15943)) -- Replace oauth publications by REST ([#15878](https://github.com/RocketChat/Rocket.Chat/pull/15878) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace oauth publications by REST ([#15878](https://github.com/RocketChat/Rocket.Chat/pull/15878)) -- Replace roles publication by REST ([#15910](https://github.com/RocketChat/Rocket.Chat/pull/15910) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace roles publication by REST ([#15910](https://github.com/RocketChat/Rocket.Chat/pull/15910)) -- Replace stdout publication by REST ([#16004](https://github.com/RocketChat/Rocket.Chat/pull/16004) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace stdout publication by REST ([#16004](https://github.com/RocketChat/Rocket.Chat/pull/16004)) -- Replace userAutocomplete publication by REST ([#15956](https://github.com/RocketChat/Rocket.Chat/pull/15956) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace userAutocomplete publication by REST ([#15956](https://github.com/RocketChat/Rocket.Chat/pull/15956)) -- Replace userData subscriptions by REST ([#15916](https://github.com/RocketChat/Rocket.Chat/pull/15916) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace userData subscriptions by REST ([#15916](https://github.com/RocketChat/Rocket.Chat/pull/15916)) -- Replace webdavAccounts publication by REST ([#15926](https://github.com/RocketChat/Rocket.Chat/pull/15926) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace webdavAccounts publication by REST ([#15926](https://github.com/RocketChat/Rocket.Chat/pull/15926)) -- Sorting on livechat analytics queries were wrong ([#16021](https://github.com/RocketChat/Rocket.Chat/pull/16021) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Sorting on livechat analytics queries were wrong ([#16021](https://github.com/RocketChat/Rocket.Chat/pull/16021)) - Update ui for Roles field ([#15888](https://github.com/RocketChat/Rocket.Chat/pull/15888) by [@antkaz](https://github.com/antkaz)) -- Validate user identity on send message process ([#15887](https://github.com/RocketChat/Rocket.Chat/pull/15887) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Validate user identity on send message process ([#15887](https://github.com/RocketChat/Rocket.Chat/pull/15887)) ### 🐛 Bug fixes - Add time format for latest message on the sidebar ([#15930](https://github.com/RocketChat/Rocket.Chat/pull/15930) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Added Join button to Read Only rooms. ([#16016](https://github.com/RocketChat/Rocket.Chat/pull/16016) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Added Join button to Read Only rooms. ([#16016](https://github.com/RocketChat/Rocket.Chat/pull/16016)) - Admin menu not showing after renamed integration permissions ([#15937](https://github.com/RocketChat/Rocket.Chat/pull/15937) by [@n-se](https://github.com/n-se)) -- Admin Setting descriptions and Storybook ([#15994](https://github.com/RocketChat/Rocket.Chat/pull/15994) by [@tassoevan](https://github.com/tassoevan)) +- Admin Setting descriptions and Storybook ([#15994](https://github.com/RocketChat/Rocket.Chat/pull/15994)) -- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934) by [@tassoevan](https://github.com/tassoevan)) +- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934)) - Auto load image user preference ([#15895](https://github.com/RocketChat/Rocket.Chat/pull/15895)) - Changed renderMessage priority, fixed Katex on/off setting ([#16012](https://github.com/RocketChat/Rocket.Chat/pull/16012)) -- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898) by [@renatobecker](https://github.com/renatobecker)) +- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898)) - Don't throw an error when a message is prevented from apps engine ([#15850](https://github.com/RocketChat/Rocket.Chat/pull/15850) by [@wreiske](https://github.com/wreiske)) -- Dropzone being stuck when dragging to thread ([#16006](https://github.com/RocketChat/Rocket.Chat/pull/16006) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Dropzone being stuck when dragging to thread ([#16006](https://github.com/RocketChat/Rocket.Chat/pull/16006)) -- Empty security section when 2fa is disabled ([#16009](https://github.com/RocketChat/Rocket.Chat/pull/16009) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Empty security section when 2fa is disabled ([#16009](https://github.com/RocketChat/Rocket.Chat/pull/16009)) - Error of bind environment on user data export ([#15985](https://github.com/RocketChat/Rocket.Chat/pull/15985)) -- Fix sort livechat rooms ([#16001](https://github.com/RocketChat/Rocket.Chat/pull/16001) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix sort livechat rooms ([#16001](https://github.com/RocketChat/Rocket.Chat/pull/16001)) -- Guest's name field missing when forwarding livechat rooms ([#15991](https://github.com/RocketChat/Rocket.Chat/pull/15991) by [@renatobecker](https://github.com/renatobecker)) +- Guest's name field missing when forwarding livechat rooms ([#15991](https://github.com/RocketChat/Rocket.Chat/pull/15991)) - Importer: Variable name appearing instead of it's value ([#16010](https://github.com/RocketChat/Rocket.Chat/pull/16010) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Incorrect translation key on Livechat Appearance template ([#15975](https://github.com/RocketChat/Rocket.Chat/pull/15975) by [@ritwizsinha](https://github.com/ritwizsinha)) -- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957)) - Livechat build without NodeJS installed ([#15903](https://github.com/RocketChat/Rocket.Chat/pull/15903) by [@localguru](https://github.com/localguru)) -- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915) by [@renatobecker](https://github.com/renatobecker)) +- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915)) -- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897) by [@renatobecker](https://github.com/renatobecker)) +- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897)) -- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966) by [@renatobecker](https://github.com/renatobecker)) +- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966)) - Message list scrolling to bottom on reactions ([#16018](https://github.com/RocketChat/Rocket.Chat/pull/16018) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -13697,7 +13584,7 @@ - Server crash on sync with no response ([#15919](https://github.com/RocketChat/Rocket.Chat/pull/15919)) -- Thread Replies in Search ([#15841](https://github.com/RocketChat/Rocket.Chat/pull/15841) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Thread Replies in Search ([#15841](https://github.com/RocketChat/Rocket.Chat/pull/15841)) - width of upload-progress-text ([#16023](https://github.com/RocketChat/Rocket.Chat/pull/16023) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) @@ -13707,7 +13594,7 @@ 🔍 Minor changes -- [CHORE] Replace findOne with findOneById methods (Omnichannel) ([#15894](https://github.com/RocketChat/Rocket.Chat/pull/15894) by [@renatobecker](https://github.com/renatobecker)) +- [CHORE] Replace findOne with findOneById methods (Omnichannel) ([#15894](https://github.com/RocketChat/Rocket.Chat/pull/15894)) - Change migration number 169 <-> 170 ([#15940](https://github.com/RocketChat/Rocket.Chat/pull/15940)) @@ -13733,7 +13620,7 @@ - Regression: Missing button to copy Invite links ([#16084](https://github.com/RocketChat/Rocket.Chat/pull/16084)) -- Regression: Update components ([#16053](https://github.com/RocketChat/Rocket.Chat/pull/16053) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Update components ([#16053](https://github.com/RocketChat/Rocket.Chat/pull/16053)) - Remove unnecessary cron starts ([#15989](https://github.com/RocketChat/Rocket.Chat/pull/15989)) @@ -13749,8 +13636,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@antkaz](https://github.com/antkaz) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@breaking-let](https://github.com/breaking-let) @@ -13759,21 +13644,23 @@ - [@lolimay](https://github.com/lolimay) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@n-se](https://github.com/n-se) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@ritwizsinha](https://github.com/ritwizsinha) -- [@tassoevan](https://github.com/tassoevan) - [@wreiske](https://github.com/wreiske) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 2.3.3 `2020-01-10 · 1 🐛 · 2 👩‍💻👨‍💻` @@ -13803,11 +13690,11 @@ ### 🐛 Bug fixes -- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Invalid Redirect URI on Custom OAuth ([#15957](https://github.com/RocketChat/Rocket.Chat/pull/15957)) -- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966) by [@renatobecker](https://github.com/renatobecker)) +- Livechat Widget version 1.3.0 ([#15966](https://github.com/RocketChat/Rocket.Chat/pull/15966)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@renatobecker](https://github.com/renatobecker) @@ -13825,25 +13712,25 @@ - Admin menu not showing after renamed integration permissions ([#15937](https://github.com/RocketChat/Rocket.Chat/pull/15937) by [@n-se](https://github.com/n-se)) -- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934) by [@tassoevan](https://github.com/tassoevan)) +- Administration UI issues ([#15934](https://github.com/RocketChat/Rocket.Chat/pull/15934)) - Auto load image user preference ([#15895](https://github.com/RocketChat/Rocket.Chat/pull/15895)) -- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898) by [@renatobecker](https://github.com/renatobecker)) +- Default value of the Livechat WebhookUrl setting ([#15898](https://github.com/RocketChat/Rocket.Chat/pull/15898)) -- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915) by [@renatobecker](https://github.com/renatobecker)) +- Livechat permissions being overwrite on server restart ([#15915](https://github.com/RocketChat/Rocket.Chat/pull/15915)) -- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897) by [@renatobecker](https://github.com/renatobecker)) +- Livechat triggers not firing ([#15897](https://github.com/RocketChat/Rocket.Chat/pull/15897)) ### 👩‍💻👨‍💻 Contributors 😍 - [@n-se](https://github.com/n-se) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) +- [@tassoevan](https://github.com/tassoevan) # 2.3.0 `2019-11-27 · 13 🎉 · 17 🚀 · 26 🐛 · 17 🔍 · 17 👩‍💻👨‍💻` @@ -13856,27 +13743,27 @@ ### 🎉 New features -- Add a new stream to emit and listen room data events ([#15770](https://github.com/RocketChat/Rocket.Chat/pull/15770) by [@renatobecker](https://github.com/renatobecker)) +- Add a new stream to emit and listen room data events ([#15770](https://github.com/RocketChat/Rocket.Chat/pull/15770)) -- Add ability to users reset their own E2E key ([#15777](https://github.com/RocketChat/Rocket.Chat/pull/15777) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Add ability to users reset their own E2E key ([#15777](https://github.com/RocketChat/Rocket.Chat/pull/15777)) - add delete-own-message permission ([#15512](https://github.com/RocketChat/Rocket.Chat/pull/15512)) -- Add forms to view and edit Livechat agents info ([#15703](https://github.com/RocketChat/Rocket.Chat/pull/15703) by [@renatobecker](https://github.com/renatobecker)) +- Add forms to view and edit Livechat agents info ([#15703](https://github.com/RocketChat/Rocket.Chat/pull/15703)) -- Allow Regexes on SAML user field mapping ([#15743](https://github.com/RocketChat/Rocket.Chat/pull/15743) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Allow Regexes on SAML user field mapping ([#15743](https://github.com/RocketChat/Rocket.Chat/pull/15743)) -- Livechat analytics ([#15230](https://github.com/RocketChat/Rocket.Chat/pull/15230) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Livechat analytics ([#15230](https://github.com/RocketChat/Rocket.Chat/pull/15230)) -- Livechat analytics functions ([#15666](https://github.com/RocketChat/Rocket.Chat/pull/15666) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Livechat analytics functions ([#15666](https://github.com/RocketChat/Rocket.Chat/pull/15666)) -- Notify users when their email address change ([#15828](https://github.com/RocketChat/Rocket.Chat/pull/15828) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Notify users when their email address change ([#15828](https://github.com/RocketChat/Rocket.Chat/pull/15828)) -- Option for admins to set a random password to a user ([#15818](https://github.com/RocketChat/Rocket.Chat/pull/15818) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Option for admins to set a random password to a user ([#15818](https://github.com/RocketChat/Rocket.Chat/pull/15818)) -- Option on livechat departments to ensure a chat has tags before closing ([#15752](https://github.com/RocketChat/Rocket.Chat/pull/15752) by [@renatobecker](https://github.com/renatobecker)) +- Option on livechat departments to ensure a chat has tags before closing ([#15752](https://github.com/RocketChat/Rocket.Chat/pull/15752)) -- SAML login without popup windows ([#15836](https://github.com/RocketChat/Rocket.Chat/pull/15836) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML login without popup windows ([#15836](https://github.com/RocketChat/Rocket.Chat/pull/15836)) - Setting to dismiss desktop notification only after interaction ([#14807](https://github.com/RocketChat/Rocket.Chat/pull/14807) by [@mpdbl](https://github.com/mpdbl)) @@ -13885,50 +13772,50 @@ ### 🚀 Improvements -- Add more fields to iframe integration event `unread-changed-by-subscription` ([#15786](https://github.com/RocketChat/Rocket.Chat/pull/15786) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add more fields to iframe integration event `unread-changed-by-subscription` ([#15786](https://github.com/RocketChat/Rocket.Chat/pull/15786)) -- Administration UI - React and Fuselage components ([#15452](https://github.com/RocketChat/Rocket.Chat/pull/15452) by [@tassoevan](https://github.com/tassoevan)) +- Administration UI - React and Fuselage components ([#15452](https://github.com/RocketChat/Rocket.Chat/pull/15452)) -- Allow dragging of images and text from browsers ([#15691](https://github.com/RocketChat/Rocket.Chat/pull/15691) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@tassoevan](https://github.com/tassoevan)) +- Allow dragging of images and text from browsers ([#15691](https://github.com/RocketChat/Rocket.Chat/pull/15691)) -- dynamic import livechat views ([#15775](https://github.com/RocketChat/Rocket.Chat/pull/15775) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- dynamic import livechat views ([#15775](https://github.com/RocketChat/Rocket.Chat/pull/15775)) -- Lazyload Chart.js ([#15764](https://github.com/RocketChat/Rocket.Chat/pull/15764) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Lazyload Chart.js ([#15764](https://github.com/RocketChat/Rocket.Chat/pull/15764)) -- Lazyload qrcode lib ([#15741](https://github.com/RocketChat/Rocket.Chat/pull/15741) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Lazyload qrcode lib ([#15741](https://github.com/RocketChat/Rocket.Chat/pull/15741)) - Make push notification batchsize and interval configurable ([#15804](https://github.com/RocketChat/Rocket.Chat/pull/15804) by [@Exordian](https://github.com/Exordian)) -- Remove "EmojiCustom" unused subscription ([#15658](https://github.com/RocketChat/Rocket.Chat/pull/15658) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove "EmojiCustom" unused subscription ([#15658](https://github.com/RocketChat/Rocket.Chat/pull/15658)) - remove computations inside messageAttachment ([#15716](https://github.com/RocketChat/Rocket.Chat/pull/15716)) -- Replace livechat:departmentAgents subscription to REST ([#15529](https://github.com/RocketChat/Rocket.Chat/pull/15529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:departmentAgents subscription to REST ([#15529](https://github.com/RocketChat/Rocket.Chat/pull/15529)) -- Replace livechat:externalMessages publication by REST ([#15643](https://github.com/RocketChat/Rocket.Chat/pull/15643) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:externalMessages publication by REST ([#15643](https://github.com/RocketChat/Rocket.Chat/pull/15643)) -- Replace livechat:pagesvisited publication by REST ([#15629](https://github.com/RocketChat/Rocket.Chat/pull/15629) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:pagesvisited publication by REST ([#15629](https://github.com/RocketChat/Rocket.Chat/pull/15629)) -- Replace livechat:visitorInfo publication by REST ([#15639](https://github.com/RocketChat/Rocket.Chat/pull/15639) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace livechat:visitorInfo publication by REST ([#15639](https://github.com/RocketChat/Rocket.Chat/pull/15639)) -- Replace personalAccessTokens publication by REST ([#15644](https://github.com/RocketChat/Rocket.Chat/pull/15644) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace personalAccessTokens publication by REST ([#15644](https://github.com/RocketChat/Rocket.Chat/pull/15644)) -- Replace snippetedMessage publication by REST ([#15679](https://github.com/RocketChat/Rocket.Chat/pull/15679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Replace snippetedMessage publication by REST ([#15679](https://github.com/RocketChat/Rocket.Chat/pull/15679)) -- Replace snipptedMessages publication by REST ([#15678](https://github.com/RocketChat/Rocket.Chat/pull/15678) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Replace snipptedMessages publication by REST ([#15678](https://github.com/RocketChat/Rocket.Chat/pull/15678)) - Unfollow own threads ([#15740](https://github.com/RocketChat/Rocket.Chat/pull/15740)) ### 🐛 Bug fixes -- Add button to reset.css ([#15773](https://github.com/RocketChat/Rocket.Chat/pull/15773) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Add button to reset.css ([#15773](https://github.com/RocketChat/Rocket.Chat/pull/15773)) -- Add livechat agents into departments ([#15732](https://github.com/RocketChat/Rocket.Chat/pull/15732) by [@renatobecker](https://github.com/renatobecker)) +- Add livechat agents into departments ([#15732](https://github.com/RocketChat/Rocket.Chat/pull/15732)) -- Apply server side filters on Livechat lists ([#15717](https://github.com/RocketChat/Rocket.Chat/pull/15717) by [@renatobecker](https://github.com/renatobecker)) +- Apply server side filters on Livechat lists ([#15717](https://github.com/RocketChat/Rocket.Chat/pull/15717)) -- Block Show_Setup_Wizard Option ([#15623](https://github.com/RocketChat/Rocket.Chat/pull/15623) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Block Show_Setup_Wizard Option ([#15623](https://github.com/RocketChat/Rocket.Chat/pull/15623)) - Changed cmsPage Style ([#15632](https://github.com/RocketChat/Rocket.Chat/pull/15632)) @@ -13936,59 +13823,59 @@ - Duplicate label 'Hide Avatars' in accounts ([#15694](https://github.com/RocketChat/Rocket.Chat/pull/15694) by [@rajvaibhavdubey](https://github.com/rajvaibhavdubey)) -- Edit in thread ([#15640](https://github.com/RocketChat/Rocket.Chat/pull/15640) by [@tassoevan](https://github.com/tassoevan)) +- Edit in thread ([#15640](https://github.com/RocketChat/Rocket.Chat/pull/15640)) -- Error when exporting user data ([#15654](https://github.com/RocketChat/Rocket.Chat/pull/15654) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Error when exporting user data ([#15654](https://github.com/RocketChat/Rocket.Chat/pull/15654)) -- Forward Livechat UI and the related permissions ([#15718](https://github.com/RocketChat/Rocket.Chat/pull/15718) by [@renatobecker](https://github.com/renatobecker)) +- Forward Livechat UI and the related permissions ([#15718](https://github.com/RocketChat/Rocket.Chat/pull/15718)) -- Ignore file uploads from message box if text/plain content is being pasted ([#15631](https://github.com/RocketChat/Rocket.Chat/pull/15631) by [@tassoevan](https://github.com/tassoevan)) +- Ignore file uploads from message box if text/plain content is being pasted ([#15631](https://github.com/RocketChat/Rocket.Chat/pull/15631)) -- line-height to show entire letters ([#15581](https://github.com/RocketChat/Rocket.Chat/pull/15581) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@nstseek](https://github.com/nstseek)) +- line-height to show entire letters ([#15581](https://github.com/RocketChat/Rocket.Chat/pull/15581) by [@nstseek](https://github.com/nstseek)) -- Livechat transfer history messages ([#15780](https://github.com/RocketChat/Rocket.Chat/pull/15780) by [@renatobecker](https://github.com/renatobecker)) +- Livechat transfer history messages ([#15780](https://github.com/RocketChat/Rocket.Chat/pull/15780)) - Livechat webhook broken when sending an image ([#15699](https://github.com/RocketChat/Rocket.Chat/pull/15699) by [@tatosjb](https://github.com/tatosjb)) -- Mentions before blockquote ([#15774](https://github.com/RocketChat/Rocket.Chat/pull/15774) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Mentions before blockquote ([#15774](https://github.com/RocketChat/Rocket.Chat/pull/15774)) - Missing Privacy Policy Agree on register ([#15832](https://github.com/RocketChat/Rocket.Chat/pull/15832)) -- Not valid relative URLs on message attachments ([#15651](https://github.com/RocketChat/Rocket.Chat/pull/15651) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Not valid relative URLs on message attachments ([#15651](https://github.com/RocketChat/Rocket.Chat/pull/15651)) -- Null value at Notifications Preferences tab ([#15638](https://github.com/RocketChat/Rocket.Chat/pull/15638) by [@tassoevan](https://github.com/tassoevan)) +- Null value at Notifications Preferences tab ([#15638](https://github.com/RocketChat/Rocket.Chat/pull/15638)) -- Pasting images on reply as thread ([#15811](https://github.com/RocketChat/Rocket.Chat/pull/15811) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Pasting images on reply as thread ([#15811](https://github.com/RocketChat/Rocket.Chat/pull/15811)) -- Prevent agent last message undefined ([#15809](https://github.com/RocketChat/Rocket.Chat/pull/15809) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Prevent agent last message undefined ([#15809](https://github.com/RocketChat/Rocket.Chat/pull/15809)) - Push: fix notification priority for google (FCM) ([#15803](https://github.com/RocketChat/Rocket.Chat/pull/15803) by [@Exordian](https://github.com/Exordian)) -- REST endpoint `chat.syncMessages` returning an error with deleted messages ([#15824](https://github.com/RocketChat/Rocket.Chat/pull/15824) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint `chat.syncMessages` returning an error with deleted messages ([#15824](https://github.com/RocketChat/Rocket.Chat/pull/15824)) -- Sending messages to livechat rooms without a subscription ([#15707](https://github.com/RocketChat/Rocket.Chat/pull/15707) by [@renatobecker](https://github.com/renatobecker)) +- Sending messages to livechat rooms without a subscription ([#15707](https://github.com/RocketChat/Rocket.Chat/pull/15707)) - Sidebar font color was not respecting theming ([#15745](https://github.com/RocketChat/Rocket.Chat/pull/15745) by [@mariaeduardacunha](https://github.com/mariaeduardacunha)) -- typo on PT-BR translation ([#15645](https://github.com/RocketChat/Rocket.Chat/pull/15645) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- typo on PT-BR translation ([#15645](https://github.com/RocketChat/Rocket.Chat/pull/15645)) -- Use Media Devices API to guess if a microphone is not available ([#15636](https://github.com/RocketChat/Rocket.Chat/pull/15636) by [@tassoevan](https://github.com/tassoevan)) +- Use Media Devices API to guess if a microphone is not available ([#15636](https://github.com/RocketChat/Rocket.Chat/pull/15636))
🔍 Minor changes -- [CHORE] Add lingohub to readme ([#15849](https://github.com/RocketChat/Rocket.Chat/pull/15849) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- [CHORE] Add lingohub to readme ([#15849](https://github.com/RocketChat/Rocket.Chat/pull/15849)) -- [REGRESSION] Add livechat room type to the room's file list ([#15795](https://github.com/RocketChat/Rocket.Chat/pull/15795) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- [REGRESSION] Add livechat room type to the room's file list ([#15795](https://github.com/RocketChat/Rocket.Chat/pull/15795)) -- Fix Livechat duplicated templates error ([#15869](https://github.com/RocketChat/Rocket.Chat/pull/15869) by [@renatobecker](https://github.com/renatobecker)) +- Fix Livechat duplicated templates error ([#15869](https://github.com/RocketChat/Rocket.Chat/pull/15869)) - Fix notification migration ([#15783](https://github.com/RocketChat/Rocket.Chat/pull/15783)) -- Improve LDAP Login Fallback setting description in portuguese ([#15655](https://github.com/RocketChat/Rocket.Chat/pull/15655) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Improve LDAP Login Fallback setting description in portuguese ([#15655](https://github.com/RocketChat/Rocket.Chat/pull/15655)) -- Improvements to random password field on user edit/creation ([#15870](https://github.com/RocketChat/Rocket.Chat/pull/15870) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Improvements to random password field on user edit/creation ([#15870](https://github.com/RocketChat/Rocket.Chat/pull/15870)) - LingoHub based on develop ([#15822](https://github.com/RocketChat/Rocket.Chat/pull/15822)) @@ -14002,11 +13889,11 @@ - Regression: fix admin instances info page ([#15772](https://github.com/RocketChat/Rocket.Chat/pull/15772)) -- Regression: Fix hide avatars in side bar preference ([#15709](https://github.com/RocketChat/Rocket.Chat/pull/15709) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix hide avatars in side bar preference ([#15709](https://github.com/RocketChat/Rocket.Chat/pull/15709)) - Regression: messageAttachments inside messageAttachments not receiving settings ([#15733](https://github.com/RocketChat/Rocket.Chat/pull/15733)) -- Remove unused permission to reset users' E2E key ([#15860](https://github.com/RocketChat/Rocket.Chat/pull/15860) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Remove unused permission to reset users' E2E key ([#15860](https://github.com/RocketChat/Rocket.Chat/pull/15860)) - Remove yarn.lock ([#15689](https://github.com/RocketChat/Rocket.Chat/pull/15689)) @@ -14017,25 +13904,25 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Exordian](https://github.com/Exordian) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@mariaeduardacunha](https://github.com/mariaeduardacunha) - [@mpdbl](https://github.com/mpdbl) - [@nstseek](https://github.com/nstseek) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@rajvaibhavdubey](https://github.com/rajvaibhavdubey) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) +- [@rajvaibhavdubey](https://github.com/rajvaibhavdubey) - [@tatosjb](https://github.com/tatosjb) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@gabriellsh](https://github.com/gabriellsh) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 2.2.1 `2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14068,68 +13955,68 @@ ### 🎉 New features -- Accept GIFs and SVGs for Avatars converting them to PNG and keep transparency of PNGs ([#11385](https://github.com/RocketChat/Rocket.Chat/pull/11385) by [@tassoevan](https://github.com/tassoevan)) +- Accept GIFs and SVGs for Avatars converting them to PNG and keep transparency of PNGs ([#11385](https://github.com/RocketChat/Rocket.Chat/pull/11385)) -- Add new Livechat appearance setting to set the conversation finished message ([#15577](https://github.com/RocketChat/Rocket.Chat/pull/15577) by [@renatobecker](https://github.com/renatobecker)) +- Add new Livechat appearance setting to set the conversation finished message ([#15577](https://github.com/RocketChat/Rocket.Chat/pull/15577)) -- Add option to enable X-Frame-options header to avoid loading inside any Iframe ([#14698](https://github.com/RocketChat/Rocket.Chat/pull/14698) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add option to enable X-Frame-options header to avoid loading inside any Iframe ([#14698](https://github.com/RocketChat/Rocket.Chat/pull/14698)) -- Add users.requestDataDownload API endpoint ([#14428](https://github.com/RocketChat/Rocket.Chat/pull/14428) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ubarsaiyan](https://github.com/ubarsaiyan)) +- Add users.requestDataDownload API endpoint ([#14428](https://github.com/RocketChat/Rocket.Chat/pull/14428) by [@Hudell](https://github.com/Hudell) & [@ubarsaiyan](https://github.com/ubarsaiyan)) -- Added file type filter to RoomFiles ([#15289](https://github.com/RocketChat/Rocket.Chat/pull/15289) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@juanpetterson](https://github.com/juanpetterson) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@tassoevan](https://github.com/tassoevan)) +- Added file type filter to RoomFiles ([#15289](https://github.com/RocketChat/Rocket.Chat/pull/15289) by [@juanpetterson](https://github.com/juanpetterson)) -- Assign new Livechat conversations to bot agents first ([#15317](https://github.com/RocketChat/Rocket.Chat/pull/15317) by [@renatobecker](https://github.com/renatobecker)) +- Assign new Livechat conversations to bot agents first ([#15317](https://github.com/RocketChat/Rocket.Chat/pull/15317)) -- Check if agent can receive new livechat conversations when its status is away/idle ([#15451](https://github.com/RocketChat/Rocket.Chat/pull/15451) by [@renatobecker](https://github.com/renatobecker)) +- Check if agent can receive new livechat conversations when its status is away/idle ([#15451](https://github.com/RocketChat/Rocket.Chat/pull/15451)) -- close emoji box using Keyboard Escape key ([#13956](https://github.com/RocketChat/Rocket.Chat/pull/13956) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@mohamedar97](https://github.com/mohamedar97)) +- close emoji box using Keyboard Escape key ([#13956](https://github.com/RocketChat/Rocket.Chat/pull/13956) by [@mohamedar97](https://github.com/mohamedar97)) -- Import DMs from CSV files ([#15534](https://github.com/RocketChat/Rocket.Chat/pull/15534) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Import DMs from CSV files ([#15534](https://github.com/RocketChat/Rocket.Chat/pull/15534)) -- Import SAML language and auto join SAML channels ([#14203](https://github.com/RocketChat/Rocket.Chat/pull/14203) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) & [@unixtam](https://github.com/unixtam)) +- Import SAML language and auto join SAML channels ([#14203](https://github.com/RocketChat/Rocket.Chat/pull/14203) by [@Hudell](https://github.com/Hudell) & [@unixtam](https://github.com/unixtam)) -- Remove all closed Livechat chats ([#13991](https://github.com/RocketChat/Rocket.Chat/pull/13991) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) +- Remove all closed Livechat chats ([#13991](https://github.com/RocketChat/Rocket.Chat/pull/13991) by [@knrt10](https://github.com/knrt10)) -- Separate integration roles ([#13902](https://github.com/RocketChat/Rocket.Chat/pull/13902) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Separate integration roles ([#13902](https://github.com/RocketChat/Rocket.Chat/pull/13902)) - Thread support to apps slashcommands and slashcommand previews ([#15574](https://github.com/RocketChat/Rocket.Chat/pull/15574)) -- Update livechat widget version to 1.2.5 ([#15600](https://github.com/RocketChat/Rocket.Chat/pull/15600) by [@renatobecker](https://github.com/renatobecker)) +- Update livechat widget version to 1.2.5 ([#15600](https://github.com/RocketChat/Rocket.Chat/pull/15600)) ### 🚀 Improvements - Cache hasPermissions ([#15589](https://github.com/RocketChat/Rocket.Chat/pull/15589)) -- Detach React components from Meteor API ([#15482](https://github.com/RocketChat/Rocket.Chat/pull/15482) by [@tassoevan](https://github.com/tassoevan)) +- Detach React components from Meteor API ([#15482](https://github.com/RocketChat/Rocket.Chat/pull/15482)) -- Disable edit visitor's phone number in SMS conversations ([#15593](https://github.com/RocketChat/Rocket.Chat/pull/15593) by [@renatobecker](https://github.com/renatobecker)) +- Disable edit visitor's phone number in SMS conversations ([#15593](https://github.com/RocketChat/Rocket.Chat/pull/15593)) -- Lazyload Katex Package ([#15398](https://github.com/RocketChat/Rocket.Chat/pull/15398) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Lazyload Katex Package ([#15398](https://github.com/RocketChat/Rocket.Chat/pull/15398)) -- Replace `livechat:departments` publication by REST Calls ([#15478](https://github.com/RocketChat/Rocket.Chat/pull/15478) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace `livechat:departments` publication by REST Calls ([#15478](https://github.com/RocketChat/Rocket.Chat/pull/15478)) -- Replace `livechat:triggers` publication by REST calls ([#15507](https://github.com/RocketChat/Rocket.Chat/pull/15507) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace `livechat:triggers` publication by REST calls ([#15507](https://github.com/RocketChat/Rocket.Chat/pull/15507)) -- Replace livechat:agents pub by REST calls ([#15490](https://github.com/RocketChat/Rocket.Chat/pull/15490) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:agents pub by REST calls ([#15490](https://github.com/RocketChat/Rocket.Chat/pull/15490)) -- Replace livechat:appearance pub to REST ([#15510](https://github.com/RocketChat/Rocket.Chat/pull/15510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace livechat:appearance pub to REST ([#15510](https://github.com/RocketChat/Rocket.Chat/pull/15510)) -- Replace livechat:integration publication by REST ([#15607](https://github.com/RocketChat/Rocket.Chat/pull/15607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace livechat:integration publication by REST ([#15607](https://github.com/RocketChat/Rocket.Chat/pull/15607)) -- Replace mentionedMessages publication to REST ([#15540](https://github.com/RocketChat/Rocket.Chat/pull/15540) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace mentionedMessages publication to REST ([#15540](https://github.com/RocketChat/Rocket.Chat/pull/15540)) -- Replace pinned messages subscription ([#15544](https://github.com/RocketChat/Rocket.Chat/pull/15544) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace pinned messages subscription ([#15544](https://github.com/RocketChat/Rocket.Chat/pull/15544)) -- Replace roomFilesWithSearchText subscription ([#15550](https://github.com/RocketChat/Rocket.Chat/pull/15550) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace roomFilesWithSearchText subscription ([#15550](https://github.com/RocketChat/Rocket.Chat/pull/15550)) -- Replace some livechat:rooms subscriptions ([#15532](https://github.com/RocketChat/Rocket.Chat/pull/15532) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Replace some livechat:rooms subscriptions ([#15532](https://github.com/RocketChat/Rocket.Chat/pull/15532)) -- Replace starred messages subscription ([#15548](https://github.com/RocketChat/Rocket.Chat/pull/15548) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Replace starred messages subscription ([#15548](https://github.com/RocketChat/Rocket.Chat/pull/15548)) - Secure cookies when using HTTPS connection ([#15500](https://github.com/RocketChat/Rocket.Chat/pull/15500)) -- Update Fuselage components on SetupWizard ([#15457](https://github.com/RocketChat/Rocket.Chat/pull/15457) by [@tassoevan](https://github.com/tassoevan)) +- Update Fuselage components on SetupWizard ([#15457](https://github.com/RocketChat/Rocket.Chat/pull/15457)) ### 🐛 Bug fixes @@ -14138,13 +14025,13 @@ - Add permissions for slashCommands ([#15525](https://github.com/RocketChat/Rocket.Chat/pull/15525) by [@antkaz](https://github.com/antkaz)) -- Adding "Promise.await" in "livechat/message" endpoint ([#15541](https://github.com/RocketChat/Rocket.Chat/pull/15541) by [@renatobecker](https://github.com/renatobecker) & [@rodrigokamada](https://github.com/rodrigokamada)) +- Adding "Promise.await" in "livechat/message" endpoint ([#15541](https://github.com/RocketChat/Rocket.Chat/pull/15541) by [@rodrigokamada](https://github.com/rodrigokamada)) - adjustments for tooltips to show room name instead of id ([#14084](https://github.com/RocketChat/Rocket.Chat/pull/14084) by [@mohamedar97](https://github.com/mohamedar97)) -- Compact view ([#15416](https://github.com/RocketChat/Rocket.Chat/pull/15416) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Compact view ([#15416](https://github.com/RocketChat/Rocket.Chat/pull/15416)) -- Deny editing visitor's phone number in SMS conversations ([#15602](https://github.com/RocketChat/Rocket.Chat/pull/15602) by [@renatobecker](https://github.com/renatobecker)) +- Deny editing visitor's phone number in SMS conversations ([#15602](https://github.com/RocketChat/Rocket.Chat/pull/15602)) - Dynamic import of JS files were not working correctly ([#15598](https://github.com/RocketChat/Rocket.Chat/pull/15598)) @@ -14154,9 +14041,9 @@ - Fix a typo on Alpha API `e2e.setUserPublicAndPivateKeys` renaming to `e2e.setUserPublicAndPrivateKeys` ([#13334](https://github.com/RocketChat/Rocket.Chat/pull/13334)) -- Incorrect display of the button "Invite users" ([#15594](https://github.com/RocketChat/Rocket.Chat/pull/15594) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Incorrect display of the button "Invite users" ([#15594](https://github.com/RocketChat/Rocket.Chat/pull/15594)) -- Issues saving audio notifications ([#15428](https://github.com/RocketChat/Rocket.Chat/pull/15428) by [@scrivna](https://github.com/scrivna) & [@tassoevan](https://github.com/tassoevan)) +- Issues saving audio notifications ([#15428](https://github.com/RocketChat/Rocket.Chat/pull/15428) by [@scrivna](https://github.com/scrivna)) - Japanese translation for run import ([#15515](https://github.com/RocketChat/Rocket.Chat/pull/15515) by [@yusukeh0710](https://github.com/yusukeh0710)) @@ -14164,9 +14051,9 @@ - Method saveUser is not using password policy ([#15445](https://github.com/RocketChat/Rocket.Chat/pull/15445)) -- Missing ending slash on publicFilePath of fileUpload ([#15506](https://github.com/RocketChat/Rocket.Chat/pull/15506) by [@renatobecker](https://github.com/renatobecker)) +- Missing ending slash on publicFilePath of fileUpload ([#15506](https://github.com/RocketChat/Rocket.Chat/pull/15506)) -- Promise await for sendMessage in livechat/messages endpoint ([#15460](https://github.com/RocketChat/Rocket.Chat/pull/15460) by [@hmagarotto](https://github.com/hmagarotto) & [@renatobecker](https://github.com/renatobecker)) +- Promise await for sendMessage in livechat/messages endpoint ([#15460](https://github.com/RocketChat/Rocket.Chat/pull/15460) by [@hmagarotto](https://github.com/hmagarotto)) - Read Recepts was not working ([#15603](https://github.com/RocketChat/Rocket.Chat/pull/15603)) @@ -14176,11 +14063,11 @@ - Self-XSS in validation functionality ([#15564](https://github.com/RocketChat/Rocket.Chat/pull/15564)) -- Showing announcement back ([#15615](https://github.com/RocketChat/Rocket.Chat/pull/15615) by [@tassoevan](https://github.com/tassoevan)) +- Showing announcement back ([#15615](https://github.com/RocketChat/Rocket.Chat/pull/15615)) - Typo in autotranslate method ([#15344](https://github.com/RocketChat/Rocket.Chat/pull/15344) by [@Montel](https://github.com/Montel)) -- Update apps engine rooms converter to use transformMappedData ([#15546](https://github.com/RocketChat/Rocket.Chat/pull/15546) by [@renatobecker](https://github.com/renatobecker)) +- Update apps engine rooms converter to use transformMappedData ([#15546](https://github.com/RocketChat/Rocket.Chat/pull/15546))
🔍 Minor changes @@ -14188,23 +14075,23 @@ - [CHORE] remove 'bulk-create-c' permission ([#15517](https://github.com/RocketChat/Rocket.Chat/pull/15517) by [@antkaz](https://github.com/antkaz)) -- [CHORE] Split logger classes to avoid cyclic dependencies ([#15559](https://github.com/RocketChat/Rocket.Chat/pull/15559) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- [CHORE] Split logger classes to avoid cyclic dependencies ([#15559](https://github.com/RocketChat/Rocket.Chat/pull/15559)) -- [CHORE] Update latest Livechat widget version to 1.2.2 ([#15592](https://github.com/RocketChat/Rocket.Chat/pull/15592) by [@renatobecker](https://github.com/renatobecker)) +- [CHORE] Update latest Livechat widget version to 1.2.2 ([#15592](https://github.com/RocketChat/Rocket.Chat/pull/15592)) -- [CHORE] Update latest Livechat widget version to 1.2.4 ([#15596](https://github.com/RocketChat/Rocket.Chat/pull/15596) by [@renatobecker](https://github.com/renatobecker)) +- [CHORE] Update latest Livechat widget version to 1.2.4 ([#15596](https://github.com/RocketChat/Rocket.Chat/pull/15596)) -- [FEATURE] Rest API upload file returns message object ([#13821](https://github.com/RocketChat/Rocket.Chat/pull/13821) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@knrt10](https://github.com/knrt10)) +- [FEATURE] Rest API upload file returns message object ([#13821](https://github.com/RocketChat/Rocket.Chat/pull/13821) by [@knrt10](https://github.com/knrt10)) -- [REGRESSION] Fix remove department from list ([#15591](https://github.com/RocketChat/Rocket.Chat/pull/15591) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- [REGRESSION] Fix remove department from list ([#15591](https://github.com/RocketChat/Rocket.Chat/pull/15591)) -- Chore: Add Client Setup Information to Issue Template ([#15625](https://github.com/RocketChat/Rocket.Chat/pull/15625) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Chore: Add Client Setup Information to Issue Template ([#15625](https://github.com/RocketChat/Rocket.Chat/pull/15625)) - docs: remove rocket chat launcher link ([#15477](https://github.com/RocketChat/Rocket.Chat/pull/15477) by [@RafaelGSS](https://github.com/RafaelGSS)) - LingoHub based on develop ([#15487](https://github.com/RocketChat/Rocket.Chat/pull/15487)) -- Livechat Issues ([#15473](https://github.com/RocketChat/Rocket.Chat/pull/15473) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Livechat Issues ([#15473](https://github.com/RocketChat/Rocket.Chat/pull/15473)) - Merge master into develop ([#15680](https://github.com/RocketChat/Rocket.Chat/pull/15680) by [@knrt10](https://github.com/knrt10)) @@ -14212,15 +14099,15 @@ - Merge master into develop & Set version to 2.2.0-develop ([#15469](https://github.com/RocketChat/Rocket.Chat/pull/15469)) -- Move publication deprecation warnings ([#15676](https://github.com/RocketChat/Rocket.Chat/pull/15676) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move publication deprecation warnings ([#15676](https://github.com/RocketChat/Rocket.Chat/pull/15676)) - New: Add dev dependency david badge to README ([#9058](https://github.com/RocketChat/Rocket.Chat/pull/9058) by [@robbyoconnor](https://github.com/robbyoconnor)) - Regression: add stdout publication back ([#15614](https://github.com/RocketChat/Rocket.Chat/pull/15614)) -- Regression: AppRoomsConverter on Livechat rooms ([#15646](https://github.com/RocketChat/Rocket.Chat/pull/15646) by [@renatobecker](https://github.com/renatobecker)) +- Regression: AppRoomsConverter on Livechat rooms ([#15646](https://github.com/RocketChat/Rocket.Chat/pull/15646)) -- Regression: Fix broken message formatting box ([#15599](https://github.com/RocketChat/Rocket.Chat/pull/15599) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Fix broken message formatting box ([#15599](https://github.com/RocketChat/Rocket.Chat/pull/15599)) - Regression: Fix package-lock.json ([#15561](https://github.com/RocketChat/Rocket.Chat/pull/15561)) @@ -14228,9 +14115,9 @@ - Regression: hasPermission ignoring subscription roles ([#15652](https://github.com/RocketChat/Rocket.Chat/pull/15652)) -- Regression: Move import to avoid circular dependencies ([#15628](https://github.com/RocketChat/Rocket.Chat/pull/15628) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Move import to avoid circular dependencies ([#15628](https://github.com/RocketChat/Rocket.Chat/pull/15628)) -- Regression: Remove reference to obsolete template helper ([#15675](https://github.com/RocketChat/Rocket.Chat/pull/15675) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove reference to obsolete template helper ([#15675](https://github.com/RocketChat/Rocket.Chat/pull/15675)) - Release 2.1.2 ([#15667](https://github.com/RocketChat/Rocket.Chat/pull/15667) by [@knrt10](https://github.com/knrt10)) @@ -14240,42 +14127,42 @@ - Revert fix package-lock.json ([#15563](https://github.com/RocketChat/Rocket.Chat/pull/15563)) -- Updating license term ([#15476](https://github.com/RocketChat/Rocket.Chat/pull/15476) by [@mar-v](https://github.com/mar-v)) +- Updating license term ([#15476](https://github.com/RocketChat/Rocket.Chat/pull/15476))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Montel](https://github.com/Montel) - [@RafaelGSS](https://github.com/RafaelGSS) - [@antkaz](https://github.com/antkaz) - [@hmagarotto](https://github.com/hmagarotto) - [@juanpetterson](https://github.com/juanpetterson) - [@knrt10](https://github.com/knrt10) -- [@mar-v](https://github.com/mar-v) - [@mohamedar97](https://github.com/mohamedar97) - [@nstseek](https://github.com/nstseek) - [@oguhpereira](https://github.com/oguhpereira) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@robbyoconnor](https://github.com/robbyoconnor) - [@rodrigokamada](https://github.com/rodrigokamada) - [@scrivna](https://github.com/scrivna) -- [@tassoevan](https://github.com/tassoevan) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@unixtam](https://github.com/unixtam) - [@yusukeh0710](https://github.com/yusukeh0710) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@mar-v](https://github.com/mar-v) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 2.1.3 `2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14308,7 +14195,7 @@ ### 🐛 Bug fixes -- Channel Announcements not working ([#14635](https://github.com/RocketChat/Rocket.Chat/pull/14635) by [@knrt10](https://github.com/knrt10) & [@tassoevan](https://github.com/tassoevan)) +- Channel Announcements not working ([#14635](https://github.com/RocketChat/Rocket.Chat/pull/14635) by [@knrt10](https://github.com/knrt10)) - Exception when sending email of messages attachments undefined ([#15657](https://github.com/RocketChat/Rocket.Chat/pull/15657)) @@ -14325,12 +14212,12 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@knrt10](https://github.com/knrt10) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) +- [@tassoevan](https://github.com/tassoevan) # 2.1.1 `2019-10-17 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14368,11 +14255,11 @@ ### 🎉 New features -- Add ability to disable email notifications globally ([#9667](https://github.com/RocketChat/Rocket.Chat/pull/9667) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ferdifly](https://github.com/ferdifly)) +- Add ability to disable email notifications globally ([#9667](https://github.com/RocketChat/Rocket.Chat/pull/9667) by [@ferdifly](https://github.com/ferdifly)) -- Add JWT to uploaded files urls ([#15297](https://github.com/RocketChat/Rocket.Chat/pull/15297) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Add JWT to uploaded files urls ([#15297](https://github.com/RocketChat/Rocket.Chat/pull/15297)) -- Allow file sharing through Twilio(WhatsApp) integration ([#15415](https://github.com/RocketChat/Rocket.Chat/pull/15415) by [@renatobecker](https://github.com/renatobecker)) +- Allow file sharing through Twilio(WhatsApp) integration ([#15415](https://github.com/RocketChat/Rocket.Chat/pull/15415)) - Apps engine Livechat ([#14626](https://github.com/RocketChat/Rocket.Chat/pull/14626)) @@ -14380,32 +14267,32 @@ - Guess a user's name from SAML credentials ([#15240](https://github.com/RocketChat/Rocket.Chat/pull/15240) by [@mrsimpson](https://github.com/mrsimpson)) -- Livechat setting to show/hide Agent Information on the widget ([#15216](https://github.com/RocketChat/Rocket.Chat/pull/15216) by [@renatobecker](https://github.com/renatobecker)) +- Livechat setting to show/hide Agent Information on the widget ([#15216](https://github.com/RocketChat/Rocket.Chat/pull/15216)) -- Only Load CodeMirror code when it is needed ([#15351](https://github.com/RocketChat/Rocket.Chat/pull/15351) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Only Load CodeMirror code when it is needed ([#15351](https://github.com/RocketChat/Rocket.Chat/pull/15351)) - Provide site-url to outgoing integrations ([#15238](https://github.com/RocketChat/Rocket.Chat/pull/15238) by [@mrsimpson](https://github.com/mrsimpson)) -- SAML User Data Mapping ([#15404](https://github.com/RocketChat/Rocket.Chat/pull/15404) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- SAML User Data Mapping ([#15404](https://github.com/RocketChat/Rocket.Chat/pull/15404)) -- Setting to configure SAML context comparison ([#15229](https://github.com/RocketChat/Rocket.Chat/pull/15229) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Setting to configure SAML context comparison ([#15229](https://github.com/RocketChat/Rocket.Chat/pull/15229)) -- Setting to remove message contents from email notifications ([#15406](https://github.com/RocketChat/Rocket.Chat/pull/15406) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Setting to remove message contents from email notifications ([#15406](https://github.com/RocketChat/Rocket.Chat/pull/15406)) -- Validate NotBefore and NotOnOrAfter SAML assertions ([#15226](https://github.com/RocketChat/Rocket.Chat/pull/15226) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Validate NotBefore and NotOnOrAfter SAML assertions ([#15226](https://github.com/RocketChat/Rocket.Chat/pull/15226)) ### 🚀 Improvements -- A11y: Buttons, Images, Popups ([#15405](https://github.com/RocketChat/Rocket.Chat/pull/15405) by [@tassoevan](https://github.com/tassoevan)) +- A11y: Buttons, Images, Popups ([#15405](https://github.com/RocketChat/Rocket.Chat/pull/15405)) -- Add CustomSounds.play() helper ([#15256](https://github.com/RocketChat/Rocket.Chat/pull/15256) by [@tassoevan](https://github.com/tassoevan)) +- Add CustomSounds.play() helper ([#15256](https://github.com/RocketChat/Rocket.Chat/pull/15256)) - Add missing indices used by read receipts ([#15316](https://github.com/RocketChat/Rocket.Chat/pull/15316)) -- Add possibility of renaming a discussion ([#15122](https://github.com/RocketChat/Rocket.Chat/pull/15122) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add possibility of renaming a discussion ([#15122](https://github.com/RocketChat/Rocket.Chat/pull/15122)) -- Administration UI ([#15401](https://github.com/RocketChat/Rocket.Chat/pull/15401) by [@tassoevan](https://github.com/tassoevan)) +- Administration UI ([#15401](https://github.com/RocketChat/Rocket.Chat/pull/15401)) - AvatarBlockUnauthenticatedAccess do not call user.find if you dont have to ([#15355](https://github.com/RocketChat/Rocket.Chat/pull/15355)) @@ -14413,42 +14300,42 @@ - improve autolinker flow ([#15340](https://github.com/RocketChat/Rocket.Chat/pull/15340)) -- Make the agents field optional when updating Livechat departments ([#15400](https://github.com/RocketChat/Rocket.Chat/pull/15400) by [@renatobecker](https://github.com/renatobecker)) +- Make the agents field optional when updating Livechat departments ([#15400](https://github.com/RocketChat/Rocket.Chat/pull/15400)) -- Remove global Blaze helpers ([#15414](https://github.com/RocketChat/Rocket.Chat/pull/15414) by [@tassoevan](https://github.com/tassoevan)) +- Remove global Blaze helpers ([#15414](https://github.com/RocketChat/Rocket.Chat/pull/15414)) -- Replace LESS autoprefixer plugin ([#15260](https://github.com/RocketChat/Rocket.Chat/pull/15260) by [@tassoevan](https://github.com/tassoevan)) +- Replace LESS autoprefixer plugin ([#15260](https://github.com/RocketChat/Rocket.Chat/pull/15260)) -- User data export ([#15294](https://github.com/RocketChat/Rocket.Chat/pull/15294) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- User data export ([#15294](https://github.com/RocketChat/Rocket.Chat/pull/15294) by [@Hudell](https://github.com/Hudell)) ### 🐛 Bug fixes -- Add ENV VAR to enable users create token feature ([#15334](https://github.com/RocketChat/Rocket.Chat/pull/15334) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add ENV VAR to enable users create token feature ([#15334](https://github.com/RocketChat/Rocket.Chat/pull/15334)) -- CAS users can take control of Rocket.Chat accounts ([#15346](https://github.com/RocketChat/Rocket.Chat/pull/15346) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- CAS users can take control of Rocket.Chat accounts ([#15346](https://github.com/RocketChat/Rocket.Chat/pull/15346)) -- Delivering real-time messages to users that left a room ([#15389](https://github.com/RocketChat/Rocket.Chat/pull/15389) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Delivering real-time messages to users that left a room ([#15389](https://github.com/RocketChat/Rocket.Chat/pull/15389)) -- Don't allow email violating whitelist addresses ([#15339](https://github.com/RocketChat/Rocket.Chat/pull/15339) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Don't allow email violating whitelist addresses ([#15339](https://github.com/RocketChat/Rocket.Chat/pull/15339)) -- Double send bug on message box ([#15409](https://github.com/RocketChat/Rocket.Chat/pull/15409) by [@tassoevan](https://github.com/tassoevan)) +- Double send bug on message box ([#15409](https://github.com/RocketChat/Rocket.Chat/pull/15409)) - Duplicate Channels in Search-bar ([#15056](https://github.com/RocketChat/Rocket.Chat/pull/15056)) - Empty custom emojis on emoji picker ([#15392](https://github.com/RocketChat/Rocket.Chat/pull/15392)) -- Federation messages notifications ([#15418](https://github.com/RocketChat/Rocket.Chat/pull/15418) by [@alansikora](https://github.com/alansikora)) +- Federation messages notifications ([#15418](https://github.com/RocketChat/Rocket.Chat/pull/15418)) -- Fix file uploads JWT ([#15412](https://github.com/RocketChat/Rocket.Chat/pull/15412) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Fix file uploads JWT ([#15412](https://github.com/RocketChat/Rocket.Chat/pull/15412)) -- Grammatical error in Not Found page ([#15382](https://github.com/RocketChat/Rocket.Chat/pull/15382) by [@tassoevan](https://github.com/tassoevan)) +- Grammatical error in Not Found page ([#15382](https://github.com/RocketChat/Rocket.Chat/pull/15382)) -- LDAP usernames get additional '.' if they contain numbers ([#14644](https://github.com/RocketChat/Rocket.Chat/pull/14644) by [@Hudell](https://github.com/Hudell) & [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- LDAP usernames get additional '.' if they contain numbers ([#14644](https://github.com/RocketChat/Rocket.Chat/pull/14644) by [@Hudell](https://github.com/Hudell)) -- Limit exposed fields on some users. endpoints ([#15327](https://github.com/RocketChat/Rocket.Chat/pull/15327) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Limit exposed fields on some users. endpoints ([#15327](https://github.com/RocketChat/Rocket.Chat/pull/15327)) -- Message box not centered ([#15367](https://github.com/RocketChat/Rocket.Chat/pull/15367) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Message box not centered ([#15367](https://github.com/RocketChat/Rocket.Chat/pull/15367)) - Notify admin was generating errors when Rocket.Cat user was edited or deleted ([#15387](https://github.com/RocketChat/Rocket.Chat/pull/15387)) @@ -14458,29 +14345,29 @@ - Reduce Message cache time to 500ms ([#15295](https://github.com/RocketChat/Rocket.Chat/pull/15295) by [@vickyokrm](https://github.com/vickyokrm)) -- REST API to return only public custom fields ([#15292](https://github.com/RocketChat/Rocket.Chat/pull/15292) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API to return only public custom fields ([#15292](https://github.com/RocketChat/Rocket.Chat/pull/15292)) -- REST endpoint `users.setPreferences` to not override all user's preferences ([#15288](https://github.com/RocketChat/Rocket.Chat/pull/15288) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint `users.setPreferences` to not override all user's preferences ([#15288](https://github.com/RocketChat/Rocket.Chat/pull/15288)) - Set the DEFAULT_ECDH_CURVE to auto (#15245) ([#15365](https://github.com/RocketChat/Rocket.Chat/pull/15365) by [@dlundgren](https://github.com/dlundgren)) -- Subscription record not having the `ls` field ([#14544](https://github.com/RocketChat/Rocket.Chat/pull/14544) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Subscription record not having the `ls` field ([#14544](https://github.com/RocketChat/Rocket.Chat/pull/14544)) -- User Profile Time Format ([#15385](https://github.com/RocketChat/Rocket.Chat/pull/15385) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- User Profile Time Format ([#15385](https://github.com/RocketChat/Rocket.Chat/pull/15385))
🔍 Minor changes -- [CHORE] Move pathFor helper to templateHelpers directory ([#15255](https://github.com/RocketChat/Rocket.Chat/pull/15255) by [@tassoevan](https://github.com/tassoevan)) +- [CHORE] Move pathFor helper to templateHelpers directory ([#15255](https://github.com/RocketChat/Rocket.Chat/pull/15255)) -- [CHORE] Remove obsolete modal template ([#15257](https://github.com/RocketChat/Rocket.Chat/pull/15257) by [@tassoevan](https://github.com/tassoevan)) +- [CHORE] Remove obsolete modal template ([#15257](https://github.com/RocketChat/Rocket.Chat/pull/15257)) - [Fix] Missing space between last username & 'and' word in react notification ([#15384](https://github.com/RocketChat/Rocket.Chat/pull/15384) by [@zdumitru](https://github.com/zdumitru)) - Add a missing 'Discussion' translation key ([#14029](https://github.com/RocketChat/Rocket.Chat/pull/14029) by [@ura14h](https://github.com/ura14h)) -- Fix typo in LDAP User Search setting description ([#15228](https://github.com/RocketChat/Rocket.Chat/pull/15228) by [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc)) +- Fix typo in LDAP User Search setting description ([#15228](https://github.com/RocketChat/Rocket.Chat/pull/15228)) - Improve Polish translation ([#14060](https://github.com/RocketChat/Rocket.Chat/pull/14060) by [@stepek](https://github.com/stepek)) @@ -14488,11 +14375,11 @@ - LingoHub based on develop ([#15377](https://github.com/RocketChat/Rocket.Chat/pull/15377)) -- Merge master into develop & Set version to 2.1.0-develop ([#15357](https://github.com/RocketChat/Rocket.Chat/pull/15357) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) +- Merge master into develop & Set version to 2.1.0-develop ([#15357](https://github.com/RocketChat/Rocket.Chat/pull/15357)) - Regression: API CORS not working after Cordova being disabled by default ([#15443](https://github.com/RocketChat/Rocket.Chat/pull/15443)) -- Regression: Favorite room button ([#15426](https://github.com/RocketChat/Rocket.Chat/pull/15426) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Favorite room button ([#15426](https://github.com/RocketChat/Rocket.Chat/pull/15426)) - Regression: Fix Commit Section when there is no commit info ([#15436](https://github.com/RocketChat/Rocket.Chat/pull/15436)) @@ -14500,13 +14387,13 @@ - Regression: Fix invalid version string error on marketplace screen ([#15437](https://github.com/RocketChat/Rocket.Chat/pull/15437)) -- Regression: Messagebox height changing when typing ([#15380](https://github.com/RocketChat/Rocket.Chat/pull/15380) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Messagebox height changing when typing ([#15380](https://github.com/RocketChat/Rocket.Chat/pull/15380)) -- Regression: Prevent parsing empty custom field setting ([#15413](https://github.com/RocketChat/Rocket.Chat/pull/15413) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Prevent parsing empty custom field setting ([#15413](https://github.com/RocketChat/Rocket.Chat/pull/15413)) - Regression: setup wizard dynamic import using relative url ([#15432](https://github.com/RocketChat/Rocket.Chat/pull/15432)) -- Remove GraphQL dependencies left ([#15356](https://github.com/RocketChat/Rocket.Chat/pull/15356) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove GraphQL dependencies left ([#15356](https://github.com/RocketChat/Rocket.Chat/pull/15356)) - Remove log ADMIN_PASS environment variable ([#15307](https://github.com/RocketChat/Rocket.Chat/pull/15307)) @@ -14521,28 +14408,28 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) -- [@alansikora](https://github.com/alansikora) - [@dlundgren](https://github.com/dlundgren) - [@ferdifly](https://github.com/ferdifly) - [@ifantom](https://github.com/ifantom) - [@mrsimpson](https://github.com/mrsimpson) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@renatobecker](https://github.com/renatobecker) - [@stepek](https://github.com/stepek) -- [@tassoevan](https://github.com/tassoevan) - [@ura14h](https://github.com/ura14h) - [@vickyokrm](https://github.com/vickyokrm) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 2.0.1 `2019-11-19 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -14575,7 +14462,7 @@ ### ⚠️ BREAKING CHANGES -- Federation refactor with addition of chained events ([#15206](https://github.com/RocketChat/Rocket.Chat/pull/15206) by [@alansikora](https://github.com/alansikora)) +- Federation refactor with addition of chained events ([#15206](https://github.com/RocketChat/Rocket.Chat/pull/15206)) - Remove GraphQL and grant packages ([#15192](https://github.com/RocketChat/Rocket.Chat/pull/15192)) @@ -14592,21 +14479,21 @@ ### 🎉 New features -- Add autotranslate Rest endpoints ([#14885](https://github.com/RocketChat/Rocket.Chat/pull/14885) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add autotranslate Rest endpoints ([#14885](https://github.com/RocketChat/Rocket.Chat/pull/14885)) - Add Mobex to the list of SMS service providers ([#14655](https://github.com/RocketChat/Rocket.Chat/pull/14655) by [@zolbayars](https://github.com/zolbayars)) - Assume that Rocket.Chat runs behind one proxy by default (HTTP_FORWARDED_COUNT=1) ([#15214](https://github.com/RocketChat/Rocket.Chat/pull/15214)) -- Custom message popups ([#15117](https://github.com/RocketChat/Rocket.Chat/pull/15117) by [@Hudell](https://github.com/Hudell) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) +- Custom message popups ([#15117](https://github.com/RocketChat/Rocket.Chat/pull/15117) by [@Hudell](https://github.com/Hudell)) -- Endpoint to fetch livechat rooms with several filters ([#15155](https://github.com/RocketChat/Rocket.Chat/pull/15155) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Endpoint to fetch livechat rooms with several filters ([#15155](https://github.com/RocketChat/Rocket.Chat/pull/15155)) - Granular permissions for settings ([#8942](https://github.com/RocketChat/Rocket.Chat/pull/8942) by [@mrsimpson](https://github.com/mrsimpson)) - Integrate DEEPL translation service to RC core ([#12174](https://github.com/RocketChat/Rocket.Chat/pull/12174) by [@mrsimpson](https://github.com/mrsimpson) & [@vickyokrm](https://github.com/vickyokrm)) -- Jitsi meet room access via a token ([#12259](https://github.com/RocketChat/Rocket.Chat/pull/12259) by [@rrzharikov](https://github.com/rrzharikov) & [@tassoevan](https://github.com/tassoevan)) +- Jitsi meet room access via a token ([#12259](https://github.com/RocketChat/Rocket.Chat/pull/12259) by [@rrzharikov](https://github.com/rrzharikov)) - LDAP User Groups, Roles, and Channel Synchronization ([#14278](https://github.com/RocketChat/Rocket.Chat/pull/14278) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) @@ -14614,39 +14501,39 @@ - Options for SAML auth for individual organizations needs ([#14275](https://github.com/RocketChat/Rocket.Chat/pull/14275) by [@Deltachaos](https://github.com/Deltachaos) & [@Hudell](https://github.com/Hudell)) -- Rest API Endpoint to get pinned messages from a room ([#13864](https://github.com/RocketChat/Rocket.Chat/pull/13864) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@thayannevls](https://github.com/thayannevls)) +- Rest API Endpoint to get pinned messages from a room ([#13864](https://github.com/RocketChat/Rocket.Chat/pull/13864) by [@thayannevls](https://github.com/thayannevls)) -- Setup Wizard and Page not found, using React components ([#15204](https://github.com/RocketChat/Rocket.Chat/pull/15204) by [@tassoevan](https://github.com/tassoevan)) +- Setup Wizard and Page not found, using React components ([#15204](https://github.com/RocketChat/Rocket.Chat/pull/15204)) - Support multiple push gateways ([#14902](https://github.com/RocketChat/Rocket.Chat/pull/14902) by [@cardoso](https://github.com/cardoso)) ### 🚀 Improvements -- Add asset extension validation ([#15088](https://github.com/RocketChat/Rocket.Chat/pull/15088) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add asset extension validation ([#15088](https://github.com/RocketChat/Rocket.Chat/pull/15088)) -- Add limit of 50 user's resume tokens ([#15102](https://github.com/RocketChat/Rocket.Chat/pull/15102) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add limit of 50 user's resume tokens ([#15102](https://github.com/RocketChat/Rocket.Chat/pull/15102)) -- Add possibility to use commands inside threads through Rest API ([#15167](https://github.com/RocketChat/Rocket.Chat/pull/15167) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add possibility to use commands inside threads through Rest API ([#15167](https://github.com/RocketChat/Rocket.Chat/pull/15167)) -- Livechat User Management Improvements ([#14736](https://github.com/RocketChat/Rocket.Chat/pull/14736) by [@Hudell](https://github.com/Hudell) & [@renatobecker](https://github.com/renatobecker)) +- Livechat User Management Improvements ([#14736](https://github.com/RocketChat/Rocket.Chat/pull/14736) by [@Hudell](https://github.com/Hudell)) -- Message tooltips as everyone else ([#15135](https://github.com/RocketChat/Rocket.Chat/pull/15135) by [@tassoevan](https://github.com/tassoevan)) +- Message tooltips as everyone else ([#15135](https://github.com/RocketChat/Rocket.Chat/pull/15135)) -- Refactoring the queuing and routing processes of new livechats ([#15003](https://github.com/RocketChat/Rocket.Chat/pull/15003) by [@renatobecker](https://github.com/renatobecker)) +- Refactoring the queuing and routing processes of new livechats ([#15003](https://github.com/RocketChat/Rocket.Chat/pull/15003)) ### 🐛 Bug fixes - "Discussion" label in Sidebar not hidden, when Discussions are disabled (#14660) ([#14682](https://github.com/RocketChat/Rocket.Chat/pull/14682) by [@ifantom](https://github.com/ifantom)) -- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172) by [@tassoevan](https://github.com/tassoevan)) +- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172)) - cachedcollection calling multiple times SYNC ([#15104](https://github.com/RocketChat/Rocket.Chat/pull/15104)) - Forget user session on window close ([#15205](https://github.com/RocketChat/Rocket.Chat/pull/15205)) -- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157) by [@tassoevan](https://github.com/tassoevan)) +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) - IE11 baseURI ([#15319](https://github.com/RocketChat/Rocket.Chat/pull/15319)) @@ -14656,7 +14543,7 @@ - Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) -- Prevent to create discussion with empty name ([#14507](https://github.com/RocketChat/Rocket.Chat/pull/14507) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Prevent to create discussion with empty name ([#14507](https://github.com/RocketChat/Rocket.Chat/pull/14507)) - Rate limit incoming integrations (webhooks) ([#15038](https://github.com/RocketChat/Rocket.Chat/pull/15038) by [@mrsimpson](https://github.com/mrsimpson)) @@ -14674,7 +14561,7 @@ - User's auto complete showing everyone on the server ([#15212](https://github.com/RocketChat/Rocket.Chat/pull/15212)) -- Webdav crash ([#14918](https://github.com/RocketChat/Rocket.Chat/pull/14918) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Webdav crash ([#14918](https://github.com/RocketChat/Rocket.Chat/pull/14918))
🔍 Minor changes @@ -14686,13 +14573,13 @@ - Add wreiske to authorized users in catbot ([#15147](https://github.com/RocketChat/Rocket.Chat/pull/15147)) -- Allow file upload paths on attachments URLs ([#15121](https://github.com/RocketChat/Rocket.Chat/pull/15121) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Allow file upload paths on attachments URLs ([#15121](https://github.com/RocketChat/Rocket.Chat/pull/15121)) - Change notifications file imports to server ([#15184](https://github.com/RocketChat/Rocket.Chat/pull/15184)) -- Federation improvements ([#15234](https://github.com/RocketChat/Rocket.Chat/pull/15234) by [@alansikora](https://github.com/alansikora)) +- Federation improvements ([#15234](https://github.com/RocketChat/Rocket.Chat/pull/15234)) -- Federation migration and additional improvements ([#15336](https://github.com/RocketChat/Rocket.Chat/pull/15336) by [@alansikora](https://github.com/alansikora)) +- Federation migration and additional improvements ([#15336](https://github.com/RocketChat/Rocket.Chat/pull/15336)) - Fix apps list error ([#15258](https://github.com/RocketChat/Rocket.Chat/pull/15258)) @@ -14700,9 +14587,9 @@ - Fix get IP for rate limiter ([#15262](https://github.com/RocketChat/Rocket.Chat/pull/15262)) -- Fix v148 migration ([#15285](https://github.com/RocketChat/Rocket.Chat/pull/15285) by [@alansikora](https://github.com/alansikora)) +- Fix v148 migration ([#15285](https://github.com/RocketChat/Rocket.Chat/pull/15285)) -- Improve url validation inside message object ([#15074](https://github.com/RocketChat/Rocket.Chat/pull/15074) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Improve url validation inside message object ([#15074](https://github.com/RocketChat/Rocket.Chat/pull/15074)) - LingoHub based on develop ([#15218](https://github.com/RocketChat/Rocket.Chat/pull/15218)) @@ -14718,9 +14605,9 @@ - Regression: cachedCollection wrong callback parameters ([#15136](https://github.com/RocketChat/Rocket.Chat/pull/15136)) -- Regression: Double error toast on Setup Wizard ([#15268](https://github.com/RocketChat/Rocket.Chat/pull/15268) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Double error toast on Setup Wizard ([#15268](https://github.com/RocketChat/Rocket.Chat/pull/15268)) -- Regression: Errors on the console preventing some settings to be saved ([#15310](https://github.com/RocketChat/Rocket.Chat/pull/15310) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Errors on the console preventing some settings to be saved ([#15310](https://github.com/RocketChat/Rocket.Chat/pull/15310)) - Regression: Fix assets extension detection ([#15231](https://github.com/RocketChat/Rocket.Chat/pull/15231)) @@ -14730,15 +14617,15 @@ - Regression: last message doesn't update after reconnect ([#15329](https://github.com/RocketChat/Rocket.Chat/pull/15329)) -- Regression: New Livechat methods and processes ([#15242](https://github.com/RocketChat/Rocket.Chat/pull/15242) by [@renatobecker](https://github.com/renatobecker)) +- Regression: New Livechat methods and processes ([#15242](https://github.com/RocketChat/Rocket.Chat/pull/15242)) -- Regression: Remove duplicated permission changes emitter ([#15321](https://github.com/RocketChat/Rocket.Chat/pull/15321) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Remove duplicated permission changes emitter ([#15321](https://github.com/RocketChat/Rocket.Chat/pull/15321)) - Regression: remove livechat cache from circle ci ([#15183](https://github.com/RocketChat/Rocket.Chat/pull/15183)) -- Regression: Remove old scripts of Setup Wizard ([#15263](https://github.com/RocketChat/Rocket.Chat/pull/15263) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove old scripts of Setup Wizard ([#15263](https://github.com/RocketChat/Rocket.Chat/pull/15263)) -- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) +- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176)) - Remove GPG file ([#15146](https://github.com/RocketChat/Rocket.Chat/pull/15146)) @@ -14746,11 +14633,11 @@ - Switch outdated roadmap to point to milestones ([#15156](https://github.com/RocketChat/Rocket.Chat/pull/15156)) -- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173) by [@renatobecker](https://github.com/renatobecker)) +- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173)) -- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154) by [@renatobecker](https://github.com/renatobecker)) +- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154)) -- Update Livechat to 1.1.6 ([#15186](https://github.com/RocketChat/Rocket.Chat/pull/15186) by [@renatobecker](https://github.com/renatobecker)) +- Update Livechat to 1.1.6 ([#15186](https://github.com/RocketChat/Rocket.Chat/pull/15186)) - Update presence package ([#15178](https://github.com/RocketChat/Rocket.Chat/pull/15178)) @@ -14764,19 +14651,14 @@ - [@Deltachaos](https://github.com/Deltachaos) - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@NatsumiKubo](https://github.com/NatsumiKubo) -- [@alansikora](https://github.com/alansikora) - [@cardoso](https://github.com/cardoso) - [@cesarmal](https://github.com/cesarmal) - [@httpsOmkar](https://github.com/httpsOmkar) - [@ifantom](https://github.com/ifantom) - [@lucassmacedo](https://github.com/lucassmacedo) - [@mrsimpson](https://github.com/mrsimpson) -- [@renatobecker](https://github.com/renatobecker) - [@rrzharikov](https://github.com/rrzharikov) -- [@tassoevan](https://github.com/tassoevan) - [@thayannevls](https://github.com/thayannevls) - [@vickyokrm](https://github.com/vickyokrm) - [@wreiske](https://github.com/wreiske) @@ -14785,12 +14667,17 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.3.5 `2020-12-18 · 2 🐛 · 1 👩‍💻👨‍💻` @@ -14803,11 +14690,11 @@ ### 🐛 Bug fixes -- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Issue with special message rendering ([#19817](https://github.com/RocketChat/Rocket.Chat/pull/19817)) -- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Problem with attachment render ([#19854](https://github.com/RocketChat/Rocket.Chat/pull/19854)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MartinSchoeler](https://github.com/MartinSchoeler) @@ -14842,9 +14729,9 @@ ### 🐛 Bug fixes -- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172) by [@tassoevan](https://github.com/tassoevan)) +- Attachment download button behavior ([#15172](https://github.com/RocketChat/Rocket.Chat/pull/15172)) -- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157) by [@tassoevan](https://github.com/tassoevan)) +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) - Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) @@ -14852,23 +14739,20 @@ 🔍 Minor changes -- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) +- Release 1.3.2 ([#15176](https://github.com/RocketChat/Rocket.Chat/pull/15176)) -- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173) by [@renatobecker](https://github.com/renatobecker)) +- Update latest Livechat widget version to 1.1.4 ([#15173](https://github.com/RocketChat/Rocket.Chat/pull/15173)) -- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154) by [@renatobecker](https://github.com/renatobecker)) +- Update latest Livechat widget version(1.1.3) ([#15154](https://github.com/RocketChat/Rocket.Chat/pull/15154))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.3.1 `2019-08-08 · 2 🐛 · 2 🔍 · 3 👩‍💻👨‍💻` @@ -14889,18 +14773,15 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) -- Release 1.3.1 ([#15148](https://github.com/RocketChat/Rocket.Chat/pull/15148) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Release 1.3.1 ([#15148](https://github.com/RocketChat/Rocket.Chat/pull/15148))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -14923,39 +14804,39 @@ - Setting to configure custom authn context on SAML requests ([#14675](https://github.com/RocketChat/Rocket.Chat/pull/14675) by [@Hudell](https://github.com/Hudell)) -- Setting to prevent Livechat agents online when Office Hours are closed ([#14921](https://github.com/RocketChat/Rocket.Chat/pull/14921) by [@renatobecker](https://github.com/renatobecker)) +- Setting to prevent Livechat agents online when Office Hours are closed ([#14921](https://github.com/RocketChat/Rocket.Chat/pull/14921)) - Settings to further customize GitLab OAuth ([#15014](https://github.com/RocketChat/Rocket.Chat/pull/15014) by [@Hudell](https://github.com/Hudell)) - Show helpful error when oplog is missing ([#14954](https://github.com/RocketChat/Rocket.Chat/pull/14954) by [@justinr1234](https://github.com/justinr1234)) -- Subscription enabled marketplace ([#14948](https://github.com/RocketChat/Rocket.Chat/pull/14948) by [@tassoevan](https://github.com/tassoevan)) +- Subscription enabled marketplace ([#14948](https://github.com/RocketChat/Rocket.Chat/pull/14948)) - Webdav File Picker ([#14879](https://github.com/RocketChat/Rocket.Chat/pull/14879) by [@ubarsaiyan](https://github.com/ubarsaiyan)) ### 🚀 Improvements -- Add descriptions on user data download buttons and popup info ([#14852](https://github.com/RocketChat/Rocket.Chat/pull/14852) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add descriptions on user data download buttons and popup info ([#14852](https://github.com/RocketChat/Rocket.Chat/pull/14852)) -- Add flag to identify remote federation users ([#15004](https://github.com/RocketChat/Rocket.Chat/pull/15004) by [@alansikora](https://github.com/alansikora)) +- Add flag to identify remote federation users ([#15004](https://github.com/RocketChat/Rocket.Chat/pull/15004)) - Connectivity Services License Sync ([#15022](https://github.com/RocketChat/Rocket.Chat/pull/15022)) - Extract federation config to its own file ([#14992](https://github.com/RocketChat/Rocket.Chat/pull/14992)) -- Remove too specific helpers isFirefox() and isChrome() ([#14963](https://github.com/RocketChat/Rocket.Chat/pull/14963) by [@tassoevan](https://github.com/tassoevan)) +- Remove too specific helpers isFirefox() and isChrome() ([#14963](https://github.com/RocketChat/Rocket.Chat/pull/14963)) -- Update tabs markup ([#14964](https://github.com/RocketChat/Rocket.Chat/pull/14964) by [@tassoevan](https://github.com/tassoevan)) +- Update tabs markup ([#14964](https://github.com/RocketChat/Rocket.Chat/pull/14964)) ### 🐛 Bug fixes - 50 custom emoji limit ([#14951](https://github.com/RocketChat/Rocket.Chat/pull/14951)) -- Allow storing the navigation history of unregistered Livechat visitors ([#14970](https://github.com/RocketChat/Rocket.Chat/pull/14970) by [@renatobecker](https://github.com/renatobecker)) +- Allow storing the navigation history of unregistered Livechat visitors ([#14970](https://github.com/RocketChat/Rocket.Chat/pull/14970)) -- Always displaying jumbomojis when using "marked" markdown ([#14861](https://github.com/RocketChat/Rocket.Chat/pull/14861) by [@brakhane](https://github.com/brakhane) & [@tassoevan](https://github.com/tassoevan)) +- Always displaying jumbomojis when using "marked" markdown ([#14861](https://github.com/RocketChat/Rocket.Chat/pull/14861) by [@brakhane](https://github.com/brakhane)) - Chrome doesn't load additional search results when bottom is reached ([#14965](https://github.com/RocketChat/Rocket.Chat/pull/14965)) @@ -14965,7 +14846,7 @@ - Edit message with arrow up key if not last message ([#15021](https://github.com/RocketChat/Rocket.Chat/pull/15021)) -- Edit permissions screen ([#14950](https://github.com/RocketChat/Rocket.Chat/pull/14950) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Edit permissions screen ([#14950](https://github.com/RocketChat/Rocket.Chat/pull/14950)) - eternal loading file list ([#14952](https://github.com/RocketChat/Rocket.Chat/pull/14952)) @@ -14979,11 +14860,11 @@ - load more messages ([#14967](https://github.com/RocketChat/Rocket.Chat/pull/14967)) -- Loading indicator positioning ([#14968](https://github.com/RocketChat/Rocket.Chat/pull/14968) by [@tassoevan](https://github.com/tassoevan)) +- Loading indicator positioning ([#14968](https://github.com/RocketChat/Rocket.Chat/pull/14968)) -- Message attachments not allowing float numbers ([#14412](https://github.com/RocketChat/Rocket.Chat/pull/14412) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Message attachments not allowing float numbers ([#14412](https://github.com/RocketChat/Rocket.Chat/pull/14412)) -- Method `getUsersOfRoom` not returning offline users if limit is not defined ([#14753](https://github.com/RocketChat/Rocket.Chat/pull/14753) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Method `getUsersOfRoom` not returning offline users if limit is not defined ([#14753](https://github.com/RocketChat/Rocket.Chat/pull/14753)) - Not being able to mention users with "all" and "here" usernames - do not allow users register that usernames ([#14468](https://github.com/RocketChat/Rocket.Chat/pull/14468) by [@hamidrezabstn](https://github.com/hamidrezabstn)) @@ -14993,7 +14874,7 @@ - OTR key icon missing on messages ([#14953](https://github.com/RocketChat/Rocket.Chat/pull/14953)) -- Prevent error on trying insert message with duplicated id ([#14945](https://github.com/RocketChat/Rocket.Chat/pull/14945) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Prevent error on trying insert message with duplicated id ([#14945](https://github.com/RocketChat/Rocket.Chat/pull/14945)) - Russian grammatical errors ([#14622](https://github.com/RocketChat/Rocket.Chat/pull/14622) by [@BehindLoader](https://github.com/BehindLoader)) @@ -15005,7 +14886,7 @@ - Typo in german translation ([#14833](https://github.com/RocketChat/Rocket.Chat/pull/14833) by [@Le-onardo](https://github.com/Le-onardo)) -- Users staying online after logout ([#14966](https://github.com/RocketChat/Rocket.Chat/pull/14966) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Users staying online after logout ([#14966](https://github.com/RocketChat/Rocket.Chat/pull/14966)) - users.setStatus REST endpoint not allowing reset status message ([#14916](https://github.com/RocketChat/Rocket.Chat/pull/14916) by [@cardoso](https://github.com/cardoso)) @@ -15023,19 +14904,19 @@ - Add missing French translation ([#15013](https://github.com/RocketChat/Rocket.Chat/pull/15013) by [@commiaI](https://github.com/commiaI)) -- Always convert the sha256 password to lowercase on checking ([#14941](https://github.com/RocketChat/Rocket.Chat/pull/14941) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Always convert the sha256 password to lowercase on checking ([#14941](https://github.com/RocketChat/Rocket.Chat/pull/14941)) - Bump jquery from 3.3.1 to 3.4.0 in /packages/rocketchat-livechat/.app ([#14922](https://github.com/RocketChat/Rocket.Chat/pull/14922) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Bump juice version to 5.2.0 ([#14974](https://github.com/RocketChat/Rocket.Chat/pull/14974) by [@tassoevan](https://github.com/tassoevan)) +- Bump juice version to 5.2.0 ([#14974](https://github.com/RocketChat/Rocket.Chat/pull/14974)) - Bump marked from 0.5.2 to 0.6.1 ([#14969](https://github.com/RocketChat/Rocket.Chat/pull/14969) by [@dependabot[bot]](https://github.com/dependabot[bot])) -- Bump node-rsa version to 1.0.5 ([#14976](https://github.com/RocketChat/Rocket.Chat/pull/14976) by [@tassoevan](https://github.com/tassoevan)) +- Bump node-rsa version to 1.0.5 ([#14976](https://github.com/RocketChat/Rocket.Chat/pull/14976)) -- Bump photoswipe version to 4.1.3 ([#14977](https://github.com/RocketChat/Rocket.Chat/pull/14977) by [@tassoevan](https://github.com/tassoevan)) +- Bump photoswipe version to 4.1.3 ([#14977](https://github.com/RocketChat/Rocket.Chat/pull/14977)) -- Callbacks perf ([#14915](https://github.com/RocketChat/Rocket.Chat/pull/14915) by [@tassoevan](https://github.com/tassoevan)) +- Callbacks perf ([#14915](https://github.com/RocketChat/Rocket.Chat/pull/14915)) - Extract canSendMessage function ([#14909](https://github.com/RocketChat/Rocket.Chat/pull/14909)) @@ -15047,13 +14928,13 @@ - improve: relocate some of wizard info to register ([#14884](https://github.com/RocketChat/Rocket.Chat/pull/14884)) -- Merge master into develop & Set version to 1.3.0-develop ([#14889](https://github.com/RocketChat/Rocket.Chat/pull/14889) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@alansikora](https://github.com/alansikora)) +- Merge master into develop & Set version to 1.3.0-develop ([#14889](https://github.com/RocketChat/Rocket.Chat/pull/14889) by [@Hudell](https://github.com/Hudell)) -- New: Apps and integrations statistics ([#14878](https://github.com/RocketChat/Rocket.Chat/pull/14878) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- New: Apps and integrations statistics ([#14878](https://github.com/RocketChat/Rocket.Chat/pull/14878)) -- Regression: Apps and Marketplace UI issues ([#15045](https://github.com/RocketChat/Rocket.Chat/pull/15045) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Apps and Marketplace UI issues ([#15045](https://github.com/RocketChat/Rocket.Chat/pull/15045)) -- Regression: displaying errors for apps not installed from Marketplace ([#15075](https://github.com/RocketChat/Rocket.Chat/pull/15075) by [@tassoevan](https://github.com/tassoevan)) +- Regression: displaying errors for apps not installed from Marketplace ([#15075](https://github.com/RocketChat/Rocket.Chat/pull/15075)) - Regression: fix code style, setup wizard error and profile page header ([#15041](https://github.com/RocketChat/Rocket.Chat/pull/15041)) @@ -15063,23 +14944,23 @@ - Regression: Improve apps bridges for HA setup ([#15080](https://github.com/RocketChat/Rocket.Chat/pull/15080)) -- Regression: Marketplace app pricing plan description ([#15076](https://github.com/RocketChat/Rocket.Chat/pull/15076) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Marketplace app pricing plan description ([#15076](https://github.com/RocketChat/Rocket.Chat/pull/15076)) - Regression: patch to improve emoji render ([#14980](https://github.com/RocketChat/Rocket.Chat/pull/14980)) -- Regression: uninstall subscribed app modal ([#15077](https://github.com/RocketChat/Rocket.Chat/pull/15077) by [@tassoevan](https://github.com/tassoevan)) +- Regression: uninstall subscribed app modal ([#15077](https://github.com/RocketChat/Rocket.Chat/pull/15077)) - Regression: Webdav File Picker search and fixed overflows ([#15027](https://github.com/RocketChat/Rocket.Chat/pull/15027) by [@ubarsaiyan](https://github.com/ubarsaiyan)) - Release 1.2.1 ([#14898](https://github.com/RocketChat/Rocket.Chat/pull/14898)) -- Remove unused dependency (lokijs) ([#14973](https://github.com/RocketChat/Rocket.Chat/pull/14973) by [@tassoevan](https://github.com/tassoevan)) +- Remove unused dependency (lokijs) ([#14973](https://github.com/RocketChat/Rocket.Chat/pull/14973)) -- Remove unused Meteor dependency (yasinuslu:blaze-meta) ([#14971](https://github.com/RocketChat/Rocket.Chat/pull/14971) by [@tassoevan](https://github.com/tassoevan)) +- Remove unused Meteor dependency (yasinuslu:blaze-meta) ([#14971](https://github.com/RocketChat/Rocket.Chat/pull/14971)) - Split oplog emitters in files ([#14917](https://github.com/RocketChat/Rocket.Chat/pull/14917)) -- Update Livechat widget ([#15046](https://github.com/RocketChat/Rocket.Chat/pull/15046) by [@renatobecker](https://github.com/renatobecker)) +- Update Livechat widget ([#15046](https://github.com/RocketChat/Rocket.Chat/pull/15046)) - Wrong text when reporting a message ([#14515](https://github.com/RocketChat/Rocket.Chat/pull/14515) by [@zdumitru](https://github.com/zdumitru)) @@ -15090,9 +14971,7 @@ - [@BehindLoader](https://github.com/BehindLoader) - [@Hudell](https://github.com/Hudell) - [@Le-onardo](https://github.com/Le-onardo) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@NateScarlet](https://github.com/NateScarlet) -- [@alansikora](https://github.com/alansikora) - [@anandpathak](https://github.com/anandpathak) - [@brakhane](https://github.com/brakhane) - [@cardoso](https://github.com/cardoso) @@ -15102,9 +14981,7 @@ - [@justinr1234](https://github.com/justinr1234) - [@magicbelette](https://github.com/magicbelette) - [@pkolmann](https://github.com/pkolmann) -- [@renatobecker](https://github.com/renatobecker) - [@snoopotic](https://github.com/snoopotic) -- [@tassoevan](https://github.com/tassoevan) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@vova-zush](https://github.com/vova-zush) - [@zdumitru](https://github.com/zdumitru) @@ -15112,13 +14989,17 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.2.4 `2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -15132,11 +15013,11 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141))
-### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) @@ -15194,67 +15075,67 @@ ### 🎉 New features -- Add Livechat inquiries endpoints ([#14779](https://github.com/RocketChat/Rocket.Chat/pull/14779) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add Livechat inquiries endpoints ([#14779](https://github.com/RocketChat/Rocket.Chat/pull/14779)) - Add loading animation to webdav file picker ([#14759](https://github.com/RocketChat/Rocket.Chat/pull/14759) by [@ubarsaiyan](https://github.com/ubarsaiyan)) -- Add tmid property to outgoing integration ([#14699](https://github.com/RocketChat/Rocket.Chat/pull/14699) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add tmid property to outgoing integration ([#14699](https://github.com/RocketChat/Rocket.Chat/pull/14699)) - changed mongo version for snap from 3.2.7 to 3.4.20 ([#14838](https://github.com/RocketChat/Rocket.Chat/pull/14838)) -- Configuration to limit amount of livechat inquiries displayed ([#14690](https://github.com/RocketChat/Rocket.Chat/pull/14690) by [@renatobecker](https://github.com/renatobecker)) +- Configuration to limit amount of livechat inquiries displayed ([#14690](https://github.com/RocketChat/Rocket.Chat/pull/14690)) - Custom User Status ([#13933](https://github.com/RocketChat/Rocket.Chat/pull/13933) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) -- Endpoint to anonymously read channel's messages ([#14714](https://github.com/RocketChat/Rocket.Chat/pull/14714) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Endpoint to anonymously read channel's messages ([#14714](https://github.com/RocketChat/Rocket.Chat/pull/14714)) - Show App bundles and its apps ([#14886](https://github.com/RocketChat/Rocket.Chat/pull/14886)) ### 🚀 Improvements -- Add an optional rocketchat-protocol DNS entry for Federation ([#14589](https://github.com/RocketChat/Rocket.Chat/pull/14589) by [@alansikora](https://github.com/alansikora)) +- Add an optional rocketchat-protocol DNS entry for Federation ([#14589](https://github.com/RocketChat/Rocket.Chat/pull/14589)) -- Adds link to download generated user data file ([#14175](https://github.com/RocketChat/Rocket.Chat/pull/14175) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Adds link to download generated user data file ([#14175](https://github.com/RocketChat/Rocket.Chat/pull/14175) by [@Hudell](https://github.com/Hudell)) -- Layout of livechat manager pages to new style ([#13900](https://github.com/RocketChat/Rocket.Chat/pull/13900) by [@renatobecker](https://github.com/renatobecker)) +- Layout of livechat manager pages to new style ([#13900](https://github.com/RocketChat/Rocket.Chat/pull/13900)) -- Use configurable colors on sidebar items ([#14624](https://github.com/RocketChat/Rocket.Chat/pull/14624) by [@tassoevan](https://github.com/tassoevan)) +- Use configurable colors on sidebar items ([#14624](https://github.com/RocketChat/Rocket.Chat/pull/14624)) ### 🐛 Bug fixes -- Assume microphone is available ([#14710](https://github.com/RocketChat/Rocket.Chat/pull/14710) by [@tassoevan](https://github.com/tassoevan)) +- Assume microphone is available ([#14710](https://github.com/RocketChat/Rocket.Chat/pull/14710)) - Custom status fixes ([#14853](https://github.com/RocketChat/Rocket.Chat/pull/14853) by [@Hudell](https://github.com/Hudell) & [@wreiske](https://github.com/wreiske)) - Direct reply delete config and description ([#14493](https://github.com/RocketChat/Rocket.Chat/pull/14493) by [@ruKurz](https://github.com/ruKurz)) -- Error when using Download My Data or Export My Data ([#14645](https://github.com/RocketChat/Rocket.Chat/pull/14645) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Error when using Download My Data or Export My Data ([#14645](https://github.com/RocketChat/Rocket.Chat/pull/14645) by [@Hudell](https://github.com/Hudell)) - Gap of messages when loading history when using threads ([#14837](https://github.com/RocketChat/Rocket.Chat/pull/14837)) - Import Chart.js error ([#14471](https://github.com/RocketChat/Rocket.Chat/pull/14471) by [@Hudell](https://github.com/Hudell) & [@sonbn0](https://github.com/sonbn0)) -- Increasing time to rate limit in shield.svg endpoint and add a setting to disable API rate limiter ([#14709](https://github.com/RocketChat/Rocket.Chat/pull/14709) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Increasing time to rate limit in shield.svg endpoint and add a setting to disable API rate limiter ([#14709](https://github.com/RocketChat/Rocket.Chat/pull/14709)) - LinkedIn OAuth login ([#14887](https://github.com/RocketChat/Rocket.Chat/pull/14887) by [@Hudell](https://github.com/Hudell)) -- Move the set Avatar call on user creation to make sure the user has username ([#14665](https://github.com/RocketChat/Rocket.Chat/pull/14665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move the set Avatar call on user creation to make sure the user has username ([#14665](https://github.com/RocketChat/Rocket.Chat/pull/14665)) -- Name is undefined in some emails ([#14533](https://github.com/RocketChat/Rocket.Chat/pull/14533) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Name is undefined in some emails ([#14533](https://github.com/RocketChat/Rocket.Chat/pull/14533)) - Removes E2E action button, icon and banner when E2E is disabled. ([#14810](https://github.com/RocketChat/Rocket.Chat/pull/14810)) - users typing forever ([#14724](https://github.com/RocketChat/Rocket.Chat/pull/14724)) -- Wrong filter field when filtering current Livechats ([#14569](https://github.com/RocketChat/Rocket.Chat/pull/14569) by [@renatobecker](https://github.com/renatobecker)) +- Wrong filter field when filtering current Livechats ([#14569](https://github.com/RocketChat/Rocket.Chat/pull/14569))
🔍 Minor changes -- Add custom fileupload whitelist property ([#14754](https://github.com/RocketChat/Rocket.Chat/pull/14754) by [@renatobecker](https://github.com/renatobecker)) +- Add custom fileupload whitelist property ([#14754](https://github.com/RocketChat/Rocket.Chat/pull/14754)) - Allow debugging of cached collections by name ([#14859](https://github.com/RocketChat/Rocket.Chat/pull/14859)) @@ -15262,7 +15143,7 @@ - Fix not fully extracted pieces ([#14805](https://github.com/RocketChat/Rocket.Chat/pull/14805)) -- Merge master into develop & Set version to 1.2.0-develop ([#14656](https://github.com/RocketChat/Rocket.Chat/pull/14656) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@tassoevan](https://github.com/tassoevan) & [@thaiphv](https://github.com/thaiphv)) +- Merge master into develop & Set version to 1.2.0-develop ([#14656](https://github.com/RocketChat/Rocket.Chat/pull/14656) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@thaiphv](https://github.com/thaiphv)) - Regression: Allow debugging of cached collections by name ([#14862](https://github.com/RocketChat/Rocket.Chat/pull/14862)) @@ -15278,15 +15159,11 @@ - [@AnBo83](https://github.com/AnBo83) - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@knrt10](https://github.com/knrt10) - [@lolimay](https://github.com/lolimay) - [@mohamedar97](https://github.com/mohamedar97) -- [@renatobecker](https://github.com/renatobecker) - [@ruKurz](https://github.com/ruKurz) - [@sonbn0](https://github.com/sonbn0) -- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@wreiske](https://github.com/wreiske) @@ -15294,12 +15171,16 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@PrajvalRaval](https://github.com/PrajvalRaval) +- [@alansikora](https://github.com/alansikora) - [@engelgabriel](https://github.com/engelgabriel) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.1.5 `2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -15313,11 +15194,11 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141))
-### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) @@ -15377,27 +15258,27 @@ ### 🐛 Bug fixes -- Anonymous chat read ([#14717](https://github.com/RocketChat/Rocket.Chat/pull/14717) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Anonymous chat read ([#14717](https://github.com/RocketChat/Rocket.Chat/pull/14717)) - User Real Name being erased when not modified ([#14711](https://github.com/RocketChat/Rocket.Chat/pull/14711) by [@Hudell](https://github.com/Hudell)) -- User status information on User Info panel ([#14763](https://github.com/RocketChat/Rocket.Chat/pull/14763) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- User status information on User Info panel ([#14763](https://github.com/RocketChat/Rocket.Chat/pull/14763))
🔍 Minor changes -- Release 1.1.2 ([#14823](https://github.com/RocketChat/Rocket.Chat/pull/14823) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Release 1.1.2 ([#14823](https://github.com/RocketChat/Rocket.Chat/pull/14823) by [@Hudell](https://github.com/Hudell))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ggazzo](https://github.com/ggazzo) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -15420,17 +15301,17 @@ 🔍 Minor changes -- Removing unnecesary federation configs ([#14674](https://github.com/RocketChat/Rocket.Chat/pull/14674) by [@alansikora](https://github.com/alansikora)) +- Removing unnecesary federation configs ([#14674](https://github.com/RocketChat/Rocket.Chat/pull/14674)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@alansikora](https://github.com/alansikora) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@alansikora](https://github.com/alansikora) - [@ggazzo](https://github.com/ggazzo) # 1.1.0 @@ -15450,26 +15331,26 @@ - Missing "view-outside-room_description" translation key ([#13680](https://github.com/RocketChat/Rocket.Chat/pull/13680) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Returns custom emojis through the Livechat REST API ([#14370](https://github.com/RocketChat/Rocket.Chat/pull/14370) by [@renatobecker](https://github.com/renatobecker)) +- Returns custom emojis through the Livechat REST API ([#14370](https://github.com/RocketChat/Rocket.Chat/pull/14370)) -- Setting option to mark as containing a secret/password ([#10273](https://github.com/RocketChat/Rocket.Chat/pull/10273) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Setting option to mark as containing a secret/password ([#10273](https://github.com/RocketChat/Rocket.Chat/pull/10273)) ### 🚀 Improvements -- Added flag `skipActiveUsersToBeReady` to not wait the load of `active users` to present the Web interface ([#14431](https://github.com/RocketChat/Rocket.Chat/pull/14431) by [@tassoevan](https://github.com/tassoevan)) +- Added flag `skipActiveUsersToBeReady` to not wait the load of `active users` to present the Web interface ([#14431](https://github.com/RocketChat/Rocket.Chat/pull/14431)) - Allow change Discussion's properties ([#14389](https://github.com/RocketChat/Rocket.Chat/pull/14389)) - Change user presence events to Meteor Streams ([#14488](https://github.com/RocketChat/Rocket.Chat/pull/14488)) -- Don't show unread count badge in burger menu if it is from the opened room ([#12971](https://github.com/RocketChat/Rocket.Chat/pull/12971) by [@tassoevan](https://github.com/tassoevan)) +- Don't show unread count badge in burger menu if it is from the opened room ([#12971](https://github.com/RocketChat/Rocket.Chat/pull/12971)) - Don't use regex to find users ([#14397](https://github.com/RocketChat/Rocket.Chat/pull/14397)) - jump to selected message on open thread ([#14460](https://github.com/RocketChat/Rocket.Chat/pull/14460)) -- Livechat CRM secret token optional ([#14022](https://github.com/RocketChat/Rocket.Chat/pull/14022) by [@renatobecker](https://github.com/renatobecker)) +- Livechat CRM secret token optional ([#14022](https://github.com/RocketChat/Rocket.Chat/pull/14022)) - Message rendering time ([#14252](https://github.com/RocketChat/Rocket.Chat/pull/14252)) @@ -15484,7 +15365,7 @@ - `Alphabetical` translation in DE ([#14490](https://github.com/RocketChat/Rocket.Chat/pull/14490) by [@AnBo83](https://github.com/AnBo83)) -- Allow data URLs in isURL/getURL helpers ([#14464](https://github.com/RocketChat/Rocket.Chat/pull/14464) by [@tassoevan](https://github.com/tassoevan)) +- Allow data URLs in isURL/getURL helpers ([#14464](https://github.com/RocketChat/Rocket.Chat/pull/14464)) - Avatar images on old Livechat client ([#14590](https://github.com/RocketChat/Rocket.Chat/pull/14590) by [@arminfelder](https://github.com/arminfelder)) @@ -15498,17 +15379,17 @@ - Channel settings form to textarea for Topic and Description ([#13328](https://github.com/RocketChat/Rocket.Chat/pull/13328) by [@supra08](https://github.com/supra08)) -- Custom scripts descriptions were not clear enough ([#14516](https://github.com/RocketChat/Rocket.Chat/pull/14516) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Custom scripts descriptions were not clear enough ([#14516](https://github.com/RocketChat/Rocket.Chat/pull/14516)) - Discussion name being invalid ([#14442](https://github.com/RocketChat/Rocket.Chat/pull/14442)) -- Downloading files when running in sub directory ([#14485](https://github.com/RocketChat/Rocket.Chat/pull/14485) by [@miolane](https://github.com/miolane) & [@tassoevan](https://github.com/tassoevan)) +- Downloading files when running in sub directory ([#14485](https://github.com/RocketChat/Rocket.Chat/pull/14485) by [@miolane](https://github.com/miolane)) -- Duplicated link to jump to message ([#14505](https://github.com/RocketChat/Rocket.Chat/pull/14505) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Duplicated link to jump to message ([#14505](https://github.com/RocketChat/Rocket.Chat/pull/14505)) - E2E messages not decrypting in message threads ([#14580](https://github.com/RocketChat/Rocket.Chat/pull/14580)) -- Edit Message when down arrow is pressed. ([#14369](https://github.com/RocketChat/Rocket.Chat/pull/14369) by [@Kailash0311](https://github.com/Kailash0311) & [@tassoevan](https://github.com/tassoevan)) +- Edit Message when down arrow is pressed. ([#14369](https://github.com/RocketChat/Rocket.Chat/pull/14369) by [@Kailash0311](https://github.com/Kailash0311)) - Elements in User Info require some padding ([#13640](https://github.com/RocketChat/Rocket.Chat/pull/13640) by [@mushroomgenie](https://github.com/mushroomgenie)) @@ -15518,21 +15399,21 @@ - Error when accessing avatar with no token ([#14293](https://github.com/RocketChat/Rocket.Chat/pull/14293)) -- Escape unrecognized slash command message ([#14432](https://github.com/RocketChat/Rocket.Chat/pull/14432) by [@tassoevan](https://github.com/tassoevan)) +- Escape unrecognized slash command message ([#14432](https://github.com/RocketChat/Rocket.Chat/pull/14432)) - Exception on crowd sync due to a wrong logging method ([#14405](https://github.com/RocketChat/Rocket.Chat/pull/14405)) - Fallback to mongo version that doesn't require clusterMonitor role ([#14403](https://github.com/RocketChat/Rocket.Chat/pull/14403)) -- Fix redirect to First channel after login ([#14434](https://github.com/RocketChat/Rocket.Chat/pull/14434) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix redirect to First channel after login ([#14434](https://github.com/RocketChat/Rocket.Chat/pull/14434)) -- IE11 support ([#14422](https://github.com/RocketChat/Rocket.Chat/pull/14422) by [@tassoevan](https://github.com/tassoevan)) +- IE11 support ([#14422](https://github.com/RocketChat/Rocket.Chat/pull/14422)) -- Ignored messages ([#14465](https://github.com/RocketChat/Rocket.Chat/pull/14465) by [@tassoevan](https://github.com/tassoevan)) +- Ignored messages ([#14465](https://github.com/RocketChat/Rocket.Chat/pull/14465)) -- Inject code at the end of tag ([#14623](https://github.com/RocketChat/Rocket.Chat/pull/14623) by [@tassoevan](https://github.com/tassoevan)) +- Inject code at the end of tag ([#14623](https://github.com/RocketChat/Rocket.Chat/pull/14623)) -- Mailer breaking if user doesn't have an email address ([#14614](https://github.com/RocketChat/Rocket.Chat/pull/14614) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Mailer breaking if user doesn't have an email address ([#14614](https://github.com/RocketChat/Rocket.Chat/pull/14614)) - Main thread title on replies ([#14372](https://github.com/RocketChat/Rocket.Chat/pull/14372)) @@ -15548,31 +15429,31 @@ - New day separator overlapping above system message ([#14362](https://github.com/RocketChat/Rocket.Chat/pull/14362)) -- No feedback when adding users that already exists in a room ([#14534](https://github.com/RocketChat/Rocket.Chat/pull/14534) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@gsunit](https://github.com/gsunit)) +- No feedback when adding users that already exists in a room ([#14534](https://github.com/RocketChat/Rocket.Chat/pull/14534) by [@gsunit](https://github.com/gsunit)) - Optional exit on Unhandled Promise Rejection ([#14291](https://github.com/RocketChat/Rocket.Chat/pull/14291)) - Popup cloud console in new window ([#14296](https://github.com/RocketChat/Rocket.Chat/pull/14296)) -- Pressing Enter in User Search field at channel causes reload ([#14388](https://github.com/RocketChat/Rocket.Chat/pull/14388) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- Pressing Enter in User Search field at channel causes reload ([#14388](https://github.com/RocketChat/Rocket.Chat/pull/14388)) - preview pdf its not working ([#14419](https://github.com/RocketChat/Rocket.Chat/pull/14419)) -- Remove Livechat guest data was removing more rooms than expected ([#14509](https://github.com/RocketChat/Rocket.Chat/pull/14509) by [@renatobecker](https://github.com/renatobecker)) +- Remove Livechat guest data was removing more rooms than expected ([#14509](https://github.com/RocketChat/Rocket.Chat/pull/14509)) - RocketChat client sending out video call requests unnecessarily ([#14496](https://github.com/RocketChat/Rocket.Chat/pull/14496)) -- Role `user` has being added after email verification even for non anonymous users ([#14263](https://github.com/RocketChat/Rocket.Chat/pull/14263) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Role `user` has being added after email verification even for non anonymous users ([#14263](https://github.com/RocketChat/Rocket.Chat/pull/14263)) -- Role name spacing on Permissions page ([#14625](https://github.com/RocketChat/Rocket.Chat/pull/14625) by [@tassoevan](https://github.com/tassoevan)) +- Role name spacing on Permissions page ([#14625](https://github.com/RocketChat/Rocket.Chat/pull/14625)) -- Room name was undefined in some info dialogs ([#14415](https://github.com/RocketChat/Rocket.Chat/pull/14415) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Room name was undefined in some info dialogs ([#14415](https://github.com/RocketChat/Rocket.Chat/pull/14415)) - SAML credentialToken removal was preventing mobile from being able to authenticate ([#14345](https://github.com/RocketChat/Rocket.Chat/pull/14345)) -- Save custom emoji with special characters causes some errors ([#14456](https://github.com/RocketChat/Rocket.Chat/pull/14456) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Save custom emoji with special characters causes some errors ([#14456](https://github.com/RocketChat/Rocket.Chat/pull/14456)) -- Send replyTo for livechat offline messages ([#14568](https://github.com/RocketChat/Rocket.Chat/pull/14568) by [@renatobecker](https://github.com/renatobecker)) +- Send replyTo for livechat offline messages ([#14568](https://github.com/RocketChat/Rocket.Chat/pull/14568)) - Several problems with read-only rooms and muted users ([#11311](https://github.com/RocketChat/Rocket.Chat/pull/11311) by [@Hudell](https://github.com/Hudell)) @@ -15586,15 +15467,15 @@ - Unnecessary meteor.defer on openRoom ([#14396](https://github.com/RocketChat/Rocket.Chat/pull/14396)) -- Unread property of the room's lastMessage object was being wrong some times ([#13919](https://github.com/RocketChat/Rocket.Chat/pull/13919) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Unread property of the room's lastMessage object was being wrong some times ([#13919](https://github.com/RocketChat/Rocket.Chat/pull/13919)) -- Users actions in administration were returning error ([#14400](https://github.com/RocketChat/Rocket.Chat/pull/14400) by [@tassoevan](https://github.com/tassoevan)) +- Users actions in administration were returning error ([#14400](https://github.com/RocketChat/Rocket.Chat/pull/14400)) -- Verify if the user is requesting your own information in users.info ([#14242](https://github.com/RocketChat/Rocket.Chat/pull/14242) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Verify if the user is requesting your own information in users.info ([#14242](https://github.com/RocketChat/Rocket.Chat/pull/14242)) - Wrong header at Apps admin section ([#14290](https://github.com/RocketChat/Rocket.Chat/pull/14290)) -- Wrong token name was generating error on Gitlab OAuth login ([#14379](https://github.com/RocketChat/Rocket.Chat/pull/14379) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Wrong token name was generating error on Gitlab OAuth login ([#14379](https://github.com/RocketChat/Rocket.Chat/pull/14379)) - You must join to view messages in this channel ([#14461](https://github.com/RocketChat/Rocket.Chat/pull/14461)) @@ -15606,23 +15487,23 @@ - [IMPROVEMENT] Add tooltip to to notify user the purpose of back button in discussion ([#13872](https://github.com/RocketChat/Rocket.Chat/pull/13872) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- [IMPROVEMENT] Don't group messages with different alias ([#14257](https://github.com/RocketChat/Rocket.Chat/pull/14257) by [@jungeonkim](https://github.com/jungeonkim) & [@tassoevan](https://github.com/tassoevan)) +- [IMPROVEMENT] Don't group messages with different alias ([#14257](https://github.com/RocketChat/Rocket.Chat/pull/14257) by [@jungeonkim](https://github.com/jungeonkim)) -- [REGRESSION] Fix Slack bridge channel owner on channel creation ([#14565](https://github.com/RocketChat/Rocket.Chat/pull/14565) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- [REGRESSION] Fix Slack bridge channel owner on channel creation ([#14565](https://github.com/RocketChat/Rocket.Chat/pull/14565)) - Add digitalocean button to readme ([#14583](https://github.com/RocketChat/Rocket.Chat/pull/14583)) - Add missing german translations ([#14386](https://github.com/RocketChat/Rocket.Chat/pull/14386) by [@mrsimpson](https://github.com/mrsimpson)) -- Allow removing description, topic and annoucement of rooms(set as empty string) ([#13682](https://github.com/RocketChat/Rocket.Chat/pull/13682) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Allow removing description, topic and annoucement of rooms(set as empty string) ([#13682](https://github.com/RocketChat/Rocket.Chat/pull/13682)) - Ci improvements ([#14600](https://github.com/RocketChat/Rocket.Chat/pull/14600)) - eslint errors currently on develop ([#14518](https://github.com/RocketChat/Rocket.Chat/pull/14518) by [@Hudell](https://github.com/Hudell)) -- Federation i18n message changes ([#14595](https://github.com/RocketChat/Rocket.Chat/pull/14595) by [@alansikora](https://github.com/alansikora)) +- Federation i18n message changes ([#14595](https://github.com/RocketChat/Rocket.Chat/pull/14595)) -- fix discussions: remove restriction for editing room info, server side ([#14039](https://github.com/RocketChat/Rocket.Chat/pull/14039) by [@mrsimpson](https://github.com/mrsimpson) & [@tassoevan](https://github.com/tassoevan)) +- fix discussions: remove restriction for editing room info, server side ([#14039](https://github.com/RocketChat/Rocket.Chat/pull/14039) by [@mrsimpson](https://github.com/mrsimpson)) - Fix emoji replacing some chars ([#14570](https://github.com/RocketChat/Rocket.Chat/pull/14570)) @@ -15679,8 +15560,6 @@ - [@AnBo83](https://github.com/AnBo83) - [@Hudell](https://github.com/Hudell) - [@Kailash0311](https://github.com/Kailash0311) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@arminfelder](https://github.com/arminfelder) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@bhardwajaditya](https://github.com/bhardwajaditya) @@ -15693,20 +15572,22 @@ - [@mjovanovic0](https://github.com/mjovanovic0) - [@mrsimpson](https://github.com/mrsimpson) - [@mushroomgenie](https://github.com/mushroomgenie) -- [@renatobecker](https://github.com/renatobecker) - [@supra08](https://github.com/supra08) -- [@tassoevan](https://github.com/tassoevan) - [@wreiske](https://github.com/wreiske) - [@zdumitru](https://github.com/zdumitru) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.0.5 `2019-08-08 · 1 🔍 · 1 👩‍💻👨‍💻` @@ -15720,11 +15601,11 @@ 🔍 Minor changes -- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix custom auth ([#15141](https://github.com/RocketChat/Rocket.Chat/pull/15141)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@MarcosSpessatto](https://github.com/MarcosSpessatto) @@ -15757,23 +15638,23 @@ 🔍 Minor changes -- Release 1.0.3 ([#14446](https://github.com/RocketChat/Rocket.Chat/pull/14446) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@mrsimpson](https://github.com/mrsimpson) & [@tassoevan](https://github.com/tassoevan)) +- Release 1.0.3 ([#14446](https://github.com/RocketChat/Rocket.Chat/pull/14446) by [@mrsimpson](https://github.com/mrsimpson)) ### 👩‍💻👨‍💻 Contributors 😍 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@mrsimpson](https://github.com/mrsimpson) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.0.2 `2019-04-30 · 2 🚀 · 8 🐛 · 6 🔍 · 10 👩‍💻👨‍💻` @@ -15797,17 +15678,17 @@ - Duplicate thread message after editing ([#14330](https://github.com/RocketChat/Rocket.Chat/pull/14330)) -- Missing i18n for some new Permissions ([#14011](https://github.com/RocketChat/Rocket.Chat/pull/14011) by [@lolimay](https://github.com/lolimay) & [@tassoevan](https://github.com/tassoevan)) +- Missing i18n for some new Permissions ([#14011](https://github.com/RocketChat/Rocket.Chat/pull/14011) by [@lolimay](https://github.com/lolimay)) - New day separator rendered over thread reply ([#14328](https://github.com/RocketChat/Rocket.Chat/pull/14328)) -- Remove reference to inexistent field when deleting message in thread ([#14311](https://github.com/RocketChat/Rocket.Chat/pull/14311) by [@tassoevan](https://github.com/tassoevan)) +- Remove reference to inexistent field when deleting message in thread ([#14311](https://github.com/RocketChat/Rocket.Chat/pull/14311)) - show roles on message ([#14313](https://github.com/RocketChat/Rocket.Chat/pull/14313)) -- Unread line and new day separator were not aligned ([#14338](https://github.com/RocketChat/Rocket.Chat/pull/14338) by [@tassoevan](https://github.com/tassoevan)) +- Unread line and new day separator were not aligned ([#14338](https://github.com/RocketChat/Rocket.Chat/pull/14338)) -- View Logs admin page was broken and not rendering color logs ([#14316](https://github.com/RocketChat/Rocket.Chat/pull/14316) by [@tassoevan](https://github.com/tassoevan)) +- View Logs admin page was broken and not rendering color logs ([#14316](https://github.com/RocketChat/Rocket.Chat/pull/14316))
🔍 Minor changes @@ -15817,13 +15698,13 @@ - [Regression] Anonymous user fix ([#14301](https://github.com/RocketChat/Rocket.Chat/pull/14301) by [@knrt10](https://github.com/knrt10)) -- Add cross-browser select arrow positioning ([#14318](https://github.com/RocketChat/Rocket.Chat/pull/14318) by [@tassoevan](https://github.com/tassoevan)) +- Add cross-browser select arrow positioning ([#14318](https://github.com/RocketChat/Rocket.Chat/pull/14318)) - Coerces the MongoDB version string ([#14299](https://github.com/RocketChat/Rocket.Chat/pull/14299) by [@thaiphv](https://github.com/thaiphv)) - i18n: Update German strings ([#14182](https://github.com/RocketChat/Rocket.Chat/pull/14182) by [@AnBo83](https://github.com/AnBo83)) -- Release 1.0.2 ([#14339](https://github.com/RocketChat/Rocket.Chat/pull/14339) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@tassoevan](https://github.com/tassoevan) & [@thaiphv](https://github.com/thaiphv)) +- Release 1.0.2 ([#14339](https://github.com/RocketChat/Rocket.Chat/pull/14339) by [@AnBo83](https://github.com/AnBo83) & [@knrt10](https://github.com/knrt10) & [@lolimay](https://github.com/lolimay) & [@mohamedar97](https://github.com/mohamedar97) & [@thaiphv](https://github.com/thaiphv))
@@ -15833,7 +15714,6 @@ - [@knrt10](https://github.com/knrt10) - [@lolimay](https://github.com/lolimay) - [@mohamedar97](https://github.com/mohamedar97) -- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) ### 👩‍💻👨‍💻 Core Team 🤓 @@ -15842,6 +15722,7 @@ - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 1.0.1 `2019-04-28 · 7 🐛 · 4 👩‍💻👨‍💻` @@ -15893,34 +15774,34 @@ - Remove deprecated file upload engine Slingshot ([#13724](https://github.com/RocketChat/Rocket.Chat/pull/13724)) -- Remove internal hubot package ([#13522](https://github.com/RocketChat/Rocket.Chat/pull/13522) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove internal hubot package ([#13522](https://github.com/RocketChat/Rocket.Chat/pull/13522)) - Require OPLOG/REPLICASET to run Rocket.Chat ([#14227](https://github.com/RocketChat/Rocket.Chat/pull/14227)) ### 🎉 New features -- - Add setting to request a comment when closing Livechat room ([#13983](https://github.com/RocketChat/Rocket.Chat/pull/13983) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) +- - Add setting to request a comment when closing Livechat room ([#13983](https://github.com/RocketChat/Rocket.Chat/pull/13983) by [@knrt10](https://github.com/knrt10)) - Add an option to delete file in files list ([#13815](https://github.com/RocketChat/Rocket.Chat/pull/13815)) -- Add e-mail field on Livechat Departments ([#13775](https://github.com/RocketChat/Rocket.Chat/pull/13775) by [@renatobecker](https://github.com/renatobecker)) +- Add e-mail field on Livechat Departments ([#13775](https://github.com/RocketChat/Rocket.Chat/pull/13775)) -- Add GET method to fetch Livechat message through REST API ([#14147](https://github.com/RocketChat/Rocket.Chat/pull/14147) by [@renatobecker](https://github.com/renatobecker)) +- Add GET method to fetch Livechat message through REST API ([#14147](https://github.com/RocketChat/Rocket.Chat/pull/14147)) - Add message action to copy message to input as reply ([#12626](https://github.com/RocketChat/Rocket.Chat/pull/12626) by [@mrsimpson](https://github.com/mrsimpson)) -- Add missing remove add leader channel ([#13315](https://github.com/RocketChat/Rocket.Chat/pull/13315) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Montel](https://github.com/Montel)) +- Add missing remove add leader channel ([#13315](https://github.com/RocketChat/Rocket.Chat/pull/13315) by [@Montel](https://github.com/Montel)) - Add offset parameter to channels.history, groups.history, dm.history ([#13310](https://github.com/RocketChat/Rocket.Chat/pull/13310) by [@xbolshe](https://github.com/xbolshe)) - Add parseUrls field to the apps message converter ([#13248](https://github.com/RocketChat/Rocket.Chat/pull/13248)) -- Add support to updatedSince parameter in emoji-custom.list and deprecated old endpoint ([#13510](https://github.com/RocketChat/Rocket.Chat/pull/13510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add support to updatedSince parameter in emoji-custom.list and deprecated old endpoint ([#13510](https://github.com/RocketChat/Rocket.Chat/pull/13510)) - Add Voxtelesys to list of SMS providers ([#13697](https://github.com/RocketChat/Rocket.Chat/pull/13697) by [@jhnburke8](https://github.com/jhnburke8) & [@john08burke](https://github.com/john08burke)) -- allow drop files on thread ([#14214](https://github.com/RocketChat/Rocket.Chat/pull/14214) by [@tassoevan](https://github.com/tassoevan)) +- allow drop files on thread ([#14214](https://github.com/RocketChat/Rocket.Chat/pull/14214)) - Allow sending long messages as attachments ([#13819](https://github.com/RocketChat/Rocket.Chat/pull/13819)) @@ -15928,11 +15809,11 @@ - Chatpal: Enable custom search parameters ([#13829](https://github.com/RocketChat/Rocket.Chat/pull/13829) by [@Peym4n](https://github.com/Peym4n)) -- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525) by [@renatobecker](https://github.com/renatobecker)) +- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525)) - Discussions ([#13541](https://github.com/RocketChat/Rocket.Chat/pull/13541) by [@mrsimpson](https://github.com/mrsimpson) & [@vickyokrm](https://github.com/vickyokrm)) -- Federation ([#12370](https://github.com/RocketChat/Rocket.Chat/pull/12370) by [@alansikora](https://github.com/alansikora)) +- Federation ([#12370](https://github.com/RocketChat/Rocket.Chat/pull/12370)) - legal notice page ([#12472](https://github.com/RocketChat/Rocket.Chat/pull/12472) by [@localguru](https://github.com/localguru)) @@ -15944,36 +15825,36 @@ - option to not use nrr (experimental) ([#14224](https://github.com/RocketChat/Rocket.Chat/pull/14224)) -- Permission to assign roles ([#13597](https://github.com/RocketChat/Rocket.Chat/pull/13597) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Permission to assign roles ([#13597](https://github.com/RocketChat/Rocket.Chat/pull/13597)) -- Provide new Livechat client as community feature ([#13723](https://github.com/RocketChat/Rocket.Chat/pull/13723) by [@renatobecker](https://github.com/renatobecker)) +- Provide new Livechat client as community feature ([#13723](https://github.com/RocketChat/Rocket.Chat/pull/13723)) -- reply with a file ([#12095](https://github.com/RocketChat/Rocket.Chat/pull/12095) by [@rssilva](https://github.com/rssilva) & [@tassoevan](https://github.com/tassoevan)) +- reply with a file ([#12095](https://github.com/RocketChat/Rocket.Chat/pull/12095) by [@rssilva](https://github.com/rssilva)) -- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308) by [@renatobecker](https://github.com/renatobecker)) +- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308)) -- Rest endpoints of discussions ([#13987](https://github.com/RocketChat/Rocket.Chat/pull/13987) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Rest endpoints of discussions ([#13987](https://github.com/RocketChat/Rocket.Chat/pull/13987)) -- Rest threads ([#14045](https://github.com/RocketChat/Rocket.Chat/pull/14045) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Rest threads ([#14045](https://github.com/RocketChat/Rocket.Chat/pull/14045)) -- Set up livechat connections created from new client ([#14236](https://github.com/RocketChat/Rocket.Chat/pull/14236) by [@renatobecker](https://github.com/renatobecker)) +- Set up livechat connections created from new client ([#14236](https://github.com/RocketChat/Rocket.Chat/pull/14236)) -- Show department field on Livechat visitor panel ([#13530](https://github.com/RocketChat/Rocket.Chat/pull/13530) by [@renatobecker](https://github.com/renatobecker)) +- Show department field on Livechat visitor panel ([#13530](https://github.com/RocketChat/Rocket.Chat/pull/13530)) - Threads V 1.0 ([#13996](https://github.com/RocketChat/Rocket.Chat/pull/13996)) -- Update message actions ([#14268](https://github.com/RocketChat/Rocket.Chat/pull/14268) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Update message actions ([#14268](https://github.com/RocketChat/Rocket.Chat/pull/14268)) - User avatars from external source ([#7929](https://github.com/RocketChat/Rocket.Chat/pull/7929) by [@mjovanovic0](https://github.com/mjovanovic0)) -- users.setActiveStatus endpoint in rest api ([#13443](https://github.com/RocketChat/Rocket.Chat/pull/13443) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@thayannevls](https://github.com/thayannevls)) +- users.setActiveStatus endpoint in rest api ([#13443](https://github.com/RocketChat/Rocket.Chat/pull/13443) by [@thayannevls](https://github.com/thayannevls)) ### 🚀 Improvements - Add decoding for commonName (cn) and displayName attributes for SAML ([#12347](https://github.com/RocketChat/Rocket.Chat/pull/12347) by [@pkolmann](https://github.com/pkolmann)) -- Add department field on find guest method ([#13491](https://github.com/RocketChat/Rocket.Chat/pull/13491) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Add department field on find guest method ([#13491](https://github.com/RocketChat/Rocket.Chat/pull/13491)) - Add index for room's ts ([#13726](https://github.com/RocketChat/Rocket.Chat/pull/13726)) @@ -15985,39 +15866,39 @@ - Attachment download caching ([#14137](https://github.com/RocketChat/Rocket.Chat/pull/14137) by [@wreiske](https://github.com/wreiske)) -- Deprecate fixCordova helper ([#13598](https://github.com/RocketChat/Rocket.Chat/pull/13598) by [@tassoevan](https://github.com/tassoevan)) +- Deprecate fixCordova helper ([#13598](https://github.com/RocketChat/Rocket.Chat/pull/13598)) - Disable X-Powered-By header in all known express middlewares ([#13388](https://github.com/RocketChat/Rocket.Chat/pull/13388)) - End to end tests ([#13401](https://github.com/RocketChat/Rocket.Chat/pull/13401)) -- Filter agents with autocomplete input instead of select element ([#13730](https://github.com/RocketChat/Rocket.Chat/pull/13730) by [@renatobecker](https://github.com/renatobecker)) +- Filter agents with autocomplete input instead of select element ([#13730](https://github.com/RocketChat/Rocket.Chat/pull/13730)) - Get avatar from oauth ([#14131](https://github.com/RocketChat/Rocket.Chat/pull/14131)) -- Ignore agent status when queuing incoming livechats via Guest Pool ([#13818](https://github.com/RocketChat/Rocket.Chat/pull/13818) by [@renatobecker](https://github.com/renatobecker)) +- Ignore agent status when queuing incoming livechats via Guest Pool ([#13818](https://github.com/RocketChat/Rocket.Chat/pull/13818)) - Include more information to help with bug reports and debugging ([#14047](https://github.com/RocketChat/Rocket.Chat/pull/14047)) - Join channels by sending a message or join button (#13752) ([#13752](https://github.com/RocketChat/Rocket.Chat/pull/13752) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- KaTeX and Autolinker message rendering ([#11698](https://github.com/RocketChat/Rocket.Chat/pull/11698) by [@tassoevan](https://github.com/tassoevan)) +- KaTeX and Autolinker message rendering ([#11698](https://github.com/RocketChat/Rocket.Chat/pull/11698)) - Line height on static content pages ([#11673](https://github.com/RocketChat/Rocket.Chat/pull/11673) by [@timkinnane](https://github.com/timkinnane)) - new icons ([#13289](https://github.com/RocketChat/Rocket.Chat/pull/13289)) -- New sidebar item badges, mention links, and ticks ([#14030](https://github.com/RocketChat/Rocket.Chat/pull/14030) by [@tassoevan](https://github.com/tassoevan)) +- New sidebar item badges, mention links, and ticks ([#14030](https://github.com/RocketChat/Rocket.Chat/pull/14030)) - OAuth Role Sync ([#13761](https://github.com/RocketChat/Rocket.Chat/pull/13761) by [@hypery2k](https://github.com/hypery2k)) -- Remove dangling side-nav styles ([#13584](https://github.com/RocketChat/Rocket.Chat/pull/13584) by [@tassoevan](https://github.com/tassoevan)) +- Remove dangling side-nav styles ([#13584](https://github.com/RocketChat/Rocket.Chat/pull/13584)) -- Remove setting to show a livechat is waiting ([#13992](https://github.com/RocketChat/Rocket.Chat/pull/13992) by [@renatobecker](https://github.com/renatobecker)) +- Remove setting to show a livechat is waiting ([#13992](https://github.com/RocketChat/Rocket.Chat/pull/13992)) - Remove unnecessary "File Upload". ([#13743](https://github.com/RocketChat/Rocket.Chat/pull/13743) by [@knrt10](https://github.com/knrt10)) -- Replace livechat inquiry dialog with preview room ([#13986](https://github.com/RocketChat/Rocket.Chat/pull/13986) by [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) +- Replace livechat inquiry dialog with preview room ([#13986](https://github.com/RocketChat/Rocket.Chat/pull/13986)) - Replaces color #13679A to #1d74f5 ([#13796](https://github.com/RocketChat/Rocket.Chat/pull/13796) by [@fliptrail](https://github.com/fliptrail)) @@ -16042,15 +15923,15 @@ - .bin extension added to attached file names ([#13468](https://github.com/RocketChat/Rocket.Chat/pull/13468) by [@Hudell](https://github.com/Hudell)) -- Ability to activate an app installed by zip even offline ([#13563](https://github.com/RocketChat/Rocket.Chat/pull/13563) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Ability to activate an app installed by zip even offline ([#13563](https://github.com/RocketChat/Rocket.Chat/pull/13563)) -- Add custom MIME types for *.ico extension ([#13969](https://github.com/RocketChat/Rocket.Chat/pull/13969) by [@tassoevan](https://github.com/tassoevan)) +- Add custom MIME types for *.ico extension ([#13969](https://github.com/RocketChat/Rocket.Chat/pull/13969)) - Add retries to docker-compose.yml, to wait for MongoDB to be ready ([#13199](https://github.com/RocketChat/Rocket.Chat/pull/13199) by [@tiangolo](https://github.com/tiangolo)) - Adds Proper Language display name for many languages ([#13714](https://github.com/RocketChat/Rocket.Chat/pull/13714) by [@fliptrail](https://github.com/fliptrail)) -- Align burger menu in header with content matching room header ([#14265](https://github.com/RocketChat/Rocket.Chat/pull/14265) by [@tassoevan](https://github.com/tassoevan)) +- Align burger menu in header with content matching room header ([#14265](https://github.com/RocketChat/Rocket.Chat/pull/14265)) - allow user to logout before set username ([#13439](https://github.com/RocketChat/Rocket.Chat/pull/13439)) @@ -16058,15 +15939,15 @@ - Attachments without dates were showing December 31, 1970 ([#13428](https://github.com/RocketChat/Rocket.Chat/pull/13428) by [@wreiske](https://github.com/wreiske)) -- Audio message recording ([#13727](https://github.com/RocketChat/Rocket.Chat/pull/13727) by [@tassoevan](https://github.com/tassoevan)) +- Audio message recording ([#13727](https://github.com/RocketChat/Rocket.Chat/pull/13727)) -- Audio message recording issues ([#13486](https://github.com/RocketChat/Rocket.Chat/pull/13486) by [@tassoevan](https://github.com/tassoevan)) +- Audio message recording issues ([#13486](https://github.com/RocketChat/Rocket.Chat/pull/13486)) -- Auto hide Livechat room from sidebar on close ([#13824](https://github.com/RocketChat/Rocket.Chat/pull/13824) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) +- Auto hide Livechat room from sidebar on close ([#13824](https://github.com/RocketChat/Rocket.Chat/pull/13824) by [@knrt10](https://github.com/knrt10)) - Auto-translate toggle not updating rendered messages ([#14262](https://github.com/RocketChat/Rocket.Chat/pull/14262)) -- Autogrow not working properly for many message boxes ([#14163](https://github.com/RocketChat/Rocket.Chat/pull/14163) by [@tassoevan](https://github.com/tassoevan)) +- Autogrow not working properly for many message boxes ([#14163](https://github.com/RocketChat/Rocket.Chat/pull/14163)) - Avatar fonts for PNG and JPG ([#13681](https://github.com/RocketChat/Rocket.Chat/pull/13681)) @@ -16074,11 +15955,11 @@ - Block User Icon ([#13630](https://github.com/RocketChat/Rocket.Chat/pull/13630) by [@knrt10](https://github.com/knrt10)) -- Bugfix markdown Marked link new tab ([#13245](https://github.com/RocketChat/Rocket.Chat/pull/13245) by [@DeviaVir](https://github.com/DeviaVir) & [@tassoevan](https://github.com/tassoevan)) +- Bugfix markdown Marked link new tab ([#13245](https://github.com/RocketChat/Rocket.Chat/pull/13245) by [@DeviaVir](https://github.com/DeviaVir)) -- Change localStorage keys to work when server is running in a subdir ([#13968](https://github.com/RocketChat/Rocket.Chat/pull/13968) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change localStorage keys to work when server is running in a subdir ([#13968](https://github.com/RocketChat/Rocket.Chat/pull/13968)) -- Change userId of rate limiter, change to logged user ([#13442](https://github.com/RocketChat/Rocket.Chat/pull/13442) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change userId of rate limiter, change to logged user ([#13442](https://github.com/RocketChat/Rocket.Chat/pull/13442)) - Changing Room name updates the webhook ([#13672](https://github.com/RocketChat/Rocket.Chat/pull/13672) by [@knrt10](https://github.com/knrt10)) @@ -16092,47 +15973,47 @@ - Custom Oauth store refresh and id tokens with expiresIn ([#14121](https://github.com/RocketChat/Rocket.Chat/pull/14121) by [@ralfbecker](https://github.com/ralfbecker)) -- Directory and Apps logs page ([#13938](https://github.com/RocketChat/Rocket.Chat/pull/13938) by [@tassoevan](https://github.com/tassoevan)) +- Directory and Apps logs page ([#13938](https://github.com/RocketChat/Rocket.Chat/pull/13938)) -- Display first message when taking Livechat inquiry ([#13896](https://github.com/RocketChat/Rocket.Chat/pull/13896) by [@renatobecker](https://github.com/renatobecker)) +- Display first message when taking Livechat inquiry ([#13896](https://github.com/RocketChat/Rocket.Chat/pull/13896)) -- Do not allow change avatars of another users without permission ([#13629](https://github.com/RocketChat/Rocket.Chat/pull/13629) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Do not allow change avatars of another users without permission ([#13629](https://github.com/RocketChat/Rocket.Chat/pull/13629)) - Emoji detection at line breaks ([#13447](https://github.com/RocketChat/Rocket.Chat/pull/13447) by [@savish28](https://github.com/savish28)) -- Empty result when getting badge count notification ([#14244](https://github.com/RocketChat/Rocket.Chat/pull/14244) by [@renatobecker](https://github.com/renatobecker)) +- Empty result when getting badge count notification ([#14244](https://github.com/RocketChat/Rocket.Chat/pull/14244)) -- Error when recording data into the connection object ([#13553](https://github.com/RocketChat/Rocket.Chat/pull/13553) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Error when recording data into the connection object ([#13553](https://github.com/RocketChat/Rocket.Chat/pull/13553)) -- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341)) - Fix issue cannot filter channels by name ([#12952](https://github.com/RocketChat/Rocket.Chat/pull/12952) by [@huydang284](https://github.com/huydang284)) -- Fix rendering of links in the announcement modal ([#13250](https://github.com/RocketChat/Rocket.Chat/pull/13250) by [@supra08](https://github.com/supra08) & [@tassoevan](https://github.com/tassoevan)) +- Fix rendering of links in the announcement modal ([#13250](https://github.com/RocketChat/Rocket.Chat/pull/13250) by [@supra08](https://github.com/supra08)) - Fix snap refresh hook ([#13702](https://github.com/RocketChat/Rocket.Chat/pull/13702)) -- Fix wrong this scope in Notifications ([#13515](https://github.com/RocketChat/Rocket.Chat/pull/13515) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix wrong this scope in Notifications ([#13515](https://github.com/RocketChat/Rocket.Chat/pull/13515)) - Fixed grammatical error. ([#13559](https://github.com/RocketChat/Rocket.Chat/pull/13559) by [@gsunit](https://github.com/gsunit)) - Fixed rocketchat-oembed meta fragment pulling ([#13056](https://github.com/RocketChat/Rocket.Chat/pull/13056) by [@wreiske](https://github.com/wreiske)) -- Fixed text for "bulk-register-user" ([#11558](https://github.com/RocketChat/Rocket.Chat/pull/11558) by [@tassoevan](https://github.com/tassoevan) & [@the4ndy](https://github.com/the4ndy)) +- Fixed text for "bulk-register-user" ([#11558](https://github.com/RocketChat/Rocket.Chat/pull/11558) by [@the4ndy](https://github.com/the4ndy)) - Fixing rooms find by type and name ([#11451](https://github.com/RocketChat/Rocket.Chat/pull/11451) by [@hmagarotto](https://github.com/hmagarotto)) -- Focus on input when emoji picker box is open was not working ([#13981](https://github.com/RocketChat/Rocket.Chat/pull/13981) by [@tassoevan](https://github.com/tassoevan)) +- Focus on input when emoji picker box is open was not working ([#13981](https://github.com/RocketChat/Rocket.Chat/pull/13981)) -- Forwarded Livechat visitor name is not getting updated on the sidebar ([#13783](https://github.com/RocketChat/Rocket.Chat/pull/13783) by [@renatobecker](https://github.com/renatobecker) & [@zolbayars](https://github.com/zolbayars)) +- Forwarded Livechat visitor name is not getting updated on the sidebar ([#13783](https://github.com/RocketChat/Rocket.Chat/pull/13783) by [@zolbayars](https://github.com/zolbayars)) -- Get next Livechat agent endpoint ([#13485](https://github.com/RocketChat/Rocket.Chat/pull/13485) by [@renatobecker](https://github.com/renatobecker)) +- Get next Livechat agent endpoint ([#13485](https://github.com/RocketChat/Rocket.Chat/pull/13485)) -- Groups endpoints permission validations ([#13994](https://github.com/RocketChat/Rocket.Chat/pull/13994) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Groups endpoints permission validations ([#13994](https://github.com/RocketChat/Rocket.Chat/pull/13994)) -- Handle showing/hiding input in messageBox ([#13564](https://github.com/RocketChat/Rocket.Chat/pull/13564) by [@tassoevan](https://github.com/tassoevan)) +- Handle showing/hiding input in messageBox ([#13564](https://github.com/RocketChat/Rocket.Chat/pull/13564)) -- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell) & [@tassoevan](https://github.com/tassoevan)) +- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell)) - Hipchat Enterprise Importer not generating subscriptions ([#13293](https://github.com/RocketChat/Rocket.Chat/pull/13293) by [@Hudell](https://github.com/Hudell)) @@ -16150,11 +16031,11 @@ - link of k8s deploy ([#13612](https://github.com/RocketChat/Rocket.Chat/pull/13612) by [@Mr-Linus](https://github.com/Mr-Linus)) -- Links and upload paths when running in a subdir ([#13982](https://github.com/RocketChat/Rocket.Chat/pull/13982) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Links and upload paths when running in a subdir ([#13982](https://github.com/RocketChat/Rocket.Chat/pull/13982)) -- Livechat office hours ([#14031](https://github.com/RocketChat/Rocket.Chat/pull/14031) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Livechat office hours ([#14031](https://github.com/RocketChat/Rocket.Chat/pull/14031)) -- Livechat user registration in another department ([#10695](https://github.com/RocketChat/Rocket.Chat/pull/10695) by [@renatobecker](https://github.com/renatobecker)) +- Livechat user registration in another department ([#10695](https://github.com/RocketChat/Rocket.Chat/pull/10695)) - Loading theme CSS on first server startup ([#13953](https://github.com/RocketChat/Rocket.Chat/pull/13953)) @@ -16164,21 +16045,21 @@ - Message updating by Apps ([#13294](https://github.com/RocketChat/Rocket.Chat/pull/13294)) -- Minor issues detected after testing the new Livechat client ([#13521](https://github.com/RocketChat/Rocket.Chat/pull/13521) by [@renatobecker](https://github.com/renatobecker)) +- Minor issues detected after testing the new Livechat client ([#13521](https://github.com/RocketChat/Rocket.Chat/pull/13521)) -- Missing connection headers on Livechat REST API ([#14130](https://github.com/RocketChat/Rocket.Chat/pull/14130) by [@renatobecker](https://github.com/renatobecker)) +- Missing connection headers on Livechat REST API ([#14130](https://github.com/RocketChat/Rocket.Chat/pull/14130)) - Mobile view and re-enable E2E tests ([#13322](https://github.com/RocketChat/Rocket.Chat/pull/13322)) -- No new room created when conversation is closed ([#13753](https://github.com/RocketChat/Rocket.Chat/pull/13753) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) +- No new room created when conversation is closed ([#13753](https://github.com/RocketChat/Rocket.Chat/pull/13753) by [@knrt10](https://github.com/knrt10)) -- Non-latin room names and other slugifications ([#13467](https://github.com/RocketChat/Rocket.Chat/pull/13467) by [@tassoevan](https://github.com/tassoevan)) +- Non-latin room names and other slugifications ([#13467](https://github.com/RocketChat/Rocket.Chat/pull/13467)) -- Normalize TAPi18n language string on Livechat widget ([#14012](https://github.com/RocketChat/Rocket.Chat/pull/14012) by [@renatobecker](https://github.com/renatobecker)) +- Normalize TAPi18n language string on Livechat widget ([#14012](https://github.com/RocketChat/Rocket.Chat/pull/14012)) - Obey audio notification preferences ([#14188](https://github.com/RocketChat/Rocket.Chat/pull/14188)) -- Opening a Livechat room from another agent ([#13951](https://github.com/RocketChat/Rocket.Chat/pull/13951) by [@renatobecker](https://github.com/renatobecker)) +- Opening a Livechat room from another agent ([#13951](https://github.com/RocketChat/Rocket.Chat/pull/13951)) - OTR dialog issue ([#13755](https://github.com/RocketChat/Rocket.Chat/pull/13755) by [@knrt10](https://github.com/knrt10)) @@ -16192,37 +16073,37 @@ - Rate Limiter was limiting communication between instances ([#13326](https://github.com/RocketChat/Rocket.Chat/pull/13326)) -- Read Receipt for Livechat Messages fixed ([#13832](https://github.com/RocketChat/Rocket.Chat/pull/13832) by [@knrt10](https://github.com/knrt10) & [@renatobecker](https://github.com/renatobecker)) +- Read Receipt for Livechat Messages fixed ([#13832](https://github.com/RocketChat/Rocket.Chat/pull/13832) by [@knrt10](https://github.com/knrt10)) -- Real names were not displayed in the reactions (API/UI) ([#13495](https://github.com/RocketChat/Rocket.Chat/pull/13495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- Real names were not displayed in the reactions (API/UI) ([#13495](https://github.com/RocketChat/Rocket.Chat/pull/13495)) -- Receiving agent for new livechats from REST API ([#14103](https://github.com/RocketChat/Rocket.Chat/pull/14103) by [@renatobecker](https://github.com/renatobecker)) +- Receiving agent for new livechats from REST API ([#14103](https://github.com/RocketChat/Rocket.Chat/pull/14103)) - Remove Room info for Direct Messages (#9383) ([#12429](https://github.com/RocketChat/Rocket.Chat/pull/12429) by [@vinade](https://github.com/vinade)) -- Remove spaces in some i18n files ([#13801](https://github.com/RocketChat/Rocket.Chat/pull/13801) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove spaces in some i18n files ([#13801](https://github.com/RocketChat/Rocket.Chat/pull/13801)) - renderField template to correct short property usage ([#14148](https://github.com/RocketChat/Rocket.Chat/pull/14148)) - REST endpoint for creating custom emojis ([#13306](https://github.com/RocketChat/Rocket.Chat/pull/13306)) -- Restart required to apply changes in API Rate Limiter settings ([#13451](https://github.com/RocketChat/Rocket.Chat/pull/13451) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Restart required to apply changes in API Rate Limiter settings ([#13451](https://github.com/RocketChat/Rocket.Chat/pull/13451)) -- Right arrows in default HTML content ([#13502](https://github.com/RocketChat/Rocket.Chat/pull/13502) by [@tassoevan](https://github.com/tassoevan)) +- Right arrows in default HTML content ([#13502](https://github.com/RocketChat/Rocket.Chat/pull/13502)) - SAML certificate settings don't follow a pattern ([#14179](https://github.com/RocketChat/Rocket.Chat/pull/14179) by [@Hudell](https://github.com/Hudell)) - Setup wizard calling 'saveSetting' for each field/setting ([#13349](https://github.com/RocketChat/Rocket.Chat/pull/13349)) -- Sidenav does not open on some admin pages ([#14010](https://github.com/RocketChat/Rocket.Chat/pull/14010) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- Sidenav does not open on some admin pages ([#14010](https://github.com/RocketChat/Rocket.Chat/pull/14010)) -- Sidenav mouse hover was slow ([#13482](https://github.com/RocketChat/Rocket.Chat/pull/13482) by [@tassoevan](https://github.com/tassoevan)) +- Sidenav mouse hover was slow ([#13482](https://github.com/RocketChat/Rocket.Chat/pull/13482)) -- Slackbridge private channels ([#14273](https://github.com/RocketChat/Rocket.Chat/pull/14273) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@nylen](https://github.com/nylen)) +- Slackbridge private channels ([#14273](https://github.com/RocketChat/Rocket.Chat/pull/14273) by [@Hudell](https://github.com/Hudell) & [@nylen](https://github.com/nylen)) -- Small improvements on message box ([#13444](https://github.com/RocketChat/Rocket.Chat/pull/13444) by [@tassoevan](https://github.com/tassoevan)) +- Small improvements on message box ([#13444](https://github.com/RocketChat/Rocket.Chat/pull/13444)) -- Some Safari bugs ([#13895](https://github.com/RocketChat/Rocket.Chat/pull/13895) by [@tassoevan](https://github.com/tassoevan)) +- Some Safari bugs ([#13895](https://github.com/RocketChat/Rocket.Chat/pull/13895)) - Stop livestream ([#13676](https://github.com/RocketChat/Rocket.Chat/pull/13676)) @@ -16244,9 +16125,9 @@ - VIDEO/JITSI multiple calls before video call ([#13855](https://github.com/RocketChat/Rocket.Chat/pull/13855)) -- View All members button now not in direct room ([#14081](https://github.com/RocketChat/Rocket.Chat/pull/14081) by [@knrt10](https://github.com/knrt10) & [@tassoevan](https://github.com/tassoevan)) +- View All members button now not in direct room ([#14081](https://github.com/RocketChat/Rocket.Chat/pull/14081) by [@knrt10](https://github.com/knrt10)) -- WebRTC wasn't working duo to design and browser's APIs changes ([#13675](https://github.com/RocketChat/Rocket.Chat/pull/13675) by [@tassoevan](https://github.com/tassoevan)) +- WebRTC wasn't working duo to design and browser's APIs changes ([#13675](https://github.com/RocketChat/Rocket.Chat/pull/13675)) - wrong importing of e2e ([#13863](https://github.com/RocketChat/Rocket.Chat/pull/13863)) @@ -16258,67 +16139,67 @@ 🔍 Minor changes -- Convert rocketchat-apps to main module structure ([#13409](https://github.com/RocketChat/Rocket.Chat/pull/13409) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-apps to main module structure ([#13409](https://github.com/RocketChat/Rocket.Chat/pull/13409)) -- Convert rocketchat-lib to main module structure ([#13415](https://github.com/RocketChat/Rocket.Chat/pull/13415) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-lib to main module structure ([#13415](https://github.com/RocketChat/Rocket.Chat/pull/13415)) -- Fix some imports from wrong packages, remove exports and files unused in rc-ui ([#13422](https://github.com/RocketChat/Rocket.Chat/pull/13422) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix some imports from wrong packages, remove exports and files unused in rc-ui ([#13422](https://github.com/RocketChat/Rocket.Chat/pull/13422)) -- Import missed functions to remove dependency of RC namespace ([#13414](https://github.com/RocketChat/Rocket.Chat/pull/13414) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Import missed functions to remove dependency of RC namespace ([#13414](https://github.com/RocketChat/Rocket.Chat/pull/13414)) -- Remove dependency of RC namespace in livechat/client ([#13370](https://github.com/RocketChat/Rocket.Chat/pull/13370) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in livechat/client ([#13370](https://github.com/RocketChat/Rocket.Chat/pull/13370)) -- Remove dependency of RC namespace in rc-integrations and importer-hipchat-enterprise ([#13386](https://github.com/RocketChat/Rocket.Chat/pull/13386) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-integrations and importer-hipchat-enterprise ([#13386](https://github.com/RocketChat/Rocket.Chat/pull/13386)) -- Remove dependency of RC namespace in rc-livechat/server/publications ([#13383](https://github.com/RocketChat/Rocket.Chat/pull/13383) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-livechat/server/publications ([#13383](https://github.com/RocketChat/Rocket.Chat/pull/13383)) -- Remove dependency of RC namespace in rc-message-pin and message-snippet ([#13343](https://github.com/RocketChat/Rocket.Chat/pull/13343) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-message-pin and message-snippet ([#13343](https://github.com/RocketChat/Rocket.Chat/pull/13343)) -- Remove dependency of RC namespace in rc-oembed and rc-otr ([#13345](https://github.com/RocketChat/Rocket.Chat/pull/13345) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-oembed and rc-otr ([#13345](https://github.com/RocketChat/Rocket.Chat/pull/13345)) -- Remove dependency of RC namespace in rc-reactions, retention-policy and search ([#13347](https://github.com/RocketChat/Rocket.Chat/pull/13347) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-reactions, retention-policy and search ([#13347](https://github.com/RocketChat/Rocket.Chat/pull/13347)) -- Remove dependency of RC namespace in rc-slash-archiveroom, create, help, hide, invite, inviteall and join ([#13356](https://github.com/RocketChat/Rocket.Chat/pull/13356) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-slash-archiveroom, create, help, hide, invite, inviteall and join ([#13356](https://github.com/RocketChat/Rocket.Chat/pull/13356)) -- Remove dependency of RC namespace in rc-smarsh-connector, sms and spotify ([#13358](https://github.com/RocketChat/Rocket.Chat/pull/13358) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-smarsh-connector, sms and spotify ([#13358](https://github.com/RocketChat/Rocket.Chat/pull/13358)) -- Remove dependency of RC namespace in rc-statistics and tokenpass ([#13359](https://github.com/RocketChat/Rocket.Chat/pull/13359) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-statistics and tokenpass ([#13359](https://github.com/RocketChat/Rocket.Chat/pull/13359)) -- Remove dependency of RC namespace in rc-ui-master, ui-message- user-data-download and version-check ([#13365](https://github.com/RocketChat/Rocket.Chat/pull/13365) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-ui-master, ui-message- user-data-download and version-check ([#13365](https://github.com/RocketChat/Rocket.Chat/pull/13365)) -- Remove dependency of RC namespace in rc-ui, ui-account and ui-admin ([#13361](https://github.com/RocketChat/Rocket.Chat/pull/13361) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-ui, ui-account and ui-admin ([#13361](https://github.com/RocketChat/Rocket.Chat/pull/13361)) -- Remove dependency of RC namespace in rc-videobridge and webdav ([#13366](https://github.com/RocketChat/Rocket.Chat/pull/13366) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-videobridge and webdav ([#13366](https://github.com/RocketChat/Rocket.Chat/pull/13366)) -- Remove dependency of RC namespace in root client folder, imports/message-read-receipt and imports/personal-access-tokens ([#13389](https://github.com/RocketChat/Rocket.Chat/pull/13389) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root client folder, imports/message-read-receipt and imports/personal-access-tokens ([#13389](https://github.com/RocketChat/Rocket.Chat/pull/13389)) -- Remove dependency of RC namespace in root server folder - step 1 ([#13390](https://github.com/RocketChat/Rocket.Chat/pull/13390) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root server folder - step 1 ([#13390](https://github.com/RocketChat/Rocket.Chat/pull/13390)) -- Remove dependency of RC namespace in root server folder - step 4 ([#13400](https://github.com/RocketChat/Rocket.Chat/pull/13400) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root server folder - step 4 ([#13400](https://github.com/RocketChat/Rocket.Chat/pull/13400)) -- Remove functions from globals ([#13421](https://github.com/RocketChat/Rocket.Chat/pull/13421) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove functions from globals ([#13421](https://github.com/RocketChat/Rocket.Chat/pull/13421)) -- Remove LIvechat global variable from RC namespace ([#13378](https://github.com/RocketChat/Rocket.Chat/pull/13378) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove LIvechat global variable from RC namespace ([#13378](https://github.com/RocketChat/Rocket.Chat/pull/13378)) -- Remove unused files and code in rc-lib - step 1 ([#13416](https://github.com/RocketChat/Rocket.Chat/pull/13416) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove unused files and code in rc-lib - step 1 ([#13416](https://github.com/RocketChat/Rocket.Chat/pull/13416)) -- Remove unused files and code in rc-lib - step 3 ([#13420](https://github.com/RocketChat/Rocket.Chat/pull/13420) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove unused files and code in rc-lib - step 3 ([#13420](https://github.com/RocketChat/Rocket.Chat/pull/13420)) -- Remove unused files in rc-lib - step 2 ([#13419](https://github.com/RocketChat/Rocket.Chat/pull/13419) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove unused files in rc-lib - step 2 ([#13419](https://github.com/RocketChat/Rocket.Chat/pull/13419)) - [BUG] Icon Fixed for Knowledge base on Livechat ([#13806](https://github.com/RocketChat/Rocket.Chat/pull/13806) by [@knrt10](https://github.com/knrt10)) -- [New] Reply privately to group messages ([#14150](https://github.com/RocketChat/Rocket.Chat/pull/14150) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@bhardwajaditya](https://github.com/bhardwajaditya)) +- [New] Reply privately to group messages ([#14150](https://github.com/RocketChat/Rocket.Chat/pull/14150) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- [Regression] Fix integrations message example ([#14111](https://github.com/RocketChat/Rocket.Chat/pull/14111) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- [Regression] Fix integrations message example ([#14111](https://github.com/RocketChat/Rocket.Chat/pull/14111)) - [REGRESSION] Fix variable name references in message template ([#14184](https://github.com/RocketChat/Rocket.Chat/pull/14184)) -- [REGRESSION] Messages sent by livechat's guests are losing sender info ([#14174](https://github.com/RocketChat/Rocket.Chat/pull/14174) by [@renatobecker](https://github.com/renatobecker)) +- [REGRESSION] Messages sent by livechat's guests are losing sender info ([#14174](https://github.com/RocketChat/Rocket.Chat/pull/14174)) - [Regression] Personal Access Token list fixed ([#14216](https://github.com/RocketChat/Rocket.Chat/pull/14216) by [@knrt10](https://github.com/knrt10)) -- Add better positioning for tooltips on edges ([#13472](https://github.com/RocketChat/Rocket.Chat/pull/13472) by [@tassoevan](https://github.com/tassoevan)) +- Add better positioning for tooltips on edges ([#13472](https://github.com/RocketChat/Rocket.Chat/pull/13472)) - Add Houston config ([#13707](https://github.com/RocketChat/Rocket.Chat/pull/13707)) @@ -16326,29 +16207,29 @@ - Add support to search for all users in directory ([#13803](https://github.com/RocketChat/Rocket.Chat/pull/13803)) -- Added federation ping, loopback and dashboard ([#14007](https://github.com/RocketChat/Rocket.Chat/pull/14007) by [@alansikora](https://github.com/alansikora)) +- Added federation ping, loopback and dashboard ([#14007](https://github.com/RocketChat/Rocket.Chat/pull/14007)) - Adds French translation of Personal Access Token ([#13779](https://github.com/RocketChat/Rocket.Chat/pull/13779) by [@ashwaniYDV](https://github.com/ashwaniYDV)) - Allow set env var METEOR_OPLOG_TOO_FAR_BEHIND ([#14017](https://github.com/RocketChat/Rocket.Chat/pull/14017)) -- Broken styles in Administration's contextual bar ([#14222](https://github.com/RocketChat/Rocket.Chat/pull/14222) by [@tassoevan](https://github.com/tassoevan)) +- Broken styles in Administration's contextual bar ([#14222](https://github.com/RocketChat/Rocket.Chat/pull/14222)) -- Change dynamic dependency of FileUpload in Messages models ([#13776](https://github.com/RocketChat/Rocket.Chat/pull/13776) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change dynamic dependency of FileUpload in Messages models ([#13776](https://github.com/RocketChat/Rocket.Chat/pull/13776)) -- Change the way to resolve DNS for Federation ([#13695](https://github.com/RocketChat/Rocket.Chat/pull/13695) by [@alansikora](https://github.com/alansikora)) +- Change the way to resolve DNS for Federation ([#13695](https://github.com/RocketChat/Rocket.Chat/pull/13695)) - Convert imports to relative paths ([#13740](https://github.com/RocketChat/Rocket.Chat/pull/13740)) -- Convert rc-nrr and slashcommands open to main module structure ([#13520](https://github.com/RocketChat/Rocket.Chat/pull/13520) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rc-nrr and slashcommands open to main module structure ([#13520](https://github.com/RocketChat/Rocket.Chat/pull/13520)) -- created function to allow change default values, fix loading search users ([#14177](https://github.com/RocketChat/Rocket.Chat/pull/14177) by [@tassoevan](https://github.com/tassoevan)) +- created function to allow change default values, fix loading search users ([#14177](https://github.com/RocketChat/Rocket.Chat/pull/14177)) - Depack: Use mainModule for root files ([#13508](https://github.com/RocketChat/Rocket.Chat/pull/13508)) -- Depackaging ([#13483](https://github.com/RocketChat/Rocket.Chat/pull/13483) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Depackaging ([#13483](https://github.com/RocketChat/Rocket.Chat/pull/13483)) -- Deprecate /api/v1/info in favor of /api/info ([#13798](https://github.com/RocketChat/Rocket.Chat/pull/13798) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Deprecate /api/v1/info in favor of /api/info ([#13798](https://github.com/RocketChat/Rocket.Chat/pull/13798)) - ESLint: Add more import rules ([#14226](https://github.com/RocketChat/Rocket.Chat/pull/14226)) @@ -16370,23 +16251,23 @@ - Fix room re-rendering ([#14044](https://github.com/RocketChat/Rocket.Chat/pull/14044)) -- Fix sending message from action buttons in messages ([#14101](https://github.com/RocketChat/Rocket.Chat/pull/14101) by [@tassoevan](https://github.com/tassoevan)) +- Fix sending message from action buttons in messages ([#14101](https://github.com/RocketChat/Rocket.Chat/pull/14101)) - Fix sending notifications to mentions on threads and discussion email sender ([#14043](https://github.com/RocketChat/Rocket.Chat/pull/14043)) - Fix shield indentation ([#14048](https://github.com/RocketChat/Rocket.Chat/pull/14048)) -- Fix threads rendering performance ([#14059](https://github.com/RocketChat/Rocket.Chat/pull/14059) by [@tassoevan](https://github.com/tassoevan)) +- Fix threads rendering performance ([#14059](https://github.com/RocketChat/Rocket.Chat/pull/14059)) - Fix threads tests ([#14180](https://github.com/RocketChat/Rocket.Chat/pull/14180)) -- Fix top bar unread message counter ([#14102](https://github.com/RocketChat/Rocket.Chat/pull/14102) by [@tassoevan](https://github.com/tassoevan)) +- Fix top bar unread message counter ([#14102](https://github.com/RocketChat/Rocket.Chat/pull/14102)) - Fix update apps capability of updating messages ([#14118](https://github.com/RocketChat/Rocket.Chat/pull/14118)) - Fix wrong imports ([#13601](https://github.com/RocketChat/Rocket.Chat/pull/13601)) -- Fix: addRoomAccessValidator method created for Threads ([#13789](https://github.com/RocketChat/Rocket.Chat/pull/13789) by [@renatobecker](https://github.com/renatobecker)) +- Fix: addRoomAccessValidator method created for Threads ([#13789](https://github.com/RocketChat/Rocket.Chat/pull/13789)) - Fix: Error when version check endpoint was returning invalid data ([#14089](https://github.com/RocketChat/Rocket.Chat/pull/14089)) @@ -16394,17 +16275,17 @@ - Fix: Mongo.setConnectionOptions was not being set correctly ([#13586](https://github.com/RocketChat/Rocket.Chat/pull/13586)) -- Fix: Remove message class `sequential` if `new-day` is present ([#14116](https://github.com/RocketChat/Rocket.Chat/pull/14116) by [@tassoevan](https://github.com/tassoevan)) +- Fix: Remove message class `sequential` if `new-day` is present ([#14116](https://github.com/RocketChat/Rocket.Chat/pull/14116)) - Fix: Skip thread notifications on message edit ([#14100](https://github.com/RocketChat/Rocket.Chat/pull/14100)) -- Fix: Some german translations ([#13299](https://github.com/RocketChat/Rocket.Chat/pull/13299) by [@soenkef](https://github.com/soenkef) & [@tassoevan](https://github.com/tassoevan)) +- Fix: Some german translations ([#13299](https://github.com/RocketChat/Rocket.Chat/pull/13299) by [@soenkef](https://github.com/soenkef)) - Fix: Tests were not exiting RC instances ([#14054](https://github.com/RocketChat/Rocket.Chat/pull/14054)) -- Force some words to translate in other languages ([#13367](https://github.com/RocketChat/Rocket.Chat/pull/13367) by [@soltanabadiyan](https://github.com/soltanabadiyan) & [@tassoevan](https://github.com/tassoevan)) +- Force some words to translate in other languages ([#13367](https://github.com/RocketChat/Rocket.Chat/pull/13367) by [@soltanabadiyan](https://github.com/soltanabadiyan)) -- Force unstyling of blockquote under .message-body--unstyled ([#14274](https://github.com/RocketChat/Rocket.Chat/pull/14274) by [@tassoevan](https://github.com/tassoevan)) +- Force unstyling of blockquote under .message-body--unstyled ([#14274](https://github.com/RocketChat/Rocket.Chat/pull/14274)) - Improve message validation ([#14266](https://github.com/RocketChat/Rocket.Chat/pull/14266)) @@ -16414,7 +16295,7 @@ - Improve: Send cloud token to Federation Hub ([#13651](https://github.com/RocketChat/Rocket.Chat/pull/13651)) -- Improve: Support search and adding federated users through regular endpoints ([#13936](https://github.com/RocketChat/Rocket.Chat/pull/13936) by [@alansikora](https://github.com/alansikora)) +- Improve: Support search and adding federated users through regular endpoints ([#13936](https://github.com/RocketChat/Rocket.Chat/pull/13936)) - Increment user counter on DMs ([#14185](https://github.com/RocketChat/Rocket.Chat/pull/14185)) @@ -16432,49 +16313,49 @@ - Lingohub sync and additional fixes ([#13825](https://github.com/RocketChat/Rocket.Chat/pull/13825)) -- Merge master into develop & Set version to 1.0.0-develop ([#13435](https://github.com/RocketChat/Rocket.Chat/pull/13435) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@TkTech](https://github.com/TkTech) & [@renatobecker](https://github.com/renatobecker) & [@theundefined](https://github.com/theundefined)) +- Merge master into develop & Set version to 1.0.0-develop ([#13435](https://github.com/RocketChat/Rocket.Chat/pull/13435) by [@Hudell](https://github.com/Hudell) & [@TkTech](https://github.com/TkTech) & [@theundefined](https://github.com/theundefined)) - Move LDAP Escape to login handler ([#14234](https://github.com/RocketChat/Rocket.Chat/pull/14234)) - Move mongo config away from cors package ([#13531](https://github.com/RocketChat/Rocket.Chat/pull/13531)) -- Move rc-livechat server models to rc-models ([#13384](https://github.com/RocketChat/Rocket.Chat/pull/13384) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move rc-livechat server models to rc-models ([#13384](https://github.com/RocketChat/Rocket.Chat/pull/13384)) - New threads layout ([#14269](https://github.com/RocketChat/Rocket.Chat/pull/14269)) - OpenShift custom OAuth support ([#13925](https://github.com/RocketChat/Rocket.Chat/pull/13925) by [@bsharrow](https://github.com/bsharrow)) -- Prevent click on reply thread to trigger flex tab closing ([#14215](https://github.com/RocketChat/Rocket.Chat/pull/14215) by [@tassoevan](https://github.com/tassoevan)) +- Prevent click on reply thread to trigger flex tab closing ([#14215](https://github.com/RocketChat/Rocket.Chat/pull/14215)) - Prevent error for ldap login with invalid characters ([#14160](https://github.com/RocketChat/Rocket.Chat/pull/14160)) -- Prevent error on normalize thread message for preview ([#14170](https://github.com/RocketChat/Rocket.Chat/pull/14170) by [@tassoevan](https://github.com/tassoevan)) +- Prevent error on normalize thread message for preview ([#14170](https://github.com/RocketChat/Rocket.Chat/pull/14170)) - Prioritize user-mentions badge ([#14057](https://github.com/RocketChat/Rocket.Chat/pull/14057)) -- Proper thread quote, clear message box on send, and other nice things to have ([#14049](https://github.com/RocketChat/Rocket.Chat/pull/14049) by [@tassoevan](https://github.com/tassoevan)) +- Proper thread quote, clear message box on send, and other nice things to have ([#14049](https://github.com/RocketChat/Rocket.Chat/pull/14049)) - Regression: Active room was not being marked ([#14276](https://github.com/RocketChat/Rocket.Chat/pull/14276)) -- Regression: Add debounce on admin users search to avoid blocking by DDP Rate Limiter ([#13529](https://github.com/RocketChat/Rocket.Chat/pull/13529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Add debounce on admin users search to avoid blocking by DDP Rate Limiter ([#13529](https://github.com/RocketChat/Rocket.Chat/pull/13529)) -- Regression: Add missing translations used in Apps pages ([#13674](https://github.com/RocketChat/Rocket.Chat/pull/13674) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Add missing translations used in Apps pages ([#13674](https://github.com/RocketChat/Rocket.Chat/pull/13674)) -- Regression: Admin embedded layout ([#14229](https://github.com/RocketChat/Rocket.Chat/pull/14229) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Admin embedded layout ([#14229](https://github.com/RocketChat/Rocket.Chat/pull/14229)) -- Regression: Broken UI for messages ([#14223](https://github.com/RocketChat/Rocket.Chat/pull/14223) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Broken UI for messages ([#14223](https://github.com/RocketChat/Rocket.Chat/pull/14223)) -- Regression: Cursor position set to beginning when editing a message ([#14245](https://github.com/RocketChat/Rocket.Chat/pull/14245) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Cursor position set to beginning when editing a message ([#14245](https://github.com/RocketChat/Rocket.Chat/pull/14245)) - Regression: Discussions - Invite users and DM ([#13646](https://github.com/RocketChat/Rocket.Chat/pull/13646)) -- Regression: Discussions were not showing on Tab Bar ([#14050](https://github.com/RocketChat/Rocket.Chat/pull/14050) by [@knrt10](https://github.com/knrt10) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Discussions were not showing on Tab Bar ([#14050](https://github.com/RocketChat/Rocket.Chat/pull/14050) by [@knrt10](https://github.com/knrt10)) - Regression: Exception on notification when adding someone in room via mention ([#14251](https://github.com/RocketChat/Rocket.Chat/pull/14251)) - Regression: fix app pages styles ([#13567](https://github.com/RocketChat/Rocket.Chat/pull/13567)) -- Regression: Fix autolinker that was not parsing urls correctly ([#13497](https://github.com/RocketChat/Rocket.Chat/pull/13497) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Fix autolinker that was not parsing urls correctly ([#13497](https://github.com/RocketChat/Rocket.Chat/pull/13497)) - Regression: fix drop file ([#14225](https://github.com/RocketChat/Rocket.Chat/pull/14225)) @@ -16484,23 +16365,23 @@ - Regression: Fix icon for DMs ([#13679](https://github.com/RocketChat/Rocket.Chat/pull/13679)) -- Regression: Fix wrong imports in rc-models ([#13516](https://github.com/RocketChat/Rocket.Chat/pull/13516) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Fix wrong imports in rc-models ([#13516](https://github.com/RocketChat/Rocket.Chat/pull/13516)) - Regression: grouping messages on threads ([#14238](https://github.com/RocketChat/Rocket.Chat/pull/14238)) -- Regression: Message box does not go back to initial state after sending a message ([#14161](https://github.com/RocketChat/Rocket.Chat/pull/14161) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Message box does not go back to initial state after sending a message ([#14161](https://github.com/RocketChat/Rocket.Chat/pull/14161)) -- Regression: Message box geolocation was throwing error ([#13496](https://github.com/RocketChat/Rocket.Chat/pull/13496) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@tassoevan](https://github.com/tassoevan)) +- Regression: Message box geolocation was throwing error ([#13496](https://github.com/RocketChat/Rocket.Chat/pull/13496)) -- Regression: Missing settings import at `packages/rocketchat-livechat/server/methods/saveAppearance.js` ([#13573](https://github.com/RocketChat/Rocket.Chat/pull/13573) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Missing settings import at `packages/rocketchat-livechat/server/methods/saveAppearance.js` ([#13573](https://github.com/RocketChat/Rocket.Chat/pull/13573)) - Regression: Not updating subscriptions and not showing desktop notifcations ([#13509](https://github.com/RocketChat/Rocket.Chat/pull/13509)) -- Regression: Prevent startup errors for mentions parsing ([#14219](https://github.com/RocketChat/Rocket.Chat/pull/14219) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Prevent startup errors for mentions parsing ([#14219](https://github.com/RocketChat/Rocket.Chat/pull/14219)) - Regression: Prune Threads ([#13683](https://github.com/RocketChat/Rocket.Chat/pull/13683)) -- Regression: Remove border from unstyled message body ([#14235](https://github.com/RocketChat/Rocket.Chat/pull/14235) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Remove border from unstyled message body ([#14235](https://github.com/RocketChat/Rocket.Chat/pull/14235)) - Regression: removed backup files ([#13729](https://github.com/RocketChat/Rocket.Chat/pull/13729)) @@ -16508,85 +16389,85 @@ - Regression: Sidebar create new channel hover text ([#13658](https://github.com/RocketChat/Rocket.Chat/pull/13658) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Regression: System messages styling ([#14189](https://github.com/RocketChat/Rocket.Chat/pull/14189) by [@tassoevan](https://github.com/tassoevan)) +- Regression: System messages styling ([#14189](https://github.com/RocketChat/Rocket.Chat/pull/14189)) -- Regression: Table admin pages ([#13411](https://github.com/RocketChat/Rocket.Chat/pull/13411) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Table admin pages ([#13411](https://github.com/RocketChat/Rocket.Chat/pull/13411)) -- Regression: Template error ([#13410](https://github.com/RocketChat/Rocket.Chat/pull/13410) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Template error ([#13410](https://github.com/RocketChat/Rocket.Chat/pull/13410)) -- Regression: Threads styles improvement ([#13741](https://github.com/RocketChat/Rocket.Chat/pull/13741) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Threads styles improvement ([#13741](https://github.com/RocketChat/Rocket.Chat/pull/13741)) - Regression: User autocomplete was not listing users from correct room ([#14125](https://github.com/RocketChat/Rocket.Chat/pull/14125)) - Regression: User Discussions join message ([#13656](https://github.com/RocketChat/Rocket.Chat/pull/13656) by [@bhardwajaditya](https://github.com/bhardwajaditya)) -- Regression: wrong expression at messageBox.actions.remove() ([#14192](https://github.com/RocketChat/Rocket.Chat/pull/14192) by [@tassoevan](https://github.com/tassoevan)) +- Regression: wrong expression at messageBox.actions.remove() ([#14192](https://github.com/RocketChat/Rocket.Chat/pull/14192)) - Remove bitcoin link in Readme.md since the link is broken ([#13935](https://github.com/RocketChat/Rocket.Chat/pull/13935) by [@ashwaniYDV](https://github.com/ashwaniYDV)) -- Remove dependency of RC namespace in rc-livechat/imports, lib, server/api, server/hooks and server/lib ([#13379](https://github.com/RocketChat/Rocket.Chat/pull/13379) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-livechat/imports, lib, server/api, server/hooks and server/lib ([#13379](https://github.com/RocketChat/Rocket.Chat/pull/13379)) -- Remove dependency of RC namespace in rc-livechat/server/methods ([#13382](https://github.com/RocketChat/Rocket.Chat/pull/13382) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-livechat/server/methods ([#13382](https://github.com/RocketChat/Rocket.Chat/pull/13382)) -- Remove dependency of RC namespace in rc-livechat/server/models ([#13377](https://github.com/RocketChat/Rocket.Chat/pull/13377) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-livechat/server/models ([#13377](https://github.com/RocketChat/Rocket.Chat/pull/13377)) -- Remove dependency of RC namespace in rc-oauth2-server and message-star ([#13344](https://github.com/RocketChat/Rocket.Chat/pull/13344) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-oauth2-server and message-star ([#13344](https://github.com/RocketChat/Rocket.Chat/pull/13344)) -- Remove dependency of RC namespace in rc-setup-wizard, slackbridge and asciiarts ([#13348](https://github.com/RocketChat/Rocket.Chat/pull/13348) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-setup-wizard, slackbridge and asciiarts ([#13348](https://github.com/RocketChat/Rocket.Chat/pull/13348)) -- Remove dependency of RC namespace in rc-slash-kick, leave, me, msg, mute, open, topic and unarchiveroom ([#13357](https://github.com/RocketChat/Rocket.Chat/pull/13357) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-slash-kick, leave, me, msg, mute, open, topic and unarchiveroom ([#13357](https://github.com/RocketChat/Rocket.Chat/pull/13357)) -- Remove dependency of RC namespace in rc-ui-clean-history, ui-admin and ui-login ([#13362](https://github.com/RocketChat/Rocket.Chat/pull/13362) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-ui-clean-history, ui-admin and ui-login ([#13362](https://github.com/RocketChat/Rocket.Chat/pull/13362)) -- Remove dependency of RC namespace in rc-wordpress, chatpal-search and irc ([#13492](https://github.com/RocketChat/Rocket.Chat/pull/13492) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in rc-wordpress, chatpal-search and irc ([#13492](https://github.com/RocketChat/Rocket.Chat/pull/13492)) -- Remove dependency of RC namespace in root server folder - step 2 ([#13397](https://github.com/RocketChat/Rocket.Chat/pull/13397) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root server folder - step 2 ([#13397](https://github.com/RocketChat/Rocket.Chat/pull/13397)) -- Remove dependency of RC namespace in root server folder - step 3 ([#13398](https://github.com/RocketChat/Rocket.Chat/pull/13398) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root server folder - step 3 ([#13398](https://github.com/RocketChat/Rocket.Chat/pull/13398)) -- Remove dependency of RC namespace in root server folder - step 5 ([#13402](https://github.com/RocketChat/Rocket.Chat/pull/13402) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root server folder - step 5 ([#13402](https://github.com/RocketChat/Rocket.Chat/pull/13402)) -- Remove dependency of RC namespace in root server folder - step 6 ([#13405](https://github.com/RocketChat/Rocket.Chat/pull/13405) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RC namespace in root server folder - step 6 ([#13405](https://github.com/RocketChat/Rocket.Chat/pull/13405)) -- Remove Npm.depends and Npm.require except those that are inside package.js ([#13518](https://github.com/RocketChat/Rocket.Chat/pull/13518) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove Npm.depends and Npm.require except those that are inside package.js ([#13518](https://github.com/RocketChat/Rocket.Chat/pull/13518)) -- Remove Package references ([#13523](https://github.com/RocketChat/Rocket.Chat/pull/13523) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove Package references ([#13523](https://github.com/RocketChat/Rocket.Chat/pull/13523)) - Remove Sandstorm support ([#13773](https://github.com/RocketChat/Rocket.Chat/pull/13773)) -- Remove some bad references to messageBox ([#13954](https://github.com/RocketChat/Rocket.Chat/pull/13954) by [@tassoevan](https://github.com/tassoevan)) +- Remove some bad references to messageBox ([#13954](https://github.com/RocketChat/Rocket.Chat/pull/13954)) - Remove some index.js files routing for server/client files ([#13772](https://github.com/RocketChat/Rocket.Chat/pull/13772)) -- Remove unused files ([#13833](https://github.com/RocketChat/Rocket.Chat/pull/13833) by [@tassoevan](https://github.com/tassoevan)) +- Remove unused files ([#13833](https://github.com/RocketChat/Rocket.Chat/pull/13833)) - Remove unused files ([#13725](https://github.com/RocketChat/Rocket.Chat/pull/13725)) -- Remove unused style ([#13834](https://github.com/RocketChat/Rocket.Chat/pull/13834) by [@tassoevan](https://github.com/tassoevan)) +- Remove unused style ([#13834](https://github.com/RocketChat/Rocket.Chat/pull/13834)) - Removed old templates ([#13406](https://github.com/RocketChat/Rocket.Chat/pull/13406)) -- Removing (almost) every dynamic imports ([#13767](https://github.com/RocketChat/Rocket.Chat/pull/13767) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removing (almost) every dynamic imports ([#13767](https://github.com/RocketChat/Rocket.Chat/pull/13767)) - Rename Cloud to Connectivity Services & split Apps in Apps and Marketplace ([#14211](https://github.com/RocketChat/Rocket.Chat/pull/14211)) - Rename Threads to Discussion ([#13782](https://github.com/RocketChat/Rocket.Chat/pull/13782)) -- Settings: disable reset button ([#14026](https://github.com/RocketChat/Rocket.Chat/pull/14026) by [@alansikora](https://github.com/alansikora)) +- Settings: disable reset button ([#14026](https://github.com/RocketChat/Rocket.Chat/pull/14026)) -- Settings: hiding reset button for readonly fields ([#14025](https://github.com/RocketChat/Rocket.Chat/pull/14025) by [@alansikora](https://github.com/alansikora)) +- Settings: hiding reset button for readonly fields ([#14025](https://github.com/RocketChat/Rocket.Chat/pull/14025)) - Show discussion avatar ([#14053](https://github.com/RocketChat/Rocket.Chat/pull/14053)) - Small improvements to federation callbacks/hooks ([#13946](https://github.com/RocketChat/Rocket.Chat/pull/13946)) -- Smaller thread replies and system messages ([#14099](https://github.com/RocketChat/Rocket.Chat/pull/14099) by [@tassoevan](https://github.com/tassoevan)) +- Smaller thread replies and system messages ([#14099](https://github.com/RocketChat/Rocket.Chat/pull/14099)) -- Unify mime-type package configuration ([#14217](https://github.com/RocketChat/Rocket.Chat/pull/14217) by [@tassoevan](https://github.com/tassoevan)) +- Unify mime-type package configuration ([#14217](https://github.com/RocketChat/Rocket.Chat/pull/14217)) - Unstuck observers every minute ([#14076](https://github.com/RocketChat/Rocket.Chat/pull/14076)) -- Update badges and mention links colors ([#14071](https://github.com/RocketChat/Rocket.Chat/pull/14071) by [@tassoevan](https://github.com/tassoevan)) +- Update badges and mention links colors ([#14071](https://github.com/RocketChat/Rocket.Chat/pull/14071)) - Update eslint config ([#13966](https://github.com/RocketChat/Rocket.Chat/pull/13966)) @@ -16598,9 +16479,9 @@ - Use CircleCI Debian Stretch images ([#13906](https://github.com/RocketChat/Rocket.Chat/pull/13906)) -- Use main message as thread tab title ([#14213](https://github.com/RocketChat/Rocket.Chat/pull/14213) by [@tassoevan](https://github.com/tassoevan)) +- Use main message as thread tab title ([#14213](https://github.com/RocketChat/Rocket.Chat/pull/14213)) -- Use own logic to get thread infos via REST ([#14210](https://github.com/RocketChat/Rocket.Chat/pull/14210) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Use own logic to get thread infos via REST ([#14210](https://github.com/RocketChat/Rocket.Chat/pull/14210)) - User remove role dialog fixed ([#13874](https://github.com/RocketChat/Rocket.Chat/pull/13874) by [@bhardwajaditya](https://github.com/bhardwajaditya)) @@ -16613,13 +16494,11 @@ - [@DeviaVir](https://github.com/DeviaVir) - [@Hudell](https://github.com/Hudell) - [@Kailash0311](https://github.com/Kailash0311) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@MohammedEssehemy](https://github.com/MohammedEssehemy) - [@Montel](https://github.com/Montel) - [@Mr-Linus](https://github.com/Mr-Linus) - [@Peym4n](https://github.com/Peym4n) - [@TkTech](https://github.com/TkTech) -- [@alansikora](https://github.com/alansikora) - [@algomaster99](https://github.com/algomaster99) - [@ashwaniYDV](https://github.com/ashwaniYDV) - [@bhardwajaditya](https://github.com/bhardwajaditya) @@ -16640,14 +16519,12 @@ - [@nylen](https://github.com/nylen) - [@pkolmann](https://github.com/pkolmann) - [@ralfbecker](https://github.com/ralfbecker) -- [@renatobecker](https://github.com/renatobecker) - [@rssilva](https://github.com/rssilva) - [@savish28](https://github.com/savish28) - [@soenkef](https://github.com/soenkef) - [@soltanabadiyan](https://github.com/soltanabadiyan) - [@steerben](https://github.com/steerben) - [@supra08](https://github.com/supra08) -- [@tassoevan](https://github.com/tassoevan) - [@thayannevls](https://github.com/thayannevls) - [@the4ndy](https://github.com/the4ndy) - [@theundefined](https://github.com/theundefined) @@ -16665,14 +16542,18 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.74.3 `2019-02-13 · 3 🚀 · 11 🐛 · 3 🔍 · 9 👩‍💻👨‍💻` @@ -16694,25 +16575,25 @@ ### 🐛 Bug fixes -- "Test Desktop Notifications" not triggering a notification ([#13457](https://github.com/RocketChat/Rocket.Chat/pull/13457) by [@tassoevan](https://github.com/tassoevan)) +- "Test Desktop Notifications" not triggering a notification ([#13457](https://github.com/RocketChat/Rocket.Chat/pull/13457)) -- Invalid condition on getting next livechat agent over REST API endpoint ([#13360](https://github.com/RocketChat/Rocket.Chat/pull/13360) by [@renatobecker](https://github.com/renatobecker)) +- Invalid condition on getting next livechat agent over REST API endpoint ([#13360](https://github.com/RocketChat/Rocket.Chat/pull/13360)) - Invalid push gateway configuration, requires the uniqueId ([#13423](https://github.com/RocketChat/Rocket.Chat/pull/13423)) -- Misaligned upload progress bar "cancel" button ([#13407](https://github.com/RocketChat/Rocket.Chat/pull/13407) by [@tassoevan](https://github.com/tassoevan)) +- Misaligned upload progress bar "cancel" button ([#13407](https://github.com/RocketChat/Rocket.Chat/pull/13407)) - Not translated emails ([#13452](https://github.com/RocketChat/Rocket.Chat/pull/13452)) -- Notify private settings changes even on public settings changed ([#13369](https://github.com/RocketChat/Rocket.Chat/pull/13369) by [@tassoevan](https://github.com/tassoevan)) +- Notify private settings changes even on public settings changed ([#13369](https://github.com/RocketChat/Rocket.Chat/pull/13369)) -- Properly escape custom emoji names for pattern matching ([#13408](https://github.com/RocketChat/Rocket.Chat/pull/13408) by [@tassoevan](https://github.com/tassoevan)) +- Properly escape custom emoji names for pattern matching ([#13408](https://github.com/RocketChat/Rocket.Chat/pull/13408)) - Several Problems on HipChat Importer ([#13336](https://github.com/RocketChat/Rocket.Chat/pull/13336) by [@Hudell](https://github.com/Hudell)) - Translated and incorrect i18n variables ([#13463](https://github.com/RocketChat/Rocket.Chat/pull/13463) by [@leonboot](https://github.com/leonboot)) -- Update Russian localization ([#13244](https://github.com/RocketChat/Rocket.Chat/pull/13244) by [@BehindLoader](https://github.com/BehindLoader) & [@tassoevan](https://github.com/tassoevan)) +- Update Russian localization ([#13244](https://github.com/RocketChat/Rocket.Chat/pull/13244) by [@BehindLoader](https://github.com/BehindLoader)) - XML-decryption module not found ([#13437](https://github.com/RocketChat/Rocket.Chat/pull/13437) by [@Hudell](https://github.com/Hudell)) @@ -16722,7 +16603,7 @@ - Regression: Remove console.log on email translations ([#13456](https://github.com/RocketChat/Rocket.Chat/pull/13456)) -- Release 0.74.3 ([#13474](https://github.com/RocketChat/Rocket.Chat/pull/13474) by [@BehindLoader](https://github.com/BehindLoader) & [@Hudell](https://github.com/Hudell) & [@leonboot](https://github.com/leonboot) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan)) +- Release 0.74.3 ([#13474](https://github.com/RocketChat/Rocket.Chat/pull/13474) by [@BehindLoader](https://github.com/BehindLoader) & [@Hudell](https://github.com/Hudell) & [@leonboot](https://github.com/leonboot)) - Room loading improvements ([#13471](https://github.com/RocketChat/Rocket.Chat/pull/13471)) @@ -16733,15 +16614,15 @@ - [@BehindLoader](https://github.com/BehindLoader) - [@Hudell](https://github.com/Hudell) - [@leonboot](https://github.com/leonboot) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@d-gubert](https://github.com/d-gubert) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.74.2 `2019-02-05 · 1 🚀 · 3 🐛 · 4 👩‍💻👨‍💻` @@ -16785,18 +16666,18 @@ - Add parseUrls field to the apps message converter ([#13248](https://github.com/RocketChat/Rocket.Chat/pull/13248)) -- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525) by [@renatobecker](https://github.com/renatobecker)) +- Collect data for Monthly/Daily Active Users for a future dashboard ([#11525](https://github.com/RocketChat/Rocket.Chat/pull/11525)) - Limit all DDP/Websocket requests (configurable via admin panel) ([#13311](https://github.com/RocketChat/Rocket.Chat/pull/13311)) -- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308) by [@renatobecker](https://github.com/renatobecker)) +- REST endpoint to forward livechat rooms ([#13308](https://github.com/RocketChat/Rocket.Chat/pull/13308)) ### 🐛 Bug fixes -- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix bug when user try recreate channel or group with same name and remove room from cache when user leaves room ([#12341](https://github.com/RocketChat/Rocket.Chat/pull/12341)) -- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell) & [@tassoevan](https://github.com/tassoevan)) +- HipChat Enterprise importer fails when importing a large amount of messages (millions) ([#13221](https://github.com/RocketChat/Rocket.Chat/pull/13221) by [@Hudell](https://github.com/Hudell)) - Hipchat Enterprise Importer not generating subscriptions ([#13293](https://github.com/RocketChat/Rocket.Chat/pull/13293) by [@Hudell](https://github.com/Hudell)) @@ -16819,16 +16700,16 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.74.0 `2019-01-28 · 11 🎉 · 11 🚀 · 15 🐛 · 36 🔍 · 22 👩‍💻👨‍💻` @@ -16841,25 +16722,25 @@ ### 🎉 New features -- Add Allow Methods directive to CORS ([#13073](https://github.com/RocketChat/Rocket.Chat/pull/13073) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add Allow Methods directive to CORS ([#13073](https://github.com/RocketChat/Rocket.Chat/pull/13073)) -- Add create, update and delete endpoint for custom emojis ([#13160](https://github.com/RocketChat/Rocket.Chat/pull/13160) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add create, update and delete endpoint for custom emojis ([#13160](https://github.com/RocketChat/Rocket.Chat/pull/13160)) -- Add new Livechat REST endpoint to update the visitor's status ([#13108](https://github.com/RocketChat/Rocket.Chat/pull/13108) by [@renatobecker](https://github.com/renatobecker)) +- Add new Livechat REST endpoint to update the visitor's status ([#13108](https://github.com/RocketChat/Rocket.Chat/pull/13108)) -- Add rate limiter to REST endpoints ([#11251](https://github.com/RocketChat/Rocket.Chat/pull/11251) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add rate limiter to REST endpoints ([#11251](https://github.com/RocketChat/Rocket.Chat/pull/11251)) -- Added an option to disable email when activate and deactivate users ([#13183](https://github.com/RocketChat/Rocket.Chat/pull/13183) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added an option to disable email when activate and deactivate users ([#13183](https://github.com/RocketChat/Rocket.Chat/pull/13183)) -- Added endpoint to update timeout of the jitsi video conference ([#13167](https://github.com/RocketChat/Rocket.Chat/pull/13167) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added endpoint to update timeout of the jitsi video conference ([#13167](https://github.com/RocketChat/Rocket.Chat/pull/13167)) -- Added stream to notify when agent status change ([#13076](https://github.com/RocketChat/Rocket.Chat/pull/13076) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added stream to notify when agent status change ([#13076](https://github.com/RocketChat/Rocket.Chat/pull/13076)) - Cloud Integration ([#13013](https://github.com/RocketChat/Rocket.Chat/pull/13013)) - Display total number of files and total upload size in admin ([#13184](https://github.com/RocketChat/Rocket.Chat/pull/13184)) -- Livechat GDPR compliance ([#12982](https://github.com/RocketChat/Rocket.Chat/pull/12982) by [@renatobecker](https://github.com/renatobecker)) +- Livechat GDPR compliance ([#12982](https://github.com/RocketChat/Rocket.Chat/pull/12982)) - SAML: Adds possibility to decrypt encrypted assertions ([#12153](https://github.com/RocketChat/Rocket.Chat/pull/12153) by [@gerbsen](https://github.com/gerbsen)) @@ -16870,7 +16751,7 @@ - Adds history log for all Importers and improves HipChat import performance ([#13083](https://github.com/RocketChat/Rocket.Chat/pull/13083) by [@Hudell](https://github.com/Hudell)) -- Adds the "showConnecting" property to Livechat Config payload ([#13158](https://github.com/RocketChat/Rocket.Chat/pull/13158) by [@renatobecker](https://github.com/renatobecker)) +- Adds the "showConnecting" property to Livechat Config payload ([#13158](https://github.com/RocketChat/Rocket.Chat/pull/13158)) - Change the way the app detail screen shows support link when it's an email ([#13129](https://github.com/RocketChat/Rocket.Chat/pull/13129)) @@ -16878,15 +16759,15 @@ - Inject metrics on callbacks ([#13266](https://github.com/RocketChat/Rocket.Chat/pull/13266)) -- New Livechat statistics added to statistics collector ([#13168](https://github.com/RocketChat/Rocket.Chat/pull/13168) by [@renatobecker](https://github.com/renatobecker)) +- New Livechat statistics added to statistics collector ([#13168](https://github.com/RocketChat/Rocket.Chat/pull/13168)) - Persian translations ([#13114](https://github.com/RocketChat/Rocket.Chat/pull/13114) by [@behnejad](https://github.com/behnejad)) - Process alerts from update checking ([#13194](https://github.com/RocketChat/Rocket.Chat/pull/13194)) -- Return room type field on Livechat findRoom method ([#13078](https://github.com/RocketChat/Rocket.Chat/pull/13078) by [@renatobecker](https://github.com/renatobecker)) +- Return room type field on Livechat findRoom method ([#13078](https://github.com/RocketChat/Rocket.Chat/pull/13078)) -- Return visitorEmails field on Livechat findGuest method ([#13097](https://github.com/RocketChat/Rocket.Chat/pull/13097) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@renatobecker](https://github.com/renatobecker)) +- Return visitorEmails field on Livechat findGuest method ([#13097](https://github.com/RocketChat/Rocket.Chat/pull/13097)) ### 🐛 Bug fixes @@ -16897,7 +16778,7 @@ - Change input type of e2e to password ([#13077](https://github.com/RocketChat/Rocket.Chat/pull/13077) by [@supra08](https://github.com/supra08)) -- Change webdav creation, due to changes in the npm lib after last update ([#13170](https://github.com/RocketChat/Rocket.Chat/pull/13170) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change webdav creation, due to changes in the npm lib after last update ([#13170](https://github.com/RocketChat/Rocket.Chat/pull/13170)) - Emoticons not displayed in room topic ([#12858](https://github.com/RocketChat/Rocket.Chat/pull/12858) by [@alexbartsch](https://github.com/alexbartsch)) @@ -16907,13 +16788,13 @@ - Notifications for mentions not working on large rooms and don't emit desktop notifications for offline users ([#13067](https://github.com/RocketChat/Rocket.Chat/pull/13067)) -- Remove ES6 code from Livechat widget script ([#13105](https://github.com/RocketChat/Rocket.Chat/pull/13105) by [@tassoevan](https://github.com/tassoevan)) +- Remove ES6 code from Livechat widget script ([#13105](https://github.com/RocketChat/Rocket.Chat/pull/13105)) - Remove unused code for Cordova ([#13188](https://github.com/RocketChat/Rocket.Chat/pull/13188)) - REST api client base url on subdir ([#13180](https://github.com/RocketChat/Rocket.Chat/pull/13180)) -- REST API endpoint `users.getPersonalAccessTokens` error when user has no access tokens ([#13150](https://github.com/RocketChat/Rocket.Chat/pull/13150) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API endpoint `users.getPersonalAccessTokens` error when user has no access tokens ([#13150](https://github.com/RocketChat/Rocket.Chat/pull/13150)) - Snap upgrade add post-refresh hook ([#13153](https://github.com/RocketChat/Rocket.Chat/pull/13153)) @@ -16925,75 +16806,75 @@ 🔍 Minor changes -- Remove dependency of RocketChat namespace and push-notifications ([#13137](https://github.com/RocketChat/Rocket.Chat/pull/13137) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RocketChat namespace and push-notifications ([#13137](https://github.com/RocketChat/Rocket.Chat/pull/13137)) - Change apps engine persistence bridge method to updateByAssociations ([#13239](https://github.com/RocketChat/Rocket.Chat/pull/13239)) -- Convert rocketchat-file-upload to main module structure ([#13094](https://github.com/RocketChat/Rocket.Chat/pull/13094) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-file-upload to main module structure ([#13094](https://github.com/RocketChat/Rocket.Chat/pull/13094)) -- Convert rocketchat-ui-master to main module structure ([#13107](https://github.com/RocketChat/Rocket.Chat/pull/13107) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-master to main module structure ([#13107](https://github.com/RocketChat/Rocket.Chat/pull/13107)) -- Convert rocketchat-ui-sidenav to main module structure ([#13098](https://github.com/RocketChat/Rocket.Chat/pull/13098) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-sidenav to main module structure ([#13098](https://github.com/RocketChat/Rocket.Chat/pull/13098)) -- Convert rocketchat-webrtc to main module structure ([#13117](https://github.com/RocketChat/Rocket.Chat/pull/13117) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-webrtc to main module structure ([#13117](https://github.com/RocketChat/Rocket.Chat/pull/13117)) -- Convert rocketchat:ui to main module structure ([#13132](https://github.com/RocketChat/Rocket.Chat/pull/13132) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat:ui to main module structure ([#13132](https://github.com/RocketChat/Rocket.Chat/pull/13132)) -- Globals/main module custom oauth ([#13037](https://github.com/RocketChat/Rocket.Chat/pull/13037) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Globals/main module custom oauth ([#13037](https://github.com/RocketChat/Rocket.Chat/pull/13037)) -- Globals/move rocketchat notifications ([#13035](https://github.com/RocketChat/Rocket.Chat/pull/13035) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Globals/move rocketchat notifications ([#13035](https://github.com/RocketChat/Rocket.Chat/pull/13035)) - Language: Edit typo "Обновлить" ([#13177](https://github.com/RocketChat/Rocket.Chat/pull/13177) by [@zpavlig](https://github.com/zpavlig)) - LingoHub based on develop ([#13201](https://github.com/RocketChat/Rocket.Chat/pull/13201)) -- Merge master into develop & Set version to 0.74.0-develop ([#13050](https://github.com/RocketChat/Rocket.Chat/pull/13050) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) +- Merge master into develop & Set version to 0.74.0-develop ([#13050](https://github.com/RocketChat/Rocket.Chat/pull/13050) by [@Hudell](https://github.com/Hudell) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan)) -- Move rocketchat models ([#13027](https://github.com/RocketChat/Rocket.Chat/pull/13027) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move rocketchat models ([#13027](https://github.com/RocketChat/Rocket.Chat/pull/13027)) -- Move rocketchat promises ([#13039](https://github.com/RocketChat/Rocket.Chat/pull/13039) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move rocketchat promises ([#13039](https://github.com/RocketChat/Rocket.Chat/pull/13039)) -- Move rocketchat settings to specific package ([#13026](https://github.com/RocketChat/Rocket.Chat/pull/13026) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move rocketchat settings to specific package ([#13026](https://github.com/RocketChat/Rocket.Chat/pull/13026)) -- Move some function to utils ([#13122](https://github.com/RocketChat/Rocket.Chat/pull/13122) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move some function to utils ([#13122](https://github.com/RocketChat/Rocket.Chat/pull/13122)) -- Move some ui function to ui-utils ([#13123](https://github.com/RocketChat/Rocket.Chat/pull/13123) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move some ui function to ui-utils ([#13123](https://github.com/RocketChat/Rocket.Chat/pull/13123)) -- Move UI Collections to rocketchat:models ([#13064](https://github.com/RocketChat/Rocket.Chat/pull/13064) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move UI Collections to rocketchat:models ([#13064](https://github.com/RocketChat/Rocket.Chat/pull/13064)) -- Move/create rocketchat callbacks ([#13034](https://github.com/RocketChat/Rocket.Chat/pull/13034) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move/create rocketchat callbacks ([#13034](https://github.com/RocketChat/Rocket.Chat/pull/13034)) -- Move/create rocketchat metrics ([#13032](https://github.com/RocketChat/Rocket.Chat/pull/13032) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move/create rocketchat metrics ([#13032](https://github.com/RocketChat/Rocket.Chat/pull/13032)) - Regression: Fix audio message upload ([#13224](https://github.com/RocketChat/Rocket.Chat/pull/13224)) - Regression: Fix emoji search ([#13207](https://github.com/RocketChat/Rocket.Chat/pull/13207)) -- Regression: Fix export AudioRecorder ([#13192](https://github.com/RocketChat/Rocket.Chat/pull/13192) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Fix export AudioRecorder ([#13192](https://github.com/RocketChat/Rocket.Chat/pull/13192)) - Regression: fix rooms model's collection name ([#13146](https://github.com/RocketChat/Rocket.Chat/pull/13146)) - Regression: fix upload permissions ([#13157](https://github.com/RocketChat/Rocket.Chat/pull/13157)) -- Release 0.74.0 ([#13270](https://github.com/RocketChat/Rocket.Chat/pull/13270) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Xuhao](https://github.com/Xuhao) & [@supra08](https://github.com/supra08) & [@tassoevan](https://github.com/tassoevan)) +- Release 0.74.0 ([#13270](https://github.com/RocketChat/Rocket.Chat/pull/13270) by [@Xuhao](https://github.com/Xuhao) & [@supra08](https://github.com/supra08)) -- Remove dependency between lib and authz ([#13066](https://github.com/RocketChat/Rocket.Chat/pull/13066) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency between lib and authz ([#13066](https://github.com/RocketChat/Rocket.Chat/pull/13066)) -- Remove dependency between RocketChat namespace and migrations ([#13133](https://github.com/RocketChat/Rocket.Chat/pull/13133) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency between RocketChat namespace and migrations ([#13133](https://github.com/RocketChat/Rocket.Chat/pull/13133)) -- Remove dependency of RocketChat namespace and custom-sounds ([#13136](https://github.com/RocketChat/Rocket.Chat/pull/13136) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RocketChat namespace and custom-sounds ([#13136](https://github.com/RocketChat/Rocket.Chat/pull/13136)) -- Remove dependency of RocketChat namespace and logger ([#13135](https://github.com/RocketChat/Rocket.Chat/pull/13135) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RocketChat namespace and logger ([#13135](https://github.com/RocketChat/Rocket.Chat/pull/13135)) -- Remove dependency of RocketChat namespace inside rocketchat:ui ([#13131](https://github.com/RocketChat/Rocket.Chat/pull/13131) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove dependency of RocketChat namespace inside rocketchat:ui ([#13131](https://github.com/RocketChat/Rocket.Chat/pull/13131)) -- Remove directly dependency between lib and e2e ([#13115](https://github.com/RocketChat/Rocket.Chat/pull/13115) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove directly dependency between lib and e2e ([#13115](https://github.com/RocketChat/Rocket.Chat/pull/13115)) -- Remove directly dependency between rocketchat:lib and emoji ([#13118](https://github.com/RocketChat/Rocket.Chat/pull/13118) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove directly dependency between rocketchat:lib and emoji ([#13118](https://github.com/RocketChat/Rocket.Chat/pull/13118)) -- Remove incorrect pt-BR translation ([#13074](https://github.com/RocketChat/Rocket.Chat/pull/13074) by [@tassoevan](https://github.com/tassoevan)) +- Remove incorrect pt-BR translation ([#13074](https://github.com/RocketChat/Rocket.Chat/pull/13074)) -- Rocketchat mailer ([#13036](https://github.com/RocketChat/Rocket.Chat/pull/13036) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Rocketchat mailer ([#13036](https://github.com/RocketChat/Rocket.Chat/pull/13036)) - Test only MongoDB with oplog versions 3.2 and 4.0 for PRs ([#13119](https://github.com/RocketChat/Rocket.Chat/pull/13119)) @@ -17004,28 +16885,28 @@ - [@Hudell](https://github.com/Hudell) - [@Jeroeny](https://github.com/Jeroeny) - [@Kailash0311](https://github.com/Kailash0311) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Xuhao](https://github.com/Xuhao) - [@alexbartsch](https://github.com/alexbartsch) - [@behnejad](https://github.com/behnejad) - [@gerbsen](https://github.com/gerbsen) - [@ohmonster](https://github.com/ohmonster) - [@piotrkochan](https://github.com/piotrkochan) -- [@renatobecker](https://github.com/renatobecker) - [@supra08](https://github.com/supra08) -- [@tassoevan](https://github.com/tassoevan) - [@zpavlig](https://github.com/zpavlig) ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.73.2 `2019-01-07 · 1 🎉 · 1 🔍 · 3 👩‍💻👨‍💻` @@ -17101,29 +16982,29 @@ - /api/v1/spotlight: return joinCodeRequired field for rooms ([#12651](https://github.com/RocketChat/Rocket.Chat/pull/12651) by [@cardoso](https://github.com/cardoso)) -- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309)) -- Add query parameter support to emoji-custom endpoint ([#12754](https://github.com/RocketChat/Rocket.Chat/pull/12754) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add query parameter support to emoji-custom endpoint ([#12754](https://github.com/RocketChat/Rocket.Chat/pull/12754)) - Added a link to contributing.md ([#12856](https://github.com/RocketChat/Rocket.Chat/pull/12856) by [@sanketsingh24](https://github.com/sanketsingh24)) -- Added chat.getDeletedMessages since specific date ([#13010](https://github.com/RocketChat/Rocket.Chat/pull/13010) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added chat.getDeletedMessages since specific date ([#13010](https://github.com/RocketChat/Rocket.Chat/pull/13010)) - Config hooks for snap ([#12351](https://github.com/RocketChat/Rocket.Chat/pull/12351)) -- Create new permission.listAll endpoint to be able to use updatedSince parameter ([#12748](https://github.com/RocketChat/Rocket.Chat/pull/12748) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Create new permission.listAll endpoint to be able to use updatedSince parameter ([#12748](https://github.com/RocketChat/Rocket.Chat/pull/12748)) -- Download button for each file in fileslist ([#12874](https://github.com/RocketChat/Rocket.Chat/pull/12874) by [@alexbartsch](https://github.com/alexbartsch) & [@tassoevan](https://github.com/tassoevan)) +- Download button for each file in fileslist ([#12874](https://github.com/RocketChat/Rocket.Chat/pull/12874) by [@alexbartsch](https://github.com/alexbartsch)) - Include message type & id in push notification payload ([#12771](https://github.com/RocketChat/Rocket.Chat/pull/12771) by [@cardoso](https://github.com/cardoso)) -- Livechat registration form message ([#12597](https://github.com/RocketChat/Rocket.Chat/pull/12597) by [@renatobecker](https://github.com/renatobecker)) +- Livechat registration form message ([#12597](https://github.com/RocketChat/Rocket.Chat/pull/12597)) -- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378) by [@tassoevan](https://github.com/tassoevan)) +- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378)) - Mandatory 2fa for role ([#9748](https://github.com/RocketChat/Rocket.Chat/pull/9748) by [@Hudell](https://github.com/Hudell) & [@karlprieb](https://github.com/karlprieb)) -- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623)) - Option to reset e2e key ([#12483](https://github.com/RocketChat/Rocket.Chat/pull/12483) by [@Hudell](https://github.com/Hudell)) @@ -17142,15 +17023,15 @@ - Add more methods to deal with rooms via Rocket.Chat.Apps ([#12680](https://github.com/RocketChat/Rocket.Chat/pull/12680)) -- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561) by [@renatobecker](https://github.com/renatobecker)) +- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561)) -- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105)) - Adding debugging instructions in README ([#12989](https://github.com/RocketChat/Rocket.Chat/pull/12989) by [@hypery2k](https://github.com/hypery2k)) - Allow apps to update persistence by association ([#12714](https://github.com/RocketChat/Rocket.Chat/pull/12714)) -- Allow transfer Livechats to online agents only ([#13008](https://github.com/RocketChat/Rocket.Chat/pull/13008) by [@renatobecker](https://github.com/renatobecker)) +- Allow transfer Livechats to online agents only ([#13008](https://github.com/RocketChat/Rocket.Chat/pull/13008)) - Atlassian Crowd settings and option to sync user data ([#12616](https://github.com/RocketChat/Rocket.Chat/pull/12616)) @@ -17168,17 +17049,17 @@ - Hipchat Enterprise Importer ([#12985](https://github.com/RocketChat/Rocket.Chat/pull/12985) by [@Hudell](https://github.com/Hudell)) -- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522) by [@renatobecker](https://github.com/renatobecker)) +- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522)) -- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563)) - Japanese translations ([#12382](https://github.com/RocketChat/Rocket.Chat/pull/12382) by [@ura14h](https://github.com/ura14h)) -- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@tassoevan](https://github.com/tassoevan) & [@vinade](https://github.com/vinade)) +- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@vinade](https://github.com/vinade)) -- Returning an open room object in the Livechat config endpoint ([#12865](https://github.com/RocketChat/Rocket.Chat/pull/12865) by [@renatobecker](https://github.com/renatobecker)) +- Returning an open room object in the Livechat config endpoint ([#12865](https://github.com/RocketChat/Rocket.Chat/pull/12865)) -- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock) & [@tassoevan](https://github.com/tassoevan)) +- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock)) - Use MongoBD aggregation to get users from a room ([#12566](https://github.com/RocketChat/Rocket.Chat/pull/12566)) @@ -17197,21 +17078,21 @@ - Autotranslate icon on message action menu ([#12585](https://github.com/RocketChat/Rocket.Chat/pull/12585)) -- Avoiding links with highlighted words ([#12123](https://github.com/RocketChat/Rocket.Chat/pull/12123) by [@rssilva](https://github.com/rssilva) & [@tassoevan](https://github.com/tassoevan)) +- Avoiding links with highlighted words ([#12123](https://github.com/RocketChat/Rocket.Chat/pull/12123) by [@rssilva](https://github.com/rssilva)) - cannot reset password ([#12903](https://github.com/RocketChat/Rocket.Chat/pull/12903) by [@Hudell](https://github.com/Hudell)) - CAS Login not working with renamed users ([#12860](https://github.com/RocketChat/Rocket.Chat/pull/12860) by [@Hudell](https://github.com/Hudell)) -- Change field checks in RocketChat.saveStreamingOptions ([#12973](https://github.com/RocketChat/Rocket.Chat/pull/12973) by [@tassoevan](https://github.com/tassoevan)) +- Change field checks in RocketChat.saveStreamingOptions ([#12973](https://github.com/RocketChat/Rocket.Chat/pull/12973)) -- Change JSON to EJSON.parse query to support type Date ([#12706](https://github.com/RocketChat/Rocket.Chat/pull/12706) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change JSON to EJSON.parse query to support type Date ([#12706](https://github.com/RocketChat/Rocket.Chat/pull/12706)) -- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb) & [@tassoevan](https://github.com/tassoevan)) +- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb)) -- Check for object falsehood before referencing properties in saveRoomSettings ([#12972](https://github.com/RocketChat/Rocket.Chat/pull/12972) by [@tassoevan](https://github.com/tassoevan)) +- Check for object falsehood before referencing properties in saveRoomSettings ([#12972](https://github.com/RocketChat/Rocket.Chat/pull/12972)) -- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632) by [@tassoevan](https://github.com/tassoevan)) +- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632)) - Correct roomName value in Mail Messages (#12363) ([#12453](https://github.com/RocketChat/Rocket.Chat/pull/12453) by [@vinade](https://github.com/vinade)) @@ -17221,7 +17102,7 @@ - DE translation for idle-time-limit ([#12637](https://github.com/RocketChat/Rocket.Chat/pull/12637) by [@pfuender](https://github.com/pfuender)) -- Download files without extension wasn't possible ([#13033](https://github.com/RocketChat/Rocket.Chat/pull/13033) by [@tassoevan](https://github.com/tassoevan)) +- Download files without extension wasn't possible ([#13033](https://github.com/RocketChat/Rocket.Chat/pull/13033)) - E2E`s password reaveal text is always `>%S` when language is zh ([#12795](https://github.com/RocketChat/Rocket.Chat/pull/12795) by [@lvyue](https://github.com/lvyue)) @@ -17231,13 +17112,13 @@ - Exception in getSingleMessage ([#12970](https://github.com/RocketChat/Rocket.Chat/pull/12970) by [@tsukiRep](https://github.com/tsukiRep)) -- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643)) -- Fix set avatar http call, to avoid SSL errors ([#12790](https://github.com/RocketChat/Rocket.Chat/pull/12790) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix set avatar http call, to avoid SSL errors ([#12790](https://github.com/RocketChat/Rocket.Chat/pull/12790)) -- Fix users.setPreferences endpoint, set language correctly ([#12734](https://github.com/RocketChat/Rocket.Chat/pull/12734) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix users.setPreferences endpoint, set language correctly ([#12734](https://github.com/RocketChat/Rocket.Chat/pull/12734)) -- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408)) - Fixed Anonymous Registration ([#12633](https://github.com/RocketChat/Rocket.Chat/pull/12633) by [@wreiske](https://github.com/wreiske)) @@ -17245,17 +17126,17 @@ - Google Cloud Storage storage provider ([#12843](https://github.com/RocketChat/Rocket.Chat/pull/12843)) -- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507) by [@tassoevan](https://github.com/tassoevan)) +- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507)) - high cpu usage ~ svg icon ([#12677](https://github.com/RocketChat/Rocket.Chat/pull/12677) by [@ph1p](https://github.com/ph1p)) -- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570)) -- Incorrect parameter name in Livechat stream ([#12851](https://github.com/RocketChat/Rocket.Chat/pull/12851) by [@renatobecker](https://github.com/renatobecker)) +- Incorrect parameter name in Livechat stream ([#12851](https://github.com/RocketChat/Rocket.Chat/pull/12851)) -- Inherit font family in message user card ([#13004](https://github.com/RocketChat/Rocket.Chat/pull/13004) by [@tassoevan](https://github.com/tassoevan)) +- Inherit font family in message user card ([#13004](https://github.com/RocketChat/Rocket.Chat/pull/13004)) -- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900) by [@tassoevan](https://github.com/tassoevan)) +- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900)) - Manage own integrations permissions check ([#12397](https://github.com/RocketChat/Rocket.Chat/pull/12397)) @@ -17263,41 +17144,41 @@ - Nested Markdown blocks not parsed properly ([#12998](https://github.com/RocketChat/Rocket.Chat/pull/12998) by [@Hudell](https://github.com/Hudell)) -- Padding for message box in embedded layout ([#12556](https://github.com/RocketChat/Rocket.Chat/pull/12556) by [@tassoevan](https://github.com/tassoevan)) +- Padding for message box in embedded layout ([#12556](https://github.com/RocketChat/Rocket.Chat/pull/12556)) -- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882) by [@tassoevan](https://github.com/tassoevan)) +- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882)) -- Pin and unpin message were not checking permissions ([#12739](https://github.com/RocketChat/Rocket.Chat/pull/12739) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Pin and unpin message were not checking permissions ([#12739](https://github.com/RocketChat/Rocket.Chat/pull/12739)) -- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558)) -- Provide better Dutch translations 🇳🇱 ([#12792](https://github.com/RocketChat/Rocket.Chat/pull/12792) by [@mathysie](https://github.com/mathysie) & [@tassoevan](https://github.com/tassoevan)) +- Provide better Dutch translations 🇳🇱 ([#12792](https://github.com/RocketChat/Rocket.Chat/pull/12792) by [@mathysie](https://github.com/mathysie)) - Readable validation on the apps engine environment bridge ([#12994](https://github.com/RocketChat/Rocket.Chat/pull/12994)) -- Remove sharp's deprecation warnings on image upload ([#12980](https://github.com/RocketChat/Rocket.Chat/pull/12980) by [@tassoevan](https://github.com/tassoevan)) +- Remove sharp's deprecation warnings on image upload ([#12980](https://github.com/RocketChat/Rocket.Chat/pull/12980)) - Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) - Revert Jitsi external API to an asset ([#12954](https://github.com/RocketChat/Rocket.Chat/pull/12954)) -- Some deprecation issues for media recording ([#12948](https://github.com/RocketChat/Rocket.Chat/pull/12948) by [@tassoevan](https://github.com/tassoevan)) +- Some deprecation issues for media recording ([#12948](https://github.com/RocketChat/Rocket.Chat/pull/12948)) -- Some icons were missing ([#12913](https://github.com/RocketChat/Rocket.Chat/pull/12913) by [@tassoevan](https://github.com/tassoevan)) +- Some icons were missing ([#12913](https://github.com/RocketChat/Rocket.Chat/pull/12913)) - Spotlight being called while in background ([#12957](https://github.com/RocketChat/Rocket.Chat/pull/12957)) - Spotlight method being called multiple times ([#12536](https://github.com/RocketChat/Rocket.Chat/pull/12536)) -- Stop click event propagation on mention link or user card ([#12983](https://github.com/RocketChat/Rocket.Chat/pull/12983) by [@tassoevan](https://github.com/tassoevan)) +- Stop click event propagation on mention link or user card ([#12983](https://github.com/RocketChat/Rocket.Chat/pull/12983)) - Stream of my_message wasn't sending the room information ([#12914](https://github.com/RocketChat/Rocket.Chat/pull/12914)) - stream room-changed ([#12411](https://github.com/RocketChat/Rocket.Chat/pull/12411)) -- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713) by [@tassoevan](https://github.com/tassoevan)) +- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713)) -- Use web.browser.legacy bundle for Livechat script ([#12975](https://github.com/RocketChat/Rocket.Chat/pull/12975) by [@tassoevan](https://github.com/tassoevan)) +- Use web.browser.legacy bundle for Livechat script ([#12975](https://github.com/RocketChat/Rocket.Chat/pull/12975)) - User data download fails when a room has been deleted. ([#12829](https://github.com/RocketChat/Rocket.Chat/pull/12829) by [@Hudell](https://github.com/Hudell)) @@ -17305,27 +17186,27 @@ - Webdav integration account settings were being shown even when Webdav was disabled ([#12569](https://github.com/RocketChat/Rocket.Chat/pull/12569) by [@karakayasemi](https://github.com/karakayasemi)) -- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539))
🔍 Minor changes -- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594)) -- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604)) -- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666)) -- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679)) -- Convert rocketchat-mentions-flextab to main module structure ([#12757](https://github.com/RocketChat/Rocket.Chat/pull/12757) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-mentions-flextab to main module structure ([#12757](https://github.com/RocketChat/Rocket.Chat/pull/12757)) -- Convert rocketchat-reactions to main module structure ([#12888](https://github.com/RocketChat/Rocket.Chat/pull/12888) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-reactions to main module structure ([#12888](https://github.com/RocketChat/Rocket.Chat/pull/12888)) -- Convert rocketchat-ui-account to main module structure ([#12842](https://github.com/RocketChat/Rocket.Chat/pull/12842) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-account to main module structure ([#12842](https://github.com/RocketChat/Rocket.Chat/pull/12842)) -- Convert rocketchat-ui-flextab to main module structure ([#12859](https://github.com/RocketChat/Rocket.Chat/pull/12859) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-flextab to main module structure ([#12859](https://github.com/RocketChat/Rocket.Chat/pull/12859)) - [DOCS] Remove Cordova links, include F-Droid download button and few other adjustments ([#12583](https://github.com/RocketChat/Rocket.Chat/pull/12583) by [@rafaelks](https://github.com/rafaelks)) @@ -17333,215 +17214,215 @@ - Added "npm install" to quick start for developers ([#12374](https://github.com/RocketChat/Rocket.Chat/pull/12374) by [@wreiske](https://github.com/wreiske)) -- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647)) - Bump Apps Engine to 1.3.0 ([#12705](https://github.com/RocketChat/Rocket.Chat/pull/12705)) -- Change `chat.getDeletedMessages` to get messages after informed date and return only message's _id ([#13021](https://github.com/RocketChat/Rocket.Chat/pull/13021) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change `chat.getDeletedMessages` to get messages after informed date and return only message's _id ([#13021](https://github.com/RocketChat/Rocket.Chat/pull/13021)) - changed maxRoomsOpen ([#12949](https://github.com/RocketChat/Rocket.Chat/pull/12949)) -- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485)) -- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605)) -- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486)) -- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491)) -- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495)) -- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501)) -- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503)) -- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506)) -- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510)) -- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521)) -- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523)) -- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529)) -- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530)) -- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531)) -- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532)) -- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537)) -- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538)) -- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595)) -- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596)) -- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599)) -- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600)) -- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601)) -- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603)) -- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606)) -- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607)) -- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644)) -- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642)) -- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646)) -- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649)) -- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657)) -- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658)) -- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659)) -- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661)) -- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662)) -- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663)) -- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664)) -- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665)) -- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669)) -- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670)) -- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671)) -- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672)) -- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674)) -- Convert rocketchat-katex to main module structure ([#12895](https://github.com/RocketChat/Rocket.Chat/pull/12895) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-katex to main module structure ([#12895](https://github.com/RocketChat/Rocket.Chat/pull/12895)) -- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678)) -- Convert rocketchat-livechat to main module structure ([#12942](https://github.com/RocketChat/Rocket.Chat/pull/12942) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-livechat to main module structure ([#12942](https://github.com/RocketChat/Rocket.Chat/pull/12942)) -- Convert rocketchat-logger to main module structure and remove Logger from eslintrc ([#12995](https://github.com/RocketChat/Rocket.Chat/pull/12995) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-logger to main module structure and remove Logger from eslintrc ([#12995](https://github.com/RocketChat/Rocket.Chat/pull/12995)) -- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682)) -- Convert rocketchat-mapview to main module structure ([#12701](https://github.com/RocketChat/Rocket.Chat/pull/12701) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-mapview to main module structure ([#12701](https://github.com/RocketChat/Rocket.Chat/pull/12701)) -- Convert rocketchat-markdown to main module structure ([#12755](https://github.com/RocketChat/Rocket.Chat/pull/12755) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-markdown to main module structure ([#12755](https://github.com/RocketChat/Rocket.Chat/pull/12755)) -- Convert rocketchat-mentions to main module structure ([#12756](https://github.com/RocketChat/Rocket.Chat/pull/12756) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-mentions to main module structure ([#12756](https://github.com/RocketChat/Rocket.Chat/pull/12756)) -- Convert rocketchat-message-action to main module structure ([#12759](https://github.com/RocketChat/Rocket.Chat/pull/12759) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-message-action to main module structure ([#12759](https://github.com/RocketChat/Rocket.Chat/pull/12759)) -- Convert rocketchat-message-attachments to main module structure ([#12760](https://github.com/RocketChat/Rocket.Chat/pull/12760) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-message-attachments to main module structure ([#12760](https://github.com/RocketChat/Rocket.Chat/pull/12760)) -- Convert rocketchat-message-mark-as-unread to main module structure ([#12766](https://github.com/RocketChat/Rocket.Chat/pull/12766) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-message-mark-as-unread to main module structure ([#12766](https://github.com/RocketChat/Rocket.Chat/pull/12766)) -- Convert rocketchat-message-pin to main module structure ([#12767](https://github.com/RocketChat/Rocket.Chat/pull/12767) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-message-pin to main module structure ([#12767](https://github.com/RocketChat/Rocket.Chat/pull/12767)) -- Convert rocketchat-message-snippet to main module structure ([#12768](https://github.com/RocketChat/Rocket.Chat/pull/12768) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-message-snippet to main module structure ([#12768](https://github.com/RocketChat/Rocket.Chat/pull/12768)) -- Convert rocketchat-message-star to main module structure ([#12770](https://github.com/RocketChat/Rocket.Chat/pull/12770) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-message-star to main module structure ([#12770](https://github.com/RocketChat/Rocket.Chat/pull/12770)) -- Convert rocketchat-migrations to main-module structure ([#12772](https://github.com/RocketChat/Rocket.Chat/pull/12772) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-migrations to main-module structure ([#12772](https://github.com/RocketChat/Rocket.Chat/pull/12772)) -- Convert rocketchat-oauth2-server-config to main module structure ([#12773](https://github.com/RocketChat/Rocket.Chat/pull/12773) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-oauth2-server-config to main module structure ([#12773](https://github.com/RocketChat/Rocket.Chat/pull/12773)) -- Convert rocketchat-oembed to main module structure ([#12775](https://github.com/RocketChat/Rocket.Chat/pull/12775) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-oembed to main module structure ([#12775](https://github.com/RocketChat/Rocket.Chat/pull/12775)) -- Convert rocketchat-otr to main module structure ([#12777](https://github.com/RocketChat/Rocket.Chat/pull/12777) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-otr to main module structure ([#12777](https://github.com/RocketChat/Rocket.Chat/pull/12777)) -- Convert rocketchat-push-notifications to main module structure ([#12778](https://github.com/RocketChat/Rocket.Chat/pull/12778) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-push-notifications to main module structure ([#12778](https://github.com/RocketChat/Rocket.Chat/pull/12778)) -- Convert rocketchat-retention-policy to main module structure ([#12797](https://github.com/RocketChat/Rocket.Chat/pull/12797) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-retention-policy to main module structure ([#12797](https://github.com/RocketChat/Rocket.Chat/pull/12797)) -- Convert rocketchat-sandstorm to main module structure ([#12799](https://github.com/RocketChat/Rocket.Chat/pull/12799) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-sandstorm to main module structure ([#12799](https://github.com/RocketChat/Rocket.Chat/pull/12799)) -- Convert rocketchat-search to main module structure ([#12801](https://github.com/RocketChat/Rocket.Chat/pull/12801) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-search to main module structure ([#12801](https://github.com/RocketChat/Rocket.Chat/pull/12801)) -- Convert rocketchat-setup-wizard to main module structure ([#12806](https://github.com/RocketChat/Rocket.Chat/pull/12806) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-setup-wizard to main module structure ([#12806](https://github.com/RocketChat/Rocket.Chat/pull/12806)) -- Convert rocketchat-slackbridge to main module structure ([#12807](https://github.com/RocketChat/Rocket.Chat/pull/12807) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slackbridge to main module structure ([#12807](https://github.com/RocketChat/Rocket.Chat/pull/12807)) -- Convert rocketchat-slashcomands-archiveroom to main module structure ([#12810](https://github.com/RocketChat/Rocket.Chat/pull/12810) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcomands-archiveroom to main module structure ([#12810](https://github.com/RocketChat/Rocket.Chat/pull/12810)) -- Convert rocketchat-slashcommands-asciiarts to main module structure ([#12808](https://github.com/RocketChat/Rocket.Chat/pull/12808) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-asciiarts to main module structure ([#12808](https://github.com/RocketChat/Rocket.Chat/pull/12808)) -- Convert rocketchat-slashcommands-create to main module structure ([#12811](https://github.com/RocketChat/Rocket.Chat/pull/12811) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-create to main module structure ([#12811](https://github.com/RocketChat/Rocket.Chat/pull/12811)) -- Convert rocketchat-slashcommands-help to main module structure ([#12812](https://github.com/RocketChat/Rocket.Chat/pull/12812) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-help to main module structure ([#12812](https://github.com/RocketChat/Rocket.Chat/pull/12812)) -- Convert rocketchat-slashcommands-hide to main module structure ([#12813](https://github.com/RocketChat/Rocket.Chat/pull/12813) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-hide to main module structure ([#12813](https://github.com/RocketChat/Rocket.Chat/pull/12813)) -- Convert rocketchat-slashcommands-invite to main module structure ([#12814](https://github.com/RocketChat/Rocket.Chat/pull/12814) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-invite to main module structure ([#12814](https://github.com/RocketChat/Rocket.Chat/pull/12814)) -- Convert rocketchat-slashcommands-inviteall to main module structure ([#12815](https://github.com/RocketChat/Rocket.Chat/pull/12815) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-inviteall to main module structure ([#12815](https://github.com/RocketChat/Rocket.Chat/pull/12815)) -- Convert rocketchat-slashcommands-join to main module structure ([#12816](https://github.com/RocketChat/Rocket.Chat/pull/12816) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-join to main module structure ([#12816](https://github.com/RocketChat/Rocket.Chat/pull/12816)) -- Convert rocketchat-slashcommands-kick to main module structure ([#12817](https://github.com/RocketChat/Rocket.Chat/pull/12817) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-kick to main module structure ([#12817](https://github.com/RocketChat/Rocket.Chat/pull/12817)) -- Convert rocketchat-slashcommands-leave to main module structure ([#12821](https://github.com/RocketChat/Rocket.Chat/pull/12821) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-leave to main module structure ([#12821](https://github.com/RocketChat/Rocket.Chat/pull/12821)) -- Convert rocketchat-slashcommands-me to main module structure ([#12822](https://github.com/RocketChat/Rocket.Chat/pull/12822) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-me to main module structure ([#12822](https://github.com/RocketChat/Rocket.Chat/pull/12822)) -- Convert rocketchat-slashcommands-msg to main module structure ([#12823](https://github.com/RocketChat/Rocket.Chat/pull/12823) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-msg to main module structure ([#12823](https://github.com/RocketChat/Rocket.Chat/pull/12823)) -- Convert rocketchat-slashcommands-mute to main module structure ([#12824](https://github.com/RocketChat/Rocket.Chat/pull/12824) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-mute to main module structure ([#12824](https://github.com/RocketChat/Rocket.Chat/pull/12824)) -- Convert rocketchat-slashcommands-open to main module structure ([#12825](https://github.com/RocketChat/Rocket.Chat/pull/12825) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-open to main module structure ([#12825](https://github.com/RocketChat/Rocket.Chat/pull/12825)) -- Convert rocketchat-slashcommands-topic to main module structure ([#12826](https://github.com/RocketChat/Rocket.Chat/pull/12826) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-topic to main module structure ([#12826](https://github.com/RocketChat/Rocket.Chat/pull/12826)) -- Convert rocketchat-slashcommands-unarchiveroom to main module structure ([#12827](https://github.com/RocketChat/Rocket.Chat/pull/12827) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slashcommands-unarchiveroom to main module structure ([#12827](https://github.com/RocketChat/Rocket.Chat/pull/12827)) -- Convert rocketchat-slider to main module structure ([#12828](https://github.com/RocketChat/Rocket.Chat/pull/12828) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-slider to main module structure ([#12828](https://github.com/RocketChat/Rocket.Chat/pull/12828)) -- Convert rocketchat-smarsh-connector to main module structure ([#12830](https://github.com/RocketChat/Rocket.Chat/pull/12830) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-smarsh-connector to main module structure ([#12830](https://github.com/RocketChat/Rocket.Chat/pull/12830)) -- Convert rocketchat-sms to main module structure ([#12831](https://github.com/RocketChat/Rocket.Chat/pull/12831) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-sms to main module structure ([#12831](https://github.com/RocketChat/Rocket.Chat/pull/12831)) -- Convert rocketchat-spotify to main module structure ([#12832](https://github.com/RocketChat/Rocket.Chat/pull/12832) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-spotify to main module structure ([#12832](https://github.com/RocketChat/Rocket.Chat/pull/12832)) -- Convert rocketchat-statistics to main module structure ([#12833](https://github.com/RocketChat/Rocket.Chat/pull/12833) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-statistics to main module structure ([#12833](https://github.com/RocketChat/Rocket.Chat/pull/12833)) -- Convert rocketchat-theme to main module structure ([#12896](https://github.com/RocketChat/Rocket.Chat/pull/12896) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-theme to main module structure ([#12896](https://github.com/RocketChat/Rocket.Chat/pull/12896)) -- Convert rocketchat-token-login to main module structure ([#12837](https://github.com/RocketChat/Rocket.Chat/pull/12837) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-token-login to main module structure ([#12837](https://github.com/RocketChat/Rocket.Chat/pull/12837)) -- Convert rocketchat-tokenpass to main module structure ([#12838](https://github.com/RocketChat/Rocket.Chat/pull/12838) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-tokenpass to main module structure ([#12838](https://github.com/RocketChat/Rocket.Chat/pull/12838)) -- Convert rocketchat-tooltip to main module structure ([#12839](https://github.com/RocketChat/Rocket.Chat/pull/12839) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-tooltip to main module structure ([#12839](https://github.com/RocketChat/Rocket.Chat/pull/12839)) -- Convert rocketchat-ui-admin to main module structure ([#12844](https://github.com/RocketChat/Rocket.Chat/pull/12844) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-admin to main module structure ([#12844](https://github.com/RocketChat/Rocket.Chat/pull/12844)) -- Convert rocketchat-ui-clean-history to main module structure ([#12846](https://github.com/RocketChat/Rocket.Chat/pull/12846) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-clean-history to main module structure ([#12846](https://github.com/RocketChat/Rocket.Chat/pull/12846)) -- Convert rocketchat-ui-login to main module structure ([#12861](https://github.com/RocketChat/Rocket.Chat/pull/12861) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-login to main module structure ([#12861](https://github.com/RocketChat/Rocket.Chat/pull/12861)) -- Convert rocketchat-ui-message to main module structure ([#12871](https://github.com/RocketChat/Rocket.Chat/pull/12871) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-message to main module structure ([#12871](https://github.com/RocketChat/Rocket.Chat/pull/12871)) -- Convert rocketchat-ui-vrecord to main module structure ([#12875](https://github.com/RocketChat/Rocket.Chat/pull/12875) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ui-vrecord to main module structure ([#12875](https://github.com/RocketChat/Rocket.Chat/pull/12875)) -- Convert rocketchat-user-data-dowload to main module structure ([#12877](https://github.com/RocketChat/Rocket.Chat/pull/12877) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-user-data-dowload to main module structure ([#12877](https://github.com/RocketChat/Rocket.Chat/pull/12877)) -- Convert rocketchat-version-check to main module structure ([#12879](https://github.com/RocketChat/Rocket.Chat/pull/12879) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-version-check to main module structure ([#12879](https://github.com/RocketChat/Rocket.Chat/pull/12879)) -- Convert rocketchat-videobridge to main module structure ([#12881](https://github.com/RocketChat/Rocket.Chat/pull/12881) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-videobridge to main module structure ([#12881](https://github.com/RocketChat/Rocket.Chat/pull/12881)) -- Convert rocketchat-webdav to main module structure ([#12886](https://github.com/RocketChat/Rocket.Chat/pull/12886) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-webdav to main module structure ([#12886](https://github.com/RocketChat/Rocket.Chat/pull/12886)) -- Convert rocketchat-wordpress to main module structure ([#12887](https://github.com/RocketChat/Rocket.Chat/pull/12887) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-wordpress to main module structure ([#12887](https://github.com/RocketChat/Rocket.Chat/pull/12887)) - Dependencies update ([#12624](https://github.com/RocketChat/Rocket.Chat/pull/12624)) @@ -17551,21 +17432,21 @@ - Fix CSS import order ([#12524](https://github.com/RocketChat/Rocket.Chat/pull/12524)) -- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509) by [@tassoevan](https://github.com/tassoevan)) +- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509)) - Fix punctuation, spelling, and grammar ([#12451](https://github.com/RocketChat/Rocket.Chat/pull/12451) by [@imronras](https://github.com/imronras)) - Fix some Ukrainian translations ([#12712](https://github.com/RocketChat/Rocket.Chat/pull/12712) by [@zdumitru](https://github.com/zdumitru)) -- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625)) -- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645)) - Fix: Developers not being able to debug root files in VSCode ([#12440](https://github.com/RocketChat/Rocket.Chat/pull/12440) by [@mrsimpson](https://github.com/mrsimpson)) -- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699)) -- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707)) - Fix: snap push from ci ([#12883](https://github.com/RocketChat/Rocket.Chat/pull/12883)) @@ -17587,41 +17468,41 @@ - Move globals of test to a specific eslintrc file ([#12959](https://github.com/RocketChat/Rocket.Chat/pull/12959)) -- Move isFirefox and isChrome functions to rocketchat-utils ([#13011](https://github.com/RocketChat/Rocket.Chat/pull/13011) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move isFirefox and isChrome functions to rocketchat-utils ([#13011](https://github.com/RocketChat/Rocket.Chat/pull/13011)) -- Move tapi18n t and isRtl functions from ui to utils ([#13005](https://github.com/RocketChat/Rocket.Chat/pull/13005) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Move tapi18n t and isRtl functions from ui to utils ([#13005](https://github.com/RocketChat/Rocket.Chat/pull/13005)) -- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735)) -- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736)) -- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737)) -- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729)) -- Regression: List of custom emojis wasn't working ([#13031](https://github.com/RocketChat/Rocket.Chat/pull/13031) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: List of custom emojis wasn't working ([#13031](https://github.com/RocketChat/Rocket.Chat/pull/13031)) -- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901) by [@tassoevan](https://github.com/tassoevan)) +- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901)) -- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) +- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan)) - Removal of EJSON, Accounts, Email, HTTP, Random, ReactiveDict, ReactiveVar, SHA256 and WebApp global variables ([#12377](https://github.com/RocketChat/Rocket.Chat/pull/12377)) -- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410)) - Removal of Meteor global variable ([#12371](https://github.com/RocketChat/Rocket.Chat/pull/12371)) -- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467)) -- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433)) -- Remove /* globals */ from files wave-1 ([#12984](https://github.com/RocketChat/Rocket.Chat/pull/12984) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove /* globals */ from files wave-1 ([#12984](https://github.com/RocketChat/Rocket.Chat/pull/12984)) -- Remove /* globals */ wave 2 ([#12988](https://github.com/RocketChat/Rocket.Chat/pull/12988) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove /* globals */ wave 2 ([#12988](https://github.com/RocketChat/Rocket.Chat/pull/12988)) -- Remove /* globals */ wave 3 ([#12997](https://github.com/RocketChat/Rocket.Chat/pull/12997) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove /* globals */ wave 3 ([#12997](https://github.com/RocketChat/Rocket.Chat/pull/12997)) -- Remove /* globals */ wave 4 ([#12999](https://github.com/RocketChat/Rocket.Chat/pull/12999) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove /* globals */ wave 4 ([#12999](https://github.com/RocketChat/Rocket.Chat/pull/12999)) - Remove conventional changelog cli, we are using our own cli now (Houston) ([#12798](https://github.com/RocketChat/Rocket.Chat/pull/12798)) @@ -17629,13 +17510,13 @@ - Remove global toastr ([#12961](https://github.com/RocketChat/Rocket.Chat/pull/12961)) -- Remove rocketchat-tutum package ([#12840](https://github.com/RocketChat/Rocket.Chat/pull/12840) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove rocketchat-tutum package ([#12840](https://github.com/RocketChat/Rocket.Chat/pull/12840)) -- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426) by [@tassoevan](https://github.com/tassoevan)) +- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426)) -- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650)) -- Revert imports of css, reAdd them to the addFiles function ([#12934](https://github.com/RocketChat/Rocket.Chat/pull/12934) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Revert imports of css, reAdd them to the addFiles function ([#12934](https://github.com/RocketChat/Rocket.Chat/pull/12934)) - Update Apps Engine to 1.3.1 ([#12741](https://github.com/RocketChat/Rocket.Chat/pull/12741)) @@ -17648,7 +17529,6 @@ - [@AndreamApp](https://github.com/AndreamApp) - [@Hudell](https://github.com/Hudell) - [@Ismaw34](https://github.com/Ismaw34) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@alexbartsch](https://github.com/alexbartsch) - [@cardoso](https://github.com/cardoso) - [@cyberb](https://github.com/cyberb) @@ -17667,10 +17547,8 @@ - [@piotrkochan](https://github.com/piotrkochan) - [@rafaelks](https://github.com/rafaelks) - [@ramrami](https://github.com/ramrami) -- [@renatobecker](https://github.com/renatobecker) - [@rssilva](https://github.com/rssilva) - [@sanketsingh24](https://github.com/sanketsingh24) -- [@tassoevan](https://github.com/tassoevan) - [@tsukiRep](https://github.com/tsukiRep) - [@ura14h](https://github.com/ura14h) - [@vinade](https://github.com/vinade) @@ -17680,13 +17558,16 @@ ### 👩‍💻👨‍💻 Core Team 🤓 - [@LuluGO](https://github.com/LuluGO) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.72.3 `2018-12-12 · 1 🔍 · 5 👩‍💻👨‍💻` @@ -17695,7 +17576,7 @@ 🔍 Minor changes -- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) +- Release 0.72.3 ([#12932](https://github.com/RocketChat/Rocket.Chat/pull/12932) by [@Hudell](https://github.com/Hudell) & [@piotrkochan](https://github.com/piotrkochan))
@@ -17703,12 +17584,12 @@ - [@Hudell](https://github.com/Hudell) - [@piotrkochan](https://github.com/piotrkochan) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) +- [@tassoevan](https://github.com/tassoevan) # 0.72.2 `2018-12-10 · 3 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` @@ -17716,9 +17597,9 @@ ### 🐛 Bug fixes -- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900) by [@tassoevan](https://github.com/tassoevan)) +- line-height for unread bar buttons (jump to first and mark as read) ([#12900](https://github.com/RocketChat/Rocket.Chat/pull/12900)) -- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882) by [@tassoevan](https://github.com/tassoevan)) +- PDF view loading indicator ([#12882](https://github.com/RocketChat/Rocket.Chat/pull/12882)) - Reset password email ([#12898](https://github.com/RocketChat/Rocket.Chat/pull/12898)) @@ -17726,17 +17607,14 @@ 🔍 Minor changes -- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901) by [@tassoevan](https://github.com/tassoevan)) +- Release 0.72.2 ([#12901](https://github.com/RocketChat/Rocket.Chat/pull/12901)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.72.1 `2018-12-05 · 4 🐛 · 3 🔍 · 8 👩‍💻👨‍💻` @@ -17748,7 +17626,7 @@ - Change spread operator to Array.from for Edge browser ([#12818](https://github.com/RocketChat/Rocket.Chat/pull/12818) by [@ohmonster](https://github.com/ohmonster)) -- Emoji as avatar ([#12805](https://github.com/RocketChat/Rocket.Chat/pull/12805) by [@tassoevan](https://github.com/tassoevan)) +- Emoji as avatar ([#12805](https://github.com/RocketChat/Rocket.Chat/pull/12805)) - Missing HipChat Enterprise Importer ([#12847](https://github.com/RocketChat/Rocket.Chat/pull/12847) by [@Hudell](https://github.com/Hudell)) @@ -17758,25 +17636,25 @@ - Bump Apps-Engine version ([#12848](https://github.com/RocketChat/Rocket.Chat/pull/12848)) -- Change file order in rocketchat-cors ([#12804](https://github.com/RocketChat/Rocket.Chat/pull/12804) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Change file order in rocketchat-cors ([#12804](https://github.com/RocketChat/Rocket.Chat/pull/12804)) -- Release 0.72.1 ([#12850](https://github.com/RocketChat/Rocket.Chat/pull/12850) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan) & [@tassoevan](https://github.com/tassoevan)) +- Release 0.72.1 ([#12850](https://github.com/RocketChat/Rocket.Chat/pull/12850) by [@Hudell](https://github.com/Hudell) & [@ohmonster](https://github.com/ohmonster) & [@piotrkochan](https://github.com/piotrkochan)) ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@ohmonster](https://github.com/ohmonster) - [@piotrkochan](https://github.com/piotrkochan) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@d-gubert](https://github.com/d-gubert) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.72.0 `2018-11-28 · 2 ️️️⚠️ · 6 🎉 · 16 🚀 · 22 🐛 · 79 🔍 · 25 👩‍💻👨‍💻` @@ -17793,11 +17671,11 @@ - /api/v1/spotlight: return joinCodeRequired field for rooms ([#12651](https://github.com/RocketChat/Rocket.Chat/pull/12651) by [@cardoso](https://github.com/cardoso)) -- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add permission to enable personal access token to specific roles ([#12309](https://github.com/RocketChat/Rocket.Chat/pull/12309)) -- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378) by [@tassoevan](https://github.com/tassoevan)) +- Make Livechat's widget draggable ([#12378](https://github.com/RocketChat/Rocket.Chat/pull/12378)) -- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- New API Endpoints for the new version of JS SDK ([#12623](https://github.com/RocketChat/Rocket.Chat/pull/12623)) - Option to reset e2e key ([#12483](https://github.com/RocketChat/Rocket.Chat/pull/12483) by [@Hudell](https://github.com/Hudell)) @@ -17810,9 +17688,9 @@ - Add more methods to deal with rooms via Rocket.Chat.Apps ([#12680](https://github.com/RocketChat/Rocket.Chat/pull/12680)) -- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561) by [@renatobecker](https://github.com/renatobecker)) +- Add new acceptable header for Livechat REST requests ([#12561](https://github.com/RocketChat/Rocket.Chat/pull/12561)) -- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add rooms property in user object, if the user has the permission, with rooms roles ([#12105](https://github.com/RocketChat/Rocket.Chat/pull/12105)) - Allow apps to update persistence by association ([#12714](https://github.com/RocketChat/Rocket.Chat/pull/12714)) @@ -17828,15 +17706,15 @@ - German translations ([#12471](https://github.com/RocketChat/Rocket.Chat/pull/12471) by [@mrsimpson](https://github.com/mrsimpson)) -- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522) by [@renatobecker](https://github.com/renatobecker)) +- Ignore non-existent Livechat custom fields on Livechat API ([#12522](https://github.com/RocketChat/Rocket.Chat/pull/12522)) -- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Improve unreads and unreadsFrom response, prevent it to be equal null ([#12563](https://github.com/RocketChat/Rocket.Chat/pull/12563)) - Japanese translations ([#12382](https://github.com/RocketChat/Rocket.Chat/pull/12382) by [@ura14h](https://github.com/ura14h)) -- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@tassoevan](https://github.com/tassoevan) & [@vinade](https://github.com/vinade)) +- Limit the number of typing users shown (#8722) ([#12400](https://github.com/RocketChat/Rocket.Chat/pull/12400) by [@vinade](https://github.com/vinade)) -- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock) & [@tassoevan](https://github.com/tassoevan)) +- Update the 'keyboard shortcuts' documentation ([#12564](https://github.com/RocketChat/Rocket.Chat/pull/12564) by [@nicolasbock](https://github.com/nicolasbock)) ### 🐛 Bug fixes @@ -17849,9 +17727,9 @@ - Admin styles ([#12602](https://github.com/RocketChat/Rocket.Chat/pull/12602)) -- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb) & [@tassoevan](https://github.com/tassoevan)) +- Change registration message when user need to confirm email ([#9336](https://github.com/RocketChat/Rocket.Chat/pull/9336) by [@karlprieb](https://github.com/karlprieb)) -- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632) by [@tassoevan](https://github.com/tassoevan)) +- Condition to not render PDF preview ([#12632](https://github.com/RocketChat/Rocket.Chat/pull/12632)) - Correct roomName value in Mail Messages (#12363) ([#12453](https://github.com/RocketChat/Rocket.Chat/pull/12453) by [@vinade](https://github.com/vinade)) @@ -17859,159 +17737,159 @@ - Emoji picker is not in viewport on small screens ([#12457](https://github.com/RocketChat/Rocket.Chat/pull/12457) by [@ramrami](https://github.com/ramrami)) -- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix favico error ([#12643](https://github.com/RocketChat/Rocket.Chat/pull/12643)) -- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix wrong parameter in chat.delete endpoint and add some test cases ([#12408](https://github.com/RocketChat/Rocket.Chat/pull/12408)) - Fixed Anonymous Registration ([#12633](https://github.com/RocketChat/Rocket.Chat/pull/12633) by [@wreiske](https://github.com/wreiske)) - German translation for for API_EmbedIgnoredHosts label ([#12518](https://github.com/RocketChat/Rocket.Chat/pull/12518) by [@mbrodala](https://github.com/mbrodala)) -- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507) by [@tassoevan](https://github.com/tassoevan)) +- Handle all events for enter key in message box ([#12507](https://github.com/RocketChat/Rocket.Chat/pull/12507)) - high cpu usage ~ svg icon ([#12677](https://github.com/RocketChat/Rocket.Chat/pull/12677) by [@ph1p](https://github.com/ph1p)) -- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Import missed file in rocketchat-authorization ([#12570](https://github.com/RocketChat/Rocket.Chat/pull/12570)) - Manage own integrations permissions check ([#12397](https://github.com/RocketChat/Rocket.Chat/pull/12397)) -- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Prevent subscriptions and calls to rooms events that the user is not participating ([#12558](https://github.com/RocketChat/Rocket.Chat/pull/12558)) - Spotlight method being called multiple times ([#12536](https://github.com/RocketChat/Rocket.Chat/pull/12536)) - stream room-changed ([#12411](https://github.com/RocketChat/Rocket.Chat/pull/12411)) -- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713) by [@tassoevan](https://github.com/tassoevan)) +- Update caret position on insert a new line in message box ([#12713](https://github.com/RocketChat/Rocket.Chat/pull/12713)) -- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Wrong test case for `users.setAvatar` endpoint ([#12539](https://github.com/RocketChat/Rocket.Chat/pull/12539))
🔍 Minor changes -- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-channel-settings to main module structure ([#12594](https://github.com/RocketChat/Rocket.Chat/pull/12594)) -- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-emoji-custom to main module structure ([#12604](https://github.com/RocketChat/Rocket.Chat/pull/12604)) -- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-slack to main module structure ([#12666](https://github.com/RocketChat/Rocket.Chat/pull/12666)) -- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-livestream to main module structure ([#12679](https://github.com/RocketChat/Rocket.Chat/pull/12679)) - [DOCS] Remove Cordova links, include F-Droid download button and few other adjustments ([#12583](https://github.com/RocketChat/Rocket.Chat/pull/12583) by [@rafaelks](https://github.com/rafaelks)) - Added "npm install" to quick start for developers ([#12374](https://github.com/RocketChat/Rocket.Chat/pull/12374) by [@wreiske](https://github.com/wreiske)) -- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added imports for global variables in rocketchat-google-natural-language package ([#12647](https://github.com/RocketChat/Rocket.Chat/pull/12647)) - Bump Apps Engine to 1.3.0 ([#12705](https://github.com/RocketChat/Rocket.Chat/pull/12705)) -- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert chatpal search package to modular structure ([#12485](https://github.com/RocketChat/Rocket.Chat/pull/12485)) -- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert emoji-emojione to main module structure ([#12605](https://github.com/RocketChat/Rocket.Chat/pull/12605)) -- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert meteor-accounts-saml to main module structure ([#12486](https://github.com/RocketChat/Rocket.Chat/pull/12486)) -- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert meteor-autocomplete package to main module structure ([#12491](https://github.com/RocketChat/Rocket.Chat/pull/12491)) -- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert meteor-timesync to main module structure ([#12495](https://github.com/RocketChat/Rocket.Chat/pull/12495)) -- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-2fa to main module structure ([#12501](https://github.com/RocketChat/Rocket.Chat/pull/12501)) -- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-action-links to main module structure ([#12503](https://github.com/RocketChat/Rocket.Chat/pull/12503)) -- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-analytics to main module structure ([#12506](https://github.com/RocketChat/Rocket.Chat/pull/12506)) -- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-api to main module structure ([#12510](https://github.com/RocketChat/Rocket.Chat/pull/12510)) -- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-assets to main module structure ([#12521](https://github.com/RocketChat/Rocket.Chat/pull/12521)) -- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-authorization to main module structure ([#12523](https://github.com/RocketChat/Rocket.Chat/pull/12523)) -- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-autolinker to main module structure ([#12529](https://github.com/RocketChat/Rocket.Chat/pull/12529)) -- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-autotranslate to main module structure ([#12530](https://github.com/RocketChat/Rocket.Chat/pull/12530)) -- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-bot-helpers to main module structure ([#12531](https://github.com/RocketChat/Rocket.Chat/pull/12531)) -- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-cas to main module structure ([#12532](https://github.com/RocketChat/Rocket.Chat/pull/12532)) -- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-channel-settings-mail-messages to main module structure ([#12537](https://github.com/RocketChat/Rocket.Chat/pull/12537)) -- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-colors to main module structure ([#12538](https://github.com/RocketChat/Rocket.Chat/pull/12538)) -- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-cors to main module structure ([#12595](https://github.com/RocketChat/Rocket.Chat/pull/12595)) -- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-crowd to main module structure ([#12596](https://github.com/RocketChat/Rocket.Chat/pull/12596)) -- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-custom-sounds to main module structure ([#12599](https://github.com/RocketChat/Rocket.Chat/pull/12599)) -- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-dolphin to main module structure ([#12600](https://github.com/RocketChat/Rocket.Chat/pull/12600)) -- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-drupal to main module structure ([#12601](https://github.com/RocketChat/Rocket.Chat/pull/12601)) -- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-emoji to main module structure ([#12603](https://github.com/RocketChat/Rocket.Chat/pull/12603)) -- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-error-handler to main module structure ([#12606](https://github.com/RocketChat/Rocket.Chat/pull/12606)) -- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-favico to main module structure ([#12607](https://github.com/RocketChat/Rocket.Chat/pull/12607)) -- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-file to main module structure ([#12644](https://github.com/RocketChat/Rocket.Chat/pull/12644)) -- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-github-enterprise to main module structure ([#12642](https://github.com/RocketChat/Rocket.Chat/pull/12642)) -- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-gitlab to main module structure ([#12646](https://github.com/RocketChat/Rocket.Chat/pull/12646)) -- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-google-vision to main module structure ([#12649](https://github.com/RocketChat/Rocket.Chat/pull/12649)) -- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-grant to main module structure ([#12657](https://github.com/RocketChat/Rocket.Chat/pull/12657)) -- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-graphql to main module structure ([#12658](https://github.com/RocketChat/Rocket.Chat/pull/12658)) -- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-highlight-words to main module structure ([#12659](https://github.com/RocketChat/Rocket.Chat/pull/12659)) -- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-iframe-login to main module structure ([#12661](https://github.com/RocketChat/Rocket.Chat/pull/12661)) -- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer to main module structure ([#12662](https://github.com/RocketChat/Rocket.Chat/pull/12662)) -- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-csv to main module structure ([#12663](https://github.com/RocketChat/Rocket.Chat/pull/12663)) -- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-hipchat to main module structure ([#12664](https://github.com/RocketChat/Rocket.Chat/pull/12664)) -- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-hipchat-enterprise to main module structure ([#12665](https://github.com/RocketChat/Rocket.Chat/pull/12665)) -- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-importer-slack-users to main module structure ([#12669](https://github.com/RocketChat/Rocket.Chat/pull/12669)) -- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-integrations to main module structure ([#12670](https://github.com/RocketChat/Rocket.Chat/pull/12670)) -- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-internal-hubot to main module structure ([#12671](https://github.com/RocketChat/Rocket.Chat/pull/12671)) -- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-irc to main module structure ([#12672](https://github.com/RocketChat/Rocket.Chat/pull/12672)) -- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-issuelinks to main module structure ([#12674](https://github.com/RocketChat/Rocket.Chat/pull/12674)) -- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-ldap to main module structure ([#12678](https://github.com/RocketChat/Rocket.Chat/pull/12678)) -- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Convert rocketchat-mail-messages to main module structure ([#12682](https://github.com/RocketChat/Rocket.Chat/pull/12682)) - Fix crowd error with import of SyncedCron ([#12641](https://github.com/RocketChat/Rocket.Chat/pull/12641)) - Fix CSS import order ([#12524](https://github.com/RocketChat/Rocket.Chat/pull/12524)) -- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509) by [@tassoevan](https://github.com/tassoevan)) +- Fix ES translation ([#12509](https://github.com/RocketChat/Rocket.Chat/pull/12509)) - Fix punctuation, spelling, and grammar ([#12451](https://github.com/RocketChat/Rocket.Chat/pull/12451) by [@imronras](https://github.com/imronras)) - Fix some Ukrainian translations ([#12712](https://github.com/RocketChat/Rocket.Chat/pull/12712) by [@zdumitru](https://github.com/zdumitru)) -- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix users.setAvatar endpoint tests and logic ([#12625](https://github.com/RocketChat/Rocket.Chat/pull/12625)) -- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Add email dependency in package.js ([#12645](https://github.com/RocketChat/Rocket.Chat/pull/12645)) - Fix: Developers not being able to debug root files in VSCode ([#12440](https://github.com/RocketChat/Rocket.Chat/pull/12440) by [@mrsimpson](https://github.com/mrsimpson)) -- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Exception when registering a user with gravatar ([#12699](https://github.com/RocketChat/Rocket.Chat/pull/12699)) -- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Fix tests by increasing window size ([#12707](https://github.com/RocketChat/Rocket.Chat/pull/12707)) - Improve: Add missing translation keys. ([#12708](https://github.com/RocketChat/Rocket.Chat/pull/12708) by [@ura14h](https://github.com/ura14h)) @@ -18021,27 +17899,27 @@ - Merge master into develop & Set version to 0.72.0-develop ([#12460](https://github.com/RocketChat/Rocket.Chat/pull/12460) by [@Hudell](https://github.com/Hudell)) -- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Account pages layout ([#12735](https://github.com/RocketChat/Rocket.Chat/pull/12735)) -- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Expand Administration sections by toggling section title ([#12736](https://github.com/RocketChat/Rocket.Chat/pull/12736)) -- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Fix Safari detection in PDF previewing ([#12737](https://github.com/RocketChat/Rocket.Chat/pull/12737)) -- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Inherit font-family for message box ([#12729](https://github.com/RocketChat/Rocket.Chat/pull/12729)) - Removal of EJSON, Accounts, Email, HTTP, Random, ReactiveDict, ReactiveVar, SHA256 and WebApp global variables ([#12377](https://github.com/RocketChat/Rocket.Chat/pull/12377)) -- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removal of Match, check, moment, Tracker and Mongo global variables ([#12410](https://github.com/RocketChat/Rocket.Chat/pull/12410)) - Removal of Meteor global variable ([#12371](https://github.com/RocketChat/Rocket.Chat/pull/12371)) -- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removal of TAPi18n and TAPi18next global variables ([#12467](https://github.com/RocketChat/Rocket.Chat/pull/12467)) -- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removal of Template, Blaze, BlazeLayout, FlowRouter, DDPRateLimiter, Session, UAParser, Promise, Reload and CryptoJS global variables ([#12433](https://github.com/RocketChat/Rocket.Chat/pull/12433)) -- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426) by [@tassoevan](https://github.com/tassoevan)) +- Remove template for feature requests as issues ([#12426](https://github.com/RocketChat/Rocket.Chat/pull/12426)) -- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Removed RocketChatFile from globals ([#12650](https://github.com/RocketChat/Rocket.Chat/pull/12650)) - Update Apps Engine to 1.3.1 ([#12741](https://github.com/RocketChat/Rocket.Chat/pull/12741)) @@ -18054,7 +17932,6 @@ - [@AndreamApp](https://github.com/AndreamApp) - [@Hudell](https://github.com/Hudell) - [@Ismaw34](https://github.com/Ismaw34) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@cardoso](https://github.com/cardoso) - [@imronras](https://github.com/imronras) - [@karlprieb](https://github.com/karlprieb) @@ -18065,8 +17942,6 @@ - [@ph1p](https://github.com/ph1p) - [@rafaelks](https://github.com/rafaelks) - [@ramrami](https://github.com/ramrami) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - [@ura14h](https://github.com/ura14h) - [@vinade](https://github.com/vinade) - [@wreiske](https://github.com/wreiske) @@ -18074,11 +17949,14 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@ggazzo](https://github.com/ggazzo) - [@marceloschmidt](https://github.com/marceloschmidt) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.71.2 `2018-12-10 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -18130,9 +18008,9 @@ ### ⚠️ BREAKING CHANGES -- Add expiration to API login tokens and fix duplicate login tokens created by LDAP ([#12186](https://github.com/RocketChat/Rocket.Chat/pull/12186) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add expiration to API login tokens and fix duplicate login tokens created by LDAP ([#12186](https://github.com/RocketChat/Rocket.Chat/pull/12186)) -- Update `lastMessage` rooms property and convert the "starred" property, to the same format ([#12266](https://github.com/RocketChat/Rocket.Chat/pull/12266) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Update `lastMessage` rooms property and convert the "starred" property, to the same format ([#12266](https://github.com/RocketChat/Rocket.Chat/pull/12266)) ### 🎉 New features @@ -18141,11 +18019,11 @@ - Add "help wanted" section to Readme ([#12432](https://github.com/RocketChat/Rocket.Chat/pull/12432) by [@isabellarussell](https://github.com/isabellarussell)) -- Add delete channel mutation to GraphQL API ([#11860](https://github.com/RocketChat/Rocket.Chat/pull/11860) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add delete channel mutation to GraphQL API ([#11860](https://github.com/RocketChat/Rocket.Chat/pull/11860)) - PDF message attachment preview (client side rendering) ([#10519](https://github.com/RocketChat/Rocket.Chat/pull/10519) by [@kb0304](https://github.com/kb0304)) -- sidenav size on large screens ([#12372](https://github.com/RocketChat/Rocket.Chat/pull/12372) by [@tassoevan](https://github.com/tassoevan)) +- sidenav size on large screens ([#12372](https://github.com/RocketChat/Rocket.Chat/pull/12372)) ### 🚀 Improvements @@ -18154,16 +18032,16 @@ - Allow the imports to accept any file type ([#12425](https://github.com/RocketChat/Rocket.Chat/pull/12425)) -- Avoid unnecessary calls to Meteor.user() on client ([#11212](https://github.com/RocketChat/Rocket.Chat/pull/11212) by [@tassoevan](https://github.com/tassoevan)) +- Avoid unnecessary calls to Meteor.user() on client ([#11212](https://github.com/RocketChat/Rocket.Chat/pull/11212)) -- Livechat room closure endpoints ([#12360](https://github.com/RocketChat/Rocket.Chat/pull/12360) by [@renatobecker](https://github.com/renatobecker)) +- Livechat room closure endpoints ([#12360](https://github.com/RocketChat/Rocket.Chat/pull/12360)) -- Set Livechat department before register guest ([#12161](https://github.com/RocketChat/Rocket.Chat/pull/12161) by [@renatobecker](https://github.com/renatobecker)) +- Set Livechat department before register guest ([#12161](https://github.com/RocketChat/Rocket.Chat/pull/12161)) ### 🐛 Bug fixes -- Add image dimensions to attachment even when no reorientation is required ([#11521](https://github.com/RocketChat/Rocket.Chat/pull/11521) by [@tassoevan](https://github.com/tassoevan)) +- Add image dimensions to attachment even when no reorientation is required ([#11521](https://github.com/RocketChat/Rocket.Chat/pull/11521)) - Apps not being able to state how the action buttons are aligned ([#12391](https://github.com/RocketChat/Rocket.Chat/pull/12391)) @@ -18173,7 +18051,7 @@ - avatar?_dc=undefined ([#12365](https://github.com/RocketChat/Rocket.Chat/pull/12365)) -- Blockstack errors in IE 11 ([#12338](https://github.com/RocketChat/Rocket.Chat/pull/12338) by [@tassoevan](https://github.com/tassoevan)) +- Blockstack errors in IE 11 ([#12338](https://github.com/RocketChat/Rocket.Chat/pull/12338)) - Cast env var setting to int based on option type ([#12194](https://github.com/RocketChat/Rocket.Chat/pull/12194) by [@crazy-max](https://github.com/crazy-max)) @@ -18191,9 +18069,9 @@ - iframe login token not checked ([#12158](https://github.com/RocketChat/Rocket.Chat/pull/12158) by [@nimetu](https://github.com/nimetu)) -- Ignore errors when creating image preview for uploads ([#12424](https://github.com/RocketChat/Rocket.Chat/pull/12424) by [@tassoevan](https://github.com/tassoevan)) +- Ignore errors when creating image preview for uploads ([#12424](https://github.com/RocketChat/Rocket.Chat/pull/12424)) -- Invalid destructuring on Livechat API endpoint ([#12354](https://github.com/RocketChat/Rocket.Chat/pull/12354) by [@renatobecker](https://github.com/renatobecker)) +- Invalid destructuring on Livechat API endpoint ([#12354](https://github.com/RocketChat/Rocket.Chat/pull/12354)) - Last message not updating after message delete if show deleted status is on ([#12350](https://github.com/RocketChat/Rocket.Chat/pull/12350)) @@ -18201,13 +18079,13 @@ - Modal confirm on enter ([#12283](https://github.com/RocketChat/Rocket.Chat/pull/12283)) -- Remove e2e from users endpoint responses ([#12344](https://github.com/RocketChat/Rocket.Chat/pull/12344) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove e2e from users endpoint responses ([#12344](https://github.com/RocketChat/Rocket.Chat/pull/12344)) -- REST `users.setAvatar` endpoint wasn't allowing update the avatar of other users even with correct permissions ([#11431](https://github.com/RocketChat/Rocket.Chat/pull/11431) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST `users.setAvatar` endpoint wasn't allowing update the avatar of other users even with correct permissions ([#11431](https://github.com/RocketChat/Rocket.Chat/pull/11431)) - Slack importer: image previews not showing ([#11875](https://github.com/RocketChat/Rocket.Chat/pull/11875) by [@Hudell](https://github.com/Hudell) & [@madguy02](https://github.com/madguy02)) -- users.register endpoint to not create an user if username already being used ([#12297](https://github.com/RocketChat/Rocket.Chat/pull/12297) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- users.register endpoint to not create an user if username already being used ([#12297](https://github.com/RocketChat/Rocket.Chat/pull/12297))
🔍 Minor changes @@ -18223,7 +18101,7 @@ - Improve: Drop database between running tests on CI ([#12358](https://github.com/RocketChat/Rocket.Chat/pull/12358)) -- Regression: Change `starred` message property from object to array ([#12405](https://github.com/RocketChat/Rocket.Chat/pull/12405) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Change `starred` message property from object to array ([#12405](https://github.com/RocketChat/Rocket.Chat/pull/12405)) - Regression: do not render pdf preview on safari <= 12 ([#12375](https://github.com/RocketChat/Rocket.Chat/pull/12375)) @@ -18237,7 +18115,6 @@ - [@Hudell](https://github.com/Hudell) - [@MarcosEllys](https://github.com/MarcosEllys) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@crazy-max](https://github.com/crazy-max) - [@isabellarussell](https://github.com/isabellarussell) - [@kb0304](https://github.com/kb0304) @@ -18245,19 +18122,20 @@ - [@nikeee](https://github.com/nikeee) - [@nimetu](https://github.com/nimetu) - [@pmmaga](https://github.com/pmmaga) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - [@teresy](https://github.com/teresy) - [@upiksaleh](https://github.com/upiksaleh) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Sing-Li](https://github.com/Sing-Li) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.70.5 `2018-12-10 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -18347,7 +18225,7 @@ - Emails' logo and links ([#12241](https://github.com/RocketChat/Rocket.Chat/pull/12241)) -- Livechat CRM integration running when disabled ([#12242](https://github.com/RocketChat/Rocket.Chat/pull/12242) by [@renatobecker](https://github.com/renatobecker)) +- Livechat CRM integration running when disabled ([#12242](https://github.com/RocketChat/Rocket.Chat/pull/12242)) - Livechat integration with RDStation ([#12257](https://github.com/RocketChat/Rocket.Chat/pull/12257)) @@ -18355,7 +18233,7 @@ - Message editing was duplicating reply quotes ([#12263](https://github.com/RocketChat/Rocket.Chat/pull/12263)) -- Set default action for Setup Wizard form submit ([#12240](https://github.com/RocketChat/Rocket.Chat/pull/12240) by [@tassoevan](https://github.com/tassoevan)) +- Set default action for Setup Wizard form submit ([#12240](https://github.com/RocketChat/Rocket.Chat/pull/12240))
🔍 Minor changes @@ -18369,7 +18247,7 @@ - Regression: fix modal submit ([#12233](https://github.com/RocketChat/Rocket.Chat/pull/12233)) -- Release 0.70.1 ([#12270](https://github.com/RocketChat/Rocket.Chat/pull/12270) by [@Hudell](https://github.com/Hudell) & [@edzluhan](https://github.com/edzluhan) & [@renatobecker](https://github.com/renatobecker) & [@tassoevan](https://github.com/tassoevan) & [@theorenck](https://github.com/theorenck)) +- Release 0.70.1 ([#12270](https://github.com/RocketChat/Rocket.Chat/pull/12270) by [@Hudell](https://github.com/Hudell) & [@edzluhan](https://github.com/edzluhan) & [@theorenck](https://github.com/theorenck))
@@ -18379,16 +18257,16 @@ - [@cardoso](https://github.com/cardoso) - [@edzluhan](https://github.com/edzluhan) - [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) - [@theorenck](https://github.com/theorenck) - [@timkinnane](https://github.com/timkinnane) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.70.0 `2018-09-28 · 2 ️️️⚠️ · 18 🎉 · 3 🚀 · 35 🐛 · 19 🔍 · 32 👩‍💻👨‍💻` @@ -18407,7 +18285,7 @@ ### 🎉 New features -- Add Livechat Analytics permission ([#12184](https://github.com/RocketChat/Rocket.Chat/pull/12184) by [@renatobecker](https://github.com/renatobecker)) +- Add Livechat Analytics permission ([#12184](https://github.com/RocketChat/Rocket.Chat/pull/12184)) - Allow multiple subcommands in MIGRATION_VERSION env variable ([#11184](https://github.com/RocketChat/Rocket.Chat/pull/11184) by [@arch119](https://github.com/arch119)) @@ -18427,15 +18305,15 @@ - Livechat notifications on new incoming inquiries for guest-pool ([#10588](https://github.com/RocketChat/Rocket.Chat/pull/10588) by [@mrsimpson](https://github.com/mrsimpson)) -- Livechat REST endpoints ([#11900](https://github.com/RocketChat/Rocket.Chat/pull/11900) by [@renatobecker](https://github.com/renatobecker)) +- Livechat REST endpoints ([#11900](https://github.com/RocketChat/Rocket.Chat/pull/11900)) - Livechat trigger option to run only once ([#12068](https://github.com/RocketChat/Rocket.Chat/pull/12068) by [@edzluhan](https://github.com/edzluhan)) -- REST endpoint to set groups' announcement ([#11905](https://github.com/RocketChat/Rocket.Chat/pull/11905) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint to set groups' announcement ([#11905](https://github.com/RocketChat/Rocket.Chat/pull/11905)) - REST endpoints to create roles and assign roles to users ([#11855](https://github.com/RocketChat/Rocket.Chat/pull/11855) by [@aferreira44](https://github.com/aferreira44)) -- REST endpoints to get moderators from groups and channels ([#11909](https://github.com/RocketChat/Rocket.Chat/pull/11909) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoints to get moderators from groups and channels ([#11909](https://github.com/RocketChat/Rocket.Chat/pull/11909)) - Support for end to end encryption ([#10094](https://github.com/RocketChat/Rocket.Chat/pull/10094) by [@mrinaldhar](https://github.com/mrinaldhar)) @@ -18471,7 +18349,7 @@ - Changing Mentions.userMentionRegex pattern to include
tag ([#12043](https://github.com/RocketChat/Rocket.Chat/pull/12043) by [@rssilva](https://github.com/rssilva)) -- Close popover on shortcuts and writing ([#11562](https://github.com/RocketChat/Rocket.Chat/pull/11562) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Close popover on shortcuts and writing ([#11562](https://github.com/RocketChat/Rocket.Chat/pull/11562)) - Direct messages leaking into logs ([#11863](https://github.com/RocketChat/Rocket.Chat/pull/11863) by [@Hudell](https://github.com/Hudell)) @@ -18481,7 +18359,7 @@ - Duplicated message buttons ([#11853](https://github.com/RocketChat/Rocket.Chat/pull/11853) by [@ubarsaiyan](https://github.com/ubarsaiyan)) -- Files list missing from popover menu when owner of room ([#11565](https://github.com/RocketChat/Rocket.Chat/pull/11565) by [@tassoevan](https://github.com/tassoevan)) +- Files list missing from popover menu when owner of room ([#11565](https://github.com/RocketChat/Rocket.Chat/pull/11565)) - Fixing spacement between tags and words on some labels ([#12018](https://github.com/RocketChat/Rocket.Chat/pull/12018) by [@rssilva](https://github.com/rssilva)) @@ -18493,7 +18371,7 @@ - Horizontal scroll on user info tab ([#12102](https://github.com/RocketChat/Rocket.Chat/pull/12102) by [@rssilva](https://github.com/rssilva)) -- Internal error when cross-origin with CORS is disabled ([#11953](https://github.com/RocketChat/Rocket.Chat/pull/11953) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Internal error when cross-origin with CORS is disabled ([#11953](https://github.com/RocketChat/Rocket.Chat/pull/11953)) - IRC Federation no longer working ([#11906](https://github.com/RocketChat/Rocket.Chat/pull/11906) by [@Hudell](https://github.com/Hudell)) @@ -18503,7 +18381,7 @@ - Markdown ampersand escape on links ([#12140](https://github.com/RocketChat/Rocket.Chat/pull/12140) by [@rssilva](https://github.com/rssilva)) -- Message reaction in GraphQL API ([#11967](https://github.com/RocketChat/Rocket.Chat/pull/11967) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Message reaction in GraphQL API ([#11967](https://github.com/RocketChat/Rocket.Chat/pull/11967)) - Not able to set per-channel retention policies if no global policy is set for this channel type ([#11927](https://github.com/RocketChat/Rocket.Chat/pull/11927) by [@vynmera](https://github.com/vynmera)) @@ -18511,7 +18389,7 @@ - Position of popover component on mobile ([#12038](https://github.com/RocketChat/Rocket.Chat/pull/12038)) -- Prevent form submission in Files List search ([#11999](https://github.com/RocketChat/Rocket.Chat/pull/11999) by [@tassoevan](https://github.com/tassoevan)) +- Prevent form submission in Files List search ([#11999](https://github.com/RocketChat/Rocket.Chat/pull/11999)) - Re-add the eye-off icon ([#12079](https://github.com/RocketChat/Rocket.Chat/pull/12079) by [@MIKI785](https://github.com/MIKI785)) @@ -18559,7 +18437,7 @@ - LingoHub based on develop ([#11936](https://github.com/RocketChat/Rocket.Chat/pull/11936)) -- Merge master into develop & Set version to 0.70.0-develop ([#11921](https://github.com/RocketChat/Rocket.Chat/pull/11921) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@c0dzilla](https://github.com/c0dzilla) & [@renatobecker](https://github.com/renatobecker) & [@rndmh3ro](https://github.com/rndmh3ro) & [@tassoevan](https://github.com/tassoevan) & [@ubarsaiyan](https://github.com/ubarsaiyan) & [@vynmera](https://github.com/vynmera)) +- Merge master into develop & Set version to 0.70.0-develop ([#11921](https://github.com/RocketChat/Rocket.Chat/pull/11921) by [@Hudell](https://github.com/Hudell) & [@c0dzilla](https://github.com/c0dzilla) & [@rndmh3ro](https://github.com/rndmh3ro) & [@ubarsaiyan](https://github.com/ubarsaiyan) & [@vynmera](https://github.com/vynmera)) - New: Option to change E2E key ([#12169](https://github.com/RocketChat/Rocket.Chat/pull/12169) by [@Hudell](https://github.com/Hudell)) @@ -18573,8 +18451,6 @@ - [@Hudell](https://github.com/Hudell) - [@MIKI785](https://github.com/MIKI785) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@TobiasKappe](https://github.com/TobiasKappe) - [@aferreira44](https://github.com/aferreira44) - [@arch119](https://github.com/arch119) @@ -18588,10 +18464,8 @@ - [@mrsimpson](https://github.com/mrsimpson) - [@ohmonster](https://github.com/ohmonster) - [@pkgodara](https://github.com/pkgodara) -- [@renatobecker](https://github.com/renatobecker) - [@rndmh3ro](https://github.com/rndmh3ro) - [@rssilva](https://github.com/rssilva) -- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) - [@timkinnane](https://github.com/timkinnane) - [@ubarsaiyan](https://github.com/ubarsaiyan) @@ -18600,12 +18474,16 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.69.2 `2018-09-11 · 1 🎉 · 4 🐛 · 6 👩‍💻👨‍💻` @@ -18684,9 +18562,9 @@ - Make font of unread items bolder for better contrast ([#8602](https://github.com/RocketChat/Rocket.Chat/pull/8602) by [@ausminternet](https://github.com/ausminternet)) -- Personal access tokens for users to create API tokens ([#11638](https://github.com/RocketChat/Rocket.Chat/pull/11638) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Personal access tokens for users to create API tokens ([#11638](https://github.com/RocketChat/Rocket.Chat/pull/11638)) -- REST endpoint to manage server assets ([#11697](https://github.com/RocketChat/Rocket.Chat/pull/11697) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint to manage server assets ([#11697](https://github.com/RocketChat/Rocket.Chat/pull/11697)) - Rich message text and image buttons ([#11473](https://github.com/RocketChat/Rocket.Chat/pull/11473) by [@ubarsaiyan](https://github.com/ubarsaiyan)) @@ -18705,7 +18583,7 @@ - Add template tag #{userdn} to filter LDAP group member format ([#11662](https://github.com/RocketChat/Rocket.Chat/pull/11662) by [@crazy-max](https://github.com/crazy-max)) -- Escape parameters before send them to email template ([#11644](https://github.com/RocketChat/Rocket.Chat/pull/11644) by [@tassoevan](https://github.com/tassoevan)) +- Escape parameters before send them to email template ([#11644](https://github.com/RocketChat/Rocket.Chat/pull/11644)) - Messagebox fix performance ([#11686](https://github.com/RocketChat/Rocket.Chat/pull/11686)) @@ -18713,18 +18591,18 @@ - Role tag UI ([#11674](https://github.com/RocketChat/Rocket.Chat/pull/11674) by [@timkinnane](https://github.com/timkinnane)) -- Start storing Livechat department within rooms ([#11733](https://github.com/RocketChat/Rocket.Chat/pull/11733) by [@renatobecker](https://github.com/renatobecker)) +- Start storing Livechat department within rooms ([#11733](https://github.com/RocketChat/Rocket.Chat/pull/11733)) -- Warn about push settings that need server restart ([#11784](https://github.com/RocketChat/Rocket.Chat/pull/11784) by [@tassoevan](https://github.com/tassoevan)) +- Warn about push settings that need server restart ([#11784](https://github.com/RocketChat/Rocket.Chat/pull/11784)) ### 🐛 Bug fixes -- "User is typing" not working in new Livechat session ([#11670](https://github.com/RocketChat/Rocket.Chat/pull/11670) by [@renatobecker](https://github.com/renatobecker)) +- "User is typing" not working in new Livechat session ([#11670](https://github.com/RocketChat/Rocket.Chat/pull/11670)) - App's i18nAlert is only being displayed as "i18nAlert" ([#11802](https://github.com/RocketChat/Rocket.Chat/pull/11802)) -- Apply Cordova fix in lazy-loaded images sources ([#11807](https://github.com/RocketChat/Rocket.Chat/pull/11807) by [@tassoevan](https://github.com/tassoevan)) +- Apply Cordova fix in lazy-loaded images sources ([#11807](https://github.com/RocketChat/Rocket.Chat/pull/11807)) - Broken logo on setup wizard ([#11708](https://github.com/RocketChat/Rocket.Chat/pull/11708)) @@ -18738,25 +18616,25 @@ - Default server language not being applied ([#11719](https://github.com/RocketChat/Rocket.Chat/pull/11719)) -- Delete removed user's subscriptions ([#10700](https://github.com/RocketChat/Rocket.Chat/pull/10700) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Delete removed user's subscriptions ([#10700](https://github.com/RocketChat/Rocket.Chat/pull/10700) by [@Hudell](https://github.com/Hudell)) -- directory search table not clickable lines ([#11809](https://github.com/RocketChat/Rocket.Chat/pull/11809) by [@tassoevan](https://github.com/tassoevan)) +- directory search table not clickable lines ([#11809](https://github.com/RocketChat/Rocket.Chat/pull/11809)) -- Escape meta data before inject in head tag ([#11730](https://github.com/RocketChat/Rocket.Chat/pull/11730) by [@tassoevan](https://github.com/tassoevan)) +- Escape meta data before inject in head tag ([#11730](https://github.com/RocketChat/Rocket.Chat/pull/11730)) - Fix links in `onTableItemClick` of the directroy page ([#11543](https://github.com/RocketChat/Rocket.Chat/pull/11543) by [@ura14h](https://github.com/ura14h)) -- Fix permalink of message when running system with subdir ([#11781](https://github.com/RocketChat/Rocket.Chat/pull/11781) by [@tassoevan](https://github.com/tassoevan) & [@ura14h](https://github.com/ura14h)) +- Fix permalink of message when running system with subdir ([#11781](https://github.com/RocketChat/Rocket.Chat/pull/11781) by [@ura14h](https://github.com/ura14h)) - Fixing timeAgo function on directory ([#11728](https://github.com/RocketChat/Rocket.Chat/pull/11728) by [@rssilva](https://github.com/rssilva)) - Incorrect migration version in v130.js ([#11544](https://github.com/RocketChat/Rocket.Chat/pull/11544) by [@c0dzilla](https://github.com/c0dzilla)) -- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830) by [@renatobecker](https://github.com/renatobecker)) +- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830)) -- Livechat rooms starting with two unread message counter ([#11834](https://github.com/RocketChat/Rocket.Chat/pull/11834) by [@renatobecker](https://github.com/renatobecker)) +- Livechat rooms starting with two unread message counter ([#11834](https://github.com/RocketChat/Rocket.Chat/pull/11834)) -- LiveChat switch department not working ([#11011](https://github.com/RocketChat/Rocket.Chat/pull/11011) by [@renatobecker](https://github.com/renatobecker)) +- LiveChat switch department not working ([#11011](https://github.com/RocketChat/Rocket.Chat/pull/11011)) - Login logo now centered on small screens ([#11626](https://github.com/RocketChat/Rocket.Chat/pull/11626) by [@wreiske](https://github.com/wreiske)) @@ -18786,11 +18664,11 @@ - Render Attachment Pretext When Markdown Specified ([#11578](https://github.com/RocketChat/Rocket.Chat/pull/11578) by [@glstewart17](https://github.com/glstewart17)) -- REST `im.members` endpoint not working without sort parameter ([#11821](https://github.com/RocketChat/Rocket.Chat/pull/11821) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST `im.members` endpoint not working without sort parameter ([#11821](https://github.com/RocketChat/Rocket.Chat/pull/11821)) -- REST endpoints to update user not respecting some settings ([#11474](https://github.com/RocketChat/Rocket.Chat/pull/11474) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoints to update user not respecting some settings ([#11474](https://github.com/RocketChat/Rocket.Chat/pull/11474)) -- Results pagination on /directory REST endpoint ([#11551](https://github.com/RocketChat/Rocket.Chat/pull/11551) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Results pagination on /directory REST endpoint ([#11551](https://github.com/RocketChat/Rocket.Chat/pull/11551)) - Return room ID for groups where user joined ([#11703](https://github.com/RocketChat/Rocket.Chat/pull/11703) by [@timkinnane](https://github.com/timkinnane)) @@ -18800,13 +18678,13 @@ - SAML login not working when user has multiple emails ([#11642](https://github.com/RocketChat/Rocket.Chat/pull/11642) by [@Hudell](https://github.com/Hudell)) -- Searching by `undefined` via REST when using `query` param ([#11657](https://github.com/RocketChat/Rocket.Chat/pull/11657) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Searching by `undefined` via REST when using `query` param ([#11657](https://github.com/RocketChat/Rocket.Chat/pull/11657)) - Some assets were pointing to nonexistent path ([#11796](https://github.com/RocketChat/Rocket.Chat/pull/11796)) - Translations were not unique per app allowing conflicts among apps ([#11878](https://github.com/RocketChat/Rocket.Chat/pull/11878)) -- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625)) - wrong create date of channels and users on directory view ([#11682](https://github.com/RocketChat/Rocket.Chat/pull/11682) by [@gsperezb](https://github.com/gsperezb)) @@ -18844,7 +18722,6 @@ - [@Atisom](https://github.com/Atisom) - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@TheReal1604](https://github.com/TheReal1604) - [@ausminternet](https://github.com/ausminternet) - [@c0dzilla](https://github.com/c0dzilla) @@ -18854,10 +18731,8 @@ - [@gsperezb](https://github.com/gsperezb) - [@jukper](https://github.com/jukper) - [@kable-wilmoth](https://github.com/kable-wilmoth) -- [@renatobecker](https://github.com/renatobecker) - [@rndmh3ro](https://github.com/rndmh3ro) - [@rssilva](https://github.com/rssilva) -- [@tassoevan](https://github.com/tassoevan) - [@timkinnane](https://github.com/timkinnane) - [@ubarsaiyan](https://github.com/ubarsaiyan) - [@ura14h](https://github.com/ura14h) @@ -18866,12 +18741,15 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.68.5 `2018-08-23 · 1 🐛 · 1 👩‍💻👨‍💻` @@ -18883,9 +18761,9 @@ ### 🐛 Bug fixes -- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830) by [@renatobecker](https://github.com/renatobecker)) +- Livechat open room method ([#11830](https://github.com/RocketChat/Rocket.Chat/pull/11830)) -### 👩‍💻👨‍💻 Contributors 😍 +### 👩‍💻👨‍💻 Core Team 🤓 - [@renatobecker](https://github.com/renatobecker) @@ -18932,24 +18810,24 @@ - SAML login not working when user has multiple emails ([#11642](https://github.com/RocketChat/Rocket.Chat/pull/11642) by [@Hudell](https://github.com/Hudell)) -- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- User info APIs not returning customFields correctly ([#11625](https://github.com/RocketChat/Rocket.Chat/pull/11625))
🔍 Minor changes -- Release 0.68.3 ([#11650](https://github.com/RocketChat/Rocket.Chat/pull/11650) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rndmh3ro](https://github.com/rndmh3ro)) +- Release 0.68.3 ([#11650](https://github.com/RocketChat/Rocket.Chat/pull/11650) by [@Hudell](https://github.com/Hudell) & [@rndmh3ro](https://github.com/rndmh3ro))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@rndmh3ro](https://github.com/rndmh3ro) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@sampaiodiego](https://github.com/sampaiodiego) # 0.68.2 @@ -18990,7 +18868,7 @@ ### 🐛 Bug fixes -- `Jump to message` search result action ([#11613](https://github.com/RocketChat/Rocket.Chat/pull/11613) by [@tassoevan](https://github.com/tassoevan)) +- `Jump to message` search result action ([#11613](https://github.com/RocketChat/Rocket.Chat/pull/11613)) - HipChat importer wasn’t compatible with latest exports ([#11597](https://github.com/RocketChat/Rocket.Chat/pull/11597)) @@ -18998,19 +18876,16 @@ 🔍 Minor changes -- Release 0.68.1 ([#11616](https://github.com/RocketChat/Rocket.Chat/pull/11616) by [@tassoevan](https://github.com/tassoevan)) +- Release 0.68.1 ([#11616](https://github.com/RocketChat/Rocket.Chat/pull/11616))
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@tassoevan](https://github.com/tassoevan) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@engelgabriel](https://github.com/engelgabriel) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.68.0 `2018-07-27 · 2 ️️️⚠️ · 13 🎉 · 3 🚀 · 23 🐛 · 10 🔍 · 21 👩‍💻👨‍💻` @@ -19022,22 +18897,22 @@ ### ⚠️ BREAKING CHANGES -- Remove deprecated /user.roles endpoint ([#11493](https://github.com/RocketChat/Rocket.Chat/pull/11493) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Remove deprecated /user.roles endpoint ([#11493](https://github.com/RocketChat/Rocket.Chat/pull/11493)) -- Update GraphQL dependencies ([#11430](https://github.com/RocketChat/Rocket.Chat/pull/11430) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Update GraphQL dependencies ([#11430](https://github.com/RocketChat/Rocket.Chat/pull/11430)) ### 🎉 New features - Accept resumeToken as query param to log in ([#11443](https://github.com/RocketChat/Rocket.Chat/pull/11443)) -- Add /roles.list REST endpoint to retrieve all server roles ([#11500](https://github.com/RocketChat/Rocket.Chat/pull/11500) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add /roles.list REST endpoint to retrieve all server roles ([#11500](https://github.com/RocketChat/Rocket.Chat/pull/11500)) -- Add /users.deleteOwnAccount REST endpoint to an user delete his own account ([#11488](https://github.com/RocketChat/Rocket.Chat/pull/11488) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add /users.deleteOwnAccount REST endpoint to an user delete his own account ([#11488](https://github.com/RocketChat/Rocket.Chat/pull/11488)) -- Livechat File Upload ([#10514](https://github.com/RocketChat/Rocket.Chat/pull/10514) by [@renatobecker](https://github.com/renatobecker)) +- Livechat File Upload ([#10514](https://github.com/RocketChat/Rocket.Chat/pull/10514)) -- Make WebRTC not enabled by default ([#11489](https://github.com/RocketChat/Rocket.Chat/pull/11489) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Make WebRTC not enabled by default ([#11489](https://github.com/RocketChat/Rocket.Chat/pull/11489)) - Message retention policy and pruning ([#11236](https://github.com/RocketChat/Rocket.Chat/pull/11236) by [@vynmera](https://github.com/vynmera)) @@ -19045,7 +18920,7 @@ - Replaced old logo with the new ones ([#11491](https://github.com/RocketChat/Rocket.Chat/pull/11491) by [@brunosquadros](https://github.com/brunosquadros)) -- Room files search form ([#11486](https://github.com/RocketChat/Rocket.Chat/pull/11486) by [@tassoevan](https://github.com/tassoevan)) +- Room files search form ([#11486](https://github.com/RocketChat/Rocket.Chat/pull/11486)) - search only default tone emoji Popup search ([#10017](https://github.com/RocketChat/Rocket.Chat/pull/10017) by [@Joe-mcgee](https://github.com/Joe-mcgee)) @@ -19058,7 +18933,7 @@ ### 🚀 Improvements -- Allow markdown in room topic, announcement, and description including single quotes ([#11408](https://github.com/RocketChat/Rocket.Chat/pull/11408) by [@tassoevan](https://github.com/tassoevan)) +- Allow markdown in room topic, announcement, and description including single quotes ([#11408](https://github.com/RocketChat/Rocket.Chat/pull/11408)) - Set default max upload size to 100mb ([#11327](https://github.com/RocketChat/Rocket.Chat/pull/11327) by [@cardoso](https://github.com/cardoso)) @@ -19067,13 +18942,13 @@ ### 🐛 Bug fixes -- Add customFields property to /me REST endpoint response ([#11496](https://github.com/RocketChat/Rocket.Chat/pull/11496) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add customFields property to /me REST endpoint response ([#11496](https://github.com/RocketChat/Rocket.Chat/pull/11496)) - broadcast channel reply ([#11462](https://github.com/RocketChat/Rocket.Chat/pull/11462)) -- Check for channels property on message object before parsing mentions ([#11527](https://github.com/RocketChat/Rocket.Chat/pull/11527) by [@tassoevan](https://github.com/tassoevan)) +- Check for channels property on message object before parsing mentions ([#11527](https://github.com/RocketChat/Rocket.Chat/pull/11527)) -- Decrease room leader bar z-index ([#11450](https://github.com/RocketChat/Rocket.Chat/pull/11450) by [@tassoevan](https://github.com/tassoevan)) +- Decrease room leader bar z-index ([#11450](https://github.com/RocketChat/Rocket.Chat/pull/11450)) - empty blockquote ([#11526](https://github.com/RocketChat/Rocket.Chat/pull/11526)) @@ -19081,7 +18956,7 @@ - Invalid permalink URLs for Direct Messages ([#11507](https://github.com/RocketChat/Rocket.Chat/pull/11507) by [@Hudell](https://github.com/Hudell)) -- Loading and setting fixes for i18n and RTL ([#11363](https://github.com/RocketChat/Rocket.Chat/pull/11363) by [@tassoevan](https://github.com/tassoevan)) +- Loading and setting fixes for i18n and RTL ([#11363](https://github.com/RocketChat/Rocket.Chat/pull/11363)) - Marked parser breaking announcements and mentions at the start of messages ([#11357](https://github.com/RocketChat/Rocket.Chat/pull/11357) by [@vynmera](https://github.com/vynmera)) @@ -19089,27 +18964,27 @@ - New favicons size too small ([#11524](https://github.com/RocketChat/Rocket.Chat/pull/11524) by [@brunosquadros](https://github.com/brunosquadros)) -- Only escape HTML from details in toast error messages ([#11459](https://github.com/RocketChat/Rocket.Chat/pull/11459) by [@tassoevan](https://github.com/tassoevan)) +- Only escape HTML from details in toast error messages ([#11459](https://github.com/RocketChat/Rocket.Chat/pull/11459)) - Record popup ([#11349](https://github.com/RocketChat/Rocket.Chat/pull/11349)) -- Refinements in message popup mentions ([#11441](https://github.com/RocketChat/Rocket.Chat/pull/11441) by [@tassoevan](https://github.com/tassoevan)) +- Refinements in message popup mentions ([#11441](https://github.com/RocketChat/Rocket.Chat/pull/11441)) -- Remove title attribute from sidebar items ([#11298](https://github.com/RocketChat/Rocket.Chat/pull/11298) by [@tassoevan](https://github.com/tassoevan)) +- Remove title attribute from sidebar items ([#11298](https://github.com/RocketChat/Rocket.Chat/pull/11298)) -- Render reply preview with message as a common message ([#11534](https://github.com/RocketChat/Rocket.Chat/pull/11534) by [@tassoevan](https://github.com/tassoevan)) +- Render reply preview with message as a common message ([#11534](https://github.com/RocketChat/Rocket.Chat/pull/11534)) - RocketChat.settings.get causing memory leak (sometimes) ([#11487](https://github.com/RocketChat/Rocket.Chat/pull/11487)) - SAML issues ([#11135](https://github.com/RocketChat/Rocket.Chat/pull/11135) by [@Hudell](https://github.com/Hudell) & [@arminfelder](https://github.com/arminfelder)) -- Send Livechat back to Guest Pool ([#10731](https://github.com/RocketChat/Rocket.Chat/pull/10731) by [@renatobecker](https://github.com/renatobecker)) +- Send Livechat back to Guest Pool ([#10731](https://github.com/RocketChat/Rocket.Chat/pull/10731)) - Snap font issue for sharp ([#11514](https://github.com/RocketChat/Rocket.Chat/pull/11514)) - Unlimited upload file size not working ([#11471](https://github.com/RocketChat/Rocket.Chat/pull/11471) by [@Hudell](https://github.com/Hudell)) -- Unreads counter for new rooms on /channels.counters REST endpoint ([#11531](https://github.com/RocketChat/Rocket.Chat/pull/11531) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Unreads counter for new rooms on /channels.counters REST endpoint ([#11531](https://github.com/RocketChat/Rocket.Chat/pull/11531)) - Wrap custom fields in user profile to new line ([#10119](https://github.com/RocketChat/Rocket.Chat/pull/10119) by [@PhpXp](https://github.com/PhpXp) & [@karlprieb](https://github.com/karlprieb)) @@ -19121,11 +18996,11 @@ - Merge master into develop & Set version to 0.68.0-develop ([#11536](https://github.com/RocketChat/Rocket.Chat/pull/11536)) -- Regression: Add missing LiveChat permission to allow removing closed rooms ([#11423](https://github.com/RocketChat/Rocket.Chat/pull/11423) by [@renatobecker](https://github.com/renatobecker)) +- Regression: Add missing LiveChat permission to allow removing closed rooms ([#11423](https://github.com/RocketChat/Rocket.Chat/pull/11423)) - Regression: Fix purge message's translations ([#11590](https://github.com/RocketChat/Rocket.Chat/pull/11590)) -- Regression: Make message popup user mentions reactive again ([#11567](https://github.com/RocketChat/Rocket.Chat/pull/11567) by [@tassoevan](https://github.com/tassoevan)) +- Regression: Make message popup user mentions reactive again ([#11567](https://github.com/RocketChat/Rocket.Chat/pull/11567)) - Regression: nonReactive to nonreactive ([#11550](https://github.com/RocketChat/Rocket.Chat/pull/11550)) @@ -19144,27 +19019,27 @@ - [@HappyTobi](https://github.com/HappyTobi) - [@Hudell](https://github.com/Hudell) - [@Joe-mcgee](https://github.com/Joe-mcgee) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@PhpXp](https://github.com/PhpXp) - [@arminfelder](https://github.com/arminfelder) - [@arungalva](https://github.com/arungalva) - [@brunosquadros](https://github.com/brunosquadros) - [@cardoso](https://github.com/cardoso) - [@karlprieb](https://github.com/karlprieb) -- [@renatobecker](https://github.com/renatobecker) - [@soundstorm](https://github.com/soundstorm) -- [@tassoevan](https://github.com/tassoevan) - [@tpDBL](https://github.com/tpDBL) - [@vynmera](https://github.com/vynmera) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.67.0 `2018-07-20 · 1 ️️️⚠️ · 1 🎉 · 2 🚀 · 15 🐛 · 7 🔍 · 11 👩‍💻👨‍💻` @@ -19181,12 +19056,12 @@ ### 🎉 New features -- Additional Livechat iFrame API's ([#10918](https://github.com/RocketChat/Rocket.Chat/pull/10918) by [@renatobecker](https://github.com/renatobecker)) +- Additional Livechat iFrame API's ([#10918](https://github.com/RocketChat/Rocket.Chat/pull/10918)) ### 🚀 Improvements -- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254) by [@tassoevan](https://github.com/tassoevan)) +- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254)) - Stop sort callbacks on run ([#11330](https://github.com/RocketChat/Rocket.Chat/pull/11330)) @@ -19195,15 +19070,15 @@ - All messages notifications via email were sent as mention alert ([#11398](https://github.com/RocketChat/Rocket.Chat/pull/11398)) -- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266) by [@renatobecker](https://github.com/renatobecker)) +- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266)) -- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406) by [@renatobecker](https://github.com/renatobecker)) +- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406)) - Livestream muted when audio only option was enabled ([#11267](https://github.com/RocketChat/Rocket.Chat/pull/11267) by [@gdelavald](https://github.com/gdelavald)) - Message attachment's fields with different sizes ([#11342](https://github.com/RocketChat/Rocket.Chat/pull/11342)) -- Message popup responsiveness in slash commands ([#11313](https://github.com/RocketChat/Rocket.Chat/pull/11313) by [@tassoevan](https://github.com/tassoevan)) +- Message popup responsiveness in slash commands ([#11313](https://github.com/RocketChat/Rocket.Chat/pull/11313)) - Notification preferences being lost when switching view mode ([#11295](https://github.com/RocketChat/Rocket.Chat/pull/11295)) @@ -19219,7 +19094,7 @@ - sort fname sidenav ([#11358](https://github.com/RocketChat/Rocket.Chat/pull/11358)) -- SVG icons code ([#11319](https://github.com/RocketChat/Rocket.Chat/pull/11319) by [@tassoevan](https://github.com/tassoevan)) +- SVG icons code ([#11319](https://github.com/RocketChat/Rocket.Chat/pull/11319)) - web app manifest errors as reported by Chrome DevTools ([#9991](https://github.com/RocketChat/Rocket.Chat/pull/9991) by [@justinribeiro](https://github.com/justinribeiro)) @@ -19229,11 +19104,11 @@ - Fix dependency issue in redhat image ([#11497](https://github.com/RocketChat/Rocket.Chat/pull/11497)) -- Merge master into develop & Set version to 0.67.0-develop ([#11417](https://github.com/RocketChat/Rocket.Chat/pull/11417) by [@renatobecker](https://github.com/renatobecker)) +- Merge master into develop & Set version to 0.67.0-develop ([#11417](https://github.com/RocketChat/Rocket.Chat/pull/11417)) -- Merge master into develop & Set version to 0.67.0-develop ([#11399](https://github.com/RocketChat/Rocket.Chat/pull/11399) by [@renatobecker](https://github.com/renatobecker)) +- Merge master into develop & Set version to 0.67.0-develop ([#11399](https://github.com/RocketChat/Rocket.Chat/pull/11399)) -- Merge master into develop & Set version to 0.67.0-develop ([#11348](https://github.com/RocketChat/Rocket.Chat/pull/11348) by [@Hudell](https://github.com/Hudell) & [@gdelavald](https://github.com/gdelavald) & [@tassoevan](https://github.com/tassoevan)) +- Merge master into develop & Set version to 0.67.0-develop ([#11348](https://github.com/RocketChat/Rocket.Chat/pull/11348) by [@Hudell](https://github.com/Hudell) & [@gdelavald](https://github.com/gdelavald)) - Merge master into develop & Set version to 0.67.0-develop ([#11290](https://github.com/RocketChat/Rocket.Chat/pull/11290)) @@ -19249,16 +19124,16 @@ - [@c0dzilla](https://github.com/c0dzilla) - [@gdelavald](https://github.com/gdelavald) - [@justinribeiro](https://github.com/justinribeiro) -- [@renatobecker](https://github.com/renatobecker) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.66.3 `2018-07-09 · 2 🐛 · 2 👩‍💻👨‍💻` @@ -19272,14 +19147,11 @@ - All messages notifications via email were sent as mention alert ([#11398](https://github.com/RocketChat/Rocket.Chat/pull/11398)) -- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406) by [@renatobecker](https://github.com/renatobecker)) - -### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) +- Livechat taking inquiry leading to 404 page ([#11406](https://github.com/RocketChat/Rocket.Chat/pull/11406)) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) # 0.66.2 @@ -19292,7 +19164,7 @@ ### 🐛 Bug fixes -- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266) by [@renatobecker](https://github.com/renatobecker)) +- Livechat not sending desktop notifications ([#11266](https://github.com/RocketChat/Rocket.Chat/pull/11266)) - Remove file snap store doesn't like ([#11365](https://github.com/RocketChat/Rocket.Chat/pull/11365)) @@ -19306,13 +19178,10 @@
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@renatobecker](https://github.com/renatobecker) - ### 👩‍💻👨‍💻 Core Team 🤓 - [@geekgonecrazy](https://github.com/geekgonecrazy) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -19326,7 +19195,7 @@ ### 🚀 Improvements -- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254) by [@tassoevan](https://github.com/tassoevan)) +- Setup Wizard username validation, step progress and optin/optout ([#11254](https://github.com/RocketChat/Rocket.Chat/pull/11254)) ### 🐛 Bug fixes @@ -19345,13 +19214,13 @@ - [@Hudell](https://github.com/Hudell) - [@gdelavald](https://github.com/gdelavald) -- [@tassoevan](https://github.com/tassoevan) ### 👩‍💻👨‍💻 Core Team 🤓 - [@ggazzo](https://github.com/ggazzo) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.66.0 `2018-06-27 · 1 ️️️⚠️ · 23 🎉 · 3 🚀 · 59 🐛 · 47 🔍 · 45 👩‍💻👨‍💻` @@ -19363,16 +19232,16 @@ ### ⚠️ BREAKING CHANGES -- Always remove the field `services` from user data responses in REST API ([#10799](https://github.com/RocketChat/Rocket.Chat/pull/10799) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Always remove the field `services` from user data responses in REST API ([#10799](https://github.com/RocketChat/Rocket.Chat/pull/10799)) ### 🎉 New features -- Add input to set time for avatar cache control ([#10958](https://github.com/RocketChat/Rocket.Chat/pull/10958) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add input to set time for avatar cache control ([#10958](https://github.com/RocketChat/Rocket.Chat/pull/10958)) - Add prometheus port config ([#11115](https://github.com/RocketChat/Rocket.Chat/pull/11115) by [@brylie](https://github.com/brylie) & [@stuartpb](https://github.com/stuartpb) & [@thaiphv](https://github.com/thaiphv)) -- Button to remove closed LiveChat rooms ([#10301](https://github.com/RocketChat/Rocket.Chat/pull/10301) by [@renatobecker](https://github.com/renatobecker)) +- Button to remove closed LiveChat rooms ([#10301](https://github.com/RocketChat/Rocket.Chat/pull/10301)) - Changes all 'mergeChannels' to 'groupByType'. ([#10055](https://github.com/RocketChat/Rocket.Chat/pull/10055) by [@mikaelmello](https://github.com/mikaelmello)) @@ -19400,7 +19269,7 @@ - REST API endpoints `permissions.list` and `permissions.update`. Deprecated endpoint `permissions` ([#10975](https://github.com/RocketChat/Rocket.Chat/pull/10975) by [@vynmera](https://github.com/vynmera)) -- Send LiveChat visitor navigation history as messages ([#10091](https://github.com/RocketChat/Rocket.Chat/pull/10091) by [@renatobecker](https://github.com/renatobecker)) +- Send LiveChat visitor navigation history as messages ([#10091](https://github.com/RocketChat/Rocket.Chat/pull/10091)) - Set Document Domain property in IFrame ([#9751](https://github.com/RocketChat/Rocket.Chat/pull/9751) by [@kb0304](https://github.com/kb0304)) @@ -19430,11 +19299,11 @@ - "blank" screen on iOS < 11 ([#11199](https://github.com/RocketChat/Rocket.Chat/pull/11199)) -- /groups.invite not allow a user to invite even with permission ([#11010](https://github.com/RocketChat/Rocket.Chat/pull/11010) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- /groups.invite not allow a user to invite even with permission ([#11010](https://github.com/RocketChat/Rocket.Chat/pull/11010) by [@Hudell](https://github.com/Hudell)) -- Add parameter to REST chat.react endpoint, to make it work like a setter ([#10447](https://github.com/RocketChat/Rocket.Chat/pull/10447) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add parameter to REST chat.react endpoint, to make it work like a setter ([#10447](https://github.com/RocketChat/Rocket.Chat/pull/10447)) -- Allow inviting livechat managers to the same LiveChat room ([#10956](https://github.com/RocketChat/Rocket.Chat/pull/10956) by [@renatobecker](https://github.com/renatobecker)) +- Allow inviting livechat managers to the same LiveChat room ([#10956](https://github.com/RocketChat/Rocket.Chat/pull/10956)) - Application crashing on startup when trying to log errors to `exceptions` channel ([#10934](https://github.com/RocketChat/Rocket.Chat/pull/10934)) @@ -19444,13 +19313,13 @@ - Build for Sandstorm missing dependence for capnp ([#11056](https://github.com/RocketChat/Rocket.Chat/pull/11056) by [@peterlee0127](https://github.com/peterlee0127)) -- Can't access the `/account/profile` ([#11089](https://github.com/RocketChat/Rocket.Chat/pull/11089) by [@tassoevan](https://github.com/tassoevan)) +- Can't access the `/account/profile` ([#11089](https://github.com/RocketChat/Rocket.Chat/pull/11089)) - Cannot read property 'debug' of undefined when trying to use REST API ([#10805](https://github.com/RocketChat/Rocket.Chat/pull/10805) by [@haffla](https://github.com/haffla)) -- Confirm password on set new password user profile ([#11095](https://github.com/RocketChat/Rocket.Chat/pull/11095) by [@tassoevan](https://github.com/tassoevan)) +- Confirm password on set new password user profile ([#11095](https://github.com/RocketChat/Rocket.Chat/pull/11095)) -- Default selected language ([#11150](https://github.com/RocketChat/Rocket.Chat/pull/11150) by [@tassoevan](https://github.com/tassoevan)) +- Default selected language ([#11150](https://github.com/RocketChat/Rocket.Chat/pull/11150)) - Exception in metrics generation ([#11072](https://github.com/RocketChat/Rocket.Chat/pull/11072)) @@ -19460,7 +19329,7 @@ - flex-tab icons missing ([#11049](https://github.com/RocketChat/Rocket.Chat/pull/11049)) -- Generated random password visible to the user ([#11096](https://github.com/RocketChat/Rocket.Chat/pull/11096) by [@tassoevan](https://github.com/tassoevan)) +- Generated random password visible to the user ([#11096](https://github.com/RocketChat/Rocket.Chat/pull/11096)) - HipChat Cloud import fails to import rooms ([#11188](https://github.com/RocketChat/Rocket.Chat/pull/11188) by [@Hudell](https://github.com/Hudell)) @@ -19480,11 +19349,11 @@ - Link previews not being removed from messages after removed on editing ([#11063](https://github.com/RocketChat/Rocket.Chat/pull/11063)) -- LiveChat appearance changes not being saved ([#11111](https://github.com/RocketChat/Rocket.Chat/pull/11111) by [@renatobecker](https://github.com/renatobecker)) +- LiveChat appearance changes not being saved ([#11111](https://github.com/RocketChat/Rocket.Chat/pull/11111)) -- Livechat icon with status ([#11177](https://github.com/RocketChat/Rocket.Chat/pull/11177) by [@tassoevan](https://github.com/tassoevan)) +- Livechat icon with status ([#11177](https://github.com/RocketChat/Rocket.Chat/pull/11177)) -- Livechat visitor not being prompted for transcript when himself is closing the chat ([#10767](https://github.com/RocketChat/Rocket.Chat/pull/10767) by [@renatobecker](https://github.com/renatobecker)) +- Livechat visitor not being prompted for transcript when himself is closing the chat ([#10767](https://github.com/RocketChat/Rocket.Chat/pull/10767)) - Message_AllowedMaxSize fails for emoji sequences ([#10431](https://github.com/RocketChat/Rocket.Chat/pull/10431) by [@c0dzilla](https://github.com/c0dzilla)) @@ -19496,29 +19365,29 @@ - Overlapping of search text and cancel search icon (X) ([#10294](https://github.com/RocketChat/Rocket.Chat/pull/10294) by [@taeven](https://github.com/taeven)) -- Popover position ([#11113](https://github.com/RocketChat/Rocket.Chat/pull/11113) by [@tassoevan](https://github.com/tassoevan)) +- Popover position ([#11113](https://github.com/RocketChat/Rocket.Chat/pull/11113)) - Preview of large images not resizing to fit the area and having scrollbars ([#10998](https://github.com/RocketChat/Rocket.Chat/pull/10998) by [@vynmera](https://github.com/vynmera)) - Reaction Toggle was not working when omitting the last parameter from the API (DDP and REST) ([#11276](https://github.com/RocketChat/Rocket.Chat/pull/11276) by [@Hudell](https://github.com/Hudell)) -- Remove failed upload messages when switching rooms ([#11132](https://github.com/RocketChat/Rocket.Chat/pull/11132) by [@tassoevan](https://github.com/tassoevan)) +- Remove failed upload messages when switching rooms ([#11132](https://github.com/RocketChat/Rocket.Chat/pull/11132)) - Remove outdated 2FA warning for mobile clients ([#10916](https://github.com/RocketChat/Rocket.Chat/pull/10916) by [@cardoso](https://github.com/cardoso)) - remove sidebar on embedded view ([#11183](https://github.com/RocketChat/Rocket.Chat/pull/11183)) -- Rendering of emails and mentions in messages ([#11165](https://github.com/RocketChat/Rocket.Chat/pull/11165) by [@tassoevan](https://github.com/tassoevan)) +- Rendering of emails and mentions in messages ([#11165](https://github.com/RocketChat/Rocket.Chat/pull/11165)) -- REST API: Add more test cases for `/login` ([#10999](https://github.com/RocketChat/Rocket.Chat/pull/10999) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API: Add more test cases for `/login` ([#10999](https://github.com/RocketChat/Rocket.Chat/pull/10999)) -- REST endpoint `users.updateOwnBasicInfo` was not returning errors for invalid names and trying to save custom fields when empty ([#11204](https://github.com/RocketChat/Rocket.Chat/pull/11204) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint `users.updateOwnBasicInfo` was not returning errors for invalid names and trying to save custom fields when empty ([#11204](https://github.com/RocketChat/Rocket.Chat/pull/11204)) -- Room creation error due absence of subscriptions ([#11178](https://github.com/RocketChat/Rocket.Chat/pull/11178) by [@tassoevan](https://github.com/tassoevan)) +- Room creation error due absence of subscriptions ([#11178](https://github.com/RocketChat/Rocket.Chat/pull/11178)) - Rooms list sorting by activity multiple re-renders and case sensitive sorting alphabetically ([#9959](https://github.com/RocketChat/Rocket.Chat/pull/9959) by [@JoseRenan](https://github.com/JoseRenan) & [@karlprieb](https://github.com/karlprieb)) -- set-toolbar-items postMessage ([#11109](https://github.com/RocketChat/Rocket.Chat/pull/11109) by [@tassoevan](https://github.com/tassoevan)) +- set-toolbar-items postMessage ([#11109](https://github.com/RocketChat/Rocket.Chat/pull/11109)) - Some typos in the error message names ([#11136](https://github.com/RocketChat/Rocket.Chat/pull/11136) by [@vynmera](https://github.com/vynmera)) @@ -19526,7 +19395,7 @@ - The process was freezing in some cases when HTTP calls exceeds timeout on integrations ([#11253](https://github.com/RocketChat/Rocket.Chat/pull/11253)) -- title and value attachments are optionals on sendMessage method ([#11021](https://github.com/RocketChat/Rocket.Chat/pull/11021) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- title and value attachments are optionals on sendMessage method ([#11021](https://github.com/RocketChat/Rocket.Chat/pull/11021)) - Update capnproto dependence for Sandstorm Build ([#11263](https://github.com/RocketChat/Rocket.Chat/pull/11263) by [@peterlee0127](https://github.com/peterlee0127)) @@ -19552,7 +19421,7 @@ - Add Dockerfile with MongoDB ([#10971](https://github.com/RocketChat/Rocket.Chat/pull/10971)) -- Add verification to make sure the user exists in REST insert object helper ([#11008](https://github.com/RocketChat/Rocket.Chat/pull/11008) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add verification to make sure the user exists in REST insert object helper ([#11008](https://github.com/RocketChat/Rocket.Chat/pull/11008)) - Build Docker image on CI ([#11076](https://github.com/RocketChat/Rocket.Chat/pull/11076)) @@ -19570,7 +19439,7 @@ - Fix readme typo ([#5](https://github.com/RocketChat/Rocket.Chat/pull/5) by [@filipealva](https://github.com/filipealva)) -- IRC Federation: RFC2813 implementation (ngIRCd) ([#10113](https://github.com/RocketChat/Rocket.Chat/pull/10113) by [@Hudell](https://github.com/Hudell) & [@alansikora](https://github.com/alansikora) & [@cpitman](https://github.com/cpitman) & [@lindoelio](https://github.com/lindoelio)) +- IRC Federation: RFC2813 implementation (ngIRCd) ([#10113](https://github.com/RocketChat/Rocket.Chat/pull/10113) by [@Hudell](https://github.com/Hudell) & [@cpitman](https://github.com/cpitman) & [@lindoelio](https://github.com/lindoelio)) - LingoHub based on develop ([#11208](https://github.com/RocketChat/Rocket.Chat/pull/11208)) @@ -19648,8 +19517,6 @@ - [@Hudell](https://github.com/Hudell) - [@JoseRenan](https://github.com/JoseRenan) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@alansikora](https://github.com/alansikora) - [@brylie](https://github.com/brylie) - [@c0dzilla](https://github.com/c0dzilla) - [@cardoso](https://github.com/cardoso) @@ -19676,24 +19543,26 @@ - [@pkgodara](https://github.com/pkgodara) - [@rafaelks](https://github.com/rafaelks) - [@rakhi2104](https://github.com/rakhi2104) -- [@renatobecker](https://github.com/renatobecker) - [@rw4lll](https://github.com/rw4lll) - [@saplla](https://github.com/saplla) - [@stuartpb](https://github.com/stuartpb) - [@taeven](https://github.com/taeven) -- [@tassoevan](https://github.com/tassoevan) - [@thaiphv](https://github.com/thaiphv) - [@timkinnane](https://github.com/timkinnane) - [@vynmera](https://github.com/vynmera) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@tassoevan](https://github.com/tassoevan) # 0.65.2 `2018-06-16 · 1 🐛 · 1 🔍 · 4 👩‍💻👨‍💻` @@ -19765,13 +19634,13 @@ - Add permission `view-broadcast-member-list` ([#10753](https://github.com/RocketChat/Rocket.Chat/pull/10753) by [@cardoso](https://github.com/cardoso)) -- Add REST API endpoint `users.getUsernameSuggestion` to get username suggestion ([#10702](https://github.com/RocketChat/Rocket.Chat/pull/10702) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add REST API endpoint `users.getUsernameSuggestion` to get username suggestion ([#10702](https://github.com/RocketChat/Rocket.Chat/pull/10702)) -- Add REST API endpoints `channels.counters`, `groups.counters and `im.counters` ([#9679](https://github.com/RocketChat/Rocket.Chat/pull/9679) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@xbolshe](https://github.com/xbolshe)) +- Add REST API endpoints `channels.counters`, `groups.counters and `im.counters` ([#9679](https://github.com/RocketChat/Rocket.Chat/pull/9679) by [@xbolshe](https://github.com/xbolshe)) - Add REST API endpoints `channels.setCustomFields` and `groups.setCustomFields` ([#9733](https://github.com/RocketChat/Rocket.Chat/pull/9733) by [@xbolshe](https://github.com/xbolshe)) -- Add REST endpoint `subscriptions.unread` to mark messages as unread ([#10778](https://github.com/RocketChat/Rocket.Chat/pull/10778) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add REST endpoint `subscriptions.unread` to mark messages as unread ([#10778](https://github.com/RocketChat/Rocket.Chat/pull/10778)) - Add REST endpoints `channels.roles` & `groups.roles` ([#10607](https://github.com/RocketChat/Rocket.Chat/pull/10607) by [@cardoso](https://github.com/cardoso) & [@rafaelks](https://github.com/rafaelks)) @@ -19781,15 +19650,15 @@ - Lazy load image attachments ([#10608](https://github.com/RocketChat/Rocket.Chat/pull/10608) by [@karlprieb](https://github.com/karlprieb)) -- Now is possible to access files using header authorization (`x-user-id` and `x-auth-token`) ([#10741](https://github.com/RocketChat/Rocket.Chat/pull/10741) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Now is possible to access files using header authorization (`x-user-id` and `x-auth-token`) ([#10741](https://github.com/RocketChat/Rocket.Chat/pull/10741)) -- Options to enable/disable each Livechat registration form field ([#10584](https://github.com/RocketChat/Rocket.Chat/pull/10584) by [@renatobecker](https://github.com/renatobecker)) +- Options to enable/disable each Livechat registration form field ([#10584](https://github.com/RocketChat/Rocket.Chat/pull/10584)) -- REST API endpoint `/me` now returns all the settings, including the default values ([#10662](https://github.com/RocketChat/Rocket.Chat/pull/10662) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API endpoint `/me` now returns all the settings, including the default values ([#10662](https://github.com/RocketChat/Rocket.Chat/pull/10662)) -- REST API endpoint `settings` now allow set colors and trigger actions ([#10488](https://github.com/RocketChat/Rocket.Chat/pull/10488) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@ThomasRoehl](https://github.com/ThomasRoehl)) +- REST API endpoint `settings` now allow set colors and trigger actions ([#10488](https://github.com/RocketChat/Rocket.Chat/pull/10488) by [@ThomasRoehl](https://github.com/ThomasRoehl)) -- Return the result of the `/me` endpoint within the result of the `/login` endpoint ([#10677](https://github.com/RocketChat/Rocket.Chat/pull/10677) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Return the result of the `/me` endpoint within the result of the `/login` endpoint ([#10677](https://github.com/RocketChat/Rocket.Chat/pull/10677)) - Setup Wizard ([#10523](https://github.com/RocketChat/Rocket.Chat/pull/10523) by [@karlprieb](https://github.com/karlprieb)) @@ -19802,7 +19671,7 @@ - Cancel button wasn't working while uploading file ([#10715](https://github.com/RocketChat/Rocket.Chat/pull/10715) by [@Mr-Gryphon](https://github.com/Mr-Gryphon) & [@karlprieb](https://github.com/karlprieb)) -- Channel owner was being set as muted when creating a read-only channel ([#10665](https://github.com/RocketChat/Rocket.Chat/pull/10665) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Channel owner was being set as muted when creating a read-only channel ([#10665](https://github.com/RocketChat/Rocket.Chat/pull/10665)) - Enabling `Collapse Embedded Media by Default` was hiding replies and quotes ([#10427](https://github.com/RocketChat/Rocket.Chat/pull/10427) by [@c0dzilla](https://github.com/c0dzilla)) @@ -19814,9 +19683,9 @@ - Layout badge cutting on unread messages for long names ([#10846](https://github.com/RocketChat/Rocket.Chat/pull/10846) by [@kos4live](https://github.com/kos4live)) -- Livechat managers were not being able to send messages in some cases ([#10663](https://github.com/RocketChat/Rocket.Chat/pull/10663) by [@renatobecker](https://github.com/renatobecker)) +- Livechat managers were not being able to send messages in some cases ([#10663](https://github.com/RocketChat/Rocket.Chat/pull/10663)) -- Livechat settings not appearing correctly ([#10612](https://github.com/RocketChat/Rocket.Chat/pull/10612) by [@renatobecker](https://github.com/renatobecker)) +- Livechat settings not appearing correctly ([#10612](https://github.com/RocketChat/Rocket.Chat/pull/10612)) - Message box emoji icon was flickering when typing a text ([#10678](https://github.com/RocketChat/Rocket.Chat/pull/10678) by [@gdelavald](https://github.com/gdelavald)) @@ -19824,7 +19693,7 @@ - Missing option to disable/enable System Messages ([#10704](https://github.com/RocketChat/Rocket.Chat/pull/10704)) -- Missing pagination fields in the response of REST /directory endpoint ([#10840](https://github.com/RocketChat/Rocket.Chat/pull/10840) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Missing pagination fields in the response of REST /directory endpoint ([#10840](https://github.com/RocketChat/Rocket.Chat/pull/10840)) - Not escaping special chars on mentions ([#10793](https://github.com/RocketChat/Rocket.Chat/pull/10793) by [@erhan-](https://github.com/erhan-)) @@ -19836,7 +19705,7 @@ - SAML wasn't working correctly when running multiple instances ([#10681](https://github.com/RocketChat/Rocket.Chat/pull/10681) by [@Hudell](https://github.com/Hudell)) -- Send a message when muted returns inconsistent result in chat.sendMessage ([#10720](https://github.com/RocketChat/Rocket.Chat/pull/10720) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Send a message when muted returns inconsistent result in chat.sendMessage ([#10720](https://github.com/RocketChat/Rocket.Chat/pull/10720)) - Slack-Bridge bug when migrating to 0.64.1 ([#10875](https://github.com/RocketChat/Rocket.Chat/pull/10875)) @@ -19844,7 +19713,7 @@ - UI was not disabling the actions when users has had no permissions to create channels or add users to rooms ([#10564](https://github.com/RocketChat/Rocket.Chat/pull/10564) by [@cfunkles](https://github.com/cfunkles) & [@chuckAtCataworx](https://github.com/chuckAtCataworx)) -- User's preference `Unread on Top` wasn't working for LiveChat rooms ([#10734](https://github.com/RocketChat/Rocket.Chat/pull/10734) by [@renatobecker](https://github.com/renatobecker)) +- User's preference `Unread on Top` wasn't working for LiveChat rooms ([#10734](https://github.com/RocketChat/Rocket.Chat/pull/10734))
🔍 Minor changes @@ -19870,7 +19739,7 @@ - Fix: Manage apps layout was a bit confuse ([#10882](https://github.com/RocketChat/Rocket.Chat/pull/10882) by [@gdelavald](https://github.com/gdelavald)) -- Fix: Regression in REST API endpoint `/me` ([#10833](https://github.com/RocketChat/Rocket.Chat/pull/10833) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Regression in REST API endpoint `/me` ([#10833](https://github.com/RocketChat/Rocket.Chat/pull/10833)) - Fix: Regression Lazyload fix shuffle avatars ([#10887](https://github.com/RocketChat/Rocket.Chat/pull/10887)) @@ -19906,7 +19775,7 @@ - Regression: Make settings `Site_Name` and `Language` public again ([#10848](https://github.com/RocketChat/Rocket.Chat/pull/10848)) -- Release 0.65.0 ([#10893](https://github.com/RocketChat/Rocket.Chat/pull/10893) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) +- Release 0.65.0 ([#10893](https://github.com/RocketChat/Rocket.Chat/pull/10893) by [@Hudell](https://github.com/Hudell) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) - Wizard improvements ([#10776](https://github.com/RocketChat/Rocket.Chat/pull/10776)) @@ -19915,7 +19784,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Mr-Gryphon](https://github.com/Mr-Gryphon) - [@Sameesunkaria](https://github.com/Sameesunkaria) - [@ThomasRoehl](https://github.com/ThomasRoehl) @@ -19930,16 +19798,17 @@ - [@nsuchy](https://github.com/nsuchy) - [@peccu](https://github.com/peccu) - [@rafaelks](https://github.com/rafaelks) -- [@renatobecker](https://github.com/renatobecker) - [@winterstefan](https://github.com/winterstefan) - [@xbolshe](https://github.com/xbolshe) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -19954,14 +19823,13 @@ 🔍 Minor changes -- Release 0.64.2 ([#10812](https://github.com/RocketChat/Rocket.Chat/pull/10812) by [@Hudell](https://github.com/Hudell) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan)) +- Release 0.64.2 ([#10812](https://github.com/RocketChat/Rocket.Chat/pull/10812) by [@Hudell](https://github.com/Hudell) & [@Sameesunkaria](https://github.com/Sameesunkaria) & [@cardoso](https://github.com/cardoso) & [@erhan-](https://github.com/erhan-) & [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb) & [@peccu](https://github.com/peccu) & [@winterstefan](https://github.com/winterstefan))
### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Sameesunkaria](https://github.com/Sameesunkaria) - [@cardoso](https://github.com/cardoso) - [@erhan-](https://github.com/erhan-) @@ -19972,6 +19840,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20032,7 +19901,7 @@ - The property "settings" is no longer available to regular users via rest api ([#10411](https://github.com/RocketChat/Rocket.Chat/pull/10411)) -- Validate incoming message schema ([#9922](https://github.com/RocketChat/Rocket.Chat/pull/9922) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Validate incoming message schema ([#9922](https://github.com/RocketChat/Rocket.Chat/pull/9922)) ### 🎉 New features @@ -20051,7 +19920,7 @@ - GDPR - Right to access and Data Portability ([#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906) by [@Hudell](https://github.com/Hudell)) -- Livechat setting to customize ended conversation message ([#10108](https://github.com/RocketChat/Rocket.Chat/pull/10108) by [@renatobecker](https://github.com/renatobecker)) +- Livechat setting to customize ended conversation message ([#10108](https://github.com/RocketChat/Rocket.Chat/pull/10108)) - Option to ignore users on channels ([#10517](https://github.com/RocketChat/Rocket.Chat/pull/10517) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) @@ -20059,13 +19928,13 @@ - Prevent the browser to autocomplete some setting fields ([#10439](https://github.com/RocketChat/Rocket.Chat/pull/10439) by [@gdelavald](https://github.com/gdelavald)) -- REST API endpoint `/directory` ([#10442](https://github.com/RocketChat/Rocket.Chat/pull/10442) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API endpoint `/directory` ([#10442](https://github.com/RocketChat/Rocket.Chat/pull/10442)) -- REST API endpoint `rooms.favorite` to favorite and unfavorite rooms ([#10342](https://github.com/RocketChat/Rocket.Chat/pull/10342) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API endpoint `rooms.favorite` to favorite and unfavorite rooms ([#10342](https://github.com/RocketChat/Rocket.Chat/pull/10342)) -- REST endpoint to recover forgotten password ([#10371](https://github.com/RocketChat/Rocket.Chat/pull/10371) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint to recover forgotten password ([#10371](https://github.com/RocketChat/Rocket.Chat/pull/10371)) -- REST endpoint to report messages ([#10354](https://github.com/RocketChat/Rocket.Chat/pull/10354) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST endpoint to report messages ([#10354](https://github.com/RocketChat/Rocket.Chat/pull/10354)) - Search Provider Framework ([#10110](https://github.com/RocketChat/Rocket.Chat/pull/10110) by [@tkurz](https://github.com/tkurz)) @@ -20080,7 +19949,7 @@ - "Idle Time Limit" using milliseconds instead of seconds ([#9824](https://github.com/RocketChat/Rocket.Chat/pull/9824) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) -- Add user object to responses in /*.files Rest endpoints ([#10480](https://github.com/RocketChat/Rocket.Chat/pull/10480) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add user object to responses in /*.files Rest endpoints ([#10480](https://github.com/RocketChat/Rocket.Chat/pull/10480)) - Autocomplete list when inviting a user was partial hidden ([#10409](https://github.com/RocketChat/Rocket.Chat/pull/10409) by [@karlprieb](https://github.com/karlprieb)) @@ -20106,9 +19975,9 @@ - Links being embedded inside of blockquotes ([#10496](https://github.com/RocketChat/Rocket.Chat/pull/10496) by [@gdelavald](https://github.com/gdelavald)) -- Livechat desktop notifications not being displayed ([#10221](https://github.com/RocketChat/Rocket.Chat/pull/10221) by [@renatobecker](https://github.com/renatobecker)) +- Livechat desktop notifications not being displayed ([#10221](https://github.com/RocketChat/Rocket.Chat/pull/10221)) -- Livechat translation files being ignored ([#10369](https://github.com/RocketChat/Rocket.Chat/pull/10369) by [@renatobecker](https://github.com/renatobecker)) +- Livechat translation files being ignored ([#10369](https://github.com/RocketChat/Rocket.Chat/pull/10369)) - Member list search with no results ([#10599](https://github.com/RocketChat/Rocket.Chat/pull/10599)) @@ -20134,13 +20003,13 @@ - Remove a user from the user's list when creating a new channel removes the wrong user ([#10423](https://github.com/RocketChat/Rocket.Chat/pull/10423) by [@gdelavald](https://github.com/gdelavald) & [@karlprieb](https://github.com/karlprieb)) -- Rename method to clean history of messages ([#10498](https://github.com/RocketChat/Rocket.Chat/pull/10498) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Rename method to clean history of messages ([#10498](https://github.com/RocketChat/Rocket.Chat/pull/10498)) -- Renaming agent's username within Livechat's department ([#10344](https://github.com/RocketChat/Rocket.Chat/pull/10344) by [@renatobecker](https://github.com/renatobecker)) +- Renaming agent's username within Livechat's department ([#10344](https://github.com/RocketChat/Rocket.Chat/pull/10344)) -- REST API OAuth services endpoint were missing fields and flag to indicate custom services ([#10299](https://github.com/RocketChat/Rocket.Chat/pull/10299) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API OAuth services endpoint were missing fields and flag to indicate custom services ([#10299](https://github.com/RocketChat/Rocket.Chat/pull/10299)) -- REST spotlight API wasn't allowing searches with # and @ ([#10410](https://github.com/RocketChat/Rocket.Chat/pull/10410) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST spotlight API wasn't allowing searches with # and @ ([#10410](https://github.com/RocketChat/Rocket.Chat/pull/10410)) - Room's name was cutting instead of having ellipses on sidebar ([#10430](https://github.com/RocketChat/Rocket.Chat/pull/10430)) @@ -20186,7 +20055,7 @@ - Fix and improve vietnamese translation ([#10397](https://github.com/RocketChat/Rocket.Chat/pull/10397) by [@TDiNguyen](https://github.com/TDiNguyen) & [@tttt-conan](https://github.com/tttt-conan)) -- Fix: Remove "secret" from REST endpoint /settings.oauth response ([#10513](https://github.com/RocketChat/Rocket.Chat/pull/10513) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Remove "secret" from REST endpoint /settings.oauth response ([#10513](https://github.com/RocketChat/Rocket.Chat/pull/10513)) - Included missing lib for migrations ([#10532](https://github.com/RocketChat/Rocket.Chat/pull/10532) by [@Hudell](https://github.com/Hudell)) @@ -20206,7 +20075,7 @@ - Regression: Fix announcement bar being displayed without content ([#10554](https://github.com/RocketChat/Rocket.Chat/pull/10554) by [@gdelavald](https://github.com/gdelavald)) -- Regression: Inconsistent response of settings.oauth endpoint ([#10553](https://github.com/RocketChat/Rocket.Chat/pull/10553) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Regression: Inconsistent response of settings.oauth endpoint ([#10553](https://github.com/RocketChat/Rocket.Chat/pull/10553)) - Regression: Remove added mentions on quote/reply ([#10571](https://github.com/RocketChat/Rocket.Chat/pull/10571) by [@gdelavald](https://github.com/gdelavald)) @@ -20235,7 +20104,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Hudell](https://github.com/Hudell) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@Prakharsvnit](https://github.com/Prakharsvnit) - [@TDiNguyen](https://github.com/TDiNguyen) - [@TwizzyDizzy](https://github.com/TwizzyDizzy) @@ -20253,7 +20121,6 @@ - [@nsuchy](https://github.com/nsuchy) - [@okaybroda](https://github.com/okaybroda) - [@rafaelks](https://github.com/rafaelks) -- [@renatobecker](https://github.com/renatobecker) - [@strangerintheq](https://github.com/strangerintheq) - [@t3hchipmunk](https://github.com/t3hchipmunk) - [@tkurz](https://github.com/tkurz) @@ -20261,10 +20128,12 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20358,21 +20227,21 @@ - Add leave public channel & leave private channel permissions ([#9584](https://github.com/RocketChat/Rocket.Chat/pull/9584) by [@kb0304](https://github.com/kb0304)) -- Add option to login via REST using Facebook and Twitter tokens ([#9816](https://github.com/RocketChat/Rocket.Chat/pull/9816) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add option to login via REST using Facebook and Twitter tokens ([#9816](https://github.com/RocketChat/Rocket.Chat/pull/9816)) -- Add REST endpoint to get the list of custom emojis ([#9629](https://github.com/RocketChat/Rocket.Chat/pull/9629) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Add REST endpoint to get the list of custom emojis ([#9629](https://github.com/RocketChat/Rocket.Chat/pull/9629)) -- Added endpoint to get the list of available oauth services ([#10144](https://github.com/RocketChat/Rocket.Chat/pull/10144) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added endpoint to get the list of available oauth services ([#10144](https://github.com/RocketChat/Rocket.Chat/pull/10144)) -- Added endpoint to retrieve mentions of a channel ([#10105](https://github.com/RocketChat/Rocket.Chat/pull/10105) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added endpoint to retrieve mentions of a channel ([#10105](https://github.com/RocketChat/Rocket.Chat/pull/10105)) -- Added GET/POST channels.notifications ([#10128](https://github.com/RocketChat/Rocket.Chat/pull/10128) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Added GET/POST channels.notifications ([#10128](https://github.com/RocketChat/Rocket.Chat/pull/10128)) - Announcement bar color wasn't using color from theming variables ([#9367](https://github.com/RocketChat/Rocket.Chat/pull/9367) by [@cyclops24](https://github.com/cyclops24) & [@karlprieb](https://github.com/karlprieb)) - Audio recording as mp3 and better ui for recording ([#9726](https://github.com/RocketChat/Rocket.Chat/pull/9726) by [@kb0304](https://github.com/kb0304)) -- Endpoint to retrieve message read receipts ([#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Endpoint to retrieve message read receipts ([#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907)) - GDPR Right to be forgotten/erased ([#9947](https://github.com/RocketChat/Rocket.Chat/pull/9947) by [@Hudell](https://github.com/Hudell)) @@ -20390,16 +20259,16 @@ - Setting to configure max delta for 2fa ([#9732](https://github.com/RocketChat/Rocket.Chat/pull/9732) by [@Hudell](https://github.com/Hudell)) -- Support for agent's phone field ([#10123](https://github.com/RocketChat/Rocket.Chat/pull/10123) by [@renatobecker](https://github.com/renatobecker)) +- Support for agent's phone field ([#10123](https://github.com/RocketChat/Rocket.Chat/pull/10123)) ### 🐛 Bug fixes - "View All Members" button inside channel's "User Info" is over sized ([#10012](https://github.com/RocketChat/Rocket.Chat/pull/10012) by [@karlprieb](https://github.com/karlprieb)) -- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240)) -- Able to react with invalid emoji ([#8667](https://github.com/RocketChat/Rocket.Chat/pull/8667) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@mutdmour](https://github.com/mutdmour)) +- Able to react with invalid emoji ([#8667](https://github.com/RocketChat/Rocket.Chat/pull/8667) by [@mutdmour](https://github.com/mutdmour)) - Apostrophe-containing URL misparsed ([#9739](https://github.com/RocketChat/Rocket.Chat/pull/9739) by [@lunaticmonk](https://github.com/lunaticmonk)) @@ -20447,7 +20316,7 @@ - Reactions not working on mobile ([#10104](https://github.com/RocketChat/Rocket.Chat/pull/10104)) -- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009)) - Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist ([#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) by [@trongthanh](https://github.com/trongthanh)) @@ -20461,9 +20330,9 @@ - user status on sidenav ([#10222](https://github.com/RocketChat/Rocket.Chat/pull/10222)) -- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719)) -- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224)) - Wrong switch button border color ([#10081](https://github.com/RocketChat/Rocket.Chat/pull/10081) by [@kb0304](https://github.com/kb0304)) @@ -20473,7 +20342,7 @@ - [OTHER] Reactivate all tests ([#10036](https://github.com/RocketChat/Rocket.Chat/pull/10036)) -- [OTHER] Reactivate API tests ([#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@karlprieb](https://github.com/karlprieb)) +- [OTHER] Reactivate API tests ([#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844) by [@karlprieb](https://github.com/karlprieb)) - Add a few listener supports for the Rocket.Chat Apps ([#10154](https://github.com/RocketChat/Rocket.Chat/pull/10154)) @@ -20497,13 +20366,13 @@ - Fix: Reaction endpoint/api only working with regular emojis ([#10323](https://github.com/RocketChat/Rocket.Chat/pull/10323)) -- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257)) - Fix: Scroll on content page ([#10300](https://github.com/RocketChat/Rocket.Chat/pull/10300)) - LingoHub based on develop ([#10243](https://github.com/RocketChat/Rocket.Chat/pull/10243)) -- Release 0.63.0 ([#10324](https://github.com/RocketChat/Rocket.Chat/pull/10324) by [@Hudell](https://github.com/Hudell) & [@Joe-mcgee](https://github.com/Joe-mcgee) & [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@TopHattedCat](https://github.com/TopHattedCat) & [@hmagarotto](https://github.com/hmagarotto) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@karlprieb](https://github.com/karlprieb) & [@kb0304](https://github.com/kb0304) & [@lunaticmonk](https://github.com/lunaticmonk) & [@ramrami](https://github.com/ramrami)) +- Release 0.63.0 ([#10324](https://github.com/RocketChat/Rocket.Chat/pull/10324) by [@Hudell](https://github.com/Hudell) & [@Joe-mcgee](https://github.com/Joe-mcgee) & [@TopHattedCat](https://github.com/TopHattedCat) & [@hmagarotto](https://github.com/hmagarotto) & [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) & [@karlprieb](https://github.com/karlprieb) & [@kb0304](https://github.com/kb0304) & [@lunaticmonk](https://github.com/lunaticmonk) & [@ramrami](https://github.com/ramrami)) - Rename migration name on 108 to match file name ([#10237](https://github.com/RocketChat/Rocket.Chat/pull/10237)) @@ -20517,7 +20386,6 @@ - [@Hudell](https://github.com/Hudell) - [@Joe-mcgee](https://github.com/Joe-mcgee) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@SeanPackham](https://github.com/SeanPackham) - [@TopHattedCat](https://github.com/TopHattedCat) - [@bernardoetrevisan](https://github.com/bernardoetrevisan) @@ -20531,16 +20399,17 @@ - [@mutdmour](https://github.com/mutdmour) - [@pierreozoux](https://github.com/pierreozoux) - [@ramrami](https://github.com/ramrami) -- [@renatobecker](https://github.com/renatobecker) - [@trongthanh](https://github.com/trongthanh) - [@ubarsaiyan](https://github.com/ubarsaiyan) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20558,13 +20427,13 @@ - Message editing is crashing the server when read receipts are enabled ([#10061](https://github.com/RocketChat/Rocket.Chat/pull/10061)) -- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- REST API: Can't list all public channels when user has permission `view-joined-room` ([#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009)) - Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist ([#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) by [@trongthanh](https://github.com/trongthanh)) - Update preferences of users with settings: null was crashing the server ([#10076](https://github.com/RocketChat/Rocket.Chat/pull/10076)) -- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719) by [@MarcosSpessatto](https://github.com/MarcosSpessatto)) +- Verified property of user is always set to false if not supplied ([#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719))
🔍 Minor changes @@ -20576,11 +20445,11 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@trongthanh](https://github.com/trongthanh) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20635,11 +20504,11 @@ ### 🎉 New features -- Add documentation requirement to PRs ([#9658](https://github.com/RocketChat/Rocket.Chat/pull/9658) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@SeanPackham](https://github.com/SeanPackham)) +- Add documentation requirement to PRs ([#9658](https://github.com/RocketChat/Rocket.Chat/pull/9658) by [@SeanPackham](https://github.com/SeanPackham)) - Add route to get user shield/badge ([#9549](https://github.com/RocketChat/Rocket.Chat/pull/9549) by [@kb0304](https://github.com/kb0304)) -- Add user settings / preferences API endpoint ([#9457](https://github.com/RocketChat/Rocket.Chat/pull/9457) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@jgtoriginal](https://github.com/jgtoriginal)) +- Add user settings / preferences API endpoint ([#9457](https://github.com/RocketChat/Rocket.Chat/pull/9457) by [@jgtoriginal](https://github.com/jgtoriginal)) - Alert admins when user requires approval & alert users when the account is approved/activated/deactivated ([#7098](https://github.com/RocketChat/Rocket.Chat/pull/7098) by [@luisfn](https://github.com/luisfn)) @@ -20649,7 +20518,7 @@ - Allow sounds when conversation is focused ([#9312](https://github.com/RocketChat/Rocket.Chat/pull/9312) by [@RationalCoding](https://github.com/RationalCoding)) -- API to fetch permissions & user roles ([#9519](https://github.com/RocketChat/Rocket.Chat/pull/9519) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rafaelks](https://github.com/rafaelks)) +- API to fetch permissions & user roles ([#9519](https://github.com/RocketChat/Rocket.Chat/pull/9519) by [@rafaelks](https://github.com/rafaelks)) - Browse more channels / Directory ([#9642](https://github.com/RocketChat/Rocket.Chat/pull/9642) by [@karlprieb](https://github.com/karlprieb)) @@ -20679,7 +20548,7 @@ - Request mongoDB version in github issue template ([#9807](https://github.com/RocketChat/Rocket.Chat/pull/9807) by [@TwizzyDizzy](https://github.com/TwizzyDizzy)) -- REST API to use Spotlight ([#9509](https://github.com/RocketChat/Rocket.Chat/pull/9509) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@rafaelks](https://github.com/rafaelks)) +- REST API to use Spotlight ([#9509](https://github.com/RocketChat/Rocket.Chat/pull/9509) by [@rafaelks](https://github.com/rafaelks)) - Version update check ([#9793](https://github.com/RocketChat/Rocket.Chat/pull/9793)) @@ -20690,13 +20559,13 @@ - API to retrive rooms was returning empty objects ([#9737](https://github.com/RocketChat/Rocket.Chat/pull/9737)) -- Chat Message Reactions REST API End Point ([#9487](https://github.com/RocketChat/Rocket.Chat/pull/9487) by [@MarcosSpessatto](https://github.com/MarcosSpessatto) & [@jgtoriginal](https://github.com/jgtoriginal)) +- Chat Message Reactions REST API End Point ([#9487](https://github.com/RocketChat/Rocket.Chat/pull/9487) by [@jgtoriginal](https://github.com/jgtoriginal)) - Chrome 64 breaks jitsi-meet iframe ([#9560](https://github.com/RocketChat/Rocket.Chat/pull/9560) by [@speedy01](https://github.com/speedy01)) - Close button on file upload bar was not working ([#9662](https://github.com/RocketChat/Rocket.Chat/pull/9662) by [@karlprieb](https://github.com/karlprieb)) -- Close Livechat conversation by visitor not working in version 0.61.0 ([#9714](https://github.com/RocketChat/Rocket.Chat/pull/9714) by [@renatobecker](https://github.com/renatobecker)) +- Close Livechat conversation by visitor not working in version 0.61.0 ([#9714](https://github.com/RocketChat/Rocket.Chat/pull/9714)) - Custom emoji was cropping sometimes ([#9676](https://github.com/RocketChat/Rocket.Chat/pull/9676) by [@anu-007](https://github.com/anu-007)) @@ -20706,7 +20575,7 @@ - Emoji rendering on last message ([#9776](https://github.com/RocketChat/Rocket.Chat/pull/9776)) -- Facebook integration in livechat not working on version 0.61.0 ([#9640](https://github.com/RocketChat/Rocket.Chat/pull/9640) by [@renatobecker](https://github.com/renatobecker)) +- Facebook integration in livechat not working on version 0.61.0 ([#9640](https://github.com/RocketChat/Rocket.Chat/pull/9640)) - Formal pronouns and some small mistakes in German texts ([#9067](https://github.com/RocketChat/Rocket.Chat/pull/9067) by [@AmShaegar13](https://github.com/AmShaegar13)) @@ -20730,7 +20599,7 @@ - Missing string 'Username_already_exist' on the accountProfile page ([#9610](https://github.com/RocketChat/Rocket.Chat/pull/9610) by [@lunaticmonk](https://github.com/lunaticmonk)) -- Not receiving sound notifications in rooms created by new LiveChats ([#9802](https://github.com/RocketChat/Rocket.Chat/pull/9802) by [@renatobecker](https://github.com/renatobecker)) +- Not receiving sound notifications in rooms created by new LiveChats ([#9802](https://github.com/RocketChat/Rocket.Chat/pull/9802)) - Parsing messages with multiple markdown matches ignore some tokens ([#9884](https://github.com/RocketChat/Rocket.Chat/pull/9884) by [@c0dzilla](https://github.com/c0dzilla)) @@ -20792,13 +20661,13 @@ - Regression: Overlapping header in user profile panel ([#9889](https://github.com/RocketChat/Rocket.Chat/pull/9889) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) -- Regression: Page was not respecting the window height on Firefox ([#9804](https://github.com/RocketChat/Rocket.Chat/pull/9804) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Regression: Page was not respecting the window height on Firefox ([#9804](https://github.com/RocketChat/Rocket.Chat/pull/9804)) - Regression: Search bar is now full width ([#9839](https://github.com/RocketChat/Rocket.Chat/pull/9839) by [@karlprieb](https://github.com/karlprieb)) - Regression: sort on room's list not working correctly ([#9897](https://github.com/RocketChat/Rocket.Chat/pull/9897)) -- Release 0.62.0 ([#9935](https://github.com/RocketChat/Rocket.Chat/pull/9935) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@renatobecker](https://github.com/renatobecker)) +- Release 0.62.0 ([#9935](https://github.com/RocketChat/Rocket.Chat/pull/9935)) - Sync from Master ([#9796](https://github.com/RocketChat/Rocket.Chat/pull/9796) by [@HammyHavoc](https://github.com/HammyHavoc)) @@ -20813,8 +20682,6 @@ - [@AmShaegar13](https://github.com/AmShaegar13) - [@HammyHavoc](https://github.com/HammyHavoc) - [@JSzaszvari](https://github.com/JSzaszvari) -- [@MarcosSpessatto](https://github.com/MarcosSpessatto) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@RationalCoding](https://github.com/RationalCoding) - [@SeanPackham](https://github.com/SeanPackham) - [@TwizzyDizzy](https://github.com/TwizzyDizzy) @@ -20838,7 +20705,6 @@ - [@mrsimpson](https://github.com/mrsimpson) - [@rafaelks](https://github.com/rafaelks) - [@ramrami](https://github.com/ramrami) -- [@renatobecker](https://github.com/renatobecker) - [@savikko](https://github.com/savikko) - [@sizrar](https://github.com/sizrar) - [@speedy01](https://github.com/speedy01) @@ -20846,10 +20712,13 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) - [@graywolf336](https://github.com/graywolf336) +- [@renatobecker](https://github.com/renatobecker) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -20927,7 +20796,7 @@ - Contextual bar mail messages ([#9510](https://github.com/RocketChat/Rocket.Chat/pull/9510) by [@karlprieb](https://github.com/karlprieb)) -- Contextual Bar Redesign ([#8411](https://github.com/RocketChat/Rocket.Chat/pull/8411) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@karlprieb](https://github.com/karlprieb)) +- Contextual Bar Redesign ([#8411](https://github.com/RocketChat/Rocket.Chat/pull/8411) by [@karlprieb](https://github.com/karlprieb)) - Indicate the Self DM room ([#9234](https://github.com/RocketChat/Rocket.Chat/pull/9234)) @@ -21119,7 +20988,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@HammyHavoc](https://github.com/HammyHavoc) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@TheReal1604](https://github.com/TheReal1604) - [@cpitman](https://github.com/cpitman) - [@cyclops24](https://github.com/cyclops24) @@ -21137,6 +21005,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@frdmn](https://github.com/frdmn) - [@geekgonecrazy](https://github.com/geekgonecrazy) @@ -21296,7 +21165,7 @@ - Add settings for allow user direct messages to yourself ([#8066](https://github.com/RocketChat/Rocket.Chat/pull/8066) by [@lindoelio](https://github.com/lindoelio)) -- Add sweet alert to video call tab ([#8108](https://github.com/RocketChat/Rocket.Chat/pull/8108) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Add sweet alert to video call tab ([#8108](https://github.com/RocketChat/Rocket.Chat/pull/8108)) - Add yunohost.org installation method to Readme.md ([#8037](https://github.com/RocketChat/Rocket.Chat/pull/8037) by [@selamanse](https://github.com/selamanse)) @@ -21455,7 +21324,7 @@ - Dynamic popover ([#8101](https://github.com/RocketChat/Rocket.Chat/pull/8101) by [@karlprieb](https://github.com/karlprieb)) -- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317)) - Email verification indicator added ([#7923](https://github.com/RocketChat/Rocket.Chat/pull/7923) by [@aditya19496](https://github.com/aditya19496)) @@ -21479,7 +21348,7 @@ - Fix e-mail message forward ([#8645](https://github.com/RocketChat/Rocket.Chat/pull/8645)) -- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754)) - fix emoji package path so they show up correctly in browser ([#8822](https://github.com/RocketChat/Rocket.Chat/pull/8822) by [@ryoshimizu](https://github.com/ryoshimizu)) @@ -21495,7 +21364,7 @@ - Fix setting user avatar on LDAP login ([#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099)) -- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963)) - Fix typos ([#8679](https://github.com/RocketChat/Rocket.Chat/pull/8679)) @@ -21525,7 +21394,7 @@ - Invalid Code message for password protected channel ([#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491)) -- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048)) - Issue #8166 where empty analytics setting breaks to load Piwik script ([#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) by [@ruKurz](https://github.com/ruKurz)) @@ -21571,7 +21440,7 @@ - Migration 103 wrong converting primrary colors ([#8544](https://github.com/RocketChat/Rocket.Chat/pull/8544)) -- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357)) - Missing placeholder translations ([#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286)) @@ -21583,7 +21452,7 @@ - Move emojipicker css to theme package ([#9243](https://github.com/RocketChat/Rocket.Chat/pull/9243) by [@karlprieb](https://github.com/karlprieb)) -- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059)) - Notification is not sent when a video conference start ([#8828](https://github.com/RocketChat/Rocket.Chat/pull/8828) by [@deepseainside75](https://github.com/deepseainside75) & [@stefanoverducci](https://github.com/stefanoverducci)) @@ -21611,7 +21480,7 @@ - RTL ([#8112](https://github.com/RocketChat/Rocket.Chat/pull/8112)) -- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047)) - Scrollbar not using new style ([#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190)) @@ -21739,7 +21608,7 @@ - Add curl, its missing on worker nodes so has to be explicitly added ([#9248](https://github.com/RocketChat/Rocket.Chat/pull/9248)) -- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394)) - Added d2c.io to deployment ([#8975](https://github.com/RocketChat/Rocket.Chat/pull/8975) by [@mastappl](https://github.com/mastappl)) @@ -21759,7 +21628,7 @@ - Deps update ([#8273](https://github.com/RocketChat/Rocket.Chat/pull/8273)) -- Develop sync ([#7866](https://github.com/RocketChat/Rocket.Chat/pull/7866) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Develop sync ([#7866](https://github.com/RocketChat/Rocket.Chat/pull/7866)) - Do not change room icon color when room is unread ([#9257](https://github.com/RocketChat/Rocket.Chat/pull/9257)) @@ -21908,7 +21777,6 @@ - [@HammyHavoc](https://github.com/HammyHavoc) - [@Kiran-Rao](https://github.com/Kiran-Rao) - [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Pharserror](https://github.com/Pharserror) - [@RekkyRek](https://github.com/RekkyRek) - [@Rzeszow](https://github.com/Rzeszow) @@ -21970,6 +21838,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -22277,7 +22146,7 @@ - Email message forward error ([#7846](https://github.com/RocketChat/Rocket.Chat/pull/7846)) -- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Email Subjects not being sent ([#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317)) - Emoji Picker hidden for reactions in RTL ([#8300](https://github.com/RocketChat/Rocket.Chat/pull/8300) by [@karlprieb](https://github.com/karlprieb)) @@ -22297,7 +22166,7 @@ - Fix Dutch translation ([#7814](https://github.com/RocketChat/Rocket.Chat/pull/7814) by [@maarten-v](https://github.com/maarten-v)) -- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix email on mention ([#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754)) - Fix google play logo on repo README ([#7912](https://github.com/RocketChat/Rocket.Chat/pull/7912) by [@luizbills](https://github.com/luizbills)) @@ -22319,7 +22188,7 @@ - Fix setting user avatar on LDAP login ([#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099)) -- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix the status on the members list ([#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963)) - Fixed function closure syntax allowing validation emails to be sent. ([#7758](https://github.com/RocketChat/Rocket.Chat/pull/7758) by [@snoozan](https://github.com/snoozan)) @@ -22333,7 +22202,7 @@ - Invalid Code message for password protected channel ([#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491)) -- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Invisible leader bar on hover ([#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048)) - Issue #8166 where empty analytics setting breaks to load Piwik script ([#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) by [@ruKurz](https://github.com/ruKurz)) @@ -22361,11 +22230,11 @@ - meteor-accounts-saml issue with ns0,ns1 namespaces, makes it compatible with pysaml2 lib ([#7721](https://github.com/RocketChat/Rocket.Chat/pull/7721) by [@arminfelder](https://github.com/arminfelder)) -- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Missing i18n translations ([#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357)) - Missing placeholder translations ([#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286)) -- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Not sending email to mentioned users with unchanged preference ([#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059)) - OTR buttons padding ([#7954](https://github.com/RocketChat/Rocket.Chat/pull/7954) by [@karlprieb](https://github.com/karlprieb)) @@ -22397,7 +22266,7 @@ - scroll on flex-tab ([#7748](https://github.com/RocketChat/Rocket.Chat/pull/7748)) -- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Scroll on messagebox ([#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047)) - Scrollbar not using new style ([#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190)) @@ -22433,7 +22302,7 @@ - Text area lost text when page reloads ([#8159](https://github.com/RocketChat/Rocket.Chat/pull/8159)) -- Textarea on firefox ([#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Textarea on firefox ([#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986)) - TypeError: Cannot read property 't' of undefined ([#8298](https://github.com/RocketChat/Rocket.Chat/pull/8298)) @@ -22451,7 +22320,7 @@ - Window exception when parsing Markdown on server ([#7893](https://github.com/RocketChat/Rocket.Chat/pull/7893)) -- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639)) - Wrong file name when upload to AWS S3 ([#8296](https://github.com/RocketChat/Rocket.Chat/pull/8296)) @@ -22485,7 +22354,7 @@ - 0.58.3 ([#8335](https://github.com/RocketChat/Rocket.Chat/pull/8335)) -- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Add i18n Title to snippet messages ([#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394)) - Additions to the REST API ([#7793](https://github.com/RocketChat/Rocket.Chat/pull/7793)) @@ -22547,7 +22416,7 @@ - npm deps update ([#8197](https://github.com/RocketChat/Rocket.Chat/pull/8197)) -- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652)) - readme-file: fix broken link ([#8253](https://github.com/RocketChat/Rocket.Chat/pull/8253) by [@vcapretz](https://github.com/vcapretz)) @@ -22573,7 +22442,6 @@ - [@Darkneon](https://github.com/Darkneon) - [@Kiran-Rao](https://github.com/Kiran-Rao) - [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@MichaelGooden](https://github.com/MichaelGooden) - [@Rohlik](https://github.com/Rohlik) - [@Rzeszow](https://github.com/Rzeszow) @@ -22611,6 +22479,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -22673,7 +22542,7 @@ ### 🐛 Bug fixes -- Fix flex tab not opening and getting offscreen ([#7781](https://github.com/RocketChat/Rocket.Chat/pull/7781) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix flex tab not opening and getting offscreen ([#7781](https://github.com/RocketChat/Rocket.Chat/pull/7781))
🔍 Minor changes @@ -22683,12 +22552,9 @@
-### 👩‍💻👨‍💻 Contributors 😍 - -- [@MartinSchoeler](https://github.com/MartinSchoeler) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@rodrigok](https://github.com/rodrigok) # 0.58.0 @@ -22738,9 +22604,9 @@ - Do not rate limit bots on createDirectMessage ([#7326](https://github.com/RocketChat/Rocket.Chat/pull/7326) by [@jangmarker](https://github.com/jangmarker)) -- Edit user permissions ([#7309](https://github.com/RocketChat/Rocket.Chat/pull/7309) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Edit user permissions ([#7309](https://github.com/RocketChat/Rocket.Chat/pull/7309)) -- flex-tab now is side by side with message list ([#7448](https://github.com/RocketChat/Rocket.Chat/pull/7448) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@karlprieb](https://github.com/karlprieb)) +- flex-tab now is side by side with message list ([#7448](https://github.com/RocketChat/Rocket.Chat/pull/7448) by [@karlprieb](https://github.com/karlprieb)) - Force use of MongoDB for spotlight queries ([#7311](https://github.com/RocketChat/Rocket.Chat/pull/7311)) @@ -22754,11 +22620,11 @@ - Show different shape for alert numbers when have mentions ([#7580](https://github.com/RocketChat/Rocket.Chat/pull/7580)) -- Show emojis and file uploads on notifications ([#7559](https://github.com/RocketChat/Rocket.Chat/pull/7559) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Show emojis and file uploads on notifications ([#7559](https://github.com/RocketChat/Rocket.Chat/pull/7559)) - Show room leader at top of chat when user scrolls down. Set and unset leader as admin. ([#7526](https://github.com/RocketChat/Rocket.Chat/pull/7526) by [@danischreiber](https://github.com/danischreiber)) -- Update meteor to 1.5.1 ([#7496](https://github.com/RocketChat/Rocket.Chat/pull/7496) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Update meteor to 1.5.1 ([#7496](https://github.com/RocketChat/Rocket.Chat/pull/7496)) ### 🐛 Bug fixes @@ -22779,25 +22645,25 @@ - Fix admin room list show the correct i18n type ([#7582](https://github.com/RocketChat/Rocket.Chat/pull/7582) by [@ccfang](https://github.com/ccfang)) -- Fix Block Delete Message After (n) Minutes ([#7207](https://github.com/RocketChat/Rocket.Chat/pull/7207) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Block Delete Message After (n) Minutes ([#7207](https://github.com/RocketChat/Rocket.Chat/pull/7207)) -- Fix Custom Fields Crashing on Register ([#7617](https://github.com/RocketChat/Rocket.Chat/pull/7617) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Custom Fields Crashing on Register ([#7617](https://github.com/RocketChat/Rocket.Chat/pull/7617)) - Fix editing others messages ([#7200](https://github.com/RocketChat/Rocket.Chat/pull/7200)) -- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431)) -- Fix emoji picker translations ([#7195](https://github.com/RocketChat/Rocket.Chat/pull/7195) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix emoji picker translations ([#7195](https://github.com/RocketChat/Rocket.Chat/pull/7195)) - Fix error on image preview due to undefined description|title ([#7187](https://github.com/RocketChat/Rocket.Chat/pull/7187)) - Fix file upload on Slack import ([#7469](https://github.com/RocketChat/Rocket.Chat/pull/7469)) -- Fix geolocation button ([#7322](https://github.com/RocketChat/Rocket.Chat/pull/7322) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix geolocation button ([#7322](https://github.com/RocketChat/Rocket.Chat/pull/7322)) - Fix hiding flex-tab on embedded view ([#7486](https://github.com/RocketChat/Rocket.Chat/pull/7486)) -- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320)) - Fix messagebox growth ([#7629](https://github.com/RocketChat/Rocket.Chat/pull/7629)) @@ -22805,15 +22671,15 @@ - Fix oembed previews not being shown ([#7208](https://github.com/RocketChat/Rocket.Chat/pull/7208)) -- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432)) - Fix room load on first hit ([#7687](https://github.com/RocketChat/Rocket.Chat/pull/7687)) -- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321)) -- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403)) -- Fix Word Placement Anywhere on WebHooks ([#7392](https://github.com/RocketChat/Rocket.Chat/pull/7392) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Word Placement Anywhere on WebHooks ([#7392](https://github.com/RocketChat/Rocket.Chat/pull/7392)) - Issue #7365: added check for the existence of a parameter in the CAS URL ([#7471](https://github.com/RocketChat/Rocket.Chat/pull/7471) by [@wsw70](https://github.com/wsw70)) @@ -22851,11 +22717,11 @@ - URL parse error fix for issue #7169 ([#7538](https://github.com/RocketChat/Rocket.Chat/pull/7538) by [@satyapramodh](https://github.com/satyapramodh)) -- Use I18n on "File Uploaded" ([#7199](https://github.com/RocketChat/Rocket.Chat/pull/7199) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Use I18n on "File Uploaded" ([#7199](https://github.com/RocketChat/Rocket.Chat/pull/7199)) - User avatar image background ([#7572](https://github.com/RocketChat/Rocket.Chat/pull/7572) by [@filipedelimabrito](https://github.com/filipedelimabrito)) -- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Wrong email subject when "All Messages" setting enabled ([#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639)) - Wrong render of snippet’s name ([#7630](https://github.com/RocketChat/Rocket.Chat/pull/7630)) @@ -22871,13 +22737,13 @@ - Add missing parts of `one click to direct message` ([#7608](https://github.com/RocketChat/Rocket.Chat/pull/7608)) -- Better Issue Template ([#7492](https://github.com/RocketChat/Rocket.Chat/pull/7492) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Better Issue Template ([#7492](https://github.com/RocketChat/Rocket.Chat/pull/7492)) - Develop sync ([#7590](https://github.com/RocketChat/Rocket.Chat/pull/7590)) - Develop sync ([#7500](https://github.com/RocketChat/Rocket.Chat/pull/7500) by [@thinkeridea](https://github.com/thinkeridea)) -- Develop sync ([#7363](https://github.com/RocketChat/Rocket.Chat/pull/7363) by [@JSzaszvari](https://github.com/JSzaszvari) & [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Develop sync ([#7363](https://github.com/RocketChat/Rocket.Chat/pull/7363) by [@JSzaszvari](https://github.com/JSzaszvari)) - Escape error messages ([#7308](https://github.com/RocketChat/Rocket.Chat/pull/7308)) @@ -22893,9 +22759,9 @@ - LingoHub based on develop ([#7594](https://github.com/RocketChat/Rocket.Chat/pull/7594)) -- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Only use "File Uploaded" prefix on files ([#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652)) -- Release 0.58.0 ([#7752](https://github.com/RocketChat/Rocket.Chat/pull/7752) by [@MartinSchoeler](https://github.com/MartinSchoeler) & [@flaviogrossi](https://github.com/flaviogrossi) & [@jangmarker](https://github.com/jangmarker) & [@karlprieb](https://github.com/karlprieb) & [@pierreozoux](https://github.com/pierreozoux) & [@ryoshimizu](https://github.com/ryoshimizu)) +- Release 0.58.0 ([#7752](https://github.com/RocketChat/Rocket.Chat/pull/7752) by [@flaviogrossi](https://github.com/flaviogrossi) & [@jangmarker](https://github.com/jangmarker) & [@karlprieb](https://github.com/karlprieb) & [@pierreozoux](https://github.com/pierreozoux) & [@ryoshimizu](https://github.com/ryoshimizu)) - Sync Master with 0.57.3 ([#7690](https://github.com/RocketChat/Rocket.Chat/pull/7690)) @@ -22908,7 +22774,6 @@ - [@AhmetS](https://github.com/AhmetS) - [@Darkneon](https://github.com/Darkneon) - [@JSzaszvari](https://github.com/JSzaszvari) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@Oliver84](https://github.com/Oliver84) - [@al3x](https://github.com/al3x) - [@borsden](https://github.com/borsden) @@ -22934,6 +22799,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -22976,9 +22842,9 @@ - file upload broken when running in subdirectory https://github.com… ([#7395](https://github.com/RocketChat/Rocket.Chat/pull/7395) by [@ryoshimizu](https://github.com/ryoshimizu)) -- Fix Anonymous User ([#7444](https://github.com/RocketChat/Rocket.Chat/pull/7444) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Anonymous User ([#7444](https://github.com/RocketChat/Rocket.Chat/pull/7444)) -- Fix Join Channel Without Preview Room Permission ([#7535](https://github.com/RocketChat/Rocket.Chat/pull/7535) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Join Channel Without Preview Room Permission ([#7535](https://github.com/RocketChat/Rocket.Chat/pull/7535)) - Improve build script example ([#7555](https://github.com/RocketChat/Rocket.Chat/pull/7555)) @@ -22986,7 +22852,7 @@ - Modernize rate limiting of sendMessage ([#7325](https://github.com/RocketChat/Rocket.Chat/pull/7325) by [@jangmarker](https://github.com/jangmarker)) -- Use UTF8 setting for /create command ([#7394](https://github.com/RocketChat/Rocket.Chat/pull/7394) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Use UTF8 setting for /create command ([#7394](https://github.com/RocketChat/Rocket.Chat/pull/7394))
🔍 Minor changes @@ -22999,13 +22865,13 @@ ### 👩‍💻👨‍💻 Contributors 😍 - [@Darkneon](https://github.com/Darkneon) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@jangmarker](https://github.com/jangmarker) - [@rasos](https://github.com/rasos) - [@ryoshimizu](https://github.com/ryoshimizu) ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@graywolf336](https://github.com/graywolf336) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -23021,22 +22887,19 @@ - Always set LDAP properties on login ([#7472](https://github.com/RocketChat/Rocket.Chat/pull/7472)) -- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Emails in User Admin View ([#7431](https://github.com/RocketChat/Rocket.Chat/pull/7431)) - Fix file upload on Slack import ([#7469](https://github.com/RocketChat/Rocket.Chat/pull/7469)) -- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Private Channel List Submit ([#7432](https://github.com/RocketChat/Rocket.Chat/pull/7432)) -- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Unread Bar Disappearing ([#7403](https://github.com/RocketChat/Rocket.Chat/pull/7403)) - S3 uploads not working for custom URLs ([#7443](https://github.com/RocketChat/Rocket.Chat/pull/7443)) -### 👩‍💻👨‍💻 Contributors 😍 - -- [@MartinSchoeler](https://github.com/MartinSchoeler) - ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) @@ -23088,7 +22951,7 @@ - New avatar storage types ([#6788](https://github.com/RocketChat/Rocket.Chat/pull/6788)) -- postcss parser and cssnext implementation ([#6982](https://github.com/RocketChat/Rocket.Chat/pull/6982) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- postcss parser and cssnext implementation ([#6982](https://github.com/RocketChat/Rocket.Chat/pull/6982)) - Show full name in mentions if use full name setting enabled ([#6690](https://github.com/RocketChat/Rocket.Chat/pull/6690) by [@alexbrazier](https://github.com/alexbrazier)) @@ -23121,7 +22984,7 @@ - edit button on firefox ([#7105](https://github.com/RocketChat/Rocket.Chat/pull/7105)) -- Fix all reactions having the same username ([#7157](https://github.com/RocketChat/Rocket.Chat/pull/7157) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix all reactions having the same username ([#7157](https://github.com/RocketChat/Rocket.Chat/pull/7157)) - Fix avatar upload via users.setAvatar REST endpoint ([#7045](https://github.com/RocketChat/Rocket.Chat/pull/7045)) @@ -23135,7 +22998,7 @@ - Fix highlightjs bug ([#6991](https://github.com/RocketChat/Rocket.Chat/pull/6991)) -- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix jump to unread button ([#7320](https://github.com/RocketChat/Rocket.Chat/pull/7320)) - Fix login with Meteor saving an object as email address ([#6974](https://github.com/RocketChat/Rocket.Chat/pull/6974)) @@ -23143,11 +23006,11 @@ - Fix oembed previews not being shown ([#7208](https://github.com/RocketChat/Rocket.Chat/pull/7208)) -- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix Secret Url ([#7321](https://github.com/RocketChat/Rocket.Chat/pull/7321)) -- Fix the failing tests ([#7094](https://github.com/RocketChat/Rocket.Chat/pull/7094) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix the failing tests ([#7094](https://github.com/RocketChat/Rocket.Chat/pull/7094)) -- Fix the other tests failing due chimp update ([#6986](https://github.com/RocketChat/Rocket.Chat/pull/6986) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Fix the other tests failing due chimp update ([#6986](https://github.com/RocketChat/Rocket.Chat/pull/6986)) - Fix user's customFields not being saved correctly ([#7358](https://github.com/RocketChat/Rocket.Chat/pull/7358)) @@ -23155,7 +23018,7 @@ - Improve avatar migration ([#7352](https://github.com/RocketChat/Rocket.Chat/pull/7352)) -- Improve Tests ([#7049](https://github.com/RocketChat/Rocket.Chat/pull/7049) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Improve Tests ([#7049](https://github.com/RocketChat/Rocket.Chat/pull/7049)) - make channels.create API check for create-c ([#6968](https://github.com/RocketChat/Rocket.Chat/pull/6968) by [@reist](https://github.com/reist)) @@ -23203,19 +23066,19 @@ - Convert hipchat importer to js ([#7146](https://github.com/RocketChat/Rocket.Chat/pull/7146)) -- Convert irc package to js ([#7022](https://github.com/RocketChat/Rocket.Chat/pull/7022) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert irc package to js ([#7022](https://github.com/RocketChat/Rocket.Chat/pull/7022)) - Convert Livechat from Coffeescript to JavaScript ([#7096](https://github.com/RocketChat/Rocket.Chat/pull/7096)) -- Convert meteor-autocomplete package to js ([#6936](https://github.com/RocketChat/Rocket.Chat/pull/6936) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert meteor-autocomplete package to js ([#6936](https://github.com/RocketChat/Rocket.Chat/pull/6936)) -- Convert oauth2-server-config package to js ([#7017](https://github.com/RocketChat/Rocket.Chat/pull/7017) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert oauth2-server-config package to js ([#7017](https://github.com/RocketChat/Rocket.Chat/pull/7017)) -- Convert Ui Account Package to Js ([#6795](https://github.com/RocketChat/Rocket.Chat/pull/6795) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Ui Account Package to Js ([#6795](https://github.com/RocketChat/Rocket.Chat/pull/6795)) -- Convert ui-admin package to js ([#6911](https://github.com/RocketChat/Rocket.Chat/pull/6911) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert ui-admin package to js ([#6911](https://github.com/RocketChat/Rocket.Chat/pull/6911)) -- Convert WebRTC Package to Js ([#6775](https://github.com/RocketChat/Rocket.Chat/pull/6775) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert WebRTC Package to Js ([#6775](https://github.com/RocketChat/Rocket.Chat/pull/6775)) - converted rocketchat-importer ([#7018](https://github.com/RocketChat/Rocket.Chat/pull/7018)) @@ -23225,7 +23088,7 @@ - Fix mobile avatars ([#7177](https://github.com/RocketChat/Rocket.Chat/pull/7177)) -- fix the crashing tests ([#6976](https://github.com/RocketChat/Rocket.Chat/pull/6976) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- fix the crashing tests ([#6976](https://github.com/RocketChat/Rocket.Chat/pull/6976)) - Fix the Zapier oAuth return url to the new one ([#7215](https://github.com/RocketChat/Rocket.Chat/pull/7215)) @@ -23239,7 +23102,7 @@ - Remove missing CoffeeScript dependencies ([#7154](https://github.com/RocketChat/Rocket.Chat/pull/7154)) -- Remove Useless Jasmine Tests ([#7062](https://github.com/RocketChat/Rocket.Chat/pull/7062) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Remove Useless Jasmine Tests ([#7062](https://github.com/RocketChat/Rocket.Chat/pull/7062)) - Rocketchat ui message ([#6914](https://github.com/RocketChat/Rocket.Chat/pull/6914)) @@ -23257,7 +23120,6 @@ - [@ExTechOp](https://github.com/ExTechOp) - [@JSzaszvari](https://github.com/JSzaszvari) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@abrom](https://github.com/abrom) - [@alexbrazier](https://github.com/alexbrazier) - [@bbrauns](https://github.com/bbrauns) @@ -23276,6 +23138,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -23294,7 +23157,7 @@ ### 🎉 New features -- Add a pointer cursor to message images ([#6881](https://github.com/RocketChat/Rocket.Chat/pull/6881) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Add a pointer cursor to message images ([#6881](https://github.com/RocketChat/Rocket.Chat/pull/6881)) - Add a setting to not run outgoing integrations on message edits ([#6615](https://github.com/RocketChat/Rocket.Chat/pull/6615)) @@ -23373,17 +23236,17 @@ - Breaking long URLS to prevent overflow ([#6368](https://github.com/RocketChat/Rocket.Chat/pull/6368) by [@robertdown](https://github.com/robertdown)) -- Convert Katex Package to Js ([#6671](https://github.com/RocketChat/Rocket.Chat/pull/6671) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Katex Package to Js ([#6671](https://github.com/RocketChat/Rocket.Chat/pull/6671)) -- Convert Mailer Package to Js ([#6780](https://github.com/RocketChat/Rocket.Chat/pull/6780) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Mailer Package to Js ([#6780](https://github.com/RocketChat/Rocket.Chat/pull/6780)) - Convert markdown to js ([#6694](https://github.com/RocketChat/Rocket.Chat/pull/6694) by [@ehkasper](https://github.com/ehkasper)) -- Convert Mentions-Flextab Package to Js ([#6689](https://github.com/RocketChat/Rocket.Chat/pull/6689) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Mentions-Flextab Package to Js ([#6689](https://github.com/RocketChat/Rocket.Chat/pull/6689)) -- Convert Message-Star Package to js ([#6781](https://github.com/RocketChat/Rocket.Chat/pull/6781) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Message-Star Package to js ([#6781](https://github.com/RocketChat/Rocket.Chat/pull/6781)) -- Convert Oembed Package to Js ([#6688](https://github.com/RocketChat/Rocket.Chat/pull/6688) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Oembed Package to Js ([#6688](https://github.com/RocketChat/Rocket.Chat/pull/6688)) - Converted rocketchat-lib 3 ([#6672](https://github.com/RocketChat/Rocket.Chat/pull/6672)) @@ -23407,7 +23270,6 @@ ### 👩‍💻👨‍💻 Contributors 😍 -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@abrom](https://github.com/abrom) - [@alexbrazier](https://github.com/alexbrazier) - [@ehkasper](https://github.com/ehkasper) @@ -23422,6 +23284,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) @@ -23569,35 +23432,35 @@ - Clipboard [Firefox version < 50] ([#6280](https://github.com/RocketChat/Rocket.Chat/pull/6280)) -- Convert ChatOps Package to JavaScript ([#6425](https://github.com/RocketChat/Rocket.Chat/pull/6425) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert ChatOps Package to JavaScript ([#6425](https://github.com/RocketChat/Rocket.Chat/pull/6425)) -- Convert Dolphin Package to JavaScript ([#6427](https://github.com/RocketChat/Rocket.Chat/pull/6427) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Dolphin Package to JavaScript ([#6427](https://github.com/RocketChat/Rocket.Chat/pull/6427)) -- Convert File Package to js ([#6503](https://github.com/RocketChat/Rocket.Chat/pull/6503) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert File Package to js ([#6503](https://github.com/RocketChat/Rocket.Chat/pull/6503)) -- convert mapview package to js ([#6471](https://github.com/RocketChat/Rocket.Chat/pull/6471) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- convert mapview package to js ([#6471](https://github.com/RocketChat/Rocket.Chat/pull/6471)) -- Convert Message Pin Package to JS ([#6576](https://github.com/RocketChat/Rocket.Chat/pull/6576) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Message Pin Package to JS ([#6576](https://github.com/RocketChat/Rocket.Chat/pull/6576)) - convert rocketchat-ui part 2 ([#6539](https://github.com/RocketChat/Rocket.Chat/pull/6539)) -- Convert Spotify Package to JS ([#6449](https://github.com/RocketChat/Rocket.Chat/pull/6449) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Spotify Package to JS ([#6449](https://github.com/RocketChat/Rocket.Chat/pull/6449)) -- Convert Statistics Package to JS ([#6447](https://github.com/RocketChat/Rocket.Chat/pull/6447) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Statistics Package to JS ([#6447](https://github.com/RocketChat/Rocket.Chat/pull/6447)) -- Convert Theme Package to JS ([#6491](https://github.com/RocketChat/Rocket.Chat/pull/6491) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Theme Package to JS ([#6491](https://github.com/RocketChat/Rocket.Chat/pull/6491)) -- Convert Tutum Package to JS ([#6446](https://github.com/RocketChat/Rocket.Chat/pull/6446) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Tutum Package to JS ([#6446](https://github.com/RocketChat/Rocket.Chat/pull/6446)) -- Convert Ui-Login Package to Js ([#6561](https://github.com/RocketChat/Rocket.Chat/pull/6561) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Ui-Login Package to Js ([#6561](https://github.com/RocketChat/Rocket.Chat/pull/6561)) -- Convert Ui-Master Package to Js ([#6498](https://github.com/RocketChat/Rocket.Chat/pull/6498) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Ui-Master Package to Js ([#6498](https://github.com/RocketChat/Rocket.Chat/pull/6498)) -- Convert ui-vrecord Package to JS ([#6473](https://github.com/RocketChat/Rocket.Chat/pull/6473) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert ui-vrecord Package to JS ([#6473](https://github.com/RocketChat/Rocket.Chat/pull/6473)) -- Convert Version Package to JS ([#6494](https://github.com/RocketChat/Rocket.Chat/pull/6494) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Version Package to JS ([#6494](https://github.com/RocketChat/Rocket.Chat/pull/6494)) -- Convert Wordpress Package to js ([#6499](https://github.com/RocketChat/Rocket.Chat/pull/6499) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Convert Wordpress Package to js ([#6499](https://github.com/RocketChat/Rocket.Chat/pull/6499)) - converted getAvatarUrlFromUsername ([#6496](https://github.com/RocketChat/Rocket.Chat/pull/6496)) @@ -23651,11 +23514,11 @@ - fixed typo in readme.md ([#6580](https://github.com/RocketChat/Rocket.Chat/pull/6580) by [@sezinkarli](https://github.com/sezinkarli)) -- Flex-Tab CoffeeScript to JavaScript I ([#6276](https://github.com/RocketChat/Rocket.Chat/pull/6276) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Flex-Tab CoffeeScript to JavaScript I ([#6276](https://github.com/RocketChat/Rocket.Chat/pull/6276)) -- Flex-Tab CoffeeScript to JavaScript II ([#6277](https://github.com/RocketChat/Rocket.Chat/pull/6277) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Flex-Tab CoffeeScript to JavaScript II ([#6277](https://github.com/RocketChat/Rocket.Chat/pull/6277)) -- Flex-Tab CoffeeScript to JavaScript III ([#6278](https://github.com/RocketChat/Rocket.Chat/pull/6278) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Flex-Tab CoffeeScript to JavaScript III ([#6278](https://github.com/RocketChat/Rocket.Chat/pull/6278)) - focus first textbox element ([#6257](https://github.com/RocketChat/Rocket.Chat/pull/6257) by [@a5his](https://github.com/a5his)) @@ -23675,19 +23538,19 @@ - Make favicon package easier to read. ([#6422](https://github.com/RocketChat/Rocket.Chat/pull/6422) by [@Kiran-Rao](https://github.com/Kiran-Rao)) -- Max textarea height ([#6409](https://github.com/RocketChat/Rocket.Chat/pull/6409) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Max textarea height ([#6409](https://github.com/RocketChat/Rocket.Chat/pull/6409)) - meteor update ([#6631](https://github.com/RocketChat/Rocket.Chat/pull/6631)) - Move room display name logic to roomType definition ([#6585](https://github.com/RocketChat/Rocket.Chat/pull/6585)) -- Move wordpress packages client files to client folder ([#6571](https://github.com/RocketChat/Rocket.Chat/pull/6571) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Move wordpress packages client files to client folder ([#6571](https://github.com/RocketChat/Rocket.Chat/pull/6571)) - New feature: Room announcement ([#6351](https://github.com/RocketChat/Rocket.Chat/pull/6351) by [@billtt](https://github.com/billtt)) - Only configure LoggerManager on server ([#6596](https://github.com/RocketChat/Rocket.Chat/pull/6596)) -- Password reset Cleaner text ([#6319](https://github.com/RocketChat/Rocket.Chat/pull/6319) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Password reset Cleaner text ([#6319](https://github.com/RocketChat/Rocket.Chat/pull/6319)) - POC Google Natural Language integration ([#6298](https://github.com/RocketChat/Rocket.Chat/pull/6298)) @@ -23695,7 +23558,7 @@ - Remove coffeescript package from ui-sidenav ([#6542](https://github.com/RocketChat/Rocket.Chat/pull/6542) by [@Kiran-Rao](https://github.com/Kiran-Rao)) -- Remove Deprecated Shared Secret Package ([#6540](https://github.com/RocketChat/Rocket.Chat/pull/6540) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Remove Deprecated Shared Secret Package ([#6540](https://github.com/RocketChat/Rocket.Chat/pull/6540)) - rocketchat-channel-settings coffee to js ([#6551](https://github.com/RocketChat/Rocket.Chat/pull/6551)) @@ -23705,11 +23568,11 @@ - rocketchat-ui coffee to js part1 ([#6504](https://github.com/RocketChat/Rocket.Chat/pull/6504)) -- Side-nav CoffeeScript to JavaScript ([#6264](https://github.com/RocketChat/Rocket.Chat/pull/6264) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Side-nav CoffeeScript to JavaScript ([#6264](https://github.com/RocketChat/Rocket.Chat/pull/6264)) -- Side-nav CoffeeScript to JavaScript II ([#6266](https://github.com/RocketChat/Rocket.Chat/pull/6266) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Side-nav CoffeeScript to JavaScript II ([#6266](https://github.com/RocketChat/Rocket.Chat/pull/6266)) -- Side-nav CoffeeScript to JavaScript III ([#6274](https://github.com/RocketChat/Rocket.Chat/pull/6274) by [@MartinSchoeler](https://github.com/MartinSchoeler)) +- Side-nav CoffeeScript to JavaScript III ([#6274](https://github.com/RocketChat/Rocket.Chat/pull/6274)) - Use real name instead of username for messages and direct messages list ([#3851](https://github.com/RocketChat/Rocket.Chat/pull/3851) by [@alexbrazier](https://github.com/alexbrazier)) @@ -23719,7 +23582,6 @@ - [@Kiran-Rao](https://github.com/Kiran-Rao) - [@Lawri-van-Buel](https://github.com/Lawri-van-Buel) -- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@a5his](https://github.com/a5his) - [@alexbrazier](https://github.com/alexbrazier) - [@billtt](https://github.com/billtt) @@ -23736,6 +23598,7 @@ ### 👩‍💻👨‍💻 Core Team 🤓 +- [@MartinSchoeler](https://github.com/MartinSchoeler) - [@engelgabriel](https://github.com/engelgabriel) - [@geekgonecrazy](https://github.com/geekgonecrazy) - [@ggazzo](https://github.com/ggazzo) diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index aa21ddbf2e75..df0994d64a0f 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-rc.4 +ENV RC_VERSION 4.7.0-rc.5 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 0880093021ce..9c8fd01f6c9d 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-rc.4/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0-rc.5/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index d9c3487493b7..424ddbf8ac48 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-rc.4 +version: 4.7.0-rc.5 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 48572f96557e..00c404cd26e6 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-rc.4" + "version": "4.7.0-rc.5" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 26fcabbec240..4069d84394b3 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-rc.4", + "version": "4.7.0-rc.5", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index e60086a81300..5e810e8893db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-rc.4", + "version": "4.7.0-rc.5", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 18c437659e9da4c905bf02980732e4542a123b01 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Tue, 3 May 2022 20:29:37 -0300 Subject: [PATCH 007/145] Bump version to 4.7.0 --- .github/history.json | 12 + HISTORY.md | 669 ++++++++---------- apps/meteor/.docker/Dockerfile.rhel | 2 +- .../.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 8 files changed, 314 insertions(+), 379 deletions(-) diff --git a/.github/history.json b/.github/history.json index fb6d5f41f9dc..22a00de43d9b 100644 --- a/.github/history.json +++ b/.github/history.json @@ -74386,6 +74386,18 @@ ] } ] + }, + "4.7.0": { + "node_version": "14.18.3", + "npm_version": "6.14.15", + "mongo_versions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ], + "pull_requests": [] } } } \ No newline at end of file diff --git a/HISTORY.md b/HISTORY.md index fba8c6dad0c9..34be25edb261 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,150 +1,12 @@ -# 4.7.0 (Under Release Candidate Process) +# 4.7.0 +`2022-05-03 · 4 🎉 · 7 🚀 · 33 🐛 · 69 🔍 · 35 👩‍💻👨‍💻` -## 4.7.0-rc.5 -`2022-05-03 · 3 🔍 · 2 👩‍💻👨‍💻` - -
-🔍 Minor changes - - -- Chore: Bump fuselage ([#25371](https://github.com/RocketChat/Rocket.Chat/pull/25371)) - -- Regression: Fix clicking on visitor's chat in the sidebar does not display the chat window ([#25380](https://github.com/RocketChat/Rocket.Chat/pull/25380)) - - Fix: livechat room not opening. - -- Regression: Fix size of custom emoji and render emoji on thread message preview ([#25314](https://github.com/RocketChat/Rocket.Chat/pull/25314)) - -
- -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@filipemarins](https://github.com/filipemarins) -- [@gabriellsh](https://github.com/gabriellsh) - -## 4.7.0-rc.4 -`2022-05-02 · 6 🔍 · 7 👩‍💻👨‍💻` - -
-🔍 Minor changes - - -- Chore: Add options to debug stdout and rate limiter ([#25336](https://github.com/RocketChat/Rocket.Chat/pull/25336)) - -- Chore: Create README.md for Rest Typings ([#25335](https://github.com/RocketChat/Rocket.Chat/pull/25335)) - -- Regression: bump onboarding-ui version ([#25320](https://github.com/RocketChat/Rocket.Chat/pull/25320)) - - - Bump to 'next' the onboarding-ui package from fuselage. - - Update from 'companyEmail' to 'email' adminData usage types - -- Regression: Fix English i18n react text ([#25368](https://github.com/RocketChat/Rocket.Chat/pull/25368)) - - Incorrect text in reaction tooltip has been fixed - -- Regression: Fix multi line is not showing an empty line between lines ([#25317](https://github.com/RocketChat/Rocket.Chat/pull/25317)) - -- Regression: Rocket.Chat Webapp not loading. ([#25349](https://github.com/RocketChat/Rocket.Chat/pull/25349)) - -
- -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@d-gubert](https://github.com/d-gubert) -- [@filipemarins](https://github.com/filipemarins) -- [@gabriellsh](https://github.com/gabriellsh) -- [@ggazzo](https://github.com/ggazzo) -- [@guijun13](https://github.com/guijun13) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@sampaiodiego](https://github.com/sampaiodiego) - -## 4.7.0-rc.3 -`2022-04-27 · 3 🔍 · 2 👩‍💻👨‍💻` - -
-🔍 Minor changes - - -- Regression: Better MongoDB connection management for micro services ([#25323](https://github.com/RocketChat/Rocket.Chat/pull/25323)) - -- Regression: Messages in new message template Crashing. ([#25327](https://github.com/RocketChat/Rocket.Chat/pull/25327)) - -- Regression: Validate empty fields for Message template ([#25250](https://github.com/RocketChat/Rocket.Chat/pull/25250)) - -
- -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@gabriellsh](https://github.com/gabriellsh) -- [@sampaiodiego](https://github.com/sampaiodiego) - -## 4.7.0-rc.2 -`2022-04-27 · 6 🔍 · 7 👩‍💻👨‍💻` - -
-🔍 Minor changes - - -- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218)) - - - data and test-failure should be ignored - - ensure scripts use cross-env - -- Regression: Add eslint package to micro services Dockerfile ([#25311](https://github.com/RocketChat/Rocket.Chat/pull/25311)) - -- Regression: Change preference to be default legacy messages ([#25255](https://github.com/RocketChat/Rocket.Chat/pull/25255)) - -- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306)) - -- Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings ([#25319](https://github.com/RocketChat/Rocket.Chat/pull/25319)) - - The package only included a few pre-built which caused all macs to have to compile every time they installed and also caused our alpine not to work. - - This temporarily switches to a fork of the matrix-appservice-bridge package. - - Made changes to one of its child dependencies `matrix-rust-sdk-bindings` that adds pre-built binaries for mac and musl (for alpine). - -- Regression: Revert Bugsnag version ([#25313](https://github.com/RocketChat/Rocket.Chat/pull/25313)) - -
- -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@d-gubert](https://github.com/d-gubert) -- [@filipemarins](https://github.com/filipemarins) -- [@gabriellsh](https://github.com/gabriellsh) -- [@geekgonecrazy](https://github.com/geekgonecrazy) -- [@ggazzo](https://github.com/ggazzo) -- [@sampaiodiego](https://github.com/sampaiodiego) -- [@souzaramon](https://github.com/souzaramon) - -## 4.7.0-rc.1 -`2022-04-26 · 4 🔍 · 4 👩‍💻👨‍💻` - -
-🔍 Minor changes - - -- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299)) - -- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305)) - -- Regression: Shows error if micro service cannot connect to Mongo ([#25301](https://github.com/RocketChat/Rocket.Chat/pull/25301)) - -- Regression: Use exact Node version on micro services Docker images ([#25287](https://github.com/RocketChat/Rocket.Chat/pull/25287)) - -
- -### 👩‍💻👨‍💻 Core Team 🤓 - -- [@filipemarins](https://github.com/filipemarins) -- [@ggazzo](https://github.com/ggazzo) -- [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) -- [@sampaiodiego](https://github.com/sampaiodiego) - -## 4.7.0-rc.0 -`2022-04-22 · 4 🎉 · 7 🚀 · 33 🐛 · 47 🔍 · 34 👩‍💻👨‍💻` +### Engine versions +- Node: `14.18.3` +- NPM: `6.14.15` +- MongoDB: `3.6, 4.0, 4.2, 4.4, 5.0` +- Apps-Engine: `1.31.0` ### 🎉 New features @@ -177,13 +39,13 @@ Earlier OTR room uses only 2 states, we need more states to support future features. This adds more states for the OTR contextualBar. - + - Expired Screen Shot 2022-04-20 at 13 55 52 - + - Declined Screen Shot 2022-04-20 at 13 49 28 - + - Error Screen Shot 2022-04-20 at 13 55 26 @@ -224,10 +86,10 @@ } ``` was being used in the `departmentId` parameter. - + - Before: ![image](https://user-images.githubusercontent.com/30026625/161832057-d96ffd21-a7dd-421e-bfaa-3b9f4a9127b2.png) - + - After: ![image](https://user-images.githubusercontent.com/30026625/161831092-9ee77b51-b083-4f45-9c48-ab2e0511c4d6.png) @@ -235,10 +97,10 @@ Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online unless agent explicitly logs off. - Agent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways. + Agent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways. 1. User tries to switch the network. User experiences a glitch of disconnectivity. This can be simulated by turning the network off - in the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh. - 2. Second reason is when computer goes in sleep mode. + in the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh. + 2. Second reason is when computer goes in sleep mode. 3. Third reason is that when asterisk is crashed/in maintenance mode/explicitly stopped. Solution: @@ -335,7 +197,7 @@ - UserCard sanitization ([#25089](https://github.com/RocketChat/Rocket.Chat/pull/25089)) - - Rewrites the component to TS + - Rewrites the component to TS - Fixes some visual issues ### before @@ -353,9 +215,9 @@ It was realised that the race does not happen because of the database or server noticing the changes late. But because of the time taken to establish the AMI connection with Asterisk. Solution: - - 1. Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value. - 2. From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance. + + 1. Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value. + 2. From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance. 3. in apps/meteor/client/providers/CallProvider/hooks/useVoipClient.ts add the event handler that receives this event. Change voipEnabled from constant to state. Change this state based on the 'value' that is received by the handler.
@@ -380,12 +242,16 @@ ![image](https://user-images.githubusercontent.com/40830821/162269915-931c5c3c-c979-4234-b74c-371f67467ce0.png) +- Chore: Add options to debug stdout and rate limiter ([#25336](https://github.com/RocketChat/Rocket.Chat/pull/25336)) + - Chore: Add root package.json to houston files ([#25286](https://github.com/RocketChat/Rocket.Chat/pull/25286)) See title - Chore: Add yarn plugin to check node and yarn version ([#25224](https://github.com/RocketChat/Rocket.Chat/pull/25224)) +- Chore: Bump fuselage ([#25371](https://github.com/RocketChat/Rocket.Chat/pull/25371)) + - Chore: Bump Fuselage packages ([#25259](https://github.com/RocketChat/Rocket.Chat/pull/25259)) - Chore: Cancel running jobs if PR is updated ([#24708](https://github.com/RocketChat/Rocket.Chat/pull/24708)) @@ -398,6 +264,13 @@ - Chore: Convert NotificationStatus to TS ([#25125](https://github.com/RocketChat/Rocket.Chat/pull/25125)) +- Chore: Create README.md for Rest Typings ([#25335](https://github.com/RocketChat/Rocket.Chat/pull/25335)) + +- Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) ([#25218](https://github.com/RocketChat/Rocket.Chat/pull/25218)) + + - data and test-failure should be ignored + - ensure scripts use cross-env + - Chore: Fix return type warnings ([#25275](https://github.com/RocketChat/Rocket.Chat/pull/25275)) - Chore: Migrate oauth2server to typescript ([#25126](https://github.com/RocketChat/Rocket.Chat/pull/25126)) @@ -452,24 +325,73 @@ - Merge master into develop & Set version to 4.7.0-develop ([#25028](https://github.com/RocketChat/Rocket.Chat/pull/25028)) +- Regression: Add `isPending` status to message ([#25299](https://github.com/RocketChat/Rocket.Chat/pull/25299)) + +- Regression: Add eslint package to micro services Dockerfile ([#25311](https://github.com/RocketChat/Rocket.Chat/pull/25311)) + - Regression: Add select message to system message and thread preview and allow select on legacy template ([#25251](https://github.com/RocketChat/Rocket.Chat/pull/25251)) - Regression: Avatar not loading on first direct message ([#25211](https://github.com/RocketChat/Rocket.Chat/pull/25211)) fix avatar not loading on a first direct message +- Regression: Better MongoDB connection management for micro services ([#25323](https://github.com/RocketChat/Rocket.Chat/pull/25323)) + +- Regression: bump onboarding-ui version ([#25320](https://github.com/RocketChat/Rocket.Chat/pull/25320)) + + - Bump to 'next' the onboarding-ui package from fuselage. + - Update from 'companyEmail' to 'email' adminData usage types + +- Regression: Change preference to be default legacy messages ([#25255](https://github.com/RocketChat/Rocket.Chat/pull/25255)) + - Regression: CI playwright ([#25168](https://github.com/RocketChat/Rocket.Chat/pull/25168)) +- Regression: eslint not running on packages ([#25305](https://github.com/RocketChat/Rocket.Chat/pull/25305)) + - Regression: Fix CI monorepo build ([#25107](https://github.com/RocketChat/Rocket.Chat/pull/25107)) +- Regression: Fix clicking on visitor's chat in the sidebar does not display the chat window ([#25380](https://github.com/RocketChat/Rocket.Chat/pull/25380)) + + Fix: livechat room not opening. + +- Regression: Fix English i18n react text ([#25368](https://github.com/RocketChat/Rocket.Chat/pull/25368)) + + Incorrect text in reaction tooltip has been fixed + - Regression: Fix federation Matrix bridge startup ([#25273](https://github.com/RocketChat/Rocket.Chat/pull/25273)) - Regression: Fix micro services Docker build ([#25193](https://github.com/RocketChat/Rocket.Chat/pull/25193)) +- Regression: Fix multi line is not showing an empty line between lines ([#25317](https://github.com/RocketChat/Rocket.Chat/pull/25317)) + +- Regression: Fix reply button not working when hideFlexTab is enabled ([#25306](https://github.com/RocketChat/Rocket.Chat/pull/25306)) + - Regression: Fix services Docker build on CI ([#25181](https://github.com/RocketChat/Rocket.Chat/pull/25181)) +- Regression: Fix size of custom emoji and render emoji on thread message preview ([#25314](https://github.com/RocketChat/Rocket.Chat/pull/25314)) + +- Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings ([#25319](https://github.com/RocketChat/Rocket.Chat/pull/25319)) + + The package only included a few pre-built which caused all macs to have to compile every time they installed and also caused our alpine not to work. + + This temporarily switches to a fork of the matrix-appservice-bridge package. + + Made changes to one of its child dependencies `matrix-rust-sdk-bindings` that adds pre-built binaries for mac and musl (for alpine). + +- Regression: Messages in new message template Crashing. ([#25327](https://github.com/RocketChat/Rocket.Chat/pull/25327)) + +- Regression: Revert Bugsnag version ([#25313](https://github.com/RocketChat/Rocket.Chat/pull/25313)) + +- Regression: Rocket.Chat Webapp not loading. ([#25349](https://github.com/RocketChat/Rocket.Chat/pull/25349)) + - Regression: Show username and real name on the message system ([#25254](https://github.com/RocketChat/Rocket.Chat/pull/25254)) +- Regression: Shows error if micro service cannot connect to Mongo ([#25301](https://github.com/RocketChat/Rocket.Chat/pull/25301)) + +- Regression: Use exact Node version on micro services Docker images ([#25287](https://github.com/RocketChat/Rocket.Chat/pull/25287)) + +- Regression: Validate empty fields for Message template ([#25250](https://github.com/RocketChat/Rocket.Chat/pull/25250)) + - Regression: yarn dev triggers build dependencies ([#25208](https://github.com/RocketChat/Rocket.Chat/pull/25208))
@@ -508,6 +430,7 @@ - [@pierre-lehnen-rc](https://github.com/pierre-lehnen-rc) - [@rodrigok](https://github.com/rodrigok) - [@sampaiodiego](https://github.com/sampaiodiego) +- [@souzaramon](https://github.com/souzaramon) - [@tassoevan](https://github.com/tassoevan) - [@tiagoevanp](https://github.com/tiagoevanp) - [@tmontini](https://github.com/tmontini) @@ -630,16 +553,16 @@ - Adding new statistics related to voip and omnichannel ([#24887](https://github.com/RocketChat/Rocket.Chat/pull/24887)) - - Total of Canned response messages sent - - Total of tags used - - Last-Chatted Agent Preferred (enabled/disabled) - - Assign new conversations to the contact manager (enabled/disabled) - - How to handle Visitor Abandonment setting - - Amount of chats placed on hold - - VoIP Enabled - - Amount of VoIP Calls - - Amount of VoIP Extensions connected - - Amount of Calls placed on hold (1x per call) + - Total of Canned response messages sent + - Total of tags used + - Last-Chatted Agent Preferred (enabled/disabled) + - Assign new conversations to the contact manager (enabled/disabled) + - How to handle Visitor Abandonment setting + - Amount of chats placed on hold + - VoIP Enabled + - Amount of VoIP Calls + - Amount of VoIP Extensions connected + - Amount of Calls placed on hold (1x per call) - Fixed Session Aggregation type definitions - New omnichannel statistics and async statistics processing. ([#24749](https://github.com/RocketChat/Rocket.Chat/pull/24749)) @@ -673,8 +596,8 @@ - **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) - - Improve the CallProvider code; - - Adjust the text case of the VoIP component on the FooterSidebar; + - Improve the CallProvider code; + - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. - `PaginatedSelectFiltered` not handling changes ([#24732](https://github.com/RocketChat/Rocket.Chat/pull/24732)) @@ -739,7 +662,7 @@ - LDAP avatars being rotated according to metadata even if the setting to rotate uploads is off ([#24320](https://github.com/RocketChat/Rocket.Chat/pull/24320)) - - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); + - Use the `FileUpload_RotateImages` setting (**Administration > File Upload > Rotate images on upload**) to control whether avatars should be rotated automatically based on their data (XEIF); - Display the avatar image preview (orientation) according to the `FileUpload_RotateImages` setting. - Missing dependency on useEffect at CallProvider ([#24882](https://github.com/RocketChat/Rocket.Chat/pull/24882)) @@ -775,7 +698,7 @@ - Room archived/unarchived system messages aren't sent when editing room settings ([#24897](https://github.com/RocketChat/Rocket.Chat/pull/24897)) - - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); + - Send the "Room archived" and "Room unarchived" system messages when editing room settings (and not only when rooms are archived/unarchived with the slash-command); - Fix the "Hide System Messages" option for the "Room archived" and "Room unarchived" system messages; - room message not load when is a new message ([#24955](https://github.com/RocketChat/Rocket.Chat/pull/24955)) @@ -796,8 +719,8 @@ - Several issues related to custom roles ([#24052](https://github.com/RocketChat/Rocket.Chat/pull/24052)) - - Throw an error when trying to delete a role (User or Subscription role) that are still being used; - - Fix "Invalid Role" error for custom roles in Role Editing sidebar; + - Throw an error when trying to delete a role (User or Subscription role) that are still being used; + - Fix "Invalid Role" error for custom roles in Role Editing sidebar; - Fix "Users in Role" screen for custom roles. - Show call icon only when user has extension associated ([#24752](https://github.com/RocketChat/Rocket.Chat/pull/24752)) @@ -884,7 +807,7 @@ - Chore: Add E2E tests for livechat/visitor ([#24764](https://github.com/RocketChat/Rocket.Chat/pull/24764) by [@Muramatsu2602](https://github.com/Muramatsu2602)) - - Create a new test suite file under tests/end-to-end/api/livechat + - Create a new test suite file under tests/end-to-end/api/livechat - Create tests for the following endpoints: + livechat/visitor (create visitor, update visitor, add custom fields to visitors) @@ -938,8 +861,8 @@ - Chore: Storybook mocking and examples improved ([#24969](https://github.com/RocketChat/Rocket.Chat/pull/24969)) - - Stories from `ee/` included; - - Differentiate root story kinds; + - Stories from `ee/` included; + - Differentiate root story kinds; - Mocking of `ServerContext` via Storybook parameters. - Chore: Update Livechat ([#24754](https://github.com/RocketChat/Rocket.Chat/pull/24754)) @@ -1144,8 +1067,8 @@ - **VOIP:** SidebarFooter component ([#24838](https://github.com/RocketChat/Rocket.Chat/pull/24838)) - - Improve the CallProvider code; - - Adjust the text case of the VoIP component on the FooterSidebar; + - Improve the CallProvider code; + - Adjust the text case of the VoIP component on the FooterSidebar; - Fix the bad behavior with the changes in queue's name. - Broken build caused by PRs modifying same file differently ([#24863](https://github.com/RocketChat/Rocket.Chat/pull/24863)) @@ -1329,19 +1252,19 @@ - VoIP Support for Omnichannel ([#23102](https://github.com/RocketChat/Rocket.Chat/pull/23102)) - - Created VoipService to manage VoIP connections and PBX connection - - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) - - Created Basic interfaces to support new services and new model - - Created Endpoints for management interfaces - - Implemented asterisk connector on VoIP service - - Created UI components to show calls incoming and to allow answering/rejecting calls - - Added new settings to control call server/management server connection values - - Added endpoints to associate Omnichannel Agents with PBX Extensions - - Added support for event listening on server side, to get metadata about calls being received/ongoing - - Created new pages to update settings & to see user-extension association - - Created new page to see ongoing calls (and past calls) - - Added support for remote hangup/hold on calls - - Implemented call metrics calculation (hold time, waiting time, talk time) + - Created VoipService to manage VoIP connections and PBX connection + - Created LivechatVoipService that will handle custom cases for livechat (creating rooms, assigning chats to queue, actions when call is finished, etc) + - Created Basic interfaces to support new services and new model + - Created Endpoints for management interfaces + - Implemented asterisk connector on VoIP service + - Created UI components to show calls incoming and to allow answering/rejecting calls + - Added new settings to control call server/management server connection values + - Added endpoints to associate Omnichannel Agents with PBX Extensions + - Added support for event listening on server side, to get metadata about calls being received/ongoing + - Created new pages to update settings & to see user-extension association + - Created new page to see ongoing calls (and past calls) + - Added support for remote hangup/hold on calls + - Implemented call metrics calculation (hold time, waiting time, talk time) - Show a notificaiton when call is received ### 🚀 Improvements @@ -1370,7 +1293,7 @@ - Add user to room on "Click to Join!" button press ([#24041](https://github.com/RocketChat/Rocket.Chat/pull/24041) by [@ostjen](https://github.com/ostjen)) - - Add user to room on "Click to Join!" button press; + - Add user to room on "Click to Join!" button press; - Display the "Join" button in discussions inside channels (keeping the behavior consistent with discussions inside groups). - Added a new "All" tab which shows all integrations in Integrations ([#24109](https://github.com/RocketChat/Rocket.Chat/pull/24109) by [@aswinidev](https://github.com/aswinidev)) @@ -1426,7 +1349,7 @@ - Team system messages feedback ([#24209](https://github.com/RocketChat/Rocket.Chat/pull/24209) by [@ostjen](https://github.com/ostjen)) - - Delete some keys that aren't being used (eg: User_left_female). + - Delete some keys that aren't being used (eg: User_left_female). - Add new Teams' system messages: - `added-user-to-team`: **added** @\user to this Team; - `removed-user-from-team`: **removed** @\user from this Team; @@ -1434,7 +1357,7 @@ - `user-converted-to-channel`: **converted** #\room to a Channel; - `user-removed-room-from-team`: **removed** @\user from this Team; - `user-deleted-room-from-team`: **deleted** #\room from this Team; - - `user-added-room-to-team`: **deleted** #\room to this Team; + - `user-added-room-to-team`: **deleted** #\room to this Team; - Add the corresponding options to hide each new system message and the missing `ujt` and `ult` hide options. ### 🐛 Bug fixes @@ -1452,8 +1375,8 @@ - Issues on selecting users when importing CSV ([#24253](https://github.com/RocketChat/Rocket.Chat/pull/24253)) - * Fix users selecting by fixing their _id - * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone + * Fix users selecting by fixing their _id + * Add condition to disable 'Start importing' button if `usersCount`, `channelsCount` and `messageCount` equals 0, or if messageCount is alone * Remove `disabled={usersCount === 0}` on user Tab - OAuth mismatch redirect_uri error ([#24450](https://github.com/RocketChat/Rocket.Chat/pull/24450)) @@ -1614,9 +1537,9 @@ - Regression: Error setting user avatars and mentioning rooms on Slack Import ([#24585](https://github.com/RocketChat/Rocket.Chat/pull/24585)) - - Fix `Mentioned room not found` error when importing rooms from Slack; - - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); - - Fix incorrect message count on imported rooms; + - Fix `Mentioned room not found` error when importing rooms from Slack; + - Fix `Forbidden` error when setting avatars for users imported from Slack (on user import/creation); + - Fix incorrect message count on imported rooms; - Fix missing username on messages imported from Slack; - Regression: Error when trying to load name of dm rooms for avatars and notifications ([#24583](https://github.com/RocketChat/Rocket.Chat/pull/24583)) @@ -1868,7 +1791,7 @@ - lib/Statistics improved and metrics collector ([#24177](https://github.com/RocketChat/Rocket.Chat/pull/24177) by [@ostjen](https://github.com/ostjen)) - - On `statistics` object the property `get` is an async function now. + - On `statistics` object the property `get` is an async function now. - We need to collect additional data of feature activation through the statistics collector. - Some codes were splitted into another file just to organize. @@ -1902,10 +1825,10 @@ - Setup Wizard Registration Flow ([#23676](https://github.com/RocketChat/Rocket.Chat/pull/23676)) - This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: - - A brand new visual design; - - Form validation improves; - - Allow users to navigate back to all steps; + This pull request brings a few improvements in our setup wizard flow, the very first contact with a Rocket.Chat. Some of them: + - A brand new visual design; + - Form validation improves; + - Allow users to navigate back to all steps; - Optimized steps to register your workspace or keep standalone. And many more! @@ -1944,8 +1867,8 @@ - Apps Contextual Bar not carrying title and room information ([#24241](https://github.com/RocketChat/Rocket.Chat/pull/24241)) Fixes: - - - the app's name being rendered instead of the view's title, + + - the app's name being rendered instead of the view's title, - the room's information (`IRoom`) wasn't being sent to the app when a `block action` happened Fixed behavior with correct view title and room information included in the block action event: @@ -1978,8 +1901,8 @@ - Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) - It: - - Adds `Firefox ESR` to `browserslist`; + It: + - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. - Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) @@ -2292,8 +2215,8 @@ - Ensure Firefox 91 ESR support ([#24096](https://github.com/RocketChat/Rocket.Chat/pull/24096)) - It: - - Adds `Firefox ESR` to `browserslist`; + It: + - Adds `Firefox ESR` to `browserslist`; - Upgrades `@rocket.chat/fuselage-hooks` to overcome a bug related to Firefox implementation of `ResizeObserver` API. - Enter not working on modal's multi-line input ([#23981](https://github.com/RocketChat/Rocket.Chat/pull/23981)) @@ -2371,7 +2294,7 @@ - Update "Message Erasure Type" setting's description ([#23879](https://github.com/RocketChat/Rocket.Chat/pull/23879)) - - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); + - Improves the "Message Erasure Type" setting's description by providing more details regarding the expected behavior of each option ("Keep Messages and User Name", "Delete All Messages" and "Remove link between user and messages"); - Remove outdated translations (for this setting's description). - Webdav methods sanitization ([#23924](https://github.com/RocketChat/Rocket.Chat/pull/23924)) @@ -2513,14 +2436,14 @@ - Chore: Centralize email validation functionality ([#23816](https://github.com/RocketChat/Rocket.Chat/pull/23816)) - - Create lib for validating emails + - Create lib for validating emails - Modify places that validate emails to use the new central function - Chore: Change Menu props to accept next fuselage version ([#23839](https://github.com/RocketChat/Rocket.Chat/pull/23839)) - Chore: Create script to add new migrations ([#23822](https://github.com/RocketChat/Rocket.Chat/pull/23822)) - - Create NPM script to add new migrations + - Create NPM script to add new migrations - TODO: Infer next migration number from file list - Chore: Deleted LivechatPageVisited ([#23993](https://github.com/RocketChat/Rocket.Chat/pull/23993) by [@ostjen](https://github.com/ostjen)) @@ -2781,8 +2704,8 @@ - Engagement Dashboard ([#23547](https://github.com/RocketChat/Rocket.Chat/pull/23547)) - - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; - - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); + - Adds helpers `onToggledFeature` for server and client code to handle license activation/deactivation without server restart; + - Replaces usage of `useEndpointData` with `useQuery` (from [React Query](https://react-query.tanstack.com/)); - Introduces `view-engagement-dashboard` permission. - Improve the add user drop down for add a user in create channel modal for UserAutoCompleteMultiple ([#23766](https://github.com/RocketChat/Rocket.Chat/pull/23766) by [@Jeanstaquet](https://github.com/Jeanstaquet)) @@ -2813,11 +2736,11 @@ - Stricter API types ([#23735](https://github.com/RocketChat/Rocket.Chat/pull/23735)) - It: - - Adds stricter types for `API`; - - Enables types for `urlParams`; - - Removes mandatory passage of `undefined` payload on client; - - Corrects some regressions; + It: + - Adds stricter types for `API`; + - Enables types for `urlParams`; + - Removes mandatory passage of `undefined` payload on client; + - Corrects some regressions; - Reassures my belief in TypeScript supremacy. ### 🐛 Bug fixes @@ -2827,12 +2750,12 @@ - **ENTERPRISE:** OAuth "Merge Roles" removes roles from users ([#23588](https://github.com/RocketChat/Rocket.Chat/pull/23588)) - - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); + - Fix OAuth "Merge Roles": the "Merge Roles" option now synchronize only the roles described in the "**Roles to Sync**" setting available in each Custom OAuth settings' group (instead of replacing users' roles by their OAuth roles); - Fix "Merge Roles" and "Channel Mapping" not being performed/updated on OAuth login. - **ENTERPRISE:** Private rooms and discussions can't be audited ([#23673](https://github.com/RocketChat/Rocket.Chat/pull/23673)) - - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; + - Add Private rooms (groups) and Discussions to the Message Auditing (Channels) autocomplete; - Update "Channels" tab name to "Rooms". - **ENTERPRISE:** Replace all occurrences of a placeholder on string instead of just first one ([#23703](https://github.com/RocketChat/Rocket.Chat/pull/23703)) @@ -2926,29 +2849,29 @@ We've been writing integration tests for the REST API quite regularly, but we can't say the same for UI-related modules. This PR is based on the assumption that _improving the developer experience on writing tests_ would increase our coverage and promote the adoption even for newcomers. Here as summary of the proposal: - + - Change Mocha configuration files: - Add a base configuration (`.mocharc.base.json`); - Rename the configuration for REST API tests (`mocha_end_to_end.opts.js -> .mocharc.api.js`); - Add a configuration for client modules (`.mocharc.client.js`); - - Enable ESLint for them. - - Add a Mocha test command exclusive for client modules (`npm run testunit-client`); + - Enable ESLint for them. + - Add a Mocha test command exclusive for client modules (`npm run testunit-client`); - Enable fast watch mode: - Configure `ts-node` to only transpile code (skip type checking); - - Define a list of files to be watched. - - Configure `mocha` environment on ESLint only for test files (required when using Mocha's globals); + - Define a list of files to be watched. + - Configure `mocha` environment on ESLint only for test files (required when using Mocha's globals); - Adopt Chai as our assertion library: - Unify the setup of Chai plugins (`chai-spies`, `chai-datetime`, `chai-dom`); - Replace `assert` with `chai`; - - Replace `chai.expect` with `expect`. + - Replace `chai.expect` with `expect`. - Enable integration tests with React components: - Enable JSX support on our default Babel configuration; - Adopt [testing library](https://testing-library.com/). - Chore: Rearrange module typings ([#23452](https://github.com/RocketChat/Rocket.Chat/pull/23452)) - - Move all external module declarations (definitions and augmentations) to `/definition/externals`; - - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; + - Move all external module declarations (definitions and augmentations) to `/definition/externals`; + - ~Symlink some modules on `/definition/externals` to `/ee/server/services/definition/externals`~ Share types with `/ee/server/services`; - Use TypeScript as server code entrypoint. - Chore: Remove duplicated 'name' key from rate limiter logs ([#23771](https://github.com/RocketChat/Rocket.Chat/pull/23771)) @@ -3126,7 +3049,7 @@ - **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) - - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. + - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. - **ENTERPRISE:** Omnichannel agent is not leaving the room when a forwarded chat is queued ([#23404](https://github.com/RocketChat/Rocket.Chat/pull/23404)) @@ -3185,7 +3108,7 @@ - SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) - - Remove `roles` field update on `insertOrUpdateSAMLUser` function; + - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event; - Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) @@ -3390,7 +3313,7 @@ - SAML Users' roles being reset to default on login ([#23411](https://github.com/RocketChat/Rocket.Chat/pull/23411)) - - Remove `roles` field update on `insertOrUpdateSAMLUser` function; + - Remove `roles` field update on `insertOrUpdateSAMLUser` function; - Add SAML `syncRoles` event;
@@ -3422,7 +3345,7 @@ - **APPS:** Communication problem when updating and uninstalling apps in cluster ([#23418](https://github.com/RocketChat/Rocket.Chat/pull/23418)) - - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. + - Make the hook responsible for receiving app update events inside a cluster fetch the app's package (zip file) in the correct place. - Also shows a warning message on uninstalls inside a cluster. As there are many servers writing to the same place, some race conditions may occur. This prevents problems related to terminating the process in the middle due to errors being thrown and leaving the server in a faulty state. - Server crashing when Routing method is not available at start ([#23473](https://github.com/RocketChat/Rocket.Chat/pull/23473)) @@ -3549,8 +3472,8 @@ - **ENTERPRISE:** "Download CSV" button doesn't work in the Engagement Dashboard's Active Users section ([#23013](https://github.com/RocketChat/Rocket.Chat/pull/23013)) - - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; - - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; + - Fix "Download CSV" button in the Engagement Dashboard's Active Users section; + - Add column headers to the CSV file downloaded from the Engagement Dashboard's Active Users section; - Split the data in multiple CSV files. - **ENTERPRISE:** CSV file downloaded in the Engagement Dashboard's New Users section contains undefined data ([#23014](https://github.com/RocketChat/Rocket.Chat/pull/23014)) @@ -3576,16 +3499,16 @@ - Remove deprecated endpoints ([#23162](https://github.com/RocketChat/Rocket.Chat/pull/23162)) The following REST endpoints were removed: - - - `/api/v1/emoji-custom` - - `/api/v1/info` - - `/api/v1/permissions` + + - `/api/v1/emoji-custom` + - `/api/v1/info` + - `/api/v1/permissions` - `/api/v1/permissions.list` The following Real time API Methods were removed: - - - `getFullUserData` - - `getServerInfo` + + - `getFullUserData` + - `getServerInfo` - `livechat:saveOfficeHours` - Remove Google Vision features ([#23160](https://github.com/RocketChat/Rocket.Chat/pull/23160)) @@ -3637,17 +3560,17 @@ - Awareness of seats usage while adding new members - Seats Cap about to be reached - Seats Cap reached - - Request more seats + - Request more seats - Warning Admins - System telling admins max seats are about to exceed - System telling admins max seats were exceed - Metric on Info Page - - Request more seats + - Request more seats - Warning Members - Invite link - Block creating new invite links - Block existing invite links (feedback on register process) - - Register to Workspaces + - Register to Workspaces - Emails - System telling admins max seats are about to exceed - System telling admins max seats were exceed @@ -3756,16 +3679,16 @@ - Sidebar not closing when clicking in Home or Directory on mobile view ([#23218](https://github.com/RocketChat/Rocket.Chat/pull/23218)) - ### Additional fixed - - Merge Burger menu components into a single component + ### Additional fixed + - Merge Burger menu components into a single component - Show a badge with no-read messages in the Burger Button: - ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) + ![image](https://user-images.githubusercontent.com/27704687/133679378-20fea2c0-4ac1-4b4e-886e-45154cc6afea.png) - remove useSidebarClose hook - Stop queue when Omnichannel is disabled or the routing method does not support it ([#23261](https://github.com/RocketChat/Rocket.Chat/pull/23261)) - - Add missing key logs - - Stop queue (and logs) when livechat is disabled or when routing method does not support queue + - Add missing key logs + - Stop queue (and logs) when livechat is disabled or when routing method does not support queue - Stop ignoring offline bot agents from delegation (previously, if a bot was offline, even with "Assign new conversations to bot agent" enabled, bot will be ignored and chat will be left in limbo (since bot was assigned, but offline). - Toolbox click not working on Safari(iOS) ([#23244](https://github.com/RocketChat/Rocket.Chat/pull/23244)) @@ -4059,8 +3982,8 @@ - **ENTERPRISE:** Maximum waiting time for chats in Omnichannel queue ([#22955](https://github.com/RocketChat/Rocket.Chat/pull/22955)) - - Add new settings to support closing chats that have been too long on waiting queue - - Moved old settings to new "Queue Management" section + - Add new settings to support closing chats that have been too long on waiting queue + - Moved old settings to new "Queue Management" section - Fix issue when closing a livechat room that caused client to not to know if room was open or not - Banner for the updates regarding authentication services ([#23055](https://github.com/RocketChat/Rocket.Chat/pull/23055) by [@g-thome](https://github.com/g-thome)) @@ -4148,8 +4071,8 @@ - Return transcript/dashboards based on timezone settings ([#22850](https://github.com/RocketChat/Rocket.Chat/pull/22850)) - - Added new setting to manage timezones - - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) + - Added new setting to manage timezones + - Applied new setting to omnichannel dashboards (realtime, analytics) [NOTE: Other dashboards aren't using this setting actually) - Change getAnalyticsBetweenDate query to filter out system messages instead of substracting them - Tab margin style ([#22851](https://github.com/RocketChat/Rocket.Chat/pull/22851)) @@ -4289,7 +4212,7 @@ - Fix Auto Selection algorithm on community edition ([#22991](https://github.com/RocketChat/Rocket.Chat/pull/22991)) - - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter + - When using the autoselection algo on community editions, all agents were marked as unavailable due to an unapplied filter - Fixed an issue when both user & system setting to manange EE max number of chats allowed were set to 0
@@ -4400,9 +4323,9 @@ - Configuration for indices in Apps-Engine models ([#22705](https://github.com/RocketChat/Rocket.Chat/pull/22705)) - * Add `appId` field to the data saved by the Scheduler - * Add `appId` index to `rocketchat_apps_persistence` model - * Skip "trash collection" when deleting records from `rocketchat_apps_persistence` + * Add `appId` field to the data saved by the Scheduler + * Add `appId` index to `rocketchat_apps_persistence` model + * Skip "trash collection" when deleting records from `rocketchat_apps_persistence` * Add a new setting to control for how long we should keep logs from the apps ![image](https://user-images.githubusercontent.com/1810309/126246666-907f9d98-1d84-4dfe-a80a-7dd874d36fa8.png) @@ -4446,7 +4369,7 @@ ### after ![image](https://user-images.githubusercontent.com/27704687/123182916-cada7800-d466-11eb-96ee-850be190d419.png) - ### Aditional Improves: + ### Aditional Improves: - Added a visual validation in the password field - Rewrite OTR modals ([#22583](https://github.com/RocketChat/Rocket.Chat/pull/22583)) @@ -4517,7 +4440,7 @@ - Call button is still displayed when the user doesn't have permission to use it ([#22170](https://github.com/RocketChat/Rocket.Chat/pull/22170)) - - Hide 'Call' buttons from the tab bar for muted users; + - Hide 'Call' buttons from the tab bar for muted users; - Display an error when a muted user attempts to enter a call using the 'Click to Join!' button. - Can't see full user profile on team's room ([#22355](https://github.com/RocketChat/Rocket.Chat/pull/22355)) @@ -4528,7 +4451,7 @@ ### after ![after](https://user-images.githubusercontent.com/27704687/121966870-bea73a00-cd45-11eb-9c89-ec52ac17e20f.gif) - ### aditional fix :rocket: + ### aditional fix :rocket: - unnecessary `TeamsMembers` component removed - Cannot create a discussion from top left sidebar as a user ([#22618](https://github.com/RocketChat/Rocket.Chat/pull/22618) by [@lucassartor](https://github.com/lucassartor)) @@ -4605,7 +4528,7 @@ Redirect the user to login after delete own account - ### Aditional fixes: + ### Aditional fixes: - Visual issue in password input on Delete Own Account Modal ### before @@ -4616,7 +4539,7 @@ - Remove stack traces from Meteor errors when debug setting is disabled ([#22699](https://github.com/RocketChat/Rocket.Chat/pull/22699)) - - Fix 'not iterable' errors in the `normalizeMessage` function; + - Fix 'not iterable' errors in the `normalizeMessage` function; - Remove stack traces from errors thrown by the `jitsi:updateTimeout` (and other `Meteor.Error`s) method. - Rewrite CurrentChats to TS ([#22424](https://github.com/RocketChat/Rocket.Chat/pull/22424)) @@ -4705,7 +4628,7 @@ - Regression: Data in the "Active Users" section is delayed in 1 day ([#22794](https://github.com/RocketChat/Rocket.Chat/pull/22794)) - - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; + - Fix 1 day delay in the Engagement Dashboard's "Active Users" section; - Downgrade `@nivo/line` version. **Expected behavior:** ![active-users-engagement-dashboard](https://user-images.githubusercontent.com/36537004/127372185-390dc42f-bc90-4841-a22b-731f0aafcafe.PNG) @@ -4941,8 +4864,8 @@ - Add `teams.convertToChannel` endpoint ([#22188](https://github.com/RocketChat/Rocket.Chat/pull/22188)) - - Add new `teams.converToChannel` endpoint; - - Update `ConvertToTeam` modal text (since this action can now be reversed); + - Add new `teams.converToChannel` endpoint; + - Update `ConvertToTeam` modal text (since this action can now be reversed); - Remove corresponding team memberships when a team is deleted or converted to a channel; - Add setting to configure default role for user on manual registration ([#20650](https://github.com/RocketChat/Rocket.Chat/pull/20650) by [@lucassartor](https://github.com/lucassartor)) @@ -4980,8 +4903,8 @@ - Add BBB and Jitsi to Team ([#22312](https://github.com/RocketChat/Rocket.Chat/pull/22312)) - Added 2 new settings: - - `Admin > Video Conference > Big Blue Button > Enable for teams` + Added 2 new settings: + - `Admin > Video Conference > Big Blue Button > Enable for teams` - `Admin > Video Conference > Jitsi > Enable in teams` - Add debouncing to units selects filters ([#22097](https://github.com/RocketChat/Rocket.Chat/pull/22097)) @@ -5502,10 +5425,10 @@ - Inconsistent and misleading 2FA settings ([#22042](https://github.com/RocketChat/Rocket.Chat/pull/22042) by [@lucassartor](https://github.com/lucassartor)) Currently, there are some inconsistencies and incorrect behaviors on the 2FA settings, such as: - - - When disabling the TOTP 2FA, all 2FA are disabled; - - There are no option to disable only the TOTP 2FA; - - If 2FA are disabled, the other settings aren't blocked (the e-mail 2FA setting, for example); + + - When disabling the TOTP 2FA, all 2FA are disabled; + - There are no option to disable only the TOTP 2FA; + - If 2FA are disabled, the other settings aren't blocked (the e-mail 2FA setting, for example); - It lacks some labels to warn the user of some specific 2FA options. This PR looks to fix those issues. @@ -5678,11 +5601,11 @@ - Make the FR translation consistent with the 'room' translation + typos ([#21913](https://github.com/RocketChat/Rocket.Chat/pull/21913) by [@Jeanstaquet](https://github.com/Jeanstaquet)) - In the FR translation files, there were two terms that were used to refer to **'room'**: + In the FR translation files, there were two terms that were used to refer to **'room'**: - 'salon' (149 times used) ![image](https://user-images.githubusercontent.com/45966964/116829860-ac62a980-aba6-11eb-8212-e6f15ed0af82.png) - + - 'salle' (46 times used) ![image](https://user-images.githubusercontent.com/45966964/116829871-be444c80-aba6-11eb-9b42-e213fee6586a.png) @@ -5848,8 +5771,8 @@ - Add two more test cases to the slash-command test suite ([#21317](https://github.com/RocketChat/Rocket.Chat/pull/21317) by [@EduardoPicolo](https://github.com/EduardoPicolo)) - Added two more test cases to the slash-command test suite: - - 'should return an error when the command does not exist''; + Added two more test cases to the slash-command test suite: + - 'should return an error when the command does not exist''; - 'should return an error when no command is provided'; - Bump actions/stale from v3.0.8 to v3.0.18 ([#21877](https://github.com/RocketChat/Rocket.Chat/pull/21877) by [@dependabot[bot]](https://github.com/dependabot[bot])) @@ -6227,17 +6150,17 @@ - New set of rules for client code ([#21318](https://github.com/RocketChat/Rocket.Chat/pull/21318)) This _small_ PR does the following: - - - Now **React** is the web client's first-class citizen, being **loaded before Blaze**. Thus, `BlazeLayout` calls render templates inside of a React component (`BlazeLayoutWrapper`); - - Main client startup code, including polyfills, is written in **TypeScript**; - - At the moment, routes are treated as regular startup code; it's expected that `FlowRouter` will be deprecated in favor of a new routing library; - - **React** was updated to major version **17**, deprecating the usage of `React` as namespace (e.g. use `memo()` instead of `React.memo()`); + + - Now **React** is the web client's first-class citizen, being **loaded before Blaze**. Thus, `BlazeLayout` calls render templates inside of a React component (`BlazeLayoutWrapper`); + - Main client startup code, including polyfills, is written in **TypeScript**; + - At the moment, routes are treated as regular startup code; it's expected that `FlowRouter` will be deprecated in favor of a new routing library; + - **React** was updated to major version **17**, deprecating the usage of `React` as namespace (e.g. use `memo()` instead of `React.memo()`); - The `client/` and `ee/client/` directory are linted with a **custom ESLint configuration** that includes: - **Prettier**; - `react-hooks/*` rules for TypeScript files; - `react/no-multi-comp`, enforcing the rule of **one single React component per module**; - `react/display-name`, which enforces that **React components must have a name for debugging**; - - `import/named`, avoiding broken named imports. + - `import/named`, avoiding broken named imports. - A bunch of components were refactored to match the new ESLint rules. - On Hold system messages ([#21360](https://github.com/RocketChat/Rocket.Chat/pull/21360) by [@rafaelblink](https://github.com/rafaelblink)) @@ -6246,9 +6169,9 @@ - Password history ([#21607](https://github.com/RocketChat/Rocket.Chat/pull/21607)) - - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); - - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; - - Add "Password History" setting -- when enabled, it blocks users from reusing their most recent passwords; + - Store each user's previously used passwords in a `passwordHistory` field (in the `users` record); + - Users' previously used passwords are stored in their `passwordHistory` even when the setting is disabled; + - Add "Password History" setting -- when enabled, it blocks users from reusing their most recent passwords; - Convert `comparePassword` file to TypeScript. ![Password_Change](https://user-images.githubusercontent.com/36537004/115035168-ac726200-9ea2-11eb-93c6-fc8182ba5f3f.png) @@ -6269,10 +6192,10 @@ - Add error messages to the creation of channels or usernames containing reserved words ([#21016](https://github.com/RocketChat/Rocket.Chat/pull/21016)) - Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): - - admin; - - administrator; - - system; + Display error messages when the user attempts to create or edit users' or channels' names with any of the following words (**case-insensitive**): + - admin; + - administrator; + - system; - user. ![create-channel](https://user-images.githubusercontent.com/36537004/110132223-b421ef80-7da9-11eb-82bc-f0d4e1df967f.png) ![register-username](https://user-images.githubusercontent.com/36537004/110132234-b71ce000-7da9-11eb-904e-580233625951.png) @@ -6301,7 +6224,7 @@ - Resize custom emojis on upload instead of saving at max res ([#21593](https://github.com/RocketChat/Rocket.Chat/pull/21593)) - - Create new MediaService (ideally, should be in charge of all media-related operations) + - Create new MediaService (ideally, should be in charge of all media-related operations) - Resize emojis to 128x128 ### 🐛 Bug fixes @@ -6471,15 +6394,15 @@ - Typos/missing elements in the French translation ([#21525](https://github.com/RocketChat/Rocket.Chat/pull/21525) by [@Jeanstaquet](https://github.com/Jeanstaquet)) - - I have corrected some typos in the translation - - I added a translation for missing words - - I took the opportunity to correct a mistranslated word + - I have corrected some typos in the translation + - I added a translation for missing words + - I took the opportunity to correct a mistranslated word - Test_Desktop_Notifications was missing in the EN and FR file ![image](https://user-images.githubusercontent.com/45966964/114290186-e7792d80-9a7d-11eb-8164-3b5e72e93703.png) - Updating a message causing URLs to be parsed even within markdown code ([#21489](https://github.com/RocketChat/Rocket.Chat/pull/21489)) - - Fix `updateMessage` to avoid parsing URLs inside markdown + - Fix `updateMessage` to avoid parsing URLs inside markdown - Honor `parseUrls` property when updating messages - Use async await in TeamChannels delete channel action ([#21534](https://github.com/RocketChat/Rocket.Chat/pull/21534)) @@ -6510,14 +6433,14 @@ - A React-based replacement for BlazeLayout ([#21527](https://github.com/RocketChat/Rocket.Chat/pull/21527)) - - The Meteor package **`kadira:blaze-layout` was removed**; - - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; - - The **`#react-root` element** is rendered on server-side instead of dynamically injected into the DOM tree; - - The **"page loading" throbber** is now rendered on the React tree; - - The **`renderRouteComponent` helper was removed**; - - Some code run without any criteria on **`main` template** module was moved into **client startup modules**; - - React portals used to embed Blaze templates have their own subscription (**`blazePortals`**); - - Some **route components were refactored** to remove a URL path trap originally disabled by `renderRouteComponent`; + - The Meteor package **`kadira:blaze-layout` was removed**; + - A **global subscription** for the current application layout (**`appLayout`**) replaces `BlazeLayout` entirely; + - The **`#react-root` element** is rendered on server-side instead of dynamically injected into the DOM tree; + - The **"page loading" throbber** is now rendered on the React tree; + - The **`renderRouteComponent` helper was removed**; + - Some code run without any criteria on **`main` template** module was moved into **client startup modules**; + - React portals used to embed Blaze templates have their own subscription (**`blazePortals`**); + - Some **route components were refactored** to remove a URL path trap originally disabled by `renderRouteComponent`; - A new component to embed the DOM nodes generated by **`RoomManager`** was created. - Add ')' after Date and Time in DB migration ([#21519](https://github.com/RocketChat/Rocket.Chat/pull/21519) by [@im-adithya](https://github.com/im-adithya)) @@ -6550,7 +6473,7 @@ - Fix: Missing module `eventemitter3` for micro services ([#21611](https://github.com/RocketChat/Rocket.Chat/pull/21611)) - - Fix error when running micro services after version 3.12 + - Fix error when running micro services after version 3.12 - Fix build of docker image version latest for micro services - Language update from LingoHub 🤖 on 2021-04-05Z ([#21446](https://github.com/RocketChat/Rocket.Chat/pull/21446)) @@ -6563,9 +6486,9 @@ - QoL improvements to add channel to team flow ([#21778](https://github.com/RocketChat/Rocket.Chat/pull/21778)) - - Fixed canAccessRoom validation - - Added e2e tests - - Removed channels that user cannot add to the team from autocomplete suggestions + - Fixed canAccessRoom validation + - Added e2e tests + - Removed channels that user cannot add to the team from autocomplete suggestions - Improved error messages - Regression: Bold, italic and strike render (Original markdown) ([#21747](https://github.com/RocketChat/Rocket.Chat/pull/21747)) @@ -6826,12 +6749,12 @@ #### How can you place a chat on Hold ? - A chat can be placed on-hold via 2 means + A chat can be placed on-hold via 2 means 1. Automatically place Abandoned chats On-hold ![image](https://user-images.githubusercontent.com/34130764/111537074-06431780-8791-11eb-8d23-99f5d9f8ec45.png) Via this :top: option you can define a timer which will get started when a customer sends a message. If we don't receive any message from the customer within this timer, the timer will get expired and the chat will be considered as Abandoned. ![image](https://user-images.githubusercontent.com/34130764/111537346-53bf8480-8791-11eb-8dc7-260633b4e98f.png) - The via this :top: setting you can choose to automatically place this abandoned chat On Hold + The via this :top: setting you can choose to automatically place this abandoned chat On Hold 2. Manually place a chat On Hold As an admin, you can allow an agent to manually place a chat on-hold. To do so, you'll need to turn on this :point_down: setting ![image](https://user-images.githubusercontent.com/34130764/111537545-97b28980-8791-11eb-86fd-db45b87e9cc1.png) @@ -6840,17 +6763,17 @@ #### How can you resume a On Hold chat ? An On Hold chat can be resumed via 2 means - + 1. If the Customer sends a message - If the Customer / Omnichannel End User sends a message to the On Hold chat, the On Hold chat will get automatically resumed. + If the Customer / Omnichannel End User sends a message to the On Hold chat, the On Hold chat will get automatically resumed. 2. Manually by agent An Agent can manually resume the On Hold chat via clicking the `Resume` button in the bottom of a chat room. ![image](https://user-images.githubusercontent.com/34130764/111538666-f88e9180-8792-11eb-8d14-01453b8e3db0.png) #### What would happen if the agent already reached maximum chats, and a On-Hold chat gets resumed ? Based on how the chat was resumed, there are multiple cases are each case is dealt differently - - - If an agent manually tries to resume the On Hold chat, he/she will get an error saying `Maximum Simultaneous chat limit reached` + + - If an agent manually tries to resume the On Hold chat, he/she will get an error saying `Maximum Simultaneous chat limit reached` - If a customer replies back on an On Hold chat and the last serving agent has reached maximum capacity, then this customer will be placed on the queue again from where based on the Routing Algorithm selected, the chat will get transferred to any available agent - Ability to hide 'Room topic changed' system messages ([#21062](https://github.com/RocketChat/Rocket.Chat/pull/21062) by [@Tirieru](https://github.com/Tirieru)) @@ -6867,12 +6790,12 @@ You can easily group your users as Teams on Rocket.Chat. The feature takes the hassle out of managing multiple users one by one and allows you to handle them at the same time efficiently. - - - Teams can be public or private and each team can have its own channels, which also can be public or private. - - It's possible to add existing channels to a Team or create new ones inside a Team. - - It's possible to invite people outside a Team to join Team's channels. - - It's possible to convert channels to Teams - - It's possible to add all team members to a channel at once + + - Teams can be public or private and each team can have its own channels, which also can be public or private. + - It's possible to add existing channels to a Team or create new ones inside a Team. + - It's possible to invite people outside a Team to join Team's channels. + - It's possible to convert channels to Teams + - It's possible to add all team members to a channel at once - Team members have roles @@ -7143,19 +7066,19 @@ - Chore: Add tests for Meteor methods ([#20901](https://github.com/RocketChat/Rocket.Chat/pull/20901)) Add end-to-end tests for the following meteor methods - - - [x] public-settings:get - - [x] rooms:get - - [x] subscriptions:get - - [x] permissions:get - - [x] loadMissedMessages - - [x] loadHistory - - [x] listCustomUserStatus - - [x] getUserRoles - - [x] getRoomRoles (called by the API, already covered) - - [x] getMessages - - [x] getUsersOfRoom - - [x] loadNextMessages + + - [x] public-settings:get + - [x] rooms:get + - [x] subscriptions:get + - [x] permissions:get + - [x] loadMissedMessages + - [x] loadHistory + - [x] listCustomUserStatus + - [x] getUserRoles + - [x] getRoomRoles (called by the API, already covered) + - [x] getMessages + - [x] getUsersOfRoom + - [x] loadNextMessages - [x] getThreadMessages - Chore: Meteor update 2.1 ([#21061](https://github.com/RocketChat/Rocket.Chat/pull/21061)) @@ -7168,8 +7091,8 @@ - Improve: Increase testing coverage ([#21015](https://github.com/RocketChat/Rocket.Chat/pull/21015)) - Add test for - - settings/raw + Add test for + - settings/raw - minimongo/comparisons - Improve: NPS survey fetch ([#21263](https://github.com/RocketChat/Rocket.Chat/pull/21263)) @@ -7193,12 +7116,12 @@ - Regression: Add support to filter on `teams.listRooms` endpoint ([#21327](https://github.com/RocketChat/Rocket.Chat/pull/21327)) - - Add support for queries (within the `query` parameter); + - Add support for queries (within the `query` parameter); - Add support to pagination (`offset` and `count`) when an user doesn't have the permission to get all rooms. - Regression: Add teams support to directory ([#21351](https://github.com/RocketChat/Rocket.Chat/pull/21351)) - - Change `directory.js` to reduce function complexity + - Change `directory.js` to reduce function complexity - Add `teams` type of item. Directory will return all public teams & private teams the user is part of. - Regression: add view room action on Teams Channels ([#21295](https://github.com/RocketChat/Rocket.Chat/pull/21295)) @@ -7254,7 +7177,7 @@ - Move the Manual On Hold button to the new Omnichannel Header ![image](https://user-images.githubusercontent.com/34130764/112291749-6ae10380-8cb6-11eb-94cd-e05efc14b1bf.png) ![image](https://user-images.githubusercontent.com/34130764/112304146-27d95d00-8cc3-11eb-85db-dde04a110dd1.png) - + - Minor fixes - regression: Remove Breadcrumbs and update Tag component ([#21399](https://github.com/RocketChat/Rocket.Chat/pull/21399)) @@ -7303,8 +7226,8 @@ - Regression: Update .invite endpoints to support multiple users at once ([#21328](https://github.com/RocketChat/Rocket.Chat/pull/21328)) - - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. - - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. + - channels.invite now supports passing an array as a param (either with usernames or userIds) via `usernames` or `userIds` properties. + - You can still use the endpoint to invite only one user via the old params `userId`, `username` or `user`. - Same changes apply to groups.invite - Regression: user actions in admin ([#21307](https://github.com/RocketChat/Rocket.Chat/pull/21307)) @@ -7553,13 +7476,13 @@ - Replace react-window for react-virtuoso package ([#20392](https://github.com/RocketChat/Rocket.Chat/pull/20392)) - Remove: - - react-window - - react-window-infinite-loader + Remove: + - react-window + - react-window-infinite-loader - simplebar-react - Include: - - react-virtuoso + Include: + - react-virtuoso - rc-scrollbars - Rewrite Call as React component ([#19778](https://github.com/RocketChat/Rocket.Chat/pull/19778)) @@ -7760,7 +7683,7 @@ - Missing setting to control when to send the ReplyTo field in email notifications ([#20744](https://github.com/RocketChat/Rocket.Chat/pull/20744)) - - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; + - Add a new setting ("Add Reply-To header") in the Email settings' page to control when the Reply-To header is used in e-mail notifications; - The new setting is turned off (`false` value) by default. - New Integration page was not being displayed ([#20670](https://github.com/RocketChat/Rocket.Chat/pull/20670)) @@ -7842,14 +7765,14 @@ - Several Slack Importer issues ([#20216](https://github.com/RocketChat/Rocket.Chat/pull/20216)) - - Fix: Slack Importer crashes when importing a large users.json file - - Fix: Slack importer crashes when messages have invalid mentions - - Skip listing all users on the preparation screen when the user count is too large. - - Split avatar download into a separate process. - - Update room's last message when the import is complete. - - Prevent invalid or duplicated channel names - - Improve message error handling. - - Reduce max allowed BSON size to avoid possible issues in some servers. + - Fix: Slack Importer crashes when importing a large users.json file + - Fix: Slack importer crashes when messages have invalid mentions + - Skip listing all users on the preparation screen when the user count is too large. + - Split avatar download into a separate process. + - Update room's last message when the import is complete. + - Prevent invalid or duplicated channel names + - Improve message error handling. + - Reduce max allowed BSON size to avoid possible issues in some servers. - Improve handling of very large channel files. - star icon was visible after unstarring a message ([#19645](https://github.com/RocketChat/Rocket.Chat/pull/19645) by [@bhavayAnand9](https://github.com/bhavayAnand9)) @@ -8111,11 +8034,11 @@ ![image](https://user-images.githubusercontent.com/34130764/104880961-8104d780-5986-11eb-9d87-82b99814b028.png) Behavior based-on Routing method - + 1. Auto-selection, Load-Balancing, or External Service (`autoAssignAgent = true`) This is straightforward, - if the Contact-manager is online, the chat will be transferred to the Contact-Manger only - - if the Contact-manager is offline, the chat will be transferred to any other online-agent based on the Routing system + - if the Contact-manager is offline, the chat will be transferred to any other online-agent based on the Routing system 2. Manual-selection (`autoAssignAgent = false`) - If the Contact-Manager is online, the chat will appear in the Queue of Contact-Manager **ONLY** - If the Contact-Manager is offline, the chat will appear in the Queue of all related Agents/Manager ( like it's done right now ) @@ -8856,10 +8779,10 @@ - Chore: Update Pull Request template ([#19768](https://github.com/RocketChat/Rocket.Chat/pull/19768)) - Improve the template of Pull Requests in order to make it clear reducing duplicated information and removing the visible checklists that were generating noise and misunderstanding with the PR progress. - - Moved the checklists to inside comments - - Merge the changelog and proposed changes sections to have a single source of description that goes to the changelog - - Remove the screenshot section, they can be added inside the description + Improve the template of Pull Requests in order to make it clear reducing duplicated information and removing the visible checklists that were generating noise and misunderstanding with the PR progress. + - Moved the checklists to inside comments + - Merge the changelog and proposed changes sections to have a single source of description that goes to the changelog + - Remove the screenshot section, they can be added inside the description - Changed the proposed changes title to incentivizing the usage of images and videos - Frontend folder structure ([#19631](https://github.com/RocketChat/Rocket.Chat/pull/19631)) @@ -10198,8 +10121,8 @@ - **2FA:** Password enforcement setting and 2FA protection when saving settings or resetting E2E encryption ([#18640](https://github.com/RocketChat/Rocket.Chat/pull/18640)) - - Increase the 2FA remembering time from 5min to 30min - - Add new setting to enforce 2FA password fallback (enabled only for new installations) + - Increase the 2FA remembering time from 5min to 30min + - Add new setting to enforce 2FA password fallback (enabled only for new installations) - Require 2FA to save settings and reset E2E Encryption keys - **Omnichannel:** Allow set other agent status via method `livechat:changeLivechatStatus ` ([#18571](https://github.com/RocketChat/Rocket.Chat/pull/18571)) @@ -10567,9 +10490,9 @@ - Mention autocomplete UI and performance improvements ([#18309](https://github.com/RocketChat/Rocket.Chat/pull/18309)) - * New setting to configure the number of suggestions `Admin > Layout > User Interface > Number of users' autocomplete suggestions` (default 5) - * The UI shows whenever the user is not a member of the room - * The UI shows when the suggestion came from the last messages for quick selection/reply + * New setting to configure the number of suggestions `Admin > Layout > User Interface > Number of users' autocomplete suggestions` (default 5) + * The UI shows whenever the user is not a member of the room + * The UI shows when the suggestion came from the last messages for quick selection/reply * The suggestions follow this order: * The user with the exact username and member of the room * The user with the exact username but not a member of the room (if allowed to list non-members) @@ -11427,9 +11350,9 @@ - Notification sounds ([#17616](https://github.com/RocketChat/Rocket.Chat/pull/17616)) - * Global CDN config was ignored when loading the sound files - * Upload of custom sounds wasn't getting the file extension correctly - * Some translations were missing + * Global CDN config was ignored when loading the sound files + * Upload of custom sounds wasn't getting the file extension correctly + * Some translations were missing * Edit and delete of custom sounds were not working correctly - Omnichannel departments are not saved when the offline channel name is not defined ([#17553](https://github.com/RocketChat/Rocket.Chat/pull/17553)) @@ -11718,11 +11641,11 @@ - Better Push and Email Notification logic ([#17357](https://github.com/RocketChat/Rocket.Chat/pull/17357)) We are still using the same logic to define which notifications every new message will generate, it takes some servers' settings, users's preferences and subscriptions' settings in consideration to determine who will receive each notification type (desktop, audio, email and mobile push), but now it doesn't check the user's status (online, away, offline) for email and mobile push notifications but send those notifications to a new queue with the following rules: - - - When the user is online the notification is scheduled to be sent in 120 seconds - - When the user is away the notification is scheduled to be sent in 120 seconds minus the amount of time he is away - - When the user is offline the notification is scheduled to be sent right away - - When the user reads a channel all the notifications for that user are removed (clear queue) + + - When the user is online the notification is scheduled to be sent in 120 seconds + - When the user is away the notification is scheduled to be sent in 120 seconds minus the amount of time he is away + - When the user is offline the notification is scheduled to be sent right away + - When the user reads a channel all the notifications for that user are removed (clear queue) - When a notification is processed to be sent to a user and there are other scheduled notifications: - All the scheduled notifications for that user are rescheduled to now - The current notification goes back to the queue to be processed ordered by creation date @@ -23605,4 +23528,4 @@ - [@graywolf336](https://github.com/graywolf336) - [@marceloschmidt](https://github.com/marceloschmidt) - [@rodrigok](https://github.com/rodrigok) -- [@sampaiodiego](https://github.com/sampaiodiego) \ No newline at end of file +- [@sampaiodiego](https://github.com/sampaiodiego) diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index df0994d64a0f..d3d0f0d8ab1d 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0-rc.5 +ENV RC_VERSION 4.7.0 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 9c8fd01f6c9d..00ae4af10c19 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0-rc.5/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.7.0/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index 424ddbf8ac48..2a45af95b389 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0-rc.5 +version: 4.7.0 summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 00c404cd26e6..297dd3779ba7 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0-rc.5" + "version": "4.7.0" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 4069d84394b3..a2b2f788b6fa 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0-rc.5", + "version": "4.7.0", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index 5e810e8893db..963912efaf85 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0-rc.5", + "version": "4.7.0", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From 1b4cdf4c3f9c6170a252765002ca4877b9c94cf4 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Wed, 4 May 2022 10:47:28 -0300 Subject: [PATCH 008/145] Bump version to 4.8.0-develop --- apps/meteor/.docker/Dockerfile.rhel | 2 +- apps/meteor/.snapcraft/resources/prepareRocketChat | 2 +- apps/meteor/.snapcraft/snap/snapcraft.yaml | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index d3d0f0d8ab1d..574dca2699de 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 4.7.0 +ENV RC_VERSION 4.8.0-develop MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/.snapcraft/resources/prepareRocketChat b/apps/meteor/.snapcraft/resources/prepareRocketChat index 00ae4af10c19..4ec018181fc9 100755 --- a/apps/meteor/.snapcraft/resources/prepareRocketChat +++ b/apps/meteor/.snapcraft/resources/prepareRocketChat @@ -1,6 +1,6 @@ #!/bin/bash -curl -SLf "https://releases.rocket.chat/4.7.0/download/" -o rocket.chat.tgz +curl -SLf "https://releases.rocket.chat/4.8.0-develop/download/" -o rocket.chat.tgz tar xf rocket.chat.tgz --strip 1 diff --git a/apps/meteor/.snapcraft/snap/snapcraft.yaml b/apps/meteor/.snapcraft/snap/snapcraft.yaml index 2a45af95b389..3ab87352bc42 100644 --- a/apps/meteor/.snapcraft/snap/snapcraft.yaml +++ b/apps/meteor/.snapcraft/snap/snapcraft.yaml @@ -7,7 +7,7 @@ # 5. `snapcraft snap` name: rocketchat-server -version: 4.7.0 +version: 4.8.0-develop summary: Rocket.Chat server description: Have your own Slack like online chat, built with Meteor. https://rocket.chat/ confinement: strict diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 297dd3779ba7..2e677278a91d 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "4.7.0" + "version": "4.8.0-develop" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index a2b2f788b6fa..e45cd7049296 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "4.7.0", + "version": "4.8.0-develop", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index 963912efaf85..e6fda90cb389 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "4.7.0", + "version": "4.8.0-develop", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From d8f938f8f92eb3744b17b032ceacf31e327da906 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 4 May 2022 14:05:10 -0300 Subject: [PATCH 009/145] Chore: Add /v1/video-conference endpoint types (#25278) Co-authored-by: Pierre Lehnen Co-authored-by: Guilherme Gazzo --- apps/meteor/app/api/server/api.d.ts | 5 +++ .../app/api/server/{index.js => index.ts} | 2 +- ...video-conference.js => videoConference.ts} | 8 +--- .../{canSendMessage.js => canSendMessage.ts} | 42 ++++++++++++++----- packages/rest-typings/src/index.ts | 2 + .../rest-typings/src/v1/videoConference.ts | 9 ++++ 6 files changed, 50 insertions(+), 18 deletions(-) rename apps/meteor/app/api/server/{index.js => index.ts} (97%) rename apps/meteor/app/api/server/v1/{video-conference.js => videoConference.ts} (67%) rename apps/meteor/app/authorization/server/functions/{canSendMessage.js => canSendMessage.ts} (51%) create mode 100644 packages/rest-typings/src/v1/videoConference.ts diff --git a/apps/meteor/app/api/server/api.d.ts b/apps/meteor/app/api/server/api.d.ts index 43785e0634df..80f718a5da09 100644 --- a/apps/meteor/app/api/server/api.d.ts +++ b/apps/meteor/app/api/server/api.d.ts @@ -205,3 +205,8 @@ export declare const API: { default: APIClass; helperMethods: Map unknown>; }; + +export declare const defaultRateLimiterOptions: { + numRequestsAllowed: number; + intervalTimeInMS: number; +}; diff --git a/apps/meteor/app/api/server/index.js b/apps/meteor/app/api/server/index.ts similarity index 97% rename from apps/meteor/app/api/server/index.js rename to apps/meteor/app/api/server/index.ts index 50d9959362b4..ba35c423903c 100644 --- a/apps/meteor/app/api/server/index.js +++ b/apps/meteor/app/api/server/index.ts @@ -34,7 +34,7 @@ import './v1/settings'; import './v1/stats'; import './v1/subscriptions'; import './v1/users'; -import './v1/video-conference'; +import './v1/videoConference'; import './v1/autotranslate'; import './v1/webdav'; import './v1/oauthapps'; diff --git a/apps/meteor/app/api/server/v1/video-conference.js b/apps/meteor/app/api/server/v1/videoConference.ts similarity index 67% rename from apps/meteor/app/api/server/v1/video-conference.js rename to apps/meteor/app/api/server/v1/videoConference.ts index dcd7a7b8f6a2..34a78fdf09da 100644 --- a/apps/meteor/app/api/server/v1/video-conference.js +++ b/apps/meteor/app/api/server/v1/videoConference.ts @@ -18,12 +18,8 @@ API.v1.addRoute( return API.v1.failure('Room does not exist!'); } - try { - const jitsiTimeout = Meteor.runAsUser(this.userId, () => Meteor.call('jitsi:updateTimeout', roomId, Boolean(joiningNow))); - return API.v1.success({ jitsiTimeout }); - } catch (error) { - return API.v1.failure(error.message); - } + const jitsiTimeout = Meteor.runAsUser(this.userId, () => Meteor.call('jitsi:updateTimeout', roomId, Boolean(joiningNow))); + return API.v1.success({ jitsiTimeout }); }, }, ); diff --git a/apps/meteor/app/authorization/server/functions/canSendMessage.js b/apps/meteor/app/authorization/server/functions/canSendMessage.ts similarity index 51% rename from apps/meteor/app/authorization/server/functions/canSendMessage.js rename to apps/meteor/app/authorization/server/functions/canSendMessage.ts index e72968f59693..d94da194fe22 100644 --- a/apps/meteor/app/authorization/server/functions/canSendMessage.js +++ b/apps/meteor/app/authorization/server/functions/canSendMessage.ts @@ -1,3 +1,5 @@ +import { IRoom, IUser } from '@rocket.chat/core-typings'; + import { canAccessRoomAsync } from './canAccessRoom'; import { hasPermissionAsync } from './hasPermission'; import { Subscriptions, Rooms } from '../../../models/server/raw'; @@ -11,12 +13,16 @@ const subscriptionOptions = { }, }; -export const validateRoomMessagePermissionsAsync = async (room, { uid, username, type }, extraData) => { +async function validateRoomMessagePermissionsAsync( + room: IRoom, + { uid, username, type }: { uid: IUser['_id']; username: IUser['username']; type: IUser['type'] }, + extraData: Record, +): Promise { if (!room) { throw new Error('error-invalid-room'); } - if (type !== 'app' && !(await canAccessRoomAsync(room, { _id: uid, username }, extraData))) { + if (type !== 'app' && !(await canAccessRoomAsync(room, { _id: uid }, extraData))) { throw new Error('error-not-allowed'); } @@ -29,23 +35,37 @@ export const validateRoomMessagePermissionsAsync = async (room, { uid, username, if (room.ro === true && !(await hasPermissionAsync(uid, 'post-readonly', room._id))) { // Unless the user was manually unmuted - if (!(room.unmuted || []).includes(username)) { + if (username && !(room.unmuted || []).includes(username)) { throw new Error("You can't send messages because the room is readonly."); } } - if (room?.muted?.includes(username)) { + if (username && room?.muted?.includes(username)) { throw new Error('You_have_been_muted'); } -}; +} -export const canSendMessageAsync = async (rid, { uid, username, type }, extraData) => { +export async function canSendMessageAsync( + rid: IRoom['_id'], + { uid, username, type }: { uid: IUser['_id']; username: IUser['username']; type: IUser['type'] }, + extraData: Record, +): Promise { const room = await Rooms.findOneById(rid); await validateRoomMessagePermissionsAsync(room, { uid, username, type }, extraData); return room; -}; +} -export const canSendMessage = (rid, { uid, username, type }, extraData) => - Promise.await(canSendMessageAsync(rid, { uid, username, type }, extraData)); -export const validateRoomMessagePermissions = (room, { uid, username, type }, extraData) => - Promise.await(validateRoomMessagePermissionsAsync(room, { uid, username, type }, extraData)); +export function canSendMessage( + rid: IRoom['_id'], + { uid, username, type }: { uid: IUser['_id']; username: IUser['username']; type: IUser['type'] }, + extraData: Record, +): IRoom { + return Promise.await(canSendMessageAsync(rid, { uid, username, type }, extraData)); +} +export function validateRoomMessagePermissions( + room: IRoom, + { uid, username, type }: { uid: IUser['_id']; username: IUser['username']; type: IUser['type'] }, + extraData: Record, +): void { + return Promise.await(validateRoomMessagePermissionsAsync(room, { uid, username, type }, extraData)); +} diff --git a/packages/rest-typings/src/index.ts b/packages/rest-typings/src/index.ts index 45cc1b3c36a6..914eec094019 100644 --- a/packages/rest-typings/src/index.ts +++ b/packages/rest-typings/src/index.ts @@ -28,6 +28,7 @@ import type { SettingsEndpoints } from './v1/settings'; import type { StatisticsEndpoints } from './v1/statistics'; import type { TeamsEndpoints } from './v1/teams'; import type { UsersEndpoints } from './v1/users'; +import type { VideoConferenceEndpoints } from './v1/videoConference'; import type { VoipEndpoints } from './v1/voip'; // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/interface-name-prefix @@ -56,6 +57,7 @@ export interface Endpoints PermissionsEndpoints, InstancesEndpoints, VoipEndpoints, + VideoConferenceEndpoints, InvitesEndpoints, E2eEndpoints, CustomSoundEndpoint {} diff --git a/packages/rest-typings/src/v1/videoConference.ts b/packages/rest-typings/src/v1/videoConference.ts new file mode 100644 index 000000000000..4030043e2f02 --- /dev/null +++ b/packages/rest-typings/src/v1/videoConference.ts @@ -0,0 +1,9 @@ +import type { IRoom } from '@rocket.chat/core-typings'; + +export type VideoConferenceEndpoints = { + 'video-conference/jitsi.update-timeout': { + POST: (params: { roomId: IRoom['_id']; joiningNow?: boolean }) => { + jitsiTimeout: number; + }; + }; +}; From 83de63797ff450966a29ab8c087e6742bd88ca0f Mon Sep 17 00:00:00 2001 From: Yash Rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Wed, 4 May 2022 22:35:56 +0530 Subject: [PATCH 010/145] Chore: Convert Admin/OAuthApps to TS (#25277) Co-authored-by: Felipe <84182706+felipe-rod123@users.noreply.github.com> Co-authored-by: Guilherme Gazzo --- apps/meteor/app/api/server/lib/oauthApps.js | 13 --- apps/meteor/app/api/server/v1/oauthapps.js | 31 -------- apps/meteor/app/api/server/v1/oauthapps.ts | 43 ++++++++++ .../meteor/app/models/server/raw/OAuthApps.ts | 10 +-- .../{EditOauthApp.js => EditOauthApp.tsx} | 79 +++++++++++++------ ...ppWithData.js => EditOauthAppWithData.tsx} | 7 +- .../{OAuthAddApp.js => OAuthAddApp.tsx} | 58 ++++++++------ .../{OAuthAppsPage.js => OAuthAppsPage.tsx} | 13 ++- .../{OAuthAppsRoute.js => OAuthAppsRoute.tsx} | 8 +- .../{OAuthAppsTable.js => OAuthAppsTable.tsx} | 15 ++-- packages/rest-typings/src/index.ts | 6 +- packages/rest-typings/src/v1/oauthapps.ts | 47 +++++++++++ 12 files changed, 207 insertions(+), 123 deletions(-) delete mode 100644 apps/meteor/app/api/server/lib/oauthApps.js delete mode 100644 apps/meteor/app/api/server/v1/oauthapps.js create mode 100644 apps/meteor/app/api/server/v1/oauthapps.ts rename apps/meteor/client/views/admin/oauthApps/{EditOauthApp.js => EditOauthApp.tsx} (63%) rename apps/meteor/client/views/admin/oauthApps/{EditOauthAppWithData.js => EditOauthAppWithData.tsx} (90%) rename apps/meteor/client/views/admin/oauthApps/{OAuthAddApp.js => OAuthAddApp.tsx} (58%) rename apps/meteor/client/views/admin/oauthApps/{OAuthAppsPage.js => OAuthAppsPage.tsx} (75%) rename apps/meteor/client/views/admin/oauthApps/{OAuthAppsRoute.js => OAuthAppsRoute.tsx} (73%) rename apps/meteor/client/views/admin/oauthApps/{OAuthAppsTable.js => OAuthAppsTable.tsx} (86%) create mode 100644 packages/rest-typings/src/v1/oauthapps.ts diff --git a/apps/meteor/app/api/server/lib/oauthApps.js b/apps/meteor/app/api/server/lib/oauthApps.js deleted file mode 100644 index f914e7c8daed..000000000000 --- a/apps/meteor/app/api/server/lib/oauthApps.js +++ /dev/null @@ -1,13 +0,0 @@ -import { OAuthApps } from '../../../models/server/raw'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -export async function findOAuthApps({ uid }) { - if (!(await hasPermissionAsync(uid, 'manage-oauth-apps'))) { - throw new Error('error-not-allowed'); - } - return OAuthApps.find().toArray(); -} - -export async function findOneAuthApp({ clientId, appId }) { - return OAuthApps.findOneAuthAppByIdOrClientId({ clientId, appId }); -} diff --git a/apps/meteor/app/api/server/v1/oauthapps.js b/apps/meteor/app/api/server/v1/oauthapps.js deleted file mode 100644 index ba01223da454..000000000000 --- a/apps/meteor/app/api/server/v1/oauthapps.js +++ /dev/null @@ -1,31 +0,0 @@ -import { API } from '../api'; -import { findOAuthApps, findOneAuthApp } from '../lib/oauthApps'; - -API.v1.addRoute( - 'oauth-apps.list', - { authRequired: true }, - { - get() { - return API.v1.success({ - oauthApps: Promise.await(findOAuthApps({ uid: this.userId })), - }); - }, - }, -); - -API.v1.addRoute( - 'oauth-apps.get', - { authRequired: true }, - { - get() { - const { clientId, appId } = this.queryParams; - if (!clientId && !appId) { - return API.v1.failure('At least one of the query parameters "clientId" or "appId" is required.'); - } - - return API.v1.success({ - oauthApp: Promise.await(findOneAuthApp({ clientId, appId })), - }); - }, - }, -); diff --git a/apps/meteor/app/api/server/v1/oauthapps.ts b/apps/meteor/app/api/server/v1/oauthapps.ts new file mode 100644 index 000000000000..50d9549dac67 --- /dev/null +++ b/apps/meteor/app/api/server/v1/oauthapps.ts @@ -0,0 +1,43 @@ +import { isOauthAppsGetParams } from '@rocket.chat/rest-typings'; + +import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; +import { OAuthApps } from '../../../models/server/raw'; +import { API } from '../api'; + +API.v1.addRoute( + 'oauth-apps.list', + { authRequired: true }, + { + async get() { + if (!(await hasPermissionAsync(this.userId, 'manage-oauth-apps'))) { + throw new Error('error-not-allowed'); + } + + return API.v1.success({ + oauthApps: await OAuthApps.find().toArray(), + }); + }, + }, +); + +API.v1.addRoute( + 'oauth-apps.get', + { authRequired: true }, + { + async get() { + if (!isOauthAppsGetParams(this.queryParams)) { + return API.v1.failure('At least one of the query parameters "clientId" or "appId" is required.'); + } + + const oauthApp = await OAuthApps.findOneAuthAppByIdOrClientId(this.queryParams); + + if (!oauthApp) { + return API.v1.failure('OAuth app not found.'); + } + + return API.v1.success({ + oauthApp, + }); + }, + }, +); diff --git a/apps/meteor/app/models/server/raw/OAuthApps.ts b/apps/meteor/app/models/server/raw/OAuthApps.ts index cbe6553c5005..760aae203ac8 100644 --- a/apps/meteor/app/models/server/raw/OAuthApps.ts +++ b/apps/meteor/app/models/server/raw/OAuthApps.ts @@ -1,12 +1,12 @@ -import { IOAuthApps as T } from '@rocket.chat/core-typings'; +import { IOAuthApps } from '@rocket.chat/core-typings'; import { BaseRaw } from './BaseRaw'; -export class OAuthAppsRaw extends BaseRaw { - findOneAuthAppByIdOrClientId({ clientId, appId }: { clientId: string; appId: string }): ReturnType['findOne']> { +export class OAuthAppsRaw extends BaseRaw { + findOneAuthAppByIdOrClientId(props: { clientId: string } | { appId: string }): Promise { return this.findOne({ - ...(appId && { _id: appId }), - ...(clientId && { clientId }), + ...('appId' in props && { _id: props.appId }), + ...('clientId' in props && { _id: props.clientId }), }); } } diff --git a/apps/meteor/client/views/admin/oauthApps/EditOauthApp.js b/apps/meteor/client/views/admin/oauthApps/EditOauthApp.tsx similarity index 63% rename from apps/meteor/client/views/admin/oauthApps/EditOauthApp.js rename to apps/meteor/client/views/admin/oauthApps/EditOauthApp.tsx index 41a105728bd0..d9f7ac3dae6f 100644 --- a/apps/meteor/client/views/admin/oauthApps/EditOauthApp.js +++ b/apps/meteor/client/views/admin/oauthApps/EditOauthApp.tsx @@ -1,5 +1,7 @@ +import { IOAuthApps, Serialized } from '@rocket.chat/core-typings'; import { Button, ButtonGroup, TextInput, Field, Icon, TextAreaInput, ToggleSwitch, FieldGroup } from '@rocket.chat/fuselage'; -import React, { useCallback, useState, useMemo } from 'react'; +import React, { useCallback, useMemo, ReactElement, ComponentProps } from 'react'; +import { useForm, SubmitHandler, Controller } from 'react-hook-form'; import GenericModal from '../../../components/GenericModal'; import VerticalBar from '../../../components/VerticalBar'; @@ -9,15 +11,34 @@ import { useMethod, useAbsoluteUrl } from '../../../contexts/ServerContext'; import { useToastMessageDispatch } from '../../../contexts/ToastMessagesContext'; import { useTranslation } from '../../../contexts/TranslationContext'; -function EditOauthApp({ onChange, data, ...props }) { +export type EditOAuthAddAppPayload = { + name: string; + active: boolean; + redirectUri: string; +}; + +export type EditOauthAppProps = { + onChange: () => void; + data: Serialized; +} & Omit, 'data'>; + +const EditOauthApp = ({ onChange, data, ...props }: EditOauthAppProps): ReactElement => { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); - const [newData, setNewData] = useState({ - name: data.name, - active: data.active, - redirectUri: Array.isArray(data.redirectUri) ? data.redirectUri.join('\n') : data.redirectUri, + const { + register, + handleSubmit, + formState: { errors }, + control, + } = useForm({ + defaultValues: { + name: data.name, + active: data.active, + redirectUri: Array.isArray(data.redirectUri) ? data.redirectUri.join('\n') : data.redirectUri, + }, }); + const setModal = useSetModal(); const router = useRoute('admin-oauth-apps'); @@ -31,21 +52,21 @@ function EditOauthApp({ onChange, data, ...props }) { const saveApp = useMethod('updateOAuthApp'); const deleteApp = useMethod('deleteOAuthApp'); - const handleSave = useCallback(async () => { + const onSubmit: SubmitHandler = async (newData: EditOAuthAddAppPayload) => { try { await saveApp(data._id, newData); dispatchToastMessage({ type: 'success', message: t('Application_updated') }); onChange(); } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); + dispatchToastMessage({ type: 'error', message: String(error) }); } - }, [data._id, dispatchToastMessage, newData, onChange, saveApp, t]); + }; const onDeleteConfirm = useCallback(async () => { try { await deleteApp(data._id); - const handleClose = () => { + const handleClose = (): void => { setModal(); close(); }; @@ -56,51 +77,57 @@ function EditOauthApp({ onChange, data, ...props }) { )); } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); + dispatchToastMessage({ type: 'error', message: String(error) }); } }, [close, data._id, deleteApp, dispatchToastMessage, setModal, t]); - const openConfirmDelete = () => + const openConfirmDelete = (): void => setModal(() => ( - setModal(undefined)} confirmText={t('Delete')}> + setModal(undefined)} + onClose={(): void => setModal(undefined)} + confirmText={t('Delete')} + > {t('Application_delete_warning')} )); - const handleChange = - (field, getValue = (e) => e.currentTarget.value) => - (e) => - setNewData({ ...newData, [field]: getValue(e) }); - - const { active, name, redirectUri } = newData; - return ( {t('Active')} - !active)} /> + } + /> {t('Application_Name')} - + {t('Give_the_application_a_name_This_will_be_seen_by_your_users')} + {errors?.name && {t('error-the-field-is-required', { field: t('Name') })}} {t('Redirect_URI')} - + {t('After_OAuth2_authentication_users_will_be_redirected_to_this_URL')} + {errors?.redirectUri && {t('error-the-field-is-required', { field: t('Redirect_URI') })}} {t('Client_ID')} - + @@ -125,7 +152,7 @@ function EditOauthApp({ onChange, data, ...props }) { - @@ -144,6 +171,6 @@ function EditOauthApp({ onChange, data, ...props }) { ); -} +}; export default EditOauthApp; diff --git a/apps/meteor/client/views/admin/oauthApps/EditOauthAppWithData.js b/apps/meteor/client/views/admin/oauthApps/EditOauthAppWithData.tsx similarity index 90% rename from apps/meteor/client/views/admin/oauthApps/EditOauthAppWithData.js rename to apps/meteor/client/views/admin/oauthApps/EditOauthAppWithData.tsx index f84b7c40e9ea..4fc1055a0282 100644 --- a/apps/meteor/client/views/admin/oauthApps/EditOauthAppWithData.js +++ b/apps/meteor/client/views/admin/oauthApps/EditOauthAppWithData.tsx @@ -1,15 +1,16 @@ import { Box, Button, ButtonGroup, Skeleton, Throbber, InputBox } from '@rocket.chat/fuselage'; -import React, { useCallback, useMemo } from 'react'; +import React, { ReactElement, useCallback, useMemo } from 'react'; import { useTranslation } from '../../../contexts/TranslationContext'; import { AsyncStatePhase } from '../../../hooks/useAsyncState'; import { useEndpointData } from '../../../hooks/useEndpointData'; import EditOauthApp from './EditOauthApp'; -function EditOauthAppWithData({ _id, ...props }) { +const EditOauthAppWithData = ({ _id, ...props }: { _id: string }): ReactElement => { const t = useTranslation(); const params = useMemo(() => ({ appId: _id }), [_id]); + const { value: data, phase: state, error, reload } = useEndpointData('oauth-apps.get', params); const onChange = useCallback(() => { @@ -49,6 +50,6 @@ function EditOauthAppWithData({ _id, ...props }) { } return ; -} +}; export default EditOauthAppWithData; diff --git a/apps/meteor/client/views/admin/oauthApps/OAuthAddApp.js b/apps/meteor/client/views/admin/oauthApps/OAuthAddApp.tsx similarity index 58% rename from apps/meteor/client/views/admin/oauthApps/OAuthAddApp.js rename to apps/meteor/client/views/admin/oauthApps/OAuthAddApp.tsx index 9c9a6e3e0ab2..a55e8ea8f963 100644 --- a/apps/meteor/client/views/admin/oauthApps/OAuthAddApp.js +++ b/apps/meteor/client/views/admin/oauthApps/OAuthAddApp.tsx @@ -1,5 +1,6 @@ import { Button, ButtonGroup, TextInput, Field, TextAreaInput, ToggleSwitch, FieldGroup } from '@rocket.chat/fuselage'; -import React, { useCallback, useState } from 'react'; +import React, { ReactElement, useCallback } from 'react'; +import { useForm, SubmitHandler, Controller } from 'react-hook-form'; import VerticalBar from '../../../components/VerticalBar'; import { useRoute } from '../../../contexts/RouterContext'; @@ -7,15 +8,22 @@ import { useMethod } from '../../../contexts/ServerContext'; import { useToastMessageDispatch } from '../../../contexts/ToastMessagesContext'; import { useTranslation } from '../../../contexts/TranslationContext'; -export default function OAuthAddApp(props) { +type OAuthAddAppPayload = { + name: string; + active: boolean; + redirectUri: string; +}; + +const OAuthAddApp = (): ReactElement => { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); - const [newData, setNewData] = useState({ - name: '', - active: false, - redirectUri: '', - }); + const { + register, + handleSubmit, + formState: { errors }, + control, + } = useForm(); const saveApp = useMethod('addOAuthApp'); @@ -23,51 +31,51 @@ export default function OAuthAddApp(props) { const close = useCallback(() => router.push({}), [router]); - const handleSave = useCallback(async () => { + const onSubmit: SubmitHandler = async (data) => { try { - await saveApp(newData); + await saveApp(data); close(); dispatchToastMessage({ type: 'success', message: t('Application_added') }); } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); + dispatchToastMessage({ type: 'error', message: String(error) }); } - }, [close, dispatchToastMessage, newData, saveApp, t]); - - const handleChange = - (field, getValue = (e) => e.currentTarget.value) => - (e) => - setNewData({ ...newData, [field]: getValue(e) }); - - const { active, name, redirectUri } = newData; + }; return ( - + {t('Active')} - !active)} /> + } + /> {t('Application_Name')} - + {t('Give_the_application_a_name_This_will_be_seen_by_your_users')} + {errors?.name && {t('error-the-field-is-required', { field: t('Name') })}} {t('Redirect_URI')} - + {t('After_OAuth2_authentication_users_will_be_redirected_to_this_URL')} + {errors?.redirectUri && {t('error-the-field-is-required', { field: t('Redirect_URI') })}} - @@ -76,4 +84,6 @@ export default function OAuthAddApp(props) { ); -} +}; + +export default OAuthAddApp; diff --git a/apps/meteor/client/views/admin/oauthApps/OAuthAppsPage.js b/apps/meteor/client/views/admin/oauthApps/OAuthAppsPage.tsx similarity index 75% rename from apps/meteor/client/views/admin/oauthApps/OAuthAppsPage.js rename to apps/meteor/client/views/admin/oauthApps/OAuthAppsPage.tsx index 5946b936f8cb..45a24d7e2ce0 100644 --- a/apps/meteor/client/views/admin/oauthApps/OAuthAppsPage.js +++ b/apps/meteor/client/views/admin/oauthApps/OAuthAppsPage.tsx @@ -1,15 +1,14 @@ import { Button, Icon } from '@rocket.chat/fuselage'; -import React from 'react'; +import React, { ReactElement } from 'react'; import Page from '../../../components/Page'; -// import VerticalBar from '../../components/VerticalBar'; import { useRouteParameter, useRoute } from '../../../contexts/RouterContext'; import { useTranslation } from '../../../contexts/TranslationContext'; import EditOauthAppWithData from './EditOauthAppWithData'; import OAuthAddApp from './OAuthAddApp'; import OAuthAppsTable from './OAuthAppsTable'; -export function OAuthAppsPage() { +const OAuthAppsPage = (): ReactElement => { const t = useTranslation(); const router = useRoute('admin-oauth-apps'); @@ -22,13 +21,13 @@ export function OAuthAppsPage() { {context && ( - )} {!context && ( - @@ -36,12 +35,12 @@ export function OAuthAppsPage() { {!context && } - {context === 'edit' && } + {id && context === 'edit' && } {context === 'new' && } ); -} +}; export default OAuthAppsPage; diff --git a/apps/meteor/client/views/admin/oauthApps/OAuthAppsRoute.js b/apps/meteor/client/views/admin/oauthApps/OAuthAppsRoute.tsx similarity index 73% rename from apps/meteor/client/views/admin/oauthApps/OAuthAppsRoute.js rename to apps/meteor/client/views/admin/oauthApps/OAuthAppsRoute.tsx index 237f5d9eea6b..e294857c762d 100644 --- a/apps/meteor/client/views/admin/oauthApps/OAuthAppsRoute.js +++ b/apps/meteor/client/views/admin/oauthApps/OAuthAppsRoute.tsx @@ -1,10 +1,10 @@ -import React from 'react'; +import React, { ReactElement } from 'react'; import { usePermission } from '../../../contexts/AuthorizationContext'; import NotAuthorizedPage from '../../notAuthorized/NotAuthorizedPage'; import OAuthAppsPage from './OAuthAppsPage'; -export default function MailerRoute() { +const OAuthAppsRoute = (): ReactElement => { const canAccessOAuthApps = usePermission('manage-oauth-apps'); if (!canAccessOAuthApps) { @@ -12,4 +12,6 @@ export default function MailerRoute() { } return ; -} +}; + +export default OAuthAppsRoute; diff --git a/apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.js b/apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsx similarity index 86% rename from apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.js rename to apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsx index 0b465cc08e0d..2194444ba70f 100644 --- a/apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.js +++ b/apps/meteor/client/views/admin/oauthApps/OAuthAppsTable.tsx @@ -1,5 +1,5 @@ import { Table } from '@rocket.chat/fuselage'; -import React, { useMemo, useCallback } from 'react'; +import React, { useMemo, useCallback, ReactElement } from 'react'; import GenericTable from '../../../components/GenericTable'; import { useRoute } from '../../../contexts/RouterContext'; @@ -7,19 +7,16 @@ import { useTranslation } from '../../../contexts/TranslationContext'; import { useEndpointData } from '../../../hooks/useEndpointData'; import { useFormatDateAndTime } from '../../../hooks/useFormatDateAndTime'; -export function OAuthAppsTable() { +const OAuthAppsTable = (): ReactElement => { const t = useTranslation(); const formatDateAndTime = useFormatDateAndTime(); - const { value: data } = useEndpointData( - 'oauth-apps.list', - useMemo(() => ({}), []), - ); + const { value: data } = useEndpointData('oauth-apps.list'); const router = useRoute('admin-oauth-apps'); const onClick = useCallback( - (_id) => () => + (_id) => (): void => router.push({ context: 'edit', id: _id, @@ -49,7 +46,7 @@ export function OAuthAppsTable() { [formatDateAndTime, onClick], ); - return ; -} + return ; +}; export default OAuthAppsTable; diff --git a/packages/rest-typings/src/index.ts b/packages/rest-typings/src/index.ts index 914eec094019..1e9a65a2780a 100644 --- a/packages/rest-typings/src/index.ts +++ b/packages/rest-typings/src/index.ts @@ -30,7 +30,7 @@ import type { TeamsEndpoints } from './v1/teams'; import type { UsersEndpoints } from './v1/users'; import type { VideoConferenceEndpoints } from './v1/videoConference'; import type { VoipEndpoints } from './v1/voip'; - +import type { OAuthAppsEndpoint } from './v1/oauthapps'; // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/interface-name-prefix export interface Endpoints extends BannersEndpoints, @@ -60,7 +60,8 @@ export interface Endpoints VideoConferenceEndpoints, InvitesEndpoints, E2eEndpoints, - CustomSoundEndpoint {} + CustomSoundEndpoint, + OAuthAppsEndpoint {} type OperationsByPathPattern = TPathPattern extends any ? OperationsByPathPatternAndMethod @@ -128,6 +129,7 @@ export * from './v1/permissions'; export * from './v1/roles'; export * from './v1/settings'; export * from './v1/teams'; +export * from './v1/oauthapps'; export * from './helpers/PaginatedRequest'; export * from './helpers/PaginatedResult'; export * from './helpers/ReplacePlaceholders'; diff --git a/packages/rest-typings/src/v1/oauthapps.ts b/packages/rest-typings/src/v1/oauthapps.ts new file mode 100644 index 000000000000..89f993d50b21 --- /dev/null +++ b/packages/rest-typings/src/v1/oauthapps.ts @@ -0,0 +1,47 @@ +import type { IOAuthApps, IUser } from '@rocket.chat/core-typings'; +import Ajv from 'ajv'; + +const ajv = new Ajv(); + +export type OauthAppsGetParams = { clientId: string } | { appId: string }; + +export type OAuthAppsEndpoint = { + 'oauth-apps.list': { + GET: (params: { uid: IUser['_id'] }) => { + oauthApps: IOAuthApps[]; + }; + }; + + 'oauth-apps.get': { + GET: (params: OauthAppsGetParams) => { + oauthApp: IOAuthApps; + }; + }; +}; + +const oauthAppsGetParamsSchema = { + oneOf: [ + { + type: 'object', + properties: { + clientId: { + type: 'string', + }, + }, + required: ['clientId'], + additionalProperties: false, + }, + { + type: 'object', + properties: { + appId: { + type: 'string', + }, + }, + required: ['appId'], + additionalProperties: false, + }, + ], +}; + +export const isOauthAppsGetParams = ajv.compile(oauthAppsGetParamsSchema); From c53409fd890e7a49b57586b3afb810299a4b8c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?= <60678893+juliajforesti@users.noreply.github.com> Date: Wed, 4 May 2022 14:06:10 -0300 Subject: [PATCH 011/145] Chore: Convert customSounds folder to ts (#25274) Co-authored-by: dougfabris Co-authored-by: Guilherme Gazzo --- .../admin/customSounds/AddCustomSound.tsx | 6 +- ...EditCustomSound.js => EditCustomSound.tsx} | 16 +++-- .../{EditSound.js => EditSound.tsx} | 46 ++++++++----- .../client/views/admin/customSounds/lib.js | 42 ------------ .../client/views/admin/customSounds/lib.ts | 65 +++++++++++++++++++ .../rocketchat-i18n/i18n/en.i18n.json | 2 + 6 files changed, 111 insertions(+), 66 deletions(-) rename apps/meteor/client/views/admin/customSounds/{EditCustomSound.js => EditCustomSound.tsx} (79%) rename apps/meteor/client/views/admin/customSounds/{EditSound.js => EditSound.tsx} (78%) delete mode 100644 apps/meteor/client/views/admin/customSounds/lib.js create mode 100644 apps/meteor/client/views/admin/customSounds/lib.ts diff --git a/apps/meteor/client/views/admin/customSounds/AddCustomSound.tsx b/apps/meteor/client/views/admin/customSounds/AddCustomSound.tsx index 414195d7e5b0..0b53670c1390 100644 --- a/apps/meteor/client/views/admin/customSounds/AddCustomSound.tsx +++ b/apps/meteor/client/views/admin/customSounds/AddCustomSound.tsx @@ -6,7 +6,7 @@ import { useMethod } from '../../../contexts/ServerContext'; import { useToastMessageDispatch } from '../../../contexts/ToastMessagesContext'; import { useTranslation } from '../../../contexts/TranslationContext'; import { useFileInput } from '../../../hooks/useFileInput'; -import { validate, createSoundData } from './lib'; +import { validate, createSoundData, soundDataType } from './lib'; type AddCustomSoundProps = { goToNew: (where: string) => () => void; @@ -33,7 +33,7 @@ const AddCustomSound = function AddCustomSound({ goToNew, close, onChange, ...pr const saveAction = useCallback( async (name, soundFile): Promise => { - const soundData = createSoundData(soundFile, name) as { extension: string; _id?: string; name: string; newFile?: true }; + const soundData: soundDataType = createSoundData(soundFile, name); const validation = validate(soundData, soundFile) as Array[0]>; validation.forEach((error) => { @@ -81,7 +81,7 @@ const AddCustomSound = function AddCustomSound({ goToNew, close, onChange, ...pr dispatchToastMessage({ type: 'success', message: t('Custom_Sound_Saved_Successfully') }); onChange(); } catch (error) { - dispatchToastMessage({ type: 'error', message: error.message }); + dispatchToastMessage({ type: 'error', message: String(error) }); } }, [dispatchToastMessage, goToNew, name, onChange, saveAction, sound, t]); diff --git a/apps/meteor/client/views/admin/customSounds/EditCustomSound.js b/apps/meteor/client/views/admin/customSounds/EditCustomSound.tsx similarity index 79% rename from apps/meteor/client/views/admin/customSounds/EditCustomSound.js rename to apps/meteor/client/views/admin/customSounds/EditCustomSound.tsx index 1867582565a5..3fdb38b9b400 100644 --- a/apps/meteor/client/views/admin/customSounds/EditCustomSound.js +++ b/apps/meteor/client/views/admin/customSounds/EditCustomSound.tsx @@ -1,11 +1,17 @@ import { Box, Button, ButtonGroup, Skeleton, Throbber, InputBox } from '@rocket.chat/fuselage'; -import React, { useMemo } from 'react'; +import React, { ReactElement, useMemo } from 'react'; import { AsyncStatePhase } from '../../../hooks/useAsyncState'; import { useEndpointData } from '../../../hooks/useEndpointData'; import EditSound from './EditSound'; -function EditCustomSound({ _id, onChange, ...props }) { +type EditCustomSoundProps = { + _id: string | undefined; + onChange?: () => void; + close?: () => void; +}; + +function EditCustomSound({ _id, onChange, ...props }: EditCustomSoundProps): ReactElement { const query = useMemo(() => ({ query: JSON.stringify({ _id }) }), [_id]); const { value: data, phase: state, error, reload } = useEndpointData('custom-sounds.list', query); @@ -42,9 +48,9 @@ function EditCustomSound({ _id, onChange, ...props }) { ); } - const handleChange = () => { - onChange && onChange(); - reload && reload(); + const handleChange: () => void = () => { + onChange?.(); + reload?.(); }; return ; diff --git a/apps/meteor/client/views/admin/customSounds/EditSound.js b/apps/meteor/client/views/admin/customSounds/EditSound.tsx similarity index 78% rename from apps/meteor/client/views/admin/customSounds/EditSound.js rename to apps/meteor/client/views/admin/customSounds/EditSound.tsx index 79a919da29b6..18f5d3ad8d4e 100644 --- a/apps/meteor/client/views/admin/customSounds/EditSound.js +++ b/apps/meteor/client/views/admin/customSounds/EditSound.tsx @@ -1,5 +1,5 @@ import { Box, Button, ButtonGroup, Margins, TextInput, Field, Icon } from '@rocket.chat/fuselage'; -import React, { useCallback, useState, useMemo, useEffect } from 'react'; +import React, { useCallback, useState, useMemo, useEffect, ReactElement, SyntheticEvent } from 'react'; import GenericModal from '../../../components/GenericModal'; import VerticalBar from '../../../components/VerticalBar'; @@ -10,7 +10,17 @@ import { useTranslation } from '../../../contexts/TranslationContext'; import { useFileInput } from '../../../hooks/useFileInput'; import { validate, createSoundData } from './lib'; -function EditSound({ close, onChange, data, ...props }) { +type EditSoundProps = { + close?: () => void; + onChange: () => void; + data: { + _id: string; + name: string; + extension?: string; + }; +}; + +function EditSound({ close, onChange, data, ...props }: EditSoundProps): ReactElement { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const setModal = useSetModal(); @@ -19,7 +29,7 @@ function EditSound({ close, onChange, data, ...props }) { const previousSound = useMemo(() => data || {}, [data]); const [name, setName] = useState(() => data?.name ?? ''); - const [sound, setSound] = useState(() => data ?? {}); + const [sound, setSound] = useState(() => data); useEffect(() => { setName(previousName || ''); @@ -38,14 +48,14 @@ function EditSound({ close, onChange, data, ...props }) { const saveAction = useCallback( async (sound) => { - const soundData = createSoundData(sound, name, { previousName, previousSound, _id }); + const soundData = createSoundData(sound, name, { previousName, previousSound, _id, extension: sound.extension }); const validation = validate(soundData, sound); if (validation.length === 0) { let soundId; try { soundId = await insertOrUpdateSound(soundData); } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); + dispatchToastMessage({ type: 'error', message: String(error) }); } soundData._id = soundId; @@ -56,12 +66,12 @@ function EditSound({ close, onChange, data, ...props }) { const reader = new FileReader(); reader.readAsBinaryString(sound); - reader.onloadend = () => { + reader.onloadend = (): void => { try { uploadCustomSound(reader.result, sound.type, soundData); return dispatchToastMessage({ type: 'success', message: t('File_uploaded') }); } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); + dispatchToastMessage({ type: 'error', message: String(error) }); } }; } @@ -83,32 +93,32 @@ function EditSound({ close, onChange, data, ...props }) { }, [saveAction, sound, onChange]); const handleDeleteButtonClick = useCallback(() => { - const handleClose = () => { + const handleClose = (): void => { setModal(null); - close(); + close?.(); onChange(); }; - const handleDelete = async () => { + const handleDelete = async (): Promise => { try { await deleteCustomSound(_id); setModal(() => ( - + {t('Custom_Sound_Has_Been_Deleted')} )); } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); + dispatchToastMessage({ type: 'error', message: String(error) }); onChange(); } }; - const handleCancel = () => { + const handleCancel = (): void => { setModal(null); }; setModal(() => ( - + {t('Custom_Sound_Delete_Warning')} )); @@ -121,7 +131,11 @@ function EditSound({ close, onChange, data, ...props }) { {t('Name')} - setName(e.currentTarget.value)} placeholder={t('Name')} /> + ): void => setName(e.currentTarget.value)} + placeholder={t('Name')} + /> @@ -132,7 +146,7 @@ function EditSound({ close, onChange, data, ...props }) { - {(sound && sound.name) || 'none'} + {sound?.name || 'none'} diff --git a/apps/meteor/client/views/admin/customSounds/lib.js b/apps/meteor/client/views/admin/customSounds/lib.js deleted file mode 100644 index 527d9c8e86ff..000000000000 --- a/apps/meteor/client/views/admin/customSounds/lib.js +++ /dev/null @@ -1,42 +0,0 @@ -// Here previousData will define if it is an update or a new entry -export function validate(soundData, soundFile) { - const errors = []; - - if (!soundData.name) { - errors.push('Name'); - } - - if (!soundData._id && !soundFile) { - errors.push('Sound File'); - } - - if (soundFile) { - if (!soundData.previousSound || soundData.previousSound !== soundFile) { - if (!/audio\/mp3/.test(soundFile.type) && !/audio\/mpeg/.test(soundFile.type) && !/audio\/x-mpeg/.test(soundFile.type)) { - errors.push('FileType'); - } - } - } - - return errors; -} - -export function createSoundData(soundFile, name = '', previousData) { - const soundData = { - extension: soundFile?.name.split('.').pop(), - }; - - if (previousData) { - soundData._id = previousData._id; - soundData.previousName = previousData.previousName; - soundData.previousSound = previousData.previousSound; - soundData.previousExtension = previousData.previousSound.extension; - soundData.name = name; - soundData.newFile = false; - } else { - soundData.name = name.trim(); - soundData.newFile = true; - } - - return soundData; -} diff --git a/apps/meteor/client/views/admin/customSounds/lib.ts b/apps/meteor/client/views/admin/customSounds/lib.ts new file mode 100644 index 000000000000..bba15e08d3a0 --- /dev/null +++ b/apps/meteor/client/views/admin/customSounds/lib.ts @@ -0,0 +1,65 @@ +type soundFileType = { + name: string; + type: string; + extension?: string; +}; + +export type soundDataType = { + extension: string; + _id?: string; + previousName?: string; + previousSound?: { + extension?: string; + }; + previousExtension?: string; + name?: string; + newFile?: boolean; + random?: number; +}; + +// Here previousData will define if it is an update or a new entry +export function validate(soundData: soundDataType, soundFile?: soundFileType): ('Name' | 'Sound File' | 'FileType')[] { + const errors: ('Name' | 'Sound File' | 'FileType')[] = []; + + if (!soundData.name) { + errors.push('Name'); + } + + if (!soundData._id && !soundFile) { + errors.push('Sound File'); + } + + if (soundFile) { + if (!soundData.previousSound || soundData.previousSound !== soundFile) { + if (!/audio\/mp3/.test(soundFile.type) && !/audio\/mpeg/.test(soundFile.type) && !/audio\/x-mpeg/.test(soundFile.type)) { + errors.push('FileType'); + } + } + } + + return errors; +} + +export const createSoundData = function createSoundData( + soundFile: soundFileType, + name: string, + previousData?: soundDataType, +): soundDataType { + const soundData: soundDataType = { + extension: soundFile?.name.split('.').pop() || '', + }; + + if (previousData) { + soundData._id = previousData._id; + soundData.previousName = previousData.previousName; + soundData.previousSound = previousData.previousSound; + soundData.previousExtension = previousData.previousSound?.extension; + soundData.name = name; + soundData.newFile = false; + } else { + soundData.name = name.trim(); + soundData.newFile = true; + } + + return soundData; +}; diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 86000d956a39..351a9ab45822 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1981,6 +1981,7 @@ "File_uploaded": "File uploaded", "File_uploaded_successfully": "File uploaded successfully", "File_URL": "File URL", + "FileType": "File Type", "files": "files", "Files": "Files", "Files_only": "Only remove the attached files, keep messages", @@ -4086,6 +4087,7 @@ "Sort_by_activity": "Sort by Activity", "Sound": "Sound", "Sound_File_mp3": "Sound File (mp3)", + "Sound File": "Sound File", "Source": "Source", "SSL": "SSL", "Star": "Star", From 4a47110d5b842a75563ff001a3bff208bf4d1ebe Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 4 May 2022 14:07:16 -0300 Subject: [PATCH 012/145] Chore: Add typings for /v1/webdav.getMyAccounts (#25276) Co-authored-by: Guilherme Gazzo --- apps/meteor/app/api/server/lib/webdav.ts | 20 +++++++++---------- .../api/server/v1/{webdav.js => webdav.ts} | 6 ++++-- packages/core-typings/src/IWebdavAccount.ts | 2 +- packages/rest-typings/src/index.ts | 3 +++ packages/rest-typings/src/v1/webdav.ts | 9 +++++++++ 5 files changed, 26 insertions(+), 14 deletions(-) rename apps/meteor/app/api/server/v1/{webdav.js => webdav.ts} (59%) create mode 100644 packages/rest-typings/src/v1/webdav.ts diff --git a/apps/meteor/app/api/server/lib/webdav.ts b/apps/meteor/app/api/server/lib/webdav.ts index 08efc12d9f9b..7f3701a7d695 100644 --- a/apps/meteor/app/api/server/lib/webdav.ts +++ b/apps/meteor/app/api/server/lib/webdav.ts @@ -2,15 +2,13 @@ import type { IWebdavAccount } from '@rocket.chat/core-typings'; import { WebdavAccounts } from '../../../models/server/raw'; -export async function findWebdavAccountsByUserId({ uid }: { uid: string }): Promise<{ accounts: IWebdavAccount[] }> { - return { - accounts: await WebdavAccounts.findWithUserId(uid, { - projection: { - _id: 1, - username: 1, - serverURL: 1, - name: 1, - }, - }).toArray(), - }; +export async function findWebdavAccountsByUserId({ uid }: { uid: string }): Promise { + return WebdavAccounts.findWithUserId(uid, { + projection: { + _id: 1, + username: 1, + serverURL: 1, + name: 1, + }, + }).toArray(); } diff --git a/apps/meteor/app/api/server/v1/webdav.js b/apps/meteor/app/api/server/v1/webdav.ts similarity index 59% rename from apps/meteor/app/api/server/v1/webdav.js rename to apps/meteor/app/api/server/v1/webdav.ts index e242c40f379b..4b2119dfcfec 100644 --- a/apps/meteor/app/api/server/v1/webdav.js +++ b/apps/meteor/app/api/server/v1/webdav.ts @@ -5,8 +5,10 @@ API.v1.addRoute( 'webdav.getMyAccounts', { authRequired: true }, { - get() { - return API.v1.success(Promise.await(findWebdavAccountsByUserId({ uid: this.userId }))); + async get() { + return API.v1.success({ + accounts: await findWebdavAccountsByUserId({ uid: this.userId }), + }); }, }, ); diff --git a/packages/core-typings/src/IWebdavAccount.ts b/packages/core-typings/src/IWebdavAccount.ts index 2ed42f07d19e..f1a834be7dc5 100644 --- a/packages/core-typings/src/IWebdavAccount.ts +++ b/packages/core-typings/src/IWebdavAccount.ts @@ -8,4 +8,4 @@ export interface IWebdavAccount extends IRocketChatRecord { name: string; } -export type IWebdavAccountPayload = Omit; +export type IWebdavAccountPayload = Pick; diff --git a/packages/rest-typings/src/index.ts b/packages/rest-typings/src/index.ts index 1e9a65a2780a..d123606ed2cb 100644 --- a/packages/rest-typings/src/index.ts +++ b/packages/rest-typings/src/index.ts @@ -30,7 +30,9 @@ import type { TeamsEndpoints } from './v1/teams'; import type { UsersEndpoints } from './v1/users'; import type { VideoConferenceEndpoints } from './v1/videoConference'; import type { VoipEndpoints } from './v1/voip'; +import type { WebdavEndpoints } from './v1/webdav'; import type { OAuthAppsEndpoint } from './v1/oauthapps'; + // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/interface-name-prefix export interface Endpoints extends BannersEndpoints, @@ -61,6 +63,7 @@ export interface Endpoints InvitesEndpoints, E2eEndpoints, CustomSoundEndpoint, + WebdavEndpoints, OAuthAppsEndpoint {} type OperationsByPathPattern = TPathPattern extends any diff --git a/packages/rest-typings/src/v1/webdav.ts b/packages/rest-typings/src/v1/webdav.ts new file mode 100644 index 000000000000..51a810b9ce15 --- /dev/null +++ b/packages/rest-typings/src/v1/webdav.ts @@ -0,0 +1,9 @@ +import type { IWebdavAccount } from '@rocket.chat/core-typings'; + +export type WebdavEndpoints = { + 'webdav.getMyAccounts': { + GET: () => { + accounts: Pick[]; + }; + }; +}; From 9c590063ac7acda0ab8c6a06cb246aeb62d0a6cd Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 4 May 2022 14:07:54 -0300 Subject: [PATCH 013/145] Chore: Convert getStatistics (#25342) --- .../app/api/server/v1/{stats.js => stats.ts} | 39 ++++++++-------- .../app/models/server/raw/Statistics.ts | 6 +-- .../server/functions/getStatistics.js | 26 ----------- .../server/functions/getStatistics.ts | 46 +++++++++++++++++++ .../views/admin/info/InformationRoute.tsx | 2 +- .../EngagementDashboardRoute.tsx | 2 +- .../server/sdk/types/ITelemetryEvent.ts | 1 + packages/core-typings/src/IStatistic.ts | 3 -- packages/core-typings/src/index.ts | 1 - packages/rest-typings/src/v1/statistics.ts | 43 ++++++++++------- 10 files changed, 97 insertions(+), 72 deletions(-) rename apps/meteor/app/api/server/v1/{stats.js => stats.ts} (68%) delete mode 100644 apps/meteor/app/statistics/server/functions/getStatistics.js create mode 100644 apps/meteor/app/statistics/server/functions/getStatistics.ts delete mode 100644 packages/core-typings/src/IStatistic.ts diff --git a/apps/meteor/app/api/server/v1/stats.js b/apps/meteor/app/api/server/v1/stats.ts similarity index 68% rename from apps/meteor/app/api/server/v1/stats.js rename to apps/meteor/app/api/server/v1/stats.ts index 2b86338d7316..4f1f74383b8a 100644 --- a/apps/meteor/app/api/server/v1/stats.js +++ b/apps/meteor/app/api/server/v1/stats.ts @@ -6,15 +6,14 @@ API.v1.addRoute( 'statistics', { authRequired: true }, { - get() { - const { refresh } = this.requestParams(); + async get() { + const { refresh = 'false' } = this.requestParams(); + return API.v1.success( - Promise.await( - getLastStatistics({ - userId: this.userId, - refresh: refresh && refresh === 'true', - }), - ), + await getLastStatistics({ + userId: this.userId, + refresh: refresh === 'true', + }), ); }, }, @@ -24,23 +23,21 @@ API.v1.addRoute( 'statistics.list', { authRequired: true }, { - get() { + async get() { const { offset, count } = this.getPaginationItems(); const { sort, fields, query } = this.parseJsonQuery(); return API.v1.success( - Promise.await( - getStatistics({ - userId: this.userId, - query, - pagination: { - offset, - count, - sort, - fields, - }, - }), - ), + await getStatistics({ + userId: this.userId, + query, + pagination: { + offset, + count, + sort, + fields, + }, + }), ); }, }, diff --git a/apps/meteor/app/models/server/raw/Statistics.ts b/apps/meteor/app/models/server/raw/Statistics.ts index af130e5a2888..70768a77ce46 100644 --- a/apps/meteor/app/models/server/raw/Statistics.ts +++ b/apps/meteor/app/models/server/raw/Statistics.ts @@ -1,13 +1,13 @@ -import type { IStatistic } from '@rocket.chat/core-typings'; +import type { IStats } from '@rocket.chat/core-typings'; import { BaseRaw, IndexSpecification } from './BaseRaw'; -export class StatisticsRaw extends BaseRaw { +export class StatisticsRaw extends BaseRaw { protected modelIndexes(): IndexSpecification[] { return [{ key: { createdAt: -1 } }]; } - async findLast(): Promise { + async findLast(): Promise { const options = { sort: { createdAt: -1, diff --git a/apps/meteor/app/statistics/server/functions/getStatistics.js b/apps/meteor/app/statistics/server/functions/getStatistics.js deleted file mode 100644 index 3501f40731fb..000000000000 --- a/apps/meteor/app/statistics/server/functions/getStatistics.js +++ /dev/null @@ -1,26 +0,0 @@ -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { Statistics } from '../../../models/server/raw'; - -export async function getStatistics({ userId, query = {}, pagination: { offset, count, sort, fields } }) { - if (!(await hasPermissionAsync(userId, 'view-statistics'))) { - throw new Error('error-not-allowed'); - } - - const cursor = Statistics.find(query, { - sort: sort || { name: 1 }, - skip: offset, - limit: count, - fields, - }); - - const total = await cursor.count(); - - const statistics = await cursor.toArray(); - - return { - statistics, - count: statistics.length, - offset, - total, - }; -} diff --git a/apps/meteor/app/statistics/server/functions/getStatistics.ts b/apps/meteor/app/statistics/server/functions/getStatistics.ts new file mode 100644 index 000000000000..da536355c494 --- /dev/null +++ b/apps/meteor/app/statistics/server/functions/getStatistics.ts @@ -0,0 +1,46 @@ +import type { SortOptionObject, SchemaMember } from 'mongodb'; +import type { IStats } from '@rocket.chat/core-typings'; + +import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; +import { Statistics } from '../../../models/server/raw'; + +type GetStatisticsParams = { + userId: string; + query?: Record; + pagination: { + offset: number; + count?: number; + sort?: SortOptionObject; + fields?: SchemaMember; + }; +}; + +type GetStatisticsReturn = { statistics: IStats[]; count: number; offset: number; total: number }; + +export async function getStatistics({ + userId, + query = {}, + pagination: { offset, count, sort, fields }, +}: GetStatisticsParams): Promise { + if (!(await hasPermissionAsync(userId, 'view-statistics'))) { + throw new Error('error-not-allowed'); + } + + const cursor = Statistics.find(query, { + sort: sort || { name: 1 }, + skip: offset, + limit: count, + projection: fields, + }); + + const total = await cursor.count(); + + const statistics = await cursor.toArray(); + + return { + statistics, + count: statistics.length, + offset, + total, + }; +} diff --git a/apps/meteor/client/views/admin/info/InformationRoute.tsx b/apps/meteor/client/views/admin/info/InformationRoute.tsx index 10ad54293081..7072902185f1 100644 --- a/apps/meteor/client/views/admin/info/InformationRoute.tsx +++ b/apps/meteor/client/views/admin/info/InformationRoute.tsx @@ -33,7 +33,7 @@ const InformationRoute = (): ReactElement => { setError(false); try { - const [statistics, instances] = await Promise.all([getStatistics({ refresh }), getInstances()]); + const [statistics, instances] = await Promise.all([getStatistics({ refresh: refresh ? 'true' : 'false' }), getInstances()]); if (didCancel) { return; diff --git a/apps/meteor/ee/client/views/admin/engagementDashboard/EngagementDashboardRoute.tsx b/apps/meteor/ee/client/views/admin/engagementDashboard/EngagementDashboardRoute.tsx index 7a076d0445dc..0b7c8d6a7dbf 100644 --- a/apps/meteor/ee/client/views/admin/engagementDashboard/EngagementDashboardRoute.tsx +++ b/apps/meteor/ee/client/views/admin/engagementDashboard/EngagementDashboardRoute.tsx @@ -26,7 +26,7 @@ const EngagementDashboardRoute = (): ReactElement | null => { }, [routeName, engagementDashboardRoute, tab]); const eventStats = useEndpointAction('POST', 'statistics.telemetry', { - params: [{ eventName: 'updateCounter', settingsId: 'Engagement_Dashboard_Load_Count', timestamp: Date.now() }], + params: [{ eventName: 'updateCounter', settingsId: 'Engagement_Dashboard_Load_Count' }], }); if (!isValidTab(tab)) { diff --git a/apps/meteor/server/sdk/types/ITelemetryEvent.ts b/apps/meteor/server/sdk/types/ITelemetryEvent.ts index 9b8e598ba343..d81ee1600053 100644 --- a/apps/meteor/server/sdk/types/ITelemetryEvent.ts +++ b/apps/meteor/server/sdk/types/ITelemetryEvent.ts @@ -2,6 +2,7 @@ type updateCounterDataType = { settingsId: string }; type slashCommandsDataType = { command: string }; type otrDataType = { rid: string }; +// TODO this is duplicated from /packages/rest-typings/src/v1/statistics.ts export type TelemetryMap = { otrStats: otrDataType; slashCommandsStats: slashCommandsDataType; updateCounter: updateCounterDataType }; export type TelemetryEvents = keyof TelemetryMap; diff --git a/packages/core-typings/src/IStatistic.ts b/packages/core-typings/src/IStatistic.ts deleted file mode 100644 index e080eb9a40b5..000000000000 --- a/packages/core-typings/src/IStatistic.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { IStats } from './IStats'; - -export type IStatistic = IStats; diff --git a/packages/core-typings/src/index.ts b/packages/core-typings/src/index.ts index 86a99127e824..49b170713d4c 100644 --- a/packages/core-typings/src/index.ts +++ b/packages/core-typings/src/index.ts @@ -65,7 +65,6 @@ export * from './IBaseData'; export * from './IOAuthApps'; export * from './Federation'; export * from './ISmarshHistory'; -export * from './IStatistic'; export * from './IReport'; // export * from './IMethodConnection'; diff --git a/packages/rest-typings/src/v1/statistics.ts b/packages/rest-typings/src/v1/statistics.ts index ff358ab617f0..b3fd2fb723c3 100644 --- a/packages/rest-typings/src/v1/statistics.ts +++ b/packages/rest-typings/src/v1/statistics.ts @@ -1,25 +1,36 @@ import type { IStats } from '@rocket.chat/core-typings'; +type OTREnded = { rid: string }; + +type SlashCommand = { command: string }; + +type SettingsCounter = { settingsId: string }; + +export type TelemetryMap = { otrStats: OTREnded; slashCommandsStats: SlashCommand; updateCounter: SettingsCounter }; + +export type TelemetryEvents = keyof TelemetryMap; + +type Param = { + eventName: TelemetryEvents; +} & (OTREnded | SlashCommand | SettingsCounter); + +export type TelemetryPayload = { + params: Param[]; +}; + export type StatisticsEndpoints = { 'statistics': { - GET: (params: { refresh?: boolean }) => IStats; + GET: (params: { refresh?: 'true' | 'false' }) => IStats; + }; + 'statistics.list': { + GET: (params: { offset?: number; count?: number; sort?: string; fields?: string; query?: string }) => { + statistics: IStats[]; + count: number; + offset: number; + total: number; + }; }; 'statistics.telemetry': { POST: (params: TelemetryPayload) => any; }; }; - -export type TelemetryBase = { - eventName: string; - timestamp: number; -}; - -type OTREnded = TelemetryBase & { rid: string }; - -type SlashCommand = TelemetryBase & { command: string }; - -export type StatsCounter = TelemetryBase & { settingsId: string }; - -type Params = TelemetryBase | OTREnded | SlashCommand | StatsCounter; - -export type TelemetryPayload = { params: Params[] }; From 9a91764ba4baa148bd8c5d85a470feabc48a10ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?= <60678893+juliajforesti@users.noreply.github.com> Date: Wed, 4 May 2022 14:38:07 -0300 Subject: [PATCH 014/145] Chore: Convert client/views/admin/settings/groups folder to ts (#25345) --- .../client/views/admin/settings/Section.js | 8 +++--- ...AssetsGroupPage.js => AssetsGroupPage.tsx} | 11 +++++--- ...nericGroupPage.js => GenericGroupPage.tsx} | 7 ++++-- .../{OAuthGroupPage.js => OAuthGroupPage.tsx} | 25 +++++++++++-------- .../admin/settings/groups/TabbedGroupPage.tsx | 19 ++++++-------- .../rocketchat-i18n/i18n/en.i18n.json | 2 ++ 6 files changed, 39 insertions(+), 33 deletions(-) rename apps/meteor/client/views/admin/settings/groups/{AssetsGroupPage.js => AssetsGroupPage.tsx} (77%) rename apps/meteor/client/views/admin/settings/groups/{GenericGroupPage.js => GenericGroupPage.tsx} (68%) rename apps/meteor/client/views/admin/settings/groups/{OAuthGroupPage.js => OAuthGroupPage.tsx} (79%) diff --git a/apps/meteor/client/views/admin/settings/Section.js b/apps/meteor/client/views/admin/settings/Section.js index fdb20ca6dea5..128f62668ab1 100644 --- a/apps/meteor/client/views/admin/settings/Section.js +++ b/apps/meteor/client/views/admin/settings/Section.js @@ -7,7 +7,7 @@ import { useTranslation } from '../../../contexts/TranslationContext'; import SectionSkeleton from './SectionSkeleton'; import Setting from './Setting'; -function Section({ children = undefined, groupId, hasReset = true, help = undefined, sectionName, tabName, solo }) { +function Section({ groupId, hasReset = true, sectionName, tabName = '', solo, ...props }) { const editableSettings = useEditableSettings( useMemo( () => ({ @@ -49,9 +49,9 @@ function Section({ children = undefined, groupId, hasReset = true, help = undefi return ( - {help && ( + {props.help && ( - {help} + {props.help} )} @@ -60,7 +60,7 @@ function Section({ children = undefined, groupId, hasReset = true, help = undefi ))} - {children} + {props.children} {hasReset && canReset && ( - {tags.map((tag, i) => ( - removeTag(tag)} mie='x8'> - {tag?.value ? tag.value : tag} + {tags?.map((tag, i) => ( + removeTag(tag)} mie='x8'> + {tag} ))} diff --git a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.js b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.js deleted file mode 100644 index e303a0fca031..000000000000 --- a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.js +++ /dev/null @@ -1,101 +0,0 @@ -import { Field, Button, TextInput, Icon, ButtonGroup, Modal, Box } from '@rocket.chat/fuselage'; -import { useAutoFocus } from '@rocket.chat/fuselage-hooks'; -import React, { useCallback, useState, useMemo, useEffect } from 'react'; - -import { useSetting } from '../../../contexts/SettingsContext'; -import { useTranslation } from '../../../contexts/TranslationContext'; -import { useComponentDidUpdate } from '../../../hooks/useComponentDidUpdate'; -import { useForm } from '../../../hooks/useForm'; -import GenericModal from '../../GenericModal'; -import Tags from '../Tags'; - -const CloseChatModal = ({ department = {}, onCancel, onConfirm }) => { - const t = useTranslation(); - - const inputRef = useAutoFocus(true); - - const { values, handlers } = useForm({ comment: '', tags: [] }); - - const commentRequired = useSetting('Livechat_request_comment_when_closing_conversation'); - - const { comment, tags } = values; - const { handleComment, handleTags } = handlers; - const [commentError, setCommentError] = useState(''); - const [tagError, setTagError] = useState(''); - const [tagRequired, setTagRequired] = useState(false); - - const handleConfirm = useCallback(() => { - onConfirm(comment, tags); - }, [comment, onConfirm, tags]); - - useComponentDidUpdate(() => { - setCommentError(!comment && commentRequired ? t('The_field_is_required', t('Comment')) : ''); - }, [commentRequired, comment, t]); - - const canConfirm = useMemo(() => { - const canConfirmTag = !tagError && (tagRequired ? tags.length > 0 : true); - const canConfirmComment = !commentError && (commentRequired ? !!comment : true); - return canConfirmTag && canConfirmComment; - }, [comment, commentError, commentRequired, tagError, tagRequired, tags.length]); - - useEffect(() => { - department?.requestTagBeforeClosingChat && setTagRequired(true); - setTagError(tagRequired && (!tags || tags.length === 0) ? t('error-tags-must-be-assigned-before-closing-chat') : ''); - }, [department, tagRequired, t, tags]); - - if (!commentRequired && !tagRequired) { - return ( - - ); - } - - return ( - - - - {t('Closing_chat')} - - - - {t('Close_room_description')} - - {t('Comment')} - - - - {commentError} - - {Tags && ( - - - {tagError} - - )} - - - - - - - - - ); -}; - -export default CloseChatModal; diff --git a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx new file mode 100644 index 000000000000..4493b19ea2d9 --- /dev/null +++ b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx @@ -0,0 +1,125 @@ +import { ILivechatDepartment } from '@rocket.chat/core-typings'; +import { Field, Button, TextInput, Icon, ButtonGroup, Modal, Box } from '@rocket.chat/fuselage'; +import React, { useCallback, useState, useEffect, ReactElement, useMemo } from 'react'; +import { useForm } from 'react-hook-form'; + +import { useSetting } from '../../../contexts/SettingsContext'; +import { useTranslation } from '../../../contexts/TranslationContext'; +import GenericModal from '../../GenericModal'; +import Tags from '../Tags'; + +const CloseChatModal = ({ + department, + onCancel, + onConfirm, +}: { + department?: ILivechatDepartment | null; + onCancel: () => void; + onConfirm: (comment?: string, tags?: string[]) => Promise; +}): ReactElement => { + const t = useTranslation(); + + const { + formState: { errors }, + handleSubmit, + register, + setError, + setFocus, + setValue, + watch, + } = useForm(); + + const commentRequired = useSetting('Livechat_request_comment_when_closing_conversation') as boolean; + const [tagRequired, setTagRequired] = useState(false); + + const tags = watch('tags'); + const comment = watch('comment'); + + const handleTags = (value: string[]): void => { + setValue('tags', value); + }; + + const onSubmit = useCallback( + ({ comment, tags }): void => { + if (!comment && commentRequired) { + setError('comment', { type: 'custom', message: t('The_field_is_required', t('Comment')) }); + } + + if (!tags?.length && tagRequired) { + setError('tags', { type: 'custom', message: t('error-tags-must-be-assigned-before-closing-chat') }); + } + + if (!errors.comment || errors.tags) { + onConfirm(comment, tags); + } + }, + [commentRequired, tagRequired, errors, setError, t, onConfirm], + ); + + const cannotSubmit = useMemo(() => { + const cannotSendTag = (tagRequired && !tags?.length) || errors.tags; + const cannotSendComment = (commentRequired && !comment) || errors.comment; + return cannotSendTag || cannotSendComment; + }, [comment, commentRequired, errors, tagRequired, tags]); + + useEffect(() => { + if (department?.requestTagBeforeClosingChat) { + setTagRequired(true); + } + }, [department]); + + useEffect(() => { + if (commentRequired) { + setFocus('comment'); + } + }, [commentRequired, setFocus]); + + useEffect(() => { + if (tagRequired) { + register('tags'); + } + }, [register, tagRequired]); + + return commentRequired || tagRequired ? ( + + + + {t('Closing_chat')} + + + + {t('Close_room_description')} + + {t('Comment')} + + + + {errors.comment?.message} + + + + {errors.tags?.message} + + + + + + + + + + ) : ( + + ); +}; + +export default CloseChatModal; diff --git a/apps/meteor/client/components/Omnichannel/modals/CloseChatModalData.js b/apps/meteor/client/components/Omnichannel/modals/CloseChatModalData.js deleted file mode 100644 index 4e6b9ca7695b..000000000000 --- a/apps/meteor/client/components/Omnichannel/modals/CloseChatModalData.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; - -import { AsyncStatePhase } from '../../../hooks/useAsyncState'; -import { useEndpointData } from '../../../hooks/useEndpointData'; -import { FormSkeleton } from '../Skeleton'; -import CloseChatModal from './CloseChatModal'; - -const CloseChatModalData = ({ departmentId, onCancel, onConfirm }) => { - const { value: data, phase: state } = useEndpointData(`livechat/department/${departmentId}?includeAgents=false`); - if ([state].includes(AsyncStatePhase.LOADING)) { - return ; - } - const { department } = data || {}; - return ; -}; - -export default CloseChatModalData; diff --git a/apps/meteor/client/components/Omnichannel/modals/CloseChatModalData.tsx b/apps/meteor/client/components/Omnichannel/modals/CloseChatModalData.tsx new file mode 100644 index 000000000000..978931731889 --- /dev/null +++ b/apps/meteor/client/components/Omnichannel/modals/CloseChatModalData.tsx @@ -0,0 +1,44 @@ +import { ILivechatDepartment, ILivechatDepartmentAgents } from '@rocket.chat/core-typings'; +import React, { ReactElement } from 'react'; + +import { AsyncStatePhase } from '../../../hooks/useAsyncState'; +import { useEndpointData } from '../../../hooks/useEndpointData'; +import { FormSkeleton } from '../Skeleton'; +import CloseChatModal from './CloseChatModal'; + +const CloseChatModalData = ({ + departmentId, + onCancel, + onConfirm, +}: { + departmentId: ILivechatDepartment['_id']; + onCancel: () => void; + onConfirm: (comment?: string, tags?: string[]) => Promise; +}): ReactElement => { + const { value: data, phase: state } = useEndpointData(`livechat/department/${departmentId}`); + + if ([state].includes(AsyncStatePhase.LOADING)) { + return ; + } + + // TODO: chapter day: fix issue with rest typing + // TODO: This is necessary because of a weird problem + // There is an endpoint livechat/department/${departmentId}/agents + // that is causing the problem. type A | type B | undefined + + return ( + + ); +}; +export default CloseChatModalData; diff --git a/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.js b/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.js deleted file mode 100644 index ea151f7a483b..000000000000 --- a/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.js +++ /dev/null @@ -1,138 +0,0 @@ -import { Field, Button, TextAreaInput, Icon, ButtonGroup, Modal, Box, PaginatedSelectFiltered } from '@rocket.chat/fuselage'; -import { useMutableCallback, useAutoFocus, useDebouncedValue } from '@rocket.chat/fuselage-hooks'; -import React, { useEffect, useMemo, useState } from 'react'; - -import { useEndpoint } from '../../../contexts/ServerContext'; -import { useTranslation } from '../../../contexts/TranslationContext'; -import { useRecordList } from '../../../hooks/lists/useRecordList'; -import { AsyncStatePhase } from '../../../hooks/useAsyncState'; -import { useForm } from '../../../hooks/useForm'; -import UserAutoComplete from '../../UserAutoComplete'; -import { useDepartmentsList } from '../hooks/useDepartmentsList'; -import ModalSeparator from './ModalSeparator'; - -const ForwardChatModal = ({ onForward, onCancel, room, ...props }) => { - const t = useTranslation(); - - const inputRef = useAutoFocus(true); - - const { values, handlers } = useForm({ - username: '', - comment: '', - department: {}, - }); - const { username, comment, department } = values; - const [userId, setUserId] = useState(''); - - const { handleUsername, handleComment, handleDepartment } = handlers; - const getUserData = useEndpoint('GET', `users.info?username=${username}`); - - const [departmentsFilter, setDepartmentsFilter] = useState(''); - - const debouncedDepartmentsFilter = useDebouncedValue(departmentsFilter, 500); - - const { itemsList: departmentsList, loadMoreItems: loadMoreDepartments } = useDepartmentsList( - useMemo(() => ({ filter: debouncedDepartmentsFilter, enabled: true }), [debouncedDepartmentsFilter]), - ); - - const { phase: departmentsPhase, items: departmentsItems, itemCount: departmentsTotal } = useRecordList(departmentsList); - - const handleSend = useMutableCallback(() => { - onForward(department?.value, userId, comment); - }, [onForward, department.value, userId, comment]); - - const onChangeUsername = useMutableCallback((username) => { - handleUsername(username); - }); - - useEffect(() => { - if (!username) { - return; - } - const fetchData = async () => { - const { user } = await getUserData(); - setUserId(user._id); - }; - fetchData(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [username]); - - const canForward = department || username; - - const departments = departmentsItems; - - const hasDepartments = departments && departments.length > 0; - - const { servedBy: { _id: agentId } = {} } = room || {}; - - const _id = agentId && { $ne: agentId }; - - const conditions = { _id, status: { $ne: 'offline' }, statusLivechat: 'available' }; - - return ( - - - - {t('Forward_chat')} - - - - - {t('Forward_to_department')} - - {} - : (start) => loadMoreDepartments(start, Math.min(50, departmentsTotal)) - } - /> - - - - - {t('Forward_to_user')} - - - - - - - {t('Leave_a_comment')}{' '} - - ({t('Optional')}) - - - - - - - - - - - - - - - ); -}; - -export default ForwardChatModal; diff --git a/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx b/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx new file mode 100644 index 000000000000..1697b0b4c31c --- /dev/null +++ b/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx @@ -0,0 +1,146 @@ +import { IOmnichannelRoom } from '@rocket.chat/core-typings'; +import { Field, Button, TextAreaInput, Icon, ButtonGroup, Modal, Box, PaginatedSelectFiltered } from '@rocket.chat/fuselage'; +import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; +import React, { ReactElement, useCallback, useEffect, useMemo, useState } from 'react'; +import { useForm } from 'react-hook-form'; + +import { useEndpoint } from '../../../contexts/ServerContext'; +import { useTranslation } from '../../../contexts/TranslationContext'; +import { useRecordList } from '../../../hooks/lists/useRecordList'; +import { AsyncStatePhase } from '../../../hooks/useAsyncState'; +import UserAutoComplete from '../../UserAutoComplete'; +import { useDepartmentsList } from '../hooks/useDepartmentsList'; +import ModalSeparator from './ModalSeparator'; + +const ForwardChatModal = ({ + onForward, + onCancel, + room, + ...props +}: { + onForward: (departmentId?: string, userId?: string, comment?: string) => Promise; + onCancel: () => void; + room: IOmnichannelRoom; +}): ReactElement => { + const t = useTranslation(); + const getUserData = useEndpoint('GET', 'users.info'); + + const { getValues, handleSubmit, register, setFocus, setValue, watch } = useForm(); + + useEffect(() => { + setFocus('comment'); + }, [setFocus]); + + const department = watch('department'); + const username = watch('username'); + + const [departmentsFilter, setDepartmentsFilter] = useState(''); + const debouncedDepartmentsFilter = useDebouncedValue(departmentsFilter, 500); + + const { itemsList: departmentsList, loadMoreItems: loadMoreDepartments } = useDepartmentsList( + useMemo(() => ({ filter: debouncedDepartmentsFilter as string, enabled: true }), [debouncedDepartmentsFilter]), + ); + const { phase: departmentsPhase, items: departments, itemCount: departmentsTotal } = useRecordList(departmentsList); + const hasDepartments = useMemo(() => departments && departments.length > 0, [departments]); + + const _id = { $ne: room.servedBy?._id }; + const conditions = { _id, status: { $ne: 'offline' }, statusLivechat: 'available' }; + + const endReached = useCallback( + (start) => { + if (departmentsPhase === AsyncStatePhase.LOADING) { + loadMoreDepartments(start, Math.min(50, departmentsTotal)); + } + }, + [departmentsPhase, departmentsTotal, loadMoreDepartments], + ); + + const onSubmit = useCallback( + async ({ department: departmentId, username, comment }) => { + let uid; + + if (username) { + const { user } = await getUserData({ userName: username }); + uid = user?._id; + } + + onForward(departmentId, uid, comment); + }, + [getUserData, onForward], + ); + + useEffect(() => { + register('department'); + register('username'); + }, [register]); + + return ( + + + + {t('Forward_chat')} + + + + + {t('Forward_to_department')} + + { + // TODO: Definitions on fuselage are incorrect, need to be fixed! + // @ts-ignore-next-line + ({ value: _id, label: name }))} + maxWidth='100%' + placeholder={t('Select_an_option')} + onChange={(value: string): void => { + setValue('department', value); + }} + flexGrow={1} + endReached={endReached} + /> + } + + + + + {t('Forward_to_user')} + + { + setValue('username', value); + }} + value={getValues().username} + /> + + + + + {t('Leave_a_comment')}{' '} + + ({t('Optional')}) + + + + + + + + + + + + + + + ); +}; + +export default ForwardChatModal; diff --git a/apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx b/apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx index 3f892c7aeeb5..640c45749c15 100644 --- a/apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx +++ b/apps/meteor/client/views/omnichannel/currentChats/FilterByText.tsx @@ -71,7 +71,7 @@ const FilterByText: FilterByTextType = ({ setFilter, reload, ...props }) => { const { useCurrentChatTags = (): void => undefined } = forms; - const Tags = useCurrentChatTags(); + const EETagsComponent = useCurrentChatTags(); const onSubmit = useMutableCallback((e) => e.preventDefault()); const reducer = function (acc: any, curr: string): any { @@ -151,11 +151,11 @@ const FilterByText: FilterByTextType = ({ setFilter, reload, ...props }) => { - {Tags && ( + {EETagsComponent && ( - + )} diff --git a/apps/meteor/client/views/omnichannel/directory/chats/contextualBar/RoomEdit.js b/apps/meteor/client/views/omnichannel/directory/chats/contextualBar/RoomEdit.js index a39afc72d41a..42fac968ef38 100644 --- a/apps/meteor/client/views/omnichannel/directory/chats/contextualBar/RoomEdit.js +++ b/apps/meteor/client/views/omnichannel/directory/chats/contextualBar/RoomEdit.js @@ -143,11 +143,9 @@ function RoomEdit({ room, visitor, reload, reloadInfo, close }) { - {Tags && ( - - - - )} + + + {PrioritiesSelect && priorities && priorities.length > 0 && ( )} diff --git a/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/hooks/useQuickActions.tsx b/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/hooks/useQuickActions.tsx index 5001355f6d17..c89c24a23d09 100644 --- a/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/hooks/useQuickActions.tsx +++ b/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/hooks/useQuickActions.tsx @@ -178,7 +178,7 @@ export const useQuickActions = ( const closeChat = useMethod('livechat:closeRoom'); const handleClose = useCallback( - async (comment: string, tags: string[]) => { + async (comment?: string, tags?: string[]) => { try { await closeChat(rid, comment, { clientAction: true, tags }); closeModal(); diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index dfc300434eca..977c1a4fdfa4 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -3334,6 +3334,7 @@ "Opened": "Opened", "Opened_in_a_new_window": "Opened in a new window.", "Opens_a_channel_group_or_direct_message": "Opens a channel, group or direct message", + "Optional": "Optional", "optional": "optional", "Options": "Options", "or": "or", diff --git a/packages/rest-typings/src/v1/omnichannel.ts b/packages/rest-typings/src/v1/omnichannel.ts index 1f5757eca9a7..44bbfe86064f 100644 --- a/packages/rest-typings/src/v1/omnichannel.ts +++ b/packages/rest-typings/src/v1/omnichannel.ts @@ -2,6 +2,7 @@ import type { IOmnichannelCannedResponse, ILivechatAgent, ILivechatDepartment, + ILivechatDepartmentRecord, ILivechatDepartmentAgents, ILivechatMonitor, ILivechatTag, @@ -67,12 +68,12 @@ export type OmnichannelEndpoints = { }; 'livechat/department/:_id': { GET: (params: { onlyMyDepartments?: booleanString; includeAgents?: booleanString }) => { - department: ILivechatDepartment | null; - agents?: any[]; + department: ILivechatDepartmentRecord | null; + agents?: ILivechatDepartmentAgents[]; }; PUT: (params: { department: Partial[]; agents: any[] }) => { department: ILivechatDepartment; - agents: any[]; + agents: ILivechatDepartmentAgents[]; }; DELETE: () => void; }; From 9578e15300465ff6f1074088b3b35366c567bb89 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 4 May 2022 15:06:33 -0300 Subject: [PATCH 019/145] Chore: fix lint --- .../rest-typings/src/v1/customUserStatus.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/rest-typings/src/v1/customUserStatus.ts b/packages/rest-typings/src/v1/customUserStatus.ts index 5157489c618c..df915bc1a36e 100644 --- a/packages/rest-typings/src/v1/customUserStatus.ts +++ b/packages/rest-typings/src/v1/customUserStatus.ts @@ -1,14 +1,14 @@ -import type { PaginatedRequest } from "../helpers/PaginatedRequest"; -import type { PaginatedResult } from "../helpers/PaginatedResult"; +import type { PaginatedRequest } from '../helpers/PaginatedRequest'; +import type { PaginatedResult } from '../helpers/PaginatedResult'; export type CustomUserStatusEndpoints = { - "custom-user-status.list": { - GET: (params: PaginatedRequest<{ query: string }>) => PaginatedResult<{ - statuses: { - _id: string; - name: string; - statusType: string; - }[]; - }>; - }; + 'custom-user-status.list': { + GET: (params: PaginatedRequest<{ query: string }>) => PaginatedResult<{ + statuses: { + _id: string; + name: string; + statusType: string; + }[]; + }>; + }; }; From 2b8600aa6c2c8ca22b84ed25a15adf3dc7242024 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Thu, 5 May 2022 10:06:25 -0300 Subject: [PATCH 020/145] Chore: Update Volta configuration (#25394) --- apps/meteor/ee/server/services/package.json | 3 +-- apps/meteor/package.json | 3 +-- package.json | 4 ++++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index fcdb6b922e1c..c7ae743a6379 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -69,7 +69,6 @@ "typescript": "~4.3.5" }, "volta": { - "node": "14.18.2", - "npm": "6.14.15" + "extends": "../../package.json" } } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index e99dfc4cb0ac..20b5f5fe342b 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -366,8 +366,7 @@ "Firefox ESR" ], "volta": { - "node": "14.18.2", - "npm": "6.14.15" + "extends": "../../package.json" }, "nyc": { "include": [ diff --git a/package.json b/package.json index e6fda90cb389..fd8ce8659629 100644 --- a/package.json +++ b/package.json @@ -49,5 +49,9 @@ "apps/meteor/.docker/Dockerfile.rhel", "apps/meteor/app/utils/rocketchat.info" ] + }, + "volta": { + "node": "14.18.3", + "yarn": "1.22.18" } } From 25274fe5c117a1a2edbb47cef24d908dd949080d Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Thu, 5 May 2022 11:37:47 -0300 Subject: [PATCH 021/145] Chore: Add client folder to CODEOWNERS (#25397) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cc271aee793a..602b838539fc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -5,3 +5,4 @@ /.vscode/ @RocketChat/chat-engine /.github/ @RocketChat/chat-engine /_templates/ @RocketChat/chat-engine +/apps/meteor/client/ @RocketChat/frontend From 5f2efe69ea8296363953276c1b2eebe638704460 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 5 May 2022 13:12:52 -0300 Subject: [PATCH 022/145] Chore: Convert push endpoints to TS (#25347) --- .../app/api/server/v1/{push.js => push.ts} | 27 +++-- ...ushNotification.js => PushNotification.ts} | 106 ++++++++++++------ .../src/IPushNotificationConfig.ts | 18 +++ packages/core-typings/src/IPushToken.ts | 12 ++ packages/core-typings/src/index.ts | 2 + packages/rest-typings/src/index.ts | 2 + packages/rest-typings/src/v1/push.ts | 16 +++ 7 files changed, 136 insertions(+), 47 deletions(-) rename apps/meteor/app/api/server/v1/{push.js => push.ts} (82%) rename apps/meteor/app/push-notifications/server/lib/{PushNotification.js => PushNotification.ts} (56%) create mode 100644 packages/core-typings/src/IPushNotificationConfig.ts create mode 100644 packages/core-typings/src/IPushToken.ts create mode 100644 packages/rest-typings/src/v1/push.ts diff --git a/apps/meteor/app/api/server/v1/push.js b/apps/meteor/app/api/server/v1/push.ts similarity index 82% rename from apps/meteor/app/api/server/v1/push.js rename to apps/meteor/app/api/server/v1/push.ts index 293fd96c5811..1dc649cb5adf 100644 --- a/apps/meteor/app/api/server/v1/push.js +++ b/apps/meteor/app/api/server/v1/push.ts @@ -6,22 +6,22 @@ import { appTokensCollection } from '../../../push/server'; import { API } from '../api'; import PushNotification from '../../../push-notifications/server/lib/PushNotification'; import { canAccessRoom } from '../../../authorization/server/functions/canAccessRoom'; -import { Users, Messages, Rooms } from '../../../models/server'; +import { Users, Rooms } from '../../../models/server'; +import { Messages } from '../../../models/server/raw'; API.v1.addRoute( 'push.token', { authRequired: true }, { post() { - const { type, value, appName } = this.bodyParams; - let { id } = this.bodyParams; + const { id, type, value, appName } = this.bodyParams; if (id && typeof id !== 'string') { throw new Meteor.Error('error-id-param-not-valid', 'The required "id" body param is invalid.'); - } else { - id = Random.id(); } + const deviceId = id || Random.id(); + if (!type || (type !== 'apn' && type !== 'gcm')) { throw new Meteor.Error('error-type-param-not-valid', 'The required "type" body param is missing or invalid.'); } @@ -34,15 +34,14 @@ API.v1.addRoute( throw new Meteor.Error('error-appName-param-not-valid', 'The required "appName" body param is missing or invalid.'); } - let result; - Meteor.runAsUser(this.userId, () => { - result = Meteor.call('raix:push-update', { - id, + const result = Meteor.runAsUser(this.userId, () => + Meteor.call('raix:push-update', { + id: deviceId, token: { [type]: value }, appName, userId: this.userId, - }); - }); + }), + ); return API.v1.success({ result }); }, @@ -78,7 +77,7 @@ API.v1.addRoute( 'push.get', { authRequired: true }, { - get() { + async get() { const params = this.requestParams(); check( params, @@ -92,7 +91,7 @@ API.v1.addRoute( throw new Error('error-user-not-found'); } - const message = Messages.findOneById(params.id); + const message = await Messages.findOneById(params.id); if (!message) { throw new Error('error-message-not-found'); } @@ -106,7 +105,7 @@ API.v1.addRoute( throw new Error('error-not-allowed'); } - const data = PushNotification.getNotificationForMessageId({ receiver, room, message }); + const data = await PushNotification.getNotificationForMessageId({ receiver, room, message }); return API.v1.success({ data }); }, diff --git a/apps/meteor/app/push-notifications/server/lib/PushNotification.js b/apps/meteor/app/push-notifications/server/lib/PushNotification.ts similarity index 56% rename from apps/meteor/app/push-notifications/server/lib/PushNotification.js rename to apps/meteor/app/push-notifications/server/lib/PushNotification.ts index c19bba2a31df..50752d7b1d77 100644 --- a/apps/meteor/app/push-notifications/server/lib/PushNotification.js +++ b/apps/meteor/app/push-notifications/server/lib/PushNotification.ts @@ -1,4 +1,5 @@ import { Meteor } from 'meteor/meteor'; +import { IMessage, IPushNotificationConfig, IRoom, IUser } from '@rocket.chat/core-typings'; import { Push } from '../../../push/server'; import { settings } from '../../../settings/server'; @@ -9,19 +10,62 @@ import { replaceMentionedUsernamesWithFullNames, parseMessageTextPerUser } from import { callbacks } from '../../../../lib/callbacks'; import { getPushData } from '../../../lib/server/functions/notifications/mobile'; +type PushNotificationData = { + rid: string; + uid: string; + mid: string; + roomName: string; + username: string; + message: string; + payload: Record; + badge: number; + category: string; +}; + +type GetNotificationConfigParam = PushNotificationData & { + idOnly: boolean; +}; + +type NotificationPayload = { + message: IMessage; + notification: IPushNotificationConfig; +}; + +function hash(str: string): number { + let hash = 0; + let i = str.length; + + while (i) { + hash = (hash << 5) - hash + str.charCodeAt(--i); + hash &= hash; // Convert to 32bit integer + } + return hash; +} + export class PushNotification { - getNotificationId(roomId) { + getNotificationId(roomId: string): number { const serverId = settings.get('uniqueID'); - return this.hash(`${serverId}|${roomId}`); // hash + return hash(`${serverId}|${roomId}`); // hash } - getNotificationConfig({ rid, uid: userId, mid: messageId, roomName, username, message, payload, badge = 1, category, idOnly = false }) { + private getNotificationConfig({ + rid, + uid: userId, + mid: messageId, + roomName, + username, + message, + payload, + badge = 1, + category, + idOnly = false, + }: GetNotificationConfigParam): IPushNotificationConfig { const title = idOnly ? '' : roomName || username; // message is being redacted already by 'getPushData' if idOnly is true const text = !idOnly && roomName !== '' ? `${username}: ${message}` : message; - const config = { + const config: IPushNotificationConfig = { from: 'push', badge, sound: 'default', @@ -32,7 +76,7 @@ export class PushNotification { host: Meteor.absoluteUrl(), messageId, notificationType: idOnly ? 'message-id-only' : 'message', - ...(idOnly || { rid, ...payload }), + ...(!idOnly && { rid, ...payload }), }, userId, notId: this.getNotificationId(rid), @@ -51,19 +95,8 @@ export class PushNotification { return config; } - hash(str) { - let hash = 0; - let i = str.length; - - while (i) { - hash = (hash << 5) - hash + str.charCodeAt(--i); - hash &= hash; // Convert to 32bit integer - } - return hash; - } - - send({ rid, uid, mid, roomName, username, message, payload, badge = 1, category }) { - const idOnly = settings.get('Push_request_content_from_server'); + send({ rid, uid, mid, roomName, username, message, payload, badge = 1, category }: PushNotificationData): void { + const idOnly = settings.get('Push_request_content_from_server'); const config = this.getNotificationConfig({ rid, uid, @@ -77,34 +110,41 @@ export class PushNotification { idOnly, }); + // eslint-disable-next-line @typescript-eslint/camelcase metrics.notificationsSent.inc({ notification_type: 'mobile' }); - return Push.send(config); + Push.send(config); } - getNotificationForMessageId({ receiver, message, room }) { + async getNotificationForMessageId({ + receiver, + message, + room, + }: { + receiver: IUser; + message: IMessage; + room: IRoom; + }): Promise { const sender = Users.findOne(message.u._id, { fields: { username: 1, name: 1 } }); if (!sender) { throw new Error('Message sender not found'); } let notificationMessage = callbacks.run('beforeSendMessageNotifications', message.msg); - if (message.mentions?.length > 0 && settings.get('UI_Use_Real_Name')) { + if (message.mentions && Object.keys(message.mentions).length > 0 && settings.get('UI_Use_Real_Name')) { notificationMessage = replaceMentionedUsernamesWithFullNames(message.msg, message.mentions); } notificationMessage = parseMessageTextPerUser(notificationMessage, message, receiver); - const pushData = Promise.await( - getPushData({ - room, - message, - userId: receiver._id, - receiver, - senderUsername: sender.username, - senderName: sender.name, - notificationMessage, - shouldOmitMessage: false, - }), - ); + const pushData = await getPushData({ + room, + message, + userId: receiver._id, + receiver, + senderUsername: sender.username, + senderName: sender.name, + notificationMessage, + shouldOmitMessage: false, + }); return { message, diff --git a/packages/core-typings/src/IPushNotificationConfig.ts b/packages/core-typings/src/IPushNotificationConfig.ts new file mode 100644 index 000000000000..6ac8c9de2249 --- /dev/null +++ b/packages/core-typings/src/IPushNotificationConfig.ts @@ -0,0 +1,18 @@ +export interface IPushNotificationConfig { + from: string; + badge: number; + sound: string; + priority: number; + title: string; + text: string; + payload: Record; + userId: string; + notId: number; + gcm: { + style: string; + image: string; + }; + apn?: { + category: string; + }; +} diff --git a/packages/core-typings/src/IPushToken.ts b/packages/core-typings/src/IPushToken.ts new file mode 100644 index 000000000000..bc8888397afe --- /dev/null +++ b/packages/core-typings/src/IPushToken.ts @@ -0,0 +1,12 @@ +import type { IRocketChatRecord } from './IRocketChatRecord'; + +export type IPushTokenTypes = 'gcm' | 'apn'; + +export interface IPushToken extends IRocketChatRecord { + token: Record; + appName: string; + userId: string; + enabled: boolean; + createdAt: Date; + updatedAt: Date; +} diff --git a/packages/core-typings/src/index.ts b/packages/core-typings/src/index.ts index 49b170713d4c..1c10dc427118 100644 --- a/packages/core-typings/src/index.ts +++ b/packages/core-typings/src/index.ts @@ -24,6 +24,8 @@ export * from './ICustomSound'; export * from './ICloud'; export * from './IServerEvent'; export * from './ICronJobs'; +export * from './IPushToken'; +export * from './IPushNotificationConfig'; export * from './IUserDataFile'; export * from './IUserSession'; diff --git a/packages/rest-typings/src/index.ts b/packages/rest-typings/src/index.ts index d123606ed2cb..e976ee208337 100644 --- a/packages/rest-typings/src/index.ts +++ b/packages/rest-typings/src/index.ts @@ -22,6 +22,7 @@ import type { LicensesEndpoints } from './v1/licenses'; import type { MiscEndpoints } from './v1/misc'; import type { OmnichannelEndpoints } from './v1/omnichannel'; import type { PermissionsEndpoints } from './v1/permissions'; +import type { PushEndpoints } from './v1/push'; import type { RolesEndpoints } from './v1/roles'; import type { RoomsEndpoints } from './v1/rooms'; import type { SettingsEndpoints } from './v1/settings'; @@ -47,6 +48,7 @@ export interface Endpoints ImEndpoints, LDAPEndpoints, RoomsEndpoints, + PushEndpoints, RolesEndpoints, TeamsEndpoints, SettingsEndpoints, diff --git a/packages/rest-typings/src/v1/push.ts b/packages/rest-typings/src/v1/push.ts new file mode 100644 index 000000000000..d0b07c6afbca --- /dev/null +++ b/packages/rest-typings/src/v1/push.ts @@ -0,0 +1,16 @@ +import type { IMessage, IPushNotificationConfig, IPushTokenTypes, IPushToken } from '@rocket.chat/core-typings'; + +export type PushEndpoints = { + 'push.token': { + POST: (payload: { id?: string; type: IPushTokenTypes; value: string; appName: string }) => { result: IPushToken }; + DELETE: (payload: { token: string }) => void; + }; + 'push.get': { + GET: (params: { id: string }) => { + data: { + message: IMessage; + notification: IPushNotificationConfig; + }; + }; + }; +}; From c1ccd0ef95f3afdabfb0fffa83a3b2367dfaf819 Mon Sep 17 00:00:00 2001 From: Jean Brito Date: Thu, 5 May 2022 17:47:27 -0300 Subject: [PATCH 023/145] Chore: Convert AdminSideBar to ts (#25372) Co-authored-by: Guilherme Gazzo --- apps/meteor/app/ui-utils/client/lib/SideNav.ts | 2 +- .../sidebar/{AdminSidebar.js => AdminSidebar.tsx} | 13 +++++++------ .../client/views/omnichannel/components/Field.js | 6 ------ .../client/views/omnichannel/components/Field.tsx | 6 ++++++ .../client/views/omnichannel/components/Label.js | 6 ------ .../client/views/omnichannel/components/Label.tsx | 6 ++++++ 6 files changed, 20 insertions(+), 19 deletions(-) rename apps/meteor/client/views/admin/sidebar/{AdminSidebar.js => AdminSidebar.tsx} (80%) delete mode 100644 apps/meteor/client/views/omnichannel/components/Field.js create mode 100644 apps/meteor/client/views/omnichannel/components/Field.tsx delete mode 100644 apps/meteor/client/views/omnichannel/components/Label.js create mode 100644 apps/meteor/client/views/omnichannel/components/Label.tsx diff --git a/apps/meteor/app/ui-utils/client/lib/SideNav.ts b/apps/meteor/app/ui-utils/client/lib/SideNav.ts index 5d3a6801fce6..94bcc6f4b179 100644 --- a/apps/meteor/app/ui-utils/client/lib/SideNav.ts +++ b/apps/meteor/app/ui-utils/client/lib/SideNav.ts @@ -27,7 +27,7 @@ export const SideNav = new (class extends Emitter<{ private flexNav: JQuery; - toggleFlex(status: 1 | -1, callback: () => void): void { + toggleFlex(status: 1 | -1, callback?: () => void): void { if (this.animating === true) { return; } diff --git a/apps/meteor/client/views/admin/sidebar/AdminSidebar.js b/apps/meteor/client/views/admin/sidebar/AdminSidebar.tsx similarity index 80% rename from apps/meteor/client/views/admin/sidebar/AdminSidebar.js rename to apps/meteor/client/views/admin/sidebar/AdminSidebar.tsx index 8d5e9a229696..5b36ccb36fdb 100644 --- a/apps/meteor/client/views/admin/sidebar/AdminSidebar.js +++ b/apps/meteor/client/views/admin/sidebar/AdminSidebar.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useMemo, useEffect, memo } from 'react'; +import React, { useCallback, useMemo, useEffect, memo, FC } from 'react'; import { menu, SideNav } from '../../../../app/ui-utils/client'; import PlanTag from '../../../components/PlanTag'; @@ -11,7 +11,7 @@ import SettingsProvider from '../../../providers/SettingsProvider'; import AdminSidebarPages from './AdminSidebarPages'; import AdminSidebarSettings from './AdminSidebarSettings'; -function AdminSidebar() { +const AdminSidebar: FC = () => { const t = useTranslation(); const canViewSettings = useAtLeastOnePermission( @@ -28,7 +28,8 @@ function AdminSidebar() { }, []); const currentRoute = useCurrentRoute(); - const currentPath = useRoutePath(...currentRoute); + const [currentRouteName, currentRouteParams, currentQueryStringParams] = currentRoute; + const currentPath = useRoutePath(currentRouteName || '', currentRouteParams, currentQueryStringParams); const [, , , currentRouteGroupName] = currentRoute; useEffect(() => { @@ -50,12 +51,12 @@ function AdminSidebar() { } /> - - {canViewSettings && } + + {canViewSettings && } ); -} +}; export default memo(AdminSidebar); diff --git a/apps/meteor/client/views/omnichannel/components/Field.js b/apps/meteor/client/views/omnichannel/components/Field.js deleted file mode 100644 index d45043ae5e67..000000000000 --- a/apps/meteor/client/views/omnichannel/components/Field.js +++ /dev/null @@ -1,6 +0,0 @@ -import { Box } from '@rocket.chat/fuselage'; -import React from 'react'; - -const Field = ({ children }) => {children}; - -export default Field; diff --git a/apps/meteor/client/views/omnichannel/components/Field.tsx b/apps/meteor/client/views/omnichannel/components/Field.tsx new file mode 100644 index 000000000000..64651ba24054 --- /dev/null +++ b/apps/meteor/client/views/omnichannel/components/Field.tsx @@ -0,0 +1,6 @@ +import { Box } from '@rocket.chat/fuselage'; +import React, { FC } from 'react'; + +const Field: FC = ({ children }) => {children}; + +export default Field; diff --git a/apps/meteor/client/views/omnichannel/components/Label.js b/apps/meteor/client/views/omnichannel/components/Label.js deleted file mode 100644 index 2cb387f697f8..000000000000 --- a/apps/meteor/client/views/omnichannel/components/Label.js +++ /dev/null @@ -1,6 +0,0 @@ -import { Box } from '@rocket.chat/fuselage'; -import React from 'react'; - -const Label = (props) => ; - -export default Label; diff --git a/apps/meteor/client/views/omnichannel/components/Label.tsx b/apps/meteor/client/views/omnichannel/components/Label.tsx new file mode 100644 index 000000000000..63c9f71b0e2d --- /dev/null +++ b/apps/meteor/client/views/omnichannel/components/Label.tsx @@ -0,0 +1,6 @@ +import { Box } from '@rocket.chat/fuselage'; +import React, { ComponentProps, FC } from 'react'; + +const Label: FC> = (props) => ; + +export default Label; From 573e6d46d25611c74018181fa52fb926d239b155 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Fri, 6 May 2022 10:13:45 -0300 Subject: [PATCH 024/145] Chore: Rewrite Jitsi Contextualbar to TS (#25303) --- apps/meteor/app/videobridge/client/tabBar.tsx | 6 +- .../client/contexts/ServerContext/methods.ts | 2 + .../ServerContext/methods/joinRoom.ts | 3 + .../room/contextualBar/Apps/AppsWithData.tsx | 6 +- .../Call/Jitsi/components/CallModal.js | 31 -------- .../{Call => VideoConference}/BBB/CallBBB.tsx | 0 .../{Call => VideoConference}/BBB/D.tsx | 0 .../{Call => VideoConference}/BBB/index.ts | 0 .../Jitsi/CallJitsi.stories.tsx | 3 - .../Jitsi/CallJitsi.tsx} | 12 ++- .../Jitsi/CallJitsiWithData.tsx} | 76 +++++++++++-------- .../{Call => VideoConference}/Jitsi/index.ts | 0 .../Jitsi/lib/Jitsi.js | 0 .../Jitsi/lib/JitsiBridge.js | 0 .../views/room/lib/Toolbox/ToolboxContext.tsx | 4 +- .../views/room/providers/ToolboxProvider.tsx | 4 +- 16 files changed, 71 insertions(+), 76 deletions(-) create mode 100644 apps/meteor/client/contexts/ServerContext/methods/joinRoom.ts delete mode 100644 apps/meteor/client/views/room/contextualBar/Call/Jitsi/components/CallModal.js rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/BBB/CallBBB.tsx (100%) rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/BBB/D.tsx (100%) rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/BBB/index.ts (100%) rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/Jitsi/CallJitsi.stories.tsx (81%) rename apps/meteor/client/views/room/contextualBar/{Call/Jitsi/CallJitsi.js => VideoConference/Jitsi/CallJitsi.tsx} (73%) rename apps/meteor/client/views/room/contextualBar/{Call/Jitsi/CallJitsiWithData.js => VideoConference/Jitsi/CallJitsiWithData.tsx} (74%) rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/Jitsi/index.ts (100%) rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/Jitsi/lib/Jitsi.js (100%) rename apps/meteor/client/views/room/contextualBar/{Call => VideoConference}/Jitsi/lib/JitsiBridge.js (100%) diff --git a/apps/meteor/app/videobridge/client/tabBar.tsx b/apps/meteor/app/videobridge/client/tabBar.tsx index 0544d2da17d7..c3470599243b 100644 --- a/apps/meteor/app/videobridge/client/tabBar.tsx +++ b/apps/meteor/app/videobridge/client/tabBar.tsx @@ -8,8 +8,6 @@ import { useTranslation } from '../../../client/contexts/TranslationContext'; import { useUser } from '../../../client/contexts/UserContext'; import Header from '../../../client/components/Header'; -const templateBBB = lazy(() => import('../../../client/views/room/contextualBar/Call/BBB')); - addAction('bbb_video', ({ room }) => { const enabled = useSetting('bigbluebutton_Enabled'); const t = useTranslation(); @@ -30,6 +28,8 @@ addAction('bbb_video', ({ room }) => { const username = user ? user.username : ''; const enableOption = enabled && (!username || !room.muted?.includes(username)); + const templateBBB = lazy(() => import('../../../client/views/room/contextualBar/VideoConference/BBB')); + return useMemo( () => enableOption @@ -62,7 +62,7 @@ addAction('bbb_video', ({ room }) => { ); }); -const templateJitsi = lazy(() => import('../../../client/views/room/contextualBar/Call/Jitsi')); +const templateJitsi = lazy(() => import('../../../client/views/room/contextualBar/VideoConference/Jitsi')); addAction('video', ({ room }) => { const enabled = useSetting('Jitsi_Enabled'); diff --git a/apps/meteor/client/contexts/ServerContext/methods.ts b/apps/meteor/client/contexts/ServerContext/methods.ts index d61521ea87e9..5391f1878e2b 100644 --- a/apps/meteor/client/contexts/ServerContext/methods.ts +++ b/apps/meteor/client/contexts/ServerContext/methods.ts @@ -6,6 +6,7 @@ import { AsyncStatePhase } from '../../lib/asyncState'; import { AddWebdavAccountMethod } from './methods/addWebdavAccount'; import { FollowMessageMethod } from './methods/followMessage'; import { GetReadReceiptsMethod } from './methods/getReadReceipts'; +import { JoinRoomMethod } from './methods/joinRoom'; import { UnsubscribeMethod as MailerUnsubscribeMethod } from './methods/mailer/unsubscribe'; import { RoomNameExistsMethod } from './methods/roomNameExists'; import { SaveRoomSettingsMethod } from './methods/saveRoomSettings'; @@ -80,6 +81,7 @@ export type ServerMethods = { 'instances/get': (...args: any[]) => any; 'jitsi:generateAccessToken': (...args: any[]) => any; 'jitsi:updateTimeout': (...args: any[]) => any; + 'joinRoom': JoinRoomMethod; 'leaveRoom': (...args: any[]) => any; 'license:getModules': () => string[]; 'license:getTags': () => ILicenseTag[]; diff --git a/apps/meteor/client/contexts/ServerContext/methods/joinRoom.ts b/apps/meteor/client/contexts/ServerContext/methods/joinRoom.ts new file mode 100644 index 000000000000..1823e0b76260 --- /dev/null +++ b/apps/meteor/client/contexts/ServerContext/methods/joinRoom.ts @@ -0,0 +1,3 @@ +import type { IRoom } from '@rocket.chat/core-typings'; + +export type JoinRoomMethod = (rid: IRoom['_id'], code?: unknown) => void; diff --git a/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx b/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx index e43ad7326ca7..d6dcdb354374 100644 --- a/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx +++ b/apps/meteor/client/views/room/contextualBar/Apps/AppsWithData.tsx @@ -166,7 +166,7 @@ const AppsWithData = ({ const handleSubmit = useMutableCallback((e) => { prevent(e); - closeTabBar(e); + closeTabBar(); triggerSubmitView({ viewId, appId, @@ -182,7 +182,7 @@ const AppsWithData = ({ const handleCancel = useMutableCallback((e) => { prevent(e); - closeTabBar(e); + closeTabBar(); return triggerCancel({ appId, viewId, @@ -196,7 +196,7 @@ const AppsWithData = ({ const handleClose = useMutableCallback((e) => { prevent(e); - closeTabBar(e); + closeTabBar(); return triggerCancel({ appId, viewId, diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/components/CallModal.js b/apps/meteor/client/views/room/contextualBar/Call/Jitsi/components/CallModal.js deleted file mode 100644 index 07546dd0c7a7..000000000000 --- a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/components/CallModal.js +++ /dev/null @@ -1,31 +0,0 @@ -import { Box, Button, ButtonGroup, Icon, Modal } from '@rocket.chat/fuselage'; -import React from 'react'; - -import { useTranslation } from '../../../../../../contexts/TranslationContext'; - -export const CallModal = ({ handleYes, handleCancel }) => { - const t = useTranslation(); - - return ( - - - {t('Video_Conference')} - - - - - {t('Start_video_call')} - - - - - - - - - ); -}; - -export default CallModal; diff --git a/apps/meteor/client/views/room/contextualBar/Call/BBB/CallBBB.tsx b/apps/meteor/client/views/room/contextualBar/VideoConference/BBB/CallBBB.tsx similarity index 100% rename from apps/meteor/client/views/room/contextualBar/Call/BBB/CallBBB.tsx rename to apps/meteor/client/views/room/contextualBar/VideoConference/BBB/CallBBB.tsx diff --git a/apps/meteor/client/views/room/contextualBar/Call/BBB/D.tsx b/apps/meteor/client/views/room/contextualBar/VideoConference/BBB/D.tsx similarity index 100% rename from apps/meteor/client/views/room/contextualBar/Call/BBB/D.tsx rename to apps/meteor/client/views/room/contextualBar/VideoConference/BBB/D.tsx diff --git a/apps/meteor/client/views/room/contextualBar/Call/BBB/index.ts b/apps/meteor/client/views/room/contextualBar/VideoConference/BBB/index.ts similarity index 100% rename from apps/meteor/client/views/room/contextualBar/Call/BBB/index.ts rename to apps/meteor/client/views/room/contextualBar/VideoConference/BBB/index.ts diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsi.stories.tsx b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsi.stories.tsx similarity index 81% rename from apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsi.stories.tsx rename to apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsi.stories.tsx index 5d15deb7deb0..6c433788cf60 100644 --- a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsi.stories.tsx +++ b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsi.stories.tsx @@ -3,7 +3,6 @@ import React from 'react'; import VerticalBar from '../../../../../components/VerticalBar'; import CallJitsi from './CallJitsi'; -import CallModal from './components/CallModal'; export default { title: 'Room/Contextual Bar/CallJitsi', @@ -19,5 +18,3 @@ Default.storyName = 'CallJitsi'; Default.args = { openNewWindow: true, }; - -export const Modal: ComponentStory = (args) => ; diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsi.js b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsi.tsx similarity index 73% rename from apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsi.js rename to apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsi.tsx index 3afe89f0da05..c73906d689b9 100644 --- a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsi.js +++ b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsi.tsx @@ -1,10 +1,18 @@ +import { ISetting } from '@rocket.chat/core-typings'; import { Box } from '@rocket.chat/fuselage'; -import React from 'react'; +import React, { ReactElement, ReactNode, RefObject } from 'react'; import VerticalBar from '../../../../../components/VerticalBar'; import { useTranslation } from '../../../../../contexts/TranslationContext'; -const CallJitsi = ({ handleClose, openNewWindow, refContent, children }) => { +type CallJitsiProps = { + handleClose: () => void; + openNewWindow: ISetting['value']; + refContent: RefObject; + children: ReactNode; +}; + +const CallJitsi = ({ handleClose, openNewWindow, refContent, children }: CallJitsiProps): ReactElement => { const t = useTranslation(); const content = openNewWindow ? ( diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsiWithData.js b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsiWithData.tsx similarity index 74% rename from apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsiWithData.js rename to apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsiWithData.tsx index b8a106f081ea..494fd6ffd749 100644 --- a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/CallJitsiWithData.js +++ b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/CallJitsiWithData.tsx @@ -1,10 +1,12 @@ -import { Skeleton } from '@rocket.chat/fuselage'; +import { IRoom } from '@rocket.chat/core-typings'; +import { Skeleton, Icon, Box } from '@rocket.chat/fuselage'; import { useMutableCallback, useSafely } from '@rocket.chat/fuselage-hooks'; import { clear } from '@rocket.chat/memo'; -import React, { useRef, useEffect, useState, useMemo, useLayoutEffect, memo } from 'react'; +import React, { useRef, useEffect, useState, useMemo, useLayoutEffect, memo, ReactElement } from 'react'; import { Subscriptions } from '../../../../../../app/models/client'; import { HEARTBEAT, TIMEOUT, DEBOUNCE } from '../../../../../../app/videobridge/constants'; +import GenericModal from '../../../../../components/GenericModal'; import { useConnectionStatus } from '../../../../../contexts/ConnectionStatusContext'; import { useSetModal } from '../../../../../contexts/ModalContext'; import { useMethod } from '../../../../../contexts/ServerContext'; @@ -15,11 +17,8 @@ import { useUser } from '../../../../../contexts/UserContext'; import { useRoom } from '../../../contexts/RoomContext'; import { useTabBarClose } from '../../../providers/ToolboxProvider'; import CallJitsi from './CallJitsi'; -import CallModal from './components/CallModal'; import { JitsiBridge } from './lib/JitsiBridge'; -export { default as CallJitsi } from './CallJitsi'; - const querySettings = { _id: [ 'Jitsi_Open_New_Window', @@ -34,12 +33,13 @@ const querySettings = { ], }; -const CallJitsiWithData = ({ rid }) => { +const CallJitsiWithData = ({ rid }: { rid: IRoom['_id'] }): ReactElement => { const user = useUser(); const { connected } = useConnectionStatus(); const [accessToken, setAccessToken] = useSafely(useState()); const [accepted, setAccepted] = useState(false); const room = useRoom(); + const ref = useRef(null); const setModal = useSetModal(); const handleClose = useTabBarClose(); const closeModal = useMutableCallback(() => setModal(null)); @@ -54,8 +54,6 @@ const CallJitsiWithData = ({ rid }) => { handleClose(); }); - const ref = useRef(); - const { Jitsi_Open_New_Window: openNewWindow, Jitsi_Domain: domain, @@ -71,14 +69,16 @@ const CallJitsiWithData = ({ rid }) => { useEffect(() => { let ignore = false; if (!isEnabledTokenAuth) { - setAccessToken(); + setAccessToken(undefined); return; } - (async () => { + + (async (): Promise => { const accessToken = await generateAccessToken(rid); !ignore && setAccessToken(accessToken); })(); - return () => { + + return (): void => { ignore = true; }; }, [generateAccessToken, isEnabledTokenAuth, rid, setAccessToken]); @@ -89,7 +89,7 @@ const CallJitsiWithData = ({ rid }) => { } }, [connected, handleClose]); - const rname = useHashName ? uniqueID + rid : encodeURIComponent(room.t === 'd' ? room.usernames.join(' x ') : room.name); + const rname = useHashName ? uniqueID + rid : encodeURIComponent((room?.t === 'd' ? room.usernames?.join('x') : room.name) ?? ''); const jitsi = useMemo(() => { if (isEnabledTokenAuth && !accessToken) { @@ -106,7 +106,7 @@ const CallJitsiWithData = ({ rid }) => { jitsiRoomName, accessToken, desktopSharingChromeExtId, - name: user.name || user.username, + name: user?.name || user?.username, }, HEARTBEAT, ); @@ -120,36 +120,38 @@ const CallJitsiWithData = ({ rid }) => { rname, ssl, sufix, - user.name, - user.username, + user?.name, + user?.username, ]); const testAndHandleTimeout = useMutableCallback(() => { - if (jitsi.openNewWindow) { - if (jitsi.window?.closed) { + if (jitsi?.openNewWindow) { + if (jitsi?.window?.closed) { return jitsi.dispose(); } + try { return updateTimeout(rid, false); } catch (error) { dispatchToastMessage({ type: 'error', message: t(error.reason) }); - clear(); + clear(() => undefined); handleClose(); return jitsi.dispose(); } } - if (new Date() - new Date(room.jitsiTimeout) > TIMEOUT) { - return jitsi.dispose(); + + if (new Date().valueOf() - new Date(room.jitsiTimeout ?? '').valueOf() > TIMEOUT) { + return jitsi?.dispose(); } - if (new Date() - new Date(room.jitsiTimeout) + TIMEOUT > DEBOUNCE) { + if (new Date().valueOf() - new Date(room.jitsiTimeout ?? '').valueOf() + TIMEOUT > DEBOUNCE) { try { return updateTimeout(rid, false); } catch (error) { dispatchToastMessage({ type: 'error', message: t(error.reason) }); - clear(); + clear(() => undefined); handleClose(); - return jitsi.dispose(); + return jitsi?.dispose(); } } }); @@ -159,7 +161,7 @@ const CallJitsiWithData = ({ rid }) => { return; } - const clear = () => { + const clear = (): void => { jitsi.off('HEARTBEAT', testAndHandleTimeout); jitsi.dispose(); }; @@ -178,18 +180,18 @@ const CallJitsiWithData = ({ rid }) => { } jitsi.on('HEARTBEAT', testAndHandleTimeout); - return () => { + return (): void => { if (!jitsi.openNewWindow) clear(); }; }, [accepted, jitsi, rid, testAndHandleTimeout, updateTimeout, dispatchToastMessage, handleClose, t]); - const handleYes = useMutableCallback(() => { + const handleConfirm = useMutableCallback(() => { if (jitsi) { jitsi.needsStart = true; } setAccepted(true); - const sub = Subscriptions.findOne({ rid, 'u._id': user._id }); + const sub = Subscriptions.findOne({ rid, 'u._id': user?._id }); if (!sub) { joinRoom(rid); } @@ -201,11 +203,25 @@ const CallJitsiWithData = ({ rid }) => { useLayoutEffect(() => { if (!accepted) { - setModal(() => ); - return; + return setModal(() => ( + + + + {t('Start_video_call')} + + + )); } + closeModal(); - }, [accepted, closeModal, handleCancel, handleYes, setModal]); + }, [accepted, closeModal, handleCancel, handleConfirm, setModal, t]); return ( diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/index.ts b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/index.ts similarity index 100% rename from apps/meteor/client/views/room/contextualBar/Call/Jitsi/index.ts rename to apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/index.ts diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/lib/Jitsi.js b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/lib/Jitsi.js similarity index 100% rename from apps/meteor/client/views/room/contextualBar/Call/Jitsi/lib/Jitsi.js rename to apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/lib/Jitsi.js diff --git a/apps/meteor/client/views/room/contextualBar/Call/Jitsi/lib/JitsiBridge.js b/apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/lib/JitsiBridge.js similarity index 100% rename from apps/meteor/client/views/room/contextualBar/Call/Jitsi/lib/JitsiBridge.js rename to apps/meteor/client/views/room/contextualBar/VideoConference/Jitsi/lib/JitsiBridge.js diff --git a/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx b/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx index b24828839715..3b8105d7a31e 100644 --- a/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx +++ b/apps/meteor/client/views/room/lib/Toolbox/ToolboxContext.tsx @@ -1,6 +1,6 @@ import { IRoom } from '@rocket.chat/core-typings'; import { EventHandlerOf } from '@rocket.chat/emitter'; -import { createContext, MouseEventHandler, useContext } from 'react'; +import { createContext, useContext } from 'react'; import { actions, listen, ToolboxActionConfig, ToolboxAction, Events } from '.'; import './defaultActions'; @@ -14,7 +14,7 @@ export type ToolboxContextValue = { context?: any; open: Function; openUserInfo: (username: string) => void; - close: MouseEventHandler; + close: () => void; activeTabBar?: ToolboxActionConfig; }; diff --git a/apps/meteor/client/views/room/providers/ToolboxProvider.tsx b/apps/meteor/client/views/room/providers/ToolboxProvider.tsx index 030074490943..8dbbe5737efa 100644 --- a/apps/meteor/client/views/room/providers/ToolboxProvider.tsx +++ b/apps/meteor/client/views/room/providers/ToolboxProvider.tsx @@ -1,6 +1,6 @@ import type { IRoom } from '@rocket.chat/core-typings'; import { useDebouncedState, useMutableCallback, useSafely } from '@rocket.chat/fuselage-hooks'; -import React, { ReactNode, useContext, useMemo, useState, useLayoutEffect, MouseEventHandler, useEffect } from 'react'; +import React, { ReactNode, useContext, useMemo, useState, useLayoutEffect, useEffect } from 'react'; import { useCurrentRoute, useRoute } from '../../../contexts/RouterContext'; import { useSession } from '../../../contexts/SessionContext'; @@ -125,7 +125,7 @@ const ToolboxProvider = ({ children, room }: { children: ReactNode; room: IRoom export const useTabContext = (): unknown | undefined => useContext(ToolboxContext).context; export const useTab = (): ToolboxActionConfig | undefined => useContext(ToolboxContext).activeTabBar; export const useTabBarOpen = (): Function => useContext(ToolboxContext).open; -export const useTabBarClose = (): MouseEventHandler => useContext(ToolboxContext).close; +export const useTabBarClose = (): (() => void) => useContext(ToolboxContext).close; export const useTabBarOpenUserInfo = (): Function => useContext(ToolboxContext).openUserInfo; export default ToolboxProvider; From 44918b4d2c7084d6619897344aec3220076afb06 Mon Sep 17 00:00:00 2001 From: Tiago Evangelista Pinto Date: Fri, 6 May 2022 10:27:46 -0300 Subject: [PATCH 025/145] Chore: Add Livechat repo into Monorepo packages (#25312) Co-authored-by: Guilherme Gazzo Co-authored-by: Martin --- .github/CODEOWNERS | 1 + .github/no-js-action-config.json | 2 +- apps/meteor/package.json | 2 +- .../rocketchat-livechat/plugin/build.sh | 2 +- packages/livechat/.eslintignore | 4 + packages/livechat/.eslintrc | 68 + packages/livechat/.gitignore | 10 + .../.storybook/assets/accessoryImage.png | Bin 0 -> 10651 bytes packages/livechat/.storybook/assets/beep.mp3 | Bin 0 -> 6318 bytes packages/livechat/.storybook/assets/gazzo.jpg | Bin 0 -> 1209 bytes .../livechat/.storybook/assets/imageBlock.png | Bin 0 -> 382894 bytes .../livechat/.storybook/assets/martin.jpg | Bin 0 -> 1322 bytes .../.storybook/assets/sample-audio.mp3 | Bin 0 -> 68825 bytes .../.storybook/assets/sample-image.jpg | Bin 0 -> 547969 bytes .../.storybook/assets/sample-video.mp4 | Bin 0 -> 6641640 bytes packages/livechat/.storybook/assets/tasso.jpg | Bin 0 -> 1233 bytes packages/livechat/.storybook/babel.config.js | 1 + packages/livechat/.storybook/logo.svg | 1 + packages/livechat/.storybook/main.js | 17 + packages/livechat/.storybook/manager.js | 15 + packages/livechat/.storybook/mocks/uiKit.js | 24 + .../livechat/.storybook/preview-head.html | 6 + packages/livechat/.storybook/preview.js | 15 + .../livechat/.storybook/webpack.config.js | 45 + packages/livechat/.stylelintrc | 329 + packages/livechat/CHANGELOG.md | 224 + packages/livechat/LICENSE | 21 + packages/livechat/README.md | 88 + packages/livechat/babel.config.js | 21 + packages/livechat/package.json | 124 + packages/livechat/src/api.ts | 9 + packages/livechat/src/assets/favicon.ico | Bin 0 -> 7785 bytes .../livechat/src/components/Alert/index.js | 56 + .../livechat/src/components/Alert/stories.js | 83 + .../livechat/src/components/Alert/styles.scss | 65 + packages/livechat/src/components/App/App.js | 246 + packages/livechat/src/components/App/index.js | 39 + .../livechat/src/components/Avatar/index.js | 44 + .../src/components/Avatar/profile.png | Bin 0 -> 3094 bytes .../livechat/src/components/Avatar/stories.js | 93 + .../src/components/Avatar/styles.scss | 93 + .../livechat/src/components/Button/index.js | 50 + .../livechat/src/components/Button/stories.js | 212 + .../src/components/Button/styles.scss | 217 + .../src/components/ButtonGroup/index.js | 12 + .../src/components/ButtonGroup/stories.js | 39 + .../src/components/ButtonGroup/styles.scss | 18 + .../src/components/Calls/CallIFrame.js | 30 + .../src/components/Calls/CallNotification.js | 113 + .../src/components/Calls/CallStatus.js | 12 + .../src/components/Calls/JoinCallButton.js | 51 + .../livechat/src/components/Calls/styles.scss | 128 + .../Composer/ComposerAction/index.js | 15 + .../Composer/ComposerAction/styles.scss | 26 + .../Composer/ComposerActions/index.js | 12 + .../Composer/ComposerActions/styles.scss | 6 + .../livechat/src/components/Composer/index.js | 256 + .../src/components/Composer/stories.js | 96 + .../src/components/Composer/styles.scss | 81 + .../livechat/src/components/Emoji/ascii.js | 5 + .../livechat/src/components/Emoji/emojis.js | 2 + .../components/Emoji/shortnameToUnicode.js | 44 + .../src/components/FilesDropTarget/index.js | 117 + .../src/components/FilesDropTarget/stories.js | 104 + .../components/FilesDropTarget/styles.scss | 77 + .../livechat/src/components/Footer/index.js | 57 + .../livechat/src/components/Footer/logo.svg | 21 + .../livechat/src/components/Footer/stories.js | 48 + .../src/components/Footer/styles.scss | 96 + .../src/components/Form/DateInput/index.js | 29 + .../src/components/Form/DateInput/stories.js | 87 + .../src/components/Form/DateInput/styles.scss | 5 + .../src/components/Form/FormField/index.js | 35 + .../src/components/Form/FormField/stories.js | 47 + .../src/components/Form/FormField/styles.scss | 85 + .../components/Form/PasswordInput/index.js | 28 + .../components/Form/PasswordInput/stories.js | 87 + .../components/Form/PasswordInput/styles.scss | 5 + .../src/components/Form/SelectInput/index.js | 70 + .../components/Form/SelectInput/stories.js | 112 + .../components/Form/SelectInput/styles.scss | 56 + .../src/components/Form/TextInput/index.js | 49 + .../src/components/Form/TextInput/stories.js | 108 + .../src/components/Form/TextInput/styles.scss | 9 + .../livechat/src/components/Form/index.js | 34 + .../livechat/src/components/Form/mixins.scss | 76 + .../livechat/src/components/Form/stories.js | 54 + .../livechat/src/components/Form/styles.scss | 3 + .../livechat/src/components/Header/index.js | 91 + .../livechat/src/components/Header/stories.js | 298 + .../src/components/Header/styles.scss | 126 + .../livechat/src/components/Menu/index.js | 115 + .../livechat/src/components/Menu/stories.js | 155 + .../livechat/src/components/Menu/styles.scss | 154 + .../Messages/AudioAttachment/index.js | 29 + .../Messages/AudioAttachment/stories.js | 16 + .../Messages/AudioAttachment/styles.scss | 6 + .../Messages/FileAttachment/index.js | 30 + .../Messages/FileAttachment/stories.js | 58 + .../Messages/FileAttachment/styles.scss | 53 + .../Messages/FileAttachmentIcon/index.js | 20 + .../Messages/ImageAttachment/index.js | 21 + .../Messages/ImageAttachment/stories.js | 15 + .../Messages/ImageAttachment/styles.scss | 8 + .../src/components/Messages/Message/index.js | 160 + .../components/Messages/Message/stories.js | 377 + .../Messages/MessageAvatars/index.js | 23 + .../Messages/MessageAvatars/stories.js | 40 + .../Messages/MessageAvatars/styles.scss | 18 + .../Messages/MessageBlocks/index.js | 41 + .../Messages/MessageBlocks/stories.js | 399 + .../Messages/MessageBlocks/styles.scss | 7 + .../Messages/MessageBubble/index.js | 22 + .../Messages/MessageBubble/stories.js | 48 + .../Messages/MessageBubble/styles.scss | 80 + .../Messages/MessageContainer/index.js | 22 + .../Messages/MessageContainer/styles.scss | 30 + .../Messages/MessageContent/index.js | 12 + .../Messages/MessageContent/styles.scss | 22 + .../components/Messages/MessageList/index.js | 196 + .../Messages/MessageList/stories.js | 106 + .../Messages/MessageList/styles.scss | 35 + .../Messages/MessageSeparator/index.js | 40 + .../Messages/MessageSeparator/stories.js | 30 + .../Messages/MessageSeparator/styles.scss | 58 + .../components/Messages/MessageText/emoji.js | 35 + .../components/Messages/MessageText/index.js | 18 + .../Messages/MessageText/markdown.js | 83 + .../Messages/MessageText/styles.scss | 43 + .../components/Messages/MessageTime/index.js | 31 + .../Messages/MessageTime/stories.js | 19 + .../Messages/MessageTime/styles.scss | 40 + .../components/Messages/TypingDots/index.js | 18 + .../components/Messages/TypingDots/stories.js | 13 + .../Messages/TypingDots/styles.scss | 46 + .../Messages/TypingIndicator/index.js | 26 + .../Messages/TypingIndicator/stories.js | 24 + .../Messages/VideoAttachment/index.js | 29 + .../Messages/VideoAttachment/stories.js | 16 + .../Messages/VideoAttachment/styles.scss | 8 + .../src/components/Messages/constants.js | 11 + .../livechat/src/components/Messages/index.js | 17 + .../src/components/Modal/component.js | 102 + .../livechat/src/components/Modal/index.js | 2 + .../livechat/src/components/Modal/manager.js | 31 + .../livechat/src/components/Modal/stories.js | 82 + .../livechat/src/components/Modal/styles.scss | 74 + .../livechat/src/components/Popover/index.js | 97 + .../src/components/Popover/stories.js | 47 + .../src/components/Popover/styles.scss | 24 + .../livechat/src/components/Screen/Header.js | 117 + .../livechat/src/components/Screen/index.js | 157 + .../livechat/src/components/Screen/stories.js | 340 + .../src/components/Screen/styles.scss | 133 + .../livechat/src/components/Sound/index.js | 43 + .../livechat/src/components/Sound/stories.js | 29 + .../livechat/src/components/Tooltip/index.js | 123 + .../src/components/Tooltip/stories.js | 45 + .../src/components/Tooltip/styles.scss | 181 + packages/livechat/src/components/helpers.js | 289 + .../livechat/src/components/uiKit/index.js | 1 + .../uiKit/message/ActionsBlock/index.js | 39 + .../uiKit/message/ActionsBlock/styles.scss | 10 + .../src/components/uiKit/message/Block.js | 50 + .../uiKit/message/ButtonElement/index.js | 44 + .../uiKit/message/ButtonElement/stories.js | 43 + .../uiKit/message/ButtonElement/styles.scss | 117 + .../uiKit/message/ContextBlock/index.js | 18 + .../uiKit/message/ContextBlock/styles.scss | 25 + .../uiKit/message/DatePickerElement/index.js | 31 + .../uiKit/message/DividerBlock/index.js | 14 + .../uiKit/message/DividerBlock/styles.scss | 10 + .../uiKit/message/ImageBlock/index.js | 83 + .../uiKit/message/ImageBlock/styles.scss | 52 + .../uiKit/message/ImageElement/index.js | 21 + .../uiKit/message/ImageElement/styles.scss | 23 + .../components/uiKit/message/Mrkdwn/index.js | 16 + .../uiKit/message/Mrkdwn/styles.scss | 28 + .../uiKit/message/OverflowElement/index.js | 65 + .../uiKit/message/OverflowElement/styles.scss | 9 + .../uiKit/message/PlainText/index.js | 25 + .../uiKit/message/PlainText/styles.scss | 4 + .../uiKit/message/SectionBlock/index.js | 33 + .../uiKit/message/SectionBlock/styles.scss | 43 + .../message/StaticSelectElement/index.js | 39 + .../message/StaticSelectElement/styles.scss | 8 + .../src/components/uiKit/message/Surface.js | 19 + .../uiKit/message/actions.stories.js | 198 + .../uiKit/message/context.stories.js | 80 + .../uiKit/message/divider.stories.js | 19 + .../components/uiKit/message/image.stories.js | 37 + .../src/components/uiKit/message/index.js | 113 + .../uiKit/message/section.stories.js | 200 + packages/livechat/src/entry.js | 14 + packages/livechat/src/global.d.ts | 2 + packages/livechat/src/helpers.stories.js | 58 + packages/livechat/src/history.js | 5 + packages/livechat/src/i18n/af.json | 14 + packages/livechat/src/i18n/ar.json | 14 + packages/livechat/src/i18n/az.json | 14 + packages/livechat/src/i18n/be-BY.json | 14 + packages/livechat/src/i18n/bg.json | 14 + packages/livechat/src/i18n/bs.json | 5 + packages/livechat/src/i18n/ca.json | 13 + packages/livechat/src/i18n/cs.json | 77 + packages/livechat/src/i18n/cy.json | 14 + packages/livechat/src/i18n/da.json | 14 + packages/livechat/src/i18n/de-AT.json | 77 + packages/livechat/src/i18n/de-IN.json | 3 + packages/livechat/src/i18n/de.json | 77 + packages/livechat/src/i18n/el.json | 14 + packages/livechat/src/i18n/en.json | 101 + packages/livechat/src/i18n/eo.json | 14 + packages/livechat/src/i18n/es.json | 77 + packages/livechat/src/i18n/et.json | 13 + packages/livechat/src/i18n/eu.json | 13 + packages/livechat/src/i18n/fa.json | 73 + packages/livechat/src/i18n/fi.json | 14 + packages/livechat/src/i18n/fr.json | 77 + packages/livechat/src/i18n/he.json | 68 + packages/livechat/src/i18n/hr.json | 15 + packages/livechat/src/i18n/hu.json | 14 + packages/livechat/src/i18n/id.json | 14 + packages/livechat/src/i18n/it.json | 71 + packages/livechat/src/i18n/ja.json | 78 + packages/livechat/src/i18n/km.json | 15 + packages/livechat/src/i18n/ko.json | 15 + packages/livechat/src/i18n/ku.json | 14 + packages/livechat/src/i18n/lo.json | 13 + packages/livechat/src/i18n/lt.json | 14 + packages/livechat/src/i18n/lv.json | 14 + packages/livechat/src/i18n/mn.json | 14 + packages/livechat/src/i18n/ms-MY.json | 14 + packages/livechat/src/i18n/nl.json | 81 + packages/livechat/src/i18n/no.json | 14 + packages/livechat/src/i18n/pl.json | 73 + packages/livechat/src/i18n/pt-BR.json | 86 + packages/livechat/src/i18n/pt.json | 19 + packages/livechat/src/i18n/ro.json | 18 + packages/livechat/src/i18n/ru.json | 77 + packages/livechat/src/i18n/sk-SK.json | 14 + packages/livechat/src/i18n/sl-SI.json | 14 + packages/livechat/src/i18n/sq.json | 14 + packages/livechat/src/i18n/sr.json | 75 + packages/livechat/src/i18n/sv.json | 19 + packages/livechat/src/i18n/ta-IN.json | 14 + packages/livechat/src/i18n/th-TH.json | 14 + packages/livechat/src/i18n/tr.json | 15 + packages/livechat/src/i18n/ug.json | 8 + packages/livechat/src/i18n/uk.json | 14 + packages/livechat/src/i18n/vi-VN.json | 14 + packages/livechat/src/i18n/zh-HK.json | 14 + packages/livechat/src/i18n/zh-TW.json | 14 + packages/livechat/src/i18n/zh.json | 78 + packages/livechat/src/i18next.js | 30 + packages/livechat/src/icons/arrowDown.svg | 8 + packages/livechat/src/icons/arrowUp.svg | 8 + packages/livechat/src/icons/bell.svg | 6 + packages/livechat/src/icons/bellOff.svg | 6 + packages/livechat/src/icons/change.svg | 3 + packages/livechat/src/icons/chat.svg | 11 + packages/livechat/src/icons/close.svg | 7 + packages/livechat/src/icons/doc.svg | 8 + packages/livechat/src/icons/download.svg | 7 + packages/livechat/src/icons/file.svg | 9 + packages/livechat/src/icons/finish.svg | 4 + packages/livechat/src/icons/kebab.svg | 3 + packages/livechat/src/icons/newWindow.svg | 12 + packages/livechat/src/icons/pdf.svg | 8 + packages/livechat/src/icons/phone.svg | 6 + packages/livechat/src/icons/phoneOff.svg | 5 + packages/livechat/src/icons/plus.svg | 7 + packages/livechat/src/icons/ppt.svg | 11 + packages/livechat/src/icons/remove.svg | 3 + packages/livechat/src/icons/send.svg | 10 + packages/livechat/src/icons/sheet.svg | 13 + packages/livechat/src/icons/smile.svg | 9 + packages/livechat/src/icons/stories.js | 52 + packages/livechat/src/icons/video.svg | 5 + packages/livechat/src/icons/videoIcon.svg | 5 + packages/livechat/src/icons/zip.svg | 16 + packages/livechat/src/index.ejs | 9 + packages/livechat/src/index.ts | 4 + packages/livechat/src/lib/api.js | 22 + packages/livechat/src/lib/commands.js | 7 + packages/livechat/src/lib/connection.js | 103 + packages/livechat/src/lib/constants.js | 9 + packages/livechat/src/lib/customFields.js | 72 + packages/livechat/src/lib/email.js | 12 + packages/livechat/src/lib/hooks.js | 211 + packages/livechat/src/lib/locale.js | 53 + packages/livechat/src/lib/main.js | 101 + packages/livechat/src/lib/parentCall.js | 14 + packages/livechat/src/lib/random.js | 28 + packages/livechat/src/lib/room.js | 301 + packages/livechat/src/lib/threads.js | 78 + packages/livechat/src/lib/transcript.js | 45 + packages/livechat/src/lib/triggers.js | 190 + packages/livechat/src/lib/uiKit.js | 146 + packages/livechat/src/lib/userPresence.js | 83 + packages/livechat/src/manifest.json | 8 + packages/livechat/src/polyfills.js | 6 + .../livechat/src/routes/Chat/component.js | 237 + .../livechat/src/routes/Chat/connector.js | 115 + .../livechat/src/routes/Chat/container.js | 473 ++ packages/livechat/src/routes/Chat/index.js | 3 + packages/livechat/src/routes/Chat/stories.js | 127 + packages/livechat/src/routes/Chat/styles.scss | 78 + .../src/routes/ChatFinished/component.js | 48 + .../src/routes/ChatFinished/container.js | 57 + .../livechat/src/routes/ChatFinished/index.js | 2 + .../src/routes/ChatFinished/stories.js | 31 + .../src/routes/ChatFinished/styles.scss | 25 + .../src/routes/GDPRAgreement/component.js | 72 + .../src/routes/GDPRAgreement/container.js | 58 + .../src/routes/GDPRAgreement/index.js | 2 + .../src/routes/GDPRAgreement/stories.js | 20 + .../src/routes/GDPRAgreement/styles.scss | 27 + .../src/routes/LeaveMessage/component.js | 197 + .../src/routes/LeaveMessage/container.js | 94 + .../livechat/src/routes/LeaveMessage/index.js | 3 + .../src/routes/LeaveMessage/stories.js | 44 + .../src/routes/LeaveMessage/styles.scss | 17 + .../livechat/src/routes/Register/component.js | 286 + .../livechat/src/routes/Register/container.js | 139 + .../livechat/src/routes/Register/index.js | 3 + .../livechat/src/routes/Register/stories.js | 105 + .../livechat/src/routes/Register/styles.scss | 6 + .../src/routes/SwitchDepartment/component.js | 128 + .../src/routes/SwitchDepartment/connector.js | 46 + .../src/routes/SwitchDepartment/container.js | 70 + .../src/routes/SwitchDepartment/index.js | 2 + .../src/routes/SwitchDepartment/stories.js | 64 + .../src/routes/SwitchDepartment/styles.scss | 15 + .../src/routes/TriggerMessage/component.js | 50 + .../src/routes/TriggerMessage/container.js | 69 + .../src/routes/TriggerMessage/index.js | 3 + .../src/routes/TriggerMessage/stories.js | 49 + .../src/routes/TriggerMessage/styles.scss | 44 + packages/livechat/src/store/Store.js | 99 + packages/livechat/src/store/index.js | 80 + packages/livechat/src/styles/colors.scss | 25 + packages/livechat/src/styles/grid.scss | 55 + packages/livechat/src/styles/helpers.scss | 69 + packages/livechat/src/styles/index.scss | 51 + packages/livechat/src/styles/variables.scss | 17 + packages/livechat/src/widget.js | 472 ++ packages/livechat/svg-component-loader.js | 25 + packages/livechat/tsconfig.json | 16 + packages/livechat/webpack.config.js | 283 + packages/livechat/widget-demo.html | 66 + postcss.config.js | 14 + yarn.lock | 6748 +++++++++++++++-- 353 files changed, 25323 insertions(+), 710 deletions(-) create mode 100644 packages/livechat/.eslintignore create mode 100644 packages/livechat/.eslintrc create mode 100644 packages/livechat/.gitignore create mode 100644 packages/livechat/.storybook/assets/accessoryImage.png create mode 100644 packages/livechat/.storybook/assets/beep.mp3 create mode 100644 packages/livechat/.storybook/assets/gazzo.jpg create mode 100644 packages/livechat/.storybook/assets/imageBlock.png create mode 100644 packages/livechat/.storybook/assets/martin.jpg create mode 100644 packages/livechat/.storybook/assets/sample-audio.mp3 create mode 100644 packages/livechat/.storybook/assets/sample-image.jpg create mode 100644 packages/livechat/.storybook/assets/sample-video.mp4 create mode 100644 packages/livechat/.storybook/assets/tasso.jpg create mode 100644 packages/livechat/.storybook/babel.config.js create mode 100644 packages/livechat/.storybook/logo.svg create mode 100644 packages/livechat/.storybook/main.js create mode 100644 packages/livechat/.storybook/manager.js create mode 100644 packages/livechat/.storybook/mocks/uiKit.js create mode 100644 packages/livechat/.storybook/preview-head.html create mode 100644 packages/livechat/.storybook/preview.js create mode 100644 packages/livechat/.storybook/webpack.config.js create mode 100644 packages/livechat/.stylelintrc create mode 100644 packages/livechat/CHANGELOG.md create mode 100644 packages/livechat/LICENSE create mode 100644 packages/livechat/README.md create mode 100644 packages/livechat/babel.config.js create mode 100644 packages/livechat/package.json create mode 100644 packages/livechat/src/api.ts create mode 100644 packages/livechat/src/assets/favicon.ico create mode 100644 packages/livechat/src/components/Alert/index.js create mode 100644 packages/livechat/src/components/Alert/stories.js create mode 100644 packages/livechat/src/components/Alert/styles.scss create mode 100644 packages/livechat/src/components/App/App.js create mode 100644 packages/livechat/src/components/App/index.js create mode 100644 packages/livechat/src/components/Avatar/index.js create mode 100644 packages/livechat/src/components/Avatar/profile.png create mode 100644 packages/livechat/src/components/Avatar/stories.js create mode 100644 packages/livechat/src/components/Avatar/styles.scss create mode 100644 packages/livechat/src/components/Button/index.js create mode 100644 packages/livechat/src/components/Button/stories.js create mode 100644 packages/livechat/src/components/Button/styles.scss create mode 100644 packages/livechat/src/components/ButtonGroup/index.js create mode 100644 packages/livechat/src/components/ButtonGroup/stories.js create mode 100644 packages/livechat/src/components/ButtonGroup/styles.scss create mode 100644 packages/livechat/src/components/Calls/CallIFrame.js create mode 100644 packages/livechat/src/components/Calls/CallNotification.js create mode 100644 packages/livechat/src/components/Calls/CallStatus.js create mode 100644 packages/livechat/src/components/Calls/JoinCallButton.js create mode 100644 packages/livechat/src/components/Calls/styles.scss create mode 100644 packages/livechat/src/components/Composer/ComposerAction/index.js create mode 100644 packages/livechat/src/components/Composer/ComposerAction/styles.scss create mode 100644 packages/livechat/src/components/Composer/ComposerActions/index.js create mode 100644 packages/livechat/src/components/Composer/ComposerActions/styles.scss create mode 100644 packages/livechat/src/components/Composer/index.js create mode 100644 packages/livechat/src/components/Composer/stories.js create mode 100644 packages/livechat/src/components/Composer/styles.scss create mode 100644 packages/livechat/src/components/Emoji/ascii.js create mode 100644 packages/livechat/src/components/Emoji/emojis.js create mode 100644 packages/livechat/src/components/Emoji/shortnameToUnicode.js create mode 100644 packages/livechat/src/components/FilesDropTarget/index.js create mode 100644 packages/livechat/src/components/FilesDropTarget/stories.js create mode 100644 packages/livechat/src/components/FilesDropTarget/styles.scss create mode 100644 packages/livechat/src/components/Footer/index.js create mode 100644 packages/livechat/src/components/Footer/logo.svg create mode 100644 packages/livechat/src/components/Footer/stories.js create mode 100644 packages/livechat/src/components/Footer/styles.scss create mode 100644 packages/livechat/src/components/Form/DateInput/index.js create mode 100644 packages/livechat/src/components/Form/DateInput/stories.js create mode 100644 packages/livechat/src/components/Form/DateInput/styles.scss create mode 100644 packages/livechat/src/components/Form/FormField/index.js create mode 100644 packages/livechat/src/components/Form/FormField/stories.js create mode 100644 packages/livechat/src/components/Form/FormField/styles.scss create mode 100644 packages/livechat/src/components/Form/PasswordInput/index.js create mode 100644 packages/livechat/src/components/Form/PasswordInput/stories.js create mode 100644 packages/livechat/src/components/Form/PasswordInput/styles.scss create mode 100644 packages/livechat/src/components/Form/SelectInput/index.js create mode 100644 packages/livechat/src/components/Form/SelectInput/stories.js create mode 100644 packages/livechat/src/components/Form/SelectInput/styles.scss create mode 100644 packages/livechat/src/components/Form/TextInput/index.js create mode 100644 packages/livechat/src/components/Form/TextInput/stories.js create mode 100644 packages/livechat/src/components/Form/TextInput/styles.scss create mode 100644 packages/livechat/src/components/Form/index.js create mode 100644 packages/livechat/src/components/Form/mixins.scss create mode 100644 packages/livechat/src/components/Form/stories.js create mode 100644 packages/livechat/src/components/Form/styles.scss create mode 100644 packages/livechat/src/components/Header/index.js create mode 100644 packages/livechat/src/components/Header/stories.js create mode 100644 packages/livechat/src/components/Header/styles.scss create mode 100644 packages/livechat/src/components/Menu/index.js create mode 100644 packages/livechat/src/components/Menu/stories.js create mode 100644 packages/livechat/src/components/Menu/styles.scss create mode 100644 packages/livechat/src/components/Messages/AudioAttachment/index.js create mode 100644 packages/livechat/src/components/Messages/AudioAttachment/stories.js create mode 100644 packages/livechat/src/components/Messages/AudioAttachment/styles.scss create mode 100644 packages/livechat/src/components/Messages/FileAttachment/index.js create mode 100644 packages/livechat/src/components/Messages/FileAttachment/stories.js create mode 100644 packages/livechat/src/components/Messages/FileAttachment/styles.scss create mode 100644 packages/livechat/src/components/Messages/FileAttachmentIcon/index.js create mode 100644 packages/livechat/src/components/Messages/ImageAttachment/index.js create mode 100644 packages/livechat/src/components/Messages/ImageAttachment/stories.js create mode 100644 packages/livechat/src/components/Messages/ImageAttachment/styles.scss create mode 100644 packages/livechat/src/components/Messages/Message/index.js create mode 100644 packages/livechat/src/components/Messages/Message/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageAvatars/index.js create mode 100644 packages/livechat/src/components/Messages/MessageAvatars/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageAvatars/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageBlocks/index.js create mode 100644 packages/livechat/src/components/Messages/MessageBlocks/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageBlocks/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageBubble/index.js create mode 100644 packages/livechat/src/components/Messages/MessageBubble/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageBubble/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageContainer/index.js create mode 100644 packages/livechat/src/components/Messages/MessageContainer/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageContent/index.js create mode 100644 packages/livechat/src/components/Messages/MessageContent/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageList/index.js create mode 100644 packages/livechat/src/components/Messages/MessageList/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageList/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageSeparator/index.js create mode 100644 packages/livechat/src/components/Messages/MessageSeparator/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageSeparator/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageText/emoji.js create mode 100644 packages/livechat/src/components/Messages/MessageText/index.js create mode 100644 packages/livechat/src/components/Messages/MessageText/markdown.js create mode 100644 packages/livechat/src/components/Messages/MessageText/styles.scss create mode 100644 packages/livechat/src/components/Messages/MessageTime/index.js create mode 100644 packages/livechat/src/components/Messages/MessageTime/stories.js create mode 100644 packages/livechat/src/components/Messages/MessageTime/styles.scss create mode 100644 packages/livechat/src/components/Messages/TypingDots/index.js create mode 100644 packages/livechat/src/components/Messages/TypingDots/stories.js create mode 100644 packages/livechat/src/components/Messages/TypingDots/styles.scss create mode 100644 packages/livechat/src/components/Messages/TypingIndicator/index.js create mode 100644 packages/livechat/src/components/Messages/TypingIndicator/stories.js create mode 100644 packages/livechat/src/components/Messages/VideoAttachment/index.js create mode 100644 packages/livechat/src/components/Messages/VideoAttachment/stories.js create mode 100644 packages/livechat/src/components/Messages/VideoAttachment/styles.scss create mode 100644 packages/livechat/src/components/Messages/constants.js create mode 100644 packages/livechat/src/components/Messages/index.js create mode 100644 packages/livechat/src/components/Modal/component.js create mode 100644 packages/livechat/src/components/Modal/index.js create mode 100644 packages/livechat/src/components/Modal/manager.js create mode 100644 packages/livechat/src/components/Modal/stories.js create mode 100644 packages/livechat/src/components/Modal/styles.scss create mode 100644 packages/livechat/src/components/Popover/index.js create mode 100644 packages/livechat/src/components/Popover/stories.js create mode 100644 packages/livechat/src/components/Popover/styles.scss create mode 100644 packages/livechat/src/components/Screen/Header.js create mode 100644 packages/livechat/src/components/Screen/index.js create mode 100644 packages/livechat/src/components/Screen/stories.js create mode 100644 packages/livechat/src/components/Screen/styles.scss create mode 100644 packages/livechat/src/components/Sound/index.js create mode 100644 packages/livechat/src/components/Sound/stories.js create mode 100644 packages/livechat/src/components/Tooltip/index.js create mode 100644 packages/livechat/src/components/Tooltip/stories.js create mode 100644 packages/livechat/src/components/Tooltip/styles.scss create mode 100644 packages/livechat/src/components/helpers.js create mode 100644 packages/livechat/src/components/uiKit/index.js create mode 100644 packages/livechat/src/components/uiKit/message/ActionsBlock/index.js create mode 100644 packages/livechat/src/components/uiKit/message/ActionsBlock/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/Block.js create mode 100644 packages/livechat/src/components/uiKit/message/ButtonElement/index.js create mode 100644 packages/livechat/src/components/uiKit/message/ButtonElement/stories.js create mode 100644 packages/livechat/src/components/uiKit/message/ButtonElement/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/ContextBlock/index.js create mode 100644 packages/livechat/src/components/uiKit/message/ContextBlock/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/DatePickerElement/index.js create mode 100644 packages/livechat/src/components/uiKit/message/DividerBlock/index.js create mode 100644 packages/livechat/src/components/uiKit/message/DividerBlock/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/ImageBlock/index.js create mode 100644 packages/livechat/src/components/uiKit/message/ImageBlock/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/ImageElement/index.js create mode 100644 packages/livechat/src/components/uiKit/message/ImageElement/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/Mrkdwn/index.js create mode 100644 packages/livechat/src/components/uiKit/message/Mrkdwn/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/OverflowElement/index.js create mode 100644 packages/livechat/src/components/uiKit/message/OverflowElement/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/PlainText/index.js create mode 100644 packages/livechat/src/components/uiKit/message/PlainText/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/SectionBlock/index.js create mode 100644 packages/livechat/src/components/uiKit/message/SectionBlock/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/StaticSelectElement/index.js create mode 100644 packages/livechat/src/components/uiKit/message/StaticSelectElement/styles.scss create mode 100644 packages/livechat/src/components/uiKit/message/Surface.js create mode 100644 packages/livechat/src/components/uiKit/message/actions.stories.js create mode 100644 packages/livechat/src/components/uiKit/message/context.stories.js create mode 100644 packages/livechat/src/components/uiKit/message/divider.stories.js create mode 100644 packages/livechat/src/components/uiKit/message/image.stories.js create mode 100644 packages/livechat/src/components/uiKit/message/index.js create mode 100644 packages/livechat/src/components/uiKit/message/section.stories.js create mode 100644 packages/livechat/src/entry.js create mode 100644 packages/livechat/src/global.d.ts create mode 100644 packages/livechat/src/helpers.stories.js create mode 100644 packages/livechat/src/history.js create mode 100644 packages/livechat/src/i18n/af.json create mode 100644 packages/livechat/src/i18n/ar.json create mode 100644 packages/livechat/src/i18n/az.json create mode 100644 packages/livechat/src/i18n/be-BY.json create mode 100644 packages/livechat/src/i18n/bg.json create mode 100644 packages/livechat/src/i18n/bs.json create mode 100644 packages/livechat/src/i18n/ca.json create mode 100644 packages/livechat/src/i18n/cs.json create mode 100644 packages/livechat/src/i18n/cy.json create mode 100644 packages/livechat/src/i18n/da.json create mode 100644 packages/livechat/src/i18n/de-AT.json create mode 100644 packages/livechat/src/i18n/de-IN.json create mode 100644 packages/livechat/src/i18n/de.json create mode 100644 packages/livechat/src/i18n/el.json create mode 100644 packages/livechat/src/i18n/en.json create mode 100644 packages/livechat/src/i18n/eo.json create mode 100644 packages/livechat/src/i18n/es.json create mode 100644 packages/livechat/src/i18n/et.json create mode 100644 packages/livechat/src/i18n/eu.json create mode 100644 packages/livechat/src/i18n/fa.json create mode 100644 packages/livechat/src/i18n/fi.json create mode 100644 packages/livechat/src/i18n/fr.json create mode 100644 packages/livechat/src/i18n/he.json create mode 100644 packages/livechat/src/i18n/hr.json create mode 100644 packages/livechat/src/i18n/hu.json create mode 100644 packages/livechat/src/i18n/id.json create mode 100644 packages/livechat/src/i18n/it.json create mode 100644 packages/livechat/src/i18n/ja.json create mode 100644 packages/livechat/src/i18n/km.json create mode 100644 packages/livechat/src/i18n/ko.json create mode 100644 packages/livechat/src/i18n/ku.json create mode 100644 packages/livechat/src/i18n/lo.json create mode 100644 packages/livechat/src/i18n/lt.json create mode 100644 packages/livechat/src/i18n/lv.json create mode 100644 packages/livechat/src/i18n/mn.json create mode 100644 packages/livechat/src/i18n/ms-MY.json create mode 100644 packages/livechat/src/i18n/nl.json create mode 100644 packages/livechat/src/i18n/no.json create mode 100644 packages/livechat/src/i18n/pl.json create mode 100644 packages/livechat/src/i18n/pt-BR.json create mode 100644 packages/livechat/src/i18n/pt.json create mode 100644 packages/livechat/src/i18n/ro.json create mode 100644 packages/livechat/src/i18n/ru.json create mode 100644 packages/livechat/src/i18n/sk-SK.json create mode 100644 packages/livechat/src/i18n/sl-SI.json create mode 100644 packages/livechat/src/i18n/sq.json create mode 100644 packages/livechat/src/i18n/sr.json create mode 100644 packages/livechat/src/i18n/sv.json create mode 100644 packages/livechat/src/i18n/ta-IN.json create mode 100644 packages/livechat/src/i18n/th-TH.json create mode 100644 packages/livechat/src/i18n/tr.json create mode 100644 packages/livechat/src/i18n/ug.json create mode 100644 packages/livechat/src/i18n/uk.json create mode 100644 packages/livechat/src/i18n/vi-VN.json create mode 100644 packages/livechat/src/i18n/zh-HK.json create mode 100644 packages/livechat/src/i18n/zh-TW.json create mode 100644 packages/livechat/src/i18n/zh.json create mode 100644 packages/livechat/src/i18next.js create mode 100644 packages/livechat/src/icons/arrowDown.svg create mode 100644 packages/livechat/src/icons/arrowUp.svg create mode 100644 packages/livechat/src/icons/bell.svg create mode 100644 packages/livechat/src/icons/bellOff.svg create mode 100644 packages/livechat/src/icons/change.svg create mode 100644 packages/livechat/src/icons/chat.svg create mode 100644 packages/livechat/src/icons/close.svg create mode 100644 packages/livechat/src/icons/doc.svg create mode 100644 packages/livechat/src/icons/download.svg create mode 100644 packages/livechat/src/icons/file.svg create mode 100644 packages/livechat/src/icons/finish.svg create mode 100644 packages/livechat/src/icons/kebab.svg create mode 100644 packages/livechat/src/icons/newWindow.svg create mode 100644 packages/livechat/src/icons/pdf.svg create mode 100644 packages/livechat/src/icons/phone.svg create mode 100644 packages/livechat/src/icons/phoneOff.svg create mode 100644 packages/livechat/src/icons/plus.svg create mode 100644 packages/livechat/src/icons/ppt.svg create mode 100644 packages/livechat/src/icons/remove.svg create mode 100644 packages/livechat/src/icons/send.svg create mode 100644 packages/livechat/src/icons/sheet.svg create mode 100644 packages/livechat/src/icons/smile.svg create mode 100644 packages/livechat/src/icons/stories.js create mode 100644 packages/livechat/src/icons/video.svg create mode 100644 packages/livechat/src/icons/videoIcon.svg create mode 100644 packages/livechat/src/icons/zip.svg create mode 100644 packages/livechat/src/index.ejs create mode 100644 packages/livechat/src/index.ts create mode 100644 packages/livechat/src/lib/api.js create mode 100644 packages/livechat/src/lib/commands.js create mode 100644 packages/livechat/src/lib/connection.js create mode 100644 packages/livechat/src/lib/constants.js create mode 100644 packages/livechat/src/lib/customFields.js create mode 100644 packages/livechat/src/lib/email.js create mode 100644 packages/livechat/src/lib/hooks.js create mode 100644 packages/livechat/src/lib/locale.js create mode 100644 packages/livechat/src/lib/main.js create mode 100644 packages/livechat/src/lib/parentCall.js create mode 100644 packages/livechat/src/lib/random.js create mode 100644 packages/livechat/src/lib/room.js create mode 100644 packages/livechat/src/lib/threads.js create mode 100644 packages/livechat/src/lib/transcript.js create mode 100644 packages/livechat/src/lib/triggers.js create mode 100644 packages/livechat/src/lib/uiKit.js create mode 100644 packages/livechat/src/lib/userPresence.js create mode 100644 packages/livechat/src/manifest.json create mode 100644 packages/livechat/src/polyfills.js create mode 100644 packages/livechat/src/routes/Chat/component.js create mode 100644 packages/livechat/src/routes/Chat/connector.js create mode 100644 packages/livechat/src/routes/Chat/container.js create mode 100644 packages/livechat/src/routes/Chat/index.js create mode 100644 packages/livechat/src/routes/Chat/stories.js create mode 100644 packages/livechat/src/routes/Chat/styles.scss create mode 100644 packages/livechat/src/routes/ChatFinished/component.js create mode 100644 packages/livechat/src/routes/ChatFinished/container.js create mode 100644 packages/livechat/src/routes/ChatFinished/index.js create mode 100644 packages/livechat/src/routes/ChatFinished/stories.js create mode 100644 packages/livechat/src/routes/ChatFinished/styles.scss create mode 100644 packages/livechat/src/routes/GDPRAgreement/component.js create mode 100644 packages/livechat/src/routes/GDPRAgreement/container.js create mode 100644 packages/livechat/src/routes/GDPRAgreement/index.js create mode 100644 packages/livechat/src/routes/GDPRAgreement/stories.js create mode 100644 packages/livechat/src/routes/GDPRAgreement/styles.scss create mode 100644 packages/livechat/src/routes/LeaveMessage/component.js create mode 100644 packages/livechat/src/routes/LeaveMessage/container.js create mode 100644 packages/livechat/src/routes/LeaveMessage/index.js create mode 100644 packages/livechat/src/routes/LeaveMessage/stories.js create mode 100644 packages/livechat/src/routes/LeaveMessage/styles.scss create mode 100644 packages/livechat/src/routes/Register/component.js create mode 100644 packages/livechat/src/routes/Register/container.js create mode 100644 packages/livechat/src/routes/Register/index.js create mode 100644 packages/livechat/src/routes/Register/stories.js create mode 100644 packages/livechat/src/routes/Register/styles.scss create mode 100644 packages/livechat/src/routes/SwitchDepartment/component.js create mode 100644 packages/livechat/src/routes/SwitchDepartment/connector.js create mode 100644 packages/livechat/src/routes/SwitchDepartment/container.js create mode 100644 packages/livechat/src/routes/SwitchDepartment/index.js create mode 100644 packages/livechat/src/routes/SwitchDepartment/stories.js create mode 100644 packages/livechat/src/routes/SwitchDepartment/styles.scss create mode 100644 packages/livechat/src/routes/TriggerMessage/component.js create mode 100644 packages/livechat/src/routes/TriggerMessage/container.js create mode 100644 packages/livechat/src/routes/TriggerMessage/index.js create mode 100644 packages/livechat/src/routes/TriggerMessage/stories.js create mode 100644 packages/livechat/src/routes/TriggerMessage/styles.scss create mode 100644 packages/livechat/src/store/Store.js create mode 100644 packages/livechat/src/store/index.js create mode 100644 packages/livechat/src/styles/colors.scss create mode 100644 packages/livechat/src/styles/grid.scss create mode 100644 packages/livechat/src/styles/helpers.scss create mode 100644 packages/livechat/src/styles/index.scss create mode 100644 packages/livechat/src/styles/variables.scss create mode 100644 packages/livechat/src/widget.js create mode 100644 packages/livechat/svg-component-loader.js create mode 100644 packages/livechat/tsconfig.json create mode 100644 packages/livechat/webpack.config.js create mode 100644 packages/livechat/widget-demo.html create mode 100644 postcss.config.js diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 602b838539fc..6f7c44c3c04b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,6 +2,7 @@ /packages/core-typings/ @RocketChat/chat-engine /packages/rest-typings/ @RocketChat/chat-engine /packages/eslint-config/ @RocketChat/chat-engine +/packages/livechat/ @RocketChat/frontend @RocketChat/chat-engine /.vscode/ @RocketChat/chat-engine /.github/ @RocketChat/chat-engine /_templates/ @RocketChat/chat-engine diff --git a/.github/no-js-action-config.json b/.github/no-js-action-config.json index 5e76f81ed62b..5dd97fccaf67 100644 --- a/.github/no-js-action-config.json +++ b/.github/no-js-action-config.json @@ -1,5 +1,5 @@ { "added": { - "ignore": ["packages/accounts-linkedin/**/*", "packages/linkedin-oauth/**/*", "tests/cypress/integration/08-resolutions.spec.js", "**/.eslintrc.js", "packages/eslint-config/**"] + "ignore": ["packages/accounts-linkedin/**/*", "packages/linkedin-oauth/**/*", "tests/cypress/integration/08-resolutions.spec.js", "**/.eslintrc.js", "packages/eslint-config/**", "**/babel.config.js"] } } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 20b5f5fe342b..df7489467d08 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -73,7 +73,7 @@ "@faker-js/faker": "6.1.2", "@playwright/test": "^1.21.0", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/livechat": "1.13.3", + "@rocket.chat/livechat": "workspace:^", "@settlin/spacebars-loader": "^1.0.9", "@storybook/addon-essentials": "~6.4.19", "@storybook/addon-interactions": "~6.4.19", diff --git a/apps/meteor/packages/rocketchat-livechat/plugin/build.sh b/apps/meteor/packages/rocketchat-livechat/plugin/build.sh index 41bb520ce19e..b4f2a4e0dd77 100644 --- a/apps/meteor/packages/rocketchat-livechat/plugin/build.sh +++ b/apps/meteor/packages/rocketchat-livechat/plugin/build.sh @@ -15,7 +15,7 @@ mkdir $LIVECHAT_ASSETS_DIR echo "Installing Livechat ${LATEST_LIVECHAT_VERSION}..." cd $LIVECHAT_DIR -cp -a $ROOT/node_modules/\@rocket.chat/livechat/build/. ./ +cp -a $ROOT/node_modules/\@rocket.chat/livechat/dist/. ./ # change to lowercase so all injected junk from rocket.chat is not sent: https://github.com/meteorhacks/meteor-inject-initial/blob/master/lib/inject-core.js#L10 # this is not harmful since doctype is case-insesitive: https://www.w3.org/TR/html5/syntax.html#the-doctype meteor node -e 'fs.writeFileSync("index.html", fs.readFileSync("index.html").toString().replace(">;;9l55u;+%)z>`?9qAq~7%|Gs(9`=%1peCx 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 literal 0 HcmV?d00001 diff --git a/packages/livechat/.storybook/assets/beep.mp3 b/packages/livechat/.storybook/assets/beep.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cd3a3ecded0158e5ececd0520a73cfe59915e2a3 GIT binary patch literal 6318 zcmeI$do)yg8wc>;Tn)x$m>Ab~BFX(8<(OdzQIphUk|r}`+#~6t%#aefC7hI+ZbT$1 zB-g^Lj>=$CoDQ9E9LjNGtX%hNdjGZFwcdZuvexU_Yp>tl&)RG4XMaC??LW3F)f@%H zwZV(#WV*DfFYUX-qr=#4hfWx=!b71SCy-M>fIsVK6oBV0H7;EN5C%j5kh2tyzBLVn zhsXeuN2Ae_0EQ25u?-45IQ{jinQ7J8xbYA9daAs=bSj>E9TjYD^AoiLwOy7+sKt|H zMcs|80UC+sg-Zg5XyJWe_KW>-Dg;V)%NwV}M(b8uJYeDgZ!HYNi9ajZ25^+6 z{ac~r1igR-8l=Cqk zfDYv_?$&L^%B@Az9vjG@;-9qQ902Q$iz>kitE9#y4AO?fR3e%{g&(&xv3b0}Df390 zs)LR3#bWp5Om=7W@Odq)o0MX~n2RN3^1e3DAxLAwB(O26=it}AxC#X+(}8{0^!z@Z z2zE8)04A@f{@cR>AdkMb=aO;8nyiAvZ)^%P2?x$vjpkcuP=e$3x}-+5IvCh(xT{GC z31G;zMK4azrE9S{p02I>p>t~144q`&#bhH@GRHZ#2J*cjF``^_g7*Ztbx)zlr9 zDWuPv3%#Z$S^@CG0XKO>*olvW7P5BLb6u943nh$~-+lQb31_flh{RlG%tD8XI~!{( zg8_aDY3t?#cIsaBx-Key(d$A?&)1Z3pOtk}EKFH%Ms`#{=t4ei!`EFEb?XAd8I`3Y zPdpqe1o}2F&XOP*iI7iKb}-yOGM{p*{elbw4esDHDO5 z;{m&Wn3!TT^Q3o&lqx-st|*F$+UGo8FP%K)+Qo-Jy9^KNpn1Bh0`wV+PP5q9$6O(f*EQ-ecOU7r+V*Jck6pv zZdTx~WruoNisD@{G`7@4u~A$rRpjA}iz##x6K8y4;7 zV6jjLSMiC^{>#bK=iZM4?a~Af|C%lx-R?cw6L9(^HIv%NBKw+XOllo7%G13X{=$TU2?nviE^7s6&|U!FUC zrQ<_;S<{gX{XM5{EXKibpTHp6G;Fe|e_o{hZsNvSB=@0CEB^g}ah|CS-Ks*hp|C!u zZ@HN)Nf!_UnOt zGHBnZ4ZWptRmElZW=HpA%5wn@0IYL}d5flh)i9Ahko$|CL(7?=2d4}pz4%9!rB$3c z%m5??7vq)YV~=6fosTHLvE@7K`qQZ#{qf|lwbkFx#QnCdBxta7L^@?4N+5;j%11-) z6=v)i?I>grI`0^w4Uj1^0z2FNv-iK!i>|ikoilsqi7~-zsi{h=F|&+5s&YU_ zEOZ4BIX!k?j+H*ot@&diO;ByzGxe6!K`eDG0z~|qTHzw>zu-IR&rMD`xAdNxEG4Yk z8(aVC+32mKha7*8j^wmK?#Mx$8wo;@NhD=Srk|G&uW)hzONf_8VL%IeMlkKJN_r4Z z(Xg()wy_QLS+8#^-*@q}HtvO2hwZuuO#=CayefhW8DVVGpNyIHcZH7a6>h5B6@S!S z4k=HPMWbnt19{zQa9lV1CymqJZ z-O`Arb|;D5hB*~aCCrSp3-~XesbnkWyq5lyhDc}((sOeC6vaD7!|94jk}f>P8zI(l zv(^VazJEG^bFV{Sc|E839s~lgHJm#(ObdL{m3q3xrsNR`BvR12qi;+z5wAr5E62-x zV4s98C96goy6G^h-98-}RrreX*;;sT|K<0mlRn%tw3G0z(YaYH7OLT{iN5V9N&%=q z+mX4oOhD0462b7ym4!igWNU0A{%1aB=|NF|EM5RgxN~dTpC0Lxa=PX(X2alg3~8dP z=3w}QdJ-xy1=)mqy&a{G05mQZg+1GdcqD07u7QLi@BoEKlCshMWamq|;}}1T!5Qi) z>Lh5L`b<>2Ou8tEKp$UUk^I`_h{gVSo|H*GCd?r7u?|wzk5}QWYoFTGX=GZUyDLK@ zA%~q=PHp}>Gb=alb9IF5@!?C3Cie1zw<b1Vh;xgg5xXlb z?=-Ug*P%;0k~f{)g5oiG|=L6okQlQqWmCUaggsz^c$n(pYYmRiWilSxLQBp_Qbu+$^g? u%cZiCdaFV!Nn^QLR)v;JWhM1ih5k1UXz6$CKf5g}^v{m4dbj_U0QfhHsJ}P> literal 0 HcmV?d00001 diff --git a/packages/livechat/.storybook/assets/gazzo.jpg b/packages/livechat/.storybook/assets/gazzo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a003e5cbdb173aaae642fa0301e0ce05333c7962 GIT binary patch literal 1209 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6Cz%fkA{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8Gb#xd}tSQGwk!QoAoZbd*(d1iJNY!Px6mCUR(ExGj)=r+0Ro3Mb2)ar?pqgw6WX#60*L&=);G= zE#;OO;ZwD`@{`}~O@Hj(_{UjC>U{SWYk&6p-fP_J9vsVb0=ue<(Cx?(CD9CMZT z+j5)h<$89N&nN6QIL2;ztHM}!`Q0s(taLt}%)1vYs%FHs=}DQgLf@mVh_tKgS1vP` NSnWUWmM;JQn*dHB;z2l0003LX+uL$X=7sm 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

=6Nx*2tsi%l}f{yb4o-AT!7Bq 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

ck!hx*i! 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%0Db0>m^IX*lLqrGE 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 z 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 cP12 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

q@M9@$fj=>O#9#M2cVtj1yE%GP@At|FE_f(1V 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

y__k9PVG1R(72Oc~(@*(psA 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 z z)wJb#aNiGn7j%)fYUKVJ$J2Ybg9LoT^cnK{7O4~v)t>E%kA*035rVd+vs@_OV~?Hq z`Gua_$^X~HGq6of))7`KvxFZK?e~?kgrj^Rw;>Z-+f2eAcbQyH{8a9LtB%OI*9mC5 zny>vF-Al;80q$ZgW4Bl9VFftdA-;Lws3kTK2-y@;u*gkp9D#Ed`o{_k#|?*?N0v2U z_XX@VmN{?D=Mi`DJSaM9!^d_8ra)k+=!F9|bxS=Zk&6l0*R}Xh6Y$*>#liGs09%>Z zXFwtmLk6MUN<_X9NrRWh-qv9Y;8M(Vk{Z-d@C5R5q>@rKdM1~}VdZyX(mi4(tA~`@ z@BC74&iI(6^d%2vvhWZPe>7g?2IykX!5?3lOVTtfAAwVmlCR#YGNXT{hn*n8cUO?E zyy`GoUBE25PWjHGTGW)HcO>Gii$sIOZK)wOb%0=5P;~8ENAXF2OLig+p@w8D%HyNY z-raP^7)o`WCK)gTtG)>tpItX>gAkrOK;%L!tIzOtt%nY^s-1z!g5pC2S`?j!W}9Wi zcO~c~ZTQ-n)5ldh5e}{vDcr_P^V?jhh5)~eQ>Npei19c++}-G=@bX9a26hUGmwyA| z(1dumDiLnXhTbOD}QYutYF;fV1EX${W+Kn*D~YXb#G9 z;fWC=-0pW0NPrSc8arNpk5+%R-m3s02)c@t1DSZB)2r$XA!K#fU7XLJyM)G7AUZ;MHKDc|qj;3-j^v2c z5I4BdkwM1oQqEC>6Uv2Y+myDA5@>xv%SyksTK4pUJrF`49pn9y5BfOmK34RmCe)ls zw*S2x+N(;3F2dMfTR(P74I$jwtBtCgMOo|vOY3FrL+AW#5TNA3)m2{|!qJiYE8a7g z3raUB*#aUDxo-C_x&2ruRWy?Ww8^fYS+O)NGj^WoDRLz(itgZepr9o zFhpfRO8#2~|NFQ&P~!@+mbAc2H6b^dj!H <%3Ze3yueA;vgH-b9uMA($iQzou~Z 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⁣Q>mws7&U+D(QH@ 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

N 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%0A>oe_b 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 tQq0Mon?zAn$Z_;pcq< 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

_NtUw64-B?GvV>Jfty&Vh5j;{{V$aZK|f$jpRZ) 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 F|JlqpV7dSR literal 0 HcmV?d00001 diff --git a/packages/livechat/.storybook/assets/sample-video.mp4 b/packages/livechat/.storybook/assets/sample-video.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a0c9eab64c3ab53b449ad4fde7cc5fa99ff97a27 GIT binary patch literal 6641640 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%0AN6$zs@PI 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
Bq(Q2bQ1|QUz>UtqxrI72Q-$uhHZ!+u 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�>?4FBGQwk6-m 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%0ARzQ@p!Kv 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