From 5b6aa4ba0a69bd30aba3b166c5aa1e01fa5fde12 Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 4 Sep 2018 14:49:22 +0200 Subject: [PATCH 1/8] Reorder autostore options in Settings --- www/settings/inner.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/www/settings/inner.js b/www/settings/inner.js index ddb11f4d9..58fdb5524 100644 --- a/www/settings/inner.js +++ b/www/settings/inner.js @@ -236,9 +236,9 @@ define([ label: { class: 'noTitle' } }); var $div2 = $(h('div.cp-settings-autostore-radio', [ - opt1, + opt3, opt2, - opt3 + opt1 ])).appendTo($div); $div.find('input[type="radio"]').on('change', function () { From 2bd02ca69e4cf18f4ccdfd9ee1fdf8349db735d9 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 4 Sep 2018 08:59:38 -0400 Subject: [PATCH 2/8] bump version to 2.7.0 --- customize.dist/pages.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/customize.dist/pages.js b/customize.dist/pages.js index 22e33b01b..559d0e452 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -94,7 +94,7 @@ define([ ]) ]) ]), - h('div.cp-version-footer', "CryptPad v2.6.0 (Gibbon)") + h('div.cp-version-footer', "CryptPad v2.7.0 (Hedgehog)") ]); }; diff --git a/package.json b/package.json index 23e848602..2dca65ee5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cryptpad", "description": "realtime collaborative visual editor with zero knowlege server", - "version": "2.6.0", + "version": "2.7.0", "license": "AGPL-3.0+", "repository": { "type": "git", From 2b2995d2c0a0747f35625bf65353e837db3ad0af Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 4 Sep 2018 09:00:32 -0400 Subject: [PATCH 3/8] update a few english translations --- customize.dist/translations/messages.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js index 8510c06f3..5c2bc2b4c 100644 --- a/customize.dist/translations/messages.js +++ b/customize.dist/translations/messages.js @@ -669,7 +669,7 @@ define(function () { // pad out.pad_showToolbar = "Show toolbar"; out.pad_hideToolbar = "Hide toolbar"; - out.pad_base64 = "This pad contains images stored in an inefficient way. These images will increase significantly the size of the pad in your CryptDrive, and they will make it slower to load. Do you want to migrate these images to a better format (they will be stored separately in your drive)?"; // XXX + out.pad_base64 = "This pad contains images stored in an inefficient way. These images will significantly increase the size of the pad in your CryptDrive, and make it slower to load. You can migrate these files to a new format which will be stored separately in your CryptDrive. Do you want to migrate these images now?"; // markdown toolbar out.mdToolbar_button = "Show or hide the Markdown toolbar"; @@ -1244,13 +1244,13 @@ define(function () { out.chrome68 = "It seems that you're using the browser Chrome or Chromium version 68. It contains a bug resulting in the page turning completely white after a few seconds or the page being unresponsive to clicks. To fix this issue, you can switch to another tab and come back, or try to scroll in the page. This bug should be fixed in the next version of your browser."; // Manual pad storage popup - out.autostore_notstored = "This pad is not in your CryptDrive. Do you want to store it now?"; // XXX - out.autostore_settings = "You can enable automatic pad storage in your Settings page!"; // XXX + out.autostore_notstored = "This pad is not in your CryptDrive. Do you want to store it now?"; + out.autostore_settings = "You can enable automatic pad storage in your Settings page!"; out.autostore_store = "Store"; out.autostore_hide = "Don't store"; out.autostore_error = "Unexpected error: we were unable to store this pad, please try again."; out.autostore_saved = "The pad was successfully stored in your CryptDrive!"; - out.autostore_forceSave = "Store the file in CryptDrive"; // File upload modal + out.autostore_forceSave = "Store the file in your CryptDrive"; // File upload modal out.autostore_notAvailable = "You must store this pad in your CryptDrive before being able to use this feature."; // Properties/tags/move to trash return out; From a203a67a538f0b0fc2b53cd2631f4ac9b7921a9a Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 4 Sep 2018 09:06:32 -0400 Subject: [PATCH 4/8] update another translation --- customize.dist/translations/messages.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js index 5c2bc2b4c..bf4b2160d 100644 --- a/customize.dist/translations/messages.js +++ b/customize.dist/translations/messages.js @@ -1,4 +1,4 @@ -define(function () { +DEFINE(function () { var out = {}; out.main_title = "CryptPad: Zero Knowledge, Collaborative Real Time Editing"; @@ -252,7 +252,7 @@ define(function () { out.pad_mediatagRatio = "Keep ratio"; out.pad_mediatagBorder = "Border width (px)"; out.pad_mediatagPreview = "Preview"; - out.pad_mediatagImport = 'Save in CryptDrive'; + out.pad_mediatagImport = 'Save in your CryptDrive'; out.pad_mediatagOptions = 'Image properties'; // Kanban From 0e70961074a814a6f9b23949d524de43c8d8ff7c Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 4 Sep 2018 09:14:13 -0400 Subject: [PATCH 5/8] password-protected shared folders aren't urgent. dropping the XXX --- www/drive/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/drive/main.js b/www/drive/main.js index d81f07f39..7395b163a 100644 --- a/www/drive/main.js +++ b/www/drive/main.js @@ -41,7 +41,7 @@ define([ var secret = Utils.Hash.getSecrets('drive', hash); if (hash) { // Add a shared folder! - // XXX password? + // TODO password? Cryptpad.addSharedFolder(secret, function (id) { window.CryptPad_newSharedFolder = id; // Update the hash in the address bar From 4a2fa77bb73b4a5f8187bca62d84eff0a03a61f8 Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 4 Sep 2018 15:28:20 +0200 Subject: [PATCH 6/8] French translation --- customize.dist/translations/messages.fr.js | 27 ++++++++++++++++++++++ customize.dist/translations/messages.js | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/customize.dist/translations/messages.fr.js b/customize.dist/translations/messages.fr.js index 60744fc8e..f24cf04b0 100644 --- a/customize.dist/translations/messages.fr.js +++ b/customize.dist/translations/messages.fr.js @@ -220,6 +220,7 @@ define(function () { out.notifyRenamed = "{0} a changé son nom en {1}"; out.notifyLeft = "{0} a quitté la session collaborative"; + out.ok = 'OK'; out.okButton = 'OK (Entrée)'; out.cancel = "Annuler"; @@ -246,6 +247,11 @@ define(function () { out.pad_mediatagTitle = "Options du Media-Tag"; out.pad_mediatagWidth = "Largeur (px)"; out.pad_mediatagHeight = "Hauteur (px)"; + out.pad_mediatagRatio = "Préserver les proportions"; + out.pad_mediatagBorder = "Éaisseur de la bordure (px)"; + out.pad_mediatagPreview = "Aperçu"; + out.pad_mediatagImport = 'Sauver dans votre CryptDrive'; + out.pad_mediatagOptions = 'Propriétés de l\'image'; // Kanban out.kanban_newBoard = "Nouveau tableau"; @@ -561,6 +567,14 @@ define(function () { out.settings_importConfirm = "Êtes-vous sûr de vouloir importer les pads récents de ce navigateur dans le CryptDrive de votre compte utilisateur ?"; out.settings_importDone = "Importation terminée"; + out.settings_autostoreTitle = "Stockage des pads dans CryptDrive"; + out.settings_autostoreHint = "Le stockage Automatique des pads permet de sauver tous les pads que vous visitez dans votre CryptDrive, sans action de votre part.
" + + "Le stockage Manuel (toujours demander) permet de ne pas stocker automatiquement les pads, mais d'afficher un message vous demandant s'il faut le faire ou non.
" + + "Le stockage Manuel (ne pas demander) permet de ne pas stocker les pads ni d'afficher le message. Une option permettant de les stocker sera toujours disponible, mais cachée."; + out.settings_autostoreYes = "Automatique"; + out.settings_autostoreNo = "Manuel (ne pas demander)"; + out.settings_autostoreMaybe = "Manuel (toujours demander)"; + out.settings_userFeedbackTitle = "Retour d'expérience"; out.settings_userFeedbackHint1 = "CryptPad peut envoyer des retours d'expérience très limités vers le serveur, de manière à nous permettre d'améliorer l'expérience des utilisateurs. "; out.settings_userFeedbackHint2 = "Le contenu de vos pads et les clés de déchiffrement ne seront jamais partagés avec le serveur."; @@ -646,6 +660,7 @@ define(function () { // pad out.pad_showToolbar = "Afficher la barre d'outils"; out.pad_hideToolbar = "Cacher la barre d'outils"; + out.pad_base64 = "Ce pad contient des images stockées de manière inefficace. Ces images vont augmenter de manière significative la taille du pad dans votre CryptDrive, et le rendre plus lent à charger. Vous pouvez migrer ces fichiers afin de les stocker séparément dans votre CryptDrive. Voulez-vous commencer la migration maintenant?"; // markdown toolbar out.mdToolbar_button = "Afficher ou cacher la barre d'outils Markdown"; @@ -1177,5 +1192,17 @@ define(function () { out.sharedFolders_create_password = "Mot de passe du dossier"; out.sharedFolders_share = "Partager cette URL avec d'autres utilisateurs enregistrés leur donne accès au dossier partagé. Une fois l'URL ouverte, le dossier partagé sera ajouté au répertoire racine de leur CryptDrive."; + out.chrome68 = "Il semblerait que vous utilisiez le navigateur Chrome version 68. Ce navigateur contient un bug rendant certaines pages entièrement blanches après quelques secondes ou bloquant les clics. Pour corriger ce problème, vous pouvez vous déplacer vers un nouvel onglet et revenir ou vous pouvez essayer de faire défiler la page. Ce bug devrait être corrigé dans la prochaine version du navigateur."; + + // Manual pad storage popup + out.autostore_notstored = "Ce pad n'est pas dans votre CryptDrive. Souhaitez-vous le stocker ?"; + out.autostore_settings = "Vous pouvez activer le stockage automatique des pads dans vos Préférences !"; + out.autostore_store = "Stocker"; + out.autostore_hide = "Ne pas stocker"; + out.autostore_error = "Erreur : nous n'avons pas réussi à stocker ce pad, veuillez ré-essayer."; + out.autostore_saved = "Ce pad a été stocké avec succès dans votre CryptDrive !"; + out.autostore_forceSave = "Stocker le fichier dans votre CryptDrive"; // File upload modal + out.autostore_notAvailable = "Vous devez stocker ce pad dans votre CryptDrive avant de pouvoir utiliser cette fonctionnalité."; + return out; }); diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js index bf4b2160d..f88f211e3 100644 --- a/customize.dist/translations/messages.js +++ b/customize.dist/translations/messages.js @@ -1,4 +1,4 @@ -DEFINE(function () { +define(function () { var out = {}; out.main_title = "CryptPad: Zero Knowledge, Collaborative Real Time Editing"; From 8dec54d550c3ed2900cd444024c6079bec9bbb20 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 4 Sep 2018 09:38:26 -0400 Subject: [PATCH 7/8] WIP Changelog --- CHANGELOG.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c93d79324..b569fa269 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,60 @@ +# Hedgehog release (v2.7.0) + +## Update notes + +### Features + +* checkmark styles +* contextmenu to 'adopt' media-tags +* new corner popup UI +* migrate base64 images +* configurable pad storage behaviour +* add progress bar for loading screen +* improved media-tag properties dialog in rich text pad + +### Bug fixes + +* Chrome 68 warning +* increase requirejs timeout for sharedWorkers + + +# Gibbon release (v2.6.0) + +* cp-tools font + * template icon +* nicer spinner +* footer on homepage +* refactored less files + * documentation for what was done +* shared folders + * it still says shared drive... + * application_config.js allows us to enable them + * but they are disabled by default +* use fs-extra to support folders stored across different partitions +* fancy less loader +* hack to prevent alertify from injecting css + * see common-interface.js +* support roHref +* fix bugs in password change logic +* Migrate-6 feedback key +* ProxyManager + * `disableSharedFolders` + +## Goals + +## Update notes + +* shared workers + * add `config.disableSharedFolders = true;` + * per-user `localStorage.CryptPad_SF = "1";` + + + +### Features + +### Bug fixes + + # Fossa release (v2.5.0) ## Goals From e83b225295705b1398fa17dce5a71f08baebf547 Mon Sep 17 00:00:00 2001 From: ansuz Date: Tue, 4 Sep 2018 10:28:01 -0400 Subject: [PATCH 8/8] update changelogs --- CHANGELOG.md | 64 +++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b569fa269..924a970f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,59 +1,57 @@ # Hedgehog release (v2.7.0) +## Goals + +This release overlapped with the publication and presentation of a paper written about CryptPad's architecture. +As such, we didn't plan for any very ambitious new features, and instead focused on bug fixes and some new workflows. + ## Update notes +This is a fairly simple release. Just download the latest commits and update your cache-busting string. + ### Features -* checkmark styles -* contextmenu to 'adopt' media-tags -* new corner popup UI -* migrate base64 images -* configurable pad storage behaviour -* add progress bar for loading screen -* improved media-tag properties dialog in rich text pad +* In order to address some privacy concerns, we've changed CryptPad such that pads are not immediately stored in your CryptDrive as soon as you open them. Instead, users are presented with a prompt in the bottom-right corner which asks them whether they'd like to store it manually. Alternatively, you can use your settings page to revert to the old automatic behaviour, or choose not to store, and to never be asked. +* It was brought to our attention that it was possible to upload base64-encoded images in the rich text editor. These images had a negative performance impact on such pads. From now on, if these images are detected in a pad, users are prompted to run a migration to convert them to uploaded (and encrypted) files. +* We've added a progress bar which is displayed while you are loading a pad, as we found that it was not very clear whether large pads were loading, or if they had become unresponsive due to a bug. +* We've added an option to allow users to right-click uploaded files wherever they appear, and to store that file in their CryptDrive. +* We've improved the dialog which is used to modify the properties of encrypted media embedded within rich text pads. ### Bug fixes -* Chrome 68 warning -* increase requirejs timeout for sharedWorkers - +* Due to a particularly disastrous bug in Chrome 68 which was unfortunately beyond our power to fix, we've added a warning for anyone affected by that bug to let them know the cause. +* We've increased the module loading timeout value used by requirejs in our sharedWorker implementation to match the value used by the rest of CryptPad. # Gibbon release (v2.6.0) -* cp-tools font - * template icon -* nicer spinner -* footer on homepage -* refactored less files - * documentation for what was done -* shared folders - * it still says shared drive... - * application_config.js allows us to enable them - * but they are disabled by default -* use fs-extra to support folders stored across different partitions -* fancy less loader -* hack to prevent alertify from injecting css - * see common-interface.js -* support roHref -* fix bugs in password change logic -* Migrate-6 feedback key -* ProxyManager - * `disableSharedFolders` - ## Goals +For this release we focused on deploying two very large changes in CryptPad. +For one, we'd worked on a large refactoring of the system we use to compile CSS from LESS, so as to make it more efficient. +Secondly, we reworked the architecture we use for implementing the CryptDrive functionality, so as to integrate support for shared folders. + ## Update notes -* shared workers - * add `config.disableSharedFolders = true;` - * per-user `localStorage.CryptPad_SF = "1";` +To test the _shared folders_ functionality, users can run the following command in their browser console: +`localStorage.CryptPad_SF = "1";` +Alternatively, if the instance administrator would like to enable shared folders for all users, they can do so via their `/customize/application_config.js` file, by adding the following line: + +`config.disableSharedFolders = true;` ### Features +* As mentioned in the _goals_ for this release, we've merged in the work done to drastically improve performance when compiling styles. The system features documentation for anyone interested in understanding how it works. +* We've refactored the APIs used to interact with your CryptDrive, implementing a single interface with which applications can interact, which then manages any number of sub-objects each representing a shared folder. Shared folders are still disabled by default. See the _Update notes_ section for more information. +* The home page now features the same footer which has been displayed on all other information pages until now. +* We've added a slightly nicer spinner icon on loading pages. +* We've created a custom font _cp-tools_ for our custom-designed icons + ### Bug fixes +* We've accepted a pull request implementing serverside support for moving files across different drives, for system administrators hosting CryptPad on systems which segregate folders on different partitions. +* We've addressed a report of an edge case in CryptPad's user password change logic which could cause users to delete their accounts. # Fossa release (v2.5.0)