diff --git a/CHANGELOG.md b/CHANGELOG.md index b485f257c..714d02d59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,37 @@ +# Elasmotherium release notes + +## Goals + +This is a small release, focused on bug fixes and UI improvements, while we're finalizing bigger team-centric features planned for the next release. + +## Update notes + +This is a pretty basic release: + +1. stop your server +2. pull the latest source code +3. restart your server + +## Features + +* Media elements (images, videos, pdf, etc.) will now display a placeholder while they're being downloaded and decrypted. +* Media elements deleted from the server by their owner will now display a "broken/missing" image. +* The "auto-close brackets" option in the Code and Slide applications can now be disabled from the user settings. +* "Add item" and "Add board" buttons in Kanban have been moved to improve usability with small screens. +* The "transfer ownership" feature for pads has been extended to shared folders. It is now possible to offer ownership of a shared folder to a friend. +* For administrators + * Better sorting of support tickets in the administration panel. Unanswered messages will be displayed first. + * Add team configuration options in `customize/application_config.js` + * `maxTeamsSlots` defines the maximum number of teams a user can join (default is 3). Teams may significantly increase the loading time of pages and we consider 3 to be a good balance between usability and performances. + * `maxOwnedTeams` defines the number of teams a user can own (default is 1). This number prevent users to create many teams only to increase their storage limit. + +## Bug fixes + +* The "pad creation modal" (Ctrl+E) is now working everywhere in the drive. +* We've fixed the share button for unregistered users (https://github.com/xwiki-labs/cryptpad/issues/457). +* We've fixed an issue with newly created kanban items replacing existing ones. +* Transfering/offering pad ownership from a team to yourself is now working properly. + # Dodo release (v3.3.0) ## Goals diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index d2f0d7258..8d29353c9 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -1005,6 +1005,9 @@ define([ }); }; Store.setPadTitle = function (clientId, data, cb) { + if (store.offline) { + return void cb({ error: 'OFFLINE' }); + } var title = data.title; var href = data.href; var channel = data.channel; @@ -1831,6 +1834,10 @@ define([ if (!cmdData || !cmdData.cmd) { return; } //var data = cmdData.data; var s = getStore(cmdData.teamId); + if (s.offline) { + broadcast([], 'NETWORK_DISCONNECT'); + return void cb({ error: 'OFFLINE' }); + } var cb2 = function (data2) { // Send the CHANGE event to all the stores because the command may have // affected data from a shared folder used by multiple teams. @@ -2289,9 +2296,11 @@ define([ }); rt.proxy.on('disconnect', function () { + store.offline = true; broadcast([], 'NETWORK_DISCONNECT'); }); rt.proxy.on('reconnect', function (info) { + store.offline = false; broadcast([], 'NETWORK_RECONNECT', {myId: info.myId}); }); diff --git a/www/common/outer/team.js b/www/common/outer/team.js index caac0704e..9d3e344a3 100644 --- a/www/common/outer/team.js +++ b/www/common/outer/team.js @@ -101,6 +101,12 @@ define([ path: p }); }); + proxy.on('disconnect', function () { + team.offline = true; + }); + proxy.on('reconnect', function (info) { + team.offline = false; + }); }; var closeTeam = function (ctx, teamId) { diff --git a/www/common/sframe-common-outer.js b/www/common/sframe-common-outer.js index 2156e3257..224a9f73c 100644 --- a/www/common/sframe-common-outer.js +++ b/www/common/sframe-common-outer.js @@ -511,7 +511,7 @@ define([ path: initialPathInDrive // Where to store the pad if we don't have it in our drive }; Cryptpad.setPadTitle(data, function (err) { - cb(err); + cb({error: err}); }); }); sframeChan.on('EV_SET_TAB_TITLE', function (newTabTitle) { diff --git a/www/common/sframe-common-title.js b/www/common/sframe-common-title.js index 5f748347c..bafbc6c16 100644 --- a/www/common/sframe-common-title.js +++ b/www/common/sframe-common-title.js @@ -64,10 +64,13 @@ define([ sframeChan.query('Q_SET_PAD_TITLE_IN_DRIVE', { title: title, defaultTitle: defaultTitle - }, function (err) { + }, function (err, obj) { + err = err || (obj && obj.error); if (err === 'E_OVER_LIMIT') { return void UI.alert(Messages.pinLimitNotPinned, null, true); - } else if (err) { return; } + } else if (err) { + return UI.alert(Messages.driveOfflineError); + } evTitleChange.fire(title); if (titleUpdated) { titleUpdated(undefined, title);