From e3e4aebc679585edc52d4c46016c3ac6a665a03f Mon Sep 17 00:00:00 2001 From: Henry Heino <46334387+personalizedrefrigerator@users.noreply.github.com> Date: Sun, 6 Sep 2026 12:12:25 -0700 Subject: [PATCH 1/6] Web: Fixes #16379: Fix menu animation in Safari (#16404) --- packages/app-mobile/components/Modal.tsx | 3 +++ packages/lib/components/Dialog.tsx | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/app-mobile/components/Modal.tsx b/packages/app-mobile/components/Modal.tsx index 51a356d34c..84d7b74b30 100644 --- a/packages/app-mobile/components/Modal.tsx +++ b/packages/app-mobile/components/Modal.tsx @@ -240,6 +240,9 @@ const ModalComponent = Platform.OS === 'web' ? (props: ModalElementProps) => { open={props.visible} onCancel={props.onClose} onShow={props.onShow} + // 2026-09-03: Work around dialog display issues on Safari by autofocusing + // the root dialog element. + onBeforeShow={dialog => dialog.setAttribute('autofocus', 'true')} preventAutoCloseOnCancel={true} > {props.children} diff --git a/packages/lib/components/Dialog.tsx b/packages/lib/components/Dialog.tsx index af52a3e87b..82f0e1d278 100644 --- a/packages/lib/components/Dialog.tsx +++ b/packages/lib/components/Dialog.tsx @@ -8,11 +8,13 @@ const { useEffect, useRef, useState } = shim.react(); type OnCancelListener = ()=> void; type OnShowListener = ()=> void; +type OnBeforeShowListener = (dialog: HTMLDialogElement)=> void; interface Props { className?: string; onCancel?: OnCancelListener; onShow?: OnShowListener; + onBeforeShow?: OnBeforeShowListener; contentStyle?: CSSProperties; open?: boolean; preventAutoCloseOnCancel?: boolean; @@ -38,17 +40,21 @@ const Dialog: FC = props => { const [contentRendered, setContentRendered] = useState(false); + const propsRef = useRef(props); + propsRef.current = props; + useEffect(() => { if (!dialogElement || !contentRendered) return; const open = props.open ?? true; if (!dialogElement.open && open) { + propsRef.current.onBeforeShow?.(dialogElement); dialogElement.showModal(); - props.onShow?.(); + propsRef.current.onShow?.(); } else if (dialogElement.open && !open) { dialogElement.close(); } - }, [dialogElement, contentRendered, props.open, props.onShow]); + }, [dialogElement, contentRendered, props.open]); useEffect(() => { if (!dialogElement) return; From a263733971e141ef48db68fe950203ca98536e84 Mon Sep 17 00:00:00 2001 From: Henry Heino <46334387+personalizedrefrigerator@users.noreply.github.com> Date: Sun, 6 Sep 2026 12:12:36 -0700 Subject: [PATCH 2/6] Web: Fix incorrect "Only one copy of Joplin can be open at a time" warning in Safari and Firefox (#16405) --- packages/app-mobile/web/public/info-page.css | 8 +++ .../web/public/just-one-client.html | 72 ++++++++++++++----- 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/packages/app-mobile/web/public/info-page.css b/packages/app-mobile/web/public/info-page.css index 59acc6b1ce..993b33734b 100644 --- a/packages/app-mobile/web/public/info-page.css +++ b/packages/app-mobile/web/public/info-page.css @@ -23,6 +23,14 @@ main { margin-right: auto; } +main.-loading > #only-one-copy-message { + display: none; +} + +main:not(.-loading) > #loading-message { + display: none; +} + @media screen and (prefers-color-scheme: dark) { :root { --bg-secondary: black; diff --git a/packages/app-mobile/web/public/just-one-client.html b/packages/app-mobile/web/public/just-one-client.html index dc0f23a9f0..c23fffaf62 100644 --- a/packages/app-mobile/web/public/just-one-client.html +++ b/packages/app-mobile/web/public/just-one-client.html @@ -11,30 +11,64 @@ -
-

⚠️ Error: Only one copy of Joplin can be open at a time ⚠️

-

- At present, the Joplin web client only supports one open copy at a time in the same browser. This restriction is present to keep your data safe. -

-

- To use Joplin in this tab, please , - then this page. -

+
+
+

⚠️ Error: Only one copy of Joplin can be open at a time ⚠️

+

+ At present, the Joplin web client only supports one open copy at a time in the same browser. This restriction is present to keep your data safe. +

+

+ To use Joplin in this tab, please , + then this page. +

+
+
+

Loading...

+
\ No newline at end of file From 63e1f216e11b46dae70434c4208b0109a203271f Mon Sep 17 00:00:00 2001 From: Henry Heino <46334387+personalizedrefrigerator@users.noreply.github.com> Date: Sun, 6 Sep 2026 12:13:05 -0700 Subject: [PATCH 3/6] Desktop, Mobile: Fixes #16407: Fix keyboard navigation issues related to level-1 headings (#16409) --- packages/editor/CodeMirror/theme.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/editor/CodeMirror/theme.ts b/packages/editor/CodeMirror/theme.ts index f4956cf86b..86d01ea948 100644 --- a/packages/editor/CodeMirror/theme.ts +++ b/packages/editor/CodeMirror/theme.ts @@ -200,8 +200,14 @@ const createTheme = (theme: EditorTheme): Extension[] => { }, // Only underline level 1 headings not in block quotes. The underline overlaps with the blockquote border. '& .cm-h1:not(.cm-blockQuote)': { - borderBottom: `1px solid ${theme.dividerColor}`, - marginBottom: '0.1em', + // Use a background image in place of a solid border with a margin. + // Margins between lines aren't supported in CodeMirror and can break selection. + // See https://discuss.codemirror.net/t/css-causing-inability-to-click-on-a-line/8919/5, https://github.com/laurent22/joplin/issues/16407 + paddingBottom: '0.3em', + backgroundPositionY: 'bottom 0.1em', + backgroundSize: '100% 1px', + backgroundRepeat: 'no-repeat', + backgroundImage: `linear-gradient(${theme.dividerColor})`, }, '& .cm-h2': { ...baseHeadingStyle, From c17c205049ce74e449dc1ce08cbd1c875410d7d5 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 7 Sep 2026 10:19:13 +0100 Subject: [PATCH 4/6] Releasing sub-packages --- packages/fork-htmlparser2/package.json | 2 +- packages/fork-sax/package.json | 2 +- packages/fork-uslug/package.json | 2 +- packages/htmlpack/package.json | 4 ++-- packages/lib/package.json | 20 ++++++++++---------- packages/onenote-converter/package.json | 2 +- packages/plugin-repo-cli/package.json | 8 ++++---- packages/react-native-saf-x/package.json | 2 +- packages/renderer/package.json | 8 ++++---- packages/tools/package.json | 10 +++++----- packages/turndown-plugin-gfm/package.json | 2 +- packages/turndown/package.json | 2 +- packages/utils/package.json | 4 ++-- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/fork-htmlparser2/package.json b/packages/fork-htmlparser2/package.json index 5e7e72549f..dc0ac7a674 100644 --- a/packages/fork-htmlparser2/package.json +++ b/packages/fork-htmlparser2/package.json @@ -1,7 +1,7 @@ { "name": "@joplin/fork-htmlparser2", "description": "Fast & forgiving HTML/XML/RSS parser", - "version": "4.1.63", + "version": "4.1.64", "author": "Felix Boehm ", "publishConfig": { "access": "public" diff --git a/packages/fork-sax/package.json b/packages/fork-sax/package.json index 3920e0619a..150b1f843a 100644 --- a/packages/fork-sax/package.json +++ b/packages/fork-sax/package.json @@ -2,7 +2,7 @@ "name": "@joplin/fork-sax", "description": "An evented streaming XML parser in JavaScript", "author": "Isaac Z. Schlueter (http://blog.izs.me/)", - "version": "1.2.67", + "version": "1.2.68", "main": "lib/sax.js", "publishConfig": { "access": "public" diff --git a/packages/fork-uslug/package.json b/packages/fork-uslug/package.json index fe65e09804..7791d471a7 100644 --- a/packages/fork-uslug/package.json +++ b/packages/fork-uslug/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/fork-uslug", - "version": "2.0.6", + "version": "2.0.7", "description": "A permissive slug generator that works with unicode.", "author": "Jeremy Selier ", "publishConfig": { diff --git a/packages/htmlpack/package.json b/packages/htmlpack/package.json index f3b7f255f2..75bb6e7ce2 100644 --- a/packages/htmlpack/package.json +++ b/packages/htmlpack/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/htmlpack", - "version": "3.7.0", + "version": "3.7.1", "description": "Pack an HTML file and all its linked resources into a single HTML file", "main": "dist/index.js", "types": "index.ts", @@ -30,7 +30,7 @@ "license": "MIT", "dependencies": { "@adobe/css-tools": "4.4.4", - "@joplin/fork-htmlparser2": "^4.1.63", + "@joplin/fork-htmlparser2": "^4.1.64", "datauri": "4.1.0", "fs-extra": "11.3.5", "html-entities": "1.4.0" diff --git a/packages/lib/package.json b/packages/lib/package.json index 9dd4f10c88..d8c3569d32 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/lib", - "version": "3.7.0", + "version": "3.7.1", "description": "Joplin Core library", "author": "Laurent Cozic", "homepage": "", @@ -49,15 +49,15 @@ "@adobe/css-tools": "4.4.4", "@aws-sdk/client-s3": "3.296.0", "@aws-sdk/s3-request-presigner": "3.296.0", - "@joplin/fork-htmlparser2": "^4.1.63", - "@joplin/fork-sax": "^1.2.67", - "@joplin/fork-uslug": "^2.0.6", - "@joplin/htmlpack": "^3.7", - "@joplin/onenote-converter": "^3.7", - "@joplin/renderer": "^3.7", - "@joplin/turndown": "^4.0.85", - "@joplin/turndown-plugin-gfm": "^1.0.67", - "@joplin/utils": "^3.7", + "@joplin/fork-htmlparser2": "^4.1.64", + "@joplin/fork-sax": "^1.2.68", + "@joplin/fork-uslug": "^2.0.7", + "@joplin/htmlpack": "^3.7.1", + "@joplin/onenote-converter": "^3.7.1", + "@joplin/renderer": "^3.7.1", + "@joplin/turndown": "^4.0.86", + "@joplin/turndown-plugin-gfm": "^1.0.68", + "@joplin/utils": "^3.7.1", "adm-zip": "0.5.17", "async-mutex": "0.5.0", "base-64": "1.0.0", diff --git a/packages/onenote-converter/package.json b/packages/onenote-converter/package.json index 5cc1ab0cd8..f936d7e80e 100644 --- a/packages/onenote-converter/package.json +++ b/packages/onenote-converter/package.json @@ -4,7 +4,7 @@ "access": "public" }, "description": "Used to import a OneNote archive into Joplin", - "version": "3.7.0", + "version": "3.7.1", "license": "MPL-2.0-no-copyleft-exception", "repository": "https://github.com/laurent22/joplin/tree/dev/packages/onenote-converter", "main": "./renderer/pkg/renderer.js", diff --git a/packages/plugin-repo-cli/package.json b/packages/plugin-repo-cli/package.json index c4e5e3e3d8..38d66ddcc3 100644 --- a/packages/plugin-repo-cli/package.json +++ b/packages/plugin-repo-cli/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/plugin-repo-cli", - "version": "3.7.3", + "version": "3.7.4", "description": "", "main": "./dist/index.js", "bin": "./dist/index.js", @@ -25,9 +25,9 @@ "yargs": "17.7.2" }, "devDependencies": { - "@joplin/lib": "~3.7", - "@joplin/tools": "~3.7", - "@joplin/utils": "~3.7", + "@joplin/lib": "^3.7.1", + "@joplin/tools": "^3.7.1", + "@joplin/utils": "^3.7.1", "@types/fs-extra": "11.0.4", "@types/jest": "29.5.14", "@types/node": "18.19.130", diff --git a/packages/react-native-saf-x/package.json b/packages/react-native-saf-x/package.json index 7b6d54c40d..b31a9c1063 100644 --- a/packages/react-native-saf-x/package.json +++ b/packages/react-native-saf-x/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/react-native-saf-x", - "version": "3.7.0", + "version": "3.7.1", "description": "a module to help work with scoped storages on android easily", "main": "src/index", "react-native": "src/index", diff --git a/packages/renderer/package.json b/packages/renderer/package.json index 4ed2c06260..af0e7ac810 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/renderer", - "version": "3.7.0", + "version": "3.7.1", "description": "The Joplin note renderer, used the mobile and desktop application", "repository": "https://github.com/laurent22/joplin/tree/dev/packages/renderer", "main": "index.js", @@ -30,9 +30,9 @@ "typescript": "5.9.3" }, "dependencies": { - "@joplin/fork-htmlparser2": "^4.1.63", - "@joplin/fork-uslug": "^2.0.6", - "@joplin/utils": "~3.7", + "@joplin/fork-htmlparser2": "^4.1.64", + "@joplin/fork-uslug": "^2.0.7", + "@joplin/utils": "^3.7.1", "@types/json5": "2.2.0", "abcjs": "6.6.3", "font-awesome-filetypes": "2.1.0", diff --git a/packages/tools/package.json b/packages/tools/package.json index 7462225e61..5caf795abd 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/tools", - "version": "3.7.0", + "version": "3.7.1", "description": "Various tools for Joplin", "main": "index.js", "author": "Laurent Cozic", @@ -21,9 +21,9 @@ }, "license": "AGPL-3.0-or-later", "dependencies": { - "@joplin/lib": "~3.7", - "@joplin/renderer": "~3.7", - "@joplin/utils": "~3.7", + "@joplin/lib": "^3.7.1", + "@joplin/renderer": "^3.7.1", + "@joplin/utils": "^3.7.1", "compare-versions": "6.1.1", "dayjs": "1.11.21", "execa": "4.1.0", @@ -45,7 +45,7 @@ }, "devDependencies": { "@docusaurus/plugin-sitemap": "3.10.1", - "@joplin/fork-htmlparser2": "^4.1.63", + "@joplin/fork-htmlparser2": "^4.1.64", "@rmp135/sql-ts": "1.18.1", "@types/fs-extra": "11.0.4", "@types/jest": "29.5.14", diff --git a/packages/turndown-plugin-gfm/package.json b/packages/turndown-plugin-gfm/package.json index 4aab0b4163..b2819636cc 100644 --- a/packages/turndown-plugin-gfm/package.json +++ b/packages/turndown-plugin-gfm/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "1.0.67", + "version": "1.0.68", "author": "Dom Christie", "main": "lib/turndown-plugin-gfm.cjs.js", "devDependencies": { diff --git a/packages/turndown/package.json b/packages/turndown/package.json index e567844420..ab9a53b8d1 100644 --- a/packages/turndown/package.json +++ b/packages/turndown/package.json @@ -1,7 +1,7 @@ { "name": "@joplin/turndown", "description": "A library that converts HTML to Markdown", - "version": "4.0.85", + "version": "4.0.86", "author": "Dom Christie", "main": "lib/turndown.cjs.js", "publishConfig": { diff --git a/packages/utils/package.json b/packages/utils/package.json index c8443987aa..c57a2381c2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@joplin/utils", - "version": "3.7.0", + "version": "3.7.1", "description": "Utilities for Joplin", "repository": "https://github.com/laurent22/joplin/tree/dev/packages/utils", "exports": { @@ -90,7 +90,7 @@ "author": "", "license": "AGPL-3.0-or-later", "dependencies": { - "@joplin/fork-htmlparser2": "^4.1.63", + "@joplin/fork-htmlparser2": "^4.1.64", "async-mutex": "0.5.0", "dayjs": "1.11.21", "execa": "5.1.1", From de139fc9c1f79edd3653f6abb93bf9fe5e124005 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 7 Sep 2026 10:19:42 +0100 Subject: [PATCH 5/6] Lock file --- yarn.lock | 64 +++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9bd874ee01..c5b7a124dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12795,7 +12795,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/fork-htmlparser2@npm:^4.1.63, @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2": +"@joplin/fork-htmlparser2@npm:^4.1.64, @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2": version: 0.0.0-use.local resolution: "@joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2" dependencies: @@ -12816,7 +12816,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/fork-sax@npm:^1.2.67, @joplin/fork-sax@workspace:packages/fork-sax": +"@joplin/fork-sax@npm:^1.2.68, @joplin/fork-sax@workspace:packages/fork-sax": version: 0.0.0-use.local resolution: "@joplin/fork-sax@workspace:packages/fork-sax" dependencies: @@ -12825,7 +12825,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/fork-uslug@npm:^2.0.0, @joplin/fork-uslug@npm:^2.0.6, @joplin/fork-uslug@workspace:packages/fork-uslug": +"@joplin/fork-uslug@npm:^2.0.0, @joplin/fork-uslug@npm:^2.0.7, @joplin/fork-uslug@workspace:packages/fork-uslug": version: 0.0.0-use.local resolution: "@joplin/fork-uslug@workspace:packages/fork-uslug" dependencies: @@ -12837,12 +12837,12 @@ __metadata: languageName: unknown linkType: soft -"@joplin/htmlpack@npm:^3.7, @joplin/htmlpack@workspace:packages/htmlpack": +"@joplin/htmlpack@npm:^3.7.1, @joplin/htmlpack@workspace:packages/htmlpack": version: 0.0.0-use.local resolution: "@joplin/htmlpack@workspace:packages/htmlpack" dependencies: "@adobe/css-tools": "npm:4.4.4" - "@joplin/fork-htmlparser2": "npm:^4.1.63" + "@joplin/fork-htmlparser2": "npm:^4.1.64" "@types/fs-extra": "npm:11.0.4" "@types/jest": "npm:29.5.14" datauri: "npm:4.1.0" @@ -12853,7 +12853,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/lib@npm:~3.7, @joplin/lib@workspace:packages/lib": +"@joplin/lib@npm:^3.7.1, @joplin/lib@npm:~3.7, @joplin/lib@workspace:packages/lib": version: 0.0.0-use.local resolution: "@joplin/lib@workspace:packages/lib" dependencies: @@ -12861,15 +12861,15 @@ __metadata: "@aws-sdk/client-s3": "npm:3.296.0" "@aws-sdk/s3-request-presigner": "npm:3.296.0" "@huggingface/transformers": "npm:4.2.0" - "@joplin/fork-htmlparser2": "npm:^4.1.63" - "@joplin/fork-sax": "npm:^1.2.67" - "@joplin/fork-uslug": "npm:^2.0.6" - "@joplin/htmlpack": "npm:^3.7" - "@joplin/onenote-converter": "npm:^3.7" - "@joplin/renderer": "npm:^3.7" - "@joplin/turndown": "npm:^4.0.85" - "@joplin/turndown-plugin-gfm": "npm:^1.0.67" - "@joplin/utils": "npm:^3.7" + "@joplin/fork-htmlparser2": "npm:^4.1.64" + "@joplin/fork-sax": "npm:^1.2.68" + "@joplin/fork-uslug": "npm:^2.0.7" + "@joplin/htmlpack": "npm:^3.7.1" + "@joplin/onenote-converter": "npm:^3.7.1" + "@joplin/renderer": "npm:^3.7.1" + "@joplin/turndown": "npm:^4.0.86" + "@joplin/turndown-plugin-gfm": "npm:^1.0.68" + "@joplin/utils": "npm:^3.7.1" "@testing-library/dom": "npm:10.4.1" "@testing-library/react": "npm:16.3.2" "@types/adm-zip": "npm:0.5.8" @@ -12951,7 +12951,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/onenote-converter@npm:^3.7, @joplin/onenote-converter@npm:~3.7, @joplin/onenote-converter@workspace:packages/onenote-converter": +"@joplin/onenote-converter@npm:^3.7.1, @joplin/onenote-converter@npm:~3.7, @joplin/onenote-converter@workspace:packages/onenote-converter": version: 0.0.0-use.local resolution: "@joplin/onenote-converter@workspace:packages/onenote-converter" dependencies: @@ -12995,9 +12995,9 @@ __metadata: version: 0.0.0-use.local resolution: "@joplin/plugin-repo-cli@workspace:packages/plugin-repo-cli" dependencies: - "@joplin/lib": "npm:~3.7" - "@joplin/tools": "npm:~3.7" - "@joplin/utils": "npm:~3.7" + "@joplin/lib": "npm:^3.7.1" + "@joplin/tools": "npm:^3.7.1" + "@joplin/utils": "npm:^3.7.1" "@types/fs-extra": "npm:11.0.4" "@types/jest": "npm:29.5.14" "@types/node": "npm:18.19.130" @@ -13045,13 +13045,13 @@ __metadata: languageName: unknown linkType: soft -"@joplin/renderer@npm:^3.7, @joplin/renderer@npm:~3.7, @joplin/renderer@workspace:packages/renderer": +"@joplin/renderer@npm:^3.7.1, @joplin/renderer@npm:~3.7, @joplin/renderer@workspace:packages/renderer": version: 0.0.0-use.local resolution: "@joplin/renderer@workspace:packages/renderer" dependencies: - "@joplin/fork-htmlparser2": "npm:^4.1.63" - "@joplin/fork-uslug": "npm:^2.0.6" - "@joplin/utils": "npm:~3.7" + "@joplin/fork-htmlparser2": "npm:^4.1.64" + "@joplin/fork-uslug": "npm:^2.0.7" + "@joplin/utils": "npm:^3.7.1" "@types/jest": "npm:29.5.14" "@types/json5": "npm:2.2.0" "@types/markdown-it": "npm:13.0.9" @@ -13155,15 +13155,15 @@ __metadata: languageName: unknown linkType: soft -"@joplin/tools@npm:~3.7, @joplin/tools@workspace:packages/tools": +"@joplin/tools@npm:^3.7.1, @joplin/tools@npm:~3.7, @joplin/tools@workspace:packages/tools": version: 0.0.0-use.local resolution: "@joplin/tools@workspace:packages/tools" dependencies: "@docusaurus/plugin-sitemap": "npm:3.10.1" - "@joplin/fork-htmlparser2": "npm:^4.1.63" - "@joplin/lib": "npm:~3.7" - "@joplin/renderer": "npm:~3.7" - "@joplin/utils": "npm:~3.7" + "@joplin/fork-htmlparser2": "npm:^4.1.64" + "@joplin/lib": "npm:^3.7.1" + "@joplin/renderer": "npm:^3.7.1" + "@joplin/utils": "npm:^3.7.1" "@rmp135/sql-ts": "npm:1.18.1" "@types/fs-extra": "npm:11.0.4" "@types/jest": "npm:29.5.14" @@ -13233,7 +13233,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/turndown-plugin-gfm@npm:^1.0.67, @joplin/turndown-plugin-gfm@npm:~1.0.62, @joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm": +"@joplin/turndown-plugin-gfm@npm:^1.0.68, @joplin/turndown-plugin-gfm@npm:~1.0.62, @joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm": version: 0.0.0-use.local resolution: "@joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm" dependencies: @@ -13245,7 +13245,7 @@ __metadata: languageName: unknown linkType: soft -"@joplin/turndown@npm:^4.0.85, @joplin/turndown@npm:~4.0.80, @joplin/turndown@workspace:packages/turndown": +"@joplin/turndown@npm:^4.0.86, @joplin/turndown@npm:~4.0.80, @joplin/turndown@workspace:packages/turndown": version: 0.0.0-use.local resolution: "@joplin/turndown@workspace:packages/turndown" dependencies: @@ -13262,11 +13262,11 @@ __metadata: languageName: unknown linkType: soft -"@joplin/utils@npm:^3.7, @joplin/utils@npm:~3.7, @joplin/utils@workspace:packages/utils": +"@joplin/utils@npm:^3.7.1, @joplin/utils@npm:~3.7, @joplin/utils@workspace:packages/utils": version: 0.0.0-use.local resolution: "@joplin/utils@workspace:packages/utils" dependencies: - "@joplin/fork-htmlparser2": "npm:^4.1.63" + "@joplin/fork-htmlparser2": "npm:^4.1.64" "@types/fs-extra": "npm:11.0.4" "@types/jest": "npm:29.5.14" "@types/markdown-it": "npm:13.0.9" From 425a05ac4b03ab84e038f67a6bcc029377d1b50e Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 7 Sep 2026 10:20:33 +0100 Subject: [PATCH 6/6] CLI v3.7.1 --- packages/app-cli/package.json | 2 +- readme/about/changelog/cli.md | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/packages/app-cli/package.json b/packages/app-cli/package.json index aeefe98ced..71aebfdcce 100644 --- a/packages/app-cli/package.json +++ b/packages/app-cli/package.json @@ -35,7 +35,7 @@ ], "owner": "Laurent Cozic" }, - "version": "3.7.0", + "version": "3.7.1", "bin": "./main.js", "engines": { "node": ">=10.0.0" diff --git a/readme/about/changelog/cli.md b/readme/about/changelog/cli.md index 9288c9da9b..5cb06c515c 100644 --- a/readme/about/changelog/cli.md +++ b/readme/about/changelog/cli.md @@ -1,5 +1,41 @@ # Joplin Terminal App Changelog +## [cli-v3.7.1](https://github.com/laurent22/joplin/releases/tag/cli-v3.7.1) - 2026-09-07T09:20:25Z + +- New: Add support for post-quantum cryptography (PQS) TLS (#15055 by Alex Martens) +- Improved: Add fail-closed guardrails for locked notes (#16098) (#16054 by [@keshav0479](https://github.com/keshav0479)) +- Improved: Add local note encryption schema metadata (#15557) (#15556 by [@keshav0479](https://github.com/keshav0479)) +- Improved: Add migration 51 for conflict resolution columns (#15565) (#15549 by Sriram Varun Kumar) +- Improved: Add support to import notes from Obsidian (#16136) (#15223 by [@Rygaa](https://github.com/Rygaa)) +- Improved: Do not load plugin if it is disabled (#15083) +- Improved: Exclude user_data from note revisions (#15245 by [@alondmnt](https://github.com/alondmnt)) +- Improved: Give conflict_note_states table a numeric primary key and set note_id as unique (#15724) (#15722 by Sriram Varun Kumar) +- Improved: Improve how resource filenames are determined (#15672 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Improved: Index locked note resources (#15717) (#15714 by [@keshav0479](https://github.com/keshav0479)) +- Improved: Joplin Server/Cloud sync: Improve item deletion performance (#15392 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Improved: Preserve customised note history settings when syncing across clients (#15728) +- Improved: Prevent notes with null bytes in title or body from being saved (#15485) +- Improved: Prevent race which allows changes to be lost, during a long delta step (#16208 by [@mrjo118](https://github.com/mrjo118)) +- Improved: Reject malformed item IDs during sync (#15540) +- Improved: Support syncing with Joplin v3.7 (#15889) (#15753 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Improved: Sync: Enable new notebook sharing key format (#16305) (#16251 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Improved: Update note lock session state (#15773) (#15772 by [@keshav0479](https://github.com/keshav0479)) +- Fixed: Add safeguard to prevent revision chains being broken by revision cleaning, where old revisions still exist unexpectedly (#15812) (#15811 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix Markdown export folder paths with dot in parent path (#15455) (#15374 by [@Rygaa](https://github.com/Rygaa)) +- Fixed: Fix WebDAV support for Koofr (#15983) (#15975 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix `version` command when published to NPM (#15740) (#15738 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) +- Fixed: Fix duplicate tag creation for special unicode characters (#15613) (#15608 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix inability to cancel the sync during the deletion step (#15243 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix note screen is not properly refreshed when updated by the sync, when E2EE is enabled (#16179 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix potential unresolved promise race conditions when scheduling the sync (#15216 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fix silent sync failure which prevents new changes being synced, when a single server object has an updated_time in the future (#15262 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Fixed crash when the profile database is updated (d85f430) +- Fixed: Importing from OneNote: Notebooks can be imported as subfolders of the trash (#15555) (#15217 by [@Rygaa](https://github.com/Rygaa)) +- Fixed: Prevent incrementing the master key updated_time when the key has not actually changed (#16223) (#16194 by [@mrjo118](https://github.com/mrjo118)) +- Fixed: Release the save mutex when a save fails validation (#16147) (#16145 by [@keshav0479](https://github.com/keshav0479)) +- Fixed: Revert PR #14612 (#15384) (#15382) +- Fixed: Support unpublishing notes published by other users (#16246) (#16153 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator)) + ## [cli-v3.6.2](https://github.com/laurent22/joplin/releases/tag/cli-v3.6.2) - 2026-05-08T16:56:16Z - New: Add `clear` command to clear console output (#14844 by [@querysmith-sys](https://github.com/querysmith-sys))