From 230b3207a5121044def5355a0c3a096e12129cbf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:41:03 +0000 Subject: [PATCH 1/9] chore(deps): update dependency @lezer/common to v1.5.2 --- package.json | 2 +- pnpm-lock.yaml | 58 +++++++++++++++++++++++++------------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 42bddfec5c..636965e0c0 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "overrides": { "@codemirror/language": "6.12.3", "@lezer/highlight": "1.2.3", - "@lezer/common": "1.5.1", + "@lezer/common": "1.5.2", "mermaid": "11.14.0", "preact": "10.29.1", "roughjs": "4.6.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..ad9edb81a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: overrides: '@codemirror/language': 6.12.3 '@lezer/highlight': 1.2.3 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 mermaid: 11.14.0 preact: 10.29.1 roughjs: 4.6.6 @@ -1330,7 +1330,7 @@ importers: version: 6.5.3(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0) '@replit/codemirror-lang-nix': specifier: 6.0.1 - version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.1)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2) + version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.2)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2) '@replit/codemirror-vim': specifier: 6.3.0 version: 6.3.0(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/search@6.6.0)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0) @@ -3615,8 +3615,8 @@ packages: '@keyv/serialize@1.1.1': resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@lezer/common@1.5.1': - resolution: {integrity: sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==} + '@lezer/common@1.5.2': + resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==} '@lezer/css@1.1.11': resolution: {integrity: sha512-FuAnusbLBl1SEAtfN8NdShxYJiESKw9LAFysfea1T96jD3ydBn12oYjaSG1a04BQRIUd93/0D8e5CV1cUMkmQg==} @@ -4819,7 +4819,7 @@ packages: '@codemirror/language': 6.12.3 '@codemirror/state': ^6.0.0 '@codemirror/view': ^6.0.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': ^1.0.0 @@ -15300,28 +15300,28 @@ snapshots: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@codemirror/commands@6.10.3': dependencies: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@codemirror/lang-css@6.3.1': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/css': 1.1.11 '@codemirror/lang-html@6.4.11': @@ -15332,7 +15332,7 @@ snapshots: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/css': 1.1.11 '@lezer/html': 1.3.12 @@ -15343,7 +15343,7 @@ snapshots: '@codemirror/lint': 6.8.5 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/javascript': 1.5.1 '@codemirror/lang-json@6.0.2': @@ -15358,7 +15358,7 @@ snapshots: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/markdown': 1.4.3 '@codemirror/lang-markdown@6.5.0': @@ -15368,7 +15368,7 @@ snapshots: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/markdown': 1.4.3 '@codemirror/lang-php@6.0.2': @@ -15376,7 +15376,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/php': 1.0.2 '@codemirror/lang-vue@0.1.3': @@ -15384,7 +15384,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.5 '@codemirror/language': 6.12.3 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 @@ -15394,14 +15394,14 @@ snapshots: '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/xml': 1.0.6 '@codemirror/language@6.12.3': dependencies: '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 style-mod: 4.1.2 @@ -17125,54 +17125,54 @@ snapshots: '@keyv/serialize@1.1.1': {} - '@lezer/common@1.5.1': {} + '@lezer/common@1.5.2': {} '@lezer/css@1.1.11': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 '@lezer/highlight@1.2.3': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/html@1.3.12': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 '@lezer/javascript@1.5.1': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 '@lezer/json@1.0.3': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 '@lezer/lr@1.4.2': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/markdown@1.4.3': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/php@1.0.2': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 '@lezer/xml@1.0.6': dependencies: - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 @@ -18423,13 +18423,13 @@ snapshots: '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.1)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.41.0)(@lezer/common@1.5.2)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.2)': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.12.3 '@codemirror/state': 6.6.0 '@codemirror/view': 6.41.0 - '@lezer/common': 1.5.1 + '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.2 From cee1be11ab0ac1ef8c83e35d4dc5df19483370f2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:42:06 +0000 Subject: [PATCH 2/9] fix(deps): update dependency ai to v6.0.154 --- apps/server/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index 5ac26c539a..0d6105429c 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -34,7 +34,7 @@ "@ai-sdk/google": "3.0.60", "@ai-sdk/openai": "3.0.52", "@modelcontextprotocol/sdk": "^1.12.1", - "ai": "6.0.153", + "ai": "6.0.154", "better-sqlite3": "12.8.0", "html-to-text": "9.0.5", "js-yaml": "4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..1df3ff2451 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -581,8 +581,8 @@ importers: specifier: ^1.12.1 version: 1.29.0(zod@4.3.6) ai: - specifier: 6.0.153 - version: 6.0.153(zod@4.3.6) + specifier: 6.0.154 + version: 6.0.154(zod@4.3.6) better-sqlite3: specifier: 12.8.0 version: 12.8.0 @@ -1479,8 +1479,8 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@3.0.93': - resolution: {integrity: sha512-8D6C9eEvDq6IgrdlWzpbniahDkoLiieTCrpzH8p/Hw63/0iPnZJ1uZcqxHrDIVDW/+aaGhBXqmx5C7HSd2eMmQ==} + '@ai-sdk/gateway@3.0.94': + resolution: {integrity: sha512-uDDwLZhCkvC89crVS3S90D5L7AcVN8WriGuYVNYgVAaVcvy3Mthy3R9ICfzG75BObhz6pm2FWnhxDfNRK+t69Q==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -6615,8 +6615,8 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ai@6.0.153: - resolution: {integrity: sha512-UlgBe4k0Ja1m1Eufn6FVSsHoF0sc7qwxX35ywJPDogIvBz0pHc+NOmCqiRY904DczNYIuwpZfKBLVz8HXgu3mg==} + ai@6.0.154: + resolution: {integrity: sha512-HfKJKCTJsDZxqrIUDSVnBQ7DpQlx5WI4ExqtLd7Bl70epLmvkpc/HYMzU1hP9W+g9VEAcvZo4fbMqc3v5D+9gQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -14062,7 +14062,7 @@ snapshots: '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/gateway@3.0.93(zod@4.3.6)': + '@ai-sdk/gateway@3.0.94(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) @@ -21252,9 +21252,9 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@6.0.153(zod@4.3.6): + ai@6.0.154(zod@4.3.6): dependencies: - '@ai-sdk/gateway': 3.0.93(zod@4.3.6) + '@ai-sdk/gateway': 3.0.94(zod@4.3.6) '@ai-sdk/provider': 3.0.8 '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) '@opentelemetry/api': 1.9.0 From d3e0c8d894402a5503f0ec426e9f23a141fcda5e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:43:10 +0000 Subject: [PATCH 3/9] fix(deps): update dependency i18next to v26.0.4 --- apps/client/package.json | 2 +- apps/server/package.json | 2 +- apps/website/package.json | 2 +- pnpm-lock.yaml | 26 +++++++++++++------------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 6cec31dbc1..3f727f3fd6 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -52,7 +52,7 @@ "dompurify": "3.3.3", "draggabilly": "3.0.0", "force-graph": "1.51.2", - "i18next": "26.0.3", + "i18next": "26.0.4", "i18next-http-backend": "3.0.4", "jquery": "4.0.0", "jquery.fancytree": "2.38.5", diff --git a/apps/server/package.json b/apps/server/package.json index 5ac26c539a..19859709c2 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -103,7 +103,7 @@ "html2plaintext": "2.1.4", "http-proxy-agent": "9.0.0", "https-proxy-agent": "9.0.0", - "i18next": "26.0.3", + "i18next": "26.0.4", "i18next-fs-backend": "2.6.3", "image-type": "6.1.0", "ini": "6.0.0", diff --git a/apps/website/package.json b/apps/website/package.json index d7e31961e7..0f603e930e 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -9,7 +9,7 @@ "preview": "pnpm build && vite preview" }, "dependencies": { - "i18next": "26.0.3", + "i18next": "26.0.4", "preact": "10.29.1", "preact-iso": "2.11.1", "preact-render-to-string": "6.6.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..b9b1e53d5a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -316,8 +316,8 @@ importers: specifier: 1.51.2 version: 1.51.2 i18next: - specifier: 26.0.3 - version: 26.0.3(typescript@6.0.2) + specifier: 26.0.4 + version: 26.0.4(typescript@6.0.2) i18next-http-backend: specifier: 3.0.4 version: 3.0.4(encoding@0.1.13) @@ -359,7 +359,7 @@ importers: version: 10.29.1 react-i18next: specifier: 17.0.2 - version: 17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + version: 17.0.2(i18next@26.0.4(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) react-window: specifier: 2.2.7 version: 2.2.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -783,8 +783,8 @@ importers: specifier: 9.0.0 version: 9.0.0 i18next: - specifier: 26.0.3 - version: 26.0.3(typescript@6.0.2) + specifier: 26.0.4 + version: 26.0.4(typescript@6.0.2) i18next-fs-backend: specifier: 2.6.3 version: 2.6.3 @@ -898,8 +898,8 @@ importers: apps/website: dependencies: i18next: - specifier: 26.0.3 - version: 26.0.3(typescript@6.0.2) + specifier: 26.0.4 + version: 26.0.4(typescript@6.0.2) preact: specifier: 10.29.1 version: 10.29.1 @@ -911,7 +911,7 @@ importers: version: 6.6.7(preact@10.29.1) react-i18next: specifier: 17.0.2 - version: 17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + version: 17.0.2(i18next@26.0.4(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) devDependencies: '@preact/preset-vite': specifier: 2.10.5 @@ -9325,8 +9325,8 @@ packages: i18next-http-backend@3.0.4: resolution: {integrity: sha512-udwrBIE6cNpqn1gRAqRULq3+7MzIIuaiKRWrz++dVz5SqWW2VwXmPJtAgkI0JtMLFaADC9qNmnZAxWAhsxXx2g==} - i18next@26.0.3: - resolution: {integrity: sha512-1571kXINxHKY7LksWp8wP+zP0YqHSSpl/OW0Y0owFEf2H3s8gCAffWaZivcz14rMkOvn3R/psiQxVsR9t2Nafg==} + i18next@26.0.4: + resolution: {integrity: sha512-gXF7U9bfioXPLv7mw8Qt2nfO7vij5MyINvPgVv99pX3fL1Y01pw2mKBFrlYpRxRCl2wz3ISenj6VsMJT2isfuA==} peerDependencies: typescript: ^5 || ^6 peerDependenciesMeta: @@ -24730,7 +24730,7 @@ snapshots: transitivePeerDependencies: - encoding - i18next@26.0.3(typescript@6.0.2): + i18next@26.0.4(typescript@6.0.2): dependencies: '@babel/runtime': 7.29.2 optionalDependencies: @@ -27368,11 +27368,11 @@ snapshots: react: 19.2.4 scheduler: 0.27.0 - react-i18next@17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2): + react-i18next@17.0.2(i18next@26.0.4(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2): dependencies: '@babel/runtime': 7.29.2 html-parse-stringify: 3.0.1 - i18next: 26.0.3(typescript@6.0.2) + i18next: 26.0.4(typescript@6.0.2) react: 19.2.4 use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: From 7984ada306eee8cffd6fe8c173c95a382ce363c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:44:11 +0000 Subject: [PATCH 4/9] chore(deps): update dependency @redocly/cli to v2.26.0 --- apps/build-docs/package.json | 2 +- pnpm-lock.yaml | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json index fc61700eac..3be2fb44ac 100644 --- a/apps/build-docs/package.json +++ b/apps/build-docs/package.json @@ -16,7 +16,7 @@ "license": "AGPL-3.0-only", "packageManager": "pnpm@10.33.0", "devDependencies": { - "@redocly/cli": "2.25.4", + "@redocly/cli": "2.26.0", "archiver": "7.0.1", "fs-extra": "11.3.4", "js-yaml": "4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..041927b23e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -187,8 +187,8 @@ importers: apps/build-docs: devDependencies: '@redocly/cli': - specifier: 2.25.4 - version: 2.25.4(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) + specifier: 2.26.0 + version: 2.26.0(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) archiver: specifier: 7.0.1 version: 7.0.1 @@ -4782,27 +4782,27 @@ packages: '@redocly/cli-otel@0.1.2': resolution: {integrity: sha512-Bg7BoO5t1x3lVK+KhA5aGPmeXpQmdf6WtTYHhelKJCsQ+tRMiJoFAQoKHoBHAoNxXrhlS3K9lKFLHGmtxsFQfA==} - '@redocly/cli@2.25.4': - resolution: {integrity: sha512-ypBv8ZhckTzcOfsFH2VILsLqk00bJ1tI0POtlaEf8z0rDsnmD8auUETkMzw8wlUB+aQM7+VSzpSsmcmqeSgzWQ==} + '@redocly/cli@2.26.0': + resolution: {integrity: sha512-24S1ls0qvu3uaPiW4OImy06CpImAkUOd3h7OG+Hq9By5pPavjOE34KtdQTaaFso3e1qgzXYdQh6HPqEY1nTZgA==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true '@redocly/config@0.22.2': resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} - '@redocly/config@0.46.0': - resolution: {integrity: sha512-FZEprNEkmLITKKdv5blIai1qiCcc4dn5+96AjWnmFQmH/oz/OyBiXBSi752/M+Wmype7aH2uRywSCuYlu4CgVA==} + '@redocly/config@0.46.1': + resolution: {integrity: sha512-dSdkB2wRLtvl3f7ayRu9vqVhUMjjRaxZlHgRbgOtPPXxn4uI/ciDO87h4CJb7Iet+OVpevpAU6gU8bo5qVbQxg==} '@redocly/openapi-core@1.34.5': resolution: {integrity: sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@redocly/openapi-core@2.25.4': - resolution: {integrity: sha512-zYdKQEsowPNtkTixrfbn5DySWBLQpTsISthVBBEPAa3OZC75UI76CbHXEamJ8Kmlead9IkD5RbgeJvxqJ5/H6Q==} + '@redocly/openapi-core@2.26.0': + resolution: {integrity: sha512-BjTPzSV1Gv430W9S/7i5T/dEZDK00GFk6ILCNTI+31pA9lEFJOXc0XRJT+V3v+m3nXIgGoo6GgqeLdAiM10rNg==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.25.4': - resolution: {integrity: sha512-0xMbcSft+9Q2sO1wSJMxo510Aqc/kGF/AmUK3OaLQvGvKUgOqq2Op/0aorNQJk6s8WBEH4UN4eFt7fUzUeXs8g==} + '@redocly/respect-core@2.26.0': + resolution: {integrity: sha512-mejFg26XNp8pqHwnL75QvI7MO4dhgFKa+v35OgOcVMrU9tGZ/VaFbplEyvdrRgjoonguXoLDoMN4Iw1rWlZg0g==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} '@replit/codemirror-indentation-markers@6.5.3': @@ -18329,15 +18329,15 @@ snapshots: dependencies: ulid: 2.4.0 - '@redocly/cli@2.25.4(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': + '@redocly/cli@2.26.0(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 '@redocly/cli-otel': 0.1.2 - '@redocly/openapi-core': 2.25.4 - '@redocly/respect-core': 2.25.4 + '@redocly/openapi-core': 2.26.0 + '@redocly/respect-core': 2.26.0 abort-controller: 3.0.0 ajv: '@redocly/ajv@8.18.0' ajv-formats: 3.0.1(@redocly/ajv@8.18.0) @@ -18371,7 +18371,7 @@ snapshots: '@redocly/config@0.22.2': {} - '@redocly/config@0.46.0': + '@redocly/config@0.46.1': dependencies: json-schema-to-ts: 2.7.2 @@ -18389,10 +18389,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@redocly/openapi-core@2.25.4': + '@redocly/openapi-core@2.26.0': dependencies: '@redocly/ajv': 8.18.0 - '@redocly/config': 0.46.0 + '@redocly/config': 0.46.1 ajv: '@redocly/ajv@8.18.0' ajv-formats: 3.0.1(@redocly/ajv@8.18.0) colorette: 1.4.0 @@ -18402,12 +18402,12 @@ snapshots: pluralize: 8.0.0 yaml-ast-parser: 0.0.43 - '@redocly/respect-core@2.25.4': + '@redocly/respect-core@2.26.0': dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.18.0 - '@redocly/openapi-core': 2.25.4 + '@redocly/openapi-core': 2.26.0 ajv: '@redocly/ajv@8.18.0' better-ajv-errors: 1.2.0(@redocly/ajv@8.18.0) colorette: 2.0.20 From 43823bcb37b3cf068899f4c6a2c4e27db10240e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:45:14 +0000 Subject: [PATCH 5/9] chore(deps): update dependency electron to v41.2.0 --- apps/desktop/package.json | 2 +- apps/edit-docs/package.json | 2 +- apps/server/package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++++++-------------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 9e58f88057..6cf9d329f9 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -44,7 +44,7 @@ "@triliumnext/server": "workspace:*", "@types/electron-squirrel-startup": "1.0.2", "copy-webpack-plugin": "14.0.0", - "electron": "41.1.1", + "electron": "41.2.0", "prebuild-install": "7.1.3" } } \ No newline at end of file diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index b8e4e8665b..1baff61814 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -12,7 +12,7 @@ "@triliumnext/desktop": "workspace:*", "@types/fs-extra": "11.0.4", "copy-webpack-plugin": "14.0.0", - "electron": "41.1.1", + "electron": "41.2.0", "fs-extra": "11.3.4" }, "scripts": { diff --git a/apps/server/package.json b/apps/server/package.json index 5ac26c539a..f4080ed3bd 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -88,7 +88,7 @@ "debounce": "3.0.0", "debug": "4.4.3", "ejs": "5.0.1", - "electron": "41.1.1", + "electron": "41.2.0", "electron-window-state": "5.0.3", "escape-html": "1.0.3", "express": "5.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..d3e5ede9c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -438,7 +438,7 @@ importers: dependencies: '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@41.1.1) + version: 2.1.3(electron@41.2.0) better-sqlite3: specifier: 12.8.0 version: 12.8.0 @@ -495,8 +495,8 @@ importers: specifier: 14.0.0 version: 14.0.0(webpack@5.105.4(esbuild@0.28.0)) electron: - specifier: 41.1.1 - version: 41.1.1 + specifier: 41.2.0 + version: 41.2.0 prebuild-install: specifier: 7.1.3 version: 7.1.3 @@ -551,8 +551,8 @@ importers: specifier: 14.0.0 version: 14.0.0(webpack@5.105.4(esbuild@0.28.0)) electron: - specifier: 41.1.1 - version: 41.1.1 + specifier: 41.2.0 + version: 41.2.0 fs-extra: specifier: 11.3.4 version: 11.3.4 @@ -607,7 +607,7 @@ importers: version: 7.1.2 '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@41.1.1) + version: 2.1.3(electron@41.2.0) '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -738,8 +738,8 @@ importers: specifier: 5.0.1 version: 5.0.1 electron: - specifier: 41.1.1 - version: 41.1.1 + specifier: 41.2.0 + version: 41.2.0 electron-window-state: specifier: 5.0.3 version: 5.0.3 @@ -8160,8 +8160,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@41.1.1: - resolution: {integrity: sha512-8bgvDhBjli+3Z2YCKgzzoBPh6391pr7Xv2h/tTJG4ETgvPvUxZomObbZLs31mUzYb6VrlcDDd9cyWyNKtPm3tA==} + electron@41.2.0: + resolution: {integrity: sha512-0OKLiymqfV0WK68RBXqAm3Myad2TpI5wwxLCBEUcH5Nugo3YfSk7p1Js/AL9266qTz5xZioUnxt9hG8FFwax0g==} engines: {node: '>= 12.20.55'} hasBin: true @@ -15916,9 +15916,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/remote@2.1.3(electron@41.1.1)': + '@electron/remote@2.1.3(electron@41.2.0)': dependencies: - electron: 41.1.1 + electron: 41.2.0 '@electron/universal@2.0.2': dependencies: @@ -23091,10 +23091,10 @@ snapshots: - supports-color optional: true - electron@41.1.1: + electron@41.2.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 24.12.0 + '@types/node': 24.12.2 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color From ceb955b72b1e6e5c800a5d78fee2d4ce6ce133f9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:46:12 +0000 Subject: [PATCH 6/9] fix(deps): update dependency @zumer/snapdom to v2.8.0 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 6cec31dbc1..35ef84e91b 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -42,7 +42,7 @@ "@univerjs/preset-sheets-note": "0.20.0", "@univerjs/preset-sheets-sort": "0.20.0", "@univerjs/presets": "0.20.0", - "@zumer/snapdom": "2.7.0", + "@zumer/snapdom": "2.8.0", "autocomplete.js": "0.38.1", "bootstrap": "5.3.8", "boxicons": "2.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..f47f60580c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -286,8 +286,8 @@ importers: specifier: 0.20.0 version: 0.20.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2) '@zumer/snapdom': - specifier: 2.7.0 - version: 2.7.0 + specifier: 2.8.0 + version: 2.8.0 autocomplete.js: specifier: 0.38.1 version: 0.38.1 @@ -6533,8 +6533,8 @@ packages: resolution: {integrity: sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} - '@zumer/snapdom@2.7.0': - resolution: {integrity: sha512-ZiELKzDszeFOazPQ/ExXzgtdoW9jADVjDjInr5XDAlVdCx0RbNsFiG7RLyM48XnA7EyCA9yTvmXSc3ElDrTRqA==} + '@zumer/snapdom@2.8.0': + resolution: {integrity: sha512-NhztgFDNfOkFt8Ox9PIJ1IwggyMui5UDazysOgZD7FSGL0G7H8U+J3ft0iecxAS8daj5aC62i3blaTk7s2GcpA==} abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -21189,7 +21189,7 @@ snapshots: '@zip.js/zip.js@2.8.11': {} - '@zumer/snapdom@2.7.0': {} + '@zumer/snapdom@2.8.0': {} abbrev@1.1.1: {} From ba816fc132a39f94b4f02bbdbc27140ca6c6b828 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 12 Apr 2026 09:37:53 +0300 Subject: [PATCH 7/9] Revert "Update dependency minimatch@3>brace-expansion to v5" --- package.json | 2 +- pnpm-lock.yaml | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 42bddfec5c..3e63024f21 100644 --- a/package.json +++ b/package.json @@ -157,7 +157,7 @@ "handlebars@<4.7.9": ">=4.7.9", "qs@<6.14.2": ">=6.14.2", "minimatch@<3.1.4": "^3.1.4", - "minimatch@3>brace-expansion": "^5.0.0", + "minimatch@3>brace-expansion": "^1.1.13", "serialize-javascript@<7.0.5": ">=7.0.5", "webpack@<5.104.1": ">=5.104.1", "file-type@>=13.0.0 <21.3.1": ">=21.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65f2c96e4..99f9a2e3a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,7 +61,7 @@ overrides: handlebars@<4.7.9: '>=4.7.9' qs@<6.14.2: '>=6.14.2' minimatch@<3.1.4: ^3.1.4 - minimatch@3>brace-expansion: ^5.0.0 + minimatch@3>brace-expansion: ^1.1.13 serialize-javascript@<7.0.5: '>=7.0.5' webpack@<5.104.1: '>=5.104.1' file-type@>=13.0.0 <21.3.1: '>=21.3.1' @@ -6855,6 +6855,9 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.3: resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} engines: {node: 20 || >=22} @@ -6984,6 +6987,9 @@ packages: bplist-creator@0.0.8: resolution: {integrity: sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} + brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} @@ -7452,6 +7458,9 @@ packages: resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} @@ -21527,6 +21536,8 @@ snapshots: bail@2.0.2: {} + balanced-match@1.0.2: {} + balanced-match@4.0.3: {} bare-events@2.7.0: {} @@ -21667,6 +21678,11 @@ snapshots: stream-buffers: 2.2.0 optional: true + brace-expansion@1.1.13: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.3 @@ -22304,6 +22320,8 @@ snapshots: transitivePeerDependencies: - supports-color + concat-map@0.0.1: {} + concat-stream@1.6.2: dependencies: buffer-from: 1.1.2 @@ -26181,7 +26199,7 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 5.0.5 + brace-expansion: 1.1.13 minimatch@5.1.9: dependencies: From 9a427f4b9fe00a8fb7492b8f5d098cd243d7dbcb Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 12 Apr 2026 17:23:08 +0300 Subject: [PATCH 8/9] chore(client): dev server not working due to prefresh bug See https://github.com/preactjs/prefresh/issues/610 --- apps/client/src/widgets/react/Button.tsx | 5 ++--- apps/client/src/widgets/react/Modal.tsx | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/client/src/widgets/react/Button.tsx b/apps/client/src/widgets/react/Button.tsx index 6269000563..3114b9dfe8 100644 --- a/apps/client/src/widgets/react/Button.tsx +++ b/apps/client/src/widgets/react/Button.tsx @@ -1,5 +1,4 @@ import type { ComponentChildren, CSSProperties, RefObject } from "preact"; -import { memo } from "preact/compat"; import { useMemo } from "preact/hooks"; import { CommandNames } from "../../components/app_context"; @@ -27,7 +26,7 @@ export interface ButtonProps { title?: string; } -const Button = memo(({ name, buttonRef, className, text, onClick, keyboardShortcut, icon, kind, disabled, size, style, triggerCommand, ...restProps }: ButtonProps) => { +function Button({ name, buttonRef, className, text, onClick, keyboardShortcut, icon, kind, disabled, size, style, triggerCommand, ...restProps }: ButtonProps) { // Memoize classes array to prevent recreation const classes = useMemo(() => { const classList: string[] = ["btn"]; @@ -83,7 +82,7 @@ const Button = memo(({ name, buttonRef, className, text, onClick, keyboardShortc {text} {shortcutElements} ); -}); +} export function ButtonGroup({ children }: { children: ComponentChildren }) { return ( diff --git a/apps/client/src/widgets/react/Modal.tsx b/apps/client/src/widgets/react/Modal.tsx index e7a7c721f8..bd1c052ab7 100644 --- a/apps/client/src/widgets/react/Modal.tsx +++ b/apps/client/src/widgets/react/Modal.tsx @@ -1,7 +1,6 @@ import { Modal as BootstrapModal } from "bootstrap"; import clsx from "clsx"; import { ComponentChildren, CSSProperties, RefObject } from "preact"; -import { memo } from "preact/compat"; import { useEffect, useMemo, useRef } from "preact/hooks"; import { openDialog } from "../../services/dialog"; @@ -186,7 +185,7 @@ export default function Modal({ children, className, size, title, customTitleBar ); } -const ModalInner = memo(({ children, footer, footerAlignment, bodyStyle, footerStyle: _footerStyle }: Pick) => { +function ModalInner({ children, footer, footerAlignment, bodyStyle, footerStyle: _footerStyle }: Pick) { // Memoize footer style const footerStyle = useMemo(() => { const style: CSSProperties = _footerStyle ?? {}; @@ -209,4 +208,4 @@ const ModalInner = memo(({ children, footer, footerAlignment, bodyStyle, footerS )} ); -}); +} From 4c02d70dae8b849cac0479414090f2d15df6c69e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 13 Apr 2026 00:08:40 +0300 Subject: [PATCH 9/9] fix(toc): not rendering math the first time --- apps/client/src/widgets/react/hooks.tsx | 23 +++++++++++-------- .../src/widgets/sidebar/TableOfContents.tsx | 23 ++++++++++++++++--- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/apps/client/src/widgets/react/hooks.tsx b/apps/client/src/widgets/react/hooks.tsx index 251463fa9a..6c70703385 100644 --- a/apps/client/src/widgets/react/hooks.tsx +++ b/apps/client/src/widgets/react/hooks.tsx @@ -1447,24 +1447,29 @@ export function useColorScheme() { export function useMathRendering(containerRef: RefObject, deps: unknown[]) { useEffect(() => { if (!containerRef.current) return; - // Support both read-only (.math-tex) and CKEditor editing view (.ck-math-tex) classes - const mathElements = containerRef.current.querySelectorAll(".math-tex, .ck-math-tex"); + const mathElements = containerRef.current.querySelectorAll(".math-tex"); for (const mathEl of mathElements) { // Skip if already rendered by KaTeX if (mathEl.querySelector(".katex")) continue; try { - let equation = mathEl.textContent || ""; + // CKEditor's data format wraps the equation with \(...\) or \[...\] + // delimiters. katex.render() expects raw LaTeX without them. + const raw = mathEl.textContent?.trim() ?? ""; + let equation: string; + let displayMode = false; - // CKEditor widgets store equation without delimiters, add them for KaTeX - if (mathEl.classList.contains("ck-math-tex")) { - // Check if it's display mode or inline - const isDisplay = mathEl.classList.contains("ck-math-tex-display"); - equation = isDisplay ? `\\[${equation}\\]` : `\\(${equation}\\)`; + if (raw.startsWith("\\(") && raw.endsWith("\\)")) { + equation = raw.slice(2, -2); + } else if (raw.startsWith("\\[") && raw.endsWith("\\]")) { + equation = raw.slice(2, -2); + displayMode = true; + } else { + equation = raw; } - math.render(equation, mathEl as HTMLElement); + math.render(equation, mathEl as HTMLElement, { displayMode }); } catch (e) { console.warn("Failed to render math:", e); } diff --git a/apps/client/src/widgets/sidebar/TableOfContents.tsx b/apps/client/src/widgets/sidebar/TableOfContents.tsx index aca1c11c5b..4442af884c 100644 --- a/apps/client/src/widgets/sidebar/TableOfContents.tsx +++ b/apps/client/src/widgets/sidebar/TableOfContents.tsx @@ -200,17 +200,34 @@ function extractTocFromTextEditor(editor: CKTextEditor) { const level = Number(item.name.replace( 'heading', '' )); - // Convert model element to view, then to DOM to get HTML + // Convert model element to view, then to DOM to get HTML. + // Math UIElements render their KaTeX content asynchronously, so + // ck-math-tex spans may be empty at read time. Replace them with + // math-tex spans (the data format) using the equation from the model, + // so useMathRendering can render them synchronously in the sidebar. const viewEl = editor.editing.mapper.toViewElement(item); let text = ''; if (viewEl) { const domEl = editor.editing.view.domConverter.mapViewToDom(viewEl); if (domEl instanceof HTMLElement) { - text = domEl.innerHTML; + const clone = domEl.cloneNode(true) as HTMLElement; + const ckMathSpans = clone.querySelectorAll('.ck-math-tex'); + let mathIdx = 0; + for (const child of item.getChildren()) { + if (!child.is('element', 'mathtex-inline')) continue; + if (mathIdx >= ckMathSpans.length) break; + const equation = String(child.getAttribute('equation') ?? ''); + const span = document.createElement('span'); + span.className = 'math-tex'; + span.textContent = `\\(${equation}\\)`; + ckMathSpans[mathIdx].replaceWith(span); + mathIdx++; + } + text = clone.innerHTML; } } - // Fallback to plain text if conversion fails + // Fallback to plain text if DOM conversion fails if (!text) { text = Array.from( item.getChildren() ) .map( c => c.is( '$text' ) ? c.data : '' )