Merge branch 'develop' into token-controlled-access-channels

pull/8060/head
Diego Sampaio 8 years ago committed by GitHub
commit d075a02b5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 278
      .circleci/config.yml
  2. 13
      .circleci/docker.sh
  3. 8
      .circleci/namefiles.sh
  4. 23
      .circleci/setartname.sh
  5. 2
      .circleci/setdeploydir.sh
  6. 8
      .circleci/setupsig.sh
  7. BIN
      .circleci/sign.key.gpg
  8. 37
      .circleci/snap.sh
  9. 7
      .circleci/update-releases.sh
  10. 11
      .docker/Dockerfile
  11. 4
      .eslintrc
  12. 52
      .meteor/packages
  13. 2
      .meteor/release
  14. 95
      .meteor/versions
  15. 16
      .postcssrc
  16. 2
      .sandstorm/sandstorm-pkgdef.capnp
  17. 2
      .scripts/set-version.js
  18. 2
      .scripts/start.js
  19. 6
      .snapcraft/snapcraft.yaml
  20. 10
      .travis.yml
  21. 2
      .travis/snap.sh
  22. 647
      HISTORY.md
  23. 20
      README.md
  24. 7
      client/lib/handleError.js
  25. 1
      client/methods/deleteMessage.js
  26. 1
      client/methods/updateMessage.js
  27. 3
      client/routes/router.js
  28. 16
      example-pm2.json
  29. 16
      lib/underscore.string.js
  30. 14
      nginx-multi-config.txt
  31. 11962
      package-lock.json
  32. 46
      package.json
  33. 3
      packages/autoupdate/package.js
  34. 70
      packages/meteor-accounts-saml/.npm/package/npm-shrinkwrap.json
  35. 2
      packages/meteor-accounts-saml/package.js
  36. 1
      packages/meteor-accounts-saml/saml_server.js
  37. 1
      packages/meteor-autocomplete/client/autocomplete-client.js
  38. 2
      packages/meteor-autocomplete/client/templates.js
  39. 2
      packages/meteor-autocomplete/package.js
  40. 2
      packages/meteor-timesync/package.js
  41. 7
      packages/rocketchat-2fa/.npm/package/npm-shrinkwrap.json
  42. 17
      packages/rocketchat-api/.npm/package/npm-shrinkwrap.json
  43. 2
      packages/rocketchat-api/package.js
  44. 2
      packages/rocketchat-api/server/api.js
  45. 16
      packages/rocketchat-api/server/v1/channels.js
  46. 25
      packages/rocketchat-api/server/v1/chat.js
  47. 86
      packages/rocketchat-api/server/v1/commands.js
  48. 16
      packages/rocketchat-api/server/v1/groups.js
  49. 12
      packages/rocketchat-api/server/v1/im.js
  50. 3
      packages/rocketchat-api/server/v1/integrations.js
  51. 2
      packages/rocketchat-api/server/v1/misc.js
  52. 2
      packages/rocketchat-api/server/v1/settings.js
  53. 2
      packages/rocketchat-api/server/v1/users.js
  54. 13
      packages/rocketchat-assets/.npm/package/npm-shrinkwrap.json
  55. 1
      packages/rocketchat-assets/package.js
  56. 1
      packages/rocketchat-assets/server/assets.js
  57. 2
      packages/rocketchat-authorization/client/lib/models/Subscriptions.js
  58. 2
      packages/rocketchat-authorization/client/lib/models/Users.js
  59. 1
      packages/rocketchat-authorization/package.js
  60. 2
      packages/rocketchat-authorization/server/functions/addUserRoles.js
  61. 2
      packages/rocketchat-authorization/server/functions/removeUserFromRoles.js
  62. 2
      packages/rocketchat-authorization/server/methods/addUserToRole.js
  63. 2
      packages/rocketchat-authorization/server/methods/removeUserFromRole.js
  64. 2
      packages/rocketchat-authorization/server/models/Base.js
  65. 2
      packages/rocketchat-authorization/server/models/Subscriptions.js
  66. 3
      packages/rocketchat-autolinker/.npm/package/npm-shrinkwrap.json
  67. 4
      packages/rocketchat-autolinker/client/client.js
  68. 2
      packages/rocketchat-autotranslate/client/lib/autotranslate.js
  69. 1
      packages/rocketchat-autotranslate/client/views/autoTranslateFlexTab.js
  70. 3
      packages/rocketchat-autotranslate/server/autotranslate.js
  71. 1
      packages/rocketchat-bot-helpers/package.js
  72. 2
      packages/rocketchat-bot-helpers/server/index.js
  73. 46
      packages/rocketchat-cas/.npm/package/npm-shrinkwrap.json
  74. 1
      packages/rocketchat-cas/package.js
  75. 1
      packages/rocketchat-cas/server/cas_server.js
  76. 2
      packages/rocketchat-channel-settings-mail-messages/client/views/mailMessagesInstructions.js
  77. 3
      packages/rocketchat-channel-settings-mail-messages/server/methods/mailMessages.js
  78. 1
      packages/rocketchat-channel-settings/client/lib/ChannelSettings.js
  79. 1
      packages/rocketchat-channel-settings/client/views/channelSettings.js
  80. 2
      packages/rocketchat-channel-settings/server/functions/saveRoomAnnouncement.js
  81. 2
      packages/rocketchat-channel-settings/server/functions/saveRoomDescription.js
  82. 2
      packages/rocketchat-channel-settings/server/functions/saveRoomTopic.js
  83. 5
      packages/rocketchat-chatops/client/startup.js
  84. 29
      packages/rocketchat-chatops/client/tabBar.js
  85. 8
      packages/rocketchat-chatops/client/views/chatops.html
  86. 1
      packages/rocketchat-chatops/client/views/chatops.js
  87. 23
      packages/rocketchat-chatops/client/views/codemirror.html
  88. 9
      packages/rocketchat-chatops/client/views/codemirror.js
  89. 19
      packages/rocketchat-chatops/client/views/droneflight.html
  90. 23
      packages/rocketchat-chatops/client/views/droneflight.js
  91. 27
      packages/rocketchat-chatops/client/views/dynamicUI.html
  92. 15
      packages/rocketchat-chatops/client/views/stylesheets/chatops.css
  93. 33
      packages/rocketchat-chatops/package.js
  94. 5
      packages/rocketchat-chatops/server/settings.js
  95. 4
      packages/rocketchat-colors/client/client.js
  96. 1
      packages/rocketchat-cors/cors.js
  97. 3
      packages/rocketchat-crowd/.npm/package/npm-shrinkwrap.json
  98. 2
      packages/rocketchat-custom-oauth/client/custom_oauth_client.js
  99. 2
      packages/rocketchat-custom-oauth/package.js
  100. 1
      packages/rocketchat-custom-oauth/server/custom_oauth_server.js
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,278 @@
defaults: &defaults
working_directory: ~/repo
version: 2
jobs:
build:
<<: *defaults
docker:
- image: circleci/node:8
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
- run:
name: Lint
command: |
meteor npm run lint
meteor npm run stylelint
- run:
name: Unit Test
command: |
meteor npm run testunit
# - restore_cache:
# 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
command: |
if [[ $CIRCLE_TAG ]]; then meteor reset; fi
set +e
meteor add rocketchat:lib
set -e
meteor build --server-only --directory /tmp/build-test
- run:
name: Prepare build
command: |
mkdir /tmp/build/
cd /tmp/build-test
tar czf /tmp/build/Rocket.Chat.tar.gz bundle
cd /tmp/build-test/bundle/programs/server
npm install
# - save_cache:
# key: node-modules-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum "package.json" }}
# paths:
# - ./node_modules
# - save_cache:
# key: meteor-cache-{{ checksum ".circleci/config.yml" }}-{{ checksum ".meteor/versions" }}
# 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:
# - ~/.meteor
- persist_to_workspace:
root: /tmp/
paths:
- build-test
- build
- store_artifacts:
path: /tmp/build
test-with-oplog:
<<: *defaults
docker:
- image: circleci/node:8-browsers
- image: mongo:3.4
command: [mongod, --nojournal, --noprealloc, --smallfiles, --replSet=rs0]
environment:
TEST_MODE: "true"
MONGO_URL: mongodb://localhost:27017/testwithoplog
MONGO_OPLOG_URL: mongodb://localhost:27017/local
steps:
- attach_workspace:
at: /tmp
- checkout
- run:
name: Install dependencies
command: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org-shell
- run:
name: Configure Replica Set
command: |
mongo --eval 'rs.initiate({_id:"rs0", members: [{"_id":1, "host":"localhost:27017"}]})'
mongo --eval 'rs.status()'
- run:
name: NPM install
command: |
npm install
- run:
name: Run Tests
command: |
for i in $(seq 1 5); do npm test && s=0 && break || s=$? && sleep 1; done; (exit $s)
- store_artifacts:
path: .screenshots/
test-without-oplog:
<<: *defaults
docker:
- image: circleci/node:8-browsers
- image: circleci/mongo:3.4
environment:
TEST_MODE: "true"
MONGO_URL: mongodb://localhost:27017/testwithoplog
steps:
- attach_workspace:
at: /tmp
- checkout
- run:
name: NPM install
command: |
npm install
- run:
name: Run Tests
command: |
for i in $(seq 1 5); do npm test && s=0 && break || s=$? && sleep 1; done; (exit $s)
# - run:
# name: Build Failed
# when: on_fail
# command: |
# cp -R .screenshots /tmp/screenshots
# - store_artifacts:
# path: ~/repo/.screenshots
deploy:
<<: *defaults
docker:
- image: circleci/node:4.8
steps:
- attach_workspace:
at: /tmp
- checkout
- run:
name: Install AWS cli
command: |
if [[ $CIRCLE_PULL_REQUESTS ]]; then exit 0; fi;
sudo apt-get -y -qq update
sudo apt-get -y -qq install python3.4-dev
curl -O https://bootstrap.pypa.io/get-pip.py
python3.4 get-pip.py --user
export PATH=~/.local/bin:$PATH
pip install awscli --upgrade --user
- run:
name: Publish assets
command: |
if [[ $CIRCLE_PULL_REQUESTS ]]; then exit 0; fi;
export PATH=~/.local/bin:$PATH
export CIRCLE_TAG=${CIRCLE_TAG:=}
source .circleci/setartname.sh
source .circleci/setdeploydir.sh
bash .circleci/setupsig.sh
bash .circleci/namefiles.sh
# echo ".circleci/sandstorm.sh"
aws s3 cp $ROCKET_DEPLOY_DIR/ s3://download.rocket.chat/build/ --recursive
bash .circleci/update-releases.sh
bash .circleci/docker.sh
bash .circleci/snap.sh
workflows:
version: 2
build-and-test:
jobs:
- build
- test-with-oplog:
requires:
- build
- test-without-oplog:
requires:
- build
- deploy:
requires:
- test-with-oplog
- test-without-oplog
filters:
branches:
only:
- develop
tags:
only:
- "/^\\d+\\.\\d+\\.\\d+(-rc\\.\\d+)?$/"

@ -0,0 +1,13 @@
#!/bin/bash
set -euvo pipefail
IFS=$'\n\t'
CURL_URL="https://registry.hub.docker.com/u/rocketchat/rocket.chat/trigger/$DOCKER_TRIGGER_TOKEN/"
if [[ $CIRCLE_TAG ]]; then
CURL_DATA='{"source_type":"Tag","source_name":"'"$CIRCLE_TAG"'"}';
else
CURL_DATA='{"source_type":"Branch","source_name":"'"$CIRCLE_BRANCH"'"}';
fi
curl -H "Content-Type: application/json" --data "$CURL_DATA" -X POST "$CURL_URL"

@ -0,0 +1,8 @@
#!/bin/bash
set -euvo pipefail
IFS=$'\n\t'
FILENAME="$ROCKET_DEPLOY_DIR/rocket.chat-$ARTIFACT_NAME.tgz";
ln -s /tmp/build/Rocket.Chat.tar.gz "$FILENAME"
gpg --armor --detach-sign "$FILENAME"

@ -0,0 +1,23 @@
if [[ $CIRCLE_TAG ]]; then
export ARTIFACT_NAME="$(npm run version --silent)"
else
export ARTIFACT_NAME="$(npm run version --silent).$CIRCLE_BUILD_NUM"
fi
if [[ $CIRCLE_TAG =~ ^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+ ]]; then
SNAP_CHANNEL=candidate
RC_RELEASE=candidate
RC_VERSION=$CIRCLE_TAG
elif [[ $CIRCLE_TAG =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
SNAP_CHANNEL=stable
RC_RELEASE=stable
RC_VERSION=$CIRCLE_TAG
else
SNAP_CHANNEL=edge
RC_RELEASE=develop
RC_VERSION=0.60.0-develop
fi
export SNAP_CHANNEL
export RC_RELEASE
export RC_VERSION

@ -0,0 +1,2 @@
export ROCKET_DEPLOY_DIR="/tmp/deploy"
mkdir -p $ROCKET_DEPLOY_DIR

@ -0,0 +1,8 @@
#!/bin/bash
set -euvo pipefail
IFS=$'\n\t'
cp .circleci/sign.key.gpg /tmp
gpg --yes --batch --passphrase=$GPG_PASSWORD /tmp/sign.key.gpg
gpg --allow-secret-key-import --import /tmp/sign.key
rm /tmp/sign.key

Binary file not shown.

@ -0,0 +1,37 @@
#!/bin/bash
set -euvo pipefail
IFS=$'\n\t'
# Add launchpad to known hosts
ssh-keyscan -t rsa -H git.launchpad.net > ~/.ssh/known_hosts
echo "Preparing to trigger a snap release for $SNAP_CHANNEL channel"
cd $PWD/.snapcraft
# We need some meta data so it'll actually commit. This could be useful to have for debugging later.
echo -e "Tag: $CIRCLE_TAG\r\nBranch: $CIRCLE_BRANCH\r\nBuild: $CIRCLE_BUILD_NUM\r\nCommit: $CIRCLE_SHA1" > buildinfo
# Clone launchpad repo for the channel down.
git clone -b $SNAP_CHANNEL git+ssh://rocket.chat.buildmaster@git.launchpad.net/rocket.chat launchpad
# Rarely will change, but just incase we copy it all
cp -r resources buildinfo launchpad/
sed s/#{RC_VERSION}/$RC_VERSION/ snapcraft.yaml > launchpad/snapcraft.yaml
cd launchpad
git add resources snapcraft.yaml buildinfo
# Set commit author details
git config user.email "buildmaster@rocket.chat"
git config user.name "CircleCI"
# Another place where basic meta data will live for at a glance info
git commit -m "CircleCI Build: $CIRCLE_BUILD_NUM CircleCI Commit: $CIRCLE_SHA1"
# Push up up to the branch of choice.
git push origin $SNAP_CHANNEL
# Clean up
cd ..
rm -rf launchpad

@ -0,0 +1,7 @@
#!/bin/bash
set -euvo pipefail
IFS=$'\n\t'
curl -X POST \
-H "X-Update-Token: ${UPDATE_TOKEN}" \
https://releases.rocket.chat/update

@ -1,20 +1,19 @@
FROM rocketchat/base:4
FROM rocketchat/base:8
ENV RC_VERSION 0.59.0-develop
ENV RC_VERSION 0.60.0-develop
MAINTAINER buildmaster@rocket.chat
RUN set -x \
&& curl -SLf "https://download.rocket.chat/build/${RC_VERSION}.tgz" -o rocket.chat.tgz \
&& curl -SLf "https://download.rocket.chat/build/${RC_VERSION}.tgz.asc" -o rocket.chat.tgz.asc \
&& mkdir /app \
&& curl -SLf "https://releases.rocket.chat/${RC_VERSION}/download/" -o rocket.chat.tgz \
&& curl -SLf "https://releases.rocket.chat/${RC_VERSION}/asc" -o rocket.chat.tgz.asc \
&& gpg --verify rocket.chat.tgz.asc \
&& mkdir -p /app \
&& tar -zxf rocket.chat.tgz -C /app \
&& rm rocket.chat.tgz rocket.chat.tgz.asc \
&& cd /app/bundle/programs/server \
&& npm install \
&& npm cache clear \
&& npm cache clear --force \
&& chown -R rocketchat:rocketchat /app
USER rocketchat

@ -3,7 +3,7 @@
"sourceType": "module",
"ecmaVersion": 2017,
"ecmaFeatures": {
"experimentalObjectRestSpread" : true,
"experimentalObjectRestSpread" : true
}
},
"env": {
@ -89,7 +89,6 @@
"object-shorthand": 2
},
"globals": {
"_" : false,
"__meteor_runtime_config__" : false,
"AccountBox" : false,
"Accounts" : false,
@ -135,7 +134,6 @@
"RocketChatFile" : false,
"RoomHistoryManager" : false,
"RoomManager" : false,
"s" : false,
"ServiceConfiguration" : false,
"Session" : false,
"Settings" : false,

@ -4,36 +4,38 @@
# but you can also edit it by hand.
rocketchat:cors
accounts-facebook@1.2.1
accounts-github@1.3.0
accounts-google@1.2.0
accounts-meteor-developer@1.3.0
accounts-password@1.4.0
accounts-twitter@1.3.0
accounts-facebook@1.3.0
accounts-github@1.4.0
accounts-google@1.3.0
accounts-meteor-developer@1.4.0
accounts-password@1.5.0
accounts-twitter@1.4.0
blaze-html-templates
check@1.2.5
ddp-rate-limiter@1.0.7
ecmascript@0.8.3
ejson@1.0.14
dynamic-import@0.2.0
ecmascript@0.9.0
ejson@1.1.0
email@1.2.3
fastclick@1.0.13
http@1.2.12
http@1.3.0
jquery@1.11.10
less@2.7.9
logging@1.1.17
meteor-base@1.1.0
less@2.7.11
logging@1.1.19
meteor-base@1.2.0
mobile-experience@1.0.5
mongo@1.2.2
mongo@1.3.0
random@1.0.10
rate-limit@1.0.8
reactive-dict@1.1.9
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.1.11
service-configuration@1.0.11
session@1.1.7
shell-server@0.2.4
shell-server@0.3.0
spacebars
standard-minifier-js@2.1.2
standard-minifier-js@2.2.0
tracker@1.1.3
rocketchat:2fa
@ -53,6 +55,7 @@ rocketchat:crowd
rocketchat:custom-oauth
rocketchat:custom-sounds
rocketchat:dolphin
rocketchat:drupal
rocketchat:emoji
rocketchat:emoji-custom
rocketchat:emoji-emojione
@ -62,6 +65,7 @@ rocketchat:file
rocketchat:file-upload
rocketchat:github-enterprise
rocketchat:gitlab
#rocketchat:google-natural-language
rocketchat:google-vision
rocketchat:highlight-words
rocketchat:iframe-login
@ -88,11 +92,14 @@ rocketchat:mentions-flextab
rocketchat:message-attachments
rocketchat:message-mark-as-unread
rocketchat:message-pin
rocketchat:message-snippet
rocketchat:message-star
rocketchat:migrations
rocketchat:monitoring
rocketchat:oauth2-server-config
rocketchat:oembed
rocketchat:otr
rocketchat:postcss
rocketchat:push-notifications
rocketchat:reactions
rocketchat:sandstorm
@ -134,11 +141,6 @@ rocketchat:version
rocketchat:videobridge
rocketchat:webrtc
rocketchat:wordpress
rocketchat:message-snippet
#rocketchat:google-natural-language
rocketchat:drupal
rocketchat:monitoring
#rocketchat:chatops
konecty:change-case
konecty:delayed-task
@ -147,6 +149,7 @@ konecty:multiple-instances-status
konecty:nrr
konecty:user-presence
deepwell:bootstrap-datepicker2
dispatch:run-as-user
francocatena:status
jalik:ufs
@ -154,6 +157,7 @@ jalik:ufs-gridfs
jparker:gravatar
kadira:blaze-layout
kadira:flow-router
keepnox:perfect-scrollbar
#kenton:accounts-sandstorm
mizzao:autocomplete
mizzao:timesync
@ -169,12 +173,6 @@ raix:push
raix:ui-dropped-event
smoral:sweetalert
steffo:meteor-accounts-saml
tmeasday:crypto-md5
todda00:friendly-slugs
underscorestring:underscore.string
yasaricli:slugify
yasinuslu:blaze-meta
deepwell:bootstrap-datepicker2
rocketchat:postcss
dynamic-import@0.1.3
keepnox:perfect-scrollbar

@ -1 +1 @@
METEOR@1.5.2.2
METEOR@1.6

@ -1,49 +1,49 @@
accounts-base@1.3.4
accounts-facebook@1.2.1
accounts-github@1.3.0
accounts-google@1.2.0
accounts-meteor-developer@1.3.0
accounts-base@1.4.0
accounts-facebook@1.3.0
accounts-github@1.4.0
accounts-google@1.3.0
accounts-meteor-developer@1.4.0
accounts-oauth@1.1.15
accounts-password@1.4.0
accounts-twitter@1.3.0
accounts-password@1.5.0
accounts-twitter@1.4.0
aldeed:simple-schema@1.5.3
allow-deny@1.0.9
allow-deny@1.1.0
autoupdate@1.3.12
babel-compiler@6.20.0
babel-runtime@1.0.1
babel-compiler@6.24.7
babel-runtime@1.1.1
base64@1.0.10
binary-heap@1.0.10
blaze@2.3.2
blaze-html-templates@1.1.2
blaze-tools@1.0.10
boilerplate-generator@1.2.0
boilerplate-generator@1.3.0
caching-compiler@1.1.9
caching-html-compiler@1.1.2
callback-hook@1.0.10
cfs:http-methods@0.0.32
check@1.2.5
coffeescript@1.12.7_1
coffeescript-compiler@1.12.7_1
coffeescript@1.12.7_3
coffeescript-compiler@1.12.7_3
dandv:caret-position@2.1.1
ddp@1.3.1
ddp-client@2.1.3
ddp-common@1.2.9
ddp@1.4.0
ddp-client@2.2.0
ddp-common@1.3.0
ddp-rate-limiter@1.0.7
ddp-server@2.0.2
ddp-server@2.1.0
deepwell:bootstrap-datepicker2@1.3.0
deps@1.0.12
diff-sequence@1.0.7
dispatch:run-as-user@1.1.1
dynamic-import@0.1.3
ecmascript@0.8.3
ecmascript-runtime@0.4.1
ecmascript-runtime-client@0.4.3
ecmascript-runtime-server@0.4.1
dynamic-import@0.2.0
ecmascript@0.9.0
ecmascript-runtime@0.5.0
ecmascript-runtime-client@0.5.0
ecmascript-runtime-server@0.5.0
edgee:slingshot@0.7.1
ejson@1.0.14
ejson@1.1.0
email@1.2.3
emojione:emojione@2.2.6
facebook-oauth@1.3.2
facebook-oauth@1.4.0
fastclick@1.0.13
francocatena:status@1.5.3
geojson-utils@1.0.10
@ -52,7 +52,7 @@ google-oauth@1.2.4
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.2.12
http@1.3.0
id-map@1.0.9
jalik:ufs@0.7.4_1
jalik:ufs-gridfs@0.2.1
@ -71,29 +71,29 @@ konecty:multiple-instances-status@1.0.6_1
konecty:nrr@2.0.2
konecty:user-presence@1.2.9
launch-screen@1.1.1
less@2.7.9
less@2.7.11
livedata@1.0.18
localstorage@1.1.1
logging@1.1.17
localstorage@1.2.0
logging@1.1.19
matb33:collection-hooks@0.8.4
mdg:validation-error@0.5.1
meteor@1.7.2
meteor-base@1.1.0
meteor@1.8.1
meteor-base@1.2.0
meteor-developer-oauth@1.2.0
meteorhacks:inject-initial@1.0.4
meteorhacks:meteorx@1.4.1
meteorspark:util@0.2.0
minifier-css@1.2.16
minifier-js@2.1.4
minimongo@1.3.2
minifier-js@2.2.1
minimongo@1.4.0
mizzao:autocomplete@0.5.1
mizzao:timesync@0.3.4
mobile-experience@1.0.5
mobile-status-bar@1.0.14
modules@0.10.0
modules-runtime@0.8.0
mongo@1.2.2
mongo-dev-server@1.0.1
modules@0.11.0
modules-runtime@0.9.0
mongo@1.3.0
mongo-dev-server@1.1.0
mongo-id@1.0.6
mongo-livedata@1.0.12
mrt:reactive-store@0.0.1
@ -101,17 +101,17 @@ mystor:device-detection@0.2.0
nimble:restivus@0.8.12
nooitaf:colors@1.1.2_1
npm-bcrypt@0.9.3
npm-mongo@2.2.30
oauth@1.1.13
oauth1@1.1.11
oauth2@1.1.11
npm-mongo@2.2.33
oauth@1.2.0
oauth1@1.2.0
oauth2@1.2.0
observe-sequence@1.0.16
ordered-dict@1.0.9
ostrio:cookies@2.2.2
ostrio:cookies@2.2.3
pauli:accounts-linkedin@2.1.3
pauli:linkedin-oauth@1.2.0
percolate:synced-cron@1.3.2
promise@0.9.0
promise@0.10.0
raix:eventemitter@0.1.3
raix:eventstate@0.0.4
raix:handlebar-helpers@0.2.5
@ -119,7 +119,7 @@ raix:push@3.0.3-rc.7
raix:ui-dropped-event@0.0.7
random@1.0.10
rate-limit@1.0.8
reactive-dict@1.1.9
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.1.11
retry@1.0.9
@ -233,29 +233,26 @@ routepolicy@1.0.12
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
shell-server@0.2.4
shell-server@0.3.0
simple:json-routes@2.1.0
smoral:sweetalert@1.1.1
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.0.10
standard-minifier-js@2.1.2
standard-minifier-js@2.2.1
steffo:meteor-accounts-saml@0.0.1
tap:i18n@1.8.2
templating@1.3.2
templating-compiler@1.3.3
templating-runtime@1.3.2
templating-tools@1.1.2
tmeasday:crypto-base@3.1.2
tmeasday:crypto-md5@3.1.2
todda00:friendly-slugs@0.6.0
tracker@1.1.3
twitter-oauth@1.2.0
ui@1.0.13
underscore@1.0.10
underscorestring:underscore.string@3.3.4
url@1.1.0
webapp@1.3.19
webapp@1.4.0
webapp-hashing@1.0.9
yasaricli:slugify@0.0.7
yasinuslu:blaze-meta@0.3.3

@ -1,12 +1,14 @@
{
"plugins": {
"postcss-smart-import": {},
"postcss-cssnext": {
"features": {
"customProperties": {
"preserve": true
}
},
"postcss-import": {},
"postcss-custom-properties": {
"preserve": true
},
"postcss-media-minmax": {},
"postcss-selector-not": {},
"postcss-calc": {},
"postcss-nesting": {},
"autoprefixer": {
"browsers": [
"ie > 10",
"last 2 Edge versions",

@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = (
appVersion = 62, # Increment this for every release.
appMarketingVersion = (defaultText = "0.59.0-develop"),
appMarketingVersion = (defaultText = "0.60.0-develop"),
# Human-readable representation of appVersion. Should match the way you
# identify versions of your app in documentation and marketing.

@ -22,6 +22,8 @@ const files = [
'./package.json',
'./.sandstorm/sandstorm-pkgdef.capnp',
'./.travis/snap.sh',
'./.circleci/snap.sh',
'./.circleci/update-releases.sh',
'./.docker/Dockerfile',
'./packages/rocketchat-lib/rocketchat.info'
];

@ -67,7 +67,7 @@ function startApp(callback) {
function startChimp() {
startProcess({
name: 'Chimp',
command: 'meteor npm run chimp-test',
command: 'npm run chimp-test',
options: {
env: Object.assign({}, process.env, {
NODE_PATH: process.env.NODE_PATH +

@ -39,7 +39,7 @@ apps:
parts:
node:
plugin: nodejs
node-engine: 4.8.4
node-engine: 8.8.1
build-packages:
# For fibers
- python
@ -47,9 +47,9 @@ parts:
- nodejs
rocketchat-server:
plugin: dump
prepare: cd programs/server; npm install
prepare: cd programs/server; npm install; cd npm/node_modules/meteor/rocketchat_google-vision; npm install grpc
after: [node]
source: https://download.rocket.chat/build/#{RC_VERSION}.tgz
source: https://download.rocket.chat/build/rocket.chat-#{RC_VERSION}.tgz
source-type: tar
stage-packages:
- graphicsmagick

@ -9,7 +9,7 @@ branches:
git:
depth: 1
node_js:
- '4'
- '8'
addons:
apt:
sources:
@ -47,6 +47,7 @@ before_script:
echo " replSetName: \"rs0\"" | sudo tee -a /etc/mongod.conf
- sudo service mongod restart
- mkdir /tmp/build
- meteor --version
- travis_retry meteor npm install
- |-
mongo --eval 'rs.initiate({_id:"rs0", members: [{"_id":1, "host":"localhost:27017"}]})'
@ -57,16 +58,15 @@ before_script:
- mkdir /tmp/build-test
- tar -xf /tmp/build/Rocket.Chat.tar.gz -C /tmp/build-test/
- cd /tmp/build-test/bundle/programs/server
- meteor npm install -g node-gyp node-pre-gyp
- meteor npm install
- npm install
- cd -
- mongo --eval 'rs.status()'
- mongo meteor --eval 'db.getCollectionNames()'
script:
- travis_retry meteor npm test
- travis_retry npm test
- mongo meteor --eval 'db.dropDatabase()'
- unset MONGO_OPLOG_URL
- travis_retry meteor npm test
- travis_retry npm test
before_deploy:
- source ".travis/setartname.sh"
- source ".travis/setdeploydir.sh"

@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then
RC_VERSION=$TRAVIS_TAG
else
CHANNEL=edge
RC_VERSION=0.59.0-develop
RC_VERSION=0.60.0-develop
fi
echo "Preparing to trigger a snap release for $CHANNEL channel"

@ -1,3 +1,650 @@
<a name="0.59.3"></a>
## 0.59.3 (2017-10-29)
### Bug Fixes
- [#8593](https://github.com/RocketChat/Rocket.Chat/pull/8593) AmazonS3: Quote file.name for ContentDisposition for files with commas
- [#8648](https://github.com/RocketChat/Rocket.Chat/pull/8648) Audio message icon
- [#8645](https://github.com/RocketChat/Rocket.Chat/pull/8645) Fix e-mail message forward
- [#8679](https://github.com/RocketChat/Rocket.Chat/pull/8679) Fix typos
- [#8431](https://github.com/RocketChat/Rocket.Chat/pull/8431) Highlighted color height issue
- [#8691](https://github.com/RocketChat/Rocket.Chat/pull/8691) LDAP not respecting UTF8 characters & Sync Interval not working
- [#8655](https://github.com/RocketChat/Rocket.Chat/pull/8655) Update pt-BR translation
<details>
<summary>Others</summary>
- [#8653](https://github.com/RocketChat/Rocket.Chat/pull/8653) install grpc package manually to fix snap armhf build
- [#8434](https://github.com/RocketChat/Rocket.Chat/pull/8434) removing a duplicate line
</details>
<a name="0.59.2"></a>
## 0.59.2 (2017-10-25)
### Bug Fixes
- [#8635](https://github.com/RocketChat/Rocket.Chat/pull/8635) API channel/group.members not sorting
- [#8551](https://github.com/RocketChat/Rocket.Chat/pull/8551) encode filename in url to prevent links breaking
- [#8577](https://github.com/RocketChat/Rocket.Chat/pull/8577) Fix guest pool inquiry taking
- [#8613](https://github.com/RocketChat/Rocket.Chat/pull/8613) LDAP not merging existent users && Wrong id link generation
- [#8634](https://github.com/RocketChat/Rocket.Chat/pull/8634) Message popup menu on mobile/cordova
- [#8637](https://github.com/RocketChat/Rocket.Chat/pull/8637) Missing scroll at create channel page
<a name="0.59.1"></a>
## 0.59.1 (2017-10-19)
### Bug Fixes
- [#8543](https://github.com/RocketChat/Rocket.Chat/pull/8543) Color reset when default value editor is different
- [#8541](https://github.com/RocketChat/Rocket.Chat/pull/8541) LDAP login error regression at 0.59.0
- [#8544](https://github.com/RocketChat/Rocket.Chat/pull/8544) Migration 103 wrong converting primrary colors
- [#8547](https://github.com/RocketChat/Rocket.Chat/pull/8547) Wrong colors after migration 103
<a name="0.59.0"></a>
# 0.59.0 (2017-10-18)
### New Features
- [#7636](https://github.com/RocketChat/Rocket.Chat/pull/7636) Add classes to notification menu so they can be hidden in css
- [#7852](https://github.com/RocketChat/Rocket.Chat/pull/7852) Add markdown parser "marked"
- [#7711](https://github.com/RocketChat/Rocket.Chat/pull/7711) Add room type as a class to the ul-group of rooms
- [#6301](https://github.com/RocketChat/Rocket.Chat/pull/6301) Add tags to uploaded images using Google Cloud Vision API
- [#7658](https://github.com/RocketChat/Rocket.Chat/pull/7658) Add unread options for direct messages
- [#5902](https://github.com/RocketChat/Rocket.Chat/pull/5902) Adds a Keyboard Shortcut option to the flextab
- [#7614](https://github.com/RocketChat/Rocket.Chat/pull/7614) Allow ldap mapping of customFields
- [#7817](https://github.com/RocketChat/Rocket.Chat/pull/7817) Audio Notification updated in sidebar
- [#7350](https://github.com/RocketChat/Rocket.Chat/pull/7350) Automatically select the first channel
- [#7853](https://github.com/RocketChat/Rocket.Chat/pull/7853) Create a standard for svg icons
- [#7342](https://github.com/RocketChat/Rocket.Chat/pull/7342) Integrated personal email gateway (GSoC'17)
- [#7830](https://github.com/RocketChat/Rocket.Chat/pull/7830) Option to block users to mention unknow users
- [#6700](https://github.com/RocketChat/Rocket.Chat/pull/6700) Package to render issue numbers into links to an issue tracker.
- [#7864](https://github.com/RocketChat/Rocket.Chat/pull/7864) Replace message cog for vertical menu
- [#7565](https://github.com/RocketChat/Rocket.Chat/pull/7565) REST API endpoint to list all private groups (permission limited)
- [#7643](https://github.com/RocketChat/Rocket.Chat/pull/7643) Rocket.Chat UI Redesign
- [#7612](https://github.com/RocketChat/Rocket.Chat/pull/7612) Search users by fields defined by admin
- [#7688](https://github.com/RocketChat/Rocket.Chat/pull/7688) Template to show Custom Fields in user info view
- [#8073](https://github.com/RocketChat/Rocket.Chat/pull/8073) Upgrade to meteor 1.5.2
- [#8260](https://github.com/RocketChat/Rocket.Chat/pull/8260) Enable read only channel creation
- [#8304](https://github.com/RocketChat/Rocket.Chat/pull/8304) Add RD Station integration to livechat
- [#8362](https://github.com/RocketChat/Rocket.Chat/pull/8362) Sidebar item width to 100%
- [#8360](https://github.com/RocketChat/Rocket.Chat/pull/8360) Smaller accountBox
- [#8361](https://github.com/RocketChat/Rocket.Chat/pull/8361) Unify unread and mentions badge
- [#8459](https://github.com/RocketChat/Rocket.Chat/pull/8459) Setting to disable MarkDown and enable AutoLinker
### Bug Fixes
- [#7854](https://github.com/RocketChat/Rocket.Chat/pull/7854) Add CSS support for Safari versions > 7
- [#7456](https://github.com/RocketChat/Rocket.Chat/pull/7456) Csv importer: work with more problematic data
- [#7815](https://github.com/RocketChat/Rocket.Chat/pull/7815) Dutch translations
- [#7846](https://github.com/RocketChat/Rocket.Chat/pull/7846) Email message forward error
- [#7673](https://github.com/RocketChat/Rocket.Chat/pull/7673) Example usage of unsubscribe.js
- [#7855](https://github.com/RocketChat/Rocket.Chat/pull/7855) File upload on multi-instances using a path prefix
- [#7656](https://github.com/RocketChat/Rocket.Chat/pull/7656) Fix avatar upload fail on Cordova app
- [#7168](https://github.com/RocketChat/Rocket.Chat/pull/7168) Fix black background on transparent avatars
- [#7814](https://github.com/RocketChat/Rocket.Chat/pull/7814) Fix Dutch translation
- [#7629](https://github.com/RocketChat/Rocket.Chat/pull/7629) Fix messagebox growth
- [#7863](https://github.com/RocketChat/Rocket.Chat/pull/7863) Fix migration 100
- [#7823](https://github.com/RocketChat/Rocket.Chat/pull/7823) Fix new-message button showing on search
- [#7687](https://github.com/RocketChat/Rocket.Chat/pull/7687) Fix room load on first hit
- [#7758](https://github.com/RocketChat/Rocket.Chat/pull/7758) Fixed function closure syntax allowing validation emails to be sent.
- [#7825](https://github.com/RocketChat/Rocket.Chat/pull/7825) Google vision NSFW tag
- [#7679](https://github.com/RocketChat/Rocket.Chat/pull/7679) Make link inside YouTube preview open in new tab
- [#7644](https://github.com/RocketChat/Rocket.Chat/pull/7644) Markdown noopener/noreferrer: use correct HTML attribute
- [#7721](https://github.com/RocketChat/Rocket.Chat/pull/7721) meteor-accounts-saml issue with ns0,ns1 namespaces, makes it compatible with pysaml2 lib
- [#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652) Only use "File Uploaded" prefix on files
- [#7809](https://github.com/RocketChat/Rocket.Chat/pull/7809) Remove redundant "do" in "Are you sure ...?" messages.
- [#7672](https://github.com/RocketChat/Rocket.Chat/pull/7672) Remove references to non-existent tests
- [#7748](https://github.com/RocketChat/Rocket.Chat/pull/7748) scroll on flex-tab
- [#7779](https://github.com/RocketChat/Rocket.Chat/pull/7779) Settings not getting applied from Meteor.settings and process.env
- [#7778](https://github.com/RocketChat/Rocket.Chat/pull/7778) Update Snap links
- [#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639) Wrong email subject when "All Messages" setting enabled
- [#7630](https://github.com/RocketChat/Rocket.Chat/pull/7630) Wrong render of snippet’s name
- [#7885](https://github.com/RocketChat/Rocket.Chat/pull/7885) message actions over unread bar
- [#7883](https://github.com/RocketChat/Rocket.Chat/pull/7883) popover position on mobile
- [#7881](https://github.com/RocketChat/Rocket.Chat/pull/7881) search results position on sidebar
- [#7880](https://github.com/RocketChat/Rocket.Chat/pull/7880) sidebar paddings
- [#7912](https://github.com/RocketChat/Rocket.Chat/pull/7912) Fix google play logo on repo README
- [#7904](https://github.com/RocketChat/Rocket.Chat/pull/7904) Fix livechat toggle UI issue
- [#7895](https://github.com/RocketChat/Rocket.Chat/pull/7895) Remove break change in Realtime API
- [#7893](https://github.com/RocketChat/Rocket.Chat/pull/7893) Window exception when parsing Markdown on server
- [#7971](https://github.com/RocketChat/Rocket.Chat/pull/7971) Add padding on messages to allow space to the action buttons
- [#7944](https://github.com/RocketChat/Rocket.Chat/pull/7944) Broken embedded view layout
- [#7943](https://github.com/RocketChat/Rocket.Chat/pull/7943) Broken emoji picker on firefox
- [#7984](https://github.com/RocketChat/Rocket.Chat/pull/7984) Chat box no longer auto-focuses when typing
- [#7942](https://github.com/RocketChat/Rocket.Chat/pull/7942) Create channel button on Firefox
- [#7948](https://github.com/RocketChat/Rocket.Chat/pull/7948) Document README.md. Drupal repo out of date
- [#7927](https://github.com/RocketChat/Rocket.Chat/pull/7927) Double scroll on 'keyboard shortcuts' menu in sidepanel
- [#7945](https://github.com/RocketChat/Rocket.Chat/pull/7945) Fix placeholders in account profile
- [#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963) Fix the status on the members list
- [#7965](https://github.com/RocketChat/Rocket.Chat/pull/7965) Markdown being rendered in code tags
- [#7954](https://github.com/RocketChat/Rocket.Chat/pull/7954) OTR buttons padding
- [#7712](https://github.com/RocketChat/Rocket.Chat/pull/7712) Show leader on first load
- [#7970](https://github.com/RocketChat/Rocket.Chat/pull/7970) Small alignment fixes
- [#7960](https://github.com/RocketChat/Rocket.Chat/pull/7960) status and active room colors on sidebar
- [#7985](https://github.com/RocketChat/Rocket.Chat/pull/7985) Text area buttons and layout on mobile
- [#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986) Textarea on firefox
- [#7953](https://github.com/RocketChat/Rocket.Chat/pull/7953) username ellipsis on firefox
- [#8101](https://github.com/RocketChat/Rocket.Chat/pull/8101) Dynamic popover
- [#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099) Fix setting user avatar on LDAP login
- [#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059) Not sending email to mentioned users with unchanged preference
- [#8112](https://github.com/RocketChat/Rocket.Chat/pull/8112) RTL
- [#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047) Scroll on messagebox
- [#8039](https://github.com/RocketChat/Rocket.Chat/pull/8039) copy to clipboard and update clipboard.js library
- [#8001](https://github.com/RocketChat/Rocket.Chat/pull/8001) Error when translating message
- [#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754) Fix email on mention
- [#8014](https://github.com/RocketChat/Rocket.Chat/pull/8014) Hide scrollbar on login page if not necessary
- [#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048) Invisible leader bar on hover
- [#8019](https://github.com/RocketChat/Rocket.Chat/pull/8019) message-box autogrow
- [#8046](https://github.com/RocketChat/Rocket.Chat/pull/8046) Prevent autotranslate tokens race condition
- [#7998](https://github.com/RocketChat/Rocket.Chat/pull/7998) Recent emojis not updated when adding via text
- [#8017](https://github.com/RocketChat/Rocket.Chat/pull/8017) room icon on header
- [#8018](https://github.com/RocketChat/Rocket.Chat/pull/8018) search results height
- [#7988](https://github.com/RocketChat/Rocket.Chat/pull/7988) Vertical menu on flex-tab
- [#8122](https://github.com/RocketChat/Rocket.Chat/pull/8122) Settings description not showing
- [#8147](https://github.com/RocketChat/Rocket.Chat/pull/8147) "*.members" rest api being useless and only returning usernames
- [#8094](https://github.com/RocketChat/Rocket.Chat/pull/8094) Add admin audio preferences translations
- [#8172](https://github.com/RocketChat/Rocket.Chat/pull/8172) Allow unknown file types if no allowed whitelist has been set ([#7074](https://github.com/RocketChat/Rocket.Chat/issues/7074))
- [#8146](https://github.com/RocketChat/Rocket.Chat/pull/8146) Fix iframe login API response (issue [#8145](https://github.com/RocketChat/Rocket.Chat/issues/8145))
- [#8144](https://github.com/RocketChat/Rocket.Chat/pull/8144) Fix new room sound being played too much
- [#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) Issue [#8166](https://github.com/RocketChat/Rocket.Chat/issues/8166) where empty analytics setting breaks to load Piwik script
- [#8154](https://github.com/RocketChat/Rocket.Chat/pull/8154) Sidebar and RTL alignments
- [#8159](https://github.com/RocketChat/Rocket.Chat/pull/8159) Text area lost text when page reloads
- [#8211](https://github.com/RocketChat/Rocket.Chat/pull/8211) Incorrect URL for login terms when using prefix
- [#8213](https://github.com/RocketChat/Rocket.Chat/pull/8213) Leave and hide buttons was removed
- [#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190) Scrollbar not using new style
- [#8210](https://github.com/RocketChat/Rocket.Chat/pull/8210) User avatar in DM list.
- [#8241](https://github.com/RocketChat/Rocket.Chat/pull/8241) Api groups.files is always returning empty
- [#8216](https://github.com/RocketChat/Rocket.Chat/pull/8216) Case insensitive SAML email check
- [#8259](https://github.com/RocketChat/Rocket.Chat/pull/8259) clipboard and permalink on new popover
- [#8262](https://github.com/RocketChat/Rocket.Chat/pull/8262) make sidebar item animation fast
- [#8261](https://github.com/RocketChat/Rocket.Chat/pull/8261) RTL on reply
- [#8257](https://github.com/RocketChat/Rocket.Chat/pull/8257) sidenav colors, hide and leave, create channel on safari
- [#8252](https://github.com/RocketChat/Rocket.Chat/pull/8252) sidenav mentions on hover
- [#8278](https://github.com/RocketChat/Rocket.Chat/pull/8278) "Cancel button" on modal in RTL in Firefox 55
- [#8266](https://github.com/RocketChat/Rocket.Chat/pull/8266) "Channel Setting" buttons alignment in RTL
- [#8270](https://github.com/RocketChat/Rocket.Chat/pull/8270) [i18n] My Profile & README.md links
- [#8271](https://github.com/RocketChat/Rocket.Chat/pull/8271) Attachment icons alignment in LTR and RTL
- [#8307](https://github.com/RocketChat/Rocket.Chat/pull/8307) Call buttons with wrong margin on RTL
- [#8295](https://github.com/RocketChat/Rocket.Chat/pull/8295) Check attachments is defined before accessing first element
- [#8300](https://github.com/RocketChat/Rocket.Chat/pull/8300) Emoji Picker hidden for reactions in RTL
- [#8310](https://github.com/RocketChat/Rocket.Chat/pull/8310) Execute meteor reset on TRAVIS_TAG builds
- [#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286) Missing placeholder translations
- [#8237](https://github.com/RocketChat/Rocket.Chat/pull/8237) Removing pipe and commas from custom emojis ([#8168](https://github.com/RocketChat/Rocket.Chat/issues/8168))
- [#8269](https://github.com/RocketChat/Rocket.Chat/pull/8269) some placeholder and phrase traslation fix
- [#8298](https://github.com/RocketChat/Rocket.Chat/pull/8298) TypeError: Cannot read property 't' of undefined
- [#8296](https://github.com/RocketChat/Rocket.Chat/pull/8296) Wrong file name when upload to AWS S3
- [#8314](https://github.com/RocketChat/Rocket.Chat/pull/8314) After deleting the room, cache is not synchronizing
- [#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317) Email Subjects not being sent
- [#8316](https://github.com/RocketChat/Rocket.Chat/pull/8316) Mention unread indicator was removed
- [#8315](https://github.com/RocketChat/Rocket.Chat/pull/8315) Put delete action on another popover group
- [#8334](https://github.com/RocketChat/Rocket.Chat/pull/8334) Remove sidebar header on admin embedded version
- [#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357) Missing i18n translations
- [#8358](https://github.com/RocketChat/Rocket.Chat/pull/8358) remove accountBox from admin menu
- [#8372](https://github.com/RocketChat/Rocket.Chat/pull/8372) Various LDAP issues & Missing pagination
- [#8386](https://github.com/RocketChat/Rocket.Chat/pull/8386) disabled katex tooltip on messageBox
- [#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408) Duplicate code in rest api letting in a few bugs with the rest api
- [#8397](https://github.com/RocketChat/Rocket.Chat/pull/8397) Sidebar item menu position in RTL
- [#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390) Slack import failing and not being able to be restarted
- [#8457](https://github.com/RocketChat/Rocket.Chat/pull/8457) LDAP memory issues when pagination is not available
- [#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491) Invalid Code message for password protected channel
- [#8514](https://github.com/RocketChat/Rocket.Chat/pull/8514) Uncessary route reload break some routes
- [#8489](https://github.com/RocketChat/Rocket.Chat/pull/8489) Wrong message when reseting password and 2FA is enabled
- [#8527](https://github.com/RocketChat/Rocket.Chat/pull/8527) Do not send joinCode field to clients
- [#8529](https://github.com/RocketChat/Rocket.Chat/pull/8529) Improve room sync speed
<details>
<summary>Others</summary>
- [#7793](https://github.com/RocketChat/Rocket.Chat/pull/7793) Additions to the REST API
- [#7625](https://github.com/RocketChat/Rocket.Chat/pull/7625) Bump version to 0.59.0-develop
- [#7661](https://github.com/RocketChat/Rocket.Chat/pull/7661) Fix typo in generated URI
- [#7728](https://github.com/RocketChat/Rocket.Chat/pull/7728) FIX: Error when starting local development environment
- [#7803](https://github.com/RocketChat/Rocket.Chat/pull/7803) LingoHub based on develop
- [#2](https://github.com/RocketChat/Rocket.Chat/pull/2) local update
- [#7677](https://github.com/RocketChat/Rocket.Chat/pull/7677) Meteor packages and npm dependencies update
- [#7865](https://github.com/RocketChat/Rocket.Chat/pull/7865) Mobile sidenav
- [#7842](https://github.com/RocketChat/Rocket.Chat/pull/7842) npm deps update
- [#7755](https://github.com/RocketChat/Rocket.Chat/pull/7755) npm deps update
- [#7739](https://github.com/RocketChat/Rocket.Chat/pull/7739) Remove CircleCI
- [#7894](https://github.com/RocketChat/Rocket.Chat/pull/7894) Hide flex-tab close button
- [#8054](https://github.com/RocketChat/Rocket.Chat/pull/8054) Remove unnecessary returns in cors common
- [#8194](https://github.com/RocketChat/Rocket.Chat/pull/8194) Fix more rtl issues
- [#8197](https://github.com/RocketChat/Rocket.Chat/pull/8197) npm deps update
- [#8244](https://github.com/RocketChat/Rocket.Chat/pull/8244) Disable perfect scrollbar
- [#8243](https://github.com/RocketChat/Rocket.Chat/pull/8243) Fix `leave and hide` click, color and position
- [#8253](https://github.com/RocketChat/Rocket.Chat/pull/8253) readme-file: fix broken link
- [#8299](https://github.com/RocketChat/Rocket.Chat/pull/8299) [FIX] Amin menu not showing all items & File list breaking line
- [#8273](https://github.com/RocketChat/Rocket.Chat/pull/8273) Deps update
- [#8282](https://github.com/RocketChat/Rocket.Chat/pull/8282) fix color on unread messages
- [#8331](https://github.com/RocketChat/Rocket.Chat/pull/8331) [FIX-RC] Mobile file upload not working
- [#8355](https://github.com/RocketChat/Rocket.Chat/pull/8355) Update meteor to 1.5.2.2-rc.0
- [#8375](https://github.com/RocketChat/Rocket.Chat/pull/8375) LingoHub based on develop
- [#8345](https://github.com/RocketChat/Rocket.Chat/pull/8345) Remove field `lastActivity` from subscription data
- [#8363](https://github.com/RocketChat/Rocket.Chat/pull/8363) Sync translations from LingoHub
- [#8364](https://github.com/RocketChat/Rocket.Chat/pull/8364) Update Meteor to 1.5.2.2
- [#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394) Add i18n Title to snippet messages
- [#8416](https://github.com/RocketChat/Rocket.Chat/pull/8416) Fix: Account menu position on RTL
- [#8417](https://github.com/RocketChat/Rocket.Chat/pull/8417) Fix: Missing LDAP option to show internal logs
- [#8414](https://github.com/RocketChat/Rocket.Chat/pull/8414) Fix: Missing LDAP reconnect setting
- [#8398](https://github.com/RocketChat/Rocket.Chat/pull/8398) Fix: Missing settings to configure LDAP size and page limits
- [#8451](https://github.com/RocketChat/Rocket.Chat/pull/8451) Improve markdown parser code
- [#8515](https://github.com/RocketChat/Rocket.Chat/pull/8515) Change artifact path
- [#8463](https://github.com/RocketChat/Rocket.Chat/pull/8463) Color variables migration
- [#8490](https://github.com/RocketChat/Rocket.Chat/pull/8490) Enable AutoLinker back
- [#8516](https://github.com/RocketChat/Rocket.Chat/pull/8516) Fix: Change password not working in new UI
- [#8520](https://github.com/RocketChat/Rocket.Chat/pull/8520) Fix high CPU load when sending messages on large rooms (regression)
</details>
<details>
<summary>Details</summary>
## 0.59.0-rc.17 (2017-10-18)
<details>
<summary>Others</summary>
- [#8529](https://github.com/RocketChat/Rocket.Chat/pull/8529) Improve room sync speed
</details>
## 0.59.0-rc.16 (2017-10-18)
### Bug Fixes
- [#8527](https://github.com/RocketChat/Rocket.Chat/pull/8527) Do not send joinCode field to clients
## 0.59.0-rc.15 (2017-10-18)
<details>
<summary>Others</summary>
- [#8520](https://github.com/RocketChat/Rocket.Chat/pull/8520) Fix high CPU load when sending messages on large rooms (regression)
</details>
## 0.59.0-rc.14 (2017-10-17)
### Bug Fixes
- [#8491](https://github.com/RocketChat/Rocket.Chat/pull/8491) Invalid Code message for password protected channel
- [#8514](https://github.com/RocketChat/Rocket.Chat/pull/8514) Uncessary route reload break some routes
- [#8489](https://github.com/RocketChat/Rocket.Chat/pull/8489) Wrong message when reseting password and 2FA is enabled
<details>
<summary>Others</summary>
- [#8515](https://github.com/RocketChat/Rocket.Chat/pull/8515) Change artifact path
- [#8463](https://github.com/RocketChat/Rocket.Chat/pull/8463) Color variables migration
- [#8490](https://github.com/RocketChat/Rocket.Chat/pull/8490) Enable AutoLinker back
- [#8516](https://github.com/RocketChat/Rocket.Chat/pull/8516) Fix: Change password not working in new UI
</details>
## 0.59.0-rc.13 (2017-10-11)
### New Features
- [#8459](https://github.com/RocketChat/Rocket.Chat/pull/8459) Setting to disable MarkDown and enable AutoLinker
### Bug Fixes
- [#8457](https://github.com/RocketChat/Rocket.Chat/pull/8457) LDAP memory issues when pagination is not available
<details>
<summary>Others</summary>
- [#8451](https://github.com/RocketChat/Rocket.Chat/pull/8451) Improve markdown parser code
</details>
## 0.58.4 (2017-10-06)
### Bug Fixes
- [#8389](https://github.com/RocketChat/Rocket.Chat/pull/8389) Add needed dependency for snaps
- [#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408) Duplicate code in rest api letting in a few bugs with the rest api
- [#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390) Slack import failing and not being able to be restarted
## 0.59.0-rc.12 (2017-10-09)
- [#8386](https://github.com/RocketChat/Rocket.Chat/pull/8386) disabled katex tooltip on messageBox
- [#8408](https://github.com/RocketChat/Rocket.Chat/pull/8408) Duplicate code in rest api letting in a few bugs with the rest api
- [#8397](https://github.com/RocketChat/Rocket.Chat/pull/8397) Sidebar item menu position in RTL
- [#8390](https://github.com/RocketChat/Rocket.Chat/pull/8390) Slack import failing and not being able to be restarted
<details>
<summary>Others</summary>
- [#8394](https://github.com/RocketChat/Rocket.Chat/pull/8394) Add i18n Title to snippet messages
- [#8416](https://github.com/RocketChat/Rocket.Chat/pull/8416) Fix: Account menu position on RTL
- [#8417](https://github.com/RocketChat/Rocket.Chat/pull/8417) Fix: Missing LDAP option to show internal logs
- [#8414](https://github.com/RocketChat/Rocket.Chat/pull/8414) Fix: Missing LDAP reconnect setting
- [#8398](https://github.com/RocketChat/Rocket.Chat/pull/8398) Fix: Missing settings to configure LDAP size and page limits
</details>
## 0.59.0-rc.11 (2017-10-03)
### New Features
- [#8362](https://github.com/RocketChat/Rocket.Chat/pull/8362) Sidebar item width to 100%
- [#8360](https://github.com/RocketChat/Rocket.Chat/pull/8360) Smaller accountBox
- [#8361](https://github.com/RocketChat/Rocket.Chat/pull/8361) Unify unread and mentions badge
### Bug Fixes
- [#8357](https://github.com/RocketChat/Rocket.Chat/pull/8357) Missing i18n translations
- [#8358](https://github.com/RocketChat/Rocket.Chat/pull/8358) remove accountBox from admin menu
- [#8372](https://github.com/RocketChat/Rocket.Chat/pull/8372) Various LDAP issues & Missing pagination
<details>
<summary>Others</summary>
- [#8375](https://github.com/RocketChat/Rocket.Chat/pull/8375) LingoHub based on develop
- [#8345](https://github.com/RocketChat/Rocket.Chat/pull/8345) Remove field `lastActivity` from subscription data
- [#8363](https://github.com/RocketChat/Rocket.Chat/pull/8363) Sync translations from LingoHub
- [#8364](https://github.com/RocketChat/Rocket.Chat/pull/8364) Update Meteor to 1.5.2.2
</details>
## 0.59.0-rc.10 (2017-09-29)
### Bug Fixes
- [#8314](https://github.com/RocketChat/Rocket.Chat/pull/8314) After deleting the room, cache is not synchronizing
- [#8317](https://github.com/RocketChat/Rocket.Chat/pull/8317) Email Subjects not being sent
- [#8316](https://github.com/RocketChat/Rocket.Chat/pull/8316) Mention unread indicator was removed
- [#8315](https://github.com/RocketChat/Rocket.Chat/pull/8315) Put delete action on another popover group
- [#8334](https://github.com/RocketChat/Rocket.Chat/pull/8334) Remove sidebar header on admin embedded version
<details>
<summary>Others</summary>
- [#8331](https://github.com/RocketChat/Rocket.Chat/pull/8331) [FIX-RC] Mobile file upload not working
- [#8355](https://github.com/RocketChat/Rocket.Chat/pull/8355) Update meteor to 1.5.2.2-rc.0
</details>
## 0.59.0-rc.9 (2017-09-26)
### New Features
- [#8304](https://github.com/RocketChat/Rocket.Chat/pull/8304) Add RD Station integration to livechat
### Bug Fixes
- [#8278](https://github.com/RocketChat/Rocket.Chat/pull/8278) "Cancel button" on modal in RTL in Firefox 55
- [#8266](https://github.com/RocketChat/Rocket.Chat/pull/8266) "Channel Setting" buttons alignment in RTL
- [#8270](https://github.com/RocketChat/Rocket.Chat/pull/8270) [i18n] My Profile & README.md links
- [#8271](https://github.com/RocketChat/Rocket.Chat/pull/8271) Attachment icons alignment in LTR and RTL
- [#8307](https://github.com/RocketChat/Rocket.Chat/pull/8307) Call buttons with wrong margin on RTL
- [#8295](https://github.com/RocketChat/Rocket.Chat/pull/8295) Check attachments is defined before accessing first element
- [#8300](https://github.com/RocketChat/Rocket.Chat/pull/8300) Emoji Picker hidden for reactions in RTL
- [#8310](https://github.com/RocketChat/Rocket.Chat/pull/8310) Execute meteor reset on TRAVIS_TAG builds
- [#8286](https://github.com/RocketChat/Rocket.Chat/pull/8286) Missing placeholder translations
- [#8237](https://github.com/RocketChat/Rocket.Chat/pull/8237) Removing pipe and commas from custom emojis ([#8168](https://github.com/RocketChat/Rocket.Chat/issues/8168))
- [#8269](https://github.com/RocketChat/Rocket.Chat/pull/8269) some placeholder and phrase traslation fix
- [#8298](https://github.com/RocketChat/Rocket.Chat/pull/8298) TypeError: Cannot read property 't' of undefined
- [#8296](https://github.com/RocketChat/Rocket.Chat/pull/8296) Wrong file name when upload to AWS S3
<details>
<summary>Others</summary>
- [#8299](https://github.com/RocketChat/Rocket.Chat/pull/8299) [FIX] Amin menu not showing all items & File list breaking line
- [#8273](https://github.com/RocketChat/Rocket.Chat/pull/8273) Deps update
- [#8282](https://github.com/RocketChat/Rocket.Chat/pull/8282) fix color on unread messages
</details>
## 0.59.0-rc.8 (2017-09-23)
### New Features
- [#8260](https://github.com/RocketChat/Rocket.Chat/pull/8260) Enable read only channel creation
### Bug Fixes
- [#8241](https://github.com/RocketChat/Rocket.Chat/pull/8241) Api groups.files is always returning empty
- [#8216](https://github.com/RocketChat/Rocket.Chat/pull/8216) Case insensitive SAML email check
- [#8259](https://github.com/RocketChat/Rocket.Chat/pull/8259) clipboard and permalink on new popover
- [#8262](https://github.com/RocketChat/Rocket.Chat/pull/8262) make sidebar item animation fast
- [#8261](https://github.com/RocketChat/Rocket.Chat/pull/8261) RTL on reply
- [#8257](https://github.com/RocketChat/Rocket.Chat/pull/8257) sidenav colors, hide and leave, create channel on safari
- [#8252](https://github.com/RocketChat/Rocket.Chat/pull/8252) sidenav mentions on hover
<details>
<summary>Others</summary>
- [#8244](https://github.com/RocketChat/Rocket.Chat/pull/8244) Disable perfect scrollbar
- [#8243](https://github.com/RocketChat/Rocket.Chat/pull/8243) Fix `leave and hide` click, color and position
- [#8253](https://github.com/RocketChat/Rocket.Chat/pull/8253) readme-file: fix broken link
</details>
## 0.59.0-rc.7 (2017-09-20)
### Bug Fixes
- [#8211](https://github.com/RocketChat/Rocket.Chat/pull/8211) Incorrect URL for login terms when using prefix
- [#8213](https://github.com/RocketChat/Rocket.Chat/pull/8213) Leave and hide buttons was removed
- [#8190](https://github.com/RocketChat/Rocket.Chat/pull/8190) Scrollbar not using new style
- [#8210](https://github.com/RocketChat/Rocket.Chat/pull/8210) User avatar in DM list.
<details>
<summary>Others</summary>
- [#8194](https://github.com/RocketChat/Rocket.Chat/pull/8194) Fix more rtl issues
- [#8197](https://github.com/RocketChat/Rocket.Chat/pull/8197) npm deps update
</details>
## 0.59.0-rc.6 (2017-09-18)
### New Features
- [#8073](https://github.com/RocketChat/Rocket.Chat/pull/8073) Upgrade to meteor 1.5.2
### Bug Fixes
- [#8147](https://github.com/RocketChat/Rocket.Chat/pull/8147) "*.members" rest api being useless and only returning usernames
- [#8094](https://github.com/RocketChat/Rocket.Chat/pull/8094) Add admin audio preferences translations
- [#8172](https://github.com/RocketChat/Rocket.Chat/pull/8172) Allow unknown file types if no allowed whitelist has been set ([#7074](https://github.com/RocketChat/Rocket.Chat/issues/7074))
- [#8146](https://github.com/RocketChat/Rocket.Chat/pull/8146) Fix iframe login API response (issue [#8145](https://github.com/RocketChat/Rocket.Chat/issues/8145))
- [#8144](https://github.com/RocketChat/Rocket.Chat/pull/8144) Fix new room sound being played too much
- [#8167](https://github.com/RocketChat/Rocket.Chat/pull/8167) Issue [#8166](https://github.com/RocketChat/Rocket.Chat/issues/8166) where empty analytics setting breaks to load Piwik script
- [#8154](https://github.com/RocketChat/Rocket.Chat/pull/8154) Sidebar and RTL alignments
- [#8159](https://github.com/RocketChat/Rocket.Chat/pull/8159) Text area lost text when page reloads
## 0.59.0-rc.5 (2017-09-14)
### Bug Fixes
- [#8101](https://github.com/RocketChat/Rocket.Chat/pull/8101) Dynamic popover
- [#8099](https://github.com/RocketChat/Rocket.Chat/pull/8099) Fix setting user avatar on LDAP login
- [#8059](https://github.com/RocketChat/Rocket.Chat/pull/8059) Not sending email to mentioned users with unchanged preference
- [#8112](https://github.com/RocketChat/Rocket.Chat/pull/8112) RTL
- [#8047](https://github.com/RocketChat/Rocket.Chat/pull/8047) Scroll on messagebox
- [#8122](https://github.com/RocketChat/Rocket.Chat/pull/8122) Settings description not showing
<details>
<summary>Others</summary>
- [#8054](https://github.com/RocketChat/Rocket.Chat/pull/8054) Remove unnecessary returns in cors common
</details>
## 0.59.0-rc.4 (2017-09-05)
### Bug Fixes
- [#8039](https://github.com/RocketChat/Rocket.Chat/pull/8039) copy to clipboard and update clipboard.js library
- [#8001](https://github.com/RocketChat/Rocket.Chat/pull/8001) Error when translating message
- [#7754](https://github.com/RocketChat/Rocket.Chat/pull/7754) Fix email on mention
- [#8014](https://github.com/RocketChat/Rocket.Chat/pull/8014) Hide scrollbar on login page if not necessary
- [#8048](https://github.com/RocketChat/Rocket.Chat/pull/8048) Invisible leader bar on hover
- [#8019](https://github.com/RocketChat/Rocket.Chat/pull/8019) message-box autogrow
- [#8046](https://github.com/RocketChat/Rocket.Chat/pull/8046) Prevent autotranslate tokens race condition
- [#7998](https://github.com/RocketChat/Rocket.Chat/pull/7998) Recent emojis not updated when adding via text
- [#8017](https://github.com/RocketChat/Rocket.Chat/pull/8017) room icon on header
- [#8018](https://github.com/RocketChat/Rocket.Chat/pull/8018) search results height
- [#7988](https://github.com/RocketChat/Rocket.Chat/pull/7988) Vertical menu on flex-tab
## 0.59.0-rc.3 (2017-08-30)
### Bug Fixes
- [#7971](https://github.com/RocketChat/Rocket.Chat/pull/7971) Add padding on messages to allow space to the action buttons
- [#7944](https://github.com/RocketChat/Rocket.Chat/pull/7944) Broken embedded view layout
- [#7943](https://github.com/RocketChat/Rocket.Chat/pull/7943) Broken emoji picker on firefox
- [#7984](https://github.com/RocketChat/Rocket.Chat/pull/7984) Chat box no longer auto-focuses when typing
- [#7942](https://github.com/RocketChat/Rocket.Chat/pull/7942) Create channel button on Firefox
- [#7948](https://github.com/RocketChat/Rocket.Chat/pull/7948) Document README.md. Drupal repo out of date
- [#7927](https://github.com/RocketChat/Rocket.Chat/pull/7927) Double scroll on 'keyboard shortcuts' menu in sidepanel
- [#7945](https://github.com/RocketChat/Rocket.Chat/pull/7945) Fix placeholders in account profile
- [#7963](https://github.com/RocketChat/Rocket.Chat/pull/7963) Fix the status on the members list
- [#7965](https://github.com/RocketChat/Rocket.Chat/pull/7965) Markdown being rendered in code tags
- [#7954](https://github.com/RocketChat/Rocket.Chat/pull/7954) OTR buttons padding
- [#7712](https://github.com/RocketChat/Rocket.Chat/pull/7712) Show leader on first load
- [#7970](https://github.com/RocketChat/Rocket.Chat/pull/7970) Small alignment fixes
- [#7960](https://github.com/RocketChat/Rocket.Chat/pull/7960) status and active room colors on sidebar
- [#7985](https://github.com/RocketChat/Rocket.Chat/pull/7985) Text area buttons and layout on mobile
- [#7986](https://github.com/RocketChat/Rocket.Chat/pull/7986) Textarea on firefox
- [#7953](https://github.com/RocketChat/Rocket.Chat/pull/7953) username ellipsis on firefox
## 0.59.0-rc.2 (2017-08-28)
### Bug Fixes
- [#7912](https://github.com/RocketChat/Rocket.Chat/pull/7912) Fix google play logo on repo README
- [#7904](https://github.com/RocketChat/Rocket.Chat/pull/7904) Fix livechat toggle UI issue
- [#7895](https://github.com/RocketChat/Rocket.Chat/pull/7895) Remove break change in Realtime API
- [#7893](https://github.com/RocketChat/Rocket.Chat/pull/7893) Window exception when parsing Markdown on server
<details>
<summary>Others</summary>
- [#7894](https://github.com/RocketChat/Rocket.Chat/pull/7894) Hide flex-tab close button
</details>
## 0.59.0-rc.1 (2017-08-25)
### Bug Fixes
- [#7885](https://github.com/RocketChat/Rocket.Chat/pull/7885) message actions over unread bar
- [#7883](https://github.com/RocketChat/Rocket.Chat/pull/7883) popover position on mobile
- [#7881](https://github.com/RocketChat/Rocket.Chat/pull/7881) search results position on sidebar
- [#7880](https://github.com/RocketChat/Rocket.Chat/pull/7880) sidebar paddings
## 0.59.0-rc.0 (2017-08-25)
### New Features
- [#7636](https://github.com/RocketChat/Rocket.Chat/pull/7636) Add classes to notification menu so they can be hidden in css
- [#7852](https://github.com/RocketChat/Rocket.Chat/pull/7852) Add markdown parser "marked"
- [#7711](https://github.com/RocketChat/Rocket.Chat/pull/7711) Add room type as a class to the ul-group of rooms
- [#6301](https://github.com/RocketChat/Rocket.Chat/pull/6301) Add tags to uploaded images using Google Cloud Vision API
- [#7658](https://github.com/RocketChat/Rocket.Chat/pull/7658) Add unread options for direct messages
- [#5902](https://github.com/RocketChat/Rocket.Chat/pull/5902) Adds a Keyboard Shortcut option to the flextab
- [#7614](https://github.com/RocketChat/Rocket.Chat/pull/7614) Allow ldap mapping of customFields
- [#7817](https://github.com/RocketChat/Rocket.Chat/pull/7817) Audio Notification updated in sidebar
- [#7350](https://github.com/RocketChat/Rocket.Chat/pull/7350) Automatically select the first channel
- [#7853](https://github.com/RocketChat/Rocket.Chat/pull/7853) Create a standard for svg icons
- [#7342](https://github.com/RocketChat/Rocket.Chat/pull/7342) Integrated personal email gateway (GSoC'17)
- [#7830](https://github.com/RocketChat/Rocket.Chat/pull/7830) Option to block users to mention unknow users
- [#6700](https://github.com/RocketChat/Rocket.Chat/pull/6700) Package to render issue numbers into links to an issue tracker.
- [#7864](https://github.com/RocketChat/Rocket.Chat/pull/7864) Replace message cog for vertical menu
- [#7565](https://github.com/RocketChat/Rocket.Chat/pull/7565) REST API endpoint to list all private groups (permission limited)
- [#7643](https://github.com/RocketChat/Rocket.Chat/pull/7643) Rocket.Chat UI Redesign
- [#7612](https://github.com/RocketChat/Rocket.Chat/pull/7612) Search users by fields defined by admin
- [#7688](https://github.com/RocketChat/Rocket.Chat/pull/7688) Template to show Custom Fields in user info view
### Bug Fixes
- [#7854](https://github.com/RocketChat/Rocket.Chat/pull/7854) Add CSS support for Safari versions > 7
- [#7456](https://github.com/RocketChat/Rocket.Chat/pull/7456) Csv importer: work with more problematic data
- [#7815](https://github.com/RocketChat/Rocket.Chat/pull/7815) Dutch translations
- [#7846](https://github.com/RocketChat/Rocket.Chat/pull/7846) Email message forward error
- [#7673](https://github.com/RocketChat/Rocket.Chat/pull/7673) Example usage of unsubscribe.js
- [#7855](https://github.com/RocketChat/Rocket.Chat/pull/7855) File upload on multi-instances using a path prefix
- [#7656](https://github.com/RocketChat/Rocket.Chat/pull/7656) Fix avatar upload fail on Cordova app
- [#7168](https://github.com/RocketChat/Rocket.Chat/pull/7168) Fix black background on transparent avatars
- [#7814](https://github.com/RocketChat/Rocket.Chat/pull/7814) Fix Dutch translation
- [#7629](https://github.com/RocketChat/Rocket.Chat/pull/7629) Fix messagebox growth
- [#7863](https://github.com/RocketChat/Rocket.Chat/pull/7863) Fix migration 100
- [#7823](https://github.com/RocketChat/Rocket.Chat/pull/7823) Fix new-message button showing on search
- [#7687](https://github.com/RocketChat/Rocket.Chat/pull/7687) Fix room load on first hit
- [#7758](https://github.com/RocketChat/Rocket.Chat/pull/7758) Fixed function closure syntax allowing validation emails to be sent.
- [#7825](https://github.com/RocketChat/Rocket.Chat/pull/7825) Google vision NSFW tag
- [#7679](https://github.com/RocketChat/Rocket.Chat/pull/7679) Make link inside YouTube preview open in new tab
- [#7644](https://github.com/RocketChat/Rocket.Chat/pull/7644) Markdown noopener/noreferrer: use correct HTML attribute
- [#7721](https://github.com/RocketChat/Rocket.Chat/pull/7721) meteor-accounts-saml issue with ns0,ns1 namespaces, makes it compatible with pysaml2 lib
- [#7652](https://github.com/RocketChat/Rocket.Chat/pull/7652) Only use "File Uploaded" prefix on files
- [#7809](https://github.com/RocketChat/Rocket.Chat/pull/7809) Remove redundant "do" in "Are you sure ...?" messages.
- [#7672](https://github.com/RocketChat/Rocket.Chat/pull/7672) Remove references to non-existent tests
- [#7748](https://github.com/RocketChat/Rocket.Chat/pull/7748) scroll on flex-tab
- [#7779](https://github.com/RocketChat/Rocket.Chat/pull/7779) Settings not getting applied from Meteor.settings and process.env
- [#7778](https://github.com/RocketChat/Rocket.Chat/pull/7778) Update Snap links
- [#7639](https://github.com/RocketChat/Rocket.Chat/pull/7639) Wrong email subject when "All Messages" setting enabled
- [#7630](https://github.com/RocketChat/Rocket.Chat/pull/7630) Wrong render of snippet’s name
<details>
<summary>Others</summary>
- [#7793](https://github.com/RocketChat/Rocket.Chat/pull/7793) Additions to the REST API
- [#7625](https://github.com/RocketChat/Rocket.Chat/pull/7625) Bump version to 0.59.0-develop
- [#7661](https://github.com/RocketChat/Rocket.Chat/pull/7661) Fix typo in generated URI
- [#7728](https://github.com/RocketChat/Rocket.Chat/pull/7728) FIX: Error when starting local development environment
- [#7803](https://github.com/RocketChat/Rocket.Chat/pull/7803) LingoHub based on develop
- [#2](https://github.com/RocketChat/Rocket.Chat/pull/2) local update
- [#7677](https://github.com/RocketChat/Rocket.Chat/pull/7677) Meteor packages and npm dependencies update
- [#7865](https://github.com/RocketChat/Rocket.Chat/pull/7865) Mobile sidenav
- [#7842](https://github.com/RocketChat/Rocket.Chat/pull/7842) npm deps update
- [#7755](https://github.com/RocketChat/Rocket.Chat/pull/7755) npm deps update
- [#7739](https://github.com/RocketChat/Rocket.Chat/pull/7739) Remove CircleCI
- [#8420](https://github.com/RocketChat/Rocket.Chat/pull/8420) Merge 0.58.4 to master
</details>
</details>
<a name="0.58.3"></a>
## 0.58.3 (2017-09-27)
- Dependencies update
<a name="0.58.2"></a>
## 0.58.2 (2017-08-23)

@ -2,7 +2,7 @@
# The Ultimate Open Source WebChat Platform
[![Rocket.Chat](https://demo.rocket.chat/images/join-chat.svg)](https://demo.rocket.chat/)
[![Rocket.Chat](https://open.rocket.chat/images/join-chat.svg)](https://open.rocket.chat/)
[![Build Status](https://img.shields.io/travis/RocketChat/Rocket.Chat/master.svg)](https://travis-ci.org/RocketChat/Rocket.Chat)
[![Project Dependencies](https://david-dm.org/RocketChat/Rocket.Chat.svg)](https://david-dm.org/RocketChat/Rocket.Chat)
[![Codacy Badge](https://api.codacy.com/project/badge/grade/8580571ba024426d9649e9ab389bd5dd)](https://www.codacy.com/app/RocketChat/Rocket-Chat)
@ -11,7 +11,7 @@
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/RocketChat/Rocket.Chat/raw/master/LICENSE)
* [Live Demo](#live-demo)
* [Community](#community)
* [Mobile apps](#mobile-apps)
* [Desktop apps](#desktop-apps)
* [Deployment](#deployment)
@ -51,15 +51,19 @@
* [Quick Start](#quick-start-for-code-developers)
* [Branching Model](#branching-model)
* [Translations](#translations)
* [Community](#community)
* [How to Contribute](#how-to-contribute)
* [Credits](#credits)
* [Donate](#donate)
# Live Demo
Checkout the latest version at [https://demo.rocket.chat](https://demo.rocket.chat)
# Community
Join thousands of members world-wide 24 x 7 in our [community server](https://open.rocket.chat).
[![Rocket.Chat](https://open.rocket.chat/api/v1/shield.svg?type=channel&name=Rocket.Chat&channel=support)](https://open.rocket.chat/channel/support) for help from our community with general Rocket.Chat questions.
[![Rocket.Chat](https://open.rocket.chat/api/v1/shield.svg?type=channel&name=Rocket.Chat&channel=dev)](https://open.rocket.chat/channel/dev) for developers needing help from the community to developing new features
You can also join the conversation at [Twitter](https://twitter.com/RocketChat), [Facebook](https://www.facebook.com/RocketChatApp) or [Google Plus](https://plus.google.com/+RocketChatApp)
# Desktop Apps
Download the Native Cross-Platform Desktop Application at [Rocket.Chat.Electron](https://github.com/RocketChat/Rocket.Chat.Electron/releases)
@ -302,7 +306,7 @@ It is a great solution for communities and companies wanting to privately host t
- Multi-users Audio Conference
- Screensharing
- Drupal 7.x and 8.x Plug-in (both stable and development flavours) ([download](https://www.drupal.org/project/rocket_chat) and [source code](https://git.drupal.org/project/rocket_chat.git) )
- XMPP bridge ([try it](https://demo.rocket.chat/channel/general))
- XMPP bridge ([try it](https://open.rocket.chat/channel/general))
- REST APIs
- Remote Locations Video Monitoring
- Native real-time APIs for Microsoft C#, Visual Basic, F# and other .NET supported languages ([Get it!](https://www.nuget.org/packages/Rocket.Chat.Net/0.0.12-pre))
@ -417,10 +421,6 @@ See also this [Git Workflows Comparison](https://www.atlassian.com/git/tutorials
We are experimenting [Lingohub](https://translate.lingohub.com/engelgabriel/rocket-dot-chat/dashboard).
If you want to help, send an email to support at rocket.chat to be invited to the translation project.
## Community
Join thousands of members world-wide 24 x 7 in our [community server](https://demo.rocket.chat). Join the conversation at [Twitter](https://twitter.com/RocketChatApp), [Facebook](https://www.facebook.com/RocketChatApp) or [Google Plus](https://plus.google.com/+RocketChatApp)
## How to Contribute
Already a JavaScript developer? Familiar with Meteor? [Pick an issue](https://github.com/RocketChat/Rocket.Chat/labels/contrib%3A%20easy), push a PR and instantly become a member of Rocket.Chat's international contributors community.

@ -1,4 +1,7 @@
import _ from 'underscore';
import s from 'underscore.string';
import toastr from 'toastr';
this.handleError = function(error, useToastr = true) {
if (_.isObject(error.details)) {
for (const key in error.details) {
@ -9,8 +12,8 @@ this.handleError = function(error, useToastr = true) {
}
if (useToastr) {
return toastr.error(_.escapeHTML(TAPi18n.__(error.error, error.details)), error.details && error.details.errorTitle ? _.escapeHTML(TAPi18n.__(error.details.errorTitle)) : null);
return toastr.error(s.escapeHTML(TAPi18n.__(error.error, error.details)), error.details && error.details.errorTitle ? s.escapeHTML(TAPi18n.__(error.details.errorTitle)) : null);
}
return _.escapeHTML(TAPi18n.__(error.error, error.details));
return s.escapeHTML(TAPi18n.__(error.error, error.details));
};

@ -1,3 +1,4 @@
import _ from 'underscore';
import moment from 'moment';
Meteor.methods({

@ -1,3 +1,4 @@
import _ from 'underscore';
import moment from 'moment';
import toastr from 'toastr';

@ -1,4 +1,5 @@
/* globals KonchatNotification */
import s from 'underscore.string';
Blaze.registerHelper('pathFor', function(path, kw) {
return FlowRouter.path(path, kw.hash);
@ -75,7 +76,7 @@ FlowRouter.route('/account/:group?', {
if (!params.group) {
params.group = 'Preferences';
}
params.group = _.capitalize(params.group, true);
params.group = s.capitalize(params.group, true);
BlazeLayout.render('main', { center: `account${ params.group }` });
},
triggersExit: [function() {

@ -10,8 +10,8 @@
"env": {
"MONGO_URL": "mongodb://localhost:27017/rocketchat",
"MONGO_OPLOG_URL": "mongodb://localhost:27017/local",
"ROOT_URL": "https://demo.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://demo.rocket.chat",
"ROOT_URL": "https://open.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://open.rocket.chat",
"PORT": "8080"
}
}, {
@ -25,8 +25,8 @@
"env": {
"MONGO_URL": "mongodb://localhost:27017/rocketchat",
"MONGO_OPLOG_URL": "mongodb://localhost:27017/local",
"ROOT_URL": "https://demo.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://demo.rocket.chat",
"ROOT_URL": "https://open.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://open.rocket.chat",
"PORT": "8081"
}
}, {
@ -40,8 +40,8 @@
"env": {
"MONGO_URL": "mongodb://localhost:27017/rocketchat",
"MONGO_OPLOG_URL": "mongodb://localhost:27017/local",
"ROOT_URL": "https://demo.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://demo.rocket.chat",
"ROOT_URL": "https://open.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://open.rocket.chat",
"PORT": "8082"
}
}, {
@ -55,8 +55,8 @@
"env": {
"MONGO_URL": "mongodb://localhost:27017/rocketchat",
"MONGO_OPLOG_URL": "mongodb://localhost:27017/local",
"ROOT_URL": "https://demo.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://demo.rocket.chat",
"ROOT_URL": "https://open.rocket.chat",
"DDP_DEFAULT_CONNECTION_URL": "https://open.rocket.chat",
"PORT": "8083"
}
}]

@ -1,16 +0,0 @@
/* globals mixin */
// This will add underscore.string methods to Underscore.js
// except for include, contains, reverse and join that are
// dropped because they collide with the functions already
// defined by Underscore.js.
mixin = function(obj) {
_.each(_.functions(obj), function(name) {
if (!_[name] && !_.prototype[name]) {
_[name] = obj[name];
}
});
};
mixin(s.exports());

@ -1,6 +1,6 @@
Example configuration fragment for front-end nginx with round-robin multiple Rocket.Chat instances
upstream demo.rocket.chat {
upstream open.rocket.chat {
server localhost:8080 weight=1;
server localhost:8081 weight=1;
server localhost:8082 weight=1;
@ -10,18 +10,18 @@ upstream demo.rocket.chat {
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name demo.rocket.chat;
return 301 https://demo.rocket.chat$request_uri;
server_name open.rocket.chat;
return 301 https://open.rocket.chat$request_uri;
}
server {
listen 443 default_server;
listen [::]:443 default_server ipv6only=on;
server_name demo.rocket.chat;
server_name open.rocket.chat;
root /var/www/rocket.chat/bundle/programs/web.browser/app/;
ssl on;
ssl_certificate /var/www/rocket.chat/ssl/demo/demo.rocket.chat.chained.crt;
ssl_certificate_key /var/www/rocket.chat/ssl/demo/demo.rocket.chat.key;
ssl_certificate /var/www/rocket.chat/ssl/demo/open.rocket.chat.chained.crt;
ssl_certificate_key /var/www/rocket.chat/ssl/demo/open.rocket.chat.key;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;
@ -40,6 +40,6 @@ server {
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
location / {
proxy_pass http://demo.rocket.chat;
proxy_pass http://open.rocket.chat;
}
}

11962
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,7 +1,7 @@
{
"name": "Rocket.Chat",
"description": "The Ultimate Open Source WebChat Platform",
"version": "0.59.0-develop",
"version": "0.60.0-develop",
"author": {
"name": "Rocket.Chat",
"url": "https://rocket.chat/"
@ -86,45 +86,51 @@
"email": "support@rocket.chat"
},
"devDependencies": {
"autoprefixer": "^7.1.6",
"babel-mocha-es6-compiler": "^0.1.0",
"babel-plugin-array-includes": "^2.0.3",
"chimp": "^0.50.0",
"conventional-changelog-cli": "^1.3.3",
"eslint": "^4.8.0",
"chimp": "^0.50.2",
"conventional-changelog-cli": "^1.3.4",
"eslint": "^4.10.0",
"mock-require": "^2.0.2",
"postcss-cssnext": "^2.11.0",
"postcss-smart-import": "^0.7.5",
"postcss-calc": "^6.0.1",
"postcss-custom-properties": "^6.2.0",
"postcss-import": "^11.0.0",
"postcss-media-minmax": "^3.0.0",
"postcss-nesting": "^3.0.0",
"postcss-selector-not": "^3.0.1",
"proxyquire": "^1.8.0",
"simple-git": "^1.77.0",
"stylelint": "^8.1.1",
"simple-git": "^1.80.1",
"stylelint": "^8.2.0",
"stylelint-order": "^0.7.0",
"supertest": "^3.0.0",
"underscore": "^1.8.3",
"underscore.string": "^3.3.4"
"supertest": "^3.0.0"
},
"dependencies": {
"@google-cloud/storage": "^1.3.1",
"aws-sdk": "^2.125.0",
"@google-cloud/storage": "^1.4.0",
"aws-sdk": "^2.146.0",
"babel-runtime": "^6.26.0",
"bcrypt": "^1.0.3",
"bunyan": "^1.8.12",
"codemirror": "^5.30.0",
"codemirror": "^5.31.0",
"core-js": "2.5.1",
"emailreplyparser": "0.0.5",
"file-type": "^6.2.0",
"file-type": "^7.2.0",
"highlight.js": "^9.12.0",
"imap": "^0.8.19",
"jquery": "^3.2.1",
"ldapjs": "^1.0.1",
"mailparser-node4": "^2.0.2-2",
"mime-db": "^1.30.0",
"mime-db": "^1.31.0",
"mime-type": "^3.0.5",
"moment": "^2.18.1",
"moment-timezone": "^0.5.13",
"moment": "^2.19.1",
"moment-timezone": "^0.5.14",
"photoswipe": "^4.1.2",
"poplib": "^0.1.7",
"prom-client": "^10.1.1",
"prom-client": "^10.2.2",
"semver": "^5.4.1",
"toastr": "^2.1.2",
"wolfy87-eventemitter": "^5.2.2"
"underscore": "^1.8.3",
"underscore.string": "^3.3.4",
"wolfy87-eventemitter": "^5.2.3"
}
}

@ -16,8 +16,7 @@ Package.onUse(function (api) {
api.use([
'ddp',
'mongo',
'underscore'
'mongo'
], ['client', 'server']);
api.use(['http', 'random'], 'web.cordova');

@ -1,139 +1,115 @@
{
"lockfileVersion": 1,
"dependencies": {
"async": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"from": "async@>=0.2.7 <0.3.0"
},
"buffer-crc32": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz",
"from": "buffer-crc32@0.2.1"
"integrity": "sha1-vj5TgvwCttYySVasGvmKqYsIU0w="
},
"bytes": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.0.tgz",
"from": "bytes@0.2.0"
"integrity": "sha1-qtM+wU49wsp06OfUUfm6BTrU96A="
},
"connect": {
"version": "2.7.10",
"resolved": "https://registry.npmjs.org/connect/-/connect-2.7.10.tgz",
"from": "connect@2.7.10"
"integrity": "sha1-oKxZRk1lJAedsCyXFRx5XBtN7mQ="
},
"cookie": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz",
"from": "cookie@0.0.5"
"integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE="
},
"cookie-signature": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz",
"from": "cookie-signature@1.0.1"
"integrity": "sha1-ROByFIrwHm6OJK+/EmkNaK5pjss="
},
"debug": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
"from": "debug@*"
},
"ejs": {
"version": "0.8.8",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-0.8.8.tgz",
"from": "ejs@>=0.8.3 <0.9.0"
"integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo="
},
"formidable": {
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz",
"from": "formidable@1.0.14"
"integrity": "sha1-Kz9MQRy7X91pXESEPiojUUpDIxo="
},
"fresh": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz",
"from": "fresh@0.1.0"
"integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA="
},
"lodash": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"from": "lodash@>=3.5.0 <4.0.0"
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
},
"mime": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz",
"from": "mime@1.2.6"
"integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U="
},
"ms": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
"from": "ms@0.7.1"
},
"node-forge": {
"version": "0.2.24",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz",
"from": "node-forge@0.2.24"
"integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
},
"pause": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
"from": "pause@0.0.1"
"integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
},
"qs": {
"version": "0.6.5",
"resolved": "https://registry.npmjs.org/qs/-/qs-0.6.5.tgz",
"from": "qs@0.6.5"
"integrity": "sha1-KUsmjksNQlD23eGbO4s0k13/FO8="
},
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
"from": "querystring@0.2.0"
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
},
"range-parser": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz",
"from": "range-parser@0.0.4"
"integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs="
},
"sax": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
"from": "sax@>=0.1.1"
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
},
"send": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz",
"from": "send@0.1.0"
"integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA="
},
"xml-crypto": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.6.0.tgz",
"from": "xml-crypto@0.6.0"
},
"xml-encryption": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/xml-encryption/-/xml-encryption-0.7.2.tgz",
"from": "xml-encryption@0.7.2"
"integrity": "sha1-RSKeACjLPultxTP6M4DCvzuGrbg="
},
"xml2js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz",
"from": "xml2js@0.2.0"
"integrity": "sha1-99pSJ33rtkeYMFOtti2XLe5loaw="
},
"xmlbuilder": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.4.tgz",
"from": "xmlbuilder@2.6.4"
"integrity": "sha1-gSOsFXbZxmkY9BBJbx/p8Ci4yj4="
},
"xmldom": {
"version": "0.1.19",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz",
"from": "xmldom@0.1.19"
},
"xpath": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz",
"from": "xpath@0.0.5"
"integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw="
},
"xpath.js": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.0.6.tgz",
"from": "xpath.js@>=0.0.3"
"integrity": "sha1-/kuBwbFS69jhOVJl/txbAPyim5A="
}
}
}

@ -8,7 +8,7 @@ Package.describe({
Package.on_use(function(api) {
api.use('rocketchat:lib', 'server');
api.use('ecmascript');
api.use(['routepolicy', 'webapp', 'underscore', 'service-configuration'], 'server');
api.use(['routepolicy', 'webapp', 'service-configuration'], 'server');
api.use(['http', 'accounts-base'], ['client', 'server']);
api.add_files(['saml_server.js', 'saml_utils.js'], 'server');

@ -1,5 +1,6 @@
/* globals RoutePolicy, SAML */
/* jshint newcap: false */
import _ from 'underscore';
if (!Accounts.saml) {
Accounts.saml = {

@ -1,4 +1,5 @@
/* globals Deps, getCaretCoordinates*/
import _ from 'underscore';
import AutoCompleteRecords from './collection';
const isServerSearch = function(rule) {

@ -1,4 +1,6 @@
/* globals AutoComplete */
import _ from 'underscore';
// Events on template instances, sent to the autocomplete class
const acEvents = {
'keydown'(e, t) {

@ -7,7 +7,7 @@ Package.describe({
Package.onUse(function(api) {
api.use(['blaze', 'templating', 'jquery'], 'client');
api.use(['underscore', 'ecmascript']); // both
api.use(['ecmascript']); // both
api.use(['mongo', 'ddp']);
api.use('dandv:caret-position@2.1.0-3', 'client');

@ -28,7 +28,7 @@ Package.onTest(function (api) {
'test-helpers'
]);
api.use(['tracker', 'underscore'], 'client');
api.use(['tracker'], 'client');
api.use('mizzao:timesync');

@ -1,19 +1,20 @@
{
"lockfileVersion": 1,
"dependencies": {
"base32.js": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.0.1.tgz",
"from": "base32.js@0.0.1"
"integrity": "sha1-0EVzalex9sE58MffQlGKhOkbsro="
},
"speakeasy": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/speakeasy/-/speakeasy-2.0.0.tgz",
"from": "speakeasy@2.0.0"
"integrity": "sha1-hckaBxsJpcuGQlkNmDVmFl9XYTo="
},
"yaqrcode": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/yaqrcode/-/yaqrcode-0.2.1.tgz",
"from": "yaqrcode@0.2.1"
"integrity": "sha1-7xyzMgNJ9rO7MctoCjeouBS9itc="
}
}
}

@ -1,44 +1,45 @@
{
"lockfileVersion": 1,
"dependencies": {
"busboy": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz",
"from": "busboy@0.2.13"
"integrity": "sha1-kPxPajln2BVhb8l2v6jlau0MWLY="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"from": "core-util-is@>=1.0.0 <1.1.0"
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"dicer": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
"from": "dicer@0.2.5"
"integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8="
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"from": "inherits@>=2.0.1 <2.1.0"
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"from": "isarray@0.0.1"
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"from": "readable-stream@>=1.1.0 <1.2.0"
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
},
"streamsearch": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
"from": "streamsearch@0.1.2"
"integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"from": "string_decoder@>=0.10.0 <0.11.0"
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
}
}
}

@ -7,7 +7,6 @@ Package.describe({
Package.onUse(function(api) {
api.use([
'underscore',
'ecmascript',
'rocketchat:lib',
'nimble:restivus'
@ -34,6 +33,7 @@ Package.onUse(function(api) {
//Add v1 routes
api.addFiles('server/v1/channels.js', 'server');
api.addFiles('server/v1/chat.js', 'server');
api.addFiles('server/v1/commands.js', 'server');
api.addFiles('server/v1/groups.js', 'server');
api.addFiles('server/v1/im.js', 'server');
api.addFiles('server/v1/integrations.js', 'server');

@ -1,4 +1,6 @@
/* global Restivus */
import _ from 'underscore';
class API extends Restivus {
constructor(properties) {
super(properties);

@ -1,3 +1,5 @@
import _ from 'underscore';
//Returns the channel IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property
function findChannelByIdOrName({ params, checkedArchived = true }) {
if ((!params.roomId || !params.roomId.trim()) && (!params.roomName || !params.roomName.trim())) {
@ -424,14 +426,20 @@ RocketChat.API.v1.addRoute('channels.members', { authRequired: true }, {
const { offset, count } = this.getPaginationItems();
const { sort } = this.parseJsonQuery();
const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult.usernames), {
sort: sort ? sort : -1,
let sortFn = (a, b) => a > b;
if (Match.test(sort, Object) && Match.test(sort.username, Number) && sort.username === -1) {
sortFn = (a, b) => b < a;
}
const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult.usernames).sort(sortFn), {
skip: offset,
limit: count
});
const users = RocketChat.models.Users.find({ username: { $in: members } },
{ fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 } }).fetch();
const users = RocketChat.models.Users.find({ username: { $in: members } }, {
fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 },
sort: sort ? sort : { username: 1 }
}).fetch();
return RocketChat.API.v1.success({
members: users,

@ -28,6 +28,31 @@ RocketChat.API.v1.addRoute('chat.delete', { authRequired: true }, {
}
});
RocketChat.API.v1.addRoute('chat.syncMessages', { authRequired: true }, {
get() {
const { rid } = this.queryParams;
let lastUpdate = this.queryParams;
lastUpdate = lastUpdate ? new Date(lastUpdate) : lastUpdate;
if (!rid) {
return RocketChat.API.v1.failure('The "rid" query parameter must be provided.');
}
if (!lastUpdate) {
return RocketChat.API.v1.failure('The "lastUpdate" query parameter must be provided.');
}
let result;
Meteor.runAsUser(this.userId, () => {
result = Meteor.call('messages/get', rid, { lastUpdate });
});
if (!result) {
return RocketChat.API.v1.failure();
}
return RocketChat.API.v1.success({result});
}
});
RocketChat.API.v1.addRoute('chat.getMessage', { authRequired: true }, {
get() {
if (!this.queryParams.msgId) {

@ -0,0 +1,86 @@
RocketChat.API.v1.addRoute('commands.get', { authRequired: true }, {
get() {
const params = this.queryParams;
if (typeof params.command !== 'string') {
return RocketChat.API.v1.failure('The query param "command" must be provided.');
}
const cmd = RocketChat.slashCommands.commands[params.command.toLowerCase()];
if (!cmd) {
return RocketChat.API.v1.failure(`There is no command in the system by the name of: ${ params.command }`);
}
return RocketChat.API.v1.success({ command: cmd });
}
});
RocketChat.API.v1.addRoute('commands.list', { authRequired: true }, {
get() {
const { offset, count } = this.getPaginationItems();
const { sort, fields, query } = this.parseJsonQuery();
let commands = Object.values(RocketChat.slashCommands.commands);
if (query && query.command) {
commands = commands.filter((command) => command.command === query.command);
}
const totalCount = commands.length;
commands = RocketChat.models.Rooms.processQueryOptionsOnResult(commands, {
sort: sort ? sort : { name: 1 },
skip: offset,
limit: count,
fields
});
return RocketChat.API.v1.success({
commands,
offset,
count: commands.length,
total: totalCount
});
}
});
// Expects a body of: { command: 'gimme', params: 'any string value', roomId: 'value' }
RocketChat.API.v1.addRoute('commands.run', { authRequired: true }, {
post() {
const body = this.bodyParams;
const user = this.getLoggedInUser();
if (typeof body.command !== 'string') {
return RocketChat.API.v1.failure('You must provide a command to run.');
}
if (body.params && typeof body.params !== 'string') {
return RocketChat.API.v1.failure('The parameters for the command must be a single string.');
}
if (typeof body.roomId !== 'string') {
return RocketChat.API.v1.failure('The room\'s id where to execute this command must provided and be a string.');
}
const cmd = body.command.toLowerCase();
if (!RocketChat.slashCommands.commands[body.command.toLowerCase()]) {
return RocketChat.API.v1.failure('The command provided does not exist (or is disabled).');
}
// This will throw an error if they can't or the room is invalid
Meteor.call('canAccessRoom', body.roomId, user._id);
const params = body.params ? body.params : '';
let result;
Meteor.runAsUser(user._id, () => {
result = RocketChat.slashCommands.run(cmd, params, {
_id: Random.id(),
rid: body.roomId,
msg: `/${ cmd } ${ params }`
});
});
return RocketChat.API.v1.success({ result });
}
});

@ -1,3 +1,5 @@
import _ from 'underscore';
//Returns the private group subscription IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property
function findPrivateGroupByIdOrName({ params, userId, checkedArchived = true }) {
if ((!params.roomId || !params.roomId.trim()) && (!params.roomName || !params.roomName.trim())) {
@ -368,14 +370,20 @@ RocketChat.API.v1.addRoute('groups.members', { authRequired: true }, {
const { offset, count } = this.getPaginationItems();
const { sort } = this.parseJsonQuery();
const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult._room.usernames), {
sort: sort ? sort : -1,
let sortFn = (a, b) => a > b;
if (Match.test(sort, Object) && Match.test(sort.username, Number) && sort.username === -1) {
sortFn = (a, b) => b < a;
}
const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult._room.usernames).sort(sortFn), {
skip: offset,
limit: count
});
const users = RocketChat.models.Users.find({ username: { $in: members } },
{ fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 } }).fetch();
const users = RocketChat.models.Users.find({ username: { $in: members } }, {
fields: { _id: 1, username: 1, name: 1, status: 1, utcOffset: 1 },
sort: sort ? sort : { username: 1 }
}).fetch();
return RocketChat.API.v1.success({
members: users,

@ -1,3 +1,5 @@
import _ from 'underscore';
function findDirectMessageRoom(params, user) {
if ((!params.roomId || !params.roomId.trim()) && (!params.username || !params.username.trim())) {
throw new Meteor.Error('error-room-param-not-provided', 'Body param "roomId" or "username" is required');
@ -266,14 +268,12 @@ RocketChat.API.v1.addRoute(['dm.open', 'im.open'], { authRequired: true }, {
post() {
const findResult = findDirectMessageRoom(this.requestParams(), this.user);
if (findResult.subscription.open) {
return RocketChat.API.v1.failure(`The direct message room, ${ this.bodyParams.name }, is already open for the sender`);
if (!findResult.subscription.open) {
Meteor.runAsUser(this.userId, () => {
Meteor.call('openRoom', findResult.room._id);
});
}
Meteor.runAsUser(this.userId, () => {
Meteor.call('openRoom', findResult.room._id);
});
return RocketChat.API.v1.success();
}
});

@ -108,10 +108,9 @@ RocketChat.API.v1.addRoute('integrations.remove', { authRequired: true }, {
return RocketChat.API.v1.failure('An integrationId or target_url needs to be provided.');
}
let integration;
switch (this.bodyParams.type) {
case 'webhook-outgoing':
let integration;
if (this.bodyParams.target_url) {
integration = RocketChat.models.Integrations.findOne({ urls: this.bodyParams.target_url });
} else if (this.bodyParams.integrationId) {

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.API.v1.addRoute('info', { authRequired: false }, {
get() {
const user = this.getLoggedInUser();

@ -1,3 +1,5 @@
import _ from 'underscore';
// settings endpoints
RocketChat.API.v1.addRoute('settings', { authRequired: true }, {
get() {

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.API.v1.addRoute('users.create', { authRequired: true }, {
post() {
check(this.bodyParams, {

@ -1,19 +1,10 @@
{
"lockfileVersion": 1,
"dependencies": {
"image-size": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.4.0.tgz",
"from": "image-size@0.4.0"
},
"mime-db": {
"version": "1.21.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.21.0.tgz",
"from": "mime-db@>=1.21.0 <1.22.0"
},
"mime-types": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.9.tgz",
"from": "mime-types@2.1.9"
"integrity": "sha1-1LTh9hlS5MvBzqmmsMkV/stwdRA="
}
}
}

@ -8,7 +8,6 @@ Package.describe({
Package.onUse(function(api) {
api.use([
'ecmascript',
'underscore',
'webapp',
'rocketchat:file',
'rocketchat:lib',

@ -1,4 +1,5 @@
/* global WebAppHashing, WebAppInternals */
import _ from 'underscore';
import sizeOf from 'image-size';
import mime from 'mime-type/with-db';

@ -1,3 +1,5 @@
import _ from 'underscore';
if (_.isUndefined(RocketChat.models.Subscriptions)) {
RocketChat.models.Subscriptions = {};
}

@ -1,3 +1,5 @@
import _ from 'underscore';
if (_.isUndefined(RocketChat.models.Users)) {
RocketChat.models.Users = {};
}

@ -9,7 +9,6 @@ Package.describe({
Package.onUse(function(api) {
api.use([
'ecmascript',
'underscore',
'rocketchat:lib'
]);

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.authz.addUserRoles = function(userId, roleNames, scope) {
if (!userId || !roleNames) {
return false;

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.authz.removeUserFromRoles = function(userId, roleNames, scope) {
if (!userId || !roleNames) {
return false;

@ -1,3 +1,5 @@
import _ from 'underscore';
Meteor.methods({
'authorization:addUserToRole'(roleName, username, scope) {
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) {

@ -1,3 +1,5 @@
import _ from 'underscore';
Meteor.methods({
'authorization:removeUserFromRole'(roleName, username, scope) {
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'access-permissions')) {

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.models._Base.prototype.roleBaseQuery = function(/*userId, scope*/) {
return;
};

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.models.Subscriptions.roleBaseQuery = function(userId, scope) {
if (scope == null) {
return;

@ -1,9 +1,10 @@
{
"lockfileVersion": 1,
"dependencies": {
"autolinker": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-1.4.0.tgz",
"from": "autolinker@1.4.0"
"integrity": "sha1-oVjpDIL8V/gSMv0ZwSsQ61ON6IE="
}
}
}

@ -1,3 +1,5 @@
import s from 'underscore.string';
//
// AutoLinker is a named function that will replace links on messages
// @param {Object} message - The message object
@ -10,7 +12,7 @@ function AutoLinker(message) {
return message;
}
if (_.trim(message.html)) {
if (s.trim(message.html)) {
const regUrls = new RegExp(RocketChat.settings.get('AutoLinker_UrlsRegExp'));
const autolinker = new Autolinker({

@ -1,3 +1,5 @@
import _ from 'underscore';
RocketChat.AutoTranslate = {
messageIdsToWait: {},
supportedLanguages: [],

@ -1,4 +1,5 @@
/* globals ChatSubscription */
import _ from 'underscore';
import toastr from 'toastr';
Template.autoTranslateFlexTab.helpers({

@ -1,3 +1,6 @@
import _ from 'underscore';
import s from 'underscore.string';
class AutoTranslate {
constructor() {
this.languages = [];

@ -7,7 +7,6 @@ Package.describe({
Package.onUse(function(api) {
api.use('ecmascript');
api.use('underscore');
api.use('rocketchat:lib');
api.use('accounts-base');
// api.mainModule('server/index.js', 'server'); // when 1.3

@ -1,3 +1,5 @@
import _ from 'underscore';
/**
* BotHelpers helps bots
* "private" properties use meteor collection cursors, so they stay reactive

@ -1,113 +1,113 @@
{
"lockfileVersion": 1,
"dependencies": {
"boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"from": "boolbase@>=1.0.0 <1.1.0"
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
"cas": {
"version": "0.0.5",
"resolved": "https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62",
"from": "https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62"
"version": "https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62",
"integrity": "sha1-AL8m1JYV/7kMEdlJ0sKtJ18YXg4="
},
"cheerio": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz",
"from": "cheerio@0.19.0"
"integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"from": "core-util-is@>=1.0.0 <1.1.0"
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"css-select": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz",
"from": "css-select@>=1.0.0 <1.1.0"
"integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA="
},
"css-what": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz",
"from": "css-what@>=1.0.0 <1.1.0"
"integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w="
},
"dom-serializer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"from": "dom-serializer@>=0.1.0 <0.2.0",
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
"dependencies": {
"domelementtype": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
"from": "domelementtype@>=1.1.1 <1.2.0"
"integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
}
}
},
"domelementtype": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
"from": "domelementtype@>=1.0.0 <2.0.0"
"integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
},
"domhandler": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
"from": "domhandler@>=2.3.0 <2.4.0"
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg="
},
"domutils": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
"from": "domutils@>=1.4.0 <1.5.0"
"integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8="
},
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
"from": "entities@>=1.1.1 <1.2.0"
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
},
"htmlparser2": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"from": "htmlparser2@>=3.8.1 <3.9.0",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"dependencies": {
"domutils": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"from": "domutils@>=1.5.0 <1.6.0"
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8="
},
"entities": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"from": "entities@>=1.0.0 <1.1.0"
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
}
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"from": "inherits@>=2.0.1 <2.1.0"
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"from": "isarray@0.0.1"
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"lodash": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"from": "lodash@>=3.2.0 <4.0.0"
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
},
"nth-check": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
"from": "nth-check@>=1.0.0 <1.1.0"
"integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ="
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"from": "readable-stream@>=1.1.0 <1.2.0"
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"from": "string_decoder@>=0.10.0 <0.11.0"
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
}
}
}

@ -14,7 +14,6 @@ Package.onUse(function(api) {
api.use('webapp', 'server');
api.use('accounts-base', 'server');
api.use('underscore');
api.use('ecmascript');
// Server files

@ -1,5 +1,6 @@
/* globals RoutePolicy, logger */
/* jshint newcap: false */
import _ from 'underscore';
const fiber = Npm.require('fibers');
const url = Npm.require('url');

@ -1,5 +1,7 @@
import _ from 'underscore';
import toastr from 'toastr';
import resetSelection from '../resetSelection';
Template.mailMessagesInstructions.helpers({
name() {
return Meteor.user().name;

@ -1,3 +1,4 @@
import _ from 'underscore';
import moment from 'moment';
Meteor.methods({
@ -55,7 +56,7 @@ Meteor.methods({
if (data.language !== 'en') {
const localeFn = Meteor.call('loadLocale', data.language);
if (localeFn) {
Function(localeFn)({moment});
Function(localeFn).call({moment});
moment.locale(data.language);
}
}

@ -1,3 +1,4 @@
import _ from 'underscore';
RocketChat.ChannelSettings = new class {
constructor() {
this.options = new ReactiveVar({});

@ -1,4 +1,5 @@
import toastr from 'toastr';
import s from 'underscore.string';
Template.channelSettings.helpers({
toArray(obj) {

@ -1,3 +1,5 @@
import s from 'underscore.string';
RocketChat.saveRoomAnnouncement = function(rid, roomAnnouncement, user, sendMessage=true) {
if (!Match.test(rid, String)) {
throw new Meteor.Error('invalid-room', 'Invalid room', { function: 'RocketChat.saveRoomAnnouncement' });

@ -1,3 +1,5 @@
import s from 'underscore.string';
RocketChat.saveRoomDescription = function(rid, roomDescription, user) {
if (!Match.test(rid, String)) {

@ -1,3 +1,5 @@
import s from 'underscore.string';
RocketChat.saveRoomTopic = function(rid, roomTopic, user, sendMessage = true) {
if (!Match.test(rid, String)) {
throw new Meteor.Error('invalid-room', 'Invalid room', {

@ -1,5 +0,0 @@
/* globals GoogleMaps */
Meteor.startup(function() {
console.log('startup hooked');
return GoogleMaps.load();
});

@ -1,29 +0,0 @@
Meteor.startup(() =>
Tracker.autorun(function() {
if (RocketChat.TabBar) {
if (RocketChat.settings && RocketChat.settings.get('Chatops_Enabled')) {
RocketChat.TabBar.addButton({
groups: ['channel', 'group', 'direct'],
id: 'chatops-button2',
i18nTitle: 'rocketchat-chatops:Chatops_Title',
icon: 'hubot',
template: 'chatops-dynamicUI',
order: 4
});
RocketChat.TabBar.addButton({
groups: ['channel', 'group', 'direct'],
id: 'chatops-button3',
i18nTitle: 'rocketchat-chatops:Chatops_Title',
icon: 'inbox',
template: 'chatops_droneflight',
width: 675,
order: 5
});
} else {
RocketChat.TabBar.removeButton('chatops-button2');
RocketChat.TabBar.removeButton('chatops-button3');
}
}
})
);

@ -1,8 +0,0 @@
<template name="chatops">
<div class="control">
<div class="header">
<h2>{{_ "Chatops_Title"}}</h2>
</div>
</div>
{{_ "Loading..."}}
</template>

@ -1,23 +0,0 @@
<template name="chatops_codemirror">
<div class="control">
<button class="more"><span class="icon-code" title="{{#if flex3Opened}}{{_ 'Close'}}{{/if}}"></span></button>
<form class="search-form" role="form">
<div class="input-line search">
<input type="text" id="room-search" class="search" placeholder="{{tQuickSearch}}" autocomplete="off" />
<i class="icon-search secondary-font-color"></i>
</div>
</form>
</div>
<div class="content">
{{> CodeMirror id="flyineditor" name="flyineditor" options=editorOptions code=editorCode }}
<div class="codeEditor">
<button class='button'><span> {{_ "Save"}}</span></button>
<button class='button'><span> {{_ "Commit"}}</span></button>
<button class='button'><span> {{_ "Cancel"}}</span></button>
</div>
</div>
</template>

@ -1,9 +0,0 @@
Template.chatops_codemirror.helpers({
editorOptions() {
return {lineNumbers: true, mode:'javascript'};
},
editorCode() {
return '# This is a full featured, syntax highlighted editor\n# BOTs can fetch, edit, commit, and save source code\n#\n\nvar express = require("express");\nvar app = express();\n// respond with \"hello world\" when a GET request is made to the homepage \ +\napp.get("/", function(req, res) {\nres.send("hello world");\n});';
}
});

@ -1,19 +0,0 @@
<template name="chatops_droneflight">
<div class="control">
<div> <b>Drone 1:</b> mission <b>A3</b> waypoint <b>7</b> <span class="red">fuel 30%</span> </div>
<div> <b>Drone 2:</b> mission <b>A7</b> waypoint <b>2</b> <span class="green">fuel 100%</span> </div>
</div>
<div class="content">
<div class="map-container">
{{> googleMap name="flightMap" options=flightMapOptions }}
</div>
<div class="droneFlight">
<button class='button'><span> {{_ "Return to base"}}</span></button>
<button class='button'><span> {{_ "Cancel"}}</span></button>
</div>
</div>
</template>

@ -1,23 +0,0 @@
/* globals GoogleMaps google*/
Template.chatops_droneflight.helpers({
flightMapOptions() {
if (GoogleMaps.loaded()) {
console.log('helper run');
return {center: new google.maps.LatLng(35.6609285, -78.8456125), zoom: 17};
}
}
});
Template.chatops_droneflight.onCreated(() =>
GoogleMaps.ready('flightMap', function(map) {
console.log('ready');
const redicon = { path: google.maps.SymbolPath.CIRCLE, fillColor: 'red', fillOpacity: 0.8, strokeColor: 'gold', strokeWeight: 2, scale: 10};
const greenicon = {path: google.maps.SymbolPath.CIRCLE, fillColor: 'green', fillOpacity: 0.8, strokeColor: 'gold', strokeWeight: 2, scale: 10};
const marker = new google.maps.Marker({position: new google.maps.LatLng(35.661848, -78.843165), icon: redicon, map: map.instance});
marker.setLabel('1');
const marker2 = new google.maps.Marker({position: new google.maps.LatLng(35.660537, -78.846959), icon: greenicon, map: map.instance});
return marker2.setLabel('2');
})
);

@ -1,27 +0,0 @@
<template name="chatops-dynamicUI">
<div class="control">
<h3>Bot Controlled UI</h3>
<div>
UI is dynamically generated based on DSL message from BOT. DSL also specifies command sent back.
</div>
</div>
<div class="control">
<div class="botgen" style="margin-bottom: 10px;">
<input type="text" id="gistbutton" class="search" placeholder="Gist Id or Url" autocomplete="off" />
</div>
<div class="botgen" style="margin-bottom: 10px;">
<button class='button'><span> {{_ "Get Gist"}}</span></button>
</div>
<div class="botgen" style="margin-bottom: 10px;">
<button class='button'><span> {{_ "Show history"}}</span></button>
</div>
<div class="botgen" style="margin-bottom: 10px;">
<button class='button'><span> {{_ "Blame"}}</span></button>
</div>
</div>
</template>

@ -1,15 +0,0 @@
.map-container {
width: 670px;
max-width: 100%;
height: 500px;
padding: 5px;
}
.red {
color: red;
}
.green {
color: green;
}

@ -1,33 +0,0 @@
Package.describe({
name: 'rocketchat:chatops',
version: '0.0.1',
summary: 'Chatops Panel',
git: ''
});
Package.onUse(function(api) {
api.use([
'ecmascript',
'rocketchat:lib',
'dburles:google-maps@1.1.5'
]);
api.use('templating', 'client');
api.addFiles([
'client/startup.js',
'client/tabBar.js',
'client/views/chatops.html',
'client/views/chatops.js',
'client/views/codemirror.html',
'client/views/codemirror.js',
'client/views/droneflight.html',
'client/views/droneflight.js',
'client/views/dynamicUI.html',
'client/views/stylesheets/chatops.css'
], 'client');
api.addFiles([
'server/settings.js'
], 'server');
});

@ -1,5 +0,0 @@
Meteor.startup(function() {
RocketChat.settings.addGroup('Chatops');
RocketChat.settings.add('Chatops_Enabled', false, { type: 'boolean', group: 'Chatops', public: true });
return RocketChat.settings.add('Chatops_Username', false, { type: 'string', group: 'Chatops', public: true });
});

@ -1,3 +1,5 @@
import s from 'underscore.string';
//
// HexColorPreview is a named function that will process Colors
// @param {Object} message - The message object
@ -5,7 +7,7 @@
function HexColorPreview(message) {
let msg;
if (_.trim(message.html) && RocketChat.settings.get('HexColorPreview_Enabled')) {
if (s.trim(message.html) && RocketChat.settings.get('HexColorPreview_Enabled')) {
msg = message.html;
msg = msg.replace(/(?:^|\s|\n)(#[A-Fa-f0-9]{3}([A-Fa-f0-9]{3})?)\b/g, function(match, completeColor) {
return match.replace(completeColor, `<div class="message-color"><div class="message-color-sample" style="background-color:${ completeColor }"></div>${ completeColor.toUpperCase() }</div>`);

@ -1,4 +1,5 @@
/* globals WebAppInternals */
import _ from 'underscore';
import url from 'url';

@ -1,9 +1,10 @@
{
"lockfileVersion": 1,
"dependencies": {
"atlassian-crowd": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/atlassian-crowd/-/atlassian-crowd-0.5.0.tgz",
"from": "atlassian-crowd@0.5.0"
"integrity": "sha1-isdFqHg3mUkNF0H6Cc9HLn/zCTA="
}
}
}

@ -1,4 +1,6 @@
/*globals OAuth*/
import s from 'underscore.string';
// Request custom OAuth credentials for the user
// @param options {optional}
// @param credentialRequestCompleteCallback {Function} Callback function to call on

@ -9,11 +9,9 @@ Package.onUse(function(api) {
api.use('check');
api.use('oauth');
api.use('oauth2');
api.use('underscore');
api.use('ecmascript');
api.use('accounts-oauth');
api.use('service-configuration');
api.use('underscorestring:underscore.string');
api.use('templating', 'client');

@ -1,4 +1,5 @@
/*globals OAuth*/
import _ from 'underscore';
const logger = new Logger('CustomOAuth');

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save