This commit is contained in:
wginolas 2026-09-09 11:41:46 +00:00 committed by GitHub
commit 556fc56fee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 57 additions and 21 deletions

View File

@ -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/

View File

@ -4,6 +4,12 @@ SPDX-FileCopyrightText: 2023 XWiki CryptPad Team <contact@cryptpad.org> 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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <<EOF
install-onlyoffice installs or upgrades OnlyOffice.
install-office installs or upgrades Euro-Office.
OPTIONS:
-h, --help
Show this help.
-a, --accept-license
Accept the license of OnlyOffice and do not ask when running this
Accept the license of Euro-Office and do not ask when running this
script. Read and accept this before using this option:
https://github.com/ONLYOFFICE/web-apps/blob/master/LICENSE.txt
https://github.com/Euro-Office/web-apps/raw/refs/heads/main/LICENSE.txt
-t, --trust-repository
Automatically configure the cloned onlyoffice-builds repository
@ -211,7 +211,7 @@ OPTIONS:
https://git-scm.com/docs/git-config/#Documentation/git-config.txt-safedirectory
--check
Do not install OnlyOffice, only check if the existing installation
Do not install Euro-Office, only check if the existing installation
is up to date. Exits 0 if it is up to date, nonzero otherwise.
--rdfind
@ -230,7 +230,7 @@ ensure_oo_is_downloaded() {
ensure_command_available git
if ! [ -d "$BUILDS_DIR" ]; then
echo "Downloading OnlyOffice..."
echo "Downloading Office..."
git clone --bare https://github.com/cryptpad/onlyoffice-builds.git "$BUILDS_DIR"
fi
if [ ${TRUST_REPOSITORY+x} ] || [ "${PROPS[trust_repository]:-no}" == yes ]; then

View File

@ -101,7 +101,7 @@ define([
hashes: {},
ids: {},
mediasSources: {},
version: privateData.ooForceVersion ? Number(privateData.ooForceVersion) : OOCurrentVersion.currentVersionNumber
version: privateData.ooForceVersion ? Number(privateData.ooForceVersion) : OOCurrentVersion.currentVersionNumber,
};
content.originalVersion = content.version;
var oldHashes = {};
@ -2252,6 +2252,11 @@ define([
}];
common.checkTrimHistory(channels);
}
content.debug = content.debug ?? {};
content.debug.idCollision = content.debug.idCollision ?? false;
APP.onLocal();
console.log("OO ready");
};
@ -2674,12 +2679,25 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null
makeChannel();
return;
}
const onCorruptionWarning = Util.once((id) => {
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);
});
};