diff --git a/.circleci/sign.key.gpg b/.circleci/sign.key.gpg index 488e275998d5..6d005764c11b 100644 Binary files a/.circleci/sign.key.gpg and b/.circleci/sign.key.gpg differ diff --git a/.docker/Dockerfile.rhel b/.docker/Dockerfile.rhel index 2c14a98f86d9..5d173ffbd0de 100644 --- a/.docker/Dockerfile.rhel +++ b/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/rhscl/nodejs-8-rhel7 -ENV RC_VERSION 1.1.3 +ENV RC_VERSION 1.3.2 MAINTAINER buildmaster@rocket.chat diff --git a/.github/history.json b/.github/history.json index 56cea9b0e04e..c916720042ec 100644 --- a/.github/history.json +++ b/.github/history.json @@ -31852,6 +31852,16 @@ "4.0" ], "pull_requests": [ + { + "pr": "14823", + "title": "Release 1.1.2", + "userLogin": "sampaiodiego", + "contributors": [ + "Hudell", + "sampaiodiego", + "MarcosSpessatto" + ] + }, { "pr": "14763", "title": "[FIX] User status information on User Info panel", @@ -31894,6 +31904,98 @@ "4.0" ], "pull_requests": [ + { + "pr": "14850", + "title": "Release 1.1.3", + "userLogin": "sampaiodiego", + "contributors": [ + "ggazzo", + "sampaiodiego" + ] + }, + { + "pr": "14839", + "title": "Regression: thread loading parent msg if is not loaded", + "userLogin": "ggazzo", + "milestone": "1.1.3", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14837", + "title": "[FIX] Gap of messages when loading history when using threads", + "userLogin": "ggazzo", + "milestone": "1.1.3", + "contributors": [ + "ggazzo" + ] + } + ] + }, + "1.2.0-rc.0": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "13933", + "title": "[NEW] Custom User Status", + "userLogin": "Hudell", + "milestone": "1.2.0", + "contributors": [ + "Hudell", + "web-flow", + "engelgabriel", + "wreiske" + ] + }, + { + "pr": "14645", + "title": "[FIX] Error when using Download My Data or Export My Data", + "userLogin": "Hudell", + "contributors": [ + "Hudell", + "MarcosSpessatto", + "web-flow" + ] + }, + { + "pr": "14175", + "title": "[IMPROVE] Adds link to download generated user data file", + "userLogin": "Hudell", + "contributors": [ + "Hudell", + "web-flow", + "MarcosSpessatto" + ] + }, + { + "pr": "14810", + "title": "[FIX] Removes E2E action button, icon and banner when E2E is disabled.", + "userLogin": "marceloschmidt", + "milestone": "1.2.0", + "contributors": [ + "marceloschmidt" + ] + }, + { + "pr": "13900", + "title": "[IMPROVE] Layout of livechat manager pages to new style", + "userLogin": "ggazzo", + "milestone": "1.2.0", + "contributors": [ + "renatobecker", + "engelgabriel", + "web-flow", + "ggazzo" + ] + }, { "pr": "14839", "title": "Regression: thread loading parent msg if is not loaded", @@ -31911,6 +32013,1614 @@ "contributors": [ "ggazzo" ] + }, + { + "pr": "14838", + "title": "[NEW] changed mongo version for snap from 3.2.7 to 3.4.20", + "userLogin": "LuluGO", + "contributors": [ + "LuluGO" + ] + }, + { + "pr": "14759", + "title": "[NEW] Add loading animation to webdav file picker", + "userLogin": "ubarsaiyan", + "contributors": [ + "ubarsaiyan", + "web-flow" + ] + }, + { + "pr": "14717", + "title": "[FIX] Anonymous chat read", + "userLogin": "sampaiodiego", + "milestone": "1.1.2", + "contributors": [ + "sampaiodiego", + "ggazzo", + "MarcosSpessatto", + "web-flow" + ] + }, + { + "pr": "14699", + "title": "[NEW] Add tmid property to outgoing integration", + "userLogin": "MarcosSpessatto", + "milestone": "1.2.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14805", + "title": "Fix not fully extracted pieces", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "14710", + "title": "[FIX] Assume microphone is available", + "userLogin": "tassoevan", + "milestone": "1.2.0", + "contributors": [ + "tassoevan", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14714", + "title": "[NEW] Endpoint to anonymously read channel's messages", + "userLogin": "PrajvalRaval", + "milestone": "1.2.0", + "contributors": [ + "PrajvalRaval", + "web-flow", + "MarcosSpessatto" + ] + }, + { + "pr": "14665", + "title": "[FIX] Move the set Avatar call on user creation to make sure the user has username", + "userLogin": "MarcosSpessatto", + "milestone": "1.2.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14763", + "title": "[FIX] User status information on User Info panel", + "userLogin": "MarcosSpessatto", + "milestone": "1.1.2", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14804", + "title": "Regression: Fix file upload", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "14777", + "title": "Extract permissions functions", + "userLogin": "sampaiodiego", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "14779", + "title": "[NEW] Add Livechat inquiries endpoints", + "userLogin": "MarcosSpessatto", + "milestone": "1.2.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14754", + "title": "Add custom fileupload whitelist property", + "userLogin": "renatobecker", + "milestone": "1.2.0", + "contributors": [ + "renatobecker" + ] + }, + { + "pr": "14724", + "title": "[FIX] users typing forever", + "userLogin": "ggazzo", + "milestone": "1.2.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14709", + "title": "[FIX] Increasing time to rate limit in shield.svg endpoint and add a setting to disable API rate limiter", + "userLogin": "MarcosSpessatto", + "milestone": "1.2.0", + "contributors": [ + "MarcosSpessatto", + "web-flow", + "rodrigok" + ] + }, + { + "pr": "14711", + "title": "[FIX] User Real Name being erased when not modified", + "userLogin": "Hudell", + "milestone": "1.1.2", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14690", + "title": "[NEW] Configuration to limit amount of livechat inquiries displayed", + "userLogin": "renatobecker", + "milestone": "1.2.0", + "contributors": [ + "renatobecker", + "web-flow" + ] + }, + { + "pr": "14569", + "title": "[FIX] Wrong filter field when filtering current Livechats", + "userLogin": "renatobecker", + "milestone": "1.2.0", + "contributors": [ + "renatobecker" + ] + }, + { + "pr": "14589", + "title": "[IMPROVE] Add an optional rocketchat-protocol DNS entry for Federation", + "userLogin": "alansikora", + "milestone": "1.2.0", + "contributors": [ + "alansikora" + ] + }, + { + "pr": "14471", + "title": "[FIX] Import Chart.js error", + "userLogin": "sonbn0", + "contributors": [ + "sonbn0", + "web-flow", + "Hudell" + ] + }, + { + "pr": "14533", + "title": "[FIX] Name is undefined in some emails", + "userLogin": "MarcosSpessatto", + "milestone": "1.2.0", + "contributors": [ + "MarcosSpessatto", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14624", + "title": "[IMPROVE] Use configurable colors on sidebar items", + "userLogin": "tassoevan", + "milestone": "1.2.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "14686", + "title": "[FIX] SAML login error.", + "userLogin": "Hudell", + "milestone": "1.1.1", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14674", + "title": "Removing unnecesary federation configs", + "userLogin": "alansikora", + "milestone": "1.1.1", + "contributors": [ + "alansikora" + ] + }, + { + "pr": "14656", + "title": "Merge master into develop & Set version to 1.2.0-develop", + "userLogin": "sampaiodiego", + "contributors": [ + "tassoevan", + "rodrigok", + "mohamedar97", + "ggazzo", + "thaiphv", + "knrt10", + "lolimay", + "AnBo83", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14668", + "title": "[FIX] Load messages after disconnect and message box scroll missing", + "userLogin": "ggazzo", + "milestone": "1.1.1", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14493", + "title": "[FIX] Direct reply delete config and description", + "userLogin": "ruKurz", + "contributors": [ + "ruKurz", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14850", + "title": "Release 1.1.3", + "userLogin": "sampaiodiego", + "contributors": [ + "ggazzo", + "sampaiodiego" + ] + }, + { + "pr": "14763", + "title": "[FIX] User status information on User Info panel", + "userLogin": "MarcosSpessatto", + "milestone": "1.1.2", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14711", + "title": "[FIX] User Real Name being erased when not modified", + "userLogin": "Hudell", + "milestone": "1.1.2", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14717", + "title": "[FIX] Anonymous chat read", + "userLogin": "sampaiodiego", + "milestone": "1.1.2", + "contributors": [ + "sampaiodiego", + "ggazzo", + "MarcosSpessatto", + "web-flow" + ] + }, + { + "pr": "14686", + "title": "[FIX] SAML login error.", + "userLogin": "Hudell", + "milestone": "1.1.1", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14668", + "title": "[FIX] Load messages after disconnect and message box scroll missing", + "userLogin": "ggazzo", + "milestone": "1.1.1", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14674", + "title": "Removing unnecesary federation configs", + "userLogin": "alansikora", + "milestone": "1.1.1", + "contributors": [ + "alansikora" + ] + } + ] + }, + "1.2.0-rc.1": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "14853", + "title": "[FIX] Custom status fixes", + "userLogin": "wreiske", + "milestone": "1.2.0-rc.1", + "contributors": [ + "wreiske", + "Hudell", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "14860", + "title": "Regression: Fix desktop notifications not being sent", + "userLogin": "sampaiodiego", + "milestone": "1.2.0-rc.1", + "contributors": [ + "sampaiodiego" + ] + }, + { + "pr": "14862", + "title": "Regression: Allow debugging of cached collections by name", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14859", + "title": "Allow debugging of cached collections by name", + "userLogin": "ggazzo", + "milestone": "1.2.0-rc.1", + "contributors": [ + "ggazzo", + "sampaiodiego" + ] + } + ] + }, + "1.2.0-rc.2": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "14886", + "title": "[NEW] Show App bundles and its apps", + "userLogin": "rodrigok", + "milestone": "1.2.0", + "contributors": [ + "rodrigok", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14887", + "title": "[FIX] LinkedIn OAuth login", + "userLogin": "engelgabriel", + "milestone": "1.2.0", + "contributors": [ + "Hudell" + ] + } + ] + }, + "1.2.0": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "14850", + "title": "Release 1.1.3", + "userLogin": "sampaiodiego", + "contributors": [ + "ggazzo", + "sampaiodiego" + ] + }, + { + "pr": "14763", + "title": "[FIX] User status information on User Info panel", + "userLogin": "MarcosSpessatto", + "milestone": "1.1.2", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14711", + "title": "[FIX] User Real Name being erased when not modified", + "userLogin": "Hudell", + "milestone": "1.1.2", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14717", + "title": "[FIX] Anonymous chat read", + "userLogin": "sampaiodiego", + "milestone": "1.1.2", + "contributors": [ + "sampaiodiego", + "ggazzo", + "MarcosSpessatto", + "web-flow" + ] + }, + { + "pr": "14686", + "title": "[FIX] SAML login error.", + "userLogin": "Hudell", + "milestone": "1.1.1", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14668", + "title": "[FIX] Load messages after disconnect and message box scroll missing", + "userLogin": "ggazzo", + "milestone": "1.1.1", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14674", + "title": "Removing unnecesary federation configs", + "userLogin": "alansikora", + "milestone": "1.1.1", + "contributors": [ + "alansikora" + ] + } + ] + }, + "1.3.0-rc.0": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "14954", + "title": "[NEW] Show helpful error when oplog is missing", + "userLogin": "justinr1234", + "contributors": [ + "justinr1234", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14948", + "title": "[NEW] Subscription enabled marketplace", + "userLogin": "d-gubert", + "contributors": [ + "graywolf336", + "d-gubert", + "web-flow", + "tassoevan" + ] + }, + { + "pr": "15025", + "title": "[NEW] Deprecate MongoDB version 3.2", + "userLogin": "rodrigok", + "milestone": "1.3.0", + "contributors": [ + "rodrigok" + ] + }, + { + "pr": "14622", + "title": "[FIX] Russian grammatical errors", + "userLogin": "BehindLoader", + "contributors": [ + "BehindLoader" + ] + }, + { + "pr": "14412", + "title": "[FIX] Message attachments not allowing float numbers", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14515", + "title": "Wrong text when reporting a message", + "userLogin": "zdumitru", + "contributors": [ + "zdumitru", + "web-flow" + ] + }, + { + "pr": "14833", + "title": "[FIX] Typo in german translation", + "userLogin": "Le-onardo", + "contributors": [ + null, + "Le-onardo" + ] + }, + { + "pr": "15019", + "title": "[NEW] Options to filter discussion and livechat on Admin > Rooms", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14916", + "title": "[FIX] users.setStatus REST endpoint not allowing reset status message", + "userLogin": "cardoso", + "contributors": [ + "cardoso" + ] + }, + { + "pr": "15013", + "title": "Add missing French translation", + "userLogin": "commiaI", + "contributors": [ + "commiaI", + "web-flow" + ] + }, + { + "pr": "15014", + "title": "[NEW] Settings to further customize GitLab OAuth", + "userLogin": "Hudell", + "milestone": "1.3.0", + "contributors": [ + "Hudell", + "web-flow" + ] + }, + { + "pr": "14935", + "title": "[NEW] Accept multiple redirect URIs on OAuth Apps", + "userLogin": "Hudell", + "milestone": "1.3.0", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14675", + "title": "[NEW] Setting to configure custom authn context on SAML requests", + "userLogin": "Hudell", + "milestone": "1.3.0", + "contributors": [ + "Hudell", + "web-flow" + ] + }, + { + "pr": "15026", + "title": "Fix statistics error for apps on first load", + "userLogin": "d-gubert", + "milestone": "1.3.0", + "contributors": [ + "d-gubert" + ] + }, + { + "pr": "15006", + "title": "[FIX] SVG uploads crashing process", + "userLogin": "snoopotic", + "contributors": [ + "snoopotic", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "14941", + "title": "Always convert the sha256 password to lowercase on checking", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto", + "sampaiodiego" + ] + }, + { + "pr": "15022", + "title": "[IMPROVE] Connectivity Services License Sync", + "userLogin": "geekgonecrazy", + "contributors": [ + "geekgonecrazy", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "15021", + "title": "[FIX] Edit message with arrow up key if not last message", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14845", + "title": "[FIX] Livechat dashboard average and reaction time labels", + "userLogin": "anandpathak", + "milestone": "1.3.0", + "contributors": [ + "anandpathak" + ] + }, + { + "pr": "14878", + "title": "New: Apps and integrations statistics", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto", + "d-gubert", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "14950", + "title": "[FIX] Edit permissions screen", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo", + "MarcosSpessatto", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "15020", + "title": "[FIX] Invite users auto complete cropping results", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14879", + "title": "[NEW] Webdav File Picker", + "userLogin": "ubarsaiyan", + "milestone": "1.3.0", + "contributors": [ + "ubarsaiyan", + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14884", + "title": "improve: relocate some of wizard info to register", + "userLogin": "geekgonecrazy", + "milestone": "1.3.0", + "contributors": [ + "geekgonecrazy", + "rodrigok", + "web-flow" + ] + }, + { + "pr": "14861", + "title": "[FIX] Always displaying jumbomojis when using \"marked\" markdown", + "userLogin": "brakhane", + "milestone": "1.3.0", + "contributors": [ + "brakhane", + "tassoevan", + "web-flow" + ] + }, + { + "pr": "15004", + "title": "[IMPROVE] Add flag to identify remote federation users", + "userLogin": "alansikora", + "contributors": [ + "alansikora", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "15000", + "title": "[FIX] CustomOauth Identity Step errors displayed in HTML format", + "userLogin": "Hudell", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "15001", + "title": "[FIX] Custom User Status throttled by rate limiter", + "userLogin": "Hudell", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14468", + "title": "[FIX] Not being able to mention users with \"all\" and \"here\" usernames - do not allow users register that usernames", + "userLogin": "hamidrezabstn", + "contributors": [ + "hamidrezabstn", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "14457", + "title": "Improve Docker compose readability", + "userLogin": "NateScarlet", + "contributors": [ + "NateScarlet", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "14992", + "title": "[IMPROVE] Extract federation config to its own file", + "userLogin": "d-gubert", + "contributors": [ + "d-gubert" + ] + }, + { + "pr": "14969", + "title": "Bump marked from 0.5.2 to 0.6.1", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow", + "engelgabriel", + "sampaiodiego" + ] + }, + { + "pr": "14971", + "title": "Remove unused Meteor dependency (yasinuslu:blaze-meta)", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan", + "engelgabriel", + "web-flow" + ] + }, + { + "pr": "14977", + "title": "Bump photoswipe version to 4.1.3", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "14976", + "title": "Bump node-rsa version to 1.0.5", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14974", + "title": "Bump juice version to 5.2.0", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "14973", + "title": "Remove unused dependency (lokijs)", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan", + "engelgabriel", + "web-flow" + ] + }, + { + "pr": "14966", + "title": "[FIX] Users staying online after logout", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14980", + "title": "Regression: patch to improve emoji render", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14722", + "title": "[IMPROVEMENT] patch to improve emoji render", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14965", + "title": "[FIX] Chrome doesn't load additional search results when bottom is reached", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14960", + "title": "[FIX] Wrong label order on room settings", + "userLogin": "Hudell", + "contributors": [ + "Hudell" + ] + }, + { + "pr": "14970", + "title": "[FIX] Allow storing the navigation history of unregistered Livechat visitors", + "userLogin": "renatobecker", + "milestone": "1.3.0", + "contributors": [ + "renatobecker" + ] + }, + { + "pr": "14922", + "title": "Bump jquery from 3.3.1 to 3.4.0 in /packages/rocketchat-livechat/.app", + "userLogin": "dependabot[bot]", + "contributors": [ + "dependabot[bot]", + "web-flow" + ] + }, + { + "pr": "14951", + "title": "[FIX] 50 custom emoji limit", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14952", + "title": "[FIX] eternal loading file list", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14967", + "title": "[FIX] load more messages", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14968", + "title": "[FIX] Loading indicator positioning", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "14964", + "title": "[IMPROVE] Update tabs markup", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "14949", + "title": "[FIX] Jump to message missing in Starred Messages", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14963", + "title": "[IMPROVE] Remove too specific helpers isFirefox() and isChrome()", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "14753", + "title": "[FIX] Method `getUsersOfRoom` not returning offline users if limit is not defined", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14953", + "title": "[FIX] OTR key icon missing on messages", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14945", + "title": "[FIX] Prevent error on trying insert message with duplicated id", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto", + "web-flow" + ] + }, + { + "pr": "14808", + "title": "[FIX] LDAP login with customField sync", + "userLogin": "magicbelette", + "milestone": "1.3.0", + "contributors": [ + "magicbelette", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "14958", + "title": "[FIX]Wrong custom status displayed on room leader panel", + "userLogin": "Hudell", + "contributors": [ + "Hudell", + "sampaiodiego", + "web-flow" + ] + }, + { + "pr": "14921", + "title": "[NEW] Setting to prevent Livechat agents online when Office Hours are closed", + "userLogin": "renatobecker", + "milestone": "1.3.0", + "contributors": [ + "renatobecker", + "web-flow" + ] + }, + { + "pr": "14915", + "title": "Callbacks perf", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow", + "sampaiodiego", + "tassoevan" + ] + }, + { + "pr": "14917", + "title": "Split oplog emitters in files", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "14909", + "title": "Extract canSendMessage function", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo", + "web-flow" + ] + }, + { + "pr": "14671", + "title": "[FIX] Video recorder message echo", + "userLogin": "vova-zush", + "milestone": "1.2.0", + "contributors": [ + "vova-zush" + ] + }, + { + "pr": "14785", + "title": "[FIX] Opening Livechat messages on mobile apps", + "userLogin": "zolbayars", + "milestone": "1.3.0", + "contributors": [ + "zolbayars", + "web-flow" + ] + }, + { + "pr": "14852", + "title": "[IMPROVE] Add descriptions on user data download buttons and popup info", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.0", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "14880", + "title": "[FIX] SAML login by giving displayName priority over userName for fullName", + "userLogin": "pkolmann", + "milestone": "1.3.0", + "contributors": [ + "pkolmann" + ] + }, + { + "pr": "14851", + "title": "Improve: Get public key for marketplace", + "userLogin": "geekgonecrazy", + "milestone": "1.3.0", + "contributors": [ + "geekgonecrazy", + "d-gubert", + "web-flow" + ] + }, + { + "pr": "14894", + "title": "[FIX] Not showing local app on App Details", + "userLogin": "d-gubert", + "milestone": "1.2.1", + "contributors": [ + "d-gubert" + ] + }, + { + "pr": "14889", + "title": "Merge master into develop & Set version to 1.3.0-develop", + "userLogin": "sampaiodiego", + "contributors": [ + "ggazzo", + "sampaiodiego", + "alansikora", + "Hudell", + "MarcosSpessatto", + "web-flow" + ] + } + ] + }, + "1.2.1": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "14898", + "title": "Release 1.2.1", + "userLogin": "sampaiodiego", + "contributors": [ + "d-gubert", + "sampaiodiego" + ] + }, + { + "pr": "14894", + "title": "[FIX] Not showing local app on App Details", + "userLogin": "d-gubert", + "milestone": "1.2.1", + "contributors": [ + "d-gubert" + ] + } + ] + }, + "1.3.0-rc.1": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15041", + "title": "Regression: fix code style, setup wizard error and profile page header", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "15039", + "title": "Regression: Framework version being attached to a request that doesn't require it", + "userLogin": "graywolf336", + "contributors": [ + "graywolf336" + ] + } + ] + }, + "1.3.0-rc.2": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15046", + "title": "Update Livechat widget", + "userLogin": "renatobecker", + "milestone": "1.3.0", + "contributors": [ + "renatobecker" + ] + } + ] + }, + "1.0.4": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15054", + "title": "[FIX] Not sanitized message types", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + } + ] + }, + "1.1.4": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15054", + "title": "[FIX] Not sanitized message types", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + } + ] + }, + "1.2.2": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15054", + "title": "[FIX] Not sanitized message types", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + } + ] + }, + "1.2.3": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [] + }, + "1.3.0-rc.3": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15067", + "title": "Regression: getSetupWizardParameters", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "15060", + "title": "[FIX] setupWizard calling multiple getSetupWizardParameters", + "userLogin": "ggazzo", + "milestone": "1.3.0", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "15027", + "title": "Regression: Webdav File Picker search and fixed overflows", + "userLogin": "ubarsaiyan", + "milestone": "1.3.0", + "contributors": [ + "ubarsaiyan", + "ggazzo" + ] + }, + { + "pr": "15054", + "title": "[FIX] Not sanitized message types", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] + } + ] + }, + "1.3.0-rc.4": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15080", + "title": "Regression: Improve apps bridges for HA setup", + "userLogin": "d-gubert", + "milestone": "1.3.0", + "contributors": [ + "d-gubert", + "web-flow", + "sampaiodiego" + ] + }, + { + "pr": "15075", + "title": "Regression: displaying errors for apps not installed from Marketplace", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan", + "ggazzo", + "d-gubert", + "web-flow" + ] + }, + { + "pr": "15076", + "title": "Regression: Marketplace app pricing plan description", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan", + "d-gubert", + "web-flow" + ] + }, + { + "pr": "15077", + "title": "Regression: uninstall subscribed app modal", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan" + ] + }, + { + "pr": "15045", + "title": "Regression: Apps and Marketplace UI issues", + "userLogin": "tassoevan", + "milestone": "1.3.0", + "contributors": [ + "tassoevan", + "rodrigok", + "geekgonecrazy", + "graywolf336", + "d-gubert" + ] + } + ] + }, + "1.3.0": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "14898", + "title": "Release 1.2.1", + "userLogin": "sampaiodiego", + "contributors": [ + "d-gubert", + "sampaiodiego" + ] + }, + { + "pr": "14894", + "title": "[FIX] Not showing local app on App Details", + "userLogin": "d-gubert", + "milestone": "1.2.1", + "contributors": [ + "d-gubert" + ] + } + ] + }, + "1.0.5": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15141", + "title": "Fix custom auth", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.1", + "contributors": [ + "MarcosSpessatto" + ] + } + ] + }, + "1.1.5": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15141", + "title": "Fix custom auth", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.1", + "contributors": [ + "MarcosSpessatto" + ] + } + ] + }, + "1.2.4": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15141", + "title": "Fix custom auth", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.1", + "contributors": [ + "MarcosSpessatto" + ] + } + ] + }, + "1.3.1": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15141", + "title": "Fix custom auth", + "userLogin": "MarcosSpessatto", + "milestone": "1.3.1", + "contributors": [ + "MarcosSpessatto" + ] + }, + { + "pr": "15119", + "title": "[FIX] Custom emoji table scroll", + "userLogin": "ggazzo", + "milestone": "1.3.1", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "15114", + "title": "[FIX] Direct Message names not visible on Admin panel", + "userLogin": "ggazzo", + "milestone": "1.3.1", + "contributors": [ + "ggazzo", + "sampaiodiego" + ] + } + ] + }, + "1.3.2": { + "node_version": "8.11.4", + "npm_version": "6.4.1", + "mongo_versions": [ + "3.2", + "3.4", + "3.6", + "4.0" + ], + "pull_requests": [ + { + "pr": "15172", + "title": "[FIX] Attachment download button behavior", + "userLogin": "tassoevan", + "milestone": "1.3.2", + "contributors": [ + "tassoevan", + "sampaiodiego" + ] + }, + { + "pr": "15175", + "title": "[FIX] Messages search scroll", + "userLogin": "ggazzo", + "milestone": "1.3.2", + "contributors": [ + "ggazzo" + ] + }, + { + "pr": "15157", + "title": "[FIX] IE11 - callback createTreeWalker doesnt accept acceptNode", + "userLogin": "ggazzo", + "milestone": "1.3.2", + "contributors": [ + "ggazzo", + "tassoevan" + ] + }, + { + "pr": "15173", + "title": "Update latest Livechat widget version to 1.1.4", + "userLogin": "renatobecker", + "milestone": "1.3.2", + "contributors": [ + "renatobecker" + ] + }, + { + "pr": "15154", + "title": "Update latest Livechat widget version(1.1.3)", + "userLogin": "renatobecker", + "milestone": "1.3.2", + "contributors": [ + "renatobecker", + "web-flow" + ] } ] } diff --git a/.meteor/packages b/.meteor/packages index 7c31c290a19c..95b455acb147 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -71,7 +71,6 @@ raix:handlebar-helpers rocketchat:push raix:ui-dropped-event todda00:friendly-slugs -yasinuslu:blaze-meta tap:i18n diff --git a/.meteor/versions b/.meteor/versions index 16e0f8be5653..babbbf8f8b29 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -70,7 +70,7 @@ konecty:change-case@2.3.0 konecty:delayed-task@1.0.0 konecty:mongo-counter@0.0.5_3 konecty:multiple-instances-status@1.1.0 -konecty:user-presence@2.4.0 +konecty:user-presence@2.5.0 launch-screen@1.1.1 less@2.8.0 littledata:synced-cron@1.5.1 @@ -112,8 +112,8 @@ oauth2@1.2.1 observe-sequence@1.0.16 ordered-dict@1.1.0 ostrio:cookies@2.3.0 -pauli:accounts-linkedin@2.1.5 -pauli:linkedin-oauth@1.2.0 +pauli:accounts-linkedin@5.0.0 +pauli:linkedin-oauth@5.0.0 promise@0.11.2 raix:eventemitter@0.1.3 raix:eventstate@0.0.4 @@ -129,7 +129,7 @@ rocketchat:i18n@0.0.1 rocketchat:livechat@0.0.1 rocketchat:mongo-config@0.0.1 rocketchat:monitoring@2.30.2_3 -rocketchat:oauth2-server@2.0.0 +rocketchat:oauth2-server@2.1.0 rocketchat:push@3.3.1 rocketchat:streamer@1.0.2 rocketchat:version@1.0.0 @@ -159,4 +159,3 @@ underscore@1.0.10 url@1.2.0 webapp@1.7.2 webapp-hashing@1.0.9 -yasinuslu:blaze-meta@0.3.3 diff --git a/.snapcraft/resources/preparemongo b/.snapcraft/resources/preparemongo index 332dd7d46847..9cfe098409ec 100755 --- a/.snapcraft/resources/preparemongo +++ b/.snapcraft/resources/preparemongo @@ -2,8 +2,8 @@ if [[ $(uname -m) == "x86_64" ]] then - wget --backups=0 "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.7.tgz" - tar -zxf ./mongodb-linux-x86_64-ubuntu1604-3.2.7.tgz --strip-components=1 + wget --backups=0 "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.20.tgz" + tar -zxf ./mongodb-linux-x86_64-3.4.20.tgz --strip-components=1 else IFS=" " read -a links <<< $(apt-get -y --print-uris install mongodb | egrep -o "https?://[^']+") for link in ${links[@]} diff --git a/.stylelintignore b/.stylelintignore index 4f8093de49f0..c62f04a77570 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -1,3 +1,4 @@ app/theme/client/vendor/fontello/css/fontello.css packages/meteor-autocomplete/client/autocomplete.css app/katex/katex.min.css +app/emoji-emojione/client/*.css diff --git a/.travis/snap.sh b/.travis/snap.sh index fe341516cf59..83a17c0fcf81 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=1.1.3 + RC_VERSION=1.3.2 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 899165de8707..76bc450b32aa 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,322 @@ +# 1.3.2 +`2019-08-13 ยท 3 ๐Ÿ› ยท 2 ๐Ÿ” ยท 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)) +- Messages search scroll ([#15175](https://github.com/RocketChat/Rocket.Chat/pull/15175)) +- IE11 - callback createTreeWalker doesnt accept acceptNode ([#15157](https://github.com/RocketChat/Rocket.Chat/pull/15157)) + +
+๐Ÿ” Minor changes + +- 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 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` + +### 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)) + +### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Core Team ๐Ÿค“ + +- [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) + +# 1.3.0 +`2019-08-02 ยท 9 ๐ŸŽ‰ ยท 6 ๐Ÿš€ ยท 31 ๐Ÿ› ยท 31 ๐Ÿ” ยท 29 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### ๐ŸŽ‰ New features + +- 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)) +- 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)) +- Settings to further customize GitLab OAuth ([#15014](https://github.com/RocketChat/Rocket.Chat/pull/15014)) +- Accept multiple redirect URIs on OAuth Apps ([#14935](https://github.com/RocketChat/Rocket.Chat/pull/14935)) +- Setting to configure custom authn context on SAML requests ([#14675](https://github.com/RocketChat/Rocket.Chat/pull/14675)) +- Webdav File Picker ([#14879](https://github.com/RocketChat/Rocket.Chat/pull/14879) by [@ubarsaiyan](https://github.com/ubarsaiyan)) +- Setting to prevent Livechat agents online when Office Hours are closed ([#14921](https://github.com/RocketChat/Rocket.Chat/pull/14921)) + +### ๐Ÿš€ Improvements + +- Connectivity Services License Sync ([#15022](https://github.com/RocketChat/Rocket.Chat/pull/15022)) +- Add flag to identify remote federation users ([#15004](https://github.com/RocketChat/Rocket.Chat/pull/15004)) +- Extract federation config to its own file ([#14992](https://github.com/RocketChat/Rocket.Chat/pull/14992)) +- Update tabs markup ([#14964](https://github.com/RocketChat/Rocket.Chat/pull/14964)) +- Remove too specific helpers isFirefox() and isChrome() ([#14963](https://github.com/RocketChat/Rocket.Chat/pull/14963)) +- Add descriptions on user data download buttons and popup info ([#14852](https://github.com/RocketChat/Rocket.Chat/pull/14852)) + +### ๐Ÿ› Bug fixes + +- Russian grammatical errors ([#14622](https://github.com/RocketChat/Rocket.Chat/pull/14622) by [@BehindLoader](https://github.com/BehindLoader)) +- Message attachments not allowing float numbers ([#14412](https://github.com/RocketChat/Rocket.Chat/pull/14412)) +- Typo in german translation ([#14833](https://github.com/RocketChat/Rocket.Chat/pull/14833) by [@Le-onardo](https://github.com/Le-onardo)) +- users.setStatus REST endpoint not allowing reset status message ([#14916](https://github.com/RocketChat/Rocket.Chat/pull/14916)) +- SVG uploads crashing process ([#15006](https://github.com/RocketChat/Rocket.Chat/pull/15006) by [@snoopotic](https://github.com/snoopotic)) +- Edit message with arrow up key if not last message ([#15021](https://github.com/RocketChat/Rocket.Chat/pull/15021)) +- Livechat dashboard average and reaction time labels ([#14845](https://github.com/RocketChat/Rocket.Chat/pull/14845) by [@anandpathak](https://github.com/anandpathak)) +- Edit permissions screen ([#14950](https://github.com/RocketChat/Rocket.Chat/pull/14950)) +- Invite users auto complete cropping results ([#15020](https://github.com/RocketChat/Rocket.Chat/pull/15020)) +- Always displaying jumbomojis when using "marked" markdown ([#14861](https://github.com/RocketChat/Rocket.Chat/pull/14861)) +- CustomOauth Identity Step errors displayed in HTML format ([#15000](https://github.com/RocketChat/Rocket.Chat/pull/15000)) +- Custom User Status throttled by rate limiter ([#15001](https://github.com/RocketChat/Rocket.Chat/pull/15001)) +- 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)) +- Users staying online after logout ([#14966](https://github.com/RocketChat/Rocket.Chat/pull/14966)) +- Chrome doesn't load additional search results when bottom is reached ([#14965](https://github.com/RocketChat/Rocket.Chat/pull/14965)) +- Wrong label order on room settings ([#14960](https://github.com/RocketChat/Rocket.Chat/pull/14960)) +- Allow storing the navigation history of unregistered Livechat visitors ([#14970](https://github.com/RocketChat/Rocket.Chat/pull/14970)) +- 50 custom emoji limit ([#14951](https://github.com/RocketChat/Rocket.Chat/pull/14951)) +- eternal loading file list ([#14952](https://github.com/RocketChat/Rocket.Chat/pull/14952)) +- load more messages ([#14967](https://github.com/RocketChat/Rocket.Chat/pull/14967)) +- Loading indicator positioning ([#14968](https://github.com/RocketChat/Rocket.Chat/pull/14968)) +- Jump to message missing in Starred Messages ([#14949](https://github.com/RocketChat/Rocket.Chat/pull/14949)) +- Method `getUsersOfRoom` not returning offline users if limit is not defined ([#14753](https://github.com/RocketChat/Rocket.Chat/pull/14753)) +- 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)) +- LDAP login with customField sync ([#14808](https://github.com/RocketChat/Rocket.Chat/pull/14808) by [@magicbelette](https://github.com/magicbelette)) +- Wrong custom status displayed on room leader panel ([#14958](https://github.com/RocketChat/Rocket.Chat/pull/14958)) +- Video recorder message echo ([#14671](https://github.com/RocketChat/Rocket.Chat/pull/14671) by [@vova-zush](https://github.com/vova-zush)) +- Opening Livechat messages on mobile apps ([#14785](https://github.com/RocketChat/Rocket.Chat/pull/14785) by [@zolbayars](https://github.com/zolbayars)) +- 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)) + +
+๐Ÿ” Minor changes + +- Wrong text when reporting a message ([#14515](https://github.com/RocketChat/Rocket.Chat/pull/14515) by [@zdumitru](https://github.com/zdumitru)) +- Add missing French translation ([#15013](https://github.com/RocketChat/Rocket.Chat/pull/15013) by [@commiaI](https://github.com/commiaI)) +- Fix statistics error for apps on first load ([#15026](https://github.com/RocketChat/Rocket.Chat/pull/15026)) +- Always convert the sha256 password to lowercase on checking ([#14941](https://github.com/RocketChat/Rocket.Chat/pull/14941)) +- New: Apps and integrations statistics ([#14878](https://github.com/RocketChat/Rocket.Chat/pull/14878)) +- improve: relocate some of wizard info to register ([#14884](https://github.com/RocketChat/Rocket.Chat/pull/14884)) +- Improve Docker compose readability ([#14457](https://github.com/RocketChat/Rocket.Chat/pull/14457) by [@NateScarlet](https://github.com/NateScarlet)) +- 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])) +- Remove unused Meteor dependency (yasinuslu:blaze-meta) ([#14971](https://github.com/RocketChat/Rocket.Chat/pull/14971)) +- Bump photoswipe version to 4.1.3 ([#14977](https://github.com/RocketChat/Rocket.Chat/pull/14977)) +- Bump node-rsa version to 1.0.5 ([#14976](https://github.com/RocketChat/Rocket.Chat/pull/14976)) +- Bump juice version to 5.2.0 ([#14974](https://github.com/RocketChat/Rocket.Chat/pull/14974)) +- Remove unused dependency (lokijs) ([#14973](https://github.com/RocketChat/Rocket.Chat/pull/14973)) +- Regression: patch to improve emoji render ([#14980](https://github.com/RocketChat/Rocket.Chat/pull/14980)) +- [IMPROVEMENT] patch to improve emoji render ([#14722](https://github.com/RocketChat/Rocket.Chat/pull/14722)) +- 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])) +- Callbacks perf ([#14915](https://github.com/RocketChat/Rocket.Chat/pull/14915)) +- Split oplog emitters in files ([#14917](https://github.com/RocketChat/Rocket.Chat/pull/14917)) +- Extract canSendMessage function ([#14909](https://github.com/RocketChat/Rocket.Chat/pull/14909)) +- Improve: Get public key for marketplace ([#14851](https://github.com/RocketChat/Rocket.Chat/pull/14851)) +- Merge master into develop & Set version to 1.3.0-develop ([#14889](https://github.com/RocketChat/Rocket.Chat/pull/14889)) +- 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)) +- Update Livechat widget ([#15046](https://github.com/RocketChat/Rocket.Chat/pull/15046)) +- Regression: getSetupWizardParameters ([#15067](https://github.com/RocketChat/Rocket.Chat/pull/15067)) +- Regression: Webdav File Picker search and fixed overflows ([#15027](https://github.com/RocketChat/Rocket.Chat/pull/15027) by [@ubarsaiyan](https://github.com/ubarsaiyan)) +- Regression: Improve apps bridges for HA setup ([#15080](https://github.com/RocketChat/Rocket.Chat/pull/15080)) +- Regression: displaying errors for apps not installed from Marketplace ([#15075](https://github.com/RocketChat/Rocket.Chat/pull/15075)) +- Regression: Marketplace app pricing plan description ([#15076](https://github.com/RocketChat/Rocket.Chat/pull/15076)) +- Regression: uninstall subscribed app modal ([#15077](https://github.com/RocketChat/Rocket.Chat/pull/15077)) +- Regression: Apps and Marketplace UI issues ([#15045](https://github.com/RocketChat/Rocket.Chat/pull/15045)) + +
+ +### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Contributors ๐Ÿ˜ + +- [@BehindLoader](https://github.com/BehindLoader) +- [@Le-onardo](https://github.com/Le-onardo) +- [@NateScarlet](https://github.com/NateScarlet) +- [@anandpathak](https://github.com/anandpathak) +- [@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 ๐Ÿค“ + +- [@Hudell](https://github.com/Hudell) +- [@MarcosSpessatto](https://github.com/MarcosSpessatto) +- [@alansikora](https://github.com/alansikora) +- [@brakhane](https://github.com/brakhane) +- [@cardoso](https://github.com/cardoso) +- [@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` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +# 1.2.2 +`2019-07-29` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +# 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 ๐Ÿš€ ยท 12 ๐Ÿ› ยท 8 ๐Ÿ” ยท 21 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +### ๐ŸŽ‰ New features + +- Custom User Status ([#13933](https://github.com/RocketChat/Rocket.Chat/pull/13933) by [@wreiske](https://github.com/wreiske)) +- changed mongo version for snap from 3.2.7 to 3.4.20 ([#14838](https://github.com/RocketChat/Rocket.Chat/pull/14838)) +- 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)) +- Endpoint to anonymously read channel's messages ([#14714](https://github.com/RocketChat/Rocket.Chat/pull/14714)) +- Add Livechat inquiries endpoints ([#14779](https://github.com/RocketChat/Rocket.Chat/pull/14779)) +- Configuration to limit amount of livechat inquiries displayed ([#14690](https://github.com/RocketChat/Rocket.Chat/pull/14690)) +- Show App bundles and its apps ([#14886](https://github.com/RocketChat/Rocket.Chat/pull/14886)) + +### ๐Ÿš€ Improvements + +- Adds link to download generated user data file ([#14175](https://github.com/RocketChat/Rocket.Chat/pull/14175)) +- Layout of livechat manager pages to new style ([#13900](https://github.com/RocketChat/Rocket.Chat/pull/13900)) +- Add an optional rocketchat-protocol DNS entry for Federation ([#14589](https://github.com/RocketChat/Rocket.Chat/pull/14589)) +- Use configurable colors on sidebar items ([#14624](https://github.com/RocketChat/Rocket.Chat/pull/14624)) + +### ๐Ÿ› Bug fixes + +- Error when using Download My Data or Export My Data ([#14645](https://github.com/RocketChat/Rocket.Chat/pull/14645)) +- Removes E2E action button, icon and banner when E2E is disabled. ([#14810](https://github.com/RocketChat/Rocket.Chat/pull/14810)) +- Assume microphone is available ([#14710](https://github.com/RocketChat/Rocket.Chat/pull/14710)) +- Move the set Avatar call on user creation to make sure the user has username ([#14665](https://github.com/RocketChat/Rocket.Chat/pull/14665)) +- users typing forever ([#14724](https://github.com/RocketChat/Rocket.Chat/pull/14724)) +- 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)) +- Wrong filter field when filtering current Livechats ([#14569](https://github.com/RocketChat/Rocket.Chat/pull/14569)) +- Import Chart.js error ([#14471](https://github.com/RocketChat/Rocket.Chat/pull/14471) by [@sonbn0](https://github.com/sonbn0)) +- Name is undefined in some emails ([#14533](https://github.com/RocketChat/Rocket.Chat/pull/14533)) +- Direct reply delete config and description ([#14493](https://github.com/RocketChat/Rocket.Chat/pull/14493) by [@ruKurz](https://github.com/ruKurz)) +- Custom status fixes ([#14853](https://github.com/RocketChat/Rocket.Chat/pull/14853) by [@wreiske](https://github.com/wreiske)) +- LinkedIn OAuth login ([#14887](https://github.com/RocketChat/Rocket.Chat/pull/14887)) + +
+๐Ÿ” Minor changes + +- Fix not fully extracted pieces ([#14805](https://github.com/RocketChat/Rocket.Chat/pull/14805)) +- Regression: Fix file upload ([#14804](https://github.com/RocketChat/Rocket.Chat/pull/14804)) +- Extract permissions functions ([#14777](https://github.com/RocketChat/Rocket.Chat/pull/14777)) +- Add custom fileupload whitelist property ([#14754](https://github.com/RocketChat/Rocket.Chat/pull/14754)) +- 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: Fix desktop notifications not being sent ([#14860](https://github.com/RocketChat/Rocket.Chat/pull/14860)) +- Regression: Allow debugging of cached collections by name ([#14862](https://github.com/RocketChat/Rocket.Chat/pull/14862)) +- Allow debugging of cached collections by name ([#14859](https://github.com/RocketChat/Rocket.Chat/pull/14859)) + +
+ +### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Contributors ๐Ÿ˜ + +- [@AnBo83](https://github.com/AnBo83) +- [@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 ๐Ÿค“ + +- [@Hudell](https://github.com/Hudell) +- [@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` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` + +# 1.1.4 +`2019-07-29` + +### Engine versions +- Node: `8.11.4` +- NPM: `6.4.1` +- MongoDB: `3.2, 3.4, 3.6, 4.0` # Assistify 0.9.11 This release fixes a severe bug ๐Ÿ› with respect to frontend performance: @@ -16,7 +335,7 @@ This Release bumps Rocket.Chat to 1.1.3 - Performance when loading the Smarti Widget # 1.1.3 -`2019-06-21 ยท 1 ๐Ÿ› ยท 1 ๐Ÿ” ยท 1 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` +`2019-06-21 ยท 1 ๐Ÿ› ยท 2 ๐Ÿ” ยท 2 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` ### Engine versions - Node: `8.11.4` @@ -30,6 +349,7 @@ This Release bumps Rocket.Chat to 1.1.3
๐Ÿ” Minor changes +- Release 1.1.3 ([#14850](https://github.com/RocketChat/Rocket.Chat/pull/14850)) - Regression: thread loading parent msg if is not loaded ([#14839](https://github.com/RocketChat/Rocket.Chat/pull/14839))
@@ -37,9 +357,10 @@ This Release bumps Rocket.Chat to 1.1.3 ### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Core Team ๐Ÿค“ - [@ggazzo](https://github.com/ggazzo) +- [@sampaiodiego](https://github.com/sampaiodiego) # 1.1.2 -`2019-06-17 ยท 3 ๐Ÿ› ยท 4 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` +`2019-06-17 ยท 3 ๐Ÿ› ยท 1 ๐Ÿ” ยท 4 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` ### Engine versions - Node: `8.11.4` @@ -52,6 +373,13 @@ This Release bumps Rocket.Chat to 1.1.3 - User Real Name being erased when not modified ([#14711](https://github.com/RocketChat/Rocket.Chat/pull/14711)) - Anonymous chat read ([#14717](https://github.com/RocketChat/Rocket.Chat/pull/14717)) +
+๐Ÿ” Minor changes + +- Release 1.1.2 ([#14823](https://github.com/RocketChat/Rocket.Chat/pull/14823)) + +
+ ### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Core Team ๐Ÿค“ - [@Hudell](https://github.com/Hudell) @@ -303,6 +631,40 @@ Reason for this quite unusual behavior is that we wanted to return closer to the - Finally, we added our AI component Smarti to be available in all public channels and private groups now ([#419](https://github.com/assistify/Rocket.Chat/issues/419)) - and we'll continue developing Smarti to be even smarter. For the time being, if you remember that you have been asked a similar question earlier: Click on the lightbulb in the top-right and check whether Smarti can help you with previous conversations. Same if you know that the current chat is about something you noted down in a wiki. Check whether Smarti could find it for you and reduce your effort to reply - and let us know! Assistify.Chat is now based on Rocket.Chat 0.68.5! +# 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 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` diff --git a/app/2fa/server/loginHandler.js b/app/2fa/server/loginHandler.js index 3afc20b6cf21..a70f582f946b 100644 --- a/app/2fa/server/loginHandler.js +++ b/app/2fa/server/loginHandler.js @@ -36,4 +36,4 @@ callbacks.add('onValidateLogin', (login) => { throw new Meteor.Error('totp-invalid', 'TOTP Invalid'); } } -}); +}, callbacks.priority.MEDIUM, '2fa'); diff --git a/app/api/server/api.js b/app/api/server/api.js index 6f24dcc99e97..9e42911baed4 100644 --- a/app/api/server/api.js +++ b/app/api/server/api.js @@ -120,6 +120,16 @@ class APIClass extends Restivus { }; } + internalError(msg) { + return { + statusCode: 500, + body: { + success: false, + error: msg || 'Internal error occured', + }, + }; + } + unauthorized(msg) { return { statusCode: 403, @@ -240,8 +250,10 @@ class APIClass extends Restivus { let result; try { const shouldVerifyRateLimit = rateLimiterDictionary.hasOwnProperty(objectForRateLimitMatch.route) - && (!this.userId || !hasPermission(this.userId, 'api-bypass-rate-limit')) - && ((process.env.NODE_ENV === 'development' && settings.get('API_Enable_Rate_Limiter_Dev') === true) || process.env.NODE_ENV !== 'development'); + && settings.get('API_Enable_Rate_Limiter') === true + && (process.env.NODE_ENV !== 'development' || settings.get('API_Enable_Rate_Limiter_Dev') === true) + && !(this.userId && hasPermission(this.userId, 'api-bypass-rate-limit')); + if (shouldVerifyRateLimit) { rateLimiterDictionary[objectForRateLimitMatch.route].rateLimiter.increment(objectForRateLimitMatch); const attemptResult = rateLimiterDictionary[objectForRateLimitMatch.route].rateLimiter.check(objectForRateLimitMatch); diff --git a/app/api/server/v1/channels.js b/app/api/server/v1/channels.js index 4bb2f1ada21b..1a4e74afbbcb 100644 --- a/app/api/server/v1/channels.js +++ b/app/api/server/v1/channels.js @@ -5,6 +5,8 @@ import { Rooms, Subscriptions, Messages, Uploads, Integrations, Users } from '.. import { hasPermission } from '../../../authorization'; import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; import { API } from '../api'; +import { settings } from '../../../settings'; + // Returns the channel IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property function findChannelByIdOrName({ params, checkedArchived = true, userId }) { @@ -21,7 +23,7 @@ function findChannelByIdOrName({ params, checkedArchived = true, userId }) { room = Rooms.findOneByName(params.roomName, { fields }); } - if (!room || room.t !== 'c') { + if (!room || (room.t !== 'c' && room.t !== 'l')) { throw new Meteor.Error('error-room-not-found', 'The required "roomId" or "roomName" param provided does not match any channel'); } @@ -537,7 +539,7 @@ API.v1.addRoute('channels.members', { authRequired: true }, { const members = subscriptions.fetch().map((s) => s.u && s.u._id); const users = Users.find({ _id: { $in: members } }, { - fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 }, + fields: { _id: 1, username: 1, name: 1, status: 1, statusText: 1, utcOffset: 1 }, sort: { username: sort.username != null ? sort.username : 1 }, }).fetch(); @@ -1007,3 +1009,39 @@ API.v1.addRoute('channels.removeLeader', { authRequired: true }, { return API.v1.success(); }, }); + +API.v1.addRoute('channels.anonymousread', { authRequired: false }, { + get() { + const findResult = findChannelByIdOrName({ + params: this.requestParams(), + checkedArchived: false, + }); + const { offset, count } = this.getPaginationItems(); + const { sort, fields, query } = this.parseJsonQuery(); + + const ourQuery = Object.assign({}, query, { rid: findResult._id }); + + if (!settings.get('Accounts_AllowAnonymousRead')) { + throw new Meteor.Error('error-not-allowed', 'Enable "Allow Anonymous Read"', { + method: 'channels.anonymousread', + }); + } + + const cursor = Messages.find(ourQuery, { + sort: sort || { ts: -1 }, + skip: offset, + limit: count, + fields, + }); + + const total = cursor.count(); + const messages = cursor.fetch(); + + return API.v1.success({ + messages: normalizeMessagesForUser(messages, this.userId), + count: messages.length, + offset, + total, + }); + }, +}); diff --git a/app/api/server/v1/emoji-custom.js b/app/api/server/v1/emoji-custom.js index f638f025b693..243386792058 100644 --- a/app/api/server/v1/emoji-custom.js +++ b/app/api/server/v1/emoji-custom.js @@ -122,7 +122,7 @@ API.v1.addRoute('emoji-custom.update', { authRequired: true }, { if (!fields._id) { return callback(new Meteor.Error('The required "_id" query param is missing.')); } - const emojiToUpdate = EmojiCustom.findOneByID(fields._id); + const emojiToUpdate = EmojiCustom.findOneById(fields._id); if (!emojiToUpdate) { return callback(new Meteor.Error('Emoji not found.')); } diff --git a/app/api/server/v1/groups.js b/app/api/server/v1/groups.js index 32cd1609bd7f..b84c1d171a06 100644 --- a/app/api/server/v1/groups.js +++ b/app/api/server/v1/groups.js @@ -497,7 +497,7 @@ API.v1.addRoute('groups.members', { authRequired: true }, { const members = subscriptions.fetch().map((s) => s.u && s.u._id); const users = Users.find({ _id: { $in: members } }, { - fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 }, + fields: { _id: 1, username: 1, name: 1, status: 1, statusText: 1, utcOffset: 1 }, sort: { username: sort.username != null ? sort.username : 1 }, }).fetch(); diff --git a/app/api/server/v1/im.js b/app/api/server/v1/im.js index 13502c083a64..5afd41d05cb1 100644 --- a/app/api/server/v1/im.js +++ b/app/api/server/v1/im.js @@ -205,7 +205,7 @@ API.v1.addRoute(['dm.members', 'im.members'], { authRequired: true }, { const members = cursor.fetch().map((s) => s.u && s.u.username); const users = Users.find({ username: { $in: members } }, { - fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 }, + fields: { _id: 1, username: 1, name: 1, status: 1, statusText: 1, utcOffset: 1 }, sort: { username: sort && sort.username ? sort.username : 1 }, }).fetch(); diff --git a/app/api/server/v1/misc.js b/app/api/server/v1/misc.js index 92681ed0de2e..d5fee67418fc 100644 --- a/app/api/server/v1/misc.js +++ b/app/api/server/v1/misc.js @@ -9,6 +9,7 @@ import { Users } from '../../../models'; import { settings } from '../../../settings'; import { API } from '../api'; import { getDefaultUserFields } from '../../../utils/server/functions/getDefaultUserFields'; +import { getURL } from '../../../utils/lib/getURL'; // DEPRECATED @@ -50,7 +51,7 @@ API.v1.addRoute('me', { authRequired: true }, { let onlineCache = 0; let onlineCacheDate = 0; const cacheInvalid = 60000; // 1 minute -API.v1.addRoute('shield.svg', { authRequired: false }, { +API.v1.addRoute('shield.svg', { authRequired: false, rateLimiterOptions: { numRequestsAllowed: 60, intervalTimeInMS: 60000 } }, { get() { const { type, icon } = this.queryParams; let { channel, name } = this.queryParams; @@ -62,7 +63,6 @@ API.v1.addRoute('shield.svg', { authRequired: false }, { if (type && (types !== '*' && !types.split(',').map((t) => t.trim()).includes(type))) { throw new Meteor.Error('error-shield-disabled', 'This shield type is disabled', { route: '/api/v1/shield.svg' }); } - const hideIcon = icon === 'false'; if (hideIcon && (!name || !name.trim())) { return API.v1.failure('Name cannot be empty when icon is hidden'); @@ -140,7 +140,7 @@ API.v1.addRoute('shield.svg', { authRequired: false }, { - ${ hideIcon ? '' : '' } + ${ hideIcon ? '' : `` } ${ name ? `${ name } ${ name }` : '' } diff --git a/app/api/server/v1/roles.js b/app/api/server/v1/roles.js index 67a992427a61..22a0d543ce34 100644 --- a/app/api/server/v1/roles.js +++ b/app/api/server/v1/roles.js @@ -3,6 +3,7 @@ import { Match, check } from 'meteor/check'; import { Roles } from '../../../models'; import { API } from '../api'; +import { getUsersInRole, hasPermission } from '../../../authorization/server'; API.v1.addRoute('roles.list', { authRequired: true }, { get() { @@ -55,3 +56,33 @@ API.v1.addRoute('roles.addUserToRole', { authRequired: true }, { }); }, }); + +API.v1.addRoute('roles.getUsersInRole', { authRequired: true }, { + get() { + const { roomId, role } = this.queryParams; + const { offset, count = 50 } = this.getPaginationItems(); + + const fields = { + name: 1, + username: 1, + emails: 1, + }; + + if (!role) { + throw new Meteor.Error('error-param-not-provided', 'Query param "role" is required'); + } + if (!hasPermission(this.userId, 'access-permissions')) { + throw new Meteor.Error('error-not-allowed', 'Not allowed'); + } + if (roomId && !hasPermission(this.userId, 'view-other-user-channels')) { + throw new Meteor.Error('error-not-allowed', 'Not allowed'); + } + const users = getUsersInRole(role, roomId, { + limit: count, + sort: { username: 1 }, + skip: offset, + fields, + }).fetch(); + return API.v1.success({ users }); + }, +}); diff --git a/app/api/server/v1/users.js b/app/api/server/v1/users.js index 1cf3926f035d..317b6e8a6bf8 100644 --- a/app/api/server/v1/users.js +++ b/app/api/server/v1/users.js @@ -18,6 +18,7 @@ import { } from '../../../lib'; import { getFullUserData } from '../../../lib/server/functions/getFullUserData'; import { API } from '../api'; +import { setStatusText } from '../../../lib/server'; API.v1.addRoute('users.create', { authRequired: true }, { post() { @@ -325,6 +326,73 @@ API.v1.addRoute('users.setAvatar', { authRequired: true }, { }, }); +API.v1.addRoute('users.getStatus', { authRequired: true }, { + get() { + if (this.isUserFromParams()) { + const user = Users.findOneById(this.userId); + return API.v1.success({ + message: user.statusText, + connectionStatus: user.statusConnection, + status: user.status, + }); + } + + const user = this.getUserFromParams(); + + return API.v1.success({ + message: user.statusText, + status: user.status, + }); + }, +}); + +API.v1.addRoute('users.setStatus', { authRequired: true }, { + post() { + check(this.bodyParams, Match.ObjectIncluding({ + status: Match.Maybe(String), + message: Match.Maybe(String), + })); + + if (!settings.get('Accounts_AllowUserStatusMessageChange')) { + throw new Meteor.Error('error-not-allowed', 'Change status is not allowed', { + method: 'users.setStatus', + }); + } + + let user; + if (this.isUserFromParams()) { + user = Meteor.users.findOne(this.userId); + } else if (hasPermission(this.userId, 'edit-other-user-info')) { + user = this.getUserFromParams(); + } else { + return API.v1.unauthorized(); + } + + Meteor.runAsUser(user._id, () => { + if (this.bodyParams.message || this.bodyParams.message.length === 0) { + setStatusText(user._id, this.bodyParams.message); + } + if (this.bodyParams.status) { + const validStatus = ['online', 'away', 'offline', 'busy']; + if (validStatus.includes(this.bodyParams.status)) { + Meteor.users.update(this.userId, { + $set: { + status: this.bodyParams.status, + statusDefault: this.bodyParams.status, + }, + }); + } else { + throw new Meteor.Error('error-invalid-status', 'Valid status types include online, away, offline, and busy.', { + method: 'users.setStatus', + }); + } + } + }); + + return API.v1.success(); + }, +}); + API.v1.addRoute('users.update', { authRequired: true }, { post() { check(this.bodyParams, { @@ -334,6 +402,7 @@ API.v1.addRoute('users.update', { authRequired: true }, { name: Match.Maybe(String), password: Match.Maybe(String), username: Match.Maybe(String), + statusText: Match.Maybe(String), active: Match.Maybe(Boolean), roles: Match.Maybe(Array), joinDefaultChannels: Match.Maybe(Boolean), @@ -369,6 +438,7 @@ API.v1.addRoute('users.updateOwnBasicInfo', { authRequired: true }, { email: Match.Maybe(String), name: Match.Maybe(String), username: Match.Maybe(String), + statusText: Match.Maybe(String), currentPassword: Match.Maybe(String), newPassword: Match.Maybe(String), }), @@ -379,6 +449,7 @@ API.v1.addRoute('users.updateOwnBasicInfo', { authRequired: true }, { email: this.bodyParams.data.email, realname: this.bodyParams.data.name, username: this.bodyParams.data.username, + statusText: this.bodyParams.data.statusText, newPassword: this.bodyParams.data.newPassword, typedPassword: this.bodyParams.data.currentPassword, }; @@ -581,6 +652,7 @@ API.v1.addRoute('users.presence', { authRequired: true }, { name: 1, status: 1, utcOffset: 1, + statusText: 1, }, }; diff --git a/app/apps/assets/stylesheets/apps.css b/app/apps/assets/stylesheets/apps.css index b8a9652ea4e8..438b99d813ee 100644 --- a/app/apps/assets/stylesheets/apps.css +++ b/app/apps/assets/stylesheets/apps.css @@ -1,3 +1,4 @@ +.rc-apps-section, .rc-apps-marketplace { display: flex; @@ -24,7 +25,7 @@ letter-spacing: 0; text-transform: initial; - color: #54585e; + color: var(--color-dark-medium); font-size: 22px; font-weight: normal; @@ -59,35 +60,6 @@ line-height: 20px; } - .rc-apps-details { - margin-bottom: 0; - padding: 0; - - &__description { - padding-bottom: 50px; - - border-bottom: 1.5px solid #efefef; - } - - &__photo { - width: 96px; - height: 96px; - margin-right: 21px; - - background-color: #f7f7f7; - } - - &__content { - padding: 0; - } - - &__col { - display: inline-block; - - margin-right: 8px; - } - } - .rc-apps-container { margin-top: 0; padding-bottom: 15px; @@ -96,7 +68,7 @@ .rc-apps-container__header { padding-top: 10px; - border-bottom: 1.5px solid #efefef; + border-bottom: 1.5px solid var(--color-gray-lightest); } /* @@ -130,7 +102,7 @@ color: #9da2a9; border-radius: 2px; - background: #f3f4f5; + background: var(--color-gray-lightest); font-size: 12px; font-weight: 500; @@ -180,22 +152,6 @@ padding-right: 10px; } - td.rc-apps-marketplace-price { - text-align: right; - - button { - font-weight: 600; - } - - .rc-icon { - color: #3582f3; - } - } - - th.rc-apps-marketplace-price { - width: 120px; - } - &__wrap-actions { & > .loading { display: none; @@ -241,6 +197,12 @@ height: 100vh; + margin-top: 20px; + + & .rc-form-filters { + margin: 8px 0; + } + & .js-sort { cursor: pointer; @@ -262,6 +224,57 @@ font-size: 1rem; } } + + & tbody .rc-table-tr .rc-apps-section__app-menu-trigger { + visibility: hidden; + } + + & tbody .rc-table-tr:hover .rc-apps-section__app-menu-trigger { + visibility: visible; + } + + & tbody .rc-table-tr:not(.table-no-click):not(.table-no-pointer):hover { + background-color: #f7f8fa; + } + + & .rc-table-info { + margin: 0; + justify-content: center; + + & .rc-table-title, + & .rc-table-subtitle { + font-size: 0.875rem; + line-height: 1.25rem; + } + + & .rc-apps-categories { + display: flex; + + height: 1.25rem; + margin: 0 -0.25rem; + align-items: center; + flex-wrap: wrap; + + & .rc-apps-category { + overflow: hidden; + flex: 0 0 auto; + + box-sizing: border-box; + margin: 0.125rem 0.25rem; + padding: 0.0625rem 0.25rem; + + text-transform: none; + text-overflow: ellipsis; + + color: var(--color-gray); + background-color: var(--color-gray-lightest); + + font-size: 0.625rem; + font-weight: 500; + line-height: 0.875rem; + } + } + } } @media (width <= 700px) { @@ -272,6 +285,89 @@ } } } + + &__app-menu-trigger { + + position: relative; + + display: flex; + flex: 0 0 auto; + + margin-left: auto; + padding: 0; + + font-size: 0.875rem; + line-height: 1.25rem; + align-items: center; + appearance: none; + margin-inline-start: auto; + + &:active { + transform: translateY(2px); + + opacity: 0.9; + } + + &:active::before { + top: -2px; + } + + &::before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + content: ""; + cursor: pointer; + } + + & .rc-icon { + margin: 0; + } + } + + &__spinning-icon { + animation: spin 1s linear infinite; + } + + &__button--working { + opacity: 0.6; + } + + &__status { + width: 100%; + + color: var(--rc-color-primary-light); + + line-height: 40px; + + &--warning { + color: var(--rc-color-alert); + } + + &--failed { + color: var(--rc-color-error); + } + } + + &__status-column { + width: 150px; + } + + tr .rc-apps-section__table-button--hideable { + visibility: hidden; + } + + tr .rc-apps-section__table-button--working, + tr:hover .rc-apps-section__table-button--hideable { + visibility: visible; + } + + .rc-apps-section__table-button--working { + opacity: 0.6; + } } @keyframes play90 { diff --git a/app/apps/client/admin/appLogs.js b/app/apps/client/admin/appLogs.js index bcd621370cde..fc6500abfdd1 100644 --- a/app/apps/client/admin/appLogs.js +++ b/app/apps/client/admin/appLogs.js @@ -96,8 +96,8 @@ Template.appLogs.events({ $(e.currentTarget).find('.button-down').removeClass('arrow-up'); }, - 'click .js-cancel': (e, t) => { - FlowRouter.go('app-manage', { appId: t.app.get().id }, { version: FlowRouter.getQueryParam('version') }); + 'click .js-cancel': () => { + FlowRouter.go('apps'); }, 'click .js-refresh': (e, t) => { diff --git a/app/apps/client/admin/appManage.css b/app/apps/client/admin/appManage.css new file mode 100644 index 000000000000..caeba3c95d6c --- /dev/null +++ b/app/apps/client/admin/appManage.css @@ -0,0 +1,181 @@ +#rocket-chat .rc-apps-details { + margin-bottom: 0; + padding: 0; + + &__photo { + width: 96px; + height: 96px; + margin-right: 21px; + } + + &__content { + padding: 0; + + color: var(--color-gray); + justify-content: flex-start; + } + + &__description { + padding-bottom: 50px; + + border-bottom: 1.5px solid var(--color-gray-light); + } + + &__col { + display: inline-block; + + margin-right: 8px; + } + + &__bundles { + display: flex; + + padding-bottom: 20px; + + border-bottom: 1.5px solid var(--color-gray-light); + } + + &__bundle { + display: flex; + + width: 50%; + } + + &__bundle_icons { + display: flex; + overflow: hidden; + + min-width: 99px; + max-width: 99px; + height: 99px; + + padding: 2px; + + border-radius: 2px; + + background-color: var(--color-gray-light); + flex-wrap: wrap; + } + + &__bundle_icon { + min-width: 40px; + max-width: 40px; + height: 40px; + + margin-top: 5px; + margin-left: 5px; + + border-radius: 2px; + + background-color: #f7f7f7; + background-repeat: no-repeat; + background-position: center center; + background-size: contain; + } + + &__bundle_body { + padding: 5px 10px; + + color: var(--color-gray); + + &_title { + color: var(--color-darkest); + + font-size: 1.1em; + font-weight: 500; + } + } + + &__alert { + margin: 0.25rem 0; + padding: 0.5rem 1rem; + + border-radius: 4px; + + font-size: 0.875rem; + line-height: 1.25rem; + } + + &__alert-error { + color: var(--color-red); + background-color: #ffe9ec; + } + + &__alert-warning { + color: #b68d00; + background-color: #fff6d6; + } + + &__name { + flex: 0 0 1.75rem; + + margin: 0; + + text-transform: none; + + color: var(--color-dark-medium); + + font-family: inherit; + font-size: 1.375rem; + font-weight: normal; + line-height: 1.75rem; + } + + &__author { + font-family: inherit; + font-size: 14px; + font-weight: 500; + line-height: 20px; + } + + &__side-info { + display: inline-flex; + align-items: center; + + &::before { + display: inline-block; + + width: 1px; + height: 12px; + margin: 0 8px; + + content: ''; + + background-color: currentColor; + } + + &--twice::before { + margin: 0 16px; + } + } + + &__side-info-wrapper { + flex: 1; + } + + &__row--centered { + align-items: center; + } + + &__app-status { + display: flex; + flex: 1; + + margin-top: 8px; + align-items: center; + } + + & .rc-button.loading { + padding: 0 1.5rem; + + opacity: 0.6; + + &::before { + display: none; + } + + & > .rc-icon { + animation: spin 1s linear infinite; + } + } +} diff --git a/app/apps/client/admin/appManage.html b/app/apps/client/admin/appManage.html index a1f8aa659769..037f19cfca0e 100644 --- a/app/apps/client/admin/appManage.html +++ b/app/apps/client/admin/appManage.html @@ -1,27 +1,33 @@ -