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 92% rename from install-onlyoffice.sh rename to install-office.sh index 69d935150..3eb018cba 100755 --- a/install-onlyoffice.sh +++ b/install-office.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.2+2 7a8b4d32b000454ac304088ba042cb6fc2007e90282b7b51bf85365e4405a33b64f7f29f5aa88628fb4b94fa1e68077c56897116b2098c8b56ec34dcdcc356df ;; + x2t) install_x2t v9.3.0+0 e82fbf21fcdcff2cbaca5b9a49c3a3d6bc5f5f02ba9b704a7384ceb91e17e979bf7659aaf59f677edf319fde91dd847b419e018f58f38eb1df6ab433a6cd207c ;; *) echo "Unknown version: $version" exit 1 @@ -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 < { + console.log('id collision in document', id); + 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({ onMessage: fromOOHandler, getParticipants: getParticipants, onAuth: onAuth, getImageURL: getImageURL, getInitialChanges: getInitialChanges, + onCorruptionWarning: onCorruptionWarning, }); }; @@ -3047,7 +3065,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); } @@ -3098,7 +3116,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }); ooChannel.historyLastHash = ooChannel.lastHash; ooChannel.currentIndex = ooChannel.cpIndex; - loadCp(lastCp, true); + loadCheckpoint(lastCp, true); }).catch(err => { console.error(err); }); @@ -3268,7 +3286,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }; var onCheckpoint = function (cp) { // We want to load a checkpoint: - loadCp(cp); + loadCheckpoint(cp); }; var onPatchBack = function (cp, msgs) { if (msgs) { @@ -3285,10 +3303,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 setHistoryMode = function (bool) { @@ -3308,7 +3326,7 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null rtChannel.getHistory(function () { var lastCp = getLastCp(); - loadCp(lastCp, true); + loadCheckpoint(lastCp, true); }); };