diff --git a/CHANGELOG.md b/CHANGELOG.md
index 902ecad68..5de5b18cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,54 @@
+# 4.13.0
+
+## Goals
+
+* Update dependencies
+* fix bugs
+
+## Update notes
+
+To update from 4.12.0 or 4.12.1 to 4.13.0:
+
+1. Stop your server
+2. Get the latest code with git
+3. Install the latest dependencies with `bower update` and `npm i`
+4. Restart your server
+5. Confirm that your instance is passing all the tests included on the `/checkup/` page (on whatever devices you intend to support)
+
+## Features
+
+* more mermaid diagram types
+* update fabricjs to support various drawing tablets
+* new version of OnlyOffice
+* additional iframe sandboxing measures where appropriate
+ * secureiframe
+
+## Bug fixes
+
+* prompt guests to log in or register when viewing a shared folder with edit rights
+* fix border styles on horizontal dividers in dropdowns
+* update json-schema to avoid some prototype pollution
+* avoid breaking code documents with `\`\`\`__proto__` code blocks
+* template creation issues
+ * don't delete `common.initialTeam` ???
+ * used for `Q_SAVE_AS_TEMPLATE`
+ * use passwords where appropriate
+* OnlyOffice
+ * avoid type errors in OnlyOffice if no cursor exists
+ * try to recover old cursor?
+ * respond to OnlyOffice presentation editor with image URLs when present
+ * ensure that images are correctly loaded when exporting via x2t and add theme images
+ * re-enable chart and table insertion buttons in the UI
+ * only open the realtime-channel once
+ * log to the console if x2t fails to run ?
+* guard against type errors in user object migration
+* avoid previewing PDFs in the upload modal (due to incompatibility with improved sandboxing measures?)
+* avoid sframeChan undefined error
+* forms
+ * adjust display styles for buttons
+ * reset default options
+ * re-enter editing status if form autosave interrupts activity
+
# 4.12.1
This minor release contains a few bug fixes based on feedback we received and adjustments to prepare for the update to OnlyOffice 6.4.
diff --git a/customize.dist/pages.js b/customize.dist/pages.js
index a493f8997..ea52b00f8 100644
--- a/customize.dist/pages.js
+++ b/customize.dist/pages.js
@@ -105,7 +105,7 @@ define([
var imprintUrl = AppConfig.imprint && (typeof(AppConfig.imprint) === "boolean" ?
'/imprint.html' : AppConfig.imprint);
- Pages.versionString = "v4.12.1";
+ Pages.versionString = "v4.13.0";
// used for the about menu
diff --git a/package-lock.json b/package-lock.json
index 5697225c2..1c8342f1e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "cryptpad",
- "version": "4.12.1",
+ "version": "4.13.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -1549,9 +1549,9 @@
"dev": true
},
"json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
"dev": true,
"optional": true
},
@@ -1578,15 +1578,15 @@
}
},
"jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"dev": true,
"optional": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
- "json-schema": "0.2.3",
+ "json-schema": "0.4.0",
"verror": "1.10.0"
}
},
diff --git a/package.json b/package.json
index 39bb0a312..52e0c7244 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "cryptpad",
"description": "realtime collaborative visual editor with zero knowlege server",
- "version": "4.12.1",
+ "version": "4.13.0",
"license": "AGPL-3.0+",
"repository": {
"type": "git",
diff --git a/www/common/translations/messages.da.json b/www/common/translations/messages.da.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/www/common/translations/messages.da.json
@@ -0,0 +1 @@
+{}
diff --git a/www/common/translations/messages.es.json b/www/common/translations/messages.es.json
index 04d42caea..40209f4a5 100644
--- a/www/common/translations/messages.es.json
+++ b/www/common/translations/messages.es.json
@@ -4,7 +4,7 @@
"pad": "Texto enriquecido",
"code": "Código",
"poll": "Encuesta",
- "slide": "Presentación",
+ "slide": "Diapositivas Markdown",
"whiteboard": "Pizarra",
"contacts": "Contactos",
"kanban": "Kanban",
@@ -14,7 +14,9 @@
"media": "Media",
"sheet": "Hoja de Cálculo",
"teams": "Equipos",
- "form": "Formulario"
+ "form": "Formulario",
+ "presentation": "Presentación",
+ "doc": "Documento"
},
"disconnected": "Desconectado",
"synchronizing": "Sincronizando",
@@ -298,7 +300,7 @@
"settings_codeIndentation": "Indentación del editor de código (espacios)",
"settings_codeUseTabs": "Utilizar tabulaciones en vez de espacios",
"main_catch_phrase": "Paquete de colaboración
de extremo a extremo encriptado y de código abierto",
- "padNotPinned": "Esta nota expirará luego de 3 meses de inactividad, {0}ingresar{1} o {2}registrarse{3}para conservar.",
+ "padNotPinned": "Este documento expirará tras 3 meses de inactividad, {0}ingresar{1} o {2}registrarse{3}para conservarlo.",
"anonymousStoreDisabled": "El administrador de esta instancia de CryptPad ha deshabilitado al almacenamiento para usuarios anónimos. Debes iniciar sesión para poder usar CryptDrive.",
"expiredError": "Este pad ha expirado y ya no está disponible.",
"deletedError": "Este documento ha sido borrado y ya no se encuentra disponible.",
diff --git a/www/common/translations/messages.ko.json b/www/common/translations/messages.ko.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/www/common/translations/messages.ko.json
@@ -0,0 +1 @@
+{}
diff --git a/www/common/translations/messages.pl.json b/www/common/translations/messages.pl.json
index 45403f9e1..ede84de6a 100644
--- a/www/common/translations/messages.pl.json
+++ b/www/common/translations/messages.pl.json
@@ -7,14 +7,23 @@
"slide": "Prezentacja",
"contacts": "Kontakty",
"file": "Plik",
- "kanban": "Kanban"
+ "kanban": "Kanban",
+ "presentation": "Prezentacja",
+ "doc": "Dokument",
+ "form": "Formularz",
+ "teams": "Grupy",
+ "sheet": "Arkusz",
+ "todo": "Do wykonania",
+ "media": "Media",
+ "whiteboard": "Tablica",
+ "drive": "CryptDrive"
},
"common_connectionLost": "Przerwano połączenie z serwerem",
"disconnected": "Rozłączony",
"synchronizing": "Synchronizacja",
"reconnecting": "Wznawianie połączenia...",
"readonly": "Tylko do odczytu",
- "anonymous": "Anonimowy",
+ "anonymous": "Gość",
"users": "Użytkownicy",
"viewer": "czytający",
"viewers": "czytających",
@@ -48,5 +57,35 @@
"tos_e2ee": "Dokumenty CryptPad mogą być odczytywane i modyfikowane przez każdego kto może zgadnąć lub w inny sposób uzyskać identyfikator dokumentu. Polecamy korzystania z oprogramowania szyfrującego end-to-end (e2ee) do udostępniania linków URL. Nie będziesz rościł sobie żadnych wierzytelności w wypadku gdy taki URL dostanie się w niepowołane ręce.",
"tos_logs": "Metadane dostarczane przez twoją przeglądarkę do serwera mogą być zapisywane i przechowywane w celu utrzymywania serwisu.",
"tos_3rdparties": "Nie dostarczamy indywidualizowanych danych do osób trzecich, poza sytuacjami dyktowanymi prawnie.",
- "header_logoTitle": "Przejdź na stronę główną"
+ "header_logoTitle": "Przejdź na stronę główną",
+ "storageStatus": "Pamięć:
Wykorzystałeś {0} z {1}",
+ "upgradeAccount": "Ulepsz swoje konto",
+ "upgrade": "Ulepsz",
+ "language": "Język",
+ "userlist_offline": "Jesteś w trybie offline, lista użytkowników nie jest dostępna.",
+ "errorState": "Błąd krytyczny: {0}",
+ "forgotten": "Przeniesiono do kosza",
+ "initializing": "Inicjalizacja...",
+ "typing": "Edytowanie",
+ "realtime_unrecoverableError": "Wystąpił błąd. Wciśnij OK aby odświeżyć stronę.",
+ "disabledApp": "Ta aplikacja jest wyłączona. Skontaktuj się z administratorem aby uzyskać więcej informacji.",
+ "mustLogin": "Musisz być zalogowany aby uzyskać dostęp do tej strony",
+ "deletedFromServer": "Dokument usunięty",
+ "deleted": "Usunięto",
+ "saved": "Zapisano",
+ "error": "Błąd",
+ "loading": "Ładowanie...",
+ "newVersionError": "Nowa wersja CryptPad jest dostępna.
Odśwież aby korzystać z nowej wersji lub wciśnij klawisz ESC aby pracować w trybie offline.",
+ "errorRedirectToHome": "Wciśnij ESC aby być przeniesionym do swojego CryptDrive.",
+ "errorCopy": " Możesz korzystać z aktualnej wersji w trybie odczytu, klikając ESC.",
+ "invalidHashError": "Dokument, który chcesz zobaczyć ma błędny adres URL.",
+ "chainpadError": "Podczas ładowania zawartości, wystąpił krytyczny błąd. Dostępny jest wyłącznie odczyt, aby dać szansę na odzyskanie dokumentu.
Wciśnij klawisz ESC aby przejrzeć dokument lub odśwież stronę aby spróbować włączyć tryb edycji.",
+ "inactiveError": "Ten dokument został usunięty z powodu braku aktywności. Wciśnij klawisz ESC, aby stworzyć nowy dokument.",
+ "deletedError": "Ten dokument został usunięty.",
+ "expiredError": "Ten dokument wygasł i nie jest już dostępny.",
+ "anonymousStoreDisabled": "Administrator wyłączył zapisywanie danych dla niezalogowanych użytkowników. Musisz się zalogować aby otrzymać dostęp do aplikacji.",
+ "padNotPinnedVariable": "Dokument zostanie usunięty po {4} dniach braku aktywności, {0}zaloguj się{1} lub {2}zarejestruj{3} aby go zachować.",
+ "padNotPinned": "Ten dokument zostanie usunięty po 3 miesiącach braku aktywności, {0}zaloguj się{1} lub {2}zarejestruj{3} aby go zachować.",
+ "onLogout": "Jesteś wylogowany, {0}kliknij tutaj{1} aby się zalogować
lub użyj klawisza ESC aby odczytać swój dokument (bez możliwości edycji).",
+ "typeError": "Dokument nie jest kompatybilny z wybraną aplikacją"
}
diff --git a/www/common/translations/messages.sk.json b/www/common/translations/messages.sk.json
new file mode 100644
index 000000000..f475e8711
--- /dev/null
+++ b/www/common/translations/messages.sk.json
@@ -0,0 +1,55 @@
+{
+ "register_whyRegister": "Proč se registrovat?",
+ "register_mustAcceptTerms": "Musíte souhlasit s podmínkami služby.",
+ "register_passwordTooShort": "Heslo musí být alespoň {0} znaků dlouhé.",
+ "register_passwordsDontMatch": "Hesla nejsou stejná!",
+ "register_acceptTerms": "Potvrzuji podmínky služby",
+ "register_importRecent": "Importovat dokumenty z Vašeho neregistrovaného sezení",
+ "login_unhandledError": "Stala se neočekávaná chyba :(",
+ "login_invalPass": "Heslo je povinné",
+ "login_invalUser": "Uživatelské jméno je povinné",
+ "login_noSuchUser": "Chybné uživatelské jméno nebo heslo. Opakujte nebo se registrujte",
+ "login_hashing": "Hashuji Vaše heslo, to může chvíli trvat.",
+ "login_confirm": "Opakujte heslo",
+ "login_password": "Heslo",
+ "login_username": "Uživatelské jméno",
+ "padNotPinned": "Tento dokument expiruje za 3 měsíce neaktivity, {0}přihlašte se{1} nebo {2}se registrujte{3} pro jeho uchování.",
+ "onLogout": "Jste odhlášení, {0}klikněte zde{1} pro přihlášení
nebo zmáčkněte Escape pro čtení dokumentu.",
+ "typeError": "Tento dokument není kompatibilní s vybranou aplikací",
+ "common_connectionLost": "Spojení se serverem ztraceno
Nyní jste v režimu čtení, dokud nebude spojení obnoveno.",
+ "type": {
+ "teams": "Týmy",
+ "sheet": "Tabulka",
+ "contacts": "Kontakty",
+ "todo": "Úkol",
+ "media": "Média",
+ "file": "Soubor",
+ "whiteboard": "Tabule",
+ "drive": "CryptDrive",
+ "slide": "Prezentace",
+ "poll": "Hlasování",
+ "code": "Kód",
+ "pad": "Formátovaný text"
+ },
+ "logoutEverywhere": "Odhlásit se všude",
+ "login_login": "Přihlásit se",
+ "login_register": "Registrovat",
+ "logoutButton": "Odhlásit se",
+ "settingsButton": "Nastavení",
+ "register_emailWarning0": "Vypadá to, že byl vyplněn email jako uživatelské jméno.",
+ "register_alreadyRegistered": "Tento uživatel již existuje, chcete se přihlásit?",
+ "register_warning": "Varování",
+ "register_cancel": "Zrušit",
+ "register_writtenPassword": "Své uživatelské jméno a heslo jsem si zapsal, pokračovat",
+ "register_header": "Registrovat",
+ "deletedFromServer": "Dokument zničen",
+ "deleted": "Smazáno",
+ "saved": "Uloženo",
+ "error": "Chyba",
+ "loading": "Načítání...",
+ "invalidHashError": "Požadovaný dokument má neplatné URL.",
+ "inactiveError": "Tento dokument byl smazán kvůli neaktivitě. Zmáčkněte Escape pro vytvoření nového dokumentu.",
+ "deletedError": "Tento dokument byl smazán a není již dostupný.",
+ "expiredError": "Tento dokument expiroval a není již dostupný.",
+ "padNotPinnedVariable": "Tento dokument expiruje za {4} dny neaktivity, {0}přihlašte se{1} nebo {2}se registrujte{3} pro jeho uchování."
+}