Merge branch 'soon' into staging

pull/1/head
ansuz 4 years ago
commit bc19be990c

@ -14,6 +14,8 @@ We've spent some time working on improving our (officially) unreleased integrati
This release also includes changes to the recommended NGINX configuration. Compare your instance's config against `cryptpad/docs/example.nginx.conf` and apply all the new changes before updating. In particular, you'll want to pay attention to the configuration for a newly exposed server API (`/api/broadcast`). This should work much the same as `/api/config`, so if you're using a non-standard configuration that uses more than one server you may want to proxy it in a similar fashion. This release also includes changes to the recommended NGINX configuration. Compare your instance's config against `cryptpad/docs/example.nginx.conf` and apply all the new changes before updating. In particular, you'll want to pay attention to the configuration for a newly exposed server API (`/api/broadcast`). This should work much the same as `/api/config`, so if you're using a non-standard configuration that uses more than one server you may want to proxy it in a similar fashion.
Lastly, we've made some big improvements to the `/checkup/` page which performs some basic tests to confirm that your instance is configured correctly. It now provides some much more detailed descriptions of what might be wrong and how you can start debugging any issues that were identified. If you experience any problems after updating please review this page to assess your instance for any known issues before asking for help.
To update from 4.3.1 to 4.4.0: To update from 4.3.1 to 4.4.0:
1. Apply the documented NGINX configuration 1. Apply the documented NGINX configuration
@ -32,7 +34,6 @@ This release requires updates to both clientside and serverside dependencies. **
2. _Survey notices_ inform users that the instance administrators have published a new survey and would like their feedback. We plan to use this on CryptPad.fr to perform some voluntary user studies on an ongoing basis. 2. _Survey notices_ inform users that the instance administrators have published a new survey and would like their feedback. We plan to use this on CryptPad.fr to perform some voluntary user studies on an ongoing basis.
3. _Broadcast messages_ allow admins to send all users a custom message with optional localization in their users' preferred language. 3. _Broadcast messages_ allow admins to send all users a custom message with optional localization in their users' preferred language.
* The drive now includes a "Getting started" message and a link to our docs, like all our other apps. This replaces the creation of a personal "What is CryptPad" pad in the user's drive when they register. * The drive now includes a "Getting started" message and a link to our docs, like all our other apps. This replaces the creation of a personal "What is CryptPad" pad in the user's drive when they register.
* The /checkup/ page which performs some automatic tests to validate the host instance's configuration now includes a few more tests that check that the sheet editor has the correct HTTP headers applied and that the _broadcast API_ is available.
* We recently wrote some scripts to automatically review our translations. This exposed some inconsistencies and incorrectly applied attributes in translations that included HTML. Since it's not reasonable to expect translators to know HTML, we've taken some steps to remove all but the most basic markup from translatable messages. Instead, more advanced attributes are applied via JavaScript. This makes it easier than ever to translate CryptPad as well as providing a more consistent experience to those using translations written by contributors. * We recently wrote some scripts to automatically review our translations. This exposed some inconsistencies and incorrectly applied attributes in translations that included HTML. Since it's not reasonable to expect translators to know HTML, we've taken some steps to remove all but the most basic markup from translatable messages. Instead, more advanced attributes are applied via JavaScript. This makes it easier than ever to translate CryptPad as well as providing a more consistent experience to those using translations written by contributors.
## Bug fixes ## Bug fixes

@ -175,17 +175,19 @@ define([
// Test Websocket // Test Websocket
var evWSError = Util.mkEvent(true); var evWSError = Util.mkEvent(true);
assert(function (_cb, msg) { assert(function (_cb, msg) {
var cb = Util.once(Util.both(_cb, function (err) { var timeoutErr = 'Could not connect to the websocket server within 5 seconds.';
if (typeof(err) === 'string') { var cb = Util.once(Util.both(_cb, function (status) {
msg.innerText = err; if (status === true) { return; }
} msg.appendChild(h('span#websocket', [
status || 'Unknown websocket error',
]));
})); }));
var ws = new WebSocket(NetConfig.getWebsocketURL()); var ws = new WebSocket(NetConfig.getWebsocketURL());
var to = setTimeout(function () { var to = setTimeout(function () {
console.error('Websocket TIMEOUT'); console.error('Websocket TIMEOUT');
evWSError.fire(); evWSError.fire();
cb('Could not connect to the websocket server within 5 seconds.'); cb(timeoutErr);
}, 5000); }, 5000);
ws.onopen = function () { ws.onopen = function () {
clearTimeout(to); clearTimeout(to);
@ -200,17 +202,32 @@ define([
}); });
// Test login block // Test login block
assert(function (cb, msg) { assert(function (_cb, msg) {
msg.appendChild(h('span', [ var websocketErr = "No WebSocket available";
"Unable to create, retrieve, or remove encrypted credentials from the server. ", var cb = Util.once(Util.both(_cb, function (status) {
"This is most commonly caused by a mismatch between the value of the ", if (status === true) { return; }
h('code', 'blockPath'), if (status === websocketErr) {
' value configured in ', msg.appendChild(h('span', [
CONFIG_PATH(), websocketErr,
" and the corresponding settings in your reverse proxy's configuration file,", ' See ',
" but it can also be explained by a websocket error. ", h('a', {
RESTART_WARNING(), href: '#websocket',
])); }, 'the related websocket error'),
]));
return;
}
// else
msg.appendChild(h('span', [
"Unable to create, retrieve, or remove encrypted credentials from the server. ",
"This is most commonly caused by a mismatch between the value of the ",
h('code', 'blockPath'),
' value configured in ',
CONFIG_PATH(),
" and the corresponding settings in your reverse proxy's configuration file,",
" but it can also be explained by a websocket error. ",
RESTART_WARNING(),
]));
}));
var bytes = new Uint8Array(Login.requiredBytes); var bytes = new Uint8Array(Login.requiredBytes);
@ -237,7 +254,7 @@ define([
// If WebSockets aren't working, don't wait forever here // If WebSockets aren't working, don't wait forever here
evWSError.reg(function () { evWSError.reg(function () {
waitFor.abort(); waitFor.abort();
cb("No WebSocket available"); cb(websocketErr);
}); });
// Create proxy // Create proxy
Login.loadUserObject(opt, waitFor(function (err, rt) { Login.loadUserObject(opt, waitFor(function (err, rt) {
@ -416,12 +433,16 @@ define([
var statusClass = failed? 'failure': 'success'; var statusClass = failed? 'failure': 'success';
var failedDetails = "Details found below";
var successDetails = "This checkup only tests the most common configuration issues. You may still experience errors.";
var details = h('p', failed? failedDetails: successDetails);
var summary = h('div.summary.' + statusClass, [ var summary = h('div.summary.' + statusClass, [
h('p', Messages._getKey('assert_numberOfTestsPassed', [ h('p', Messages._getKey('assert_numberOfTestsPassed', [
state.passed, state.passed,
state.total state.total
])), ])),
h('p', "Details found below"), details,
]); ]);
var report = h('div.report', [ var report = h('div.report', [

Loading…
Cancel
Save