From c42b5729486ae7a72568a18507f1172bcaff2b17 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 17 Jul 2019 14:16:06 +0200 Subject: [PATCH 1/4] add a comment to the config file about the support keys --- config/config.example.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/config/config.example.js b/config/config.example.js index eb134591c..5f4473b99 100644 --- a/config/config.example.js +++ b/config/config.example.js @@ -64,6 +64,19 @@ module.exports = { //"https://my.awesome.website/user/#/1/cryptpad-user1/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=", ], + /* CryptPad's administration panel includes a "support" tab + * wherein administrators with a secret key can view messages + * sent from users via the encrypted forms on the /support/ page + * + * To enable this functionality: + * run `node ./scripts/generate-admin-keys.js` + * save the public key in your config in the value below + * add the private key via the admin panel + * and back it up in a secure manner + * + */ + // supportMailboxPublicKey: "", + /* ===================== * Infra setup * ===================== */ From 0b36286fc886c9465dae7ffd0db786b009e0677c Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 17 Jul 2019 14:16:19 +0200 Subject: [PATCH 2/4] 2.25.0 changelog update --- CHANGELOG.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2abf99b75..9a1756110 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,34 @@ -# Yak release (v2.24.0) +# Zebra release (v2.25.0) + +## Goals + +This release coincided with XWiki's yearly seminar, so our regular schedule was interrupted a bit. We spent the time we had working towards implementing components of "editable metadata", which will allow pad owners to add new owners or transfer ownership to friends, among other things. + +Otherwise we wanted to deploy a built-in support system to improve our ability to debug issues as well as to make it easier for users to report problems. Along the way we did our best to improve usability and fix small annoying bugs. + +As this is the last release in our 2.0 cycle, we're going to take some extra time to prepare some big features for our 3.0.0 release, which we expect to deploy on August 20th, 2019. + +## Update notes + +* We've updated some dependencies that are used to lint the CryptPad codebase to detect errors. Run `npm install` if you plan to develop for CryptPad and you want to use the linter +* This release introduces a _support_ tab within the admin panel. If you generate an asymmetric keypair and add it to your server-side configuration file then users will have the option of opening support tickets if they encounter errors. Their support tickets will include some basic information about their account which might help you to solve their issues. To set up your _"encrypted support mailbox"_: + 1. run `node ./scripts/generate-admin-keys.js` + 2. copy the "public key" and add it to your config.js file like so: + * `supportMailboxPublicKey: "BL3kgYBM0HNw5ms8ULWU1wMTb5ePBbxAPjDZKamkuB8=", + 3. copy the private key and store it in a safe place + 4. navigate to the "support" tab in the admin panel and enter the private key + 5. share the private key with any other administrators who should be able to read the support tickets + 6. restart so that your users receive the public key stored in your configuration file + * this will allow them to submit tickets via the support page + * if you don't know how to fix the issue and want to open a ticket on our public tracker, include the information submitted along with their ticket + +## Features + +* The feature added in the previous release which displayed a preview of the theme and highlighting mode chosen for the code and slide editors has been improved to also display previews when navigating through the dropdowns using keyboard arrow keys. +* We've followed up on our initial work on notifications by adding a full notifications page which offers the ability to review older notifications that you might have accidentally dismissed. +* When you right-click on an element in the CryptDrive the resulting menu now includes icons to make it easier to find the action for which you are looking +* We now include folders in search results which used to only include files +* You can right-click to add colors to folders, in case that helps you organize your content more effectively ## Goals From 0b17df3302fc4a7683a8790f305c8a2c7b1b4fe8 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 17 Jul 2019 14:24:40 +0200 Subject: [PATCH 3/4] add missing header to CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a1756110..a3a77352f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ As this is the last release in our 2.0 cycle, we're going to take some extra tim * We now include folders in search results which used to only include files * You can right-click to add colors to folders, in case that helps you organize your content more effectively +# Yak release (v2.24.0) + ## Goals We've recently had an intern join our team, so this release and those until the end of summer are likely to feature a lot of small usability fixes. From 646d8e7341d15216e8a744f9ae8536c80db09200 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 17 Jul 2019 14:50:22 +0200 Subject: [PATCH 4/4] add some comments to common-hash for new APIs --- www/common/common-hash.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/www/common/common-hash.js b/www/common/common-hash.js index 3f613ae4f..e49b0e217 100644 --- a/www/common/common-hash.js +++ b/www/common/common-hash.js @@ -85,16 +85,27 @@ define([ return id; }; + /* Given a base64-encoded public key, deterministically derive a channel id + Used for support mailboxes + */ Hash.getChannelIdFromKey = function (publicKey) { if (!publicKey) { return; } return uint8ArrayToHex(Hash.decodeBase64(publicKey).subarray(0,16)); }; + + /* Given a base64-encoded asymmetric private key + derive the corresponding public key + */ Hash.getBoxPublicFromSecret = function (priv) { if (!priv) { return; } var u8_priv = Hash.decodeBase64(priv); var pair = Nacl.box.keyPair.fromSecretKey(u8_priv); return Hash.encodeBase64(pair.publicKey); }; + + /* Given a base64-encoded private key and public key + check that the keys are part of a valid keypair + */ Hash.checkBoxKeyPair = function (priv, pub) { if (!pub || !priv) { return false; } var u8_priv = Hash.decodeBase64(priv);