From 684f3c59335cf09fd428ec027a2333e67eb3ab47 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 2 Mar 2018 21:50:12 -0300 Subject: [PATCH 01/18] Merge pull request #9982 from RocketChat/fix-two-factor-login [FIX] Two factor authentication modal was not showing --- packages/rocketchat-theme/client/imports/general/base_old.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/rocketchat-theme/client/imports/general/base_old.css b/packages/rocketchat-theme/client/imports/general/base_old.css index c6bf0c91c3e4a..f27c433b735f4 100644 --- a/packages/rocketchat-theme/client/imports/general/base_old.css +++ b/packages/rocketchat-theme/client/imports/general/base_old.css @@ -4558,8 +4558,6 @@ body:not(.is-cordova) { } .rc-old.full-page { - z-index: 101; - display: flex; width: 100%; From 1695b3b1e7166ca06ef9a740fdb209dbc1e9290a Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 2 Mar 2018 21:49:19 -0300 Subject: [PATCH 02/18] Merge pull request #9960 from RocketChat/hotfix-subscription-without-room-ui [FIX] Empty sidenav when sorting by activity and there is a subscription without room --- .../client/lib/cachedCollection.js | 2 +- .../rocketchat-ui-sidenav/client/roomList.js | 24 ++++++------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/packages/rocketchat-lib/client/lib/cachedCollection.js b/packages/rocketchat-lib/client/lib/cachedCollection.js index 08ed0c357dd41..ddeaa28880814 100644 --- a/packages/rocketchat-lib/client/lib/cachedCollection.js +++ b/packages/rocketchat-lib/client/lib/cachedCollection.js @@ -99,7 +99,7 @@ class CachedCollection { useSync = true, useCache = true, debug = false, - version = 6, + version = 7, maxCacheTime = 60*60*24*30, onSyncData = (/* action, record */) => {} }) { diff --git a/packages/rocketchat-ui-sidenav/client/roomList.js b/packages/rocketchat-ui-sidenav/client/roomList.js index 093623b276c9d..c3786e929be67 100644 --- a/packages/rocketchat-ui-sidenav/client/roomList.js +++ b/packages/rocketchat-ui-sidenav/client/roomList.js @@ -70,24 +70,15 @@ Template.roomList.helpers({ } if (sortBy === 'activity') { - const list = ChatSubscription.find(query, {sort: {rid : 1}}).fetch(); - const ids = list.map(sub => sub.rid); - const rooms = RocketChat.models.Rooms.find({ - _id: { $in : ids} - }, - { - sort : { - _id: 1 - }, - fields: {_updatedAt: 1} - }).fetch(); - - - return _.sortBy(list.map((sub, i) => { - const lm = rooms[i]._updatedAt; + const list = ChatSubscription.find(query).fetch(); + RocketChat.models.Rooms.find(); + const rooms = RocketChat.models.Rooms._collection._docs._map; + + return _.sortBy(list.map(sub => { + const lm = rooms[sub.rid] && rooms[sub.rid]._updatedAt; return { ...sub, - lm: lm && lm.toISOString() + lm: lm && lm.toISOString && lm.toISOString() }; }), 'lm').reverse(); } @@ -124,4 +115,3 @@ Template.roomList.helpers({ return RocketChat.getUserPreference(Meteor.user(), 'roomCounterSidebar'); } }); - From 782e861a9159da54849c5ac564e7091bf4e9bb4f Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 2 Mar 2018 21:45:56 -0300 Subject: [PATCH 03/18] Merge pull request #9988 from RocketChat/fix-new-channel [FIX] New channel page on medium size screens --- .../rocketchat-theme/client/imports/components/main-content.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/rocketchat-theme/client/imports/components/main-content.css b/packages/rocketchat-theme/client/imports/components/main-content.css index 87ba3157fcf22..ede6f5a121f33 100644 --- a/packages/rocketchat-theme/client/imports/components/main-content.css +++ b/packages/rocketchat-theme/client/imports/components/main-content.css @@ -4,6 +4,8 @@ width: 1vw; height: 100%; + + position: relative; } .messages-container .room-icon { From ba8fcdb7738e380d0da98ca8dd39c48aefaa919c Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 2 Mar 2018 22:25:48 -0300 Subject: [PATCH 04/18] Merge pull request #9986 from RocketChat/hotfix/user-delete-without-username [FIX] Delete user without username was removing direct rooms of all users --- packages/rocketchat-cors/cors.js | 7 +++ packages/rocketchat-cors/package.js | 3 +- .../server/functions/deleteUser.js | 43 ++++++++++--------- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/packages/rocketchat-cors/cors.js b/packages/rocketchat-cors/cors.js index a41a833d15983..5e45911acc9bf 100644 --- a/packages/rocketchat-cors/cors.js +++ b/packages/rocketchat-cors/cors.js @@ -3,11 +3,18 @@ import _ from 'underscore'; import url from 'url'; +import { Mongo } from 'meteor/mongo'; import tls from 'tls'; // FIX For TLS error see more here https://github.com/RocketChat/Rocket.Chat/issues/9316 // TODO: Remove after NodeJS fix it, more information https://github.com/nodejs/node/issues/16196 https://github.com/nodejs/node/pull/16853 tls.DEFAULT_ECDH_CURVE = 'auto'; +// Revert change from Meteor 1.6.1 who set ignoreUndefined: true +// more information https://github.com/meteor/meteor/pull/9444 +Mongo.setConnectionOptions({ + ignoreUndefined: false +}); + WebApp.rawConnectHandlers.use(Meteor.bindEnvironment(function(req, res, next) { if (req._body) { return next(); diff --git a/packages/rocketchat-cors/package.js b/packages/rocketchat-cors/package.js index 9959f7e153946..3863a9acd73f8 100644 --- a/packages/rocketchat-cors/package.js +++ b/packages/rocketchat-cors/package.js @@ -8,7 +8,8 @@ Package.describe({ Package.onUse(function(api) { api.use([ 'ecmascript', - 'webapp' + 'webapp', + 'mongo' ]); api.addFiles('cors.js', 'server'); diff --git a/packages/rocketchat-lib/server/functions/deleteUser.js b/packages/rocketchat-lib/server/functions/deleteUser.js index 035e40ef944a6..d54743f93e036 100644 --- a/packages/rocketchat-lib/server/functions/deleteUser.js +++ b/packages/rocketchat-lib/server/functions/deleteUser.js @@ -1,30 +1,33 @@ RocketChat.deleteUser = function(userId) { const user = RocketChat.models.Users.findOneById(userId); - RocketChat.models.Messages.removeByUserId(userId); // Remove user messages - RocketChat.models.Subscriptions.db.findByUserId(userId).forEach((subscription) => { - const room = RocketChat.models.Rooms.findOneById(subscription.rid); - if (room) { - if (room.t !== 'c' && room.usernames.length === 1) { - RocketChat.models.Rooms.removeById(subscription.rid); // Remove non-channel rooms with only 1 user (the one being deleted) + // Users without username can't do anything, so there is nothing to remove + if (user.username != null) { + RocketChat.models.Messages.removeByUserId(userId); // Remove user messages + RocketChat.models.Subscriptions.db.findByUserId(userId).forEach((subscription) => { + const room = RocketChat.models.Rooms.findOneById(subscription.rid); + if (room) { + if (room.t !== 'c' && room.usernames.length === 1) { + RocketChat.models.Rooms.removeById(subscription.rid); // Remove non-channel rooms with only 1 user (the one being deleted) + } + if (room.t === 'd') { + RocketChat.models.Subscriptions.removeByRoomId(subscription.rid); + RocketChat.models.Messages.removeByRoomId(subscription.rid); + } } - if (room.t === 'd') { - RocketChat.models.Subscriptions.removeByRoomId(subscription.rid); - RocketChat.models.Messages.removeByRoomId(subscription.rid); - } - } - }); + }); - RocketChat.models.Subscriptions.removeByUserId(userId); // Remove user subscriptions - RocketChat.models.Rooms.removeByTypeContainingUsername('d', user.username); // Remove direct rooms with the user - RocketChat.models.Rooms.removeUsernameFromAll(user.username); // Remove user from all other rooms + RocketChat.models.Subscriptions.removeByUserId(userId); // Remove user subscriptions + RocketChat.models.Rooms.removeByTypeContainingUsername('d', user.username); // Remove direct rooms with the user + RocketChat.models.Rooms.removeUsernameFromAll(user.username); // Remove user from all other rooms - // removes user's avatar - if (user.avatarOrigin === 'upload' || user.avatarOrigin === 'url') { - FileUpload.getStore('Avatars').deleteByName(user.username); - } + // removes user's avatar + if (user.avatarOrigin === 'upload' || user.avatarOrigin === 'url') { + FileUpload.getStore('Avatars').deleteByName(user.username); + } - RocketChat.models.Integrations.disableByUserId(userId); // Disables all the integrations which rely on the user being deleted. + RocketChat.models.Integrations.disableByUserId(userId); // Disables all the integrations which rely on the user being deleted. + } RocketChat.models.Users.removeById(userId); // Remove user from users database }; From 3dc7f22de58aae623ebb68a4f4a146af97470a60 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 2 Mar 2018 22:32:53 -0300 Subject: [PATCH 05/18] Bump version to 0.62.1 --- .docker/Dockerfile | 2 +- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 13 +++++++++++++ package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 4dd6fde1e5c86..ef1a2993a40a3 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.62.0 +ENV RC_VERSION 0.62.1 MAINTAINER buildmaster@rocket.chat diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index ab32356eb114d..8c1af07e454b0 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.62.0"), + appMarketingVersion = (defaultText = "0.62.1"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index e07003b139e15..be8283db47747 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.62.0 + RC_VERSION=0.62.1 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 1e6c26b34e904..d63247f653691 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,16 @@ + +## 0.62.1 (2018-03-03) + + +### Bug Fixes + +- [#9986](https://github.com/RocketChat/Rocket.Chat/pull/9986) Delete user without username was removing direct rooms of all users +- [#9960](https://github.com/RocketChat/Rocket.Chat/pull/9960) Empty sidenav when sorting by activity and there is a subscription without room +- [#9988](https://github.com/RocketChat/Rocket.Chat/pull/9988) New channel page on medium size screens +- [#9982](https://github.com/RocketChat/Rocket.Chat/pull/9982) Two factor authentication modal was not showing + + + # 0.62.0 (2018-02-28) diff --git a/package.json b/package.json index 676512cd3de36..8363f19eb1849 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.62.0", + "version": "0.62.1", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index f0e2ac51dabe8..0d7123c0dee44 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.62.0" + "version": "0.62.1" } From 3f77dcb49981189308bdab6277ad0ea6c19c16dd Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Thu, 8 Mar 2018 14:36:32 -0300 Subject: [PATCH 06/18] Merge pull request #10029 from RocketChat/hotfix/subpath-download-link [FIX] Download links was duplicating Sub Paths --- packages/rocketchat-file-upload/server/lib/requests.js | 2 +- .../rocketchat-message-attachments/client/messageAttachment.js | 2 +- packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-file-upload/server/lib/requests.js b/packages/rocketchat-file-upload/server/lib/requests.js index 7a47c0496e818..7962e095351f4 100644 --- a/packages/rocketchat-file-upload/server/lib/requests.js +++ b/packages/rocketchat-file-upload/server/lib/requests.js @@ -1,6 +1,6 @@ /* globals FileUpload, WebApp */ -WebApp.connectHandlers.use(`${ __meteor_runtime_config__.ROOT_URL_PATH_PREFIX }/file-upload/`, function(req, res, next) { +WebApp.connectHandlers.use('/file-upload/', function(req, res, next) { const match = /^\/([^\/]+)\/(.*)/.exec(req.url); diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.js b/packages/rocketchat-message-attachments/client/messageAttachment.js index 8da6606bca341..d0df4d8f3b5f2 100644 --- a/packages/rocketchat-message-attachments/client/messageAttachment.js +++ b/packages/rocketchat-message-attachments/client/messageAttachment.js @@ -22,7 +22,7 @@ const fixCordova = function(url) { } else if (navigator.userAgent.indexOf('Electron') > -1) { return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url; } else { - return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url; + return Meteor.absoluteUrl().replace(/\/$/, '') + url; } }; /*globals renderMessageBody*/ diff --git a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js index e93b82b6af182..75aededa69b79 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js +++ b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js @@ -23,7 +23,7 @@ const fixCordova = (url) => { } else if (navigator.userAgent.indexOf('Electron') > -1) { return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url; } else { - return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url; + return Meteor.absoluteUrl().replace(/\/$/, '') + url; } }; From 5857f6f5c0c25267d4a2026091b4efe43052c300 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Thu, 8 Mar 2018 14:37:32 -0300 Subject: [PATCH 07/18] Merge pull request #10061 from RocketChat/fix-read-receipt-error-on-editing-message [FIX] Message editing is crashing the server when read receipts are enabled --- imports/message-read-receipt/server/hooks.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/imports/message-read-receipt/server/hooks.js b/imports/message-read-receipt/server/hooks.js index 560ebf449ac47..4039271580e48 100644 --- a/imports/message-read-receipt/server/hooks.js +++ b/imports/message-read-receipt/server/hooks.js @@ -2,6 +2,11 @@ import { ReadReceipt } from './lib/ReadReceipt'; RocketChat.callbacks.add('afterSaveMessage', (message, room) => { + // skips this callback if the message was edited + if (message.editedAt) { + return message; + } + // set subscription as read right after message was sent RocketChat.models.Subscriptions.setAsReadByRoomIdAndUserId(room._id, message.u._id); From 2f6241df6dc43ed51a175a012342c73fc52ed513 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Thu, 8 Mar 2018 15:54:51 -0300 Subject: [PATCH 08/18] Merge pull request #10009 from RocketChat/fix-channels-list-rest-api [FIX] REST API: Can't list all public channels when user has permission `view-joined-room` --- packages/rocketchat-api/server/v1/channels.js | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js index c8dd2905385c7..d7bdac522d122 100644 --- a/packages/rocketchat-api/server/v1/channels.js +++ b/packages/rocketchat-api/server/v1/channels.js @@ -330,7 +330,14 @@ RocketChat.API.v1.addRoute('channels.history', { authRequired: true }, { let result; Meteor.runAsUser(this.userId, () => { - result = Meteor.call('getChannelHistory', { rid: findResult._id, latest: latestDate, oldest: oldestDate, inclusive, count, unreads }); + result = Meteor.call('getChannelHistory', { + rid: findResult._id, + latest: latestDate, + oldest: oldestDate, + inclusive, + count, + unreads + }); }); if (!result) { @@ -417,15 +424,15 @@ RocketChat.API.v1.addRoute('channels.list', { authRequired: true }, { action() { const { offset, count } = this.getPaginationItems(); const { sort, fields, query } = this.parseJsonQuery(); + const hasPermissionToSeeAllPublicChannels = RocketChat.authz.hasPermission(this.userId, 'view-c-room'); const ourQuery = Object.assign({}, query, { t: 'c' }); - //Special check for the permissions - if (RocketChat.authz.hasPermission(this.userId, 'view-joined-room')) { + if (RocketChat.authz.hasPermission(this.userId, 'view-joined-room') && !hasPermissionToSeeAllPublicChannels) { ourQuery.usernames = { - $in: [ this.user.username ] + $in: [this.user.username] }; - } else if (!RocketChat.authz.hasPermission(this.userId, 'view-c-room')) { + } else if (!hasPermissionToSeeAllPublicChannels) { return RocketChat.API.v1.unauthorized(); } @@ -476,7 +483,11 @@ RocketChat.API.v1.addRoute('channels.list.joined', { authRequired: true }, { RocketChat.API.v1.addRoute('channels.members', { authRequired: true }, { get() { - const findResult = findChannelByIdOrName({ params: this.requestParams(), checkedArchived: false, returnUsernames: true }); + const findResult = findChannelByIdOrName({ + params: this.requestParams(), + checkedArchived: false, + returnUsernames: true + }); const { offset, count } = this.getPaginationItems(); const { sort } = this.parseJsonQuery(); @@ -625,7 +636,7 @@ RocketChat.API.v1.addRoute('channels.rename', { authRequired: true }, { return RocketChat.API.v1.failure('The bodyParam "name" is required'); } - const findResult = findChannelByIdOrName({ params: { roomId: this.bodyParams.roomId} }); + const findResult = findChannelByIdOrName({ params: { roomId: this.bodyParams.roomId } }); if (findResult.name === this.bodyParams.name) { return RocketChat.API.v1.failure('The channel name is the same as what it would be renamed to.'); From 7b579b85dd4047452c61c7e3bb992539a640381b Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 9 Mar 2018 16:26:48 -0300 Subject: [PATCH 09/18] Merge pull request #10076 from RocketChat/hotfix/clear-setting [FIX] Update preferences of users with settings: null was crashing the server --- packages/rocketchat-lib/server/models/Users.js | 10 ++++++++++ server/methods/saveUserPreferences.js | 11 ++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index 41ed1fe2926a6..9217dad7dc8f7 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -435,6 +435,16 @@ class ModelUsers extends RocketChat.models._Base { return this.update(_id, update); } + clearSettings(_id) { + const update = { + $set: { + settings: {} + } + }; + + return this.update(_id, update); + } + setPreferences(_id, preferences) { const settings = Object.assign( {}, diff --git a/server/methods/saveUserPreferences.js b/server/methods/saveUserPreferences.js index 9f3fa8c75b5ce..248df8e7abde6 100644 --- a/server/methods/saveUserPreferences.js +++ b/server/methods/saveUserPreferences.js @@ -39,13 +39,18 @@ Meteor.methods({ mergeChannels: Match.OneOf(Number, Boolean) //eslint-disable-line new-cap })); } - const user = Meteor.userId(); + const user = Meteor.user(); + if (!user) { return false; } + if (user.settings == null) { + RocketChat.models.Users.clearSettings(user._id); + } + if (settings.language != null) { - RocketChat.models.Users.setLanguage(user, settings.language); + RocketChat.models.Users.setLanguage(user._id, settings.language); } if (settings.mergeChannels != null) { @@ -58,7 +63,7 @@ Meteor.methods({ settings.roomsListExhibitionMode = ['category', 'unread', 'activity'].includes(settings.roomsListExhibitionMode) ? settings.roomsListExhibitionMode : 'category'; } - RocketChat.models.Users.setPreferences(user, settings); + RocketChat.models.Users.setPreferences(user._id, settings); return true; } From 00fdf3d17fb11ee50aa8e37ee331871ea88f9759 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 9 Mar 2018 16:28:00 -0300 Subject: [PATCH 10/18] Merge pull request #9719 from RocketChat/fix-rest-api-verified-email-update [FIX] Verified property of user is always set to false if not supplied --- packages/rocketchat-api/server/v1/users.js | 29 ++- .../server/functions/saveUser.js | 71 ++++-- .../server/functions/setEmail.js | 5 +- tests/end-to-end/api/01-users.js | 202 +++++++++++++++++- 4 files changed, 277 insertions(+), 30 deletions(-) diff --git a/packages/rocketchat-api/server/v1/users.js b/packages/rocketchat-api/server/v1/users.js index ab92925e3c394..aecbd4598164a 100644 --- a/packages/rocketchat-api/server/v1/users.js +++ b/packages/rocketchat-api/server/v1/users.js @@ -260,6 +260,33 @@ RocketChat.API.v1.addRoute('users.update', { authRequired: true }, { } }); +RocketChat.API.v1.addRoute('users.updateOwnBasicInfo', { authRequired: true }, { + post() { + check(this.bodyParams, { + data: Match.ObjectIncluding({ + email: Match.Maybe(String), + name: Match.Maybe(String), + username: Match.Maybe(String), + currentPassword: Match.Maybe(String), + newPassword: Match.Maybe(String) + }), + customFields: Match.Maybe(Object) + }); + + const userData = { + email: this.bodyParams.data.email, + realname: this.bodyParams.data.name, + username: this.bodyParams.data.username, + newPassword: this.bodyParams.data.newPassword, + typedPassword: this.bodyParams.data.currentPassword + }; + + Meteor.runAsUser(this.userId, () => Meteor.call('saveUserProfile', userData, this.bodyParams.customFields)); + + return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) }); + } +}); + RocketChat.API.v1.addRoute('users.createToken', { authRequired: true }, { post() { const user = this.getUserFromParams(); @@ -267,7 +294,7 @@ RocketChat.API.v1.addRoute('users.createToken', { authRequired: true }, { Meteor.runAsUser(this.userId, () => { data = Meteor.call('createToken', user._id); }); - return data ? RocketChat.API.v1.success({data}) : RocketChat.API.v1.unauthorized(); + return data ? RocketChat.API.v1.success({ data }) : RocketChat.API.v1.unauthorized(); } }); diff --git a/packages/rocketchat-lib/server/functions/saveUser.js b/packages/rocketchat-lib/server/functions/saveUser.js index 9f45ed155c338..c4d1b4089b778 100644 --- a/packages/rocketchat-lib/server/functions/saveUser.js +++ b/packages/rocketchat-lib/server/functions/saveUser.js @@ -7,27 +7,45 @@ RocketChat.saveUser = function(userId, userData) { const existingRoles = _.pluck(RocketChat.authz.getRoles(), '_id'); if (userData._id && userId !== userData._id && !RocketChat.authz.hasPermission(userId, 'edit-other-user-info')) { - throw new Meteor.Error('error-action-not-allowed', 'Editing user is not allowed', { method: 'insertOrUpdateUser', action: 'Editing_user' }); + throw new Meteor.Error('error-action-not-allowed', 'Editing user is not allowed', { + method: 'insertOrUpdateUser', + action: 'Editing_user' + }); } if (!userData._id && !RocketChat.authz.hasPermission(userId, 'create-user')) { - throw new Meteor.Error('error-action-not-allowed', 'Adding user is not allowed', { method: 'insertOrUpdateUser', action: 'Adding_user' }); + throw new Meteor.Error('error-action-not-allowed', 'Adding user is not allowed', { + method: 'insertOrUpdateUser', + action: 'Adding_user' + }); } if (userData.roles && _.difference(userData.roles, existingRoles).length > 0) { - throw new Meteor.Error('error-action-not-allowed', 'The field Roles consist invalid role name', { method: 'insertOrUpdateUser', action: 'Assign_role' }); + throw new Meteor.Error('error-action-not-allowed', 'The field Roles consist invalid role name', { + method: 'insertOrUpdateUser', + action: 'Assign_role' + }); } if (userData.roles && _.indexOf(userData.roles, 'admin') >= 0 && !RocketChat.authz.hasPermission(userId, 'assign-admin-role')) { - throw new Meteor.Error('error-action-not-allowed', 'Assigning admin is not allowed', { method: 'insertOrUpdateUser', action: 'Assign_admin' }); + throw new Meteor.Error('error-action-not-allowed', 'Assigning admin is not allowed', { + method: 'insertOrUpdateUser', + action: 'Assign_admin' + }); } if (!userData._id && !s.trim(userData.name)) { - throw new Meteor.Error('error-the-field-is-required', 'The field Name is required', { method: 'insertOrUpdateUser', field: 'Name' }); + throw new Meteor.Error('error-the-field-is-required', 'The field Name is required', { + method: 'insertOrUpdateUser', + field: 'Name' + }); } if (!userData._id && !s.trim(userData.username)) { - throw new Meteor.Error('error-the-field-is-required', 'The field Username is required', { method: 'insertOrUpdateUser', field: 'Username' }); + throw new Meteor.Error('error-the-field-is-required', 'The field Username is required', { + method: 'insertOrUpdateUser', + field: 'Username' + }); } let nameValidation; @@ -39,20 +57,33 @@ RocketChat.saveUser = function(userId, userData) { } if (userData.username && !nameValidation.test(userData.username)) { - throw new Meteor.Error('error-input-is-not-a-valid-field', `${ _.escape(userData.username) } is not a valid username`, { method: 'insertOrUpdateUser', input: userData.username, field: 'Username' }); + throw new Meteor.Error('error-input-is-not-a-valid-field', `${ _.escape(userData.username) } is not a valid username`, { + method: 'insertOrUpdateUser', + input: userData.username, + field: 'Username' + }); } if (!userData._id && !userData.password) { - throw new Meteor.Error('error-the-field-is-required', 'The field Password is required', { method: 'insertOrUpdateUser', field: 'Password' }); + throw new Meteor.Error('error-the-field-is-required', 'The field Password is required', { + method: 'insertOrUpdateUser', + field: 'Password' + }); } if (!userData._id) { if (!RocketChat.checkUsernameAvailability(userData.username)) { - throw new Meteor.Error('error-field-unavailable', `${ _.escape(userData.username) } is already in use :(`, { method: 'insertOrUpdateUser', field: userData.username }); + throw new Meteor.Error('error-field-unavailable', `${ _.escape(userData.username) } is already in use :(`, { + method: 'insertOrUpdateUser', + field: userData.username + }); } if (userData.email && !RocketChat.checkEmailAvailability(userData.email)) { - throw new Meteor.Error('error-field-unavailable', `${ _.escape(userData.email) } is already in use :(`, { method: 'insertOrUpdateUser', field: userData.email }); + throw new Meteor.Error('error-field-unavailable', `${ _.escape(userData.email) } is already in use :(`, { + method: 'insertOrUpdateUser', + field: userData.email + }); } RocketChat.validateEmailDomain(userData.email); @@ -73,7 +104,7 @@ RocketChat.saveUser = function(userId, userData) { $set: { name: userData.name, roles: userData.roles || ['user'], - settings: userData.settings + settings: userData.settings || {} } }; @@ -81,8 +112,8 @@ RocketChat.saveUser = function(userId, userData) { updateUser.$set.requirePasswordChange = userData.requirePasswordChange; } - if (userData.verified) { - updateUser.$set['emails.0.verified'] = true; + if (typeof userData.verified === 'boolean') { + updateUser.$set['emails.0.verified'] = userData.verified; } Meteor.users.update({ _id }, updateUser); @@ -120,7 +151,10 @@ RocketChat.saveUser = function(userId, userData) { try { Email.send(email); } catch (error) { - throw new Meteor.Error('error-email-send-failed', `Error trying to send email: ${ error.message }`, { function: 'RocketChat.saveUser', message: error.message }); + throw new Meteor.Error('error-email-send-failed', `Error trying to send email: ${ error.message }`, { + function: 'RocketChat.saveUser', + message: error.message + }); } }); } @@ -128,7 +162,7 @@ RocketChat.saveUser = function(userId, userData) { userData._id = _id; if (RocketChat.settings.get('Accounts_SetDefaultAvatar') === true && userData.email) { - const gravatarUrl = Gravatar.imageUrl(userData.email, {default: '404', size: 200, secure: true}); + const gravatarUrl = Gravatar.imageUrl(userData.email, { default: '404', size: 200, secure: true }); try { RocketChat.setUserAvatar(userData, gravatarUrl, '', 'url'); @@ -149,7 +183,8 @@ RocketChat.saveUser = function(userId, userData) { } if (userData.email) { - RocketChat.setEmail(userData._id, userData.email); + const shouldSendVerificationEmailToUser = userData.verified !== true; + RocketChat.setEmail(userData._id, userData.email, shouldSendVerificationEmailToUser); } if (userData.password && userData.password.trim() && RocketChat.authz.hasPermission(userId, 'edit-other-user-password')) { @@ -172,7 +207,9 @@ RocketChat.saveUser = function(userId, userData) { updateUser.$set.requirePasswordChange = userData.requirePasswordChange; } - updateUser.$set['emails.0.verified'] = !!userData.verified; + if (typeof userData.verified === 'boolean') { + updateUser.$set['emails.0.verified'] = userData.verified; + } Meteor.users.update({ _id: userData._id }, updateUser); diff --git a/packages/rocketchat-lib/server/functions/setEmail.js b/packages/rocketchat-lib/server/functions/setEmail.js index b63f39cb83230..9d1819cfd1f53 100644 --- a/packages/rocketchat-lib/server/functions/setEmail.js +++ b/packages/rocketchat-lib/server/functions/setEmail.js @@ -1,6 +1,6 @@ import s from 'underscore.string'; -RocketChat._setEmail = function(userId, email) { +RocketChat._setEmail = function(userId, email, shouldSendVerificationEmail = true) { email = s.trim(email); if (!userId) { throw new Meteor.Error('error-invalid-user', 'Invalid user', { function: '_setEmail' }); @@ -27,6 +27,9 @@ RocketChat._setEmail = function(userId, email) { // Set new email RocketChat.models.Users.setEmail(user._id, email); user.email = email; + if (shouldSendVerificationEmail === true) { + Meteor.call('sendConfirmationEmail', user.email); + } return user; }; diff --git a/tests/end-to-end/api/01-users.js b/tests/end-to-end/api/01-users.js index cf8708eb85641..690b542d86a57 100644 --- a/tests/end-to-end/api/01-users.js +++ b/tests/end-to-end/api/01-users.js @@ -2,10 +2,21 @@ /* globals expect */ /* eslint no-unused-vars: 0 */ -import {getCredentials, api, login, request, credentials, apiEmail, apiUsername, targetUser, log} from '../../data/api-data.js'; -import {adminEmail, password, preferences} from '../../data/user.js'; -import {imgURL} from '../../data/interactions.js'; -import {customFieldText, clearCustomFields, setCustomFields} from '../../data/custom-fields.js'; +import crypto from 'crypto'; +import { + getCredentials, + api, + login, + request, + credentials, + apiEmail, + apiUsername, + targetUser, + log +} from '../../data/api-data.js'; +import { adminEmail, preferences, password } from '../../data/user.js'; +import { imgURL } from '../../data/interactions.js'; +import { customFieldText, clearCustomFields, setCustomFields } from '../../data/custom-fields.js'; describe('[Users]', function() { this.retries(0); @@ -46,7 +57,7 @@ describe('[Users]', function() { }); it('should create a new user with custom fields', (done) => { - setCustomFields({customFieldText}, (error) => { + setCustomFields({ customFieldText }, (error) => { if (error) { return done(error); } @@ -117,10 +128,12 @@ describe('[Users]', function() { } [ - {name: 'customFieldText', value: '', reason: 'is required and missing'}, - {name: 'customFieldText', value: '0', reason: 'length is less than minLength'}, - {name: 'customFieldText', value: '0123456789-0', reason: 'length is more than maxLength'} - ].forEach((field) => { failUserWithCustomField(field); }); + { name: 'customFieldText', value: '', reason: 'is required and missing' }, + { name: 'customFieldText', value: '0', reason: 'length is less than minLength' }, + { name: 'customFieldText', value: '0123456789-0', reason: 'length is more than maxLength' } + ].forEach((field) => { + failUserWithCustomField(field); + }); }); describe('[/users.info]', () => { @@ -210,12 +223,13 @@ describe('[Users]', function() { }); describe('[/users.update]', () => { + it('should update a user\'s info by userId', (done) => { request.post(api('users.update')) .set(credentials) .send({ userId: targetUser._id, - data :{ + data: { email: apiEmail, name: `edited${ apiUsername }`, username: `edited${ apiUsername }`, @@ -235,6 +249,172 @@ describe('[Users]', function() { }) .end(done); }); + + it('should update a user\'s email by userId', (done) => { + request.post(api('users.update')) + .set(credentials) + .send({ + userId: targetUser._id, + data: { + email: `edited${ apiEmail }` + } + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.nested.property('user.emails[0].address', `edited${ apiEmail }`); + expect(res.body).to.have.nested.property('user.emails[0].verified', false); + }) + .end(done); + }); + + it('should verify user\'s email by userId', (done) => { + request.post(api('users.update')) + .set(credentials) + .send({ + userId: targetUser._id, + data: { + verified: true + } + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.nested.property('user.emails[0].verified', true); + }) + .end(done); + }); + }); + + describe('[/users.updateOwnBasicInfo]', () => { + let user; + before((done) => { + const username = `user.test.${ Date.now() }`; + const email = `${ username }@rocket.chat`; + request.post(api('users.create')) + .set(credentials) + .send({ email, name: username, username, password}) + .end((err, res) => { + user = res.body.user; + done(); + }); + }); + + let userCredentials; + before((done) => { + request.post(api('login')) + .send({ + user: user.username, + password + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + userCredentials = {}; + userCredentials['X-Auth-Token'] = res.body.data.authToken; + userCredentials['X-User-Id'] = res.body.data.userId; + }) + .end(done); + }); + after(done => { + request.post(api('users.delete')).set(credentials).send({ + userId: user._id + }).end(done); + user = undefined; + }); + + const newPassword = `${ password }test`; + const editedUsername = `basicInfo.name${ +new Date() }`; + const editedName = `basic-info-test-name${ +new Date() }`; + const editedEmail = `test${ +new Date() }@mail.com`; + + it('should update the user own basic information', (done) => { + request.post(api('users.updateOwnBasicInfo')) + .set(userCredentials) + .send({ + data: { + name: editedName, + username: editedUsername, + currentPassword: crypto.createHash('sha256').update(password, 'utf8').digest('hex'), + newPassword + } + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + const user = res.body.user; + expect(res.body).to.have.property('success', true); + expect(user.username).to.be.equal(editedUsername); + expect(user.name).to.be.equal(editedName); + }) + .end(done); + }); + + it('should update the user name only', (done) => { + request.post(api('users.updateOwnBasicInfo')) + .set(userCredentials) + .send({ + data: { + username: editedUsername + } + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + const user = res.body.user; + expect(res.body).to.have.property('success', true); + expect(user.username).to.be.equal(editedUsername); + }) + .end(done); + }); + + it('should throw an error when user try change email without the password', (done) => { + request.post(api('users.updateOwnBasicInfo')) + .set(userCredentials) + .send({ + data: { + email: editedEmail + } + }) + .expect('Content-Type', 'application/json') + .expect(400) + .end(done); + }); + + it('should throw an error when user try change password without the actual password', (done) => { + request.post(api('users.updateOwnBasicInfo')) + .set(credentials) + .send({ + data: { + newPassword: 'the new pass' + } + }) + .expect('Content-Type', 'application/json') + .expect(400) + .end(done); + }); + + it('should set new email as \'unverified\'', (done) => { + request.post(api('users.updateOwnBasicInfo')) + .set(userCredentials) + .send({ + data: { + email: editedEmail, + currentPassword: crypto.createHash('sha256').update(newPassword, 'utf8').digest('hex') + } + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + const user = res.body.user; + expect(res.body).to.have.property('success', true); + expect(user.emails[0].address).to.be.equal(editedEmail); + expect(user.emails[0].verified).to.be.false; + }) + .end(done); + }); }); describe('[/users.createToken]', () => { @@ -349,7 +529,7 @@ describe('[Users]', function() { .send({ username: user.username }) .expect('Content-Type', 'application/json') .end((err, res) => { - return err ? done () : request.get(api('me')) + return err ? done() : request.get(api('me')) .set({ 'X-Auth-Token': `${ res.body.data.authToken }`, 'X-User-Id': res.body.data.userId }) .expect(200) .expect((res) => { From 0ad8cf095fe845c4f756ebeb5e416cc9af82a1d4 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 9 Mar 2018 16:31:00 -0300 Subject: [PATCH 11/18] Merge pull request #10071 from goalifyplus/feature/fix-slack-import [FIX] Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist --- packages/rocketchat-importer/server/classes/ImporterBase.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rocketchat-importer/server/classes/ImporterBase.js b/packages/rocketchat-importer/server/classes/ImporterBase.js index 09ef4063052da..74de695acb839 100644 --- a/packages/rocketchat-importer/server/classes/ImporterBase.js +++ b/packages/rocketchat-importer/server/classes/ImporterBase.js @@ -26,7 +26,7 @@ export class Base { * @static */ static getBSONSize(item) { - const { BSON } = require('bson').native(); + const { BSON } = require('bson'); const bson = new BSON(); return bson.calculateObjectSize(item); } From f061cd12dc7ff6fc53c2d4feb459cc56d9ea7ccf Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 9 Mar 2018 16:45:11 -0300 Subject: [PATCH 12/18] Bump version to 0.62.2 --- .docker/Dockerfile | 2 +- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 15 +++++++++++++++ package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index ef1a2993a40a3..493a1d6fc79e2 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.62.1 +ENV RC_VERSION 0.62.2 MAINTAINER buildmaster@rocket.chat diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index 8c1af07e454b0..cbe3cfb237dd7 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.62.1"), + appMarketingVersion = (defaultText = "0.62.2"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index be8283db47747..225c3f8e2a73e 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.62.1 + RC_VERSION=0.62.2 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index d63247f653691..265a751b98eb3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,18 @@ + +## 0.62.2 (2018-03-09) + + +### Bug Fixes + +- [#10029](https://github.com/RocketChat/Rocket.Chat/pull/10029) Download links was duplicating Sub Paths +- [#10061](https://github.com/RocketChat/Rocket.Chat/pull/10061) Message editing is crashing the server when read receipts are enabled +- [#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009) REST API: Can't list all public channels when user has permission `view-joined-room` +- [#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist +- [#10076](https://github.com/RocketChat/Rocket.Chat/pull/10076) Update preferences of users with settings: null was crashing the server +- [#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719) Verified property of user is always set to false if not supplied + + + ## 0.62.1 (2018-03-03) diff --git a/package.json b/package.json index 8363f19eb1849..0f2a16b7892a0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.62.1", + "version": "0.62.2", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index 0d7123c0dee44..d9bf6b1b284da 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.62.1" + "version": "0.62.2" } From e37b3288139280444120e05278c9eef563118ded Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 27 Mar 2018 22:19:55 -0300 Subject: [PATCH 13/18] Bump version to 0.63.0-rc.0 --- .docker/Dockerfile | 2 +- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 81 +++++++++++++++++++++++++ package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 6 files changed, 86 insertions(+), 5 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 681f04429a21a..9c4297a097703 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.63.0-develop +ENV RC_VERSION 0.63.0-rc.0 MAINTAINER buildmaster@rocket.chat diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index 1f51bd6921044..69d66505b0c04 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.63.0-develop"), + appMarketingVersion = (defaultText = "0.63.0-rc.0"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index e663baeb15d59..61911d1fc21a8 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.63.0-develop + RC_VERSION=0.63.0-rc.0 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 1e6c26b34e904..6cb6c30b5c796 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,84 @@ + +# 0.63.0-rc.0 (2018-03-28) + + +### BREAKING CHANGES + +- [#10103](https://github.com/RocketChat/Rocket.Chat/pull/10103) Removed Private History Route + + +### New Features + +- [#9584](https://github.com/RocketChat/Rocket.Chat/pull/9584) Add leave public channel & leave private channel permissions +- [#9816](https://github.com/RocketChat/Rocket.Chat/pull/9816) Add option to login via REST using Facebook and Twitter tokens +- [#9629](https://github.com/RocketChat/Rocket.Chat/pull/9629) Add REST endpoint to get the list of custom emojis +- [#10144](https://github.com/RocketChat/Rocket.Chat/pull/10144) Added endpoint to get the list of available oauth services +- [#10105](https://github.com/RocketChat/Rocket.Chat/pull/10105) Added endpoint to retrieve mentions of a channel +- [#10128](https://github.com/RocketChat/Rocket.Chat/pull/10128) Added GET/POST channels.notifications +- [#9367](https://github.com/RocketChat/Rocket.Chat/pull/9367) Announcement bar color wasn't using color from theming variables +- [#9726](https://github.com/RocketChat/Rocket.Chat/pull/9726) Audio recording as mp3 and better ui for recording +- [#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907) Endpoint to retrieve message read receipts +- [#9947](https://github.com/RocketChat/Rocket.Chat/pull/9947) GDPR Right to be forgotten/erased +- [#10246](https://github.com/RocketChat/Rocket.Chat/pull/10246) Interface to install and manage RocketChat Apps (alpha) +- [#10054](https://github.com/RocketChat/Rocket.Chat/pull/10054) Livechat messages rest APIs +- [#9870](https://github.com/RocketChat/Rocket.Chat/pull/9870) Livechat webhook request on message +- [#10086](https://github.com/RocketChat/Rocket.Chat/pull/10086) Reply preview +- [#9742](https://github.com/RocketChat/Rocket.Chat/pull/9742) REST API method to set room's announcement (channels.setAnnouncement) +- [#9732](https://github.com/RocketChat/Rocket.Chat/pull/9732) Setting to configure max delta for 2fa +- [#10123](https://github.com/RocketChat/Rocket.Chat/pull/10123) Support for agent's phone field + + +### Bug Fixes + +- [#10012](https://github.com/RocketChat/Rocket.Chat/pull/10012) "View All Members" button inside channel's "User Info" is over sized +- [#8667](https://github.com/RocketChat/Rocket.Chat/pull/8667) Able to react with invalid emoji +- [#9739](https://github.com/RocketChat/Rocket.Chat/pull/9739) Apostrophe-containing URL misparsed +- [#10011](https://github.com/RocketChat/Rocket.Chat/pull/10011) Avatar input was accepting not supported image types +- [#9872](https://github.com/RocketChat/Rocket.Chat/pull/9872) Broken video call accept dialog +- [#9932](https://github.com/RocketChat/Rocket.Chat/pull/9932) Browser was auto-filling values when editing another user profile +- [#10082](https://github.com/RocketChat/Rocket.Chat/pull/10082) Cannot answer to a livechat as a manager if agent has not answered yet +- [#9986](https://github.com/RocketChat/Rocket.Chat/pull/9986) Delete user without username was removing direct rooms of all users +- [#10029](https://github.com/RocketChat/Rocket.Chat/pull/10029) Download links was duplicating Sub Paths +- [#10152](https://github.com/RocketChat/Rocket.Chat/pull/10152) Dynamic CSS script isn't working on older browsers +- [#9960](https://github.com/RocketChat/Rocket.Chat/pull/9960) Empty sidenav when sorting by activity and there is a subscription without room +- [#10160](https://github.com/RocketChat/Rocket.Chat/pull/10160) Extended view mode on sidebar +- [#10028](https://github.com/RocketChat/Rocket.Chat/pull/10028) Initial loading feedback was missing +- [#10061](https://github.com/RocketChat/Rocket.Chat/pull/10061) Message editing is crashing the server when read receipts are enabled +- [#10016](https://github.com/RocketChat/Rocket.Chat/pull/10016) Missing sidebar default options on admin +- [#9672](https://github.com/RocketChat/Rocket.Chat/pull/9672) Name of files in file upload list cuts down at bottom due to overflow +- [#9988](https://github.com/RocketChat/Rocket.Chat/pull/9988) New channel page on medium size screens +- [#10090](https://github.com/RocketChat/Rocket.Chat/pull/10090) Nextcloud as custom oauth provider wasn't mapping data correctly +- [#9783](https://github.com/RocketChat/Rocket.Chat/pull/9783) No pattern for user's status text capitalization +- [#9860](https://github.com/RocketChat/Rocket.Chat/pull/9860) Popover divs don't scroll if they overflow the viewport +- [#10104](https://github.com/RocketChat/Rocket.Chat/pull/10104) Reactions not working on mobile +- [#10009](https://github.com/RocketChat/Rocket.Chat/pull/10009) REST API: Can't list all public channels when user has permission `view-joined-room` +- [#10071](https://github.com/RocketChat/Rocket.Chat/pull/10071) Slack Import reports `invalid import file type` due to a call to BSON.native() which is now doesn't exist +- [#9982](https://github.com/RocketChat/Rocket.Chat/pull/9982) Two factor authentication modal was not showing +- [#10076](https://github.com/RocketChat/Rocket.Chat/pull/10076) Update preferences of users with settings: null was crashing the server +- [#10051](https://github.com/RocketChat/Rocket.Chat/pull/10051) User preferences can't be saved when roles are hidden in admin settings +- [#9866](https://github.com/RocketChat/Rocket.Chat/pull/9866) User status missing on user info +- [#10222](https://github.com/RocketChat/Rocket.Chat/pull/10222) user status on sidenav +- [#9719](https://github.com/RocketChat/Rocket.Chat/pull/9719) Verified property of user is always set to false if not supplied +- [#10081](https://github.com/RocketChat/Rocket.Chat/pull/10081) Wrong switch button border color + + +
+Others + +- [#10154](https://github.com/RocketChat/Rocket.Chat/pull/10154) Add a few listener supports for the Rocket.Chat Apps +- [#10148](https://github.com/RocketChat/Rocket.Chat/pull/10148) Add forums as a place to suggest, discuss and upvote features +- [#10065](https://github.com/RocketChat/Rocket.Chat/pull/10065) Fix tests breaking randomly +- [#10159](https://github.com/RocketChat/Rocket.Chat/pull/10159) Fix typo for Nextcloud login +- [#10243](https://github.com/RocketChat/Rocket.Chat/pull/10243) LingoHub based on develop +- [#10036](https://github.com/RocketChat/Rocket.Chat/pull/10036) Reactivate all tests +- [#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844) Reactivate API tests +- [#10237](https://github.com/RocketChat/Rocket.Chat/pull/10237) Rename migration name on 108 to match file name +- [#10242](https://github.com/RocketChat/Rocket.Chat/pull/10242) Revert "[FIX] Apostrophe-containing URL misparsed" +- [#9985](https://github.com/RocketChat/Rocket.Chat/pull/9985) Start 0.63.0-develop / develop sync from master +
+ + + # 0.62.0 (2018-02-28) diff --git a/package.json b/package.json index 35460743aaecd..6dae1b84ae2f0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.63.0-develop", + "version": "0.63.0-rc.0", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index 5db7177fdf214..727cb1ef5e7bc 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.63.0-develop" + "version": "0.63.0-rc.0" } From 0d36398c7c378c8341601758e86d0acff306c101 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Thu, 29 Mar 2018 21:46:04 -0300 Subject: [PATCH 14/18] Bump version to 0.63.0-rc.1 --- .docker/Dockerfile | 2 +- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 22 ++++++++++++++++++++++ package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 6 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 9c4297a097703..b0645e0b776a1 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.63.0-rc.0 +ENV RC_VERSION 0.63.0-rc.1 MAINTAINER buildmaster@rocket.chat diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index 69d66505b0c04..f41aafe2f5d6c 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.63.0-rc.0"), + appMarketingVersion = (defaultText = "0.63.0-rc.1"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index 61911d1fc21a8..54c41169860c1 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.63.0-rc.0 + RC_VERSION=0.63.0-rc.1 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 6cb6c30b5c796..8ebcd59d968be 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,25 @@ + +# 0.63.0-rc.1 (2018-03-30) + + +### Bug Fixes + +- [#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240) /me REST endpoint was missing user roles and preferences +- [#10272](https://github.com/RocketChat/Rocket.Chat/pull/10272) File had redirect delay when using external storage services and no option to proxy only avatars +- [#10262](https://github.com/RocketChat/Rocket.Chat/pull/10262) Missing pt-BR translations + + +
+Others + +- [#10015](https://github.com/RocketChat/Rocket.Chat/pull/10015) Fix snap install. Remove execstack from sharp, and bypass grpc error +- [#10252](https://github.com/RocketChat/Rocket.Chat/pull/10252) Fix: possible errors on rocket.chat side of the apps +- [#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257) Fix: Renaming channels.notifications Get/Post endpoints +- [#10260](https://github.com/RocketChat/Rocket.Chat/pull/10260) Fix: snaps caddy download link to pull from github +
+ + + # 0.63.0-rc.0 (2018-03-28) diff --git a/package.json b/package.json index 6dae1b84ae2f0..e007d1fb962d2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.63.0-rc.0", + "version": "0.63.0-rc.1", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index 727cb1ef5e7bc..5ec2156da2abe 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.63.0-rc.0" + "version": "0.63.0-rc.1" } From a7fe0e8cb1cdc060ddb464cdff4aeeedff880504 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 3 Apr 2018 11:54:14 -0300 Subject: [PATCH 15/18] Bump version to 0.63.0-rc.2 --- .docker/Dockerfile | 2 +- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 5 +++++ package-lock.json | 2 +- package.json | 2 +- packages/rocketchat-katex/package-lock.json | 15 +++++++-------- packages/rocketchat-lib/rocketchat.info | 2 +- 8 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index b0645e0b776a1..928fc418db13c 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.63.0-rc.1 +ENV RC_VERSION 0.63.0-rc.2 MAINTAINER buildmaster@rocket.chat diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index f41aafe2f5d6c..3e864fcae6742 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.63.0-rc.1"), + appMarketingVersion = (defaultText = "0.63.0-rc.2"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index 54c41169860c1..7fee65167714c 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.63.0-rc.1 + RC_VERSION=0.63.0-rc.2 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 8ebcd59d968be..04a150319860f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,8 @@ + +# 0.63.0-rc.2 (2018-04-03) + + + # 0.63.0-rc.1 (2018-03-30) diff --git a/package-lock.json b/package-lock.json index 8b30ae6eded01..be36b24c56c6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "Rocket.Chat", - "version": "0.63.0-develop", + "version": "0.63.0-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e007d1fb962d2..5dbbfb561a38d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.63.0-rc.1", + "version": "0.63.0-rc.2", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-katex/package-lock.json b/packages/rocketchat-katex/package-lock.json index 6ea79500d6c93..cffb44d1b56e4 100644 --- a/packages/rocketchat-katex/package-lock.json +++ b/packages/rocketchat-katex/package-lock.json @@ -5,18 +5,17 @@ "requires": true, "dependencies": { "katex": { - "version": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz", "integrity": "sha1-BrtSmO+tBeHnIoA1uo4VkfMGG48=", "requires": { "match-at": "0.1.1" - }, - "dependencies": { - "match-at": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz", - "integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==" - } } + }, + "match-at": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz", + "integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==" } } } diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index 5ec2156da2abe..7ebf3bbee7b8b 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.63.0-rc.1" + "version": "0.63.0-rc.2" } From b77b8da9111c06c907f1fe06f3c3c50a8c9c3216 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 3 Apr 2018 23:33:12 -0300 Subject: [PATCH 16/18] Bump version to 0.63.0 --- .docker/Dockerfile | 2 +- .github/history.json | 31 +++++++++- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 81 +++++++------------------ package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 7 files changed, 58 insertions(+), 64 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 928fc418db13c..7a34b728f7bbb 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.63.0-rc.2 +ENV RC_VERSION 0.63.0 MAINTAINER buildmaster@rocket.chat diff --git a/.github/history.json b/.github/history.json index e682ef04f3ac8..0b6a8cd73424f 100644 --- a/.github/history.json +++ b/.github/history.json @@ -12107,7 +12107,36 @@ ] } ], - "HEAD": [ + "HEAD": [], + "0.63.0": [ + { + "pr": "10303", + "title": "[FIX] Audio Message UI fixes", + "userLogin": "kb0304", + "contributors": [ + "kb0304", + "ggazzo", + "web-flow" + ] + }, + { + "pr": "10319", + "title": "[NEW] Improve history generation", + "userLogin": "rodrigok", + "milestone": "0.63.0", + "contributors": [ + "rodrigok" + ] + }, + { + "pr": "10323", + "title": "Fix: Reaction endpoint/api only working with regular emojis", + "userLogin": "graywolf336", + "milestone": "0.63.0", + "contributors": [ + "graywolf336" + ] + }, { "pr": "10313", "title": "Bump snap version to include security fix", diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index 3e864fcae6742..fc249ee45f9fc 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.63.0-rc.2"), + appMarketingVersion = (defaultText = "0.63.0"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index 7fee65167714c..68cd311b3a38c 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.63.0-rc.2 + RC_VERSION=0.63.0 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index e8fd062877f4b..abd5bf868cede 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,62 +1,6 @@ -# Next -`2018-04-03 ยท 2 ๐Ÿ”` - -
-๐Ÿ” Minor changes - -- Bump snap version to include security fix ([#10313](https://github.com/RocketChat/Rocket.Chat/pull/10313)) -- Update Meteor to 1.6.1.1 ([#10314](https://github.com/RocketChat/Rocket.Chat/pull/10314)) - -
- -# 0.63.0 (Under Release Candidate Process) - -## 0.63.0-rc.2 -`2018-04-03 ยท 5 ๐Ÿ› ยท 3 ๐Ÿ” ยท 1 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` - -### ๐Ÿ› Bug fixes - -- Unable to mention after newline in message ([#10078](https://github.com/RocketChat/Rocket.Chat/pull/10078) by [@c0dzilla](https://github.com/c0dzilla)) -- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224)) -- Inline code following a url leads to autolinking of code with url ([#10163](https://github.com/RocketChat/Rocket.Chat/pull/10163) by [@c0dzilla](https://github.com/c0dzilla)) -- Incoming Webhooks were missing the raw content ([#10258](https://github.com/RocketChat/Rocket.Chat/pull/10258)) -- Missing Translation Key on Reactions ([#10270](https://github.com/RocketChat/Rocket.Chat/pull/10270)) - -
-๐Ÿ” Minor changes - -- Fix: inputs for rocketchat apps ([#10274](https://github.com/RocketChat/Rocket.Chat/pull/10274)) -- Fix: chat.react api not accepting previous emojis ([#10290](https://github.com/RocketChat/Rocket.Chat/pull/10290)) -- Fix: Scroll on content page ([#10300](https://github.com/RocketChat/Rocket.Chat/pull/10300)) - -
- -### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Contributors ๐Ÿ˜ - -- [@c0dzilla](https://github.com/c0dzilla) - -## 0.63.0-rc.1 -`2018-03-29 ยท 3 ๐Ÿ› ยท 4 ๐Ÿ”` - -### ๐Ÿ› Bug fixes - -- File had redirect delay when using external storage services and no option to proxy only avatars ([#10272](https://github.com/RocketChat/Rocket.Chat/pull/10272)) -- Missing pt-BR translations ([#10262](https://github.com/RocketChat/Rocket.Chat/pull/10262)) -- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240)) - -
-๐Ÿ” Minor changes - -- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257)) -- Fix caddy download link to pull from github ([#10260](https://github.com/RocketChat/Rocket.Chat/pull/10260)) -- Fix: possible errors on rocket.chat side of the apps ([#10252](https://github.com/RocketChat/Rocket.Chat/pull/10252)) -- Fix snap install. Remove execstack from sharp, and bypass grpc error ([#10015](https://github.com/RocketChat/Rocket.Chat/pull/10015)) - -
- -## 0.63.0-rc.0 -`2018-03-27 ยท 1 ๏ธ๏ธ๏ธโš ๏ธ ยท 17 ๐ŸŽ‰ ยท 35 ๐Ÿ› ยท 10 ๐Ÿ” ยท 12 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` +# 0.63.0 +`2018-04-03 ยท 1 ๏ธ๏ธ๏ธโš ๏ธ ยท 18 ๐ŸŽ‰ ยท 44 ๐Ÿ› ยท 20 ๐Ÿ” ยท 13 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` ### โš ๏ธ BREAKING CHANGES @@ -64,6 +8,7 @@ ### ๐ŸŽ‰ New features +- Improve history generation ([#10319](https://github.com/RocketChat/Rocket.Chat/pull/10319)) - Interface to install and manage RocketChat Apps (alpha) ([#10246](https://github.com/RocketChat/Rocket.Chat/pull/10246)) - Livechat messages rest APIs ([#10054](https://github.com/RocketChat/Rocket.Chat/pull/10054) by [@hmagarotto](https://github.com/hmagarotto)) - Endpoint to retrieve message read receipts ([#9907](https://github.com/RocketChat/Rocket.Chat/pull/9907)) @@ -84,6 +29,7 @@ ### ๐Ÿ› Bug fixes +- Audio Message UI fixes ([#10303](https://github.com/RocketChat/Rocket.Chat/pull/10303) by [@kb0304](https://github.com/kb0304)) - "View All Members" button inside channel's "User Info" is over sized ([#10012](https://github.com/RocketChat/Rocket.Chat/pull/10012)) - Apostrophe-containing URL misparsed" ([#10242](https://github.com/RocketChat/Rocket.Chat/pull/10242)) - user status on sidenav ([#10222](https://github.com/RocketChat/Rocket.Chat/pull/10222)) @@ -119,10 +65,21 @@ - New channel page on medium size screens ([#9988](https://github.com/RocketChat/Rocket.Chat/pull/9988)) - Empty sidenav when sorting by activity and there is a subscription without room ([#9960](https://github.com/RocketChat/Rocket.Chat/pull/9960)) - Two factor authentication modal was not showing ([#9982](https://github.com/RocketChat/Rocket.Chat/pull/9982)) +- File had redirect delay when using external storage services and no option to proxy only avatars ([#10272](https://github.com/RocketChat/Rocket.Chat/pull/10272)) +- Missing pt-BR translations ([#10262](https://github.com/RocketChat/Rocket.Chat/pull/10262)) +- /me REST endpoint was missing user roles and preferences ([#10240](https://github.com/RocketChat/Rocket.Chat/pull/10240)) +- Unable to mention after newline in message ([#10078](https://github.com/RocketChat/Rocket.Chat/pull/10078) by [@c0dzilla](https://github.com/c0dzilla)) +- Wrong pagination information on /api/v1/channels.members ([#10224](https://github.com/RocketChat/Rocket.Chat/pull/10224)) +- Inline code following a url leads to autolinking of code with url ([#10163](https://github.com/RocketChat/Rocket.Chat/pull/10163) by [@c0dzilla](https://github.com/c0dzilla)) +- Incoming Webhooks were missing the raw content ([#10258](https://github.com/RocketChat/Rocket.Chat/pull/10258)) +- Missing Translation Key on Reactions ([#10270](https://github.com/RocketChat/Rocket.Chat/pull/10270))
๐Ÿ” Minor changes +- Fix: Reaction endpoint/api only working with regular emojis ([#10323](https://github.com/RocketChat/Rocket.Chat/pull/10323)) +- Bump snap version to include security fix ([#10313](https://github.com/RocketChat/Rocket.Chat/pull/10313)) +- Update Meteor to 1.6.1.1 ([#10314](https://github.com/RocketChat/Rocket.Chat/pull/10314)) - LingoHub based on develop ([#10243](https://github.com/RocketChat/Rocket.Chat/pull/10243)) - Rename migration name on 108 to match file name ([#10237](https://github.com/RocketChat/Rocket.Chat/pull/10237)) - Fix typo for Nextcloud login ([#10159](https://github.com/RocketChat/Rocket.Chat/pull/10159) by [@pierreozoux](https://github.com/pierreozoux)) @@ -133,6 +90,13 @@ - [OTHER] Reactivate API tests ([#9844](https://github.com/RocketChat/Rocket.Chat/pull/9844)) - Start 0.63.0-develop / develop sync from master ([#9985](https://github.com/RocketChat/Rocket.Chat/pull/9985)) - Release 0.62.2 ([#10087](https://github.com/RocketChat/Rocket.Chat/pull/10087)) +- Fix: Renaming channels.notifications Get/Post endpoints ([#10257](https://github.com/RocketChat/Rocket.Chat/pull/10257)) +- Fix caddy download link to pull from github ([#10260](https://github.com/RocketChat/Rocket.Chat/pull/10260)) +- Fix: possible errors on rocket.chat side of the apps ([#10252](https://github.com/RocketChat/Rocket.Chat/pull/10252)) +- Fix snap install. Remove execstack from sharp, and bypass grpc error ([#10015](https://github.com/RocketChat/Rocket.Chat/pull/10015)) +- Fix: inputs for rocketchat apps ([#10274](https://github.com/RocketChat/Rocket.Chat/pull/10274)) +- Fix: chat.react api not accepting previous emojis ([#10290](https://github.com/RocketChat/Rocket.Chat/pull/10290)) +- Fix: Scroll on content page ([#10300](https://github.com/RocketChat/Rocket.Chat/pull/10300))
@@ -140,6 +104,7 @@ - [@Joe-mcgee](https://github.com/Joe-mcgee) - [@TopHattedCat](https://github.com/TopHattedCat) +- [@c0dzilla](https://github.com/c0dzilla) - [@cyclops24](https://github.com/cyclops24) - [@hmagarotto](https://github.com/hmagarotto) - [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) diff --git a/package.json b/package.json index 6beb74203b512..d62816dc5cdc6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.63.0-rc.2", + "version": "0.63.0", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index 7ebf3bbee7b8b..23f3869e52cac 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.63.0-rc.2" + "version": "0.63.0" } From 48f2dedee46a7dbfefadeb6ec1c552203b0258eb Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Sat, 7 Apr 2018 02:25:44 -0300 Subject: [PATCH 17/18] Bump version to 0.63.1 --- .docker/Dockerfile | 2 +- .github/history.json | 51 +++++++++++++++++++++++++ .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 19 ++++++++- package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 7 files changed, 74 insertions(+), 6 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 7a34b728f7bbb..08bc27b32bf3a 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.63.0 +ENV RC_VERSION 0.63.1 MAINTAINER buildmaster@rocket.chat diff --git a/.github/history.json b/.github/history.json index 0b6a8cd73424f..1c523399eede8 100644 --- a/.github/history.json +++ b/.github/history.json @@ -12156,5 +12156,56 @@ "rodrigok" ] } + ], + "0.63.1": [ + { + "pr": "10348", + "title": "[FIX] Change deprecated Meteor._reload.reload method in favor of Reload._reload", + "userLogin": "tttt-conan", + "milestone": "0.63.1", + "contributors": [ + "tttt-conan" + ] + }, + { + "pr": "10351", + "title": "[FIX] Snaps crashing due to Node v8.11.1 Segfault", + "userLogin": "geekgonecrazy", + "milestone": "0.63.1", + "contributors": [ + "geekgonecrazy", + "web-flow" + ] + }, + { + "pr": "10084", + "title": "[FIX] Add '.value' in the SAML package to fix TypeErrors on SAML token validation", + "userLogin": "TechyPeople", + "milestone": "0.63.1", + "contributors": [ + "TechyPeople", + "web-flow", + "rodrigok" + ] + }, + { + "pr": "10356", + "title": "[FIX] Incorrect german translation of user online status", + "userLogin": "kaiiiiiiiii", + "milestone": "0.63.1", + "contributors": [ + "kaiiiiiiiii" + ] + }, + { + "pr": "10355", + "title": "[FIX] Incorrect French language usage for Disabled", + "userLogin": "graywolf336", + "milestone": "0.63.1", + "contributors": [ + "graywolf336", + "web-flow" + ] + } ] } \ No newline at end of file diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index fc249ee45f9fc..e904c24b4384a 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.63.0"), + appMarketingVersion = (defaultText = "0.63.1"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index 68cd311b3a38c..a0be6fc1e43e6 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.63.0 + RC_VERSION=0.63.1 fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index abd5bf868cede..23102f27536aa 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,23 @@ +# 0.63.1 +`2018-04-07 ยท 5 ๐Ÿ› ยท 3 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` + +### ๐Ÿ› Bug fixes + +- Change deprecated Meteor._reload.reload method in favor of Reload._reload ([#10348](https://github.com/RocketChat/Rocket.Chat/pull/10348) by [@tttt-conan](https://github.com/tttt-conan)) +- Snaps crashing due to Node v8.11.1 Segfault ([#10351](https://github.com/RocketChat/Rocket.Chat/pull/10351)) +- Add '.value' in the SAML package to fix TypeErrors on SAML token validation ([#10084](https://github.com/RocketChat/Rocket.Chat/pull/10084) by [@TechyPeople](https://github.com/TechyPeople)) +- Incorrect german translation of user online status ([#10356](https://github.com/RocketChat/Rocket.Chat/pull/10356) by [@kaiiiiiiiii](https://github.com/kaiiiiiiiii)) +- Incorrect French language usage for Disabled ([#10355](https://github.com/RocketChat/Rocket.Chat/pull/10355)) + +### ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป Contributors ๐Ÿ˜ + +- [@TechyPeople](https://github.com/TechyPeople) +- [@kaiiiiiiiii](https://github.com/kaiiiiiiiii) +- [@tttt-conan](https://github.com/tttt-conan) + # 0.63.0 -`2018-04-03 ยท 1 ๏ธ๏ธ๏ธโš ๏ธ ยท 18 ๐ŸŽ‰ ยท 44 ๐Ÿ› ยท 20 ๐Ÿ” ยท 13 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` +`2018-04-04 ยท 1 ๏ธ๏ธ๏ธโš ๏ธ ยท 18 ๐ŸŽ‰ ยท 44 ๐Ÿ› ยท 20 ๐Ÿ” ยท 13 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` ### โš ๏ธ BREAKING CHANGES diff --git a/package.json b/package.json index d62816dc5cdc6..f4f231619594b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.63.0", + "version": "0.63.1", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index 23f3869e52cac..eb0c811e983bb 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.63.0" + "version": "0.63.1" } From 7ea39a7695ad2113569bd5fa3c930f3b62f708e2 Mon Sep 17 00:00:00 2001 From: Bradley Hilton Date: Sat, 7 Apr 2018 01:18:08 -0500 Subject: [PATCH 18/18] Bump version to 0.64.0-develop --- .docker/Dockerfile | 2 +- .sandstorm/sandstorm-pkgdef.capnp | 2 +- .travis/snap.sh | 2 +- HISTORY.md | 5 +++++ package.json | 2 +- packages/rocketchat-lib/rocketchat.info | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 08bc27b32bf3a..f356f252eda50 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,6 +1,6 @@ FROM rocketchat/base:8 -ENV RC_VERSION 0.63.1 +ENV RC_VERSION 0.64.0-develop MAINTAINER buildmaster@rocket.chat diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index e904c24b4384a..b5e3e9786fe81 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -21,7 +21,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 62, # Increment this for every release. - appMarketingVersion = (defaultText = "0.63.1"), + appMarketingVersion = (defaultText = "0.64.0-develop"), # Human-readable representation of appVersion. Should match the way you # identify versions of your app in documentation and marketing. diff --git a/.travis/snap.sh b/.travis/snap.sh index a0be6fc1e43e6..c8a57fb468342 100755 --- a/.travis/snap.sh +++ b/.travis/snap.sh @@ -17,7 +17,7 @@ elif [[ $TRAVIS_TAG ]]; then RC_VERSION=$TRAVIS_TAG else CHANNEL=edge - RC_VERSION=0.63.1 + RC_VERSION=0.64.0-develop fi echo "Preparing to trigger a snap release for $CHANNEL channel" diff --git a/HISTORY.md b/HISTORY.md index 23102f27536aa..6b32486661bb3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,8 @@ + +# 0.64.0-develop (2018-04-07) + + + # 0.63.1 `2018-04-07 ยท 5 ๐Ÿ› ยท 3 ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป` diff --git a/package.json b/package.json index f4f231619594b..e88d1abbd7eff 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Rocket.Chat", "description": "The Ultimate Open Source WebChat Platform", - "version": "0.63.1", + "version": "0.64.0-develop", "author": { "name": "Rocket.Chat", "url": "https://rocket.chat/" diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info index eb0c811e983bb..d4df12e186365 100644 --- a/packages/rocketchat-lib/rocketchat.info +++ b/packages/rocketchat-lib/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "0.63.1" + "version": "0.64.0-develop" }