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 c89ca0c9c9ce..3c225ef80951 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.2.1 +ENV RC_VERSION 1.3.0 MAINTAINER buildmaster@rocket.chat diff --git a/.github/history.json b/.github/history.json index 72672adc6be2..b7ca1acf8b06 100644 --- a/.github/history.json +++ b/.github/history.json @@ -32505,6 +32505,665 @@ } ] }, + "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", @@ -32515,6 +33174,282 @@ "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", diff --git a/.meteor/packages b/.meteor/packages index 6cfd59d2a843..98e3d061be48 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 underscore@1.0.10 diff --git a/.meteor/versions b/.meteor/versions index e1e6cb375828..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 @@ -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/.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 1ae2d0f9e0e6..6b224c66c226 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.2.1 + RC_VERSION=1.3.0 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 853825105974..c565383bd7b1 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,149 @@ +# 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.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 👩‍💻👨‍💻` +`2019-06-28 · 1 🐛 · 1 🔍 · 2 👩‍💻👨‍💻` ### Engine versions - Node: `8.11.4` @@ -11,9 +154,17 @@ - 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 👩‍💻👨‍💻` @@ -97,6 +248,14 @@ - [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) +# 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` + # 1.1.3 `2019-06-21 · 1 🐛 · 2 🔍 · 2 👩‍💻👨‍💻` @@ -334,6 +493,22 @@ - [@sampaiodiego](https://github.com/sampaiodiego) - [@tassoevan](https://github.com/tassoevan) +# 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 98688b1c584a..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, diff --git a/app/api/server/v1/channels.js b/app/api/server/v1/channels.js index f92132a7d4e5..1a4e74afbbcb 100644 --- a/app/api/server/v1/channels.js +++ b/app/api/server/v1/channels.js @@ -23,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'); } 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 8512a5032526..317b6e8a6bf8 100644 --- a/app/api/server/v1/users.js +++ b/app/api/server/v1/users.js @@ -369,7 +369,7 @@ API.v1.addRoute('users.setStatus', { authRequired: true }, { } Meteor.runAsUser(user._id, () => { - if (this.bodyParams.message) { + if (this.bodyParams.message || this.bodyParams.message.length === 0) { setStatusText(user._id, this.bodyParams.message); } if (this.bodyParams.status) { diff --git a/app/apps/assets/stylesheets/apps.css b/app/apps/assets/stylesheets/apps.css index 0037d1191c73..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,94 +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; - } - - &__bundles { - display: flex; - - padding-bottom: 20px; - - border-bottom: 1.5px solid #efefef; - } - - &__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: #e6e8eb; - 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: #9da1a7; - - &_title { - color: #151924; - - font-size: 1.1em; - font-weight: 500; - } - } - } - .rc-apps-container { margin-top: 0; padding-bottom: 15px; @@ -155,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); } /* @@ -189,7 +102,7 @@ color: #9da2a9; border-radius: 2px; - background: #f3f4f5; + background: var(--color-gray-lightest); font-size: 12px; font-weight: 500; @@ -239,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; @@ -300,6 +197,12 @@ height: 100vh; + margin-top: 20px; + + & .rc-form-filters { + margin: 8px 0; + } + & .js-sort { cursor: pointer; @@ -321,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) { @@ -331,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 b20244ccb06a..037f19cfca0e 100644 --- a/app/apps/client/admin/appManage.html +++ b/app/apps/client/admin/appManage.html @@ -1,27 +1,33 @@ -