diff --git a/.circleci/config.yml b/.circleci/config.yml index 8347c51e7337..6b5cf6185d75 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -133,14 +133,6 @@ jobs: keys: - meteor-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum ".meteor/versions" }} - - restore_cache: - keys: - - livechat-meteor-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum "packages/rocketchat-livechat/.app/.meteor/versions" }} - - - restore_cache: - keys: - - livechat-node-modules-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum "packages/rocketchat-livechat/.app/package.json" }} - - run: name: Build Rocket.Chat environment: @@ -177,16 +169,6 @@ jobs: paths: - ./.meteor/local - - save_cache: - key: livechat-node-modules-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum "packages/rocketchat-livechat/.app/package.json" }} - paths: - - ./packages/rocketchat-livechat/app/node_modules - - - save_cache: - key: livechat-meteor-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum "packages/rocketchat-livechat/.app/.meteor/versions" }} - paths: - - ./packages/rocketchat-livechat/app/.meteor/local - - save_cache: key: meteor-{{ checksum ".circleci/config.yml" }}-{{ checksum ".meteor/release" }} paths: @@ -261,6 +243,8 @@ jobs: export PATH=~/.local/bin:$PATH export CIRCLE_TAG=${CIRCLE_TAG:=} + aws s3 cp s3://rocketchat/sign.key.gpg .circleci/sign.key.gpg + source .circleci/setartname.sh source .circleci/setdeploydir.sh bash .circleci/setupsig.sh @@ -342,6 +326,79 @@ jobs: exit 0 fi; + pr-build: + <<: *defaults + docker: + - image: circleci/node:8.11-stretch + + steps: + - checkout + + - restore_cache: + keys: + - node-modules-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum "package.json" }} + + - restore_cache: + keys: + - meteor-{{ checksum ".circleci/config.yml" }}-{{ checksum ".meteor/release" }} + + - run: + name: Install Meteor + command: | + # Restore bin from cache + set +e + METEOR_SYMLINK_TARGET=$(readlink ~/.meteor/meteor) + METEOR_TOOL_DIRECTORY=$(dirname "$METEOR_SYMLINK_TARGET") + set -e + LAUNCHER=$HOME/.meteor/$METEOR_TOOL_DIRECTORY/scripts/admin/launch-meteor + if [ -e $LAUNCHER ] + then + echo "Cached Meteor bin found, restoring it" + sudo cp "$LAUNCHER" "/usr/local/bin/meteor" + else + echo "No cached Meteor bin found." + fi + + # only install meteor if bin isn't found + command -v meteor >/dev/null 2>&1 || curl https://install.meteor.com | sed s/--progress-bar/-sL/g | /bin/sh + + - run: + name: Versions + command: | + npm --versions + node -v + meteor --version + meteor npm --versions + meteor node -v + git version + + - run: + name: Meteor npm install + command: | + # rm -rf node_modules + # rm -f package-lock.json + meteor npm install + + - restore_cache: + keys: + - meteor-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum ".meteor/versions" } + + - run: + name: Build Rocket.Chat + environment: + TOOL_NODE_FLAGS: --max_old_space_size=3072 + command: | + meteor build --server-only /tmp/build-pr + + + - persist_to_workspace: + root: /tmp/ + paths: + - build-pr + + - store_artifacts: + path: /tmp/build-pr + pr-image-build: <<: *defaults @@ -364,9 +421,9 @@ jobs: exit 0 fi; - cd /tmp/build - tar xzf Rocket.Chat.tar.gz - rm Rocket.Chat.tar.gz + cd /tmp/build-pr + tar xzf repo.tar.gz + rm repo.tar.gz docker login -u $DOCKER_USER -p $DOCKER_PASS @@ -375,11 +432,11 @@ jobs: docker build -t rocketchat/rocket.chat:pr-$CIRCLE_PR_NUMBER . docker push rocketchat/rocket.chat:pr-$CIRCLE_PR_NUMBER - echo "Build preview Docker image" - cp ~/repo/.docker-mongo/Dockerfile . - cp ~/repo/.docker-mongo/entrypoint.sh . - docker build -t rocketchat/rocket.chat.preview:pr-$CIRCLE_PR_NUMBER . - docker push rocketchat/rocket.chat.preview:pr-$CIRCLE_PR_NUMBER + #echo "Build preview Docker image" + #cp ~/repo/.docker-mongo/Dockerfile . + #cp ~/repo/.docker-mongo/entrypoint.sh . + #docker build -t rocketchat/rocket.chat.preview:pr-$CIRCLE_PR_NUMBER . + #docker push rocketchat/rocket.chat.preview:pr-$CIRCLE_PR_NUMBER workflows: version: 2 @@ -433,7 +490,7 @@ workflows: ignore: develop tags: only: /^[0-9]+\.[0-9]+\.[0-9]+(?:-(?:rc|beta)\.[0-9]+)?$/ - - pr-image-build: + - pr-build: requires: - hold filters: @@ -441,4 +498,11 @@ workflows: ignore: develop tags: only: /^[0-9]+\.[0-9]+\.[0-9]+(?:-(?:rc|beta)\.[0-9]+)?$/ - + - pr-image-build: + requires: + - pr-build + filters: + branches: + ignore: develop + tags: + only: /^[0-9]+\.[0-9]+\.[0-9]+(?:-(?:rc|beta)\.[0-9]+)?$/ diff --git a/.circleci/sign.key.gpg b/.circleci/sign.key.gpg deleted file mode 100644 index 6d005764c11b..000000000000 Binary files a/.circleci/sign.key.gpg and /dev/null differ diff --git a/.docker/Dockerfile.rhel b/.docker/Dockerfile.rhel index 5aea58529f1c..c4ad2518ed6c 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.3.0-develop +ENV RC_VERSION 2.0.0-develop MAINTAINER buildmaster@rocket.chat diff --git a/.eslintignore b/.eslintignore index 0f9a4f4d54d5..e6e1cbbc2ebe 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,8 +5,6 @@ packages/meteor-timesync/ app/emoji-emojione/generateEmojiIndex.js app/favico/favico.js app/katex/client/katex/katex.min.js -packages/rocketchat-livechat/.app/node_modules -packages/rocketchat-livechat/.app/.meteor packages/rocketchat-livechat/assets/rocketchat-livechat.min.js packages/rocketchat-livechat/assets/rocket-livechat.js app/theme/client/minicolors/jquery.minicolors.js @@ -20,6 +18,5 @@ packages/tap-i18n/lib/tap_i18next/tap_i18next-1.7.3.js private/moment-locales/ public/livechat/ !.scripts -!packages/rocketchat-livechat/.app public/pdf.worker.min.js imports/client/ diff --git a/.github/bot-config.yml b/.github/bot-config.yml index 8df57f4e966d..65ab966398e2 100644 --- a/.github/bot-config.yml +++ b/.github/bot-config.yml @@ -2,6 +2,7 @@ bot: name: "@rocket-cat" whitelist: users: + - wreiske - TwizzyDizzy - theorenck - JSzaszvari diff --git a/.github/history.json b/.github/history.json index a0dcfbc8fe96..b7ca1acf8b06 100644 --- a/.github/history.json +++ b/.github/history.json @@ -32504,6 +32504,962 @@ ] } ] + }, + "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" + ] + } + ] } } } \ No newline at end of file diff --git a/.meteor/packages b/.meteor/packages index 98e3d061be48..edd6c63744fe 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -52,7 +52,6 @@ konecty:user-presence deepwell:bootstrap-datepicker2 dispatch:run-as-user -francocatena:status jalik:ufs jalik:ufs-gridfs jparker:gravatar @@ -72,7 +71,7 @@ rocketchat:push raix:ui-dropped-event todda00:friendly-slugs -tap:i18n +rocketchat:tap-i18n underscore@1.0.10 juliancwirko:postcss littledata:synced-cron @@ -93,7 +92,6 @@ oauth2 raix:eventemitter routepolicy sha -swydo:graphql templating webapp webapp-hashing diff --git a/.meteor/versions b/.meteor/versions index babbbf8f8b29..5aa729937ae5 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -45,7 +45,6 @@ es5-shim@4.8.0 facebook-oauth@1.5.0 fastclick@1.0.13 fetch@0.1.0 -francocatena:status@1.5.3 geojson-utils@1.0.10 github-oauth@1.2.2 google-oauth@1.2.6 @@ -70,7 +69,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.5.0 +konecty:user-presence@2.6.0 launch-screen@1.1.1 less@2.8.0 littledata:synced-cron@1.5.1 @@ -132,6 +131,7 @@ rocketchat:monitoring@2.30.2_3 rocketchat:oauth2-server@2.1.0 rocketchat:push@3.3.1 rocketchat:streamer@1.0.2 +rocketchat:tap-i18n@1.9.1 rocketchat:version@1.0.0 routepolicy@1.1.0 service-configuration@1.0.11 @@ -144,8 +144,6 @@ spacebars@1.0.15 spacebars-compiler@1.1.3 srp@1.0.12 standard-minifier-js@2.4.0 -swydo:graphql@0.4.0 -tap:i18n@1.8.2 templating@1.3.2 templating-compiler@1.3.3 templating-runtime@1.3.2 diff --git a/.scripts/fix-i18n.js b/.scripts/fix-i18n.js index ad8210d7cd33..4fcee9731b9f 100644 --- a/.scripts/fix-i18n.js +++ b/.scripts/fix-i18n.js @@ -26,4 +26,3 @@ const fixFiles = (path, source, newlineAtEnd = false) => { }; fixFiles('./packages/rocketchat-i18n', '/i18n/en.i18n.json'); -fixFiles('./packages/rocketchat-livechat/.app/i18n', '/en.i18n.json'); diff --git a/.scripts/npm-postinstall.js b/.scripts/npm-postinstall.js index 434539109341..b8362a2401de 100644 --- a/.scripts/npm-postinstall.js +++ b/.scripts/npm-postinstall.js @@ -9,5 +9,3 @@ execSync('mkdir -p public/fonts/'); execSync('cp node_modules/katex/dist/fonts/* public/fonts/'); execSync('cp node_modules/pdfjs-dist/build/pdf.worker.min.js public/'); - -execSync('cd packages/rocketchat-livechat/.app && (meteor npm install || npm install) && cd -'); diff --git a/.snapcraft/resources/prepareRocketChat b/.snapcraft/resources/prepareRocketChat index ac352ebda9f7..0f54d5842f9c 100755 --- a/.snapcraft/resources/prepareRocketChat +++ b/.snapcraft/resources/prepareRocketChat @@ -28,3 +28,5 @@ execstack --clear-execstack npm/node_modules/sharp/vendor/lib/librsvg-2.so* # Having to manually remove because of latest warning rm -rf npm/node_modules/meteor/konecty_user-presence/node_modules/colors/lib/.colors.js.swp +rm -rf node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp + diff --git a/.snapcraft/resources/startRocketChat b/.snapcraft/resources/startRocketChat index b39e22742a73..35898d0e3152 100755 --- a/.snapcraft/resources/startRocketChat +++ b/.snapcraft/resources/startRocketChat @@ -25,11 +25,13 @@ function start_rocketchat { export OVERWRITE_SETTING_Site_Url=$siteurl fi - for filename in $SNAP_COMMON/*.env; do - while read env_var; do - export "$env_var" - done < $filename - done + if ls $SNAP_COMMON/*.env >/dev/null 2>&1; then + for filename in $SNAP_COMMON/*.env; do + while read env_var; do + export "$env_var" + done < $filename + done + fi node $SNAP/main.js } 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 ce2b416d6b99..f07faf38ffe9 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.3.0-develop + RC_VERSION=2.0.0-develop fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 00aa2066df38..c565383bd7b1 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,171 @@ +# 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 🔍 · 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 👩‍💻👨‍💻` @@ -81,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 👩‍💻👨‍💻` @@ -318,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/README.md b/README.md index db33dd319d6c..e8af010444da 100644 --- a/README.md +++ b/README.md @@ -325,25 +325,8 @@ It is a great solution for communities and companies wanting to privately host t ## Roadmap -#### In Progress -- XMPP Support via [Webhook bridge](https://github.com/saqura/xmppwb) [Issue #404](https://github.com/RocketChat/Rocket.Chat/issues/404) -- Federation via [matrix.org](https://www.matrix.org/), see [hubot-freddie](https://www.npmjs.com/package/hubot-freddie) and [Federation project](https://github.com/RocketChat/Rocket.Chat.Federation) : [Issue #520](https://github.com/RocketChat/Rocket.Chat/issues/520), [Issue #601](https://github.com/RocketChat/Rocket.Chat/issues/601) -- Support for PostgreSQL: [Issue #533](https://github.com/RocketChat/Rocket.Chat/issues/533), [Issue #822](https://github.com/RocketChat/Rocket.Chat/pull/822) -- WordPress Plug-in [Issue # 1920](https://github.com/RocketChat/Rocket.Chat/issues/1920) -- Integration with PSTN (Public Switched Telephone Networks) -- API-enabled methods: [Issue #202](https://github.com/RocketChat/Rocket.Chat/issues/202), [Issue #454](https://github.com/RocketChat/Rocket.Chat/issues/454), [Issue #455](https://github.com/RocketChat/Rocket.Chat/issues/455), [Issue #759](https://github.com/RocketChat/Rocket.Chat/issues/759) -- Scalable WebRTC broadcaster / media-server integration, [Issue #1118](https://github.com/RocketChat/Rocket.Chat/issues/1118) -- White label hosting -- Reseller support for white label hosting -- CRM integrations: Microsoft Dynamics CRM, Salesforce.com, Zoho.com, SugarCRM, SuiteCRM and more -- Support multiple teams on the same instance / same VPS infrastructure: [Issue #658](https://github.com/RocketChat/Rocket.Chat/issues/658), [Issue #630](https://github.com/RocketChat/Rocket.Chat/issues/630) - -#### Planned -- Kerberos Authentication: [Issue #839](https://github.com/RocketChat/Rocket.Chat/issues/839) -- More webhooks: GitLab, Confluence, Jira, Piwik, WordPress: [Issue #233](https://github.com/RocketChat/Rocket.Chat/issues/233), [Issue #525](https://github.com/RocketChat/Rocket.Chat/issues/525), [Issue #637](https://github.com/RocketChat/Rocket.Chat/issues/637), [Issue #638](https://github.com/RocketChat/Rocket.Chat/issues/638), [Issue #747](https://github.com/RocketChat/Rocket.Chat/issues/747) -- Anonymous use of Rocket.Chat: [Issue #604](https://github.com/RocketChat/Rocket.Chat/issues/604) -- File Sharing via P2P: [Issue #369](https://github.com/RocketChat/Rocket.Chat/issues/369), [Issue #370](https://github.com/RocketChat/Rocket.Chat/issues/370) -- Anti-virus checking on file uploads: [Issue #757](https://github.com/RocketChat/Rocket.Chat/issues/757) +To see an up to date view of what we have planned view our [milestones](https://github.com/RocketChat/Rocket.Chat/milestones). + ## How it all started 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/misc.js b/app/api/server/v1/misc.js index d5fee67418fc..68f75e302244 100644 --- a/app/api/server/v1/misc.js +++ b/app/api/server/v1/misc.js @@ -1,47 +1,14 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; -import { TAPi18n } from 'meteor/tap:i18n'; +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import s from 'underscore.string'; -import { hasRole } from '../../../authorization'; -import { Info } from '../../../utils'; -import { Users } from '../../../models'; -import { settings } from '../../../settings'; +import { Users } from '../../../models/server'; +import { settings } from '../../../settings/server'; import { API } from '../api'; import { getDefaultUserFields } from '../../../utils/server/functions/getDefaultUserFields'; import { getURL } from '../../../utils/lib/getURL'; - -// DEPRECATED -// Will be removed after v1.12.0 -API.v1.addRoute('info', { authRequired: false }, { - get() { - const warningMessage = 'The endpoint "/v1/info" is deprecated and will be removed after version v1.12.0'; - console.warn(warningMessage); - const user = this.getLoggedInUser(); - - if (user && hasRole(user._id, 'admin')) { - return API.v1.success(this.deprecationWarning({ - endpoint: 'info', - versionWillBeRemoved: '1.12.0', - response: { - info: Info, - }, - })); - } - - return API.v1.success(this.deprecationWarning({ - endpoint: 'info', - versionWillBeRemoved: '1.12.0', - response: { - info: { - version: Info.version, - }, - }, - })); - }, -}); - API.v1.addRoute('me', { authRequired: true }, { get() { return API.v1.success(this.getUserInfo(Users.findOneById(this.userId, { fields: getDefaultUserFields() }))); diff --git a/app/api/server/v1/users.js b/app/api/server/v1/users.js index e0bc0f1daede..66c5a17a2abc 100644 --- a/app/api/server/v1/users.js +++ b/app/api/server/v1/users.js @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor'; import { Match, check } from 'meteor/check'; -import { TAPi18n } from 'meteor/tap:i18n'; +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import _ from 'underscore'; import Busboy from 'busboy'; diff --git a/app/apps/assets/stylesheets/apps.css b/app/apps/assets/stylesheets/apps.css index 121b1cbc9314..438b99d813ee 100644 --- a/app/apps/assets/stylesheets/apps.css +++ b/app/apps/assets/stylesheets/apps.css @@ -25,7 +25,7 @@ letter-spacing: 0; text-transform: initial; - color: #54585e; + color: var(--color-dark-medium); font-size: 22px; font-weight: normal; @@ -60,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; @@ -156,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); } /* @@ -190,7 +102,7 @@ color: #9da2a9; border-radius: 2px; - background: #f3f4f5; + background: var(--color-gray-lightest); font-size: 12px; font-weight: 500; @@ -240,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; @@ -329,6 +225,14 @@ } } + & 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; } @@ -362,9 +266,8 @@ text-transform: none; text-overflow: ellipsis; - color: #9da1a8; - border-radius: 9999px; - background-color: #eef0f3; + color: var(--color-gray); + background-color: var(--color-gray-lightest); font-size: 0.625rem; font-weight: 500; @@ -382,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..46e82534c05b 100644 --- a/app/apps/client/admin/appLogs.js +++ b/app/apps/client/admin/appLogs.js @@ -1,7 +1,7 @@ import { ReactiveVar } from 'meteor/reactive-var'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { Template } from 'meteor/templating'; -import { TAPi18n } from 'meteor/tap:i18n'; +import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { Tracker } from 'meteor/tracker'; import moment from 'moment'; import hljs from 'highlight.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 index 7d8d1b1cdff8..caeba3c95d6c 100644 --- a/app/apps/client/admin/appManage.css +++ b/app/apps/client/admin/appManage.css @@ -1,125 +1,170 @@ -#rocket-chat .content .rc-apps-details { +#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; } - &__app-name { - flex: 0 0 1.75rem; + &__description { + padding-bottom: 50px; - margin: 0; + border-bottom: 1.5px solid var(--color-gray-light); + } - letter-spacing: 0; - text-transform: none; + &__col { + display: inline-block; - color: rgb(84, 88, 94); + margin-right: 8px; + } - font-family: inherit; - font-size: 1.375rem; - font-weight: normal; - line-height: 1.75rem; + &__bundles { + display: flex; + + padding-bottom: 20px; + + border-bottom: 1.5px solid var(--color-gray-light); } - &__app-info { + &__bundle { display: flex; - flex: 0 0 1.25rem; - flex-wrap: nowrap; - > span::after { - display: inline-block; + width: 50%; + } - width: 1px; - height: 12px; - margin: 0 8px; + &__bundle_icons { + display: flex; + overflow: hidden; - content: ''; + min-width: 99px; + max-width: 99px; + height: 99px; - background: rgb(203, 206, 209); - } + padding: 2px; - > span:last-child::after { - display: none; + border-radius: 2px; - content: none; - } + background-color: var(--color-gray-light); + flex-wrap: wrap; } - &__app-author { - letter-spacing: -0.2px; + &__bundle_icon { + min-width: 40px; + max-width: 40px; + height: 40px; - color: rgb(158, 162, 168); + margin-top: 5px; + margin-left: 5px; - font-family: inherit; - font-size: 14px; - font-weight: 500; - line-height: 20px; + border-radius: 2px; + + background-color: #f7f7f7; + background-repeat: no-repeat; + background-position: center center; + background-size: contain; } - &__app-version { - letter-spacing: -0.2px; + &__bundle_body { + padding: 5px 10px; - color: rgb(158, 162, 168); + color: var(--color-gray); - font-family: inherit; - font-size: 14px; - font-weight: normal; - line-height: 20px; + &_title { + color: var(--color-darkest); + + font-size: 1.1em; + font-weight: 500; + } } - &__app-status { - display: flex; - flex: 1; + &__alert { + margin: 0.25rem 0; + padding: 0.5rem 1rem; - margin-top: 8px; - align-items: center; - } + border-radius: 4px; - &__app-install-status { - display: flex; + font-size: 0.875rem; + line-height: 1.25rem; + } - height: 40px; + &__alert-error { + color: var(--color-red); + background-color: #ffe9ec; + } - letter-spacing: 0; + &__alert-warning { + color: #b68d00; + background-color: #fff6d6; + } - color: rgb(158, 162, 168); + &__name { + flex: 0 0 1.75rem; - font-family: inherit; - font-size: 14px; - font-weight: 500; - align-items: center; - flex-wrap: nowrap; + margin: 0; - & > .rc-icon { - color: var(--rc-color-button-primary); - } - } + text-transform: none; - &__app-price { - letter-spacing: -0.2px; + color: var(--color-dark-medium); - color: rgb(157, 161, 168); + font-family: inherit; + font-size: 1.375rem; + font-weight: normal; + line-height: 1.75rem; + } + &__author { font-family: inherit; font-size: 14px; - font-weight: normal; + font-weight: 500; line-height: 20px; + } + + &__side-info { + display: inline-flex; + align-items: center; &::before { display: inline-block; width: 1px; height: 12px; - margin: 0 16px; + margin: 0 8px; content: ''; - background: rgb(203, 206, 209); + background-color: currentColor; + } + + &--twice::before { + margin: 0 16px; } } - &__app-button-wrapper { + &__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; @@ -133,15 +178,4 @@ animation: spin 1s linear infinite; } } - - &__app-menu-trigger { - padding: 0; - - &::before { - display: inline-block; - flex: 1; - - content: ''; - } - } } diff --git a/app/apps/client/admin/appManage.html b/app/apps/client/admin/appManage.html index 892801b13040..037f19cfca0e 100644 --- a/app/apps/client/admin/appManage.html +++ b/app/apps/client/admin/appManage.html @@ -1,19 +1,23 @@ -