From 702b5b3c632cb7d7726b0d06d01a37e506e364ce Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Sun, 3 Aug 2025 15:04:54 +0100 Subject: [PATCH 01/11] Server: Trying to fix a request parsing error that can potentially crash the error (#12860) --- packages/server/src/utils/requestUtils.ts | 56 +++++++++++++++-------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/packages/server/src/utils/requestUtils.ts b/packages/server/src/utils/requestUtils.ts index 9ac4cae392..1267661de1 100644 --- a/packages/server/src/utils/requestUtils.ts +++ b/packages/server/src/utils/requestUtils.ts @@ -75,29 +75,49 @@ export async function formParse(request: IncomingMessage): Promise { + let promiseCompleted = false; + const form = formidable({ allowEmptyFiles: true, minFileSize: 0, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied - form.parse(req, (error: any, fields: Fields, files: Files) => { - if (error) { - error.message = `Could not parse form: ${error.message}`; - reject(error); - return; - } - // Formidable seems to be doing some black magic and once a request - // has been parsed it cannot be parsed again. Doing so will do - // nothing, the code will just end there, or maybe wait - // indefinitely. So we cache the result on success and return it if - // some code somewhere tries again to parse the form. - req.__parsed = { - fields: isFormContentType ? convertFieldsToKeyValue(fields) : fields, - files: convertFieldsToKeyValue(files), - }; - resolve(req.__parsed); - }); + try { + form.on('error', (error) => { + if (promiseCompleted) return; + promiseCompleted = true; + const wrapped = new Error(`Could not parse form (1): ${error.message}`); + reject(wrapped); + }); + + form.parse(req, (error: Error, fields: Fields, files: Files) => { + if (promiseCompleted) return; + promiseCompleted = true; + + if (error) { + error.message = `Could not parse form (2): ${error.message}`; + reject(error); + return; + } + + // Formidable seems to be doing some black magic and once a request + // has been parsed it cannot be parsed again. Doing so will do + // nothing, the code will just end there, or maybe wait + // indefinitely. So we cache the result on success and return it if + // some code somewhere tries again to parse the form. + req.__parsed = { + fields: isFormContentType ? convertFieldsToKeyValue(fields) : fields, + files: convertFieldsToKeyValue(files), + }; + resolve(req.__parsed); + }); + } catch (error) { + if (promiseCompleted) return; + promiseCompleted = true; + + const wrapped = new Error(`Could not parse form (3): ${error.message}`); + reject(wrapped); + } }); } From cd3fb4e7ad0596fec6b05a1966d3da419b2fd85f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Aug 2025 17:27:35 +0100 Subject: [PATCH 02/11] Update dependency sharp to v0.34.0 (#12854) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/app-cli/package.json | 2 +- packages/app-mobile/package.json | 2 +- packages/lib/package.json | 2 +- packages/tools/package.json | 2 +- yarn.lock | 206 ++++++++++++++++--------------- 5 files changed, 112 insertions(+), 102 deletions(-) diff --git a/packages/app-cli/package.json b/packages/app-cli/package.json index 6d83055cd3..ace153e9d4 100644 --- a/packages/app-cli/package.json +++ b/packages/app-cli/package.json @@ -57,7 +57,7 @@ "proper-lockfile": "4.1.2", "redux": "4.2.1", "server-destroy": "1.0.1", - "sharp": "0.33.5", + "sharp": "0.34.0", "sprintf-js": "1.1.3", "sqlite3": "5.1.6", "string-padding": "1.0.2", diff --git a/packages/app-mobile/package.json b/packages/app-mobile/package.json index 7697345fda..909dc5bfa7 100644 --- a/packages/app-mobile/package.json +++ b/packages/app-mobile/package.json @@ -130,7 +130,7 @@ "react-native-web": "0.20.0", "react-refresh": "0.17.0", "react-test-renderer": "19.0.0", - "sharp": "0.33.5", + "sharp": "0.34.0", "sqlite3": "5.1.6", "timers-browserify": "2.0.12", "ts-jest": "29.3.1", diff --git a/packages/lib/package.json b/packages/lib/package.json index a3e12018c0..0a0a725b36 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -36,7 +36,7 @@ "pdfjs-dist": "3.11.174", "react": "18.3.1", "react-test-renderer": "18.3.1", - "sharp": "0.33.5", + "sharp": "0.34.0", "tesseract.js": "5.1.1", "typescript": "5.8.2" }, diff --git a/packages/tools/package.json b/packages/tools/package.json index ad15b713d7..f41d4ef2c1 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -38,7 +38,7 @@ "node-fetch": "2.6.7", "relative": "3.0.2", "request": "2.88.2", - "sharp": "0.33.5", + "sharp": "0.34.0", "source-map-support": "0.5.21", "uri-template": "2.0.0", "yargs": "17.7.2" diff --git a/yarn.lock b/yarn.lock index 9496e8f984..4dd91b31c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7284,12 +7284,12 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.2.0": - version: 1.4.3 - resolution: "@emnapi/runtime@npm:1.4.3" +"@emnapi/runtime@npm:^1.4.0": + version: 1.4.5 + resolution: "@emnapi/runtime@npm:1.4.5" dependencies: tslib: "npm:^2.4.0" - checksum: 10/4f90852a1a5912982cc4e176b6420556971bcf6a85ee23e379e2455066d616219751367dcf43e6a6eaf41ea7e95ba9dc830665a52b5d979dfe074237d19578f8 + checksum: 10/1d6f406ff116d2363e60aef3ed49eb8d577387f4941abea508ba376900d8831609d5cce92a58076b1a9613f8e83c75c2e3fea71e4fbcdbe06019876144c2559b languageName: node linkType: hard @@ -8330,11 +8330,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-darwin-arm64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-darwin-arm64@npm:0.33.5" +"@img/sharp-darwin-arm64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-darwin-arm64@npm:0.34.0" dependencies: - "@img/sharp-libvips-darwin-arm64": "npm:1.0.4" + "@img/sharp-libvips-darwin-arm64": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-darwin-arm64": optional: true @@ -8342,11 +8342,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-darwin-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-darwin-x64@npm:0.33.5" +"@img/sharp-darwin-x64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-darwin-x64@npm:0.34.0" dependencies: - "@img/sharp-libvips-darwin-x64": "npm:1.0.4" + "@img/sharp-libvips-darwin-x64": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-darwin-x64": optional: true @@ -8354,67 +8354,74 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-darwin-arm64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4" +"@img/sharp-libvips-darwin-arm64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.1.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@img/sharp-libvips-darwin-x64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4" +"@img/sharp-libvips-darwin-x64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.1.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@img/sharp-libvips-linux-arm64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4" +"@img/sharp-libvips-linux-arm64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.1.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@img/sharp-libvips-linux-arm@npm:1.0.5": - version: 1.0.5 - resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5" +"@img/sharp-libvips-linux-arm@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linux-arm@npm:1.1.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@img/sharp-libvips-linux-s390x@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4" +"@img/sharp-libvips-linux-ppc64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linux-ppc64@npm:1.1.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-s390x@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.1.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@img/sharp-libvips-linux-x64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4" +"@img/sharp-libvips-linux-x64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linux-x64@npm:1.1.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4" +"@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@img/sharp-libvips-linuxmusl-x64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4" +"@img/sharp-libvips-linuxmusl-x64@npm:1.1.0": + version: 1.1.0 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.1.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@img/sharp-linux-arm64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-arm64@npm:0.33.5" +"@img/sharp-linux-arm64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-linux-arm64@npm:0.34.0" dependencies: - "@img/sharp-libvips-linux-arm64": "npm:1.0.4" + "@img/sharp-libvips-linux-arm64": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-linux-arm64": optional: true @@ -8422,11 +8429,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-arm@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-arm@npm:0.33.5" +"@img/sharp-linux-arm@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-linux-arm@npm:0.34.0" dependencies: - "@img/sharp-libvips-linux-arm": "npm:1.0.5" + "@img/sharp-libvips-linux-arm": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-linux-arm": optional: true @@ -8434,11 +8441,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-s390x@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-s390x@npm:0.33.5" +"@img/sharp-linux-s390x@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-linux-s390x@npm:0.34.0" dependencies: - "@img/sharp-libvips-linux-s390x": "npm:1.0.4" + "@img/sharp-libvips-linux-s390x": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-linux-s390x": optional: true @@ -8446,11 +8453,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-x64@npm:0.33.5" +"@img/sharp-linux-x64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-linux-x64@npm:0.34.0" dependencies: - "@img/sharp-libvips-linux-x64": "npm:1.0.4" + "@img/sharp-libvips-linux-x64": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-linux-x64": optional: true @@ -8458,11 +8465,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linuxmusl-arm64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5" +"@img/sharp-linuxmusl-arm64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.0" dependencies: - "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-linuxmusl-arm64": optional: true @@ -8470,11 +8477,11 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linuxmusl-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5" +"@img/sharp-linuxmusl-x64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-linuxmusl-x64@npm:0.34.0" dependencies: - "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.1.0" dependenciesMeta: "@img/sharp-libvips-linuxmusl-x64": optional: true @@ -8482,25 +8489,25 @@ __metadata: languageName: node linkType: hard -"@img/sharp-wasm32@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-wasm32@npm:0.33.5" +"@img/sharp-wasm32@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-wasm32@npm:0.34.0" dependencies: - "@emnapi/runtime": "npm:^1.2.0" + "@emnapi/runtime": "npm:^1.4.0" conditions: cpu=wasm32 languageName: node linkType: hard -"@img/sharp-win32-ia32@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-win32-ia32@npm:0.33.5" +"@img/sharp-win32-ia32@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-win32-ia32@npm:0.34.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@img/sharp-win32-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-win32-x64@npm:0.33.5" +"@img/sharp-win32-x64@npm:0.34.0": + version: 0.34.0 + resolution: "@img/sharp-win32-x64@npm:0.34.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -9122,7 +9129,7 @@ __metadata: react-test-renderer: "npm:19.0.0" redux: "npm:4.2.1" rn-fetch-blob: "npm:0.12.0" - sharp: "npm:0.33.5" + sharp: "npm:0.34.0" sqlite3: "npm:5.1.6" stream: "npm:0.0.3" stream-browserify: "npm:3.0.0" @@ -9362,7 +9369,7 @@ __metadata: relative: "npm:3.0.2" reselect: "npm:4.1.8" server-destroy: "npm:1.0.1" - sharp: "npm:0.33.5" + sharp: "npm:0.34.0" sprintf-js: "npm:1.1.3" sqlite3: "npm:5.1.6" string-padding: "npm:1.0.2" @@ -9618,7 +9625,7 @@ __metadata: request: "npm:2.88.2" rss: "npm:1.2.2" sass: "npm:1.86.3" - sharp: "npm:0.33.5" + sharp: "npm:0.34.0" source-map-support: "npm:0.5.21" sqlite3: "npm:5.1.6" style-to-js: "npm:1.1.16" @@ -32771,7 +32778,7 @@ __metadata: proper-lockfile: "npm:4.1.2" redux: "npm:4.2.1" server-destroy: "npm:1.0.1" - sharp: "npm:0.33.5" + sharp: "npm:0.34.0" sprintf-js: "npm:1.1.3" sqlite3: "npm:5.1.6" string-padding: "npm:1.0.2" @@ -45167,32 +45174,33 @@ __metadata: languageName: node linkType: hard -"sharp@npm:0.33.5": - version: 0.33.5 - resolution: "sharp@npm:0.33.5" +"sharp@npm:0.34.0": + version: 0.34.0 + resolution: "sharp@npm:0.34.0" dependencies: - "@img/sharp-darwin-arm64": "npm:0.33.5" - "@img/sharp-darwin-x64": "npm:0.33.5" - "@img/sharp-libvips-darwin-arm64": "npm:1.0.4" - "@img/sharp-libvips-darwin-x64": "npm:1.0.4" - "@img/sharp-libvips-linux-arm": "npm:1.0.5" - "@img/sharp-libvips-linux-arm64": "npm:1.0.4" - "@img/sharp-libvips-linux-s390x": "npm:1.0.4" - "@img/sharp-libvips-linux-x64": "npm:1.0.4" - "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4" - "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4" - "@img/sharp-linux-arm": "npm:0.33.5" - "@img/sharp-linux-arm64": "npm:0.33.5" - "@img/sharp-linux-s390x": "npm:0.33.5" - "@img/sharp-linux-x64": "npm:0.33.5" - "@img/sharp-linuxmusl-arm64": "npm:0.33.5" - "@img/sharp-linuxmusl-x64": "npm:0.33.5" - "@img/sharp-wasm32": "npm:0.33.5" - "@img/sharp-win32-ia32": "npm:0.33.5" - "@img/sharp-win32-x64": "npm:0.33.5" + "@img/sharp-darwin-arm64": "npm:0.34.0" + "@img/sharp-darwin-x64": "npm:0.34.0" + "@img/sharp-libvips-darwin-arm64": "npm:1.1.0" + "@img/sharp-libvips-darwin-x64": "npm:1.1.0" + "@img/sharp-libvips-linux-arm": "npm:1.1.0" + "@img/sharp-libvips-linux-arm64": "npm:1.1.0" + "@img/sharp-libvips-linux-ppc64": "npm:1.1.0" + "@img/sharp-libvips-linux-s390x": "npm:1.1.0" + "@img/sharp-libvips-linux-x64": "npm:1.1.0" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.1.0" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.1.0" + "@img/sharp-linux-arm": "npm:0.34.0" + "@img/sharp-linux-arm64": "npm:0.34.0" + "@img/sharp-linux-s390x": "npm:0.34.0" + "@img/sharp-linux-x64": "npm:0.34.0" + "@img/sharp-linuxmusl-arm64": "npm:0.34.0" + "@img/sharp-linuxmusl-x64": "npm:0.34.0" + "@img/sharp-wasm32": "npm:0.34.0" + "@img/sharp-win32-ia32": "npm:0.34.0" + "@img/sharp-win32-x64": "npm:0.34.0" color: "npm:^4.2.3" detect-libc: "npm:^2.0.3" - semver: "npm:^7.6.3" + semver: "npm:^7.7.1" dependenciesMeta: "@img/sharp-darwin-arm64": optional: true @@ -45206,6 +45214,8 @@ __metadata: optional: true "@img/sharp-libvips-linux-arm64": optional: true + "@img/sharp-libvips-linux-ppc64": + optional: true "@img/sharp-libvips-linux-s390x": optional: true "@img/sharp-libvips-linux-x64": @@ -45232,7 +45242,7 @@ __metadata: optional: true "@img/sharp-win32-x64": optional: true - checksum: 10/9f153578cb02735359cbcc874f52b56b8074ed997498c35255c7099d4f4f506f6ddf83a437a55242c7ad4f979336660504b6c78e29d6933f4981dedbdae5ce09 + checksum: 10/40a5d613fc3455b68bffff70603110fbe380bee63b8759153a51ab53e5ec8b524bf0d47957b8b8e415a75528c4d73a299e4f751283c0a63226a61acaa3d5b609 languageName: node linkType: hard From 8e585640e7e686b1d85e9d49f0fa75dd2d060ad7 Mon Sep 17 00:00:00 2001 From: mrjo118 Date: Sun, 3 Aug 2025 17:30:15 +0100 Subject: [PATCH 03/11] Android: Fixes #12821: Fix on screen keyboard covers the markdown toolbar and contents on Android 15+ (#12838) --- .../java/net/cozic/joplin/MainActivity.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt index afccff625d..2e45ce5cc0 100644 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt @@ -6,6 +6,12 @@ import com.facebook.react.ReactActivityDelegate import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled import com.facebook.react.defaults.DefaultReactActivityDelegate +import android.os.Build +import android.os.Bundle +import android.view.View +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat + class MainActivity : ReactActivity() { /** @@ -20,4 +26,25 @@ class MainActivity : ReactActivity() { */ override fun createReactActivityDelegate(): ReactActivityDelegate = ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)) + + /** + * This is a workaround to fix the upstream issue https://github.com/facebook/react-native/issues/49759#issuecomment-2918934967 + */ + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (Build.VERSION.SDK_INT >= 35) { + val rootView = findViewById(android.R.id.content) + ViewCompat.setOnApplyWindowInsetsListener(rootView) { _, insets -> + val innerPadding = insets.getInsets(WindowInsetsCompat.Type.ime()) + rootView.setPadding( + innerPadding.left, + innerPadding.top, + innerPadding.right, + innerPadding.bottom + ) + insets + } + } + } } From 42a3c407027763ad61231d720b605ee7c1354826 Mon Sep 17 00:00:00 2001 From: summoner Date: Sun, 3 Aug 2025 16:56:34 +0000 Subject: [PATCH 04/11] All: Translation: Update hu_HU.po (#12864) --- packages/tools/locales/hu_HU.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/tools/locales/hu_HU.po b/packages/tools/locales/hu_HU.po index d8443750ed..2d8f8520c3 100644 --- a/packages/tools/locales/hu_HU.po +++ b/packages/tools/locales/hu_HU.po @@ -309,7 +309,7 @@ msgid "" "A comma-separated list of words. May be used for uncommon words, to help " "voice typing spell them correctly." msgstr "" -"Szavak vesszővel elválasztott listája. Használható a nem gyakori szavak " +"Szavak vesszővel elválasztott listája. Használható a nem túl gyakori szavak " "esetében, hogy segítse a hangalapú gépelést a helyesírásban." #: packages/app-desktop/gui/UpdateNotification/UpdateNotification.tsx:37 @@ -1074,7 +1074,7 @@ msgstr "" #: packages/app-desktop/gui/NoteEditor/StatusBar.tsx:61 msgid "Click to add tags..." -msgstr "Kattintson a címke hozzáadáshoz…" +msgstr "Kattintson ide a címke hozzáadáshoz…" #: packages/lib/versionInfo.ts:89 msgid "Client ID: %s" @@ -5369,7 +5369,7 @@ msgstr "Csak monospace betűcsaládok megjelenítése." #: packages/lib/models/settings/builtInMetadata.ts:652 msgid "Show note counts" -msgstr "Jegyzet számának megjelenítése" +msgstr "Jegyzetek darabszámának megjelenítése" #: packages/app-mobile/components/side-menu-content.tsx:258 msgid "Show notebook options" @@ -5477,7 +5477,7 @@ msgstr "Néhány elemet nem sikerült szinkronizálni." #: packages/app-mobile/components/ScreenHeader/WarningBanner.tsx:43 msgid "Some items cannot be synchronised. Press for more info." msgstr "" -"Néhány elemet nem sikerült szinkronizálni. Kattintson a további " +"Néhány elemet nem sikerült szinkronizálni. Kattintson ide a további " "információkért." #: packages/lib/models/settings/settingValidations.ts:24 @@ -5890,7 +5890,7 @@ msgstr "Szöveges dokumentum" #: packages/lib/models/settings/builtInMetadata.ts:1351 msgid "Text editor command" -msgstr "Szövegszerkesztő parancs" +msgstr "Szövegszerkesztő-parancs" #: packages/lib/services/profileConfig/index.ts:106 msgid "" From 3880352f53c9b1759ef7746bcd82eba953f22a06 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Aug 2025 20:34:46 +0000 Subject: [PATCH 05/11] Update dependency @react-native-documents/picker to v10.1.3 (#12865) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/app-mobile/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/app-mobile/package.json b/packages/app-mobile/package.json index 909dc5bfa7..4afbfc2d70 100644 --- a/packages/app-mobile/package.json +++ b/packages/app-mobile/package.json @@ -33,7 +33,7 @@ "@react-native-community/geolocation": "3.4.0", "@react-native-community/netinfo": "11.4.1", "@react-native-community/push-notification-ios": "1.11.0", - "@react-native-documents/picker": "10.1.2", + "@react-native-documents/picker": "10.1.3", "assert-browserify": "2.0.0", "buffer": "6.0.3", "color": "3.2.1", diff --git a/yarn.lock b/yarn.lock index 4dd91b31c9..363220abe7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9053,7 +9053,7 @@ __metadata: "@react-native-community/geolocation": "npm:3.4.0" "@react-native-community/netinfo": "npm:11.4.1" "@react-native-community/push-notification-ios": "npm:1.11.0" - "@react-native-documents/picker": "npm:10.1.2" + "@react-native-documents/picker": "npm:10.1.3" "@react-native/babel-preset": "npm:0.79.2" "@react-native/metro-config": "npm:0.79.2" "@react-native/typescript-config": "npm:0.79.2" @@ -12163,13 +12163,13 @@ __metadata: languageName: node linkType: hard -"@react-native-documents/picker@npm:10.1.2": - version: 10.1.2 - resolution: "@react-native-documents/picker@npm:10.1.2" +"@react-native-documents/picker@npm:10.1.3": + version: 10.1.3 + resolution: "@react-native-documents/picker@npm:10.1.3" peerDependencies: react: "*" react-native: "*" - checksum: 10/9d448f347a4739aff945e9f7ebca7a1f404975d8d625eddacd3f39132784baa9e5828907cbaccd927091451b2b8ba58e8e977207858be204670e826b9470fc30 + checksum: 10/d248d26f6a71b7b2c731d51b0e3c1a33315f1997ee56ed6b8ca719fb0c967aa339c9b879addfd0cdd3d7f4aa6a6a7d4f55cf132488dcc3273a67fa94adda0af9 languageName: node linkType: hard From 23e63e5fece16365efd9c878c0b8888e8a6ff5e9 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 4 Aug 2025 18:33:28 +0100 Subject: [PATCH 06/11] Desktop release v3.4.4 --- packages/app-desktop/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app-desktop/package.json b/packages/app-desktop/package.json index 3722bec98e..a20325a84c 100644 --- a/packages/app-desktop/package.json +++ b/packages/app-desktop/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/app-desktop", - "version": "3.4.3", + "version": "3.4.4", "description": "Joplin for Desktop", "main": "main.bundle.js", "private": true, From 4d760303bc472c5bc409e6d0a618dce87ac647ac Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 4 Aug 2025 18:39:19 +0100 Subject: [PATCH 07/11] Android 3.4.3 --- packages/app-mobile/android/app/build.gradle | 4 ++-- packages/app-mobile/ios/Podfile.lock | 4 ++-- readme/about/changelog/android.md | 11 +++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/app-mobile/android/app/build.gradle b/packages/app-mobile/android/app/build.gradle index d56c621f83..e11e382eff 100644 --- a/packages/app-mobile/android/app/build.gradle +++ b/packages/app-mobile/android/app/build.gradle @@ -89,8 +89,8 @@ android { applicationId "net.cozic.joplin" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 2097775 - versionName "3.4.2" + versionCode 2097776 + versionName "3.4.3" ndk { abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } diff --git a/packages/app-mobile/ios/Podfile.lock b/packages/app-mobile/ios/Podfile.lock index cd5ba6283b..6f88c8e1c9 100644 --- a/packages/app-mobile/ios/Podfile.lock +++ b/packages/app-mobile/ios/Podfile.lock @@ -1408,7 +1408,7 @@ PODS: - ReactCommon/turbomodule/core - react-native-alarm-notification (3.4.0): - React - - react-native-document-picker (10.1.2): + - react-native-document-picker (10.1.3): - DoubleConversion - glog - hermes-engine @@ -2335,7 +2335,7 @@ SPEC CHECKSUMS: React-Mapbuffer: c3f4b608e4a59dd2f6a416ef4d47a14400194468 React-microtasksnativemodule: 054f34e9b82f02bd40f09cebd4083828b5b2beb6 react-native-alarm-notification: fd7c73a3dc15ce2d5bd9b28dfaa5aa2e25850c7b - react-native-document-picker: 3491100f1048571593b284b74b93ce99b14e20a2 + react-native-document-picker: da39c5e4f279d39c0356dca157b98f9dc349e5bb react-native-geolocation: ec15ffebc53790314885eb9e5f2132132fbc2600 react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba react-native-image-picker: 99fbcec11cf4679170a7cfba4e4d9f598297448c diff --git a/readme/about/changelog/android.md b/readme/about/changelog/android.md index 4724d8aeab..8d70768b48 100644 --- a/readme/about/changelog/android.md +++ b/readme/about/changelog/android.md @@ -1,5 +1,16 @@ # Joplin Android Changelog +## [android-v3.4.3](https://github.com/laurent22/joplin/releases/tag/android-v3.4.3) (Pre-release) - 2025-08-04T17:38:13Z + +- New: Add a Rich Text Editor (#12748 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Improved: Performance: Improve Rich Text Editor startup performance (#12819 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Improved: Updated packages @react-native-documents/picker (v10.1.3), babel-plugin-react-native-web (v0.20.0), jsdom (v26), react-refresh (v0.17.0), sharp (v0.34.0) +- Fixed: Fix editor becomes blank after dismissing search (#12818) (#12781 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Fixed: Fix on screen keyboard covers the markdown toolbar and contents on Android 15+ (#12838) (#12821 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix save button is invisible in release builds (#12826) (#12782 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Fixed: Improve usability of inline search in notes (#12791) (#12783 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Markdown editor: Make list indentation size equivalent to four spaces (#12794) (#12573 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) + ## [android-v3.4.2](https://github.com/laurent22/joplin/releases/tag/android-v3.4.2) (Pre-release) - 2025-07-25T08:30:30Z - Improved: Updated packages react-native-paper (v5.13.5) From 31c5058d5e9c82b3215755e3c764350dce7b7948 Mon Sep 17 00:00:00 2001 From: Joplin Bot Date: Mon, 4 Aug 2025 18:29:30 +0000 Subject: [PATCH 08/11] Doc: Auto-update documentation Auto-updated using release-website.sh --- packages/tools/postPreReleasesToForum.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/tools/postPreReleasesToForum.json b/packages/tools/postPreReleasesToForum.json index 2701f6cdd0..65c9b04955 100644 --- a/packages/tools/postPreReleasesToForum.json +++ b/packages/tools/postPreReleasesToForum.json @@ -165,6 +165,7 @@ "v3.4.2": true, "android-v3.4.1": true, "v3.4.3": true, - "android-v3.4.2": true + "android-v3.4.2": true, + "android-v3.4.3": true } } \ No newline at end of file From 0e19dce0d1df1d1d9d072beb3b1b43f18ff4810f Mon Sep 17 00:00:00 2001 From: pedr Date: Tue, 5 Aug 2025 06:53:42 -0300 Subject: [PATCH 09/11] Transcribe: Fixes #12863: Improve error handling (#12873) --- .env-transcribe-sample | 5 +++-- packages/transcribe/entrypoint.sh | 2 +- packages/transcribe/src/api/app.ts | 1 + packages/transcribe/src/env.ts | 2 +- packages/transcribe/src/workers/JobProcessor.ts | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.env-transcribe-sample b/.env-transcribe-sample index 433508f0c5..eb715fed33 100644 --- a/.env-transcribe-sample +++ b/.env-transcribe-sample @@ -11,8 +11,9 @@ QUEUE_RETRY_COUNT=2 QUEUE_MAINTENANCE_INTERVAL=30000 HTR_CLI_DOCKER_IMAGE=joplin/htr-cli:0.0.2 -# Fullpath to images folder -HTR_CLI_IMAGES_FOLDER=/home/user/joplin/packages/transcribe/images +# Fullpath to images folder e.g.: +#HTR_CLI_IMAGES_FOLDER=/home/user/joplin/packages/transcribe/images +HTR_CLI_IMAGES_FOLDER= QUEUE_DRIVER=pg # QUEUE_DRIVER=sqlite diff --git a/packages/transcribe/entrypoint.sh b/packages/transcribe/entrypoint.sh index 302ab99e3b..0af09ab48c 100755 --- a/packages/transcribe/entrypoint.sh +++ b/packages/transcribe/entrypoint.sh @@ -1,6 +1,6 @@ #!/bin/bash if [ ! -f "/images/$1" ]; then - echo "Error: Image file /images/$1 does not exist." + echo "Error: Image file /images/$1 does not exist. Check if HTR_CLI_IMAGES_FOLDER environment variable is set correctly." exit 1 fi diff --git a/packages/transcribe/src/api/app.ts b/packages/transcribe/src/api/app.ts index 8cf82f4f5e..000bce7d01 100644 --- a/packages/transcribe/src/api/app.ts +++ b/packages/transcribe/src/api/app.ts @@ -43,6 +43,7 @@ const init = async () => { const checkServerConfigurations = (envVariables: EnvVariables) => { if (!envVariables.API_KEY) throw Error('API_KEY environment variable not set.'); + if (!envVariables.HTR_CLI_IMAGES_FOLDER) throw Error('HTR_CLI_IMAGES_FOLDER environment variable not set. This should point to a folder where images will be stored.'); }; const main = async () => { diff --git a/packages/transcribe/src/env.ts b/packages/transcribe/src/env.ts index c8034b13bd..5d147b64b0 100644 --- a/packages/transcribe/src/env.ts +++ b/packages/transcribe/src/env.ts @@ -6,7 +6,7 @@ export const defaultEnvValues: EnvVariables = { QUEUE_RETRY_COUNT: 2, QUEUE_MAINTENANCE_INTERVAL: 60000, HTR_CLI_DOCKER_IMAGE: 'joplin/htr-cli:0.0.2', - HTR_CLI_IMAGES_FOLDER: '/home/js/joplin/packages/transcribe/images', + HTR_CLI_IMAGES_FOLDER: '', QUEUE_DRIVER: 'pg', // 'sqlite' QUEUE_DATABASE_PASSWORD: '', QUEUE_DATABASE_NAME: '', diff --git a/packages/transcribe/src/workers/JobProcessor.ts b/packages/transcribe/src/workers/JobProcessor.ts index cce5f541e6..5b19e291a2 100644 --- a/packages/transcribe/src/workers/JobProcessor.ts +++ b/packages/transcribe/src/workers/JobProcessor.ts @@ -54,7 +54,7 @@ export default class JobProcessor { try { await this.checkForJobs(); } catch (error) { - logger.error(`Error while processing job: ${this.currentJob}`, error); + logger.error(`Error while processing job: ${this.currentJob?.id}`, error); const e = error as Error; if (this.currentJob) { await this.queue.fail(this.currentJob.id, e); From f725d3895fd3405337aea05e6ff1ccfe139509fb Mon Sep 17 00:00:00 2001 From: pedr Date: Tue, 5 Aug 2025 08:26:10 -0300 Subject: [PATCH 10/11] Transcribe: Resolves #12862: Add log statement signaling that the startup has finished (#12876) --- packages/transcribe/src/api/app.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/transcribe/src/api/app.ts b/packages/transcribe/src/api/app.ts index 000bce7d01..04e1fb13c4 100644 --- a/packages/transcribe/src/api/app.ts +++ b/packages/transcribe/src/api/app.ts @@ -1,6 +1,6 @@ require('dotenv').config(); import * as Koa from 'koa'; -import Logger from '@joplin/utils/Logger'; +import Logger, { LoggerWrapper } from '@joplin/utils/Logger'; import koaBody from 'koa-body'; import initiateLogger from '../services/initiateLogger'; import createQueue from '../services/createQueue'; @@ -10,12 +10,11 @@ import env, { EnvVariables } from '../env'; import HtrCli from '../core/HtrCli'; import JobProcessor from '../workers/JobProcessor'; -initiateLogger(); -const logger = Logger.create('api/app'); -const init = async () => { +const init = async (logger: LoggerWrapper) => { const envVariables = env(); + logger.info('Checking configurations'); await checkServerConfigurations(envVariables); const app = new Koa(); @@ -26,6 +25,7 @@ const init = async () => { await router(app, envVariables.API_KEY); + logger.info('Creating queue'); const queue = await createQueue(envVariables, true); const fileStorage = new FileStorage(); @@ -39,6 +39,7 @@ const init = async () => { logger.info('Starting worker'); await jobProcessor.init(); + logger.info('Server started successfully'); }; const checkServerConfigurations = (envVariables: EnvVariables) => { @@ -47,12 +48,13 @@ const checkServerConfigurations = (envVariables: EnvVariables) => { }; const main = async () => { + initiateLogger(); + const logger = Logger.create('api/app'); logger.info('Starting...'); - await init(); + await init(logger); }; main().catch(error => { console.error(error); - logger.error(error); process.exit(1); }); From 4d8a16bda777715501b1ea92ad39fdf53d31d989 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 5 Aug 2025 12:28:03 +0100 Subject: [PATCH 11/11] Update dependency @types/mustache to v4.2.6 (#12867) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/app-desktop/package.json | 2 +- packages/lib/package.json | 2 +- packages/server/package.json | 2 +- packages/tools/package.json | 2 +- yarn.lock | 16 ++++++++-------- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/app-desktop/package.json b/packages/app-desktop/package.json index a20325a84c..1ce139156f 100644 --- a/packages/app-desktop/package.json +++ b/packages/app-desktop/package.json @@ -146,7 +146,7 @@ "@sentry/electron": "4.24.0", "@testing-library/react-hooks": "8.0.1", "@types/jest": "29.5.14", - "@types/mustache": "4.2.5", + "@types/mustache": "4.2.6", "@types/node": "18.19.87", "@types/react": "18.3.20", "@types/react-dom": "18.3.7", diff --git a/packages/lib/package.json b/packages/lib/package.json index 0a0a725b36..be547e8fca 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -24,7 +24,7 @@ "@types/js-yaml": "4.0.9", "@types/jsdom": "21.1.7", "@types/markdown-it": "13.0.9", - "@types/mustache": "4.2.5", + "@types/mustache": "4.2.6", "@types/node": "18.19.87", "@types/node-rsa": "1.1.4", "@types/react": "18.3.20", diff --git a/packages/server/package.json b/packages/server/package.json index c412191aca..64ddc66f2a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -72,7 +72,7 @@ "@types/jsdom": "21.1.7", "@types/koa": "2.15.0", "@types/markdown-it": "13.0.9", - "@types/mustache": "4.2.5", + "@types/mustache": "4.2.6", "@types/node-os-utils": "1.3.4", "@types/nodemailer": "6.4.17", "@types/yargs": "17.0.33", diff --git a/packages/tools/package.json b/packages/tools/package.json index f41d4ef2c1..5c7770abaa 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -51,7 +51,7 @@ "@types/jest": "29.5.14", "@types/js-yaml": "4.0.9", "@types/markdown-it": "13.0.9", - "@types/mustache": "4.2.5", + "@types/mustache": "4.2.6", "@types/node": "18.19.87", "@types/node-fetch": "2.6.12", "@types/yargs": "17.0.33", diff --git a/yarn.lock b/yarn.lock index 363220abe7..6ea2fdd747 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8960,7 +8960,7 @@ __metadata: "@sentry/electron": "npm:4.24.0" "@testing-library/react-hooks": "npm:8.0.1" "@types/jest": "npm:29.5.14" - "@types/mustache": "npm:4.2.5" + "@types/mustache": "npm:4.2.6" "@types/node": "npm:18.19.87" "@types/react": "npm:18.3.20" "@types/react-dom": "npm:18.3.7" @@ -9317,7 +9317,7 @@ __metadata: "@types/js-yaml": "npm:4.0.9" "@types/jsdom": "npm:21.1.7" "@types/markdown-it": "npm:13.0.9" - "@types/mustache": "npm:4.2.5" + "@types/mustache": "npm:4.2.6" "@types/nanoid": "npm:3.0.0" "@types/node": "npm:18.19.87" "@types/node-rsa": "npm:1.1.4" @@ -9540,7 +9540,7 @@ __metadata: "@types/jsdom": "npm:21.1.7" "@types/koa": "npm:2.15.0" "@types/markdown-it": "npm:13.0.9" - "@types/mustache": "npm:4.2.5" + "@types/mustache": "npm:4.2.6" "@types/node-os-utils": "npm:1.3.4" "@types/nodemailer": "npm:6.4.17" "@types/uuid": "npm:10.0.0" @@ -9600,7 +9600,7 @@ __metadata: "@types/jest": "npm:29.5.14" "@types/js-yaml": "npm:4.0.9" "@types/markdown-it": "npm:13.0.9" - "@types/mustache": "npm:4.2.5" + "@types/mustache": "npm:4.2.6" "@types/node": "npm:18.19.87" "@types/node-fetch": "npm:2.6.12" "@types/yargs": "npm:17.0.33" @@ -14382,10 +14382,10 @@ __metadata: languageName: node linkType: hard -"@types/mustache@npm:4.2.5": - version: 4.2.5 - resolution: "@types/mustache@npm:4.2.5" - checksum: 10/29581027fe420120ae0591e28d44209d0e01adf5175910d03401327777ee9c649a1508e2aa63147c782c7e53fcea4b69b5f9a2fbedcadc5500561d1161ae5ded +"@types/mustache@npm:4.2.6": + version: 4.2.6 + resolution: "@types/mustache@npm:4.2.6" + checksum: 10/56a9b979a9984d4f8b370ccdf04b54ae07f055b9e7326a526cf86b2fac73b04576cc71c83edaceaaf80038817520cbe2405f73623200a8ce03dcdd1e578e5016 languageName: node linkType: hard