From 25449811026871768a2832fac27cd3daaffcbd55 Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Fri, 24 Apr 2026 09:50:52 +0200 Subject: [PATCH 01/10] Update Office and x2t to v9.3.0.14 --- install-onlyoffice.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install-onlyoffice.sh b/install-onlyoffice.sh index 69d935150..d82eeb3a9 100755 --- a/install-onlyoffice.sh +++ b/install-onlyoffice.sh @@ -98,8 +98,8 @@ main() { rm -rf "$OO_DIR/v8/web-apps/apps/spreadsheeteditor/main/resources/help" rm -rf "$OO_DIR/v8/web-apps/apps/common/main/resources/help/" ;; - v9) install_version v9 v9.2.0.119+5 1f1184fb04cf72a7eb2a49a9740074b5419486c79e1fd713e1f8c09b8594a826050ae941fed6ac6a96807ba73cc751d7c807bd7e6b73de9e4f8e74cd5ed04cfa ;; - x2t) install_x2t v7.3+1 ab0c05b0e4c81071acea83f0c6a8e75f5870c360ec4abc4af09105dd9b52264af9711ec0b7020e87095193ac9b6e20305e446f2321a541f743626a598e5318c1 ;; + v9) install_version v9 v9.3.0.140+0 f65b1d474188756dfb7647c8d4f2ce2f86bf95334e9c3a5a546e63df51e2e77e737f9898b8086866971c364e9fe489c9f07e6572d8961ed398e4bf996bb6c58a ;; + x2t) install_x2t v9.3.0+0 e82fbf21fcdcff2cbaca5b9a49c3a3d6bc5f5f02ba9b704a7384ceb91e17e979bf7659aaf59f677edf319fde91dd847b419e018f58f38eb1df6ab433a6cd207c ;; *) echo "Unknown version: $version" exit 1 From 6bca00836760f81066ec7d8875138e645e2cca6d Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Mon, 11 May 2026 11:23:27 +0200 Subject: [PATCH 02/10] Prepare Office history corruption fix https://github.com/cryptpad/cryptpad/issues/2291 --- www/common/onlyoffice/inner.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index 3711c587b..f40b850bc 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -2999,7 +2999,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null pinImages(); }; - const loadCp = async function (cp, keepQueue) { + const loadCheckpoint = async function (cp, keepQueue) { if (!isLockedModal.modal) { isLockedModal.modal = UI.openCustomModal(isLockedModal.content); } @@ -3019,7 +3019,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null var loadHistoryCp = function (cp, keepQueue) { APP.history = true; APP.stopHistory = false; - loadCp(cp, keepQueue); + loadCheckpoint(cp, keepQueue); }; var loadTemplate = function (href, pw, parsed) { @@ -3069,7 +3069,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }); ooChannel.historyLastHash = ooChannel.lastHash; ooChannel.currentIndex = ooChannel.cpIndex; - loadCp(lastCp, true); + loadCheckpoint(lastCp, true); }); }; @@ -3240,7 +3240,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }; var onCheckpoint = function (cp) { // We want to load a checkpoint: - loadCp(cp, true); + loadCheckpoint(cp, true); }; var onPatchBack = function (cp, msgs) { APP.history = true; @@ -3260,10 +3260,10 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }); ooChannel.queue = msgsFormatted; setTimeout(function () { - loadCp(cp, true); + loadCheckpoint(cp, true); }, 200); } else { - loadCp(cp); + loadCheckpoint(cp); } }; var docType = function() { @@ -3284,7 +3284,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null // Fill the queue and then load the last CP rtChannel.getHistory(function () { var lastCp = getLastCp(); - loadCp(lastCp, true); + loadCheckpoint(lastCp, true); }); }; @@ -3342,7 +3342,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null onPatch: onPatch, onPatchBack: onPatchBack, docType: docType, - loadCp: loadCp, + loadCp: loadCheckpoint, loadHistoryCp: loadHistoryCp, onCheckpoint: onCheckpoint, onRevert: commit, From 79cf5deb364c25170dff77f1e447653415061b8a Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Fri, 15 May 2026 14:30:16 +0200 Subject: [PATCH 03/10] Log an error when a Office document is corrupted https://github.com/cryptpad/cryptpad/issues/2291 --- install-onlyoffice.sh | 2 +- www/common/onlyoffice/inner.js | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/install-onlyoffice.sh b/install-onlyoffice.sh index 69d935150..ab38d1593 100755 --- a/install-onlyoffice.sh +++ b/install-onlyoffice.sh @@ -98,7 +98,7 @@ main() { rm -rf "$OO_DIR/v8/web-apps/apps/spreadsheeteditor/main/resources/help" rm -rf "$OO_DIR/v8/web-apps/apps/common/main/resources/help/" ;; - v9) install_version v9 v9.2.0.119+5 1f1184fb04cf72a7eb2a49a9740074b5419486c79e1fd713e1f8c09b8594a826050ae941fed6ac6a96807ba73cc751d7c807bd7e6b73de9e4f8e74cd5ed04cfa ;; + v9) install_version v9 v9.3.0.140+2 fedf1af4c3b061f6afadbc231cee7f06d15dd1a5e82db3c5f1e9739b7ddf5b5b38825f3ec3da5e92d7ed6ad1d944c11b9f83875cc5fb67bde4f9c9b1434579d8 ;; x2t) install_x2t v7.3+1 ab0c05b0e4c81071acea83f0c6a8e75f5870c360ec4abc4af09105dd9b52264af9711ec0b7020e87095193ac9b6e20305e446f2321a541f743626a598e5318c1 ;; *) echo "Unknown version: $version" diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index f40b850bc..a3591e7f0 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -2629,12 +2629,16 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null makeChannel(); return; } + + const onCorruptionWarning = Util.once((id) => console.log('XXX id collision', id)); + APP.docEditor.connectMockServer({ onMessage: fromOOHandler, getParticipants: getParticipants, onAuth: onAuth, getImageURL: getImageURL, getInitialChanges: getInitialChanges, + onCorruptionWarning: onCorruptionWarning, }); }; From 6b9472197ed15ba4a51700892e8c74d03f983a34 Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Fri, 15 May 2026 14:44:21 +0200 Subject: [PATCH 04/10] Fix ID collison and add feedback if it happens again https://github.com/cryptpad/cryptpad/issues/2291 --- www/common/onlyoffice/inner.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index a3591e7f0..697437039 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -2630,7 +2630,10 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null return; } - const onCorruptionWarning = Util.once((id) => console.log('XXX id collision', id)); + const onCorruptionWarning = Util.once((id) => { + console.log('id collision in document', id); + Feedback.send('OFFICE_DOCUMENT_ID_COLLISION', true); + }); APP.docEditor.connectMockServer({ onMessage: fromOOHandler, From 586226c15305fdd7f10bebb3c6b4558b42eca7cc Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Tue, 19 May 2026 14:17:14 +0200 Subject: [PATCH 05/10] Send idCollision feedback only once per new doc --- www/common/onlyoffice/inner.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index 697437039..ca6d3c59f 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -102,7 +102,10 @@ define([ hashes: {}, ids: {}, mediasSources: {}, - version: privateData.ooForceVersion ? Number(privateData.ooForceVersion) : OOCurrentVersion.currentVersionNumber + version: privateData.ooForceVersion ? Number(privateData.ooForceVersion) : OOCurrentVersion.currentVersionNumber, + debug: { + idCollision: false, + }, }; var oldHashes = {}; var oldIds = {}; @@ -2632,7 +2635,13 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null const onCorruptionWarning = Util.once((id) => { console.log('id collision in document', id); - Feedback.send('OFFICE_DOCUMENT_ID_COLLISION', true); + if (content?.debug?.idCollision !== undefined // No feedback for old documents + && content?.debug?.idCollision === false) { // Send feedback only once + Feedback.send(`channel=${content.channel}&OFFICE_DOCUMENT_ID_COLLISION`, true); + content.debug = content.debug || {}; + content.debug.idCollision = true; + APP.onLocal(); + } }); APP.docEditor.connectMockServer({ From 173279103c5a36d46d25e23343720a62585dcffd Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Tue, 19 May 2026 14:47:22 +0200 Subject: [PATCH 06/10] Init content.debug in onDocumentReady --- www/common/onlyoffice/inner.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index ca6d3c59f..a6fcb61f4 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -103,9 +103,6 @@ define([ ids: {}, mediasSources: {}, version: privateData.ooForceVersion ? Number(privateData.ooForceVersion) : OOCurrentVersion.currentVersionNumber, - debug: { - idCollision: false, - }, }; var oldHashes = {}; var oldIds = {}; @@ -2210,6 +2207,11 @@ define([ }]; common.checkTrimHistory(channels); } + + content.debug = content.debug ?? {}; + content.debug.idCollision = content.debug.idCollision ?? false; + APP.onLocal(); + console.log("OO ready"); }; @@ -2638,7 +2640,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null if (content?.debug?.idCollision !== undefined // No feedback for old documents && content?.debug?.idCollision === false) { // Send feedback only once Feedback.send(`channel=${content.channel}&OFFICE_DOCUMENT_ID_COLLISION`, true); - content.debug = content.debug || {}; + content.debug = content.debug ?? {}; content.debug.idCollision = true; APP.onLocal(); } From 3b3d50254d957d1ef0687dc5d9f13416a0191069 Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Thu, 13 Aug 2026 16:34:10 +0200 Subject: [PATCH 07/10] Upgrade to Euro-Office v9.3.2 --- install-onlyoffice.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-onlyoffice.sh b/install-onlyoffice.sh index cfe67c6fd..034b01588 100755 --- a/install-onlyoffice.sh +++ b/install-onlyoffice.sh @@ -98,7 +98,7 @@ main() { rm -rf "$OO_DIR/v8/web-apps/apps/spreadsheeteditor/main/resources/help" rm -rf "$OO_DIR/v8/web-apps/apps/common/main/resources/help/" ;; - v9) install_version v9 v9.3.0.140+2 fedf1af4c3b061f6afadbc231cee7f06d15dd1a5e82db3c5f1e9739b7ddf5b5b38825f3ec3da5e92d7ed6ad1d944c11b9f83875cc5fb67bde4f9c9b1434579d8 ;; + v9) install_version v9 v9.3.2+0 9f4fe5e865b28e74779d1f3c8ca450421a8491287db58f258a37b859b184941f89015af0c7c8f7ec7f6dc88e46071c5183b7ac6106b0f374a0ea28218833fec7 ;; x2t) install_x2t v9.3.0+0 e82fbf21fcdcff2cbaca5b9a49c3a3d6bc5f5f02ba9b704a7384ceb91e17e979bf7659aaf59f677edf319fde91dd847b419e018f58f38eb1df6ab433a6cd207c ;; *) echo "Unknown version: $version" From 834bdfe3356773f3530f3571ca8619ca435108ac Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Tue, 18 Aug 2026 14:33:12 +0200 Subject: [PATCH 08/10] Update Euro-Office to v9.3.2+1 --- install-onlyoffice.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-onlyoffice.sh b/install-onlyoffice.sh index 034b01588..8f80fa622 100755 --- a/install-onlyoffice.sh +++ b/install-onlyoffice.sh @@ -98,7 +98,7 @@ main() { rm -rf "$OO_DIR/v8/web-apps/apps/spreadsheeteditor/main/resources/help" rm -rf "$OO_DIR/v8/web-apps/apps/common/main/resources/help/" ;; - v9) install_version v9 v9.3.2+0 9f4fe5e865b28e74779d1f3c8ca450421a8491287db58f258a37b859b184941f89015af0c7c8f7ec7f6dc88e46071c5183b7ac6106b0f374a0ea28218833fec7 ;; + v9) install_version v9 v9.3.2+1 15f6e488706d7171969a17fa5564382ecc85c3b7b379074c69ead51b40f90d031652651a5702ded07e310865ad1ff59c3a5260250adfa584131b287108a8483b ;; x2t) install_x2t v9.3.0+0 e82fbf21fcdcff2cbaca5b9a49c3a3d6bc5f5f02ba9b704a7384ceb91e17e979bf7659aaf59f677edf319fde91dd847b419e018f58f38eb1df6ab433a6cd207c ;; *) echo "Unknown version: $version" From 665c75c04b2a0c38f6ad02ddf0bd09a4342cc0d6 Mon Sep 17 00:00:00 2001 From: Wolfgang Ginolas Date: Wed, 26 Aug 2026 14:45:10 +0200 Subject: [PATCH 09/10] Rename install-office.sh --- .dockerignore | 12 ++++++++++++ CHANGELOG.md | 6 ++++++ Dockerfile | 2 +- docker-compose.yml | 4 ++-- docker-entrypoint.sh | 4 ++-- install-onlyoffice.sh => install-office.sh | 14 +++++++------- 6 files changed, 30 insertions(+), 12 deletions(-) rename install-onlyoffice.sh => install-office.sh (95%) diff --git a/.dockerignore b/.dockerignore index ba2816f47..ec9b0741a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -23,3 +23,15 @@ customize data datastore docs +/config.js +customization +*.db +/customize/ +customize +logs +privileged.conf +config/config.js +config/sso.js +lib/plugins/* +/onlyoffice-conf/ +/onlyoffice-dist/ diff --git a/CHANGELOG.md b/CHANGELOG.md index e64d67818..4d1ae54e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ SPDX-FileCopyrightText: 2023 XWiki CryptPad Team and cont SPDX-License-Identifier: AGPL-3.0-or-later --> +# TODO next release + +## Upgrade notes + +`./install-onlyoffice.sh` is now called `/install-office.sh`. Make sure to use the new name in the future. + # 🌷🩹 Spring fix release (2026.5.1) This release contains the following fixes: diff --git a/Dockerfile b/Dockerfile index 2d02c00c7..a3e7c07f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,7 @@ FROM node:lts-alpine RUN addgroup -S cryptpad -g 4001 && adduser -S cryptpad -G cryptpad --uid 4001 -h /cryptpad # Install curl for healthcheck -# Install git, rdfind and unzip for install-onlyoffice.sh +# Install git, rdfind and unzip for install-office.sh RUN apk add --no-cache ca-certificates git rdfind unzip bash curl # Copy cryptpad with installed modules diff --git a/docker-compose.yml b/docker-compose.yml index 868823dbe..33204dbc9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,8 +14,8 @@ services: - CPAD_CONF=/cryptpad/config/config.js # Read and accept the license before uncommenting the following line: - # https://github.com/ONLYOFFICE/web-apps/blob/master/LICENSE.txt - # - CPAD_INSTALL_ONLYOFFICE=yes + # https://github.com/Euro-Office/web-apps/raw/refs/heads/main/LICENSE.txt + # - CPAD_INSTALL_OFFICE=yes volumes: - ./data/blob:/cryptpad/blob diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 91defb3c4..c893b4020 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -30,8 +30,8 @@ fi cd $CPAD_HOME -if [ "$CPAD_INSTALL_ONLYOFFICE" == "yes" ]; then - ./install-onlyoffice.sh --accept-license --trust-repository +if [ "$CPAD_INSTALL_ONLYOFFICE" == "yes" ] || [ "$CPAD_INSTALL_OFFICE" == "yes" ]; then + ./install-office.sh --accept-license --trust-repository fi npm run build diff --git a/install-onlyoffice.sh b/install-office.sh similarity index 95% rename from install-onlyoffice.sh rename to install-office.sh index 8f80fa622..abb5543db 100755 --- a/install-onlyoffice.sh +++ b/install-office.sh @@ -182,8 +182,8 @@ ask_for_license() { ensure_command_available curl ( - echo -e "Please review the license of OnlyOffice:\n\n" - curl https://raw.githubusercontent.com/ONLYOFFICE/web-apps/master/LICENSE.txt 2>/dev/null + echo -e "Please review the license of Euro-Office and press 'q' to continue:\n\n" + curl https://raw.githubusercontent.com/Euro-Office/web-apps/refs/heads/main/LICENSE.txt 2>/dev/null ) | less read -rp "Do you accept the license? (Y/N): " confirm && @@ -194,16 +194,16 @@ ask_for_license() { show_help() { cat < Date: Wed, 26 Aug 2026 15:05:13 +0200 Subject: [PATCH 10/10] Upgrade to Euro-Office v9.3.2+2 --- install-office.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-office.sh b/install-office.sh index abb5543db..3eb018cba 100755 --- a/install-office.sh +++ b/install-office.sh @@ -98,7 +98,7 @@ main() { rm -rf "$OO_DIR/v8/web-apps/apps/spreadsheeteditor/main/resources/help" rm -rf "$OO_DIR/v8/web-apps/apps/common/main/resources/help/" ;; - v9) install_version v9 v9.3.2+1 15f6e488706d7171969a17fa5564382ecc85c3b7b379074c69ead51b40f90d031652651a5702ded07e310865ad1ff59c3a5260250adfa584131b287108a8483b ;; + v9) install_version v9 v9.3.2+2 7a8b4d32b000454ac304088ba042cb6fc2007e90282b7b51bf85365e4405a33b64f7f29f5aa88628fb4b94fa1e68077c56897116b2098c8b56ec34dcdcc356df ;; x2t) install_x2t v9.3.0+0 e82fbf21fcdcff2cbaca5b9a49c3a3d6bc5f5f02ba9b704a7384ceb91e17e979bf7659aaf59f677edf319fde91dd847b419e018f58f38eb1df6ab433a6cd207c ;; *) echo "Unknown version: $version"