# Autumn release (2024.9.0) ## Goals This release improves the performance of CryptPad with server optimizations and an optional cryptography plugin. We also include lots of improvements and fixes across various areas. ## Features - Add support for cryptography plugins to replace tweetnacl on the server [#1667](https://github.com/cryptpad/cryptpad/pull/1667) - We use our [CryptPad Sodium plugin](https://github.com/cryptpad/cryptpad-sodium-plugin) to improve the performance of our flagship instance cryptpad.fr. - Documentation will be available shortly in the form of a blog post and section in the admin guide. ## Improvements - Server memory improvements [#1543](https://github.com/cryptpad/cryptpad/pull/1543) - Server optimization when computing metadata [#1566](https://github.com/cryptpad/cryptpad/pull/1566) - Team roster channels slow down team members accounts [#1614](https://github.com/cryptpad/cryptpad/pull/1614) - Deployment - Add example configs for Caddy [#1603](https://github.com/cryptpad/cryptpad/pull/1603) - Add support for HTTP -> HTTPS (80 -> 443 ports) redirection [#1582](https://github.com/cryptpad/cryptpad/pull/1582) - Added "git config --add safe.directory" [#1539](https://github.com/cryptpad/cryptpad/pull/1539) - Add confirmation modal when admins turn on mandatory 2FA [#1552](https://github.com/cryptpad/cryptpad/pull/1552) - Developers on Windows can now launch their local instance with `npm run windev` ## Fixes - Modals accessibility - `Shift-Tab` option for `Ctrl-E` modals [#1647](https://github.com/cryptpad/cryptpad/pull/1647) - Remove focus from disabled elements on modals [#1618](https://github.com/cryptpad/cryptpad/pull/1618) - `+New` button fixes on Drive [#1610](https://github.com/cryptpad/cryptpad/pull/1610) - Accessibility improvements to modals [#1563](https://github.com/cryptpad/cryptpad/pull/1563) - `Ctrl+E` modal fixes [#1559](https://github.com/cryptpad/cryptpad/pull/1559) - Focus style fixes [#1560](https://github.com/cryptpad/cryptpad/pull/1560) - Make password change confirmation button responsive on mobile [#1569](https://github.com/cryptpad/cryptpad/pull/1569) - Calendar - Fix calendar ownership sharing bug [#1655](https://github.com/cryptpad/cryptpad/pull/1655) - Calendar modal UI fixes [#1615](https://github.com/cryptpad/cryptpad/pull/1615) - Make 'New Event' modal appear in user view for small screens [#1583](https://github.com/cryptpad/cryptpad/pull/1583) - Teams - Improve Teams card list accessibility [#1585](https://github.com/cryptpad/cryptpad/pull/1585) - Fix emoji avatar handling and team name overflowing in sidebar teams [#1598](https://github.com/cryptpad/cryptpad/pull/1598) - Toolbar/menus - Make code history buttons not overlap on small screens [#1586](https://github.com/cryptpad/cryptpad/pull/1586) - Fix misaligned/missing file dropdown menu items [#1578](https://github.com/cryptpad/cryptpad/pull/1578) - Diagram - Ignore unknown fields in diagram document [#1666](https://github.com/cryptpad/cryptpad/commit/02da76d3de76455a5573dd43d7ef6e68bf62c959) - Forms - Fix overflowing check and radio items in form app conditional [#1591](https://github.com/cryptpad/cryptpad/pull/1591) - Kanban - fixed a bug that was causing duplicate cards when many editors were collaborating [02da76d](https://github.com/cryptpad/cryptpad/commit/02da76d3de76455a5573dd43d7ef6e68bf62c959) - OnlyOffice - OnlyOffice document out of sync with multiple tabs as guest [#1671](https://github.com/cryptpad/cryptpad/issues/1671) - Miscellaneous - Fix ownership/sharing issues with password-protected pads [#1565](https://github.com/cryptpad/cryptpad/pull/1565) - Make performance table responsive for mobile (admin panel) [#1555](https://github.com/cryptpad/cryptpad/pull/1555) - Fix bash indentation and trailing whitespaces [#1548](https://github.com/cryptpad/cryptpad/pull/1548) - Drive focus fixes [#1611](https://github.com/cryptpad/cryptpad/pull/1611) ## Dependencies We upgraded the following packages - cryptpad - chainpad-server to `5.2.2` - netflux-websocket to `1.2.1` - third-party - express to `4.21.0` - http-proxy-middleware to `3.0.2` - requirejs to `2.3.7` - stylelint to `16.9.0` ## Upgrade notes If you are upgrading from a version older than `2024.6.1` please read the upgrade notes of all versions between yours and `2024.9.0` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 2024.9.0 npm ci npm run install:components ./install-onlyoffice.sh ``` 3. Restart your server 4. Review your instance's checkup page to ensure that you are passing all tests # 2024.6.1 ## Goals This is a bugfix release to address issues that were reported by Cryptpad.fr users. We took the opportunity to update the translations with some new languages contributed by the community. ## Improvements - Translations update from CryptPad Translations [#1575](https://github.com/cryptpad/cryptpad/pull/1575) - Added: Español cubano, اَلْعَرَبِيَّةُ Arabic, Svenska - Removed some languages without enough coverage - Greek (16%) - Romanian (36%) ## Fixes - Calendar events sometimes don’t appear when created [#1551](https://github.com/cryptpad/cryptpad/issues/1551) fixed by [072dba2](https://github.com/cryptpad/cryptpad/commit/072dba254e3c2be32cd6b261d84510909deb713f) - Revert the new method of counting registered users in the admin panel [4544be6](https://github.com/cryptpad/cryptpad/commit/4544be6b4d9fa7291b19cb366f7dd492dfe07340) - Fix broken OnlyOffice Document [#1572](https://github.com/cryptpad/cryptpad/issues/1572) - Fix printing in Code documents [#1557](https://github.com/cryptpad/cryptpad/pull/1557) [#1478](https://github.com/cryptpad/cryptpad/pull/1478) - Fix OnlyOffice undefined functions [#1550](https://github.com/cryptpad/cryptpad/pull/1550) - Fix keyboard operation of confirm modals [#1576](https://github.com/cryptpad/cryptpad/issues/1576) - Pressing Enter on the "Cancel" button triggered the "OK" button instead ## Upgrade notes If you are upgrading from a version older than `2024.6.0` please read the upgrade notes of all versions between yours and `2024.6.1` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 2024.6.1 npm ci npm run install:components ./install-onlyoffice.sh ``` 3. Restart your server 4. Review your instance's checkup page to ensure that you are passing all tests # 2024.6.0 ## Goals This release introduces a new onboarding flow to guide administrators through the setup of an instance. After creating the first admin account, 3 screens guide them through the customization of the instance title, logo, accent color, available applications, and security features. We also include a new language, some fixes on accessibility, deployment, OnlyOffice and more. ## Features - Onboarding screens & app configuration [#1513](https://github.com/cryptpad/cryptpad/pull/1513) - Bahasa Indonesia is a new available language [fe78b6a](https://github.com/cryptpad/cryptpad/commit/fe78b6ab1dc76ce9eb8d5361c309db8e92117fa8) - Thanks to our [Weblate](https://weblate.cryptpad.org) contributors who made that happen! ## Improvements - Improve plugins API [#1511](https://github.com/cryptpad/cryptpad/pull/1511) ## Fixes - Accessibility - Kanban accessibility fixes [#1488](https://github.com/cryptpad/cryptpad/pull/1488) - Fix modal focus [#1483](https://github.com/cryptpad/cryptpad/pull/1483) - Fix locked focus on text editors [#1473](https://github.com/cryptpad/cryptpad/pull/1473) - Frames must have accessible names [#1123](https://github.com/cryptpad/cryptpad/issues/1123) - Focus trapped on notifications menu [#1430](https://github.com/cryptpad/cryptpad/issues/1430) - Add page language [#1125](https://github.com/cryptpad/cryptpad/issues/1125) - Can not open folder via "▼" -> "Open". [#1089](https://github.com/cryptpad/cryptpad/issues/1089) - Images must have alternate text [#1449](https://github.com/cryptpad/cryptpad/issues/1449) - OnlyOffice - Remove x2t from the CryptPad repo [#1454](https://github.com/cryptpad/cryptpad/issues/1454) - Other OnlyOffice users are shown as "Guest" [#1446](https://github.com/cryptpad/cryptpad/issues/1446) - Document PDF exports are empty when remote embedding is disabled [#1472](https://github.com/cryptpad/cryptpad/issues/1472) - Sometimes images of a presentation are not exported to PDF [#1500](https://github.com/cryptpad/cryptpad/issues/1500) - Automatic upgrade of an OnlyOffice document fails sometimes [#1534](https://github.com/cryptpad/cryptpad/issues/1534) - Import/Export is broken [#1532](https://github.com/cryptpad/cryptpad/issues/1532) - Print is broken [#1533](https://github.com/cryptpad/cryptpad/issues/1533) - Deployment / Hosting - Upgrade CryptPad version in docker-compose.yml [#1529](https://github.com/cryptpad/cryptpad/pull/1529) - Optimize HTTPd example config [#1498](https://github.com/cryptpad/cryptpad/pull/1498) - Tidy up HTTPd config [#1527](https://github.com/cryptpad/cryptpad/pull/1527) - Clarify sandbox `httpSafePort` use in `config.example.js` [#1518](https://github.com/cryptpad/cryptpad/pull/1518) - Switch to new `http2` Nginx option [#1516](https://github.com/cryptpad/cryptpad/pull/1516) - Server fixes and aggregated stats [#1509](https://github.com/cryptpad/cryptpad/pull/1509) - Create the block folder at boot [#911](https://github.com/cryptpad/cryptpad/pull/911) - Remove obsolete `version` from `docker-compose.yml` [2e716eb](https://github.com/cryptpad/cryptpad/commit/2e716eb4e39fb835f95a1fa1a340e01142d11b1c) - Other - Unsharp the corners when hovering the dismiss button on notification drop-down menu [#1466](https://github.com/cryptpad/cryptpad/pull/1466) - Fix contextual menu `Open` on anonymous drive [#1464](https://github.com/cryptpad/cryptpad/pull/1464) - Tighten eslint rules [#1456](https://github.com/cryptpad/cryptpad/pull/1456) - Remove mediatag subfolder [#844](https://github.com/cryptpad/cryptpad/pull/844) ## Dependencies - Upgrade CryptPad version in `package.json`, update description as well [#1530](https://github.com/cryptpad/cryptpad/pull/1530) - Remove deprecated and unmaintained `lesshint` library and use `stylelint` and its `stylelint-less` plugin instead ## Upgrade notes If you are upgrading from a version older than `2024.3.1` please read the upgrade notes of all versions between yours and `2024.3.1` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 2024.6.0 npm ci npm run install:components ./install-onlyoffice.sh ``` 3. Restart your server 4. Review your instance's checkup page to ensure that you are passing all tests # 2024.3.1 ## Goals This minor release introduces a workaround to recover corrupted OnlyOffice documents alongside other fixes, with some improvements. ## Fixes - Workarounds for missing OnlyOffice methods: [#1492](https://github.com/cryptpad/cryptpad/pull/1492) - Fix HTTP server issue with NodeJs >= v20.13.0: [4483b84](https://github.com/cryptpad/cryptpad/commit/4483b848ff2ba23176cb05dacf073f3e0581ba7b) - Fix merge issues with `package.json`: [7f45d59](https://github.com/cryptpad/cryptpad/commit/7f45d598cbf230002863bbd84004c38252b97031) - Fix Docker ports: [#1485](https://github.com/cryptpad/cryptpad/pull/1485) - Change _inactive_ to _archived_ in `config.example.js` file: [#1474](https://github.com/cryptpad/cryptpad/pull/1474) ## Improvements - New translations from our Weblate contributors: [#1491](https://github.com/cryptpad/cryptpad/pull/1491) - Polish - French - Bulgarian - Hungarian - Basque - Optimize default Nginx example config: [#1486](https://github.com/cryptpad/cryptpad/pull/1486) - Add `.mjs` support in HTTPd example config: [#1471](https://github.com/cryptpad/cryptpad/pull/1471) ## Upgrade notes If you are upgrading from a version older than `2024.3.0` please read the upgrade notes of all versions between yours and `2024.3.1` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 2024.3.1 npm ci npm run install:components ./install-onlyoffice.sh ``` 3. Restart your server 4. Review your instance's checkup page to ensure that you are passing all tests # 2024.3.0 ## Goals This release is aimed at instance administrators with new features and changes in the way CryptPad is installed. This marks a major release and we are also taking the opportunity to change the way we number CryptPad versions, moving to a date-based format (from semver to [calver](https://calver.org/)). For full details on the reasons behind this change please read [our March 2024 status blog post](https://blog.cryptpad.org/2024/03/29/status-2024-03/). The short version is that this is our Spring 2024 release with number `2024.3.0` and that we are aiming for the following schedule going forward, sticking to the `YYYY.MM.micro` format: - 💐 Spring `2024.3.0` - 🌻 Summer `2024.6.0` end June 2024 - 🍁 Autumn `2024.9.0` end September 2024 - ❄️ Winter `2024.12.0` end December 2024 ## Features - Admin and moderation changes [#1438](https://github.com/cryptpad/cryptpad/pull/1438) - Support system refactoring with a new help-desk functionality, allowing non-admins to be moderators and handle support tickets - New instance customization features from the admin panel - Instance logo - Instance accent color - Admin panel code refactoring ## Improvements - Completed accessibility improvements for all dropdown menus [#1380](https://github.com/cryptpad/cryptpad/pull/1380) - Developer experience [#1436](https://github.com/cryptpad/cryptpad/pull/1436) with new `.editorconfig` and updated `.gitignore` files ## Fixes - Fix Notifications replaying (#1399) [#1428](https://github.com/cryptpad/cryptpad/pull/1428) - Fix hover and focus styling of toolbar menus [#1417](https://github.com/cryptpad/cryptpad/pull/1417) - Fix ssoauth path regex [#1411](https://github.com/cryptpad/cryptpad/pull/1411) - File upload broken with a specific size [#1419](https://github.com/cryptpad/cryptpad/issues/1419) - User menu displays may include consecutive separators [#1402](https://github.com/cryptpad/cryptpad/issues/1402) - Diagram - Enable and fix internal drawio exports [#1439](https://github.com/cryptpad/cryptpad/pull/1439) - OnlyOffice - Do not allow OnlyOffice comments in view mode [#1424](https://github.com/cryptpad/cryptpad/pull/1424) ## Dependencies ### OnlyOffice - OnlyOffice is now a separate module [#1435](https://github.com/cryptpad/cryptpad/pull/1435) - avoids having compiled binaries in the main code repository - first step towards new instances only downloading the current version + any future updates (i.e. avoiding 1.7GB of historical OnlyOffice versions they will never use). Starting with this version, OnlyOffice applications (Sheets, Document, Presentation) are not bundled with CryptPad anymore. You can install/update them by running the installation script we provide: ```bash ./install-onlyoffice.sh # press q to close the license screen # and Y ⏎ to accept the OnlyOffice license ``` For Docker users that want to use OnlyOffice, please read our updated [Docker installation guide](https://docs.cryptpad.org/en/admin_guide/installation.html#admin-docker-install). ### Others - Bump follow-redirects from 1.15.4 to 1.15.6 [#1432](https://github.com/cryptpad/cryptpad/pull/1432) - Bump jose from 4.15.3 to 4.15.5 [#1426](https://github.com/cryptpad/cryptpad/pull/1426) - Bump express from 4.18.2 to 4.19.2 [#1451](https://github.com/cryptpad/cryptpad/pull/1451) ## Upgrade notes If you are upgrading from a version older than `5.7` please read the upgrade notes of all versions between yours and `5.7` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 2024.3.0 ./install-onlyoffice.sh # press q to close the license screen # and Y ⏎ to accept the OnlyOffice license ``` 1. Restart your server 2. Review your instance's checkup page to ensure that you are passing all tests # 5.7.0 ## Goals This release includes some features that could not be included into 5.6.0, namely instance invitations and support for images in diagrams. It also includes bug fixes in the drive, calendar and many other places. ## Features - Instance administrators can now issue invitation links that can be used to create one account each, even if registration is closed on the instance. An optional User Directory can help keep track of the known accounts on the instance. This feature is designed for the needs of enterprise customers who use their own instance, hence allowing administrators access to more information than on a public-facing service [#1395](https://github.com/cryptpad/cryptpad/pull/1395) - Diagram documents now support images [#1295](https://github.com/cryptpad/cryptpad/pull/1295) ## Fixes - Fix access modal issues after password change [#1394](https://github.com/cryptpad/cryptpad/pull/1394) - Drive - Shared folder access list [#1388](https://github.com/cryptpad/cryptpad/pull/1388) - File icons in drive [#1386](https://github.com/cryptpad/cryptpad/pull/1386) - Emptying trash with multiple folders and files fails [#1344](https://github.com/cryptpad/cryptpad/issues/1344) - Shared folder and drive, read-only link issue [#1238](https://github.com/cryptpad/cryptpad/issues/1238) - Loss of access to a shared folder after a double password change [#1365](https://github.com/cryptpad/cryptpad/issues/1365) - Files - PDFjs rendering issue with Firefox 121 [#1393](https://github.com/cryptpad/cryptpad/pull/1393) - Rich Text - Fix richtext issues [#1392](https://github.com/cryptpad/cryptpad/pull/1392) - Duplicated element in table of content (TOC) [#1336](https://github.com/cryptpad/cryptpad/issues/1336) - Anchors don't work anymore [#1226](https://github.com/cryptpad/cryptpad/issues/1226) - Rows and columns numbers in tables can't be modified anymore [#1358](https://github.com/cryptpad/cryptpad/issues/1358) - Forms - Fix issue with duplicating choice/checkbox grid questions [#1359](https://github.com/cryptpad/cryptpad/pull/1359) - Date question datepicker/input field now displays correctly [#1357](https://github.com/cryptpad/cryptpad/pull/1357) - Duplicated “Enter” event sent when navigating with keyboard [#1396](https://github.com/cryptpad/cryptpad/issues/1396) - Kanban - Kanban item export [#1360](https://github.com/cryptpad/cryptpad/pull/1360) - Calendar - Calendar datepicker on mobile now easily toggled [#1368](https://github.com/cryptpad/cryptpad/pull/1368) - Behaviour change: keep the offset between start and end date constant when updating the start date (otherwise it was possible to create events that end before even starting that thus don’t appear in the calendar) - Calendar yearly recurring event - wrong month name [#1398](https://github.com/cryptpad/cryptpad/issues/1398) - Admin - Encoding issues in broadcast messages [#1379](https://github.com/cryptpad/cryptpad/issues/1379) - Deployment - Fix Cryptpad is unhealthy on Docker [#1350](https://github.com/cryptpad/cryptpad/pull/1350) thanks to @llaumgui ## Dependencies - Bump follow-redirects from 1.15.3 to 1.15.4 [#1378](https://github.com/cryptpad/cryptpad/pull/1378) ## Upgrade notes If you are upgrading from a version older than `5.6.0` please read the upgrade notes of all versions between yours and `5.6.0` to avoid configuration issues. ⚠️ Before proceeding note that this upgrade requires changes to the Nginx configuration, please see full diff below. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 5.7.0 ``` 3. Update dependencies ```bash npm ci npm run install:components ``` 4. Restart your server 5. Review your instance's checkup page to ensure that you are passing all tests ### Nginx config changes ```diff diff --git a/docs/example-advanced.nginx.conf b/docs/example-advanced.nginx.conf index cb827b4b0..f2b32e959 100644 --- a/docs/example-advanced.nginx.conf +++ b/docs/example-advanced.nginx.conf @@ -14,6 +14,8 @@ server { # Let's Encrypt webroot include letsencrypt-webroot; + # Include mime.types to be able to support .mjs files (see "types" below) + include mime.types; # CryptPad serves static assets over these two domains. # `main_domain` is what users will enter in their address bar. @@ -166,11 +168,6 @@ server { # We've applied other sandboxing techniques to mitigate the risk of running WebAssembly in this privileged scope if ($uri ~ ^\/unsafeiframe\/inner\.html.*$) { set $unsafe 1; } - # draw.io uses inline script tags in it's index.html. The hashes are added here. - if ($uri ~ ^\/components\/drawio\/src\/main\/webapp\/index.html.*$) { - set $scriptSrc "'self' 'sha256-dLMFD7ijAw6AVaqecS7kbPcFFzkxQ+yeZSsKpOdLxps=' 'sha256-6g514VrT/cZFZltSaKxIVNFF46+MFaTSDTPB8WfYK+c=' resource: https://${main_domain}"; - } - # privileged contexts allow a few more rights than unprivileged contexts, though limits are still applied if ($unsafe) { set $scriptSrc "'self' 'unsafe-eval' 'unsafe-inline' resource: https://${main_domain}"; @@ -179,6 +176,11 @@ server { # Finally, set all the rules you composed above. add_header Content-Security-Policy "default-src 'none'; child-src $childSrc; worker-src $workerSrc; media-src $mediaSrc; style-src $styleSrc; script-src $scriptSrc; connect-src $connectSrc; font-src $fontSrc; img-src $imgSrc; frame-src $frameSrc; frame-ancestors $frameAncestors"; + # Add support for .mjs files used by pdfjs + types { + application/javascript mjs; + } + # The nodejs process can handle all traffic whether accessed over websocket or as static assets # We prefer to serve static content from nginx directly and to leave the API server to handle # the dynamic content that only it can manage. This is primarily an optimization ``` # 5.6.0 ## Goals This release introduces support for integrating CryptPad instances with Single-Sign On authentication. It brings a lot of improvements and fixes to Form, Calendar, and other parts of CryptPad. This release begins to improve the accessibility of the toolbar towards full WCAG compliance which we hope to achieve in the near future. ## Features - Authentication - This version paves the way for SSO authentication for a CryptPad instance via a plugin (est. release Jan. 2024) [#1320](https://github.com/cryptpad/cryptpad/pull/1320) - New setting to make Two-Factor Authentication mandatory for all user accounts on an instance [#1341](https://github.com/cryptpad/cryptpad/pull/1341) - Form - New button to duplicate a question [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Calendar - New description field for calendar events [#1299](https://github.com/cryptpad/cryptpad/pull/1299) ## Improvements - Accessibility of toolbars and some drop-down menus [#1290](https://github.com/cryptpad/cryptpad/pull/1290) - "+ New" drop-down menu in Drive and Team Drive #1191 - New `Ctrl + e` modal #1192 - Code contact request notifications as headings #1197 - DOM order of toolbar #1198 - Notifications menu not accessible via Keyboard #1201 - Sidebar "tabs" not accessible via keyboard #1203 - Implement keyboard navigation of toolbar menus #1209 - CryptDrive page needs a logical tab order #1151 - Elements not accessible using the keyboard #1162 - Calendar event modal date-picker is cut-off at some screen resolutions #1280 - Visible focus #1206 - Rich Text - Improvements to the Rich Text toolbar and layout for mobile usage [#1296](https://github.com/cryptpad/cryptpad/pull/1296) - Calendar - Handling the move of repeating events from a calendar to another [#1308](https://github.com/cryptpad/cryptpad/pull/1308) - Kanban - Changed positioning of kanban tag container on smaller screens [#1307](https://github.com/cryptpad/cryptpad/pull/1307) - New option to increase the number of teams slots for premium users only [#1315](https://github.com/cryptpad/cryptpad/pull/1315) - Improve licensing information, CryptPad code now complies with the [REUSE](https://reuse.software/) specifications [#1300](https://github.com/cryptpad/cryptpad/pull/1300) - Deployment - Basic configuration for Apache HTTPd [#1332](https://github.com/cryptpad/cryptpad/pull/1332) - Add Docker health check [#1287](https://github.com/cryptpad/cryptpad/pull/1287) - Cleanup - Old // XXX comments [#1334](https://github.com/cryptpad/cryptpad/pull/1334) - Outdated/misplaced files [#1327](https://github.com/cryptpad/cryptpad/pull/1327) ## Fixes - Fix browser autocomplete issues (password, numbers, etc.) [#1342](https://github.com/cryptpad/cryptpad/pull/1342) - Drive - Container height fills screen [#1304](https://github.com/cryptpad/cryptpad/pull/1304) - Context menu on mobile [#1301](https://github.com/cryptpad/cryptpad/pull/1301) - OnlyOffice applications - Use correct mime type for .wasm files (export functionality) [#1288](https://github.com/cryptpad/cryptpad/pull/1288) - Fix filter functionality in Sheets [#1319](https://github.com/cryptpad/cryptpad/issues/1319) - Form - Fix an error upon importing a template in forms [#1316](https://github.com/cryptpad/cryptpad/pull/1316) - Can now set form closing date/time on mobile [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Can now edit time options for poll questions on mobile [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Dates in CSV exports of forms are now in ISO (not timestamp) format [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Page breaks are no longer visible in conditional sections when condition is not met [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Final submission page now has margins [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Question blocks on mobile are now only draggable at the top of the block to make scrolling possible [#1305](https://github.com/cryptpad/cryptpad/pull/1305) - Whiteboard - Fix a few export-related issues [#1328](https://github.com/cryptpad/cryptpad/pull/1328) - Calendar - Reformat `www/calendar/export.js` [#1314](https://github.com/cryptpad/cryptpad/pull/1314) - Fix a bug with stopping the recurrence of a calendar event [#1312](https://github.com/cryptpad/cryptpad/pull/1312) - Calendar creates itself twice when navigating with the keyboard [#1250](https://github.com/cryptpad/cryptpad/issues/1250) - Fix timezone in Daylight Saving Time issues [#1317](https://github.com/cryptpad/cryptpad/pull/1317) - Translations - Revise the translation of `zh` [#1329](https://github.com/cryptpad/cryptpad/pull/1329) ## Dependencies - Added [Moment.js](http://momentjs.com/) for improved handling of dates in Calendar (added as part of [#1317](https://github.com/cryptpad/cryptpad/pull/1317)) ## Deployment We [fixed an issue with the Systemd service file and logging](https://github.com/cryptpad/cryptpad/commit/078095c3e25d39707bdaab7ec066ceed6cb7158b), you'll need to add the following lines to your `cryptpad.service` before continuing by following the upgrade notes below. ```diff # Restart service after 10 seconds if node service crashes RestartSec=2 + # Proper logging to journald + StandardOutput=journal + StandardError=journal+console User=cryptpad Group=cryptpad ``` ## Upgrade notes If you are upgrading from a version older than `5.5.0` please read the upgrade notes of all versions between yours and `5.5.0` to avoid configuration issues. To upgrade: 1. Reload the Systemd daemon, required due to the changes in the **Deployment** section ```bash sudo systemctl daemon-reload ``` 2. Stop your server 3. Get the latest code with git ```bash git fetch origin --tags git checkout 5.6.0 ``` 4. Restart your server 5. Review your instance's checkup page to ensure that you are passing all tests # 5.5.0 ## Features - Moderation and content deletion features [#1253](https://github.com/cryptpad/cryptpad/pull/1253) * Moderation * archive an entire account and its owned documents from its public key * restore this entire account if necessary * Placeholder * unavailable documents now provide improved messages communicating the reason they are unavailable: - Deleted by an owner - Deleted by an admin + reason from admin team (user account or document) - Deleted for inactivity (documents not stored in a user drive and inactive) - Protected with a new password (user account or document) * it is no longer possible to re-use an previous password for a password-protected document - Only Office upgrade to 7.3.3.60 - New version of x2t for document conversions ## Improvements - Accessibility - Add text labels to elements [#1163](https://github.com/cryptpad/cryptpad/issues/1163), [#1122](https://github.com/cryptpad/cryptpad/issues/1122), [#1123](https://github.com/cryptpad/cryptpad/issues/1123), [#1124](https://github.com/cryptpad/cryptpad/issues/1124), [#1128](https://github.com/cryptpad/cryptpad/issues/1128), [#1129](https://github.com/cryptpad/cryptpad/issues/1129), [#1131](https://github.com/cryptpad/cryptpad/issues/1131), [#1140](https://github.com/cryptpad/cryptpad/issues/1140), [#1150](https://github.com/cryptpad/cryptpad/issues/1150), [#1159](https://github.com/cryptpad/cryptpad/issues/1159), [#1195](https://github.com/cryptpad/cryptpad/issues/1195), [#1194](https://github.com/cryptpad/cryptpad/issues/1194) - Enable zooming and scaling [#1130](https://github.com/cryptpad/cryptpad/issues/1130) - Turn login error message into an instruction [#1207](https://github.com/cryptpad/cryptpad/issues/1207) - Mobile usage - Fix the instance links layout on the home-page [#1085](https://github.com/cryptpad/cryptpad/issues/1085) - Display full file upload progress modal [#1086](https://github.com/cryptpad/cryptpad/issues/1086) - Add text to Teams buttons [#1093](https://github.com/cryptpad/cryptpad/issues/1093) - Fix button spacings [#1104](https://github.com/cryptpad/cryptpad/issues/1104), [#1106](https://github.com/cryptpad/cryptpad/issues/1106) - Add even space between category buttons [#1113](https://github.com/cryptpad/cryptpad/pull/1113) thanks to @lemondevxyz - Allow the About panel to be closed [#1088](https://github.com/cryptpad/cryptpad/issues/1088) - Calendar - Display full event edit panel [#1094](https://github.com/cryptpad/cryptpad/issues/1094) - Make menu usable [#971](https://github.com/cryptpad/cryptpad/issues/971) - Kanban - Hide markdown help button instead of breaking the layout [#1117](https://github.com/cryptpad/cryptpad/issues/1117) - Added margin for horizontal scroll [#1039](https://github.com/cryptpad/cryptpad/issues/1039) - Remove margin from cards and columns [#1120](https://github.com/cryptpad/cryptpad/issues/1120) - Instance admin - Added a warning to `/admin/#stats` about a process that can crash the instance [#1176](https://github.com/cryptpad/cryptpad/issues/1176) - Added a setting to display a status page for the instance [#1172](https://github.com/cryptpad/cryptpad/issues/1172) - Replace the "sign up" button on the log-in page with a link [#1164](https://github.com/cryptpad/cryptpad/issues/1164) - Add support for Webp images [#1008] thanks @lukasdotcom - improvements and bug fixes for the archival of inactive documents ## Fixes - Revert a button spacing regression introduced with 5.4.0 [#1229](https://github.com/cryptpad/cryptpad/pull/1229) - Login bug on the new Safari following macOS/iPadOS 14 [#1257](https://github.com/cryptpad/cryptpad/issues/1257) - Mermaid diagrams were sometimes displayed over each other in Code documents [#1244](https://github.com/cryptpad/cryptpad/issues/1244) - Own responses to a form could not be deleted [#1239](https://github.com/cryptpad/cryptpad/issues/1239) - Timezone differences caused errors in Forms "date/time" polls - The large attachment button did not look consistent in Forms [#1237](https://github.com/cryptpad/cryptpad/issues/1237) - The recent tab in the drive was missing column titles [#1233](https://github.com/cryptpad/cryptpad/issues/1233) - An export file type dropdown was hidden inside a popup [#1241](https://github.com/cryptpad/cryptpad/issues/1241) - Guest emoji avatars were not displayed constistently [#1188](https://github.com/cryptpad/cryptpad/issues/1188) - "Early Access" apps were not shown on the instance home page even when active - OnlyOffice document conversions - Fix PDF export from Presentation document [#913](https://github.com/cryptpad/cryptpad/issues/913) - Print sheets with long links [#1032](https://github.com/cryptpad/cryptpad/issues/1032) - Fix some .xlsx imports [#1240](https://github.com/cryptpad/cryptpad/issues/1240) ## Dependencies - Pin CKEditor to 4.22.1 [#1248](https://github.com/cryptpad/cryptpad/issues/1248) - Prevent x2t from being cached [#1278](https://github.com/cryptpad/cryptpad/issues/1278) ## Deployment We now support Nginx with two configurations (find more information in our [administrator guide](https://docs.cryptpad.org/en/admin_guide/installation.html#install-and-configure-nginx)): * New recommended "basic" nginx config for small instances: `example.nginx.conf` * Update to the old "advanced" config: `example-advanced.nginx.conf` * Add 2 lines in the "blob|block" section ```diff # Requests for blobs and blocks are now proxied to the API server # This simplifies NGINX path configuration in the event they are being hosted in a non-standard location # or with odd unexpected permissions. Serving blobs in this manner also means that it will be possible to # enforce access control for them, though this is not yet implemented. # Access control (via TOTP 2FA) has been added to blocks, so they can be handled with the same directives. location ~ ^/(blob|block)/.*$ { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' "${allowed_origins}"; add_header 'Access-Control-Allow-Credentials' true; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'application/octet-stream; charset=utf-8'; add_header 'Content-Length' 0; return 204; } # Since we are proxying to the API server these headers can get duplicated # so we hide them proxy_hide_header 'X-Content-Type-Options'; proxy_hide_header 'Access-Control-Allow-Origin'; proxy_hide_header 'Permissions-Policy'; proxy_hide_header 'X-XSS-Protection'; + proxy_hide_header 'Cross-Origin-Resource-Policy'; + proxy_hide_header 'Cross-Origin-Embedder-Policy'; proxy_pass http://localhost:3000; } ``` * Fix DrawIO hash not matching the latest version ```diff # draw.io uses inline script tags in it's index.html. The hashes are added here. if ($uri ~ ^\/components\/drawio\/src\/main\/webapp\/index.html.*$) { - set $scriptSrc "'self' 'sha256-6zAB96lsBZREqf0sT44BhH1T69sm7HrN34rpMOcWbNo=' 'sha256-6g514VrT/cZFZltSaKxIVNFF46+MFaTSDTPB8WfYK+c=' resource: https://${main_domain}"; + set $scriptSrc "'self' 'sha256-dLMFD7ijAw6AVaqecS7kbPcFFzkxQ+yeZSsKpOdLxps=' 'sha256-6g514VrT/cZFZltSaKxIVNFF46+MFaTSDTPB8WfYK+c=' resource: https://${main_domain}"; } ``` ## Upgrade notes If you are upgrading from a version older than `5.4.1` please read the upgrade notes of all versions between yours and `5.4.1` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 5.5.0 ``` 3. Update dependencies ```bash npm ci npm run install:components ``` 4. Restart your server 5. Review your instance's checkup page to ensure that you are passing all tests # 5.4.1 ## Goals This point release aims to fix some deployment related issues that were identified with 5.4.0 ## Fixes - Typo in example Nginx config [[#1184](https://github.com/cryptpad/cryptpad/issues/1184)] - Enable port 3003 on Docker [[#1183](https://github.com/cryptpad/cryptpad/issues/1183] - Bind websocket to the address specified in the `httpAddress` setting [[#1182](https://github.com/cryptpad/cryptpad/issues/1182) [#1186](https://github.com/cryptpad/cryptpad/issues/1186)] - Fix production CSP headers [[#912](https://github.com/cryptpad/cryptpad/pull/912) thanks @superboum] - Fix checkup test when registration is restricted [[#1185](https://github.com/cryptpad/cryptpad/issues/1185)] - Fix collaboration of Nextcloud integration - Fix broadcast settings not applied instantly [[#1189](https://github.com/cryptpad/cryptpad/issues/1189)] ## Upgrade notes If you are upgrading from a version older than `5.4.0` please read the upgrade notes of all versions between yours and `5.4.0` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 5.4.1 ``` 1. Restart your server 2. Review your instance's checkup page to ensure that you are passing all tests # 5.4.0 ## Goals This release introduces two major new features: - New Diagram application - 2 factor authentication using time-based one-time passwords (TOTP) Also included are some improvements, dependency updates, and bug fixes ## Features - Diagram application: integration of [Draw.io](https://www.drawio.com/) with CryptPad's encrypted real time collaboration [[#1070](https://github.com/cryptpad/cryptpad/pull/1070)] - Introduce a new app color for Diagram and adjust Whiteboard color [[#1059](https://github.com/cryptpad/cryptpad/issues/1059)] - New 2 Factor Authentication with TOTP [[#1071](https://github.com/cryptpad/cryptpad/pull/1071)]. To enable for a user account: 1. Settings > Security & Privacy 2. Enter your password 3. Save the recovery code 4. Snap the QR code with a 2FA app of your choice 5. ✅ 2FA is enabled - Docker deployment is now officially supported [[#1064](https://github.com/cryptpad/cryptpad/pull/1064)] ## Improvements - New setting to destroy all documents of which you are the sole owner - Settings re-organization - Add favicons in ICO format [[#1068](https://github.com/cryptpad/cryptpad/pull/1068) thanks @lemondevxyz] ## Bugs / issues - Form - Make Form question text selectable in participant view [[#1046](https://github.com/cryptpad/cryptpad/issues/1046)] - Add form title to archived notifications [[#1065](https://github.com/cryptpad/cryptpad/pull/1065) thanks to @lemondevxyz] - Add "make a copy" to office editors [[#1067](https://github.com/cryptpad/cryptpad/pull/1067) thanks to @lemondevxyz] - Disable the "protect tab" feature in Sheets as it cannot be integrated in CryptPad [[#1053](https://github.com/cryptpad/cryptpad/issues/1053)] ## Dependencies - Remove Bower to manage client side dependencies [[#989](https://github.com/cryptpad/cryptpad/pull/989) [#1072](https://github.com/cryptpad/cryptpad/pull/1072) thanks to @Pamplemousse] ⚠️ Please read upgrade notes carefully if you administer an instance - Upgrade Mermaid diagrams to 10.2.4 [[#1118](https://github.com/cryptpad/cryptpad/issues/1118)] - Upgrade CKeditor to 4.22.1 [[#1119](https://github.com/cryptpad/cryptpad/issues/1119)] ## Upgrade notes ⚠️ Please read upgrade notes carefully as this version introduces breaking changes If you are upgrading from a version older than `5.3.0` please read the upgrade notes of all versions between yours and `5.4.0` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 5.4.0 ``` 3. Major changes to the Nginx config - Access-Control-Allow-Credentials header - proxy_pass request for /blob/ and /block/ to the node process - new port for the websocket - set CSP headers for draw.io, used by the new diagram app - see the [full diff](https://github.com/cryptpad/cryptpad/compare/5.4-rc#diff-a97d166145edec9545df5228d500c144bd5ec20db759cf5cc6f90309e963b1ca) 4. Bower removed - To download all dependencies, use `npm install` - Then, to copy client-side dependencies, use `npm run install:components` - `www/bower_components` can be removed 5. If you have previously used the `build` command to enable opengraph preview images - Please run `npm run build` again after upgrading 6. Restart your server 7. Review your instance's checkup page to ensure that you are passing all tests # 5.3.0 ## Goals This release updates OnlyOffice applications to version 7.1 It improves the Form application and other areas of CryptPad with minor features and bug fixes. ## Features - Upgrade OnlyOffice applications (Sheet, Document, Presentation) to version 7.1 - Forms - New question type: Date [[#811](https://github.com/cryptpad/cryptpad/issues/811)] - Add Condorcet voting results to ordered list responses - Default dark theme switch [[#759](https://github.com/cryptpad/cryptpad/issues/759)]: set dark theme as the default for the instance in `application_config.js` - New FreeBSD rc.d init script ## Improvements - Auto-select document name on edit if it's still the default [thanks to [piemonkey](https://github.com/piemonkey)] - Forms - Clarify button text to "Copy Public Link" [[#937](https://github.com/cryptpad/cryptpad/issues/937)] - Clarify text on the document creation screen so that "Expiration date" (date at which the document will be destroyed) is not confused with the _closing date_ of the form [user feedback] - Decimals are now allowed in text questions with type "number" [[Forum](https://forum.cryptpad.org/d/88-decimals-in-number-type-text-field)] - Rich Text - Move width-toggle button out of the way of the text [[#957](https://github.com/cryptpad/cryptpad/issues/957)] - Deployment - Systemd: Removed outdated logging directives and implemented sandboxing and other hardening best practices - Nginx: Invert settings to forbid remote embedding by default - Removed unused dev dependencies ## Bug Fixes - Forms and Kanban - Fixed spacing issues with input fields - Forms - Fixed ways to bypass "required" questions [[#1007](https://github.com/cryptpad/cryptpad/issues/1007) [#1014](https://github.com/cryptpad/cryptpad/issues/1014)] - Fix missing notifications for responses - Send response notifications to all owners - Rich Text - Fix scroll issues when clicking on the table of contents - Fix double notification for mention + reply in a comment - Fix issues with deprecated cache - Fix bug that kept certain documents from being "pinned" to the drive. This could lead them to be deleted for inactivity even though they were stored in the drive. Note that storage quotas may increase as a result ## Update notes If you are upgrading from a version older than `5.2.0` please read the upgrade notes of all versions between yours and `5.3.0` to avoid configuration issues. To upgrade: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 5.3.0 ``` 1. Restart your server 2. Review your instance's checkup page to ensure that you are passing all tests # 5.2.1 ## Goals This minor releases fixes a bug with one of the Form features introduced in 5.2.0. We took the opportunity to include two other fixes for older issues. ## Bug Fixes - The option to delete all responses to a form was not available to form authors when the form had been created in a drive (user or team) using the **+ NEW** button - Drag & drop from a shared folder into the Templates folder made documents "disappear". They would reappear in the root of the drive when using a new worker (after all CryptPad tabs had been closed) - Clicking a link in a Calendar event location field failed to open ## Update notes Our `5.2.0` release introduced some changes to the Nginx configuration. If you are not already running `5.2.0` we recommend following the upgrade notes for that version first, and then updating to `5.2.1` To do so: 1. Stop your server 2. Get the latest code with git ```bash git fetch origin --tags git checkout 5.2.1 ``` 1. Install the latest dependencies with `bower update` 2. Restart your server 3. Review your instance's checkup page to ensure that you are passing all tests # 5.2.0 ## Goals This release is focused on addressing long-standing user feedback with new features. The most requested are improvements to Forms—multiple submissions and the ability to delete responses—as well as recurring events in Calendar. ## Features - Forms - New setting to allow participants (including Guests) to submit a form multiple times and/or delete their responses - Notifications for form owners when new responses are submitted - New option for form authors to delete all responses - New option for form authors/auditors to export responses as JSON (in addition to existing CSV and CryptPad Sheet) - Settings have been refactored in a modal with a summary in the main editor view - Display fixes for long questions/options in some question types - Calendar - New event settings to repeat periodically - quick default patterns (e.g. weekly on Mondays, yearly on December 14th, etc), and custom intervals - modify one, future, or all events - easily stop repetition from event preview - Drive - New button to filter the drive view by document type - Teams - Improved onboarding with the ability to use the same invitation link for a set number of people. Previously each link was limited to one use - Initial role can now be set for invitation links, the recipient is assigned the role directly when joining, previously all new members joined as "Viewers" - Code - Asciidoc syntax support AND asciidoc rendering - New jade language support - Removed duplicate C-language option - /checkup/ - [new test to confirm that public instances are open for registration](https://github.com/cryptpad/cryptpad/commit/174d97c442d5400d512dfccc478fd9fbd6fa075c) - new test to check that the host provides an HSTS header ## Update notes To update from `5.1.0` to `5.2.0`: 1. Read the **Nginx** section below to ensure you are using the right version and update your reverse proxy configuration to match the settings in our current `./docs/example.nginx.conf` 2. Reload nginx 3. Stop your API server 4. Fetch the latest code with git 5. Install the latest dependencies with `bower update` and `npm i` 6. Restart your server 7. Review your instance's checkup page to ensure that all tests are passing ### Nginx We added some directives that may cause issues with older versions of Nginx. We now recommend and only support [Nginx stable](https://nginx.org/en/download.html). Please note that if you are running below `v1.14.2`, applying this update will likely result in breakage. - Internet Protocol version 6 ([IPv6](https://en.wikipedia.org/wiki/IPv6)) support - TLS generation, see [the recent tutorial](https://blog.cryptpad.org/2022/12/12/tutorial-nginx-tls-acme/) on our blog - Better [TLS sessions](https://vincent.bernat.ch/en/blog/2011-ssl-session-reuse-rfc5077), handling timeout, tickets & longer cache - Longer [HTTP Strict Transport Security](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) (HSTS), now 2 years - [Online Certificate Status Protocol](https://en.wikipedia.org/wiki/OCSP_stapling) (OCSP) stapling support # 5.1.0 ## Goals We had two new members join our team in the time since our previous release. Mathilde joined us as an administrator of CryptPad.fr, so we decided to put some unplanned time towards the platform's administrative tooling to simplify some common workflows. Maxime joined us for a summer internship as a front-end developer, and took initiative on a number of popular issues from our tracker on GitHub. ## Update notes * We applied a minor optimization to CryptPad's caching rules which should result in a slight decrease of many pages' loading times, thanks to some helpful profiling by one of our users. * We have started implementing a very basic build system for CryptPad which, at the moment, is only responsible for generating a few static HTML pages. * These pages include the _opengraph_ tags which describe how previews of the page should be rendered in social media posts, messenger applications, and search engine summaries. * For the moment we haven't configured the system to build distinct pages for every language, so they will include text which is hardcoded in a single language which defaults to English. This can be configured in `config/config.js` (for example: `preferredLanguage: 'de',`). We intend to improve this in the future. * They also update the content of the page's `