From 33bbe994d7804d8d12b6cccfcaacfce0e6878816 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 06:55:00 +0000 Subject: [PATCH 001/102] fix(deps): update ckeditor monorepo to v47.4.0 --- packages/ckeditor5-admonition/package.json | 4 +- packages/ckeditor5-footnotes/package.json | 4 +- .../ckeditor5-keyboard-marker/package.json | 4 +- packages/ckeditor5-math/package.json | 6 +- packages/ckeditor5-mermaid/package.json | 4 +- packages/ckeditor5/package.json | 4 +- pnpm-lock.yaml | 2236 ++++++++--------- 7 files changed, 1084 insertions(+), 1178 deletions(-) diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json index 39bebc67b..8a6aaa4a5 100644 --- a/packages/ckeditor5-admonition/package.json +++ b/packages/ckeditor5-admonition/package.json @@ -28,7 +28,7 @@ "@typescript-eslint/parser": "8.53.0", "@vitest/browser": "4.0.17", "@vitest/coverage-istanbul": "4.0.17", - "ckeditor5": "47.3.0", + "ckeditor5": "47.4.0", "eslint": "9.39.2", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", @@ -42,7 +42,7 @@ "webdriverio": "9.23.0" }, "peerDependencies": { - "ckeditor5": "47.3.0" + "ckeditor5": "47.4.0" }, "author": "Elian Doran ", "license": "GPL-2.0-or-later", diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json index 1616b30e6..b3f32618b 100644 --- a/packages/ckeditor5-footnotes/package.json +++ b/packages/ckeditor5-footnotes/package.json @@ -29,7 +29,7 @@ "@typescript-eslint/parser": "8.53.0", "@vitest/browser": "4.0.17", "@vitest/coverage-istanbul": "4.0.17", - "ckeditor5": "47.3.0", + "ckeditor5": "47.4.0", "eslint": "9.39.2", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", @@ -43,7 +43,7 @@ "webdriverio": "9.23.0" }, "peerDependencies": { - "ckeditor5": "47.3.0" + "ckeditor5": "47.4.0" }, "scripts": { "build": "node ./scripts/build-dist.mjs", diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json index fab2b9221..e8b65485d 100644 --- a/packages/ckeditor5-keyboard-marker/package.json +++ b/packages/ckeditor5-keyboard-marker/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/parser": "8.53.0", "@vitest/browser": "4.0.17", "@vitest/coverage-istanbul": "4.0.17", - "ckeditor5": "47.3.0", + "ckeditor5": "47.4.0", "eslint": "9.39.2", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", @@ -45,7 +45,7 @@ "webdriverio": "9.23.0" }, "peerDependencies": { - "ckeditor5": "47.3.0" + "ckeditor5": "47.4.0" }, "scripts": { "build": "node ./scripts/build-dist.mjs", diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index dfccd3b50..43d6c9cbf 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/parser": "8.53.0", "@vitest/browser": "4.0.17", "@vitest/coverage-istanbul": "4.0.17", - "ckeditor5": "47.3.0", + "ckeditor5": "47.4.0", "eslint": "9.39.2", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", @@ -45,7 +45,7 @@ "webdriverio": "9.23.0" }, "peerDependencies": { - "ckeditor5": "47.3.0" + "ckeditor5": "47.4.0" }, "scripts": { "build": "node ./scripts/build-dist.mjs", @@ -70,7 +70,7 @@ ] }, "dependencies": { - "@ckeditor/ckeditor5-icons": "47.3.0", + "@ckeditor/ckeditor5-icons": "47.4.0", "mathlive": "0.108.2" } } diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json index 683e2de02..10b632874 100644 --- a/packages/ckeditor5-mermaid/package.json +++ b/packages/ckeditor5-mermaid/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/parser": "8.53.0", "@vitest/browser": "4.0.17", "@vitest/coverage-istanbul": "4.0.17", - "ckeditor5": "47.3.0", + "ckeditor5": "47.4.0", "eslint": "9.39.2", "eslint-config-ckeditor5": ">=9.1.0", "http-server": "14.1.1", @@ -45,7 +45,7 @@ "webdriverio": "9.23.0" }, "peerDependencies": { - "ckeditor5": "47.3.0" + "ckeditor5": "47.4.0" }, "scripts": { "build": "node ./scripts/build-dist.mjs", diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index cf0369292..d912a9685 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -12,8 +12,8 @@ "@triliumnext/ckeditor5-keyboard-marker": "workspace:*", "@triliumnext/ckeditor5-math": "workspace:*", "@triliumnext/ckeditor5-mermaid": "workspace:*", - "ckeditor5": "47.3.0", - "ckeditor5-premium-features": "47.3.0" + "ckeditor5": "47.4.0", + "ckeditor5-premium-features": "47.4.0" }, "devDependencies": { "@smithy/middleware-retry": "4.4.23", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18dfd0244..2573fc116 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -881,11 +881,11 @@ importers: specifier: workspace:* version: link:../commons ckeditor5: - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 ckeditor5-premium-features: - specifier: 47.3.0 - version: 47.3.0(bufferutil@4.0.9)(ckeditor5@47.3.0)(utf-8-validate@6.0.5) + specifier: 47.4.0 + version: 47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5) devDependencies: '@smithy/middleware-retry': specifier: 4.4.23 @@ -918,8 +918,8 @@ importers: specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) ckeditor5: - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -978,8 +978,8 @@ importers: specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) ckeditor5: - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -1038,8 +1038,8 @@ importers: specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) ckeditor5: - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -1077,8 +1077,8 @@ importers: packages/ckeditor5-math: dependencies: '@ckeditor/ckeditor5-icons': - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 mathlive: specifier: 0.108.2 version: 0.108.2 @@ -1105,8 +1105,8 @@ importers: specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) ckeditor5: - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -1172,8 +1172,8 @@ importers: specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) ckeditor5: - specifier: 47.3.0 - version: 47.3.0 + specifier: 47.4.0 + version: 47.4.0 eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -1792,62 +1792,62 @@ packages: '@chevrotain/utils@11.0.3': resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - '@ckeditor/ckeditor-cloud-services-collaboration@53.0.1': - resolution: {integrity: sha512-Em7T4xiwQjG9SJKSwLxxPOf33tDekOV3S1WoSBqi7Qp1icKedYwH3f7k2Zjfe/3XAC3EVNVhi18MhUjsEiO/Lw==} + '@ckeditor/ckeditor-cloud-services-collaboration@53.0.2': + resolution: {integrity: sha512-06yWDZ0w1vRA+G70qzLYEmGzrd4wo+Hci9YneyVOCI3LGnFa89E9GumzQPn7MHx2RFIS/EekDBhq5o89nC2/7A==} peerDependencies: - '@ckeditor/ckeditor5-utils': '>= 37.0' - ckeditor5: '>= 37.0' + '@ckeditor/ckeditor5-utils': '>= 37.0 || ^0.0.0-nightly || ^0.0.0-internal' + ckeditor5: '>= 37.0.0 || ^0.0.0-nightly || ^0.0.0-internal' - '@ckeditor/ckeditor5-adapter-ckfinder@47.3.0': - resolution: {integrity: sha512-I0oE2wuyGSwCirHRj5i+IvBRKUrlmGCP7HMGv7fzXcHS1MW43LV0t9L8PQ/aKQX3gNmiqlfj631y/S7s5nqR8A==} + '@ckeditor/ckeditor5-adapter-ckfinder@47.4.0': + resolution: {integrity: sha512-g90RXXOoyBL0hsUMo6/IsCKF6qlKtxYlwzeTch+XboZOxkvJmozETKY4mnkR+XI1xZeO1bqqzLe8sKiFRvG7Hg==} - '@ckeditor/ckeditor5-ai@47.3.0': - resolution: {integrity: sha512-XZgjRD0wSTijzDefnB7cr6pxbLaqkT/vwfG01JvGpSt6Hg42bFEqAUSf5NBVRTJ7S3L9p54GKhFdSVAfJZJfog==} + '@ckeditor/ckeditor5-ai@47.4.0': + resolution: {integrity: sha512-fcukYJTeV7TA5vSlRj81uAlzwAVRn6kXJukrdMuUuWh4YUPGmv4X1uzb8P+tMeo29yZHYoWURI8Xk2QDxe7uow==} - '@ckeditor/ckeditor5-alignment@47.3.0': - resolution: {integrity: sha512-T01xV7UsS4D1VbyRdWxc68Wl4NN/Ov/4+2EsbjYF7O0UA0pJs8dWZJOZ+yGFJ6p8Aask991eu91vy3r/nq3d+g==} + '@ckeditor/ckeditor5-alignment@47.4.0': + resolution: {integrity: sha512-MI4PrumF62HZ5kG824WOhqtntDS6oPhmlFwg2vOd8L8fW1Gn4SgigvhqxARLi/OIf0ExnNcXFunS30B6lz1Ciw==} - '@ckeditor/ckeditor5-autoformat@47.3.0': - resolution: {integrity: sha512-1Np63YOsNMddrVHtsAPZUQvVuhMyvmwPwnPO3EHudPPDg8c5p+fbSb7DSUSPCUmkIKS8RJ8tv/3eDpS7y+EEXg==} + '@ckeditor/ckeditor5-autoformat@47.4.0': + resolution: {integrity: sha512-dYjPpSaIt8z8d7em+I54+S6Y0m/4fXX27DF6gXMHG+79TIzZxakHK096RJBxj3cIjpzSjHI+v9FQ1Y+nO/M79Q==} - '@ckeditor/ckeditor5-autosave@47.3.0': - resolution: {integrity: sha512-ctYdlBcJ/CPUUcpRzCbCp3oG2HWn8gy7GZUL95C1BIZTH08cLKZgkX0TySSUHygMvVymgvWq3LrmwByWri9AvQ==} + '@ckeditor/ckeditor5-autosave@47.4.0': + resolution: {integrity: sha512-1DpjdGn+xXfYoeDd6SIcQbkUiOeHQbjN7qmjQWrd6JvowQ6loPtDPGL9OHmL4OFubrVn5GM4dS3E1+cU29SVHg==} - '@ckeditor/ckeditor5-basic-styles@47.3.0': - resolution: {integrity: sha512-KGDZLyhVc+sF9o8XTiupNRdroALhLpfOssWQv8zzyu7Ak2LFYXCrrr3abscbIX2whL/X92sted11ktLaLmgL0w==} + '@ckeditor/ckeditor5-basic-styles@47.4.0': + resolution: {integrity: sha512-nCVP7W5ryshBG7UfXuFRv58qb/HmSS9Gjb2UUM84ODLOjYPFxvzWgQ5bV5t+x1bYAT8z/Xqfv9Ycs9ywEwOA9A==} - '@ckeditor/ckeditor5-block-quote@47.3.0': - resolution: {integrity: sha512-Ik3buFYNpEYVkI5LnimDbHTOgHAYtkZ2qTwGT47wAvyScgQ9Jx0fcUBA6EjX2EuGr6w/snZfXkI4WsZqrMYp+g==} + '@ckeditor/ckeditor5-block-quote@47.4.0': + resolution: {integrity: sha512-B1iX0p5ByU/y7AVREgevr0Kfobt9uT1n9rtXToXbA9W4u4yZIVJULpceTgDw+/OJNU8lyKbq/S/6trjYFsyf0Q==} - '@ckeditor/ckeditor5-bookmark@47.3.0': - resolution: {integrity: sha512-Cn+O/Ayr9zcKk/v9dyP1SXbpFslLGCiinS6Nb8jQOS+pmxb1s32W/ycZBtAg0EYmTMskoVEkpwz6ugogNAzmaw==} + '@ckeditor/ckeditor5-bookmark@47.4.0': + resolution: {integrity: sha512-XBAOfYpy0TdVqAXsBgKSKCD46S7kR/oohqP9UKTGUGrNjojW6FS1k1IxvcpRVATn0xPHjZld58wkwizIdeJveg==} - '@ckeditor/ckeditor5-case-change@47.3.0': - resolution: {integrity: sha512-l0+4RWk2t2G9GbSSZMVQdTbhnN3L8pMshoSCDdR43lC+tkmx1zgRTTE04sibnVt6pSVynmVO2KQ5xVbMIAoHlw==} + '@ckeditor/ckeditor5-case-change@47.4.0': + resolution: {integrity: sha512-MgAbh3QHpU8yxCvtRQQP67av0NeglrG0zFfPZK5fGIOugcmeIMN/joGdvND6XL/WfY4J2a8PpODoYubbhrrXug==} - '@ckeditor/ckeditor5-ckbox@47.3.0': - resolution: {integrity: sha512-SVF3CGH7/DBSrsV/vMFIzyvSPAoD1Qg12A5dS+ySnG46XC8ou9uQXXAfIGzAvwajC8GF3LJf9nG4+vJx3tIE/A==} + '@ckeditor/ckeditor5-ckbox@47.4.0': + resolution: {integrity: sha512-Utk9nYwzVRLQXYVVR+oi3x4xN7C0lzt+ZUyPjBRf3k60ijP/OpA8lsJJWzonuEEsdELsLzaBNSivTa9hjLZLDA==} - '@ckeditor/ckeditor5-ckfinder@47.3.0': - resolution: {integrity: sha512-OIDpmoHsw+ZRbhso3EvnSDEKkXZBgZTq7TQT7+TAg264SWuGB7y6UCKMMoA5OWpuqDJh/Wp8wBubTWqA3OwYmw==} + '@ckeditor/ckeditor5-ckfinder@47.4.0': + resolution: {integrity: sha512-jXWwDfzFOn2S/oK84Io6cB7I0W9I7CwMyBfg5YbCEhYtv5aeNQBpRqwik/5cfmMrBMBXrPu1QRs60NIwegk/Eg==} - '@ckeditor/ckeditor5-clipboard@47.3.0': - resolution: {integrity: sha512-fVBBWyWIaLTTUZglvOz+ld0QfQR8yr9TVwgk0XFN90S3UxFiYYkxgDAeef/o51qBhBGotgw8hGYYbY4k4G10mA==} + '@ckeditor/ckeditor5-clipboard@47.4.0': + resolution: {integrity: sha512-LUR5yTXjHxLn8YLKrJj4/DBtqk6zdPg5SAVXkpNSz5UxU63aaj/L7jKCInr36Uy23Ov5TgT6FkgXPaBtakAqDA==} - '@ckeditor/ckeditor5-cloud-services@47.3.0': - resolution: {integrity: sha512-oFHz/Aavs6IDU6XwQD9NUgssJs3hSv4Vu2Np5rkZIyhabKRJcNma7fwM+gmmvQJupltv0uG/0ldMigjfEqHAQA==} + '@ckeditor/ckeditor5-cloud-services@47.4.0': + resolution: {integrity: sha512-6xUiyoMkcW8F/8OJrEGeKrMixRGLeQYHxij7tYyrXUqugdCJmZ5WNfvsoyVBwk7g3XQDSKnfKG28gSVBPirwBQ==} - '@ckeditor/ckeditor5-code-block@47.3.0': - resolution: {integrity: sha512-zgzlCFqqJxWRTvuIGl9jJ0KYGZIjsCOYHjj1s3+asXjuskRoSip6yzcPK/LPaQXkUYf9zTGJHQ9tqmiNbRQBiA==} + '@ckeditor/ckeditor5-code-block@47.4.0': + resolution: {integrity: sha512-lfZd1Zu6FvHbOEXa1yJnuRDK0jYXZR0OaV9ek6A2ZQ6Z169Brc+aH1sTakw7r6S8m1clTz+vRH3UuVk7ETsQGA==} - '@ckeditor/ckeditor5-collaboration-core@47.3.0': - resolution: {integrity: sha512-v/ndL/J1y5ISZrLR9F43ZRZfN98lejF7itMolKkPDbtJOIi+Vxbimp0KlFqbLzeCNO5GDT2uM8JXnShuU2H9Lw==} + '@ckeditor/ckeditor5-collaboration-core@47.4.0': + resolution: {integrity: sha512-YFitobi32yDHxLHUJuLBQzsxgDE0fiTCYnqBU8vrYUkqUCeCC20AZ6pOK8dMF/kORCh9znjjHiWVch0EoNYgkQ==} - '@ckeditor/ckeditor5-comments@47.3.0': - resolution: {integrity: sha512-hNSpNcbqISDnKwBbDmB+i8VBEb7F4b+l9wp68sbXmSSM91Eud+HiPwftwsH4zDXORlyXb6liNZTIEceayHR6Bg==} + '@ckeditor/ckeditor5-comments@47.4.0': + resolution: {integrity: sha512-7fNWs/Or10B7koS9rEQIS9fTkPi2S4TJO9QclHK+gddRD4Y8ZdD8iO2FtAmoGB5dy8dJG2gtr4f9BTvD1lhMpA==} - '@ckeditor/ckeditor5-core@47.3.0': - resolution: {integrity: sha512-jLawN3a8yL5lbwG8gZeJihcVKkDgq+rAFeXc+Rd+nw+c5uGCdkc5F7PCRjhw+JOGruXUhNsbiF/4iNv3hUcO/A==} + '@ckeditor/ckeditor5-core@47.4.0': + resolution: {integrity: sha512-upV/3x9fhgFWxVVtwR47zCOAvZKgP8a8N7UQOFwfs3Tr52+oE1gULWKTiS9079MBaXaIqtM/EbelNdvBh4gOGg==} '@ckeditor/ckeditor5-dev-build-tools@54.3.0': resolution: {integrity: sha512-46gPUhiSdDdFBsGewGgSnVq2E5vkwXBVN2L9dbQ3t9Wta3F4zjXxw+496mAq71hAVxfZmyACjaVT3pAJojUIRw==} @@ -1862,220 +1862,220 @@ packages: resolution: {integrity: sha512-Qz6VUUbYTuQ+pMfR9UNZ5hf0lriNducmDdSCEKh8u+UXP7s1DeS6SmrlhnGcEUD97mUTuU2o7RgpqkSy19kPBA==} engines: {node: '>=24.11.0', npm: '>=5.7.1'} - '@ckeditor/ckeditor5-document-outline@47.3.0': - resolution: {integrity: sha512-99kjWN+B+s36+aH3Vv+g24qan3VGbCuudz2H+4syw4xOSQ50/nLS90PcuH/PYaaXTzt+hB0T4Nide7OCky/uog==} + '@ckeditor/ckeditor5-document-outline@47.4.0': + resolution: {integrity: sha512-tFDStt2wwfQjV/4mUyxe6I69fMfRtrhyOnEh7Ou6q22X+e5290oPrCTSLN9KbmF6ISp6aRFKvQuawRPkN8er+A==} - '@ckeditor/ckeditor5-easy-image@47.3.0': - resolution: {integrity: sha512-pdQHtLBdkDuY59FzzgyTjS6XM5aJlSUW33sOSfN0I/iROl6LpSr1kHjf6ybJAAWEhSD6B+o6hv4+K+tx184UpA==} + '@ckeditor/ckeditor5-easy-image@47.4.0': + resolution: {integrity: sha512-YMxvD3Gh6kVux1OKdtdubvjtUHu4TIN7YgCThqsfnuumpnx94Dhq3+wy8o/dO73dRcq/iVvb/9LmkivT4+8uXg==} - '@ckeditor/ckeditor5-editor-balloon@47.3.0': - resolution: {integrity: sha512-8EzuV48gTuqrNd5rt58rp7eWf8B5q1PeRUS2f5fAF6RwDS6HsBDeqmEic8JPxOh+30pvAcR6UiylSYe6S+H9bg==} + '@ckeditor/ckeditor5-editor-balloon@47.4.0': + resolution: {integrity: sha512-FZuHy5EhzssTQZTuXQF7aVRJyvY0QaIOr6yj8fttRoWQgIDMzJNm+rVW9C9FRa1+j1i9tlrE21+GYIhCgEGyOg==} - '@ckeditor/ckeditor5-editor-classic@47.3.0': - resolution: {integrity: sha512-uCA8cr23LSJf8POkg2c403zS+xWjbE8Ucu521PQPcxrTMyTI6rYfjnuZ6vT/qzqAwZrLpiNZucJIQxRDFhLWGQ==} + '@ckeditor/ckeditor5-editor-classic@47.4.0': + resolution: {integrity: sha512-b698aEHRJSC4jMP0fYD78tdqMw5oQHtCpUL6lU8LFsysCe5M0cqgab4V0hEjeIsg4Ft/UmkgFd1aAleRCDftJg==} - '@ckeditor/ckeditor5-editor-decoupled@47.3.0': - resolution: {integrity: sha512-G4szgSWluqNG/wv+JQxiZv1lzwUzTxdPZWO/mL8pi3sc69vp30QYT+I4TOTLpfBdISBPkWajn/hfEXJPS1hCXw==} + '@ckeditor/ckeditor5-editor-decoupled@47.4.0': + resolution: {integrity: sha512-4Nk/fe5Sob9aUf8gf4K7GQjqI0XftDThGRjX1eKOSDs+OGXRyB4Fxtu+tHLCyCt8cITac/PAMWaO7dwqbAK8bA==} - '@ckeditor/ckeditor5-editor-inline@47.3.0': - resolution: {integrity: sha512-ie66wno1gbxNuoqGJ7iSDIz4gydPxJtSE5F9kb3NjfwecQxjj/0yBS+HsbZhqbFFNdJ01KZOtbAxNXQ0r1OW2g==} + '@ckeditor/ckeditor5-editor-inline@47.4.0': + resolution: {integrity: sha512-/xKtAwq0Pg3Zq7q9QcmrUnqc8XScrUlixWnl58gOxsdmflaSaK4qLtnId0FmSrax0tqVp1qihsUfvE5uUNnyGg==} - '@ckeditor/ckeditor5-editor-multi-root@47.3.0': - resolution: {integrity: sha512-PRxVNpoo7YiECugo9rPsUmuTL3f2xUwvHSUKh6FvPneQS4oFIdMNJrg/Hhn02sEOe6+ScFIi4X06ryK+/N6zOA==} + '@ckeditor/ckeditor5-editor-multi-root@47.4.0': + resolution: {integrity: sha512-gKYQeg2QI+9JM2gujYVBaLVlh7Dw4XfkX1g4jYMEqq4YG5E17Hpbc1A/IqUb0LLpAd1TG64AR4s/vxK0JrnY1g==} - '@ckeditor/ckeditor5-email@47.3.0': - resolution: {integrity: sha512-CPVdE6fmsI000YOHbfC3vxU0/VqZ+99EUv/bUkvgf71sVU3uzQkz72X/TVN3pPCihE1AZCQy0EXYvUcqPk+dLw==} + '@ckeditor/ckeditor5-email@47.4.0': + resolution: {integrity: sha512-4BiTX8bL2aM9+mU28HMZrFHVvCV5cJNNWUe0PON+mQUghxjCB4FqHaERVAoaIF2YRF71sUhz2uPUVmx97EdCxQ==} - '@ckeditor/ckeditor5-emoji@47.3.0': - resolution: {integrity: sha512-3xmB9VKShWmK2x1qZ7BecfqaxAGP6Ys1/UEPhBhoFyRK34UvtA9KrK0G+KWF4kwA5OgkoqnQRmVkMEO6mKXMnw==} + '@ckeditor/ckeditor5-emoji@47.4.0': + resolution: {integrity: sha512-PbTqvbBzMfvKaxTzAt72VskT8ifGoKRNKzskEmm74RCLu6a60rUaqL/4ChkTsF1FKPvB07VDbyDQx4XkvUOBIA==} - '@ckeditor/ckeditor5-engine@47.3.0': - resolution: {integrity: sha512-op/9TsJgFtWctfUd/QY41HYyFZd5hfSK6hBTJh0Xpz2XAfvpWsVim27FyWX0yIhyMLmtwDETDq8iBaH5kEZ15g==} + '@ckeditor/ckeditor5-engine@47.4.0': + resolution: {integrity: sha512-U3Zq3qZ86Si6L4BslJIXotK9oVXu59zAuDVWlx3prAUS5Mrz7MfVlWdz9HeWu9W1i2FmUGVksX+uoO/ng2CZUA==} - '@ckeditor/ckeditor5-enter@47.3.0': - resolution: {integrity: sha512-gBsT2ffLKUQclJpWkjn8mggtmoa3AfYH6vjsfMefN3yov1FoGY65kQDXl9KOfdG71E/tRtOZkMUPXqZUlYrBlA==} + '@ckeditor/ckeditor5-enter@47.4.0': + resolution: {integrity: sha512-BQjJ7CjXENoF8Inv8ydRl+luRMKQvw1ohkiYsTEruHjGKkAFyDTGrorzkoGp2IU98n5SVGJE+XwVxpKgjsKAVQ==} - '@ckeditor/ckeditor5-essentials@47.3.0': - resolution: {integrity: sha512-tLqgNXfdZJiBR56CHBNkrHWd7WCSPTIRxfqB9xoDvFD3AQngv1J3tIj3ye0WtTr8V23CCcXzz3v3NFZwtuDPBw==} + '@ckeditor/ckeditor5-essentials@47.4.0': + resolution: {integrity: sha512-M+8xGJF+PKEcTjTeqofNe6cjcTnsy6EomqwGrbHDHhyAXC4d8k/vRrptymjonW7H9IsuOcQ5t2eZj3d+yl03gg==} - '@ckeditor/ckeditor5-export-inline-styles@47.3.0': - resolution: {integrity: sha512-kwkXd4IwXQbSI7apR6lyClduOYiQ1sM1XeDjA/73zOsAVmGNAKLbwydaze3cCGQwhYTgZoe0/pdFqmeOnVStLw==} + '@ckeditor/ckeditor5-export-inline-styles@47.4.0': + resolution: {integrity: sha512-TK5KNrm17Jb1BjSPdB9UBjaHIoDmyBdESZuEZRvEFuDguLBGK0kTNTjeoYxp1xZ33sfq3nUVtjOyq77K3b5+9w==} - '@ckeditor/ckeditor5-export-pdf@47.3.0': - resolution: {integrity: sha512-XtSg/uBPzxz8hAVsKPgoe3ZyxYPVJpmIiO8za6c7pSU+BFZvp23g3uOXfSLUa4SOrC6Z/qKtZXjivb24/IKrFQ==} + '@ckeditor/ckeditor5-export-pdf@47.4.0': + resolution: {integrity: sha512-TIXl8ae/NUDv6COfyA1+KHaDWMSQzopTdYA4mRTF5zqzg1HbtQq0Lf6n9Cn2J3WhwXDIGBjbNxD0z55wpOBLWg==} - '@ckeditor/ckeditor5-export-word@47.3.0': - resolution: {integrity: sha512-bWiHFZTcAU3ZCfean5kniM6BtwOKbpEfnndGJC9rRe0E8U8ZUg6VBUgDIKeXmo34AiR79UpOMTwfj1CHQYbMsg==} + '@ckeditor/ckeditor5-export-word@47.4.0': + resolution: {integrity: sha512-a1YWBFV0suPme2uFPh28O/B7yPW/Te2JplC0/0XgeUZAXeYL+5u8Rh42cRoRmyqoUYzd/xev6mukgeCRv77/pg==} - '@ckeditor/ckeditor5-find-and-replace@47.3.0': - resolution: {integrity: sha512-jSbc4ss36ynQvyNYKNR4UXceoS8r2JE9fjedHZbMPpFRPlypCC2oc21WhWa/Fo+PcfAIV7q2izNDclcFtEFB/A==} + '@ckeditor/ckeditor5-find-and-replace@47.4.0': + resolution: {integrity: sha512-CZAX1XxrJcnOAwENfw4x4DiLyZ6uOHUHJqFXyyJdQC9qfEizvFYTXn3zO6fbViyDd/k4ugAoLBjpaZh6p9FyOQ==} - '@ckeditor/ckeditor5-font@47.3.0': - resolution: {integrity: sha512-J1QhW0Z6LfU0Mc3cITw21vPTIv1sGtlyO7JSFU9rQUkF1p2PCMQ/SvEja3bdz8LipidoDUh+QCeT2z9TSt1VDA==} + '@ckeditor/ckeditor5-font@47.4.0': + resolution: {integrity: sha512-QRIThyZg0kT1R4LTotD6cV9gm0NX3Z0Cq/IOQtuwTbRb3wa+kWXhVfKZPV9Qru5HifvrCrcWXMjkBRRIdfqp+Q==} - '@ckeditor/ckeditor5-footnotes@47.3.0': - resolution: {integrity: sha512-CjbxLjgdcKDb0rrE4LBXGjAM5eAAZfSqi9ZzfwmJz/6QDZoV/llDUXRsfN2VL7dymfsfLkVyvunXXRfa999RTQ==} + '@ckeditor/ckeditor5-footnotes@47.4.0': + resolution: {integrity: sha512-IWuAzPpnyup4ZFbUrMYRszGHSrndQVKi3q71NhsVxjCuWUt/i0iudqLQoB4bEV9as//Zl/x1c7aEpI8T8AUH0g==} - '@ckeditor/ckeditor5-format-painter@47.3.0': - resolution: {integrity: sha512-GoDEOr3XNXFFlFeFu80PpyUNXh65uQ4IAkV9lwobQsmZcdaWbmMgEdk9k+TGit07bpC9KJRjNUBZgmm9O1B9Hg==} + '@ckeditor/ckeditor5-format-painter@47.4.0': + resolution: {integrity: sha512-KG0niwdRBvx5AU5xT23X0cagXv06kkW5Wg3zxkeXmd2q3co6mjTzogQq+Ftiu30LryTmSJ+HuNVfDLw8g5enVw==} - '@ckeditor/ckeditor5-fullscreen@47.3.0': - resolution: {integrity: sha512-lSge/Lw30GYkztAWifZYOpc5Q9tjuT73gq0Hcs1tDpiIIt63CM7AfIS/sjiTUus0ZSG8fjLdd3ivSf4TiE/kOg==} + '@ckeditor/ckeditor5-fullscreen@47.4.0': + resolution: {integrity: sha512-DdroZD1cgNU3up74ZQq84vXyCDknQJJyyxQIXS5CKJy7qNR9YmixpVmyXpYJmZzdSVvp/p8Ej87VlOXfju3ilQ==} - '@ckeditor/ckeditor5-heading@47.3.0': - resolution: {integrity: sha512-sCBpuGTY+RGnE45r1cgFfe29cW6hmVQo+4HGppyErj7Sac5f1PCG84/DSTP1n+6LPiA51Yh2Z/VtQdYKMRNnmQ==} + '@ckeditor/ckeditor5-heading@47.4.0': + resolution: {integrity: sha512-VWBxQ2ngrT0x50Tb1klZyIOykgNPby8sw5rBq/nv/UXBb2Ql/crp50miC8pBCOvkbTP16qzVbl5HoiltJQkH/g==} - '@ckeditor/ckeditor5-highlight@47.3.0': - resolution: {integrity: sha512-wlT7R+7LVp0LmCyKIRN+U6+3FJqw6NpmfHhidSZnTRd9qzGnZ2EMxdEIkfOyCZd2CYH/gxtf/QFGik+DTjV/ow==} + '@ckeditor/ckeditor5-highlight@47.4.0': + resolution: {integrity: sha512-SHBkoMVu/uTkvE0/1zaehlvCpEqYuh/u1Rh7SHNysrD05Nacs1t5jw+l2lTFoyJnhTy+RA9IONYSDF+5tK3dqQ==} - '@ckeditor/ckeditor5-horizontal-line@47.3.0': - resolution: {integrity: sha512-F0QlRncwX/wvUN/LtZjpdsld9qT3jDxrniv4a/nz4LIotTVAsw2tMy9y8Sw2TNjIrOY5cCytxG91kzc+WNwUlA==} + '@ckeditor/ckeditor5-horizontal-line@47.4.0': + resolution: {integrity: sha512-UvL0x55QxRGiem8EPO9n/WQk6218TDNatKSCRueZkAYUrFC1bmtVs9g6GqvSl59RoRGcTxVcz0fXbsxrhZY6HA==} - '@ckeditor/ckeditor5-html-embed@47.3.0': - resolution: {integrity: sha512-B8xgh/4fUoccNhTKajBFlWWgz03G0QS41iXGtEoDY74Z1Ewx8zKccw4kPcyowIsrM7iq8w8tmo7uHJQaB5rhlA==} + '@ckeditor/ckeditor5-html-embed@47.4.0': + resolution: {integrity: sha512-SnidyadvuC0ohT2kZ0crsnFy8adQwhHcRaGUNXx5qAHRK7K1wGp3nxdnyOW5GdK2CIe8DTo+H3v8nXfvt7VgnQ==} - '@ckeditor/ckeditor5-html-support@47.3.0': - resolution: {integrity: sha512-sdqB2NPlCy4UC6Wgi1RzW/kzeWd9zIgf8s/bx4KzGbWekAvfnJWUVAYkkziM+7N6NhXTKDx8Wu2Zh/66pIo1XA==} + '@ckeditor/ckeditor5-html-support@47.4.0': + resolution: {integrity: sha512-SGd6wvPB9VGNqEWvoEdK1kQJ3lpvrTNfsA5Pg02V/Zr3gIxnAqajYEArWDYtsz3ajaUDs06i1tFdpCbFB7JRMg==} - '@ckeditor/ckeditor5-icons@47.3.0': - resolution: {integrity: sha512-erpbkXiPtA3Bu8a8ZLQjPYpX4W0WoT3OFZElHZgXOmVl8xQAefp2q+lFYKgzsqB757/zZO7i/B6U9czNv6lPmw==} + '@ckeditor/ckeditor5-icons@47.4.0': + resolution: {integrity: sha512-2THOymXou/dBR+Jk69+/DzE3lK3QVk8+9eSKdWQ4+kvYom9MXT9RwKJNe3BlvqUNxBymI8eVBjdaQjfv3AOT0Q==} - '@ckeditor/ckeditor5-image@47.3.0': - resolution: {integrity: sha512-KnsQUv1itQdKJIAlj3GSTETuaiyFq7ggMsK7UVJFTk0yCiIi+oSEkrIn5r+p1e98QYEYjArS2SwOIxDsxDM2sQ==} + '@ckeditor/ckeditor5-image@47.4.0': + resolution: {integrity: sha512-Z0q+cANAvzvW/3lIMg0rpvVHx4nlWbUsfPw78gM7/DmB4qpdbKsX07iTut84ZnWvOP+WU3XIrhinMXTvl6IqEw==} - '@ckeditor/ckeditor5-import-word@47.3.0': - resolution: {integrity: sha512-17oA8wSCEM1c7fm+2mqtaBbdWBXjA3uNhUXnhKOe8Hr5POGQmpn9BUvMd/zT7xER8PKe2xKzlqYSP6xO4326yA==} + '@ckeditor/ckeditor5-import-word@47.4.0': + resolution: {integrity: sha512-UHsSe7tegi2Be1axbDHescEw10rh3K/jgDlTuiHJvahmajB2vJUlZ7rMM9kilTl7w6IKK/UEo0GdvNzDrkQYsg==} - '@ckeditor/ckeditor5-indent@47.3.0': - resolution: {integrity: sha512-kIpuMrTrtf7YhOBYre2Ny7NnL/x6sqMzdaxy4LN+4Sa9+Cw+KR2QJij2d0VkwDzV+z2B8GZ1mNZvCzpEwWDUUA==} + '@ckeditor/ckeditor5-indent@47.4.0': + resolution: {integrity: sha512-lFPYPUSuByK6GHiTnkHeLkWHD5/SbXCQ5TJVzRJ3uaWvbqo0b0Hvoz92vtKueOwi1QsgXD38aYhMljs0h8eP5g==} '@ckeditor/ckeditor5-inspector@5.0.0': resolution: {integrity: sha512-WVCa1mtePJkLtI81Rn2E6orV0B2Az/+O7f+corJzYapoH5koVEe9TcVyoKRquKUWeBXMG+D1m72vmR2kuoLNhA==} - '@ckeditor/ckeditor5-language@47.3.0': - resolution: {integrity: sha512-sPAgbKYT3NpofS2FWphkgiPzD2YqbTpxpLyzHymDJo7s2LQWj5FUGacZiiddGPOdzicSasZ6qHvcHIMHCmLBpg==} + '@ckeditor/ckeditor5-language@47.4.0': + resolution: {integrity: sha512-3FEoS59ZOTm6m0m0O5qEpsf4tGX/r+r0LjkDrRjhIcaGJh0W4Ao2J6cSrXv7hikDpgBjbHIkEy0V6KkIWWAZpg==} - '@ckeditor/ckeditor5-line-height@47.3.0': - resolution: {integrity: sha512-zZbeKeEmXvbJ2SaEBON5/76hCH83HUbXgI3p0N6X8GvpXmJQPfJbFqpNTWL0iXvc/1gKfPfbUOXN9B3DMuz2PQ==} + '@ckeditor/ckeditor5-line-height@47.4.0': + resolution: {integrity: sha512-rJcz6ejZLrF5EZ23pKsl9LfVZNqjPm1vRdaxRiPbMjLmWSGgNc55MyLcX/tBBdf6ZNdSUR8cYnl2c5z4EmFTZg==} - '@ckeditor/ckeditor5-link@47.3.0': - resolution: {integrity: sha512-YbxZQHi36EF/O7deiDlrM8Xnw/J18x4dQgxaiHKTSHu7/4sZuVfJFAzF6afdt1uQ+8yeX3+q60jkJr2mm1zOEw==} + '@ckeditor/ckeditor5-link@47.4.0': + resolution: {integrity: sha512-AF7TVV64iOqia4x4psHakYYznPoS3I5j1Gijoa7jiTLGJZSaAL7xAc1qAajgWQ66o7DWuVGL7QkZwKIo1jlTPg==} - '@ckeditor/ckeditor5-list-multi-level@47.3.0': - resolution: {integrity: sha512-lG2QZb4iwig2TY6FxWT+DYbkbyfBikTM2T7FIflub4JcL4m0nwJ1Ybc9Fb6zFLqQd3FF/a1xEE2TbdmG4OlR2w==} + '@ckeditor/ckeditor5-list-multi-level@47.4.0': + resolution: {integrity: sha512-qmpjxT8Gn28OJDO7HjVmuBtO5oLu0AhWCCpdptMna4y/KpM1yej8suNhb3hXBJlqNgraCmOqsQvkzv+j0Pad8w==} - '@ckeditor/ckeditor5-list@47.3.0': - resolution: {integrity: sha512-iOJ4prpoqf1UamKztQ0If/k638+NGSPsFaGGjOqhGPcIJxTtscs4c34uNUH6yCXDNF1ZaET2FxFckAQvrb0DFQ==} + '@ckeditor/ckeditor5-list@47.4.0': + resolution: {integrity: sha512-OGvAgS+NB1dzrqhN1xEVfN8PTM73pjMnmDvQeQurwIfjQdJaO07jGPRqujQzNostckWvNPtQysXkbnp+QiCPOw==} - '@ckeditor/ckeditor5-markdown-gfm@47.3.0': - resolution: {integrity: sha512-PyRXnwnUmwW7pxe8DaV1sle/g45fp/e+1vzXgFIvLYWJO5i2Sych1yDbAU1RGbJr5R05eFS7Fov3bowzRE2ICA==} + '@ckeditor/ckeditor5-markdown-gfm@47.4.0': + resolution: {integrity: sha512-2W1dBzxPIdEsE0CiU19K4xQfBS2jSBruJh5XV924eyuJPh76CdXKDGPBwuVd6i1oK7x+ji0Griu9Y+R2F0jRIw==} - '@ckeditor/ckeditor5-media-embed@47.3.0': - resolution: {integrity: sha512-c0wP3VZp6409VMMRYL4z2ZiqCsP2p4RyHcfH8TZSy3g25pZnUbYpdMepHCxT0U5wLVdqhGMn7cW+k5Fq6Mp/hA==} + '@ckeditor/ckeditor5-media-embed@47.4.0': + resolution: {integrity: sha512-oL/In6Q3dtgj23FyyKbtYa704sl1eEx8JeO4ODRL3scCNI2/7qx9nGMexydiJi+Saulvs/3g7A8PbXiI+iArog==} - '@ckeditor/ckeditor5-mention@47.3.0': - resolution: {integrity: sha512-yIRbRSd0b66kUlur80kiskVMyymHvtg96endZ8FuGDjKgdLApFnkonNmpCNLAxGuwJDMfDyvyEikZy1i0bgWlg==} + '@ckeditor/ckeditor5-mention@47.4.0': + resolution: {integrity: sha512-1niRMaI5HxYbSTosxjU/6F5Uo+2hCEa3s18emwIBMTG1zOu0OViubuj+P8wCOqmSmpzvfkNybl4kk74MahGk0w==} - '@ckeditor/ckeditor5-merge-fields@47.3.0': - resolution: {integrity: sha512-pkkUqHK9Kbv6P1ElUgqOkTolHBFev0sFnSB2AQJAo996aL4Lr7HbK1u002vuJno3uK0OwtzH2Pq9mzcpIcEdPA==} + '@ckeditor/ckeditor5-merge-fields@47.4.0': + resolution: {integrity: sha512-meXLpFA1xa9Nq5WILE1fQeqk9+dgmHZShHaamI2hZaVIFv2GG/amAH3u/rhgSvvX+HvnDxMGCUU9db5yUQ/Y6g==} - '@ckeditor/ckeditor5-minimap@47.3.0': - resolution: {integrity: sha512-8JrmRwEMdIVoSp5Xms8sWHxlXcBPwhf7HjY35ptbS2sMQQ4RC9o5tbyLe8V2kGt8Qgmvx3F2H2VT9VFpQCUmFg==} + '@ckeditor/ckeditor5-minimap@47.4.0': + resolution: {integrity: sha512-j0bOrjhEB5U6wCrz8CgW8ueFgHJJORtgqkOiRfQd++SBHGULSRr/WJwvaObcrhhNrY4Mlme8Nws6s5YJxzlFhA==} - '@ckeditor/ckeditor5-operations-compressor@47.3.0': - resolution: {integrity: sha512-ke402PqaL7MSqxkrbyhS/hmjEuWBhzUuHR8KtoXvwJWhmNlcwtRi4Vn+b5vpJwh2VqaIoE7KJtoHhSZHkPoKJg==} + '@ckeditor/ckeditor5-operations-compressor@47.4.0': + resolution: {integrity: sha512-nHtjOR0fTrLygGF3wpihNfnw0eJ0Z8jbXtuoYRivWfiCptMsuXHG6CR9WNvQncleSlB5E1bS50hsyafHa2q2vw==} '@ckeditor/ckeditor5-package-tools@5.0.1': resolution: {integrity: sha512-9UN4qfHa4rgveBqyua9JQfqBWdL1KAsgn5veqJ8/GYTPnbkB7TjEm449B0c35dRoRRWJpWTu+P4eZHAieaXrUA==} engines: {node: '>=24.11.0'} hasBin: true - '@ckeditor/ckeditor5-page-break@47.3.0': - resolution: {integrity: sha512-ZvLfObeXnhYKs8+kcVBbjpAWQnGelVopnEIC0Ljds2cxyeUJ25pnLAZGKMcEOFvdm8Hh1OKnlfPWj3VRZMkrVw==} + '@ckeditor/ckeditor5-page-break@47.4.0': + resolution: {integrity: sha512-v4VR4OhLqj5Rp/Dwb9BSb9lSNAkGVF9n5ThvC0dFeHMikC4ENcqH8NpcbVnaua4tsM9tX0jZLHbcX+jMune4IQ==} - '@ckeditor/ckeditor5-pagination@47.3.0': - resolution: {integrity: sha512-cMEuXpKtbsTQJ5h3dAmsc+lOsPYb7Whofr0wHl1A7QOIbr8E+rUczepDwLGi22PL5SICEacTjnJwMJcotyfwXQ==} + '@ckeditor/ckeditor5-pagination@47.4.0': + resolution: {integrity: sha512-NH3jQpyKoB69HMrEuBSJszhcb417num35eUMcmQnfY1tfi5hxRwk/yk3okf2VUX9JPrmxEQiAitiof+PLK/3Xw==} - '@ckeditor/ckeditor5-paragraph@47.3.0': - resolution: {integrity: sha512-CCnCd57ySxYrb6XCocAzj49PH6jOc+YbsgVVQ4+4sMyOQR/d5VdgJAkQKO7m288nwvE+Ai9gMAl5rqiph+PcMg==} + '@ckeditor/ckeditor5-paragraph@47.4.0': + resolution: {integrity: sha512-epw82iXcK6togOeE/rolQBkyxCfz8m30VoH0bdq0YKkg8+HJ5uzB2FweFDH+l/cyoubdB2f1370G2dAMp6huBg==} - '@ckeditor/ckeditor5-paste-from-office-enhanced@47.3.0': - resolution: {integrity: sha512-u1pkLBhTo/Lubc/B8NdK0hF4VALed5ONf8oorBHZZpX0X0FkOi9jWgINydIPQIabWhxXylcitYkTsty4x1+5Wg==} + '@ckeditor/ckeditor5-paste-from-office-enhanced@47.4.0': + resolution: {integrity: sha512-8QhzqEQn7/MRmQoPzX+DV1Cx2IzrBubFPra8uZGbF2j8/nlFWP2vo3OwwkMu8xkfcKvHgJ6MIm76YN4Cbouffw==} - '@ckeditor/ckeditor5-paste-from-office@47.3.0': - resolution: {integrity: sha512-8M7pKMAI0cwviVx/QWYQRDfy9GLUUBVKrqBFuOu/lcxfsncL7BUJYVVvaOC+iN0I9Mi513XHz78FLi4PbRoC0A==} + '@ckeditor/ckeditor5-paste-from-office@47.4.0': + resolution: {integrity: sha512-yKOk+CDV0dAy+XeqUcP5Drur1u69h6UCdLwDUEbS/egSv/+o+tJwCGrTCRzPqBeUxIahUGBMk0obID7v6xT9IQ==} - '@ckeditor/ckeditor5-real-time-collaboration@47.3.0': - resolution: {integrity: sha512-X1xn1ZoOvl7+rLQvF7ex4tkYLrwsGIQtMm9ywxJC0nD49b0e0xAtaAquVSd/VgOxS+4M0ilXtQ8/f+nEDpgtXg==} + '@ckeditor/ckeditor5-real-time-collaboration@47.4.0': + resolution: {integrity: sha512-ZAwo6o+1WWLh6d8DVIOoI2+VyDDUAijWkqx09gTlXGPtOe3sJqYu3C/n+kbaoeCbEZGOWFKDUQvNpdxp8SRYIg==} - '@ckeditor/ckeditor5-remove-format@47.3.0': - resolution: {integrity: sha512-tGBSxVKu2fUO7oH2U4QyAb6+/47YFkEVwRPGvpwg4QUQn670qAJJenJBWqXEYFHK6V5mLDfD5xmKdTk79OXgTw==} + '@ckeditor/ckeditor5-remove-format@47.4.0': + resolution: {integrity: sha512-XD6LY76m3bZr/twRGTjNRnU4z0VU1akDC7evVMhRPaDruR71km00VT1YNPRChCDmdssEVeWEynHhLQ/kRjy+0w==} - '@ckeditor/ckeditor5-restricted-editing@47.3.0': - resolution: {integrity: sha512-DoJFgX7RXapubLnulcW6aFuTQD25jSPWMJA25EXHTHMq9ZQP69ey2kJgp2iioas0zpsKhnVzioUyIiGe28ufng==} + '@ckeditor/ckeditor5-restricted-editing@47.4.0': + resolution: {integrity: sha512-roywT2jKCs0NVd6TVhYlmrnP0oI4499M5L1mV8Vqq4wc9puVeEPSIKoZNdIF5YWXsHjpCUCMejpuigLTIbf9MQ==} - '@ckeditor/ckeditor5-revision-history@47.3.0': - resolution: {integrity: sha512-9w13dmn+Czp4Rou25BvxvzR43NqEUMdassu0NTSmQtIiDoMgMMGoqG2dzO/MZv9HQVuIaQ04sJm6uAe37Md1+w==} + '@ckeditor/ckeditor5-revision-history@47.4.0': + resolution: {integrity: sha512-kziSrEtya2mbqIKTruxAOOH+45X4lRKXkDFSqRO7nFV4Hcndwv/WpozOlz20h5gO8R7xclL+FoCOprsIQheV5Q==} - '@ckeditor/ckeditor5-select-all@47.3.0': - resolution: {integrity: sha512-pMWVdKDlLowiwnVGycJd0mW2jQ3HdlzzstfIhawhU2jspSY4Byk8XiPZ9Dyq6aAwEtdJOShLLau1dcVnB2OltA==} + '@ckeditor/ckeditor5-select-all@47.4.0': + resolution: {integrity: sha512-9fVsmNFmSj53kJKPKUmCkgpXUev2OeMJ5cFVKXvzEvsm6jFTO8/9iHRTbN/j/ZzWuK5MoO/I3gVn4wGOIX//zw==} - '@ckeditor/ckeditor5-show-blocks@47.3.0': - resolution: {integrity: sha512-vgmH/FqCHproRvVqXYLQrDeDgc5D+2iEK/MB7sRH75w+ZjP495XUYRtoZWud59yQ8P3kCgywycR74iyenxntlw==} + '@ckeditor/ckeditor5-show-blocks@47.4.0': + resolution: {integrity: sha512-uIFHsH2HMPYRWmK+heZoiXRVqbxFJZwYZY1WmNKjE5g7OM8y+PVowe0ZYICjauV2/Z2rwCWtodDKb1bnVnl+mQ==} - '@ckeditor/ckeditor5-slash-command@47.3.0': - resolution: {integrity: sha512-qXIJObofT5jWtM3bDJdDL/WdI8Q12Gbp7AGLrlv/QHRMEQSy+sYKqEC/n84Tr90xbgKn7vkX3jT4VVaCMjoBYQ==} + '@ckeditor/ckeditor5-slash-command@47.4.0': + resolution: {integrity: sha512-w9YeKsnHfGr6dG8kGyjLrUyZKlOrTCzxoquThw2okDKbs8ID6j6zIk6dEANFg4lDWWmV9Y17Y3Z0IX9wXqzbJw==} - '@ckeditor/ckeditor5-source-editing-enhanced@47.3.0': - resolution: {integrity: sha512-5ls3RduW8nod38RGABO68nV8N/f5bptpCPmrc2kQ9itxQtHzFWkVs0114sCSXPWfccw22f64kc/qaK0QCWf+hg==} + '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': + resolution: {integrity: sha512-0MPVCAOYTtn1QLkUK1O9YoQu5l+o9f6L6a9CANTEVvaXNJJeT5JxcbgdX/EIF91DHjIvhtY9q3s3ubN1oF2YCA==} - '@ckeditor/ckeditor5-source-editing@47.3.0': - resolution: {integrity: sha512-a2hFkyUzDJBpPh5jF3+LUO356PeQ84/Amqp9Y8oqzk6nKXlfr5IdPU1kQTkwDxee7F85EUNd2/wRZm4tLKL02A==} + '@ckeditor/ckeditor5-source-editing@47.4.0': + resolution: {integrity: sha512-AtamOK+Dya6abkuo9XYME05FYFigBRic5gr3/KzhyFfHh7qiFlZFLCDH0S/JEQ0AduFjfgUx4h0ST22RIhiYoA==} - '@ckeditor/ckeditor5-special-characters@47.3.0': - resolution: {integrity: sha512-kh9gONY8HqP1hQ5AImLzYyiecyVRHmyGE9xc1koyOV5HvZ3X+ogTWuAFqG5e3zjLaVCeKQKXkbuBS6/+Gi2NxQ==} + '@ckeditor/ckeditor5-special-characters@47.4.0': + resolution: {integrity: sha512-eYP23WZY8ayA0q8LNVCUcP85yf9J2gSpVE9E6LNIku4rbzox6mCf0sZF0ZhzvqHyXyj9Mn+S21IZpLOTuTUW0g==} - '@ckeditor/ckeditor5-style@47.3.0': - resolution: {integrity: sha512-EsQ3ZZccrsniKadcfjBI7HJgsNbZAl6NomQBKauvTQzmOoL90Ouffp6yIQTIQkIgm/xzIh2zVhGTcw84VoioJw==} + '@ckeditor/ckeditor5-style@47.4.0': + resolution: {integrity: sha512-R6kt9jX9FOnYRXKn7kX0ZdIdW5A3S7ZZBfcdwzG9O/t7r5IIkp+yhC1y6/uBAc2twvvqMhG7Gu5KH2o/TVVjSg==} - '@ckeditor/ckeditor5-table@47.3.0': - resolution: {integrity: sha512-YVupV2lEvE8tJi2tSnrthT1GCdzA0+zv4x0AQR5fBKfu82fux7vxKb222UnHkHhazrR3dGY5MSBRjIaDerY3TA==} + '@ckeditor/ckeditor5-table@47.4.0': + resolution: {integrity: sha512-gWraeB14YnpR+ELySu3xgSFlfur07ZBPN76rQuiIobrecKwhh1Az8rk7Qo4c1K/q/f4pHmqh87nhSprn7Mo7+w==} - '@ckeditor/ckeditor5-template@47.3.0': - resolution: {integrity: sha512-/e9aYr4n5pRca9ytfzUvNFbsZhQn4//bbZbLyosPxTccdjvoonROTYn4a/TqkE1Ff1JYhj2IN3N39vp2H3Eoqg==} + '@ckeditor/ckeditor5-template@47.4.0': + resolution: {integrity: sha512-zLL7mEqdAeSBSJ1LgacQ0OqPxOyz0PBcEOBD0xtHheomP5mHg7l2rF/w1dT3LQ8kSJoDq3KEIDaB6ErWfueX6g==} - '@ckeditor/ckeditor5-theme-lark@47.3.0': - resolution: {integrity: sha512-ovaRKQAVTqlmYlpo3y9q1iu+5SKmmdjBTFDRGRgZ9nXNuD2vmikJA4pG5A4aNKLl/d3/LIkPfbn2g2w9VIlb7Q==} + '@ckeditor/ckeditor5-theme-lark@47.4.0': + resolution: {integrity: sha512-kdtwV5HJ+8/oNcsGM8sdpULhXr2TfM7gEKlH/EAdycLDa6topcJuTl7iVSEu4hZzwVo2agiEMmdUIf3dvWweow==} - '@ckeditor/ckeditor5-track-changes@47.3.0': - resolution: {integrity: sha512-kAKEIlI3FiHuWa/FwZVaGxr+MwU2dBAy4yPuZChv7JgEr3GywdirUl3WKbSoDJoW1MWaAC3FwYaUCYMRQfo03Q==} + '@ckeditor/ckeditor5-track-changes@47.4.0': + resolution: {integrity: sha512-33pFlkjjsxGUXImdpfJJWWWZ4UlpKxIiLntt+buRDsj2pw1K34j5jtIEqAKpdMhSj5W2HXZiXsRrfI+mBd5lyg==} - '@ckeditor/ckeditor5-typing@47.3.0': - resolution: {integrity: sha512-hxwdd4hcCXLMFehS9/DLlcl+Bx+TlF+gG8f1DqNmpmqRbbVtfMFfMlHuqKC7+0c3TLJz7f0F5ih681s2H4t9RA==} + '@ckeditor/ckeditor5-typing@47.4.0': + resolution: {integrity: sha512-+YmCUTLVAryK5h68TgQ0qxDngs1MTCLKPDXxHzNqs0oXHai9YkJv/zg4zeb0/RQRIps7jh3bPapZoi2hP2iN3A==} - '@ckeditor/ckeditor5-ui@47.3.0': - resolution: {integrity: sha512-dDHvfIxNfo3z00KwDO6nHCx9ZC2vVEQ+lMmpjbMD8P3FzGRPRd7NqzRbPoieDKlgAiG6Sa2CLThqA+71C+RMfw==} + '@ckeditor/ckeditor5-ui@47.4.0': + resolution: {integrity: sha512-sL67wp2DX+P3zxeJLo2I7yLhBlX6Zhd0xfUAB6vX6SkjhMeC0L2gLOIr3kKq/OMKEuS+0iZ+qVvEN1j+2Flzlg==} - '@ckeditor/ckeditor5-undo@47.3.0': - resolution: {integrity: sha512-vO0WCOQBC1Cj7hCxh3+VhQNrANiBjj+8561XkLGhDpQt/lpzuEqXn11Rx4BXjSzpuDZvNnMNO9duzXfEfVjAzw==} + '@ckeditor/ckeditor5-undo@47.4.0': + resolution: {integrity: sha512-OnxpJb9glDwuSTl59Yb4+6bjWW5h4BA+94YhesKZXeIaXjyzwFmNGxM07nRyaX4KXwGVP5y5JZC2xv5bCOXKSQ==} - '@ckeditor/ckeditor5-upload@47.3.0': - resolution: {integrity: sha512-j4GngBlxg/tjztS/B67RD/OUrTYQhrwDYSpAjXV6shabwEbtEadsKLYgpXPR12ENB30mmrYKIRC/pgT5/wXc6Q==} + '@ckeditor/ckeditor5-upload@47.4.0': + resolution: {integrity: sha512-9gMfYltVNi5aYNs8IixTXww9kyU0+oEeY9pN8W6YLrhToVJdnN14pW3yNkQJKJPK7HS2RgM6L1Y+u50qu/IL2g==} - '@ckeditor/ckeditor5-uploadcare@47.3.0': - resolution: {integrity: sha512-U9M19IUhVbARfYCBv124o6OJ8Sevv5ZSQ4XoqyNylrPCulB0UmDbV92Y57uR20voBtmVGtY/LRGD07iHjLZ3fA==} + '@ckeditor/ckeditor5-uploadcare@47.4.0': + resolution: {integrity: sha512-sPw7UGZosBOMVMcshOYPNXkq3hSQA7LCFij4WrXvmnJSC9Qb9SabqhEDxoDeLrwy4I5ZWHWR2Xyut4O/uBWO5w==} - '@ckeditor/ckeditor5-utils@47.3.0': - resolution: {integrity: sha512-RF5iAkI7NpVYZW1Fo+BhIQmPNLqA6iRVNoqo43P7vE8QfvG0fYB1Ff3jsEeM4UVV/G6pABBhE+9UMpwJcBuxWw==} + '@ckeditor/ckeditor5-utils@47.4.0': + resolution: {integrity: sha512-+5v1k3+8Yr0VUnO+3GfP7MsDCqt5KD9f9Z5wUVRig/J61hPTv8cUQp0859K87IuOLdAP/rZ1iQpdi1psanQeIQ==} - '@ckeditor/ckeditor5-watchdog@47.3.0': - resolution: {integrity: sha512-gurXEgfiIvnmmd7u68PdffdAaYFuNuAE8fJoWeJFMzrrFGuG7TvGmulXG/Wom2D4D+eW7wQE93Sisx9wIfAcPQ==} + '@ckeditor/ckeditor5-watchdog@47.4.0': + resolution: {integrity: sha512-MEfHIVYV4SILXi++G00y3wREm/1gT5dO+pTGpQY+NNYw8wgi32rg1q8hO2P/upsVaPzbeD3WLURyqeIxKwY20Q==} - '@ckeditor/ckeditor5-widget@47.3.0': - resolution: {integrity: sha512-8IagE3JdKLM04KB3XR2SCDJTIlmtGOhkfWZBn9kwy7g8SIjI2bJARA/0wgXMGlzUV2AMbbxb0HdkMEK6Xxg/nQ==} + '@ckeditor/ckeditor5-widget@47.4.0': + resolution: {integrity: sha512-wffwrMQ6h+Hdu9IMG0H0QAf0YWWn+AGeJwPs69cRjRwB5pNOCUmMyM4h8MtNp15UEvGGARlhOjFf1TniMUkKrw==} - '@ckeditor/ckeditor5-word-count@47.3.0': - resolution: {integrity: sha512-VluTjPWaJnYS6uoJfi8XJZIBPzfrARH4RBEHOBto4SM1jNdSV0gltz6jfNSteGXm4Bl+VdBgltzRAXqsugi2Vg==} + '@ckeditor/ckeditor5-word-count@47.4.0': + resolution: {integrity: sha512-JeiwHJyBdlUCdzfW3K2KoGO/QhDe1qOKNPXiVXzExIyZpww+hm5HjV/zi5gX4xAvWg9ew0UaQRco5Dy7mBBfRQ==} '@codemirror/autocomplete@6.18.6': resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==} @@ -4789,10 +4789,6 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@smithy/abort-controller@4.2.5': - resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==} - engines: {node: '>=18.0.0'} - '@smithy/abort-controller@4.2.8': resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} engines: {node: '>=18.0.0'} @@ -4801,10 +4797,6 @@ packages: resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.20.5': - resolution: {integrity: sha512-0Tz77Td8ynHaowXfOdrD0F1IH4tgWGUhwmLwmpFyTbr+U9WHXNNp9u/k2VjBXGnSe7BwjBERRpXsokGTXzNjhA==} - engines: {node: '>=18.0.0'} - '@smithy/core@3.20.6': resolution: {integrity: sha512-BpAffW1mIyRZongoKBbh3RgHG+JDHJek/8hjA/9LnPunM+ejorO6axkxCgwxCe4K//g/JdPeR9vROHDYr/hfnQ==} engines: {node: '>=18.0.0'} @@ -4833,10 +4825,6 @@ packages: resolution: {integrity: sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.3.6': - resolution: {integrity: sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==} - engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.3.9': resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} engines: {node: '>=18.0.0'} @@ -4861,10 +4849,6 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.6': - resolution: {integrity: sha512-dpq3bHqbEOBqGBjRVHVFP3eUSPpX0BYtg1D5d5Irgk6orGGAuZfY22rC4sErhg+ZfY/Y0kPqm1XpAmDZg7DeuA==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.7': resolution: {integrity: sha512-SCmhUG1UwtnEhF5Sxd8qk7bJwkj1BpFzFlHkXqKCEmDPLrRjJyTGM0EhqT7XBtDaDJjCfjRJQodgZcKDR843qg==} engines: {node: '>=18.0.0'} @@ -4873,10 +4857,6 @@ packages: resolution: {integrity: sha512-lLEmkQj7I7oKfvZ1wsnToGJouLOtfkMXDKRA1Hi6F+mMp5O1N8GcVWmVeNgTtgZtd0OTXDTI2vpVQmeutydGew==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.2.6': - resolution: {integrity: sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.2.9': resolution: {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} engines: {node: '>=18.0.0'} @@ -4889,10 +4869,6 @@ packages: resolution: {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.4.5': - resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==} - engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.4.8': resolution: {integrity: sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==} engines: {node: '>=18.0.0'} @@ -4905,18 +4881,10 @@ packages: resolution: {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.2.5': - resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==} - engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.2.8': resolution: {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.2.5': - resolution: {integrity: sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==} - engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.2.8': resolution: {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} engines: {node: '>=18.0.0'} @@ -4933,10 +4901,6 @@ packages: resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.7': - resolution: {integrity: sha512-Uznt0I9z3os3Z+8pbXrOSCTXCA6vrjyN7Ub+8l2pRDum44vLv8qw0qGVkJN0/tZBZotaEFHrDPKUoPNueTr5Vg==} - engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.8': resolution: {integrity: sha512-wcr3UEL26k7lLoyf9eVDZoD1nNY3Fa1gbNuOXvfxvVWLGkOVW+RYZgUUp/bXHryJfycIOQnBq9o1JAE00ax8HQ==} engines: {node: '>=18.0.0'} @@ -4945,10 +4909,6 @@ packages: resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.2.5': - resolution: {integrity: sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==} - engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.2.8': resolution: {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} engines: {node: '>=18.0.0'} @@ -5794,21 +5754,24 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@uploadcare/cname-prefix@6.17.0': - resolution: {integrity: sha512-UqomH1TtegTmltLhwnKTN4fPNzUlXx6LQZj0YNIkiA726ih+ao6oPS9ER1rvz/XX4e5EOl7/aj+AHHIscLPncQ==} + '@uploadcare/cname-prefix@6.18.3': + resolution: {integrity: sha512-LVmmjEEkGyvnHefhfXknfnebYTn12Unk2IqkYhfk1qV5LQfMvOT6Led6+Usw0rr1XME25h9fZv/GmF82rXkQOA==} - '@uploadcare/file-uploader@1.19.4': - resolution: {integrity: sha512-xCnXtQyvoujHEGEjZNNGiF/94PZ519nkp+hWovvn/w1WIRSwJ2finD214C54X50J4Yefw2f9KmkT8d8cqXnjtA==} + '@uploadcare/file-uploader@1.24.5': + resolution: {integrity: sha512-iPIZBydZtVBkjd3uZNUyLk6fo23Lh9I7Rmx5W6QjKrKBY6FEUuKDDM42EcnXvoFRZHSeobe7KC4oOTGQDEWbUQ==} - '@uploadcare/image-shrink@6.17.0': - resolution: {integrity: sha512-9ZIQR2Uad7BeSH0hqo7W/VenHCwnEqRjFpN6SGynTzG6BxoH/HK8NkuMKdJ8URFisW7dZSXpVMZrCL5kf7FfKA==} + '@uploadcare/image-shrink@6.18.3': + resolution: {integrity: sha512-w+Hao5vXpPFiJc5Z0IbajEo8SeF08BgwdgbFmRqHED0zsev5TCwFj5WSa/G4Jx3CPXu7JvFwbpiSMqpEciFjSA==} + + '@uploadcare/quality-insights@6.18.3': + resolution: {integrity: sha512-uJh3zFLOkR3fe/nUnxdu+xJpqY3GW8Y3tj3t7U41jhoZ1k5BH/U9M93gSAdmkxnTByNIms6/WtLI7X5jyXAy6Q==} '@uploadcare/upload-client@6.14.3': resolution: {integrity: sha512-uZDXb2IuFchpNQdHDxDowKgGPd+9UOy0PIykWEPedMbbBYxh7/UUQ+G53E4KhKe7cV7BV4zoFxUrNx+Ij0lyPw==} engines: {node: '>=16'} - '@uploadcare/upload-client@6.17.0': - resolution: {integrity: sha512-ir6xo6HLy3TVn4lVJ+9fOOcq8vvgMmcXoSP/mM+l1CTKKJmd0hzXqNkZ1CYyz7PiRhLPUC6fprmUuA7rnVC87g==} + '@uploadcare/upload-client@6.18.3': + resolution: {integrity: sha512-kUDV5J+DXUl1SnO0IccRseXOK6sZolMHBHHNH+UNVoA/Ubr3r/bOFw4QTcImdn6PFUmlt9MvYvQfCHswuGvJNA==} engines: {node: '>=16'} '@vitest/browser-webdriverio@4.0.17': @@ -6705,16 +6668,16 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - ckeditor5-collaboration@47.3.0: - resolution: {integrity: sha512-J7+6bKoMNtk+UeXEEBhOAieBf+X66rL6fGFXYMnUvo01KyqukAuRH0+pGRJn/CrJ5ulpjn77K1ddohHDooFWug==} + ckeditor5-collaboration@47.4.0: + resolution: {integrity: sha512-SNwRWFy6DcU1R9wHpRvXq6YLbpMExRoGwms+JF1bKZK9afHznGOouoMPSpHNrkE27OMem6r0SlXAryUPQh4Pfg==} - ckeditor5-premium-features@47.3.0: - resolution: {integrity: sha512-rI0OA9lQZQ0csoEWJnja/vXDdXbbnYzx75vRZYuTIl+czKM6be+nZValyYJym68SkTR6d0Z902G1zeXg1SFG9A==} + ckeditor5-premium-features@47.4.0: + resolution: {integrity: sha512-z9eRJZecNKu+D8YpCI7IttijZedhqeS6B+KyhuZrBRBtD3eqKyAUb6oiqE7EQvjwaRHrj9B5o9mtKlX51X5RPQ==} peerDependencies: - ckeditor5: 47.3.0 + ckeditor5: 47.4.0 - ckeditor5@47.3.0: - resolution: {integrity: sha512-3UDvnAi8TB/5i9flEFfOLIQAIWUoIbucvvFCqKWJqpfZy3F3k34GLEgDV/3VM6O6QV+UNHbzYaSTAl4yKVvoXg==} + ckeditor5@47.4.0: + resolution: {integrity: sha512-6RTRV2w6nhmBSLBnA0O9QzcBC/Cf74ogziaKHOK61H+PcM6aP3ltb/fNScGyy3NVw3+OzaxjbPF7NSykVmmMMw==} classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -14542,24 +14505,24 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.20.5 + '@smithy/core': 3.20.6 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 - '@smithy/fetch-http-handler': 5.3.6 + '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-endpoint': 4.4.7 '@smithy/middleware-retry': 4.4.23 - '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 - '@smithy/node-http-handler': 4.4.5 + '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.5 + '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.0.0 @@ -14591,19 +14554,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.20.5 + '@smithy/core': 3.20.6 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-endpoint': 4.4.7 '@smithy/middleware-retry': 4.4.23 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -14623,12 +14586,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.20.5 + '@smithy/core': 3.20.6 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 @@ -14653,7 +14616,7 @@ snapshots: '@smithy/node-http-handler': 4.4.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 @@ -14765,7 +14728,7 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 '@aws-sdk/util-endpoints': 3.821.0 - '@smithy/core': 3.20.5 + '@smithy/core': 3.20.6 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -14785,19 +14748,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.20.5 + '@smithy/core': 3.20.6 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.6 + '@smithy/middleware-endpoint': 4.4.7 '@smithy/middleware-retry': 4.4.23 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15096,10 +15059,10 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@ckeditor/ckeditor-cloud-services-collaboration@53.0.1(@ckeditor/ckeditor5-utils@47.3.0)(bufferutil@4.0.9)(ckeditor5@47.3.0)(utf-8-validate@6.0.5)': + '@ckeditor/ckeditor-cloud-services-collaboration@53.0.2(@ckeditor/ckeditor5-utils@47.4.0)(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5)': dependencies: - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 protobufjs: 7.5.0 socket.io-client: 4.7.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) socket.io-parser: 4.2.4 @@ -15110,31 +15073,29 @@ snapshots: - supports-color - utf-8-validate - '@ckeditor/ckeditor5-adapter-ckfinder@47.3.0': + '@ckeditor/ckeditor5-adapter-ckfinder@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-upload': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-upload': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-ai@47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': + '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: '@aws-sdk/client-bedrock-runtime': 3.823.0 - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-markdown-gfm': 47.3.0 - '@ckeditor/ckeditor5-real-time-collaboration': 47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@ckeditor/ckeditor5-table': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - ckeditor5-collaboration: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-markdown-gfm': 47.4.0 + '@ckeditor/ckeditor5-real-time-collaboration': 47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@ckeditor/ckeditor5-table': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + ckeditor5-collaboration: 47.4.0 diff: 8.0.2 dom-serializer: 2.0.0 domhandler: 5.0.3 @@ -15149,186 +15110,186 @@ snapshots: - supports-color - utf-8-validate - '@ckeditor/ckeditor5-alignment@47.3.0': + '@ckeditor/ckeditor5-alignment@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-autoformat@47.3.0': + '@ckeditor/ckeditor5-autoformat@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-autosave@47.3.0': + '@ckeditor/ckeditor5-autosave@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-basic-styles@47.3.0': + '@ckeditor/ckeditor5-basic-styles@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-block-quote@47.3.0': + '@ckeditor/ckeditor5-block-quote@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-bookmark@47.3.0': + '@ckeditor/ckeditor5-bookmark@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-link': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-link': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-case-change@47.3.0': + '@ckeditor/ckeditor5-case-change@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-ckbox@47.3.0': + '@ckeditor/ckeditor5-ckbox@47.4.0': dependencies: - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-upload': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-upload': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 blurhash: 2.0.5 - ckeditor5: 47.3.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-ckfinder@47.3.0': + '@ckeditor/ckeditor5-ckfinder@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-clipboard@47.3.0': + '@ckeditor/ckeditor5-clipboard@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 + + '@ckeditor/ckeditor5-cloud-services@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-cloud-services@47.3.0': + '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-code-block@47.3.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': - dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-collaboration-core@47.3.0': + '@ckeditor/ckeditor5-collaboration-core@47.4.0': dependencies: - '@ckeditor/ckeditor5-comments': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-link': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-track-changes': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 + '@ckeditor/ckeditor5-comments': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-link': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-track-changes': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 '@types/luxon': 3.6.2 - ckeditor5: 47.3.0 + ckeditor5: 47.4.0 diff: 8.0.2 luxon: 3.6.1 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-comments@47.3.0': + '@ckeditor/ckeditor5-comments@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-paragraph': 47.3.0 - '@ckeditor/ckeditor5-revision-history': 47.3.0 - '@ckeditor/ckeditor5-select-all': 47.3.0 - '@ckeditor/ckeditor5-source-editing': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-undo': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 - ckeditor5-collaboration: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-paragraph': 47.4.0 + '@ckeditor/ckeditor5-revision-history': 47.4.0 + '@ckeditor/ckeditor5-select-all': 47.4.0 + '@ckeditor/ckeditor5-source-editing': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-undo': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + ckeditor5-collaboration: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-core@47.3.0': + '@ckeditor/ckeditor5-core@47.4.0': dependencies: - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-watchdog': 47.3.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color @@ -15427,393 +15388,389 @@ snapshots: - uglify-js - webpack - '@ckeditor/ckeditor5-document-outline@47.3.0': + '@ckeditor/ckeditor5-document-outline@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 - '@ckeditor/ckeditor5-easy-image@47.3.0': + '@ckeditor/ckeditor5-easy-image@47.4.0': dependencies: - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-upload': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-upload': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-editor-balloon@47.3.0': + '@ckeditor/ckeditor5-editor-balloon@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + es-toolkit: 1.39.5 + + '@ckeditor/ckeditor5-editor-classic@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + es-toolkit: 1.39.5 + + '@ckeditor/ckeditor5-editor-decoupled@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + es-toolkit: 1.39.5 + + '@ckeditor/ckeditor5-editor-inline@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-editor-classic@47.3.0': + '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-editor-decoupled@47.3.0': + '@ckeditor/ckeditor5-email@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - es-toolkit: 1.39.5 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-export-inline-styles': 47.4.0 + '@ckeditor/ckeditor5-font': 47.4.0 + '@ckeditor/ckeditor5-html-support': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-table': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-editor-inline@47.3.0': + '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-editor-multi-root@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-email@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-export-inline-styles': 47.3.0 - '@ckeditor/ckeditor5-font': 47.3.0 - '@ckeditor/ckeditor5-html-support': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-table': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-emoji@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-mention': 47.3.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-mention': 47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 fuzzysort: 3.1.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-engine@47.3.0': + '@ckeditor/ckeditor5-engine@47.4.0': dependencies: - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 - '@ckeditor/ckeditor5-enter@47.3.0': + '@ckeditor/ckeditor5-enter@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + + '@ckeditor/ckeditor5-essentials@47.4.0': + dependencies: + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-select-all': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-undo': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-essentials@47.3.0': + '@ckeditor/ckeditor5-export-inline-styles@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-select-all': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-undo': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-export-inline-styles@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 specificity: 0.4.1 - '@ckeditor/ckeditor5-export-pdf@47.3.0': + '@ckeditor/ckeditor5-export-pdf@47.4.0': dependencies: - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-merge-fields': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-export-word@47.3.0': - dependencies: - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 - '@ckeditor/ckeditor5-comments': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-merge-fields': 47.3.0 - '@ckeditor/ckeditor5-track-changes': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-merge-fields': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-find-and-replace@47.3.0': + '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + '@ckeditor/ckeditor5-comments': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-merge-fields': 47.4.0 + '@ckeditor/ckeditor5-track-changes': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-find-and-replace@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + es-toolkit: 1.39.5 + + '@ckeditor/ckeditor5-font@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-footnotes@47.4.0': + dependencies: + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + + '@ckeditor/ckeditor5-format-painter@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + + '@ckeditor/ckeditor5-fullscreen@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-editor-classic': 47.4.0 + '@ckeditor/ckeditor5-editor-decoupled': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-heading@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-paragraph': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-highlight@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-horizontal-line@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + + '@ckeditor/ckeditor5-html-embed@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-html-support@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-remove-format': 47.4.0 + '@ckeditor/ckeditor5-table': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-font@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color + '@ckeditor/ckeditor5-icons@47.4.0': {} - '@ckeditor/ckeditor5-footnotes@47.3.0': + '@ckeditor/ckeditor5-image@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-format-painter@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-fullscreen@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-editor-classic': 47.3.0 - '@ckeditor/ckeditor5-editor-decoupled': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-heading@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-paragraph': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-highlight@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-horizontal-line@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-html-embed@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color - - '@ckeditor/ckeditor5-html-support@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-remove-format': 47.3.0 - '@ckeditor/ckeditor5-table': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-undo': 47.4.0 + '@ckeditor/ckeditor5-upload': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-icons@47.3.0': {} - - '@ckeditor/ckeditor5-image@47.3.0': + '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-undo': 47.3.0 - '@ckeditor/ckeditor5-upload': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 - es-toolkit: 1.39.5 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-merge-fields': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-import-word@47.3.0': + '@ckeditor/ckeditor5-indent@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-merge-fields': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-indent@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} - '@ckeditor/ckeditor5-language@47.3.0': + '@ckeditor/ckeditor5-language@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-line-height@47.3.0': + '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-link@47.3.0': + '@ckeditor/ckeditor5-link@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 - - '@ckeditor/ckeditor5-list-multi-level@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-list@47.3.0': - dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-font': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-markdown-gfm@47.3.0': + '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + + '@ckeditor/ckeditor5-list@47.4.0': + dependencies: + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-font': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-markdown-gfm@47.4.0': + dependencies: + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 '@types/hast': 3.0.4 - ckeditor5: 47.3.0 + ckeditor5: 47.4.0 hast-util-from-dom: 5.0.1 hast-util-to-html: 9.0.5 hast-util-to-mdast: 10.1.2 @@ -15831,52 +15788,60 @@ snapshots: transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-media-embed@47.3.0': + '@ckeditor/ckeditor5-media-embed@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-undo': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-undo': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-mention@47.3.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': + '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-merge-fields@47.3.0': + '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-mention': 47.3.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-mention': 47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-minimap@47.3.0': + '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-operations-compressor@47.3.0': + '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 protobufjs: 7.5.0 @@ -15918,143 +15883,149 @@ snapshots: - utf-8-validate - webpack-cli - '@ckeditor/ckeditor5-page-break@47.3.0': + '@ckeditor/ckeditor5-page-break@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-pagination@47.3.0': + '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 - '@ckeditor/ckeditor5-paragraph@47.3.0': + '@ckeditor/ckeditor5-paragraph@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 - '@ckeditor/ckeditor5-paste-from-office-enhanced@47.3.0': + '@ckeditor/ckeditor5-paste-from-office-enhanced@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-paste-from-office': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-paste-from-office': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-paste-from-office@47.3.0': + '@ckeditor/ckeditor5-paste-from-office@47.4.0': dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-real-time-collaboration@47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': + '@ckeditor/ckeditor5-real-time-collaboration@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: - '@ckeditor/ckeditor-cloud-services-collaboration': 53.0.1(@ckeditor/ckeditor5-utils@47.3.0)(bufferutil@4.0.9)(ckeditor5@47.3.0)(utf-8-validate@6.0.5) - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-comments': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-editor-multi-root': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-operations-compressor': 47.3.0 - '@ckeditor/ckeditor5-revision-history': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-track-changes': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - ckeditor5-collaboration: 47.3.0 + '@ckeditor/ckeditor-cloud-services-collaboration': 53.0.2(@ckeditor/ckeditor5-utils@47.4.0)(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5) + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-comments': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-editor-multi-root': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-operations-compressor': 47.4.0 + '@ckeditor/ckeditor5-revision-history': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-track-changes': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + ckeditor5-collaboration: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@ckeditor/ckeditor5-remove-format@47.3.0': + '@ckeditor/ckeditor5-remove-format@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-restricted-editing@47.3.0': + '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-revision-history@47.3.0': + '@ckeditor/ckeditor5-revision-history@47.4.0': dependencies: - '@ckeditor/ckeditor5-autosave': 47.3.0 - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 - '@ckeditor/ckeditor5-comments': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-editor-classic': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-autosave': 47.4.0 + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + '@ckeditor/ckeditor5-comments': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-editor-classic': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 '@types/luxon': 3.6.2 - ckeditor5: 47.3.0 - ckeditor5-collaboration: 47.3.0 + ckeditor5: 47.4.0 + ckeditor5-collaboration: 47.4.0 es-toolkit: 1.39.5 luxon: 3.6.1 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-select-all@47.3.0': + '@ckeditor/ckeditor5-select-all@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 - '@ckeditor/ckeditor5-show-blocks@47.3.0': + '@ckeditor/ckeditor5-show-blocks@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-slash-command@47.3.0': + '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-mention': 47.3.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) - '@ckeditor/ckeditor5-style': 47.3.0 - '@ckeditor/ckeditor5-template': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-mention': 47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) + '@ckeditor/ckeditor5-style': 47.4.0 + '@ckeditor/ckeditor5-template': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color - '@ckeditor/ckeditor5-source-editing-enhanced@47.3.0': + '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 '@codemirror/autocomplete': 6.18.6 '@codemirror/commands': 6.8.1 '@codemirror/lang-html': 6.4.11 @@ -16063,108 +16034,112 @@ snapshots: '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.2 '@codemirror/view': 6.39.11 - ckeditor5: 47.3.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-source-editing@47.3.0': + '@ckeditor/ckeditor5-source-editing@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-special-characters@47.3.0': + '@ckeditor/ckeditor5-special-characters@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 - '@ckeditor/ckeditor5-style@47.3.0': + '@ckeditor/ckeditor5-style@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-html-support': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-table': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - es-toolkit: 1.39.5 - - '@ckeditor/ckeditor5-table@47.3.0': - dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - ckeditor5: 47.3.0 - es-toolkit: 1.39.5 - - '@ckeditor/ckeditor5-template@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - - '@ckeditor/ckeditor5-theme-lark@47.3.0': - dependencies: - '@ckeditor/ckeditor5-ui': 47.3.0 - - '@ckeditor/ckeditor5-track-changes@47.3.0': - dependencies: - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-code-block': 47.3.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95) - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 - '@ckeditor/ckeditor5-comments': 47.3.0 - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-editor-multi-root': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-find-and-replace': 47.3.0 - '@ckeditor/ckeditor5-font': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-highlight': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-link': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-media-embed': 47.3.0 - '@ckeditor/ckeditor5-merge-fields': 47.3.0 - '@ckeditor/ckeditor5-restricted-editing': 47.3.0 - '@ckeditor/ckeditor5-style': 47.3.0 - '@ckeditor/ckeditor5-table': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 - ckeditor5-collaboration: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-html-support': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-table': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-typing@47.3.0': + '@ckeditor/ckeditor5-table@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + ckeditor5: 47.4.0 + es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-template@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + + '@ckeditor/ckeditor5-theme-lark@47.4.0': + dependencies: + '@ckeditor/ckeditor5-ui': 47.4.0 + + '@ckeditor/ckeditor5-track-changes@47.4.0': + dependencies: + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-code-block': 47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95) + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + '@ckeditor/ckeditor5-comments': 47.4.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-editor-multi-root': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-find-and-replace': 47.4.0 + '@ckeditor/ckeditor5-font': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-highlight': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-link': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-media-embed': 47.4.0 + '@ckeditor/ckeditor5-merge-fields': 47.4.0 + '@ckeditor/ckeditor5-restricted-editing': 47.4.0 + '@ckeditor/ckeditor5-style': 47.4.0 + '@ckeditor/ckeditor5-table': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 + ckeditor5-collaboration: 47.4.0 + es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-typing@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 - '@ckeditor/ckeditor5-ui@47.3.0': + '@ckeditor/ckeditor5-ui@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-editor-multi-root': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-editor-multi-root': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 '@types/color-convert': 2.0.4 color-convert: 3.1.0 color-parse: 2.0.2 @@ -16173,68 +16148,72 @@ snapshots: transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-undo@47.3.0': + '@ckeditor/ckeditor5-undo@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 - '@ckeditor/ckeditor5-upload@47.3.0': + '@ckeditor/ckeditor5-upload@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 - '@ckeditor/ckeditor5-uploadcare@47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': + '@ckeditor/ckeditor5-uploadcare@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-upload': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@uploadcare/file-uploader': 1.19.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-upload': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@uploadcare/file-uploader': 1.24.5(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@uploadcare/upload-client': 6.14.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - ckeditor5: 47.3.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@ckeditor/ckeditor5-utils@47.3.0': + '@ckeditor/ckeditor5-utils@47.4.0': dependencies: - '@ckeditor/ckeditor5-ui': 47.3.0 + '@ckeditor/ckeditor5-ui': 47.4.0 es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color - '@ckeditor/ckeditor5-watchdog@47.3.0': + '@ckeditor/ckeditor5-watchdog@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-editor-multi-root': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-editor-multi-root': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color + + '@ckeditor/ckeditor5-widget@47.4.0': + dependencies: + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 - '@ckeditor/ckeditor5-widget@47.3.0': + '@ckeditor/ckeditor5-word-count@47.4.0': dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - es-toolkit: 1.39.5 - - '@ckeditor/ckeditor5-word-count@47.3.0': - dependencies: - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -19285,11 +19264,6 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@smithy/abort-controller@4.2.5': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/abort-controller@4.2.8': dependencies: '@smithy/types': 4.12.0 @@ -19303,19 +19277,6 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/core@3.20.5': - dependencies: - '@smithy/middleware-serde': 4.2.9 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-stream': 4.5.10 - '@smithy/util-utf8': 4.2.0 - '@smithy/uuid': 1.1.0 - tslib: 2.8.1 - '@smithy/core@3.20.6': dependencies: '@smithy/middleware-serde': 4.2.9 @@ -19367,14 +19328,6 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.6': - dependencies: - '@smithy/protocol-http': 5.3.8 - '@smithy/querystring-builder': 4.2.5 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 - tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.9': dependencies: '@smithy/protocol-http': 5.3.8 @@ -19409,17 +19362,6 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.6': - dependencies: - '@smithy/core': 3.20.5 - '@smithy/middleware-serde': 4.2.9 - '@smithy/node-config-provider': 4.3.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-middleware': 4.2.8 - tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.7': dependencies: '@smithy/core': 3.20.6 @@ -19443,12 +19385,6 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 - '@smithy/middleware-serde@4.2.6': - dependencies: - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/middleware-serde@4.2.9': dependencies: '@smithy/protocol-http': 5.3.8 @@ -19467,14 +19403,6 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.4.5': - dependencies: - '@smithy/abort-controller': 4.2.5 - '@smithy/protocol-http': 5.3.8 - '@smithy/querystring-builder': 4.2.5 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/node-http-handler@4.4.8': dependencies: '@smithy/abort-controller': 4.2.8 @@ -19493,23 +19421,12 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.2.5': - dependencies: - '@smithy/types': 4.12.0 - '@smithy/util-uri-escape': 4.2.0 - tslib: 2.8.1 - '@smithy/querystring-builder@4.2.8': dependencies: '@smithy/types': 4.12.0 '@smithy/util-uri-escape': 4.2.0 tslib: 2.8.1 - '@smithy/querystring-parser@4.2.5': - dependencies: - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/querystring-parser@4.2.8': dependencies: '@smithy/types': 4.12.0 @@ -19535,16 +19452,6 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.10.7': - dependencies: - '@smithy/core': 3.20.5 - '@smithy/middleware-endpoint': 4.4.6 - '@smithy/middleware-stack': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-stream': 4.5.10 - tslib: 2.8.1 - '@smithy/smithy-client@4.10.8': dependencies: '@smithy/core': 3.20.6 @@ -19559,12 +19466,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.2.5': - dependencies: - '@smithy/querystring-parser': 4.2.5 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/url-parser@4.2.8': dependencies: '@smithy/querystring-parser': 4.2.8 @@ -19602,7 +19503,7 @@ snapshots: '@smithy/util-defaults-mode-browser@4.0.22': dependencies: '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 bowser: 2.11.0 tslib: 2.8.1 @@ -19613,7 +19514,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.6 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.7 + '@smithy/smithy-client': 4.10.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -20585,32 +20486,35 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@uploadcare/cname-prefix@6.17.0': {} + '@uploadcare/cname-prefix@6.18.3': {} - '@uploadcare/file-uploader@1.19.4(bufferutil@4.0.9)(utf-8-validate@6.0.5)': + '@uploadcare/file-uploader@1.24.5(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: '@symbiotejs/symbiote': 1.11.7 - '@uploadcare/cname-prefix': 6.17.0 - '@uploadcare/image-shrink': 6.17.0 - '@uploadcare/upload-client': 6.17.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@uploadcare/cname-prefix': 6.18.3 + '@uploadcare/image-shrink': 6.18.3 + '@uploadcare/quality-insights': 6.18.3 + '@uploadcare/upload-client': 6.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) keyux: 0.7.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@uploadcare/image-shrink@6.17.0': {} + '@uploadcare/image-shrink@6.18.3': {} + + '@uploadcare/quality-insights@6.18.3': {} '@uploadcare/upload-client@6.14.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: - form-data: 4.0.4 + form-data: 4.0.5 ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - utf-8-validate - '@uploadcare/upload-client@6.17.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': + '@uploadcare/upload-client@6.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: - form-data: 4.0.4 + form-data: 4.0.5 ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -21773,107 +21677,109 @@ snapshots: chrome-trace-event@1.0.4: {} - ckeditor5-collaboration@47.3.0: + ckeditor5-collaboration@47.4.0: dependencies: - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + transitivePeerDependencies: + - supports-color - ckeditor5-premium-features@47.3.0(bufferutil@4.0.9)(ckeditor5@47.3.0)(utf-8-validate@6.0.5): + ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: - '@ckeditor/ckeditor5-ai': 47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@ckeditor/ckeditor5-case-change': 47.3.0 - '@ckeditor/ckeditor5-collaboration-core': 47.3.0 - '@ckeditor/ckeditor5-comments': 47.3.0 - '@ckeditor/ckeditor5-document-outline': 47.3.0 - '@ckeditor/ckeditor5-email': 47.3.0 - '@ckeditor/ckeditor5-export-inline-styles': 47.3.0 - '@ckeditor/ckeditor5-export-pdf': 47.3.0 - '@ckeditor/ckeditor5-export-word': 47.3.0 - '@ckeditor/ckeditor5-footnotes': 47.3.0 - '@ckeditor/ckeditor5-format-painter': 47.3.0 - '@ckeditor/ckeditor5-import-word': 47.3.0 - '@ckeditor/ckeditor5-line-height': 47.3.0 - '@ckeditor/ckeditor5-list-multi-level': 47.3.0 - '@ckeditor/ckeditor5-merge-fields': 47.3.0 - '@ckeditor/ckeditor5-pagination': 47.3.0 - '@ckeditor/ckeditor5-paste-from-office-enhanced': 47.3.0 - '@ckeditor/ckeditor5-real-time-collaboration': 47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@ckeditor/ckeditor5-revision-history': 47.3.0 - '@ckeditor/ckeditor5-slash-command': 47.3.0 - '@ckeditor/ckeditor5-source-editing-enhanced': 47.3.0 - '@ckeditor/ckeditor5-template': 47.3.0 - '@ckeditor/ckeditor5-track-changes': 47.3.0 - '@ckeditor/ckeditor5-uploadcare': 47.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) - '@ckeditor/ckeditor5-utils': 47.3.0 - ckeditor5: 47.3.0 + '@ckeditor/ckeditor5-ai': 47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@ckeditor/ckeditor5-case-change': 47.4.0 + '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + '@ckeditor/ckeditor5-comments': 47.4.0 + '@ckeditor/ckeditor5-document-outline': 47.4.0 + '@ckeditor/ckeditor5-email': 47.4.0 + '@ckeditor/ckeditor5-export-inline-styles': 47.4.0 + '@ckeditor/ckeditor5-export-pdf': 47.4.0 + '@ckeditor/ckeditor5-export-word': 47.4.0 + '@ckeditor/ckeditor5-footnotes': 47.4.0 + '@ckeditor/ckeditor5-format-painter': 47.4.0 + '@ckeditor/ckeditor5-import-word': 47.4.0 + '@ckeditor/ckeditor5-line-height': 47.4.0 + '@ckeditor/ckeditor5-list-multi-level': 47.4.0 + '@ckeditor/ckeditor5-merge-fields': 47.4.0 + '@ckeditor/ckeditor5-pagination': 47.4.0 + '@ckeditor/ckeditor5-paste-from-office-enhanced': 47.4.0 + '@ckeditor/ckeditor5-real-time-collaboration': 47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@ckeditor/ckeditor5-revision-history': 47.4.0 + '@ckeditor/ckeditor5-slash-command': 47.4.0 + '@ckeditor/ckeditor5-source-editing-enhanced': 47.4.0 + '@ckeditor/ckeditor5-template': 47.4.0 + '@ckeditor/ckeditor5-track-changes': 47.4.0 + '@ckeditor/ckeditor5-uploadcare': 47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + '@ckeditor/ckeditor5-utils': 47.4.0 + ckeditor5: 47.4.0 transitivePeerDependencies: - aws-crt - bufferutil - supports-color - utf-8-validate - ckeditor5@47.3.0: + ckeditor5@47.4.0: dependencies: - '@ckeditor/ckeditor5-adapter-ckfinder': 47.3.0 - '@ckeditor/ckeditor5-alignment': 47.3.0 - '@ckeditor/ckeditor5-autoformat': 47.3.0 - '@ckeditor/ckeditor5-autosave': 47.3.0 - '@ckeditor/ckeditor5-basic-styles': 47.3.0 - '@ckeditor/ckeditor5-block-quote': 47.3.0 - '@ckeditor/ckeditor5-bookmark': 47.3.0 - '@ckeditor/ckeditor5-ckbox': 47.3.0 - '@ckeditor/ckeditor5-ckfinder': 47.3.0 - '@ckeditor/ckeditor5-clipboard': 47.3.0 - '@ckeditor/ckeditor5-cloud-services': 47.3.0 - '@ckeditor/ckeditor5-code-block': 47.3.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95) - '@ckeditor/ckeditor5-core': 47.3.0 - '@ckeditor/ckeditor5-easy-image': 47.3.0 - '@ckeditor/ckeditor5-editor-balloon': 47.3.0 - '@ckeditor/ckeditor5-editor-classic': 47.3.0 - '@ckeditor/ckeditor5-editor-decoupled': 47.3.0 - '@ckeditor/ckeditor5-editor-inline': 47.3.0 - '@ckeditor/ckeditor5-editor-multi-root': 47.3.0 - '@ckeditor/ckeditor5-emoji': 47.3.0 - '@ckeditor/ckeditor5-engine': 47.3.0 - '@ckeditor/ckeditor5-enter': 47.3.0 - '@ckeditor/ckeditor5-essentials': 47.3.0 - '@ckeditor/ckeditor5-find-and-replace': 47.3.0 - '@ckeditor/ckeditor5-font': 47.3.0 - '@ckeditor/ckeditor5-fullscreen': 47.3.0 - '@ckeditor/ckeditor5-heading': 47.3.0 - '@ckeditor/ckeditor5-highlight': 47.3.0 - '@ckeditor/ckeditor5-horizontal-line': 47.3.0 - '@ckeditor/ckeditor5-html-embed': 47.3.0 - '@ckeditor/ckeditor5-html-support': 47.3.0 - '@ckeditor/ckeditor5-icons': 47.3.0 - '@ckeditor/ckeditor5-image': 47.3.0 - '@ckeditor/ckeditor5-indent': 47.3.0 - '@ckeditor/ckeditor5-language': 47.3.0 - '@ckeditor/ckeditor5-link': 47.3.0 - '@ckeditor/ckeditor5-list': 47.3.0 - '@ckeditor/ckeditor5-markdown-gfm': 47.3.0 - '@ckeditor/ckeditor5-media-embed': 47.3.0 - '@ckeditor/ckeditor5-mention': 47.3.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) - '@ckeditor/ckeditor5-minimap': 47.3.0 - '@ckeditor/ckeditor5-page-break': 47.3.0 - '@ckeditor/ckeditor5-paragraph': 47.3.0 - '@ckeditor/ckeditor5-paste-from-office': 47.3.0 - '@ckeditor/ckeditor5-remove-format': 47.3.0 - '@ckeditor/ckeditor5-restricted-editing': 47.3.0 - '@ckeditor/ckeditor5-select-all': 47.3.0 - '@ckeditor/ckeditor5-show-blocks': 47.3.0 - '@ckeditor/ckeditor5-source-editing': 47.3.0 - '@ckeditor/ckeditor5-special-characters': 47.3.0 - '@ckeditor/ckeditor5-style': 47.3.0 - '@ckeditor/ckeditor5-table': 47.3.0 - '@ckeditor/ckeditor5-theme-lark': 47.3.0 - '@ckeditor/ckeditor5-typing': 47.3.0 - '@ckeditor/ckeditor5-ui': 47.3.0 - '@ckeditor/ckeditor5-undo': 47.3.0 - '@ckeditor/ckeditor5-upload': 47.3.0 - '@ckeditor/ckeditor5-utils': 47.3.0 - '@ckeditor/ckeditor5-watchdog': 47.3.0 - '@ckeditor/ckeditor5-widget': 47.3.0 - '@ckeditor/ckeditor5-word-count': 47.3.0 + '@ckeditor/ckeditor5-adapter-ckfinder': 47.4.0 + '@ckeditor/ckeditor5-alignment': 47.4.0 + '@ckeditor/ckeditor5-autoformat': 47.4.0 + '@ckeditor/ckeditor5-autosave': 47.4.0 + '@ckeditor/ckeditor5-basic-styles': 47.4.0 + '@ckeditor/ckeditor5-block-quote': 47.4.0 + '@ckeditor/ckeditor5-bookmark': 47.4.0 + '@ckeditor/ckeditor5-ckbox': 47.4.0 + '@ckeditor/ckeditor5-ckfinder': 47.4.0 + '@ckeditor/ckeditor5-clipboard': 47.4.0 + '@ckeditor/ckeditor5-cloud-services': 47.4.0 + '@ckeditor/ckeditor5-code-block': 47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95) + '@ckeditor/ckeditor5-core': 47.4.0 + '@ckeditor/ckeditor5-easy-image': 47.4.0 + '@ckeditor/ckeditor5-editor-balloon': 47.4.0 + '@ckeditor/ckeditor5-editor-classic': 47.4.0 + '@ckeditor/ckeditor5-editor-decoupled': 47.4.0 + '@ckeditor/ckeditor5-editor-inline': 47.4.0 + '@ckeditor/ckeditor5-editor-multi-root': 47.4.0 + '@ckeditor/ckeditor5-emoji': 47.4.0 + '@ckeditor/ckeditor5-engine': 47.4.0 + '@ckeditor/ckeditor5-enter': 47.4.0 + '@ckeditor/ckeditor5-essentials': 47.4.0 + '@ckeditor/ckeditor5-find-and-replace': 47.4.0 + '@ckeditor/ckeditor5-font': 47.4.0 + '@ckeditor/ckeditor5-fullscreen': 47.4.0 + '@ckeditor/ckeditor5-heading': 47.4.0 + '@ckeditor/ckeditor5-highlight': 47.4.0 + '@ckeditor/ckeditor5-horizontal-line': 47.4.0 + '@ckeditor/ckeditor5-html-embed': 47.4.0 + '@ckeditor/ckeditor5-html-support': 47.4.0 + '@ckeditor/ckeditor5-icons': 47.4.0 + '@ckeditor/ckeditor5-image': 47.4.0 + '@ckeditor/ckeditor5-indent': 47.4.0 + '@ckeditor/ckeditor5-language': 47.4.0 + '@ckeditor/ckeditor5-link': 47.4.0 + '@ckeditor/ckeditor5-list': 47.4.0 + '@ckeditor/ckeditor5-markdown-gfm': 47.4.0 + '@ckeditor/ckeditor5-media-embed': 47.4.0 + '@ckeditor/ckeditor5-mention': 47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d) + '@ckeditor/ckeditor5-minimap': 47.4.0 + '@ckeditor/ckeditor5-page-break': 47.4.0 + '@ckeditor/ckeditor5-paragraph': 47.4.0 + '@ckeditor/ckeditor5-paste-from-office': 47.4.0 + '@ckeditor/ckeditor5-remove-format': 47.4.0 + '@ckeditor/ckeditor5-restricted-editing': 47.4.0 + '@ckeditor/ckeditor5-select-all': 47.4.0 + '@ckeditor/ckeditor5-show-blocks': 47.4.0 + '@ckeditor/ckeditor5-source-editing': 47.4.0 + '@ckeditor/ckeditor5-special-characters': 47.4.0 + '@ckeditor/ckeditor5-style': 47.4.0 + '@ckeditor/ckeditor5-table': 47.4.0 + '@ckeditor/ckeditor5-theme-lark': 47.4.0 + '@ckeditor/ckeditor5-typing': 47.4.0 + '@ckeditor/ckeditor5-ui': 47.4.0 + '@ckeditor/ckeditor5-undo': 47.4.0 + '@ckeditor/ckeditor5-upload': 47.4.0 + '@ckeditor/ckeditor5-utils': 47.4.0 + '@ckeditor/ckeditor5-watchdog': 47.4.0 + '@ckeditor/ckeditor5-widget': 47.4.0 + '@ckeditor/ckeditor5-word-count': 47.4.0 transitivePeerDependencies: - supports-color From c944762ef6a8270946f8a69e1c4dc59111ae6aaf Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Fri, 16 Jan 2026 15:25:34 +0100 Subject: [PATCH 002/102] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-nb_NO.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README-nb_NO.md b/docs/README-nb_NO.md index bd0217934..fc5ae268c 100644 --- a/docs/README-nb_NO.md +++ b/docs/README-nb_NO.md @@ -28,8 +28,8 @@ script)](./README-ZH_TW.md) | [English](../README.md) | [French](./README-fr.md) [Spanish](./README-es.md) -Trilium Notes is a free and open-source, cross-platform hierarchical note taking -application with focus on building large personal knowledge bases. +Trilium Notes er et gratis og åpen kildekode-basert, plattformuavhengig +hierarkisk notatprogram med fokus på å bygge store personlige kunnskapsbaser. Trilium Screenshot From ea8bd0136f7edd314b5716fa2dc950ddd1b886c7 Mon Sep 17 00:00:00 2001 From: Kf637 Date: Fri, 16 Jan 2026 09:08:50 +0100 Subject: [PATCH 003/102] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (152 of 152 strings) Translation: Trilium Notes/Website Translate-URL: https://hosted.weblate.org/projects/trilium/website/nb_NO/ --- apps/website/src/translations/nb-NO/translation.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/website/src/translations/nb-NO/translation.json b/apps/website/src/translations/nb-NO/translation.json index 4da9a79f6..1d95d4260 100644 --- a/apps/website/src/translations/nb-NO/translation.json +++ b/apps/website/src/translations/nb-NO/translation.json @@ -26,7 +26,7 @@ "productivity_benefits": { "sync_title": "Synkronisering", "search_title": "Kraftig søk", - "web_clipper_title": "Web clipper", + "web_clipper_title": "Webklipper", "revisions_title": "Notatrevisjon", "protected_notes_title": "Beskyttede notater", "title": "Produktivitet og sikkerhet", @@ -87,7 +87,7 @@ "github": "GitHub", "matrix": "Matrix", "reddit": "Reddit", - "github_discussions": "GitHub Discussions" + "github_discussions": "GitHub-diskusjoner" }, "support_us": { "paypal": "PayPal", From f1946c1386b8624151b578b39db41933c33fb043 Mon Sep 17 00:00:00 2001 From: Kf637 Date: Fri, 16 Jan 2026 09:11:12 +0100 Subject: [PATCH 004/102] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 6.7% (26 of 388 strings) Translation: Trilium Notes/Server Translate-URL: https://hosted.weblate.org/projects/trilium/server/nb_NO/ --- apps/server/src/assets/translations/nb-NO/server.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/server/src/assets/translations/nb-NO/server.json b/apps/server/src/assets/translations/nb-NO/server.json index b5a63a0bf..4d2244f62 100644 --- a/apps/server/src/assets/translations/nb-NO/server.json +++ b/apps/server/src/assets/translations/nb-NO/server.json @@ -9,7 +9,8 @@ "search-in-subtree": "Søk etter notater i det aktive notatets understruktur", "creating-and-moving-notes": "Lage og flytte notater", "dialogs": "Dialogbokser", - "other": "Andre" + "other": "Andre", + "expand-subtree": "Utvid undertre for gjeldende notat" }, "setup_sync-from-desktop": { "step6-here": "her" From f72929ca130eea6fe92503eb43d18b03e1ab2522 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 09:59:13 +0000 Subject: [PATCH 005/102] chore(deps): update dependency happy-dom to v20.3.1 --- apps/client/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 46 ++++++++++++++++++---------------------- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index e289700b2..c3886cc4f 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -78,7 +78,7 @@ "@types/reveal.js": "5.2.2", "@types/tabulator-tables": "6.3.1", "copy-webpack-plugin": "13.0.1", - "happy-dom": "20.3.0", + "happy-dom": "20.3.1", "lightningcss": "1.30.2", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.4" diff --git a/package.json b/package.json index 7b9209b63..3f97d3112 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-playwright": "2.5.0", "eslint-plugin-simple-import-sort": "12.1.1", - "happy-dom": "20.3.0", + "happy-dom": "20.3.1", "http-server": "14.1.1", "jiti": "2.6.1", "js-yaml": "4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2573fc116..415058b2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,8 +92,8 @@ importers: specifier: 12.1.1 version: 12.1.1(eslint@9.39.2(jiti@2.6.1)) happy-dom: - specifier: 20.3.0 - version: 20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.3.1 + version: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) http-server: specifier: 14.1.1 version: 14.1.1 @@ -135,7 +135,7 @@ importers: version: 4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) apps/build-docs: devDependencies: @@ -345,8 +345,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) happy-dom: - specifier: 20.3.0 - version: 20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.3.1 + version: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) lightningcss: specifier: 1.30.2 version: 1.30.2 @@ -858,7 +858,7 @@ importers: version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -949,7 +949,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.0 version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1009,7 +1009,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.0 version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1069,7 +1069,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.0 version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1136,7 +1136,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.0 version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1203,7 +1203,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.0 version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -8731,8 +8731,8 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - happy-dom@20.3.0: - resolution: {integrity: sha512-5qJbkqcvR8j/a4av5IWqqIWmEGf9dt6OhGMS6qxCgjSOBGzGa5XLoqg40OyD8XNzQ+g1g2zsXi10kjfpzYH55Q==} + happy-dom@20.3.1: + resolution: {integrity: sha512-tLvsizNno05Hij0PoB0QN/S8xf0YU2AGvO11/JlJDw5McA/gzyn0Ni1RwbTI1/zteUbOekJH0t6q8HFvjbxsGg==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -15224,8 +15224,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15956,8 +15954,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -20523,7 +20519,7 @@ snapshots: '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20540,7 +20536,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20560,7 +20556,7 @@ snapshots: magicast: 0.5.1 obug: 2.1.1 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -20576,7 +20572,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) @@ -20624,7 +20620,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@4.0.17': dependencies: @@ -24411,7 +24407,7 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/whatwg-mimetype': 3.0.2 @@ -30489,7 +30485,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.17 '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) @@ -30516,7 +30512,7 @@ snapshots: '@types/node': 24.10.9 '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.17(vitest@4.0.17) - happy-dom: 20.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + happy-dom: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti From d148c9d1c6855c45f45d9fe2530a4989872002f3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:00:12 +0000 Subject: [PATCH 006/102] chore(deps): update dependency node-abi to v4.25.0 --- package.json | 2 +- pnpm-lock.yaml | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 7b9209b63..30ca10f53 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "on-headers@<1.1.0": ">=1.1.0", "form-data@>=4.0.0 <4.0.4": ">=4.0.4", "form-data@>=3.0.0 <3.0.4": ">=3.0.4", - "node-abi": "4.24.0" + "node-abi": "4.25.0" }, "ignoredBuiltDependencies": [ "sqlite3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2573fc116..9b1b7e150 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,7 +20,7 @@ overrides: on-headers@<1.1.0: '>=1.1.0' form-data@>=4.0.0 <4.0.4: '>=4.0.4' form-data@>=3.0.0 <3.0.4: '>=3.0.4' - node-abi: 4.24.0 + node-abi: 4.25.0 patchedDependencies: '@ckeditor/ckeditor5-code-block': @@ -10610,8 +10610,8 @@ packages: nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - node-abi@4.24.0: - resolution: {integrity: sha512-u2EC1CeNe25uVtX3EZbdQ275c74zdZmmpzrHEQh2aIYqoVjlglfUpOX9YY85x1nlBydEKDVaSmMNhR7N82Qj8A==} + node-abi@4.25.0: + resolution: {integrity: sha512-BRrQZc23ljOLms7EXVds3MOpB59/x7gaORodNuIwt96JKlflUmrOgv5hSJZEEM/WkW3uXpjZ4x1wcFu8V9mTpw==} engines: {node: '>=22.12.0'} node-addon-api@7.1.1: @@ -15224,8 +15224,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15956,8 +15954,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -16796,7 +16792,7 @@ snapshots: detect-libc: 2.1.2 fs-extra: 10.1.0 got: 11.8.6 - node-abi: 4.24.0 + node-abi: 4.25.0 node-api-version: 0.2.1 ora: 5.4.1 read-binary-file-arch: 1.0.6 @@ -16814,7 +16810,7 @@ snapshots: detect-libc: 2.1.2 got: 11.8.6 graceful-fs: 4.2.11 - node-abi: 4.24.0 + node-abi: 4.25.0 node-api-version: 0.2.1 node-gyp: 11.4.2 ora: 5.4.1 @@ -26699,7 +26695,7 @@ snapshots: nice-try@1.0.5: {} - node-abi@4.24.0: + node-abi@4.25.0: dependencies: semver: 7.7.3 @@ -27844,7 +27840,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 4.24.0 + node-abi: 4.25.0 pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 From f63042ef8790d84d769dc43e812667a4e8be3ba9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:01:09 +0000 Subject: [PATCH 007/102] chore(deps): update dependency ejs to v4 --- apps/server/package.json | 2 +- pnpm-lock.yaml | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index bb099d98b..ab6938a8f 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -82,7 +82,7 @@ "csrf-csrf": "3.2.2", "debounce": "3.0.0", "debug": "4.4.3", - "ejs": "3.1.10", + "ejs": "4.0.1", "electron": "39.2.7", "electron-debug": "4.1.0", "electron-window-state": "5.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2573fc116..dd0b0616b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -661,8 +661,8 @@ importers: specifier: 4.4.3 version: 4.4.3(supports-color@8.1.1) ejs: - specifier: 3.1.10 - version: 3.1.10 + specifier: 4.0.1 + version: 4.0.1 electron: specifier: 39.2.7 version: 39.2.7 @@ -7718,9 +7718,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} + ejs@4.0.1: + resolution: {integrity: sha512-krvQtxc0btwSm/nvnt1UpnaFDFVJpJ0fdckmALpCgShsr/iGYHTnJiUliZTgmzq/UxTX33TtOQVKaNigMQp/6Q==} + engines: {node: '>=0.12.18'} hasBin: true electron-debug@4.1.0: @@ -15224,8 +15224,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15956,8 +15954,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -16155,6 +16151,8 @@ snapshots: '@ckeditor/ckeditor5-icons': 47.4.0 '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-upload@47.4.0': dependencies: @@ -22890,7 +22888,7 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.10: + ejs@4.0.1: dependencies: jake: 10.9.2 From a169db807c05f61e435b7f51835a824fbb00a606 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 12:16:25 +0200 Subject: [PATCH 008/102] fix(server): crashing due to EJS handling --- apps/server/src/app.ts | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index 8023338c9..d3d09c5c7 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -1,25 +1,26 @@ -import express from "express"; -import path from "path"; -import favicon from "serve-favicon"; -import cookieParser from "cookie-parser"; -import helmet from "helmet"; -import compression from "compression"; -import config from "./services/config.js"; -import utils, { getResourceDir, isDev } from "./services/utils.js"; -import assets from "./routes/assets.js"; -import routes from "./routes/routes.js"; -import custom from "./routes/custom.js"; -import error_handlers from "./routes/error_handlers.js"; -import { startScheduledCleanup } from "./services/erase.js"; -import sql_init from "./services/sql_init.js"; -import { auth } from "express-openid-connect"; -import openID from "./services/open_id.js"; -import { t } from "i18next"; -import eventService from "./services/events.js"; -import log from "./services/log.js"; import "./services/handlers.js"; import "./becca/becca_loader.js"; + +import compression from "compression"; +import cookieParser from "cookie-parser"; +import express from "express"; +import { auth } from "express-openid-connect"; +import helmet from "helmet"; +import { t } from "i18next"; +import path from "path"; +import favicon from "serve-favicon"; + +import assets from "./routes/assets.js"; +import custom from "./routes/custom.js"; +import error_handlers from "./routes/error_handlers.js"; +import routes from "./routes/routes.js"; +import config from "./services/config.js"; +import { startScheduledCleanup } from "./services/erase.js"; +import log from "./services/log.js"; +import openID from "./services/open_id.js"; import { RESOURCE_DIR } from "./services/resource_dir.js"; +import sql_init from "./services/sql_init.js"; +import utils, { getResourceDir, isDev } from "./services/utils.js"; export default async function buildApp() { const app = express(); @@ -33,7 +34,8 @@ export default async function buildApp() { // view engine setup app.set("views", path.join(assetsDir, "views")); - app.engine("ejs", (await import("ejs")).renderFile); + const ejs = await import("ejs"); + app.engine("ejs", (filePath, options, callback) => ejs.renderFile(filePath, options, callback)); app.set("view engine", "ejs"); app.use((req, res, next) => { From aa01bc1457e120b9baf214b3a20e3627a243e554 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 12:44:30 +0200 Subject: [PATCH 009/102] feat(markdown): switch to turnish instead of turndown --- apps/server/package.json | 2 +- .../src/services/export/markdown.spec.ts | 19 ++++ apps/server/src/services/export/markdown.ts | 89 +++++++++---------- .../src/services/import/markdown.spec.ts | 5 ++ pnpm-lock.yaml | 75 +++++++--------- 5 files changed, 101 insertions(+), 89 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index bb099d98b..6b2c56ca7 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -126,7 +126,7 @@ "swagger-jsdoc": "6.2.8", "time2fa": "1.4.2", "tmp": "0.2.5", - "turndown": "7.2.2", + "turnish": "1.7.1", "unescape": "1.0.1", "vite": "7.3.1", "ws": "8.19.0", diff --git a/apps/server/src/services/export/markdown.spec.ts b/apps/server/src/services/export/markdown.spec.ts index 4fa2913fc..c7370a84a 100644 --- a/apps/server/src/services/export/markdown.spec.ts +++ b/apps/server/src/services/export/markdown.spec.ts @@ -387,4 +387,23 @@ describe("Markdown export", () => { expect(markdownExportService.toMarkdown(html)).toBe(expected); }); + it("maintains escaped HTML tags", () => { + const html = /*html*/`

<div>Hello World</div>

`; + const expected = `\\Hello World\\`; + expect(markdownExportService.toMarkdown(html)).toBe(expected); + }); + + it("escapes HTML tags inside list", () => { + const html = trimIndentation/*html*/`\ +
    +
  • + <note> is note. +
  • +
+ `; + const expected = trimIndentation`\ + * \\ is note.`; + expect(markdownExportService.toMarkdown(html)).toBe(expected); + }); + }); diff --git a/apps/server/src/services/export/markdown.ts b/apps/server/src/services/export/markdown.ts index ed16c6b30..0d7a8deb4 100644 --- a/apps/server/src/services/export/markdown.ts +++ b/apps/server/src/services/export/markdown.ts @@ -1,9 +1,7 @@ -"use strict"; - -import TurndownService, { type Rule } from "turndown"; import { gfm } from "@triliumnext/turndown-plugin-gfm"; +import Turnish, { type Rule } from "turnish"; -let instance: TurndownService | null = null; +let instance: Turnish | null = null; // TODO: Move this to a dedicated file someday. export const ADMONITION_TYPE_MAPPINGS: Record = { @@ -16,12 +14,12 @@ export const ADMONITION_TYPE_MAPPINGS: Record = { export const DEFAULT_ADMONITION_TYPE = ADMONITION_TYPE_MAPPINGS.note; -const fencedCodeBlockFilter: TurndownService.Rule = { - filter: function (node, options) { +const fencedCodeBlockFilter: Turnish.Rule = { + filter (node, options) { return options.codeBlockStyle === "fenced" && node.nodeName === "PRE" && node.firstChild !== null && node.firstChild.nodeName === "CODE"; }, - replacement: function (content, node, options) { + replacement (content, node, options) { if (!node.firstChild || !("getAttribute" in node.firstChild) || typeof node.firstChild.getAttribute !== "function") { return content; } @@ -29,14 +27,15 @@ const fencedCodeBlockFilter: TurndownService.Rule = { const className = node.firstChild.getAttribute("class") || ""; const language = rewriteLanguageTag((className.match(/language-(\S+)/) || [null, ""])[1]); - return "\n\n" + options.fence + language + "\n" + node.firstChild.textContent + "\n" + options.fence + "\n\n"; + return `\n\n${ options.fence }${language }\n${ node.firstChild.textContent }\n${ options.fence }\n\n`; } }; function toMarkdown(content: string) { if (instance === null) { - instance = new TurndownService({ + instance = new Turnish({ headingStyle: "atx", + bulletListMarker: "*", codeBlockStyle: "fenced", blankReplacement(content, node, options) { if (node.nodeName === "SECTION" && (node as HTMLElement).classList.contains("include-note")) { @@ -44,7 +43,7 @@ function toMarkdown(content: string) { } // Original implementation as per https://github.com/mixmark-io/turndown/blob/master/src/turndown.js. - return ("isBlock" in node && node.isBlock) ? '\n\n' : '' + return ("isBlock" in node && node.isBlock) ? '\n\n' : ''; } }); // Filter is heavily based on: https://github.com/mixmark-io/turndown/issues/274#issuecomment-458730974 @@ -59,7 +58,7 @@ function toMarkdown(content: string) { instance.keep([ "kbd", "sup", "sub" ]); } - return instance.turndown(content); + return instance.render(content); } function rewriteLanguageTag(source: string) { @@ -85,14 +84,14 @@ function buildImageFilter() { const ESCAPE_PATTERNS = { before: /([\\*`[\]_]|(?:^[-+>])|(?:^~~~)|(?:^#{1-6}))/g, after: /((?:^\d+(?=\.)))/ - } + }; - const escapePattern = new RegExp('(?:' + ESCAPE_PATTERNS.before.source + '|' + ESCAPE_PATTERNS.after.source + ')', 'g'); + const escapePattern = new RegExp(`(?:${ ESCAPE_PATTERNS.before.source }|${ ESCAPE_PATTERNS.after.source })`, 'g'); function escapeMarkdown (content: string) { - return content.replace(escapePattern, function (match, before, after) { - return before ? '\\' + before : after + '\\' - }) + return content.replace(escapePattern, (match, before, after) => { + return before ? `\\${ before}` : `${after }\\`; + }); } function escapeLinkDestination(destination: string) { @@ -102,10 +101,10 @@ function buildImageFilter() { } function escapeLinkTitle (title: string) { - return title.replace(/"/g, '\\"') + return title.replace(/"/g, '\\"'); } - const imageFilter: TurndownService.Rule = { + const imageFilter: Turnish.Rule = { filter: "img", replacement(content, _node) { const node = _node as HTMLElement; @@ -117,12 +116,12 @@ function buildImageFilter() { // TODO: Deduplicate with upstream. const untypedNode = (node as any); - const alt = escapeMarkdown(cleanAttribute(untypedNode.getAttribute('alt'))) - const src = escapeLinkDestination(untypedNode.getAttribute('src') || '') - const title = cleanAttribute(untypedNode.getAttribute('title')) - const titlePart = title ? ' "' + escapeLinkTitle(title) + '"' : '' + const alt = escapeMarkdown(cleanAttribute(untypedNode.getAttribute('alt'))); + const src = escapeLinkDestination(untypedNode.getAttribute('src') || ''); + const title = cleanAttribute(untypedNode.getAttribute('title')); + const titlePart = title ? ` "${ escapeLinkTitle(title) }"` : ''; - return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : '' + return src ? `![${ alt }]` + `(${ src }${titlePart })` : ''; } }; return imageFilter; @@ -151,7 +150,7 @@ function buildAdmonitionFilter() { return DEFAULT_ADMONITION_TYPE; } - const admonitionFilter: TurndownService.Rule = { + const admonitionFilter: Turnish.Rule = { filter(node, options) { return node.nodeName === "ASIDE" && node.classList.contains("admonition"); }, @@ -161,11 +160,11 @@ function buildAdmonitionFilter() { content = content.replace(/^\n+|\n+$/g, ''); content = content.replace(/^/gm, '> '); - content = `> [!${admonitionType}]\n` + content; + content = `> [!${admonitionType}]\n${ content}`; - return "\n\n" + content + "\n\n"; + return `\n\n${ content }\n\n`; } - } + }; return admonitionFilter; } @@ -178,15 +177,15 @@ function buildAdmonitionFilter() { */ function buildInlineLinkFilter(): Rule { return { - filter: function (node, options) { + filter (node, options) { return ( options.linkStyle === 'inlined' && node.nodeName === 'A' && !!node.getAttribute('href') - ) + ); }, - replacement: function (content, _node) { + replacement (content, _node) { const node = _node as HTMLElement; // Return reference links verbatim. @@ -196,13 +195,13 @@ function buildInlineLinkFilter(): Rule { // Otherwise treat as normal. // TODO: Call super() somehow instead of duplicating the implementation. - let href = node.getAttribute('href') - if (href) href = href.replace(/([()])/g, '\\$1') - let title = cleanAttribute(node.getAttribute('title')) - if (title) title = ' "' + title.replace(/"/g, '\\"') + '"' - return '[' + content + '](' + href + title + ')' + let href = node.getAttribute('href'); + if (href) href = href.replace(/([()])/g, '\\$1'); + let title = cleanAttribute(node.getAttribute('title')); + if (title) title = ` "${ title.replace(/"/g, '\\"') }"`; + return `[${ content }](${ href }${title })`; } - } + }; } function buildFigureFilter(): Rule { @@ -214,7 +213,7 @@ function buildFigureFilter(): Rule { replacement(content, node) { return (node as HTMLElement).outerHTML; } - } + }; } // Keep in line with https://github.com/mixmark-io/turndown/blob/master/src/commonmark-rules.js. @@ -224,13 +223,13 @@ function buildListItemFilter(): Rule { replacement(content, node, options) { content = content .trim() - .replace(/\n/gm, '\n ') // indent - let prefix = options.bulletListMarker + ' ' + .replace(/\n/gm, '\n '); // indent + let prefix = `${options.bulletListMarker } `; const parent = node.parentNode as HTMLElement; if (parent.nodeName === 'OL') { - var start = parent.getAttribute('start') - var index = Array.prototype.indexOf.call(parent.children, node) - prefix = (start ? Number(start) + index : index + 1) + '. ' + const start = parent.getAttribute('start'); + const index = Array.prototype.indexOf.call(parent.children, node); + prefix = `${start ? Number(start) + index : index + 1 }. `; } else if (parent.classList.contains("todo-list")) { const isChecked = node.querySelector("input[type=checkbox]:checked"); prefix = (isChecked ? "- [x] " : "- [ ] "); @@ -239,7 +238,7 @@ function buildListItemFilter(): Rule { const result = prefix + content + (node.nextSibling && !/\n$/.test(content) ? '\n' : ''); return result; } - } + }; } function buildMathFilter(): Rule { @@ -270,13 +269,13 @@ function buildMathFilter(): Rule { // Unknown. return content; } - } + }; } // Taken from upstream since it's not exposed. // https://github.com/mixmark-io/turndown/blob/master/src/commonmark-rules.js function cleanAttribute(attribute: string | null | undefined) { - return attribute ? attribute.replace(/(\n+\s*)+/g, '\n') : '' + return attribute ? attribute.replace(/(\n+\s*)+/g, '\n') : ''; } export default { diff --git a/apps/server/src/services/import/markdown.spec.ts b/apps/server/src/services/import/markdown.spec.ts index 1ac49f613..453db33b8 100644 --- a/apps/server/src/services/import/markdown.spec.ts +++ b/apps/server/src/services/import/markdown.spec.ts @@ -314,4 +314,9 @@ $$`; expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); }); + it("doesn't unescape HTML in list", () => { + const input = `* <note> is note.`; + const expected = /*html*/`
  • <note> is note.
`; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be475fc6d..1c748bf83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -792,9 +792,9 @@ importers: tmp: specifier: 0.2.5 version: 0.2.5 - turndown: - specifier: 7.2.2 - version: 7.2.2 + turnish: + specifier: 1.7.1 + version: 1.7.1 unescape: specifier: 1.0.1 version: 1.0.1 @@ -1461,6 +1461,9 @@ importers: packages: + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -13466,6 +13469,9 @@ packages: turndown@7.2.2: resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} + turnish@1.7.1: + resolution: {integrity: sha512-NgyY7pIDABjKyg2isRgZyFPav6tOyvmqpTx3HROsKrOaE3JccP4C1P2IhAtkAZ8DkQb/O1R7HOFAkxY8uaJmcQ==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14407,6 +14413,8 @@ packages: snapshots: + '@adobe/css-tools@4.4.4': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -15078,6 +15086,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-upload': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -15218,12 +15228,16 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-cloud-services@47.4.0': dependencies: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15416,6 +15430,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-classic@47.4.0': dependencies: @@ -15425,6 +15441,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-decoupled@47.4.0': dependencies: @@ -15434,6 +15452,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-inline@47.4.0': dependencies: @@ -15467,8 +15487,6 @@ snapshots: '@ckeditor/ckeditor5-table': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: @@ -15525,8 +15543,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: @@ -15551,6 +15567,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-font@47.4.0': dependencies: @@ -15625,6 +15643,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -15670,8 +15690,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -15684,8 +15702,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-indent@47.4.0': dependencies: @@ -15697,8 +15713,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15708,8 +15722,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -15734,8 +15746,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -15759,8 +15769,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -15798,8 +15806,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15809,8 +15815,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: @@ -15823,8 +15827,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: @@ -15833,8 +15835,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: @@ -15889,8 +15889,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: @@ -15998,8 +15996,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -16012,8 +16008,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: @@ -16061,8 +16055,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-table@47.4.0': dependencies: @@ -16075,8 +16067,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-template@47.4.0': dependencies: @@ -16187,8 +16177,6 @@ snapshots: '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-widget@47.4.0': dependencies: @@ -16208,8 +16196,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -21676,8 +21662,6 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 - transitivePeerDependencies: - - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: @@ -30073,6 +30057,11 @@ snapshots: dependencies: '@mixmark-io/domino': 2.2.0 + turnish@1.7.1: + dependencies: + '@adobe/css-tools': 4.4.4 + '@mixmark-io/domino': 2.2.0 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 From bfb6d975ff0130670e2509be954508ca72712e35 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 12:46:55 +0200 Subject: [PATCH 010/102] fix(export/markdown): type error due to blankReplacement signature change --- apps/server/src/services/export/markdown.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/server/src/services/export/markdown.ts b/apps/server/src/services/export/markdown.ts index 0d7a8deb4..93adb594e 100644 --- a/apps/server/src/services/export/markdown.ts +++ b/apps/server/src/services/export/markdown.ts @@ -37,14 +37,14 @@ function toMarkdown(content: string) { headingStyle: "atx", bulletListMarker: "*", codeBlockStyle: "fenced", - blankReplacement(content, node, options) { - if (node.nodeName === "SECTION" && (node as HTMLElement).classList.contains("include-note")) { - return (node as HTMLElement).outerHTML; + blankReplacement(_content, node) { + if (node.nodeName === "SECTION" && node.classList.contains("include-note")) { + return node.outerHTML; } // Original implementation as per https://github.com/mixmark-io/turndown/blob/master/src/turndown.js. return ("isBlock" in node && node.isBlock) ? '\n\n' : ''; - } + }, }); // Filter is heavily based on: https://github.com/mixmark-io/turndown/issues/274#issuecomment-458730974 instance.addRule("fencedCodeBlock", fencedCodeBlockFilter); From 51157e19791a894bc8e2d74562457f79d82a2d9e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 12:47:34 +0200 Subject: [PATCH 011/102] fix(export/markdown): error due to namespace usage --- apps/server/src/services/export/markdown.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/server/src/services/export/markdown.ts b/apps/server/src/services/export/markdown.ts index 93adb594e..4803de21d 100644 --- a/apps/server/src/services/export/markdown.ts +++ b/apps/server/src/services/export/markdown.ts @@ -14,7 +14,7 @@ export const ADMONITION_TYPE_MAPPINGS: Record = { export const DEFAULT_ADMONITION_TYPE = ADMONITION_TYPE_MAPPINGS.note; -const fencedCodeBlockFilter: Turnish.Rule = { +const fencedCodeBlockFilter: Rule = { filter (node, options) { return options.codeBlockStyle === "fenced" && node.nodeName === "PRE" && node.firstChild !== null && node.firstChild.nodeName === "CODE"; }, @@ -104,7 +104,7 @@ function buildImageFilter() { return title.replace(/"/g, '\\"'); } - const imageFilter: Turnish.Rule = { + const imageFilter: Rule = { filter: "img", replacement(content, _node) { const node = _node as HTMLElement; @@ -150,7 +150,7 @@ function buildAdmonitionFilter() { return DEFAULT_ADMONITION_TYPE; } - const admonitionFilter: Turnish.Rule = { + const admonitionFilter: Rule = { filter(node, options) { return node.nodeName === "ASIDE" && node.classList.contains("admonition"); }, From ccfda21413cd51712c3a20559e7ec9e6217397dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:53:59 +0000 Subject: [PATCH 012/102] chore(deps): update dependency electron to v40 --- apps/desktop/package.json | 2 +- apps/edit-docs/package.json | 2 +- apps/server/package.json | 2 +- pnpm-lock.yaml | 38 +++++++++++++++++++------------------ 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index f83d2671e..06a138a89 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -35,7 +35,7 @@ "@triliumnext/commons": "workspace:*", "@triliumnext/server": "workspace:*", "copy-webpack-plugin": "13.0.1", - "electron": "39.2.7", + "electron": "40.0.0", "@electron-forge/cli": "7.11.1", "@electron-forge/maker-deb": "7.11.1", "@electron-forge/maker-dmg": "7.11.1", diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index 2282522f7..b17afb35e 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": "13.0.1", - "electron": "39.2.7", + "electron": "40.0.0", "fs-extra": "11.3.3" }, "scripts": { diff --git a/apps/server/package.json b/apps/server/package.json index ab6938a8f..51eb249dc 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -83,7 +83,7 @@ "debounce": "3.0.0", "debug": "4.4.3", "ejs": "4.0.1", - "electron": "39.2.7", + "electron": "40.0.0", "electron-debug": "4.1.0", "electron-window-state": "5.0.3", "escape-html": "1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4aab82cc0..e7cacbb74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -376,7 +376,7 @@ importers: dependencies: '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@39.2.7) + version: 2.1.3(electron@40.0.0) better-sqlite3: specifier: 12.6.0 version: 12.6.0 @@ -433,8 +433,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) electron: - specifier: 39.2.7 - version: 39.2.7 + specifier: 40.0.0 + version: 40.0.0 prebuild-install: specifier: 7.1.3 version: 7.1.3 @@ -489,8 +489,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) electron: - specifier: 39.2.7 - version: 39.2.7 + specifier: 40.0.0 + version: 40.0.0 fs-extra: specifier: 11.3.3 version: 11.3.3 @@ -527,7 +527,7 @@ importers: version: 7.1.1 '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@39.2.7) + version: 2.1.3(electron@40.0.0) '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -664,8 +664,8 @@ importers: specifier: 4.0.1 version: 4.0.1 electron: - specifier: 39.2.7 - version: 39.2.7 + specifier: 40.0.0 + version: 40.0.0 electron-debug: specifier: 4.1.0 version: 4.1.0 @@ -7776,8 +7776,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@39.2.7: - resolution: {integrity: sha512-KU0uFS6LSTh4aOIC3miolcbizOFP7N1M46VTYVfqIgFiuA2ilfNaOHLDS9tCMvwwHRowAsvqBrh9NgMXcTOHCQ==} + electron@40.0.0: + resolution: {integrity: sha512-UyBy5yJ0/wm4gNugCtNPjvddjAknMTuXR2aCHioXicH7aKRKGDBPp4xqTEi/doVcB3R+MN3wfU9o8d/9pwgK2A==} engines: {node: '>= 12.20.55'} hasBin: true @@ -15224,6 +15224,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15443,8 +15445,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: @@ -15494,6 +15494,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-essentials@47.4.0': dependencies: @@ -15954,6 +15956,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -16151,8 +16155,6 @@ snapshots: '@ckeditor/ckeditor5-icons': 47.4.0 '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-upload@47.4.0': dependencies: @@ -16823,9 +16825,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/remote@2.1.3(electron@39.2.7)': + '@electron/remote@2.1.3(electron@40.0.0)': dependencies: - electron: 39.2.7 + electron: 40.0.0 '@electron/universal@2.0.2': dependencies: @@ -22999,10 +23001,10 @@ snapshots: - supports-color optional: true - electron@39.2.7: + electron@40.0.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.19.1 + '@types/node': 24.10.9 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color From 3aacd255f4abeb5443e2ac567e602d126b4c4118 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 12:58:24 +0200 Subject: [PATCH 013/102] chore(export/markdown): add test for jQuery-like text inside table --- .../src/services/export/markdown.spec.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/apps/server/src/services/export/markdown.spec.ts b/apps/server/src/services/export/markdown.spec.ts index c7370a84a..de8224c5a 100644 --- a/apps/server/src/services/export/markdown.spec.ts +++ b/apps/server/src/services/export/markdown.spec.ts @@ -406,4 +406,33 @@ describe("Markdown export", () => { expect(markdownExportService.toMarkdown(html)).toBe(expected); }); + it("exports jQuery code in table properly", () => { + const html = trimIndentation`\ +
+ + + + + + + + + + + +
+ Code +
+
+            this.$widget = $("<div>");
+                                
+
+
+ `; + const expected = trimIndentation`\ +
Code
this.$widget = $("<div>");
+                                
`; + expect(markdownExportService.toMarkdown(html)).toBe(expected); + }); + }); From 67cc1113b14a1efc5cb531ef1c803ab77a12f060 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 13:05:29 +0200 Subject: [PATCH 014/102] chore(export/markdown): render emphasis with underscore --- apps/server/src/services/export/markdown.spec.ts | 6 ++++++ apps/server/src/services/export/markdown.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/apps/server/src/services/export/markdown.spec.ts b/apps/server/src/services/export/markdown.spec.ts index de8224c5a..80827c2b1 100644 --- a/apps/server/src/services/export/markdown.spec.ts +++ b/apps/server/src/services/export/markdown.spec.ts @@ -435,4 +435,10 @@ describe("Markdown export", () => { expect(markdownExportService.toMarkdown(html)).toBe(expected); }); + it("renders underline with underscore", () => { + const html = /*html*/`

This is underlined text.

`; + const expected = `This is _underlined_ text.`; + expect(markdownExportService.toMarkdown(html)).toBe(expected); + }); + }); diff --git a/apps/server/src/services/export/markdown.ts b/apps/server/src/services/export/markdown.ts index 4803de21d..7c90143e7 100644 --- a/apps/server/src/services/export/markdown.ts +++ b/apps/server/src/services/export/markdown.ts @@ -36,6 +36,7 @@ function toMarkdown(content: string) { instance = new Turnish({ headingStyle: "atx", bulletListMarker: "*", + emDelimiter: "_", codeBlockStyle: "fenced", blankReplacement(_content, node) { if (node.nodeName === "SECTION" && node.classList.contains("include-note")) { From 0c9c20c0c5900c0568a465a5d5e1a6e3049cbf3a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 13:11:53 +0200 Subject: [PATCH 015/102] docs(user): fix escapes --- .../Import & Export/Evernote.html | 66 +++++++++---------- .../Developer Guide/Documentation.md | 2 +- docs/Release Notes/Release Notes/v0.101.2.md | 2 +- docs/User Guide/!!!meta.json | 28 ++++---- .../Notes/Sorting Notes.md | 2 +- 5 files changed, 49 insertions(+), 51 deletions(-) diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html index 439cdab93..30a170a9c 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html @@ -1,55 +1,53 @@ -

- Trilium can import ENEX files, which are used by Evernote for backup/export. +

Trilium can import ENEX files, which are used by Evernote for backup/export. One ENEX file represents the content (notes and resources) of one notebook.

Export ENEX from Evernote

To export ENEX files from Evernote, you can use:

    -
  • Evernote desktop application. See Evernote documentation. Note that +
  • Evernote desktop application. See Evernote documentation. Note that the limitation of this method is that you can only export 100 notes at a time or one notebook at a time.
  • -
  • A third-party evernote-backup CLI tool. This tool can export all +
  • A third-party evernote-backup CLI tool. This tool can export all of your notebooks in bulk.

Import ENEX in Trilium

Once you have your ENEX files, do the following to import them in Trilium:

    -
  1. In the Trilium note tree, right-click the note under which you want to +
  2. In the Trilium note tree, right-click the note under which you want to import one or more of your ENEX files. The notes in the files will be imported as child notes of the selected note.
  3. -
  4. Click Import into note.
  5. -
  6. Choose your ENEX file or files and click Import.
  7. -
  8. During the import, you will see "Import in progress" message. If the import +
  9. Click Import into note.
  10. +
  11. Choose your ENEX file or files and click Import.
  12. +
  13. During the import, you will see "Import in progress" message. If the import is successful, the message will change to “Import finished successfully” and then disappear.
  14. -
  15. We recommend you to check the imported notes and their attachments to +
  16. We recommend you to check the imported notes and their attachments to verify that you haven’t lost any data.

A non-exhaustive list of what the importer preserves:

    -
  • Attachments
  • -
  • The hierarchy of headings (these are shifted to start with H2 because +
  • Attachments
  • +
  • The hierarchy of headings (these are shifted to start with H2 because H1 is reserved for note title, see Headings)
  • -
  • Tables
  • -
  • Bulleted lists
  • -
  • Numbered lists
  • -
  • Bold
  • -
  • Italics
  • -
  • Strikethrough
  • -
  • Highlights
  • -
  • Font colors
  • -
  • Soft line breaks
  • -
  • External links
  • +
  • Tables
  • +
  • Bulleted lists
  • +
  • Numbered lists
  • +
  • Bold
  • +
  • Italics
  • +
  • Strikethrough
  • +
  • Highlights
  • +
  • Font colors
  • +
  • Soft line breaks
  • +
  • External links

However, we do not guarantee that all of your formatting will be imported 100% correctly.

Limitations

    -
  • The size limit of one import is 250Mb. If the total size of your files +
  • The size limit of one import is 250Mb. If the total size of your files is larger, you can increase the upload limit, or divide your files, and run the import as many times as necessary.
  • -
  • All resources (except for images) are created as notes’ attachments.
  • -
  • If you have HTML inside ENEX files, the HTML formatting may be broken +
  • All resources (except for images) are created as notes’ attachments.
  • +
  • If you have HTML inside ENEX files, the HTML formatting may be broken or lost after import in Trilium. You can report major problems at Trilium issue tracker.
@@ -59,24 +57,24 @@

If you want to restore the internal links in Trilium after you import all of your ENEX files, you can use or adapt this custom script:  Process internal links by title + class="reference-link" href="#root/_help_dj3j8dG4th4l">Process internal links by title

The script does the following:

    -
  1. It finds all Evernote internal links.
  2. -
  3. For each one, it checks if its link text matches a note title, and if +
  4. It finds all Evernote internal links.
  5. +
  6. For each one, it checks if its link text matches a note title, and if yes, it replaces the Evernote link with an internal Trilium link. If not, it leaves the Evernote link in place.
  7. -
  8. If it finds more than one note with a matching note title, it leaves the +
  9. If it finds more than one note with a matching note title, it leaves the Evernote link in place.
  10. -
  11. It outputs the results in a log that you can see in the respective code - note in Trilium. 
  12. +
  13. It outputs the results in a log that you can see in the respective code + note in Trilium.

The script has the following limitations:

    -
  • It will not fix links to anchors and links to notes that you renamed in +
  • It will not fix links to anchors and links to notes that you renamed in Evernote after you created the links.
  • -
  • Some note titles might not be well identified, even if they exist. This +
  • Some note titles might not be well identified, even if they exist. This is especially the case if the note title contains some special characters. - Should this be problematic, consider Reporting issues.
  • + Should this be problematic, consider Reporting issues.
\ No newline at end of file diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index 4f833f93b..73e47ab6b 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/Release Notes/Release Notes/v0.101.2.md b/docs/Release Notes/Release Notes/v0.101.2.md index 6942b2e8e..d6baaabde 100644 --- a/docs/Release Notes/Release Notes/v0.101.2.md +++ b/docs/Release Notes/Release Notes/v0.101.2.md @@ -18,5 +18,5 @@ * [Max content width is not respected when switching between note types in the same tab](https://github.com/TriliumNext/Trilium/issues/8065) * [Crash When a Note Includes Itself](https://github.com/TriliumNext/Trilium/issues/8294) * [Severe Performance Degradation and Crash Issues Due to Recursive Inclusion in Included Notes](https://github.com/TriliumNext/Trilium/issues/8017) -* [ is not a launcher even though it's in the launcher subtree](https://github.com/TriliumNext/Trilium/issues/8218) +* [\ is not a launcher even though it's in the launcher subtree](https://github.com/TriliumNext/Trilium/issues/8218) * [Archived subnotes of direct children appear in grid view without #includeArchived](https://github.com/TriliumNext/Trilium/issues/8184) \ No newline at end of file diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 2c8eafa53..9965fbda6 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -6169,6 +6169,20 @@ "type": "text", "mime": "text/markdown", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "dj3j8dG4th4l", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wy8So3yZZlH9", + "isInheritable": false, + "position": 20 + }, { "type": "label", "name": "shareAlias", @@ -6182,20 +6196,6 @@ "value": "bx bx-window-open", "isInheritable": false, "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "dj3j8dG4th4l", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wy8So3yZZlH9", - "isInheritable": false, - "position": 50 } ], "format": "markdown", diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md index 539f42ac0..7519e7be4 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md @@ -28,4 +28,4 @@ Sorting is done by comparing note properties or specific labels on child notes. * **Label Sorting**: If `#sorted` has any other value, this value is treated as the name of a child note's label, and sorting is based on the values of this label. For example, setting `#sorted=myOrder` on the parent note and using `#myOrder=001`, `#myOrder=002`, etc., on child notes. 4. **Alphabetical Sorting**: Used as a last resort when other criteria result in equality. -All comparisons are made string-wise (e.g., "1" < "2" or "2020-10-10" < "2021-01-15", but also "2" > "10"). \ No newline at end of file +All comparisons are made string-wise (e.g., "1" \< "2" or "2020-10-10" < "2021-01-15", but also "2" \> "10"). \ No newline at end of file From fabab6abb120eeb46f671c90ef0767a4238fae16 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 13:16:21 +0200 Subject: [PATCH 016/102] refactor(export/markdown): spacing issues --- apps/server/src/services/export/markdown.ts | 22 ++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/server/src/services/export/markdown.ts b/apps/server/src/services/export/markdown.ts index 7c90143e7..35e08ee11 100644 --- a/apps/server/src/services/export/markdown.ts +++ b/apps/server/src/services/export/markdown.ts @@ -27,7 +27,7 @@ const fencedCodeBlockFilter: Rule = { const className = node.firstChild.getAttribute("class") || ""; const language = rewriteLanguageTag((className.match(/language-(\S+)/) || [null, ""])[1]); - return `\n\n${ options.fence }${language }\n${ node.firstChild.textContent }\n${ options.fence }\n\n`; + return `\n\n${options.fence}${language}\n${node.firstChild.textContent}\n${options.fence}\n\n`; } }; @@ -87,11 +87,11 @@ function buildImageFilter() { after: /((?:^\d+(?=\.)))/ }; - const escapePattern = new RegExp(`(?:${ ESCAPE_PATTERNS.before.source }|${ ESCAPE_PATTERNS.after.source })`, 'g'); + const escapePattern = new RegExp(`(?:${ESCAPE_PATTERNS.before.source}|${ESCAPE_PATTERNS.after.source})`, 'g'); function escapeMarkdown (content: string) { return content.replace(escapePattern, (match, before, after) => { - return before ? `\\${ before}` : `${after }\\`; + return before ? `\\${before}` : `${after}\\`; }); } @@ -120,9 +120,9 @@ function buildImageFilter() { const alt = escapeMarkdown(cleanAttribute(untypedNode.getAttribute('alt'))); const src = escapeLinkDestination(untypedNode.getAttribute('src') || ''); const title = cleanAttribute(untypedNode.getAttribute('title')); - const titlePart = title ? ` "${ escapeLinkTitle(title) }"` : ''; + const titlePart = title ? ` "${escapeLinkTitle(title)}"` : ''; - return src ? `![${ alt }]` + `(${ src }${titlePart })` : ''; + return src ? `![${alt}](${src}${titlePart})` : ''; } }; return imageFilter; @@ -161,9 +161,9 @@ function buildAdmonitionFilter() { content = content.replace(/^\n+|\n+$/g, ''); content = content.replace(/^/gm, '> '); - content = `> [!${admonitionType}]\n${ content}`; + content = `> [!${admonitionType}]\n${content}`; - return `\n\n${ content }\n\n`; + return `\n\n${content}\n\n`; } }; return admonitionFilter; @@ -199,8 +199,8 @@ function buildInlineLinkFilter(): Rule { let href = node.getAttribute('href'); if (href) href = href.replace(/([()])/g, '\\$1'); let title = cleanAttribute(node.getAttribute('title')); - if (title) title = ` "${ title.replace(/"/g, '\\"') }"`; - return `[${ content }](${ href }${title })`; + if (title) title = ` "${title.replace(/"/g, '\\"')}"`; + return `[${content}](${href}${title})`; } }; } @@ -225,12 +225,12 @@ function buildListItemFilter(): Rule { content = content .trim() .replace(/\n/gm, '\n '); // indent - let prefix = `${options.bulletListMarker } `; + let prefix = `${options.bulletListMarker} `; const parent = node.parentNode as HTMLElement; if (parent.nodeName === 'OL') { const start = parent.getAttribute('start'); const index = Array.prototype.indexOf.call(parent.children, node); - prefix = `${start ? Number(start) + index : index + 1 }. `; + prefix = `${start ? Number(start) + index : index + 1}. `; } else if (parent.classList.contains("todo-list")) { const isChecked = node.querySelector("input[type=checkbox]:checked"); prefix = (isChecked ? "- [x] " : "- [ ] "); From 5a7fc1c8b696e39c6dfdfa890c629f707b5c131d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 13:22:24 +0200 Subject: [PATCH 017/102] chore(markdown): address requested changes --- apps/server/src/services/export/markdown.spec.ts | 2 +- apps/server/src/services/import/markdown.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/server/src/services/export/markdown.spec.ts b/apps/server/src/services/export/markdown.spec.ts index 80827c2b1..505d4b02d 100644 --- a/apps/server/src/services/export/markdown.spec.ts +++ b/apps/server/src/services/export/markdown.spec.ts @@ -435,7 +435,7 @@ describe("Markdown export", () => { expect(markdownExportService.toMarkdown(html)).toBe(expected); }); - it("renders underline with underscore", () => { + it("renders emphasis with underscore", () => { const html = /*html*/`

This is underlined text.

`; const expected = `This is _underlined_ text.`; expect(markdownExportService.toMarkdown(html)).toBe(expected); diff --git a/apps/server/src/services/import/markdown.spec.ts b/apps/server/src/services/import/markdown.spec.ts index 453db33b8..e692c7baa 100644 --- a/apps/server/src/services/import/markdown.spec.ts +++ b/apps/server/src/services/import/markdown.spec.ts @@ -314,7 +314,7 @@ $$`; expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); }); - it("doesn't unescape HTML in list", () => { + it("preserves HTML entities in list", () => { const input = `* <note> is note.`; const expected = /*html*/`
  • <note> is note.
`; expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); From fe4c3ffecb576172d5369f9c5a52b7e338e7d5f8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sat, 17 Jan 2026 10:56:07 +0100 Subject: [PATCH 018/102] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-hi.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/README-hi.md b/docs/README-hi.md index 216863fb0..d0b229deb 100644 --- a/docs/README-hi.md +++ b/docs/README-hi.md @@ -69,12 +69,14 @@ application with focus on building large personal knowledge bases. ## 🎁 खासियतें -* Notes can be arranged into arbitrarily deep tree. Single note can be placed - into multiple places in the tree (see +* नोट्स को मनचाहे गहरे ट्री (tree) स्ट्रक्चर में व्यवस्थित किया जा सकता है। एक + ही नोट को ट्री में कई जगहों पर रखा जा सकता है (देखें [cloning](https://docs.triliumnotes.org/user-guide/concepts/notes/cloning)) -* Rich WYSIWYG note editor including e.g. tables, images and - [math](https://docs.triliumnotes.org/user-guide/note-types/text) with markdown +* बेहतरीन WYSIWYG नोट एडिटर, जिसमें टेबल, इमेज और + [math](https://docs.triliumnotes.org/user-guide/note-types/text) के साथ-साथ + मार्कडाउन [autoformat](https://docs.triliumnotes.org/user-guide/note-types/text/markdown-formatting) + की सुविधा शामिल है * [सोर्स कोड वाले नोट्स](https://docs.triliumnotes.org/user-guide/note-types/code) को एडिट करने की सुविधा, जिसमें सिंटैक्स हाइलाइटिंग (syntax highlighting) भी शामिल है From 11c8e5b3b234290d394d03c7bb95a0b4bf6ebbe0 Mon Sep 17 00:00:00 2001 From: Yatrik Patel Date: Sat, 17 Jan 2026 04:50:26 +0100 Subject: [PATCH 019/102] Translated using Weblate (Hindi) Currently translated at 35.5% (54 of 152 strings) Translation: Trilium Notes/Website Translate-URL: https://hosted.weblate.org/projects/trilium/website/hi/ --- apps/website/src/translations/hi/translation.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/website/src/translations/hi/translation.json b/apps/website/src/translations/hi/translation.json index af8bf586d..52211c723 100644 --- a/apps/website/src/translations/hi/translation.json +++ b/apps/website/src/translations/hi/translation.json @@ -24,7 +24,8 @@ "mindmap_title": "माइंडमैप" }, "extensibility_benefits": { - "share_title": "वेब पर नोट्स शेयर करें" + "share_title": "वेब पर नोट्स शेयर करें", + "share_description": "अगर आपके पास सर्वर है, तो इसका उपयोग अपने नोट्स के एक हिस्से को अन्य लोगों के साथ शेयर करने के लिए किया जा सकता है।" }, "collections": { "calendar_title": "कैलेंडर", From 1d898d618e5c67b7bb37d86a60214dff3d69a51d Mon Sep 17 00:00:00 2001 From: Yatrik Patel Date: Sat, 17 Jan 2026 04:28:05 +0100 Subject: [PATCH 020/102] Translated using Weblate (Hindi) Currently translated at 7.7% (30 of 388 strings) Translation: Trilium Notes/Server Translate-URL: https://hosted.weblate.org/projects/trilium/server/hi/ --- apps/server/src/assets/translations/hi/server.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/server/src/assets/translations/hi/server.json b/apps/server/src/assets/translations/hi/server.json index 36b9e7829..f7f0c608f 100644 --- a/apps/server/src/assets/translations/hi/server.json +++ b/apps/server/src/assets/translations/hi/server.json @@ -27,6 +27,8 @@ "search-in-subtree": "एक्टिव नोट के सब-ट्री में नोट्स खोजें", "expand-subtree": "मौजूदा नोट के सब-ट्री को (subtree) एक्सपैंड करें", "delete-note": "नोट डिलीट करें", - "move-note-up-in-hierarchy": "नोट एक लेवल ऊपर मूव करें" + "move-note-up-in-hierarchy": "नोट एक लेवल ऊपर मूव करें", + "move-note-down-in-hierarchy": "नोट एक लेवल नीचे ले जाएँ", + "dialogs": "डायलॉग्स" } } From d2c6081537ff93a5669fb41bca9c34918fd3bba2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 17:54:10 +0200 Subject: [PATCH 021/102] feat(edit-docs): remove data-list-item-id --- apps/edit-docs/src/edit-docs.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/edit-docs/src/edit-docs.ts b/apps/edit-docs/src/edit-docs.ts index 8cb6b898d..40163330d 100644 --- a/apps/edit-docs/src/edit-docs.ts +++ b/apps/edit-docs/src/edit-docs.ts @@ -185,6 +185,9 @@ async function exportData(noteId: string, format: ExportFormat, outputPath: stri return components.join("/"); }); + // Remove data-list-item-id created by CKEditor for lists + content = content.replace(/ data-list-item-id="[^"]*"/g, ""); + return content; function findAttachment(targetAttachmentId: string) { From e0ccf30f4f1e225255d02da8f2f0065c6c80cb74 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 17:59:30 +0200 Subject: [PATCH 022/102] docs(user): add missing links from Evernote documentation --- .../Import & Export/Evernote.html | 82 +++++++++---------- .../Import & Export/Evernote.md | 10 +-- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html index 439cdab93..e5a8231ba 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html @@ -1,57 +1,57 @@ -

- Trilium can import ENEX files, which are used by Evernote for backup/export. +

Trilium can import ENEX files, which are used by Evernote for backup/export. One ENEX file represents the content (notes and resources) of one notebook.

Export ENEX from Evernote

To export ENEX files from Evernote, you can use:

    -
  • Evernote desktop application. See Evernote documentation. Note that - the limitation of this method is that you can only export 100 notes at - a time or one notebook at a time.
  • -
  • A third-party evernote-backup CLI tool. This tool can export all - of your notebooks in bulk.
  • +
  • Evernote desktop application. See Evernote documentation. + Note that the limitation of this method is that you can only export 100 + notes at a time or one notebook at a time.
  • +
  • A third-party evernote-backup CLI + tool. This tool can export all of your notebooks in bulk.

Import ENEX in Trilium

Once you have your ENEX files, do the following to import them in Trilium:

    -
  1. In the Trilium note tree, right-click the note under which you want to +
  2. In the Trilium note tree, right-click the note under which you want to import one or more of your ENEX files. The notes in the files will be imported as child notes of the selected note.
  3. -
  4. Click Import into note.
  5. -
  6. Choose your ENEX file or files and click Import.
  7. -
  8. During the import, you will see "Import in progress" message. If the import +
  9. Click Import into note.
  10. +
  11. Choose your ENEX file or files and click Import.
  12. +
  13. During the import, you will see "Import in progress" message. If the import is successful, the message will change to “Import finished successfully” and then disappear.
  14. -
  15. We recommend you to check the imported notes and their attachments to +
  16. We recommend you to check the imported notes and their attachments to verify that you haven’t lost any data.

A non-exhaustive list of what the importer preserves:

    -
  • Attachments
  • -
  • The hierarchy of headings (these are shifted to start with H2 because - H1 is reserved for note title, see Headings)
  • -
  • Tables
  • -
  • Bulleted lists
  • -
  • Numbered lists
  • -
  • Bold
  • -
  • Italics
  • -
  • Strikethrough
  • -
  • Highlights
  • -
  • Font colors
  • -
  • Soft line breaks
  • -
  • External links
  • +
  • Attachments
  • +
  • The hierarchy of headings (these are shifted to start with H2 because + H1 is reserved for note title, see Headings)
  • +
  • Tables
  • +
  • Bulleted lists
  • +
  • Numbered lists
  • +
  • Bold
  • +
  • Italics
  • +
  • Strikethrough
  • +
  • Highlights
  • +
  • Font colors
  • +
  • Soft line breaks
  • +
  • External links

However, we do not guarantee that all of your formatting will be imported 100% correctly.

Limitations

    -
  • The size limit of one import is 250Mb. If the total size of your files - is larger, you can increase the upload limit, or divide your files, - and run the import as many times as necessary.
  • -
  • All resources (except for images) are created as notes’ attachments.
  • +
  • The size limit of one import is 250Mb. If the total size of your files + is larger, you can increase the upload limit, + or divide your files, and run the import as many times as necessary.
  • If you have HTML inside ENEX files, the HTML formatting may be broken - or lost after import in Trilium. You can report major problems at Trilium - issue tracker.
  • + >All resources (except for images) are created as notes’ attachments. +
  • If you have HTML inside ENEX files, the HTML formatting may be broken + or lost after import in Trilium. See Reporting issues.

Internal links

The importer cannot transform Evernote internal links into Trilium internal @@ -59,24 +59,24 @@

If you want to restore the internal links in Trilium after you import all of your ENEX files, you can use or adapt this custom script:  Process internal links by title + class="reference-link" href="#root/_help_dj3j8dG4th4l">Process internal links by title

The script does the following:

    -
  1. It finds all Evernote internal links.
  2. -
  3. For each one, it checks if its link text matches a note title, and if +
  4. It finds all Evernote internal links.
  5. +
  6. For each one, it checks if its link text matches a note title, and if yes, it replaces the Evernote link with an internal Trilium link. If not, it leaves the Evernote link in place.
  7. -
  8. If it finds more than one note with a matching note title, it leaves the +
  9. If it finds more than one note with a matching note title, it leaves the Evernote link in place.
  10. -
  11. It outputs the results in a log that you can see in the respective code - note in Trilium. 
  12. +
  13. It outputs the results in a log that you can see in the respective code + note in Trilium.

The script has the following limitations:

    -
  • It will not fix links to anchors and links to notes that you renamed in +
  • It will not fix links to anchors and links to notes that you renamed in Evernote after you created the links.
  • -
  • Some note titles might not be well identified, even if they exist. This +
  • Some note titles might not be well identified, even if they exist. This is especially the case if the note title contains some special characters. - Should this be problematic, consider Reporting issues.
  • + Should this be problematic, consider Reporting issues.
\ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.md b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.md index e095d30d8..19327abce 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.md @@ -5,8 +5,8 @@ Trilium can import ENEX files, which are used by Evernote for backup/export. One To export ENEX files from Evernote, you can use: -* Evernote desktop application. See Evernote documentation. Note that the limitation of this method is that you can only export 100 notes at a time or one notebook at a time. -* A third-party evernote-backup CLI tool. This tool can export all of your notebooks in bulk. +* Evernote desktop application. See Evernote [documentation](https://help.evernote.com/hc/en-us/articles/209005557-Export-Notes-and-Notebooks-as-ENEX-or-HTML). Note that the limitation of this method is that you can only export 100 notes at a time or one notebook at a time. +* A third-party [evernote-backup](https://github.com/vzhd1701/evernote-backup) CLI tool. This tool can export all of your notebooks in bulk. ## Import ENEX in Trilium @@ -21,7 +21,7 @@ Once you have your ENEX files, do the following to import them in Trilium: A non-exhaustive list of what the importer preserves: * Attachments -* The hierarchy of headings (these are shifted to start with H2 because H1 is reserved for note title, see Headings) +* The hierarchy of headings (these are shifted to start with H2 because H1 is reserved for note title, see [Headings](../../Note%20Types/Text/General%20formatting.md)) * Tables * Bulleted lists * Numbered lists @@ -37,9 +37,9 @@ However, we do not guarantee that all of your formatting will be imported 100% c ## Limitations -* The size limit of one import is 250Mb. If the total size of your files is larger, you can increase the upload limit, or divide your files, and run the import as many times as necessary. +* The size limit of one import is 250Mb. If the total size of your files is larger, you can increase the [upload limit](../../Installation%20%26%20Setup/Server%20Installation.md), or divide your files, and run the import as many times as necessary. * All resources (except for images) are created as notes’ attachments. -* If you have HTML inside ENEX files, the HTML formatting may be broken or lost after import in Trilium. You can report major problems at Trilium issue tracker. +* If you have HTML inside ENEX files, the HTML formatting may be broken or lost after import in Trilium. See Reporting issues. ### Internal links From 74548d638e8f98d493f3d0448c615a9a82276686 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 18:13:40 +0200 Subject: [PATCH 023/102] docs(user): sync --- .../User Guide/Advanced Usage/Sharing.html | 34 +++++----- .../User Guide/Collections/Calendar.html | 8 +-- .../Server Installation.html | 29 ++++---- .../User Guide/Note Types/Text.html | 68 +++++++++---------- .../Scripting/Backend scripts/Events.html | 10 +-- .../Frontend Basics/Custom Widgets.html | 6 +- .../Developer Guide/Documentation.md | 2 +- docs/User Guide/!!!meta.json | 18 ++++- 8 files changed, 95 insertions(+), 80 deletions(-) diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html index 34371a7dd..487747800 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html @@ -38,17 +38,17 @@ class="image">
    -
  • Table of contents.
  • -
  • Syntax highlight of code blocks, provided a language is selected (does +
  • Table of contents.
  • +
  • Syntax highlight of code blocks, provided a language is selected (does not work if “Auto-detected” is enabled).
  • -
  • Rendering for math equations.
  • -
  • Including notes (only if the included +
  • Rendering for math equations.
  • +
  • Including notes (only if the included notes are also shared).
    -
  • Inline Mermaid diagrams are not rendered.
  • +
  • Inline Mermaid diagrams are not rendered.
@@ -57,12 +57,12 @@ class="image">
    -
  • Basic support (displaying the contents of the note in a monospace font).
  • +
  • Basic support (displaying the contents of the note in a monospace font).
    -
  • No syntax highlight.
  • +
  • No syntax highlight.
@@ -95,12 +95,12 @@ class="image">
    -
  • The child notes are displayed in a fixed format. 
  • +
  • The child notes are displayed in a fixed format. 
    -
  • More advanced view types such as the calendar view are not supported.
  • +
  • More advanced view types such as the calendar view are not supported.
@@ -109,12 +109,12 @@ class="image">
    -
  • The diagram is displayed as a vector image.
  • +
  • The diagram is displayed as a vector image.
    -
  • No further interaction supported.
  • +
  • No further interaction supported.
@@ -123,12 +123,12 @@ class="image">
    -
  • The diagram is displayed as a vector image.
  • +
  • The diagram is displayed as a vector image.
    -
  • No further interaction supported.
  • +
  • No further interaction supported.
@@ -144,7 +144,7 @@ class="image"> The diagram is displayed as a vector image.
    -
  • No further interaction supported.
  • +
  • No further interaction supported.
@@ -160,7 +160,7 @@ class="image"> Basic interaction (downloading the file).
    -
  • No further interaction supported.
  • +
  • No further interaction supported.
@@ -392,8 +392,8 @@ for (const attr of parentNote.attributes) {

Indicates to web crawlers that the page should not be indexed of this note by:

    -
  • Setting the X-Robots-Tag: noindex HTTP header.
  • -
  • Setting the noindex, follow meta tag.
  • +
  • Setting the X-Robots-Tag: noindex HTTP header.
  • +
  • Setting the noindex, follow meta tag.
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html index 1a3474a59..45587606c 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html @@ -148,10 +148,10 @@

Which view to display in the calendar:

    -
  • timeGridWeek for the week view;
  • -
  • dayGridMonth for the month view;
  • -
  • multiMonthYear for the year view;
  • -
  • listMonth for the list view.
  • +
  • timeGridWeek for the week view;
  • +
  • dayGridMonth for the month view;
  • +
  • multiMonthYear for the year view;
  • +
  • listMonth for the list view.

Any other value will be dismissed and the default view (month) will be used instead.

diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html index 7b3a54250..cbf57c6ca 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html @@ -7,20 +7,21 @@

The server installation includes both web and mobile frontends.

Configuration

diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html index 008a783fc..bdb79fc49 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text.html @@ -33,12 +33,12 @@
    -
  • Headings (section titles, paragraph)
  • -
  • Font size
  • -
  • Bold, italic, underline, strike-through
  • -
  • Superscript, subscript
  • -
  • Font color & background color
  • -
  • Remove formatting
  • +
  • Headings (section titles, paragraph)
  • +
  • Font size
  • +
  • Bold, italic, underline, strike-through
  • +
  • Superscript, subscript
  • +
  • Font color & background color
  • +
  • Remove formatting
@@ -47,9 +47,9 @@
    -
  • Bulleted lists
  • -
  • Numbered lists
  • -
  • To-do lists
  • +
  • Bulleted lists
  • +
  • Numbered lists
  • +
  • To-do lists
@@ -58,8 +58,8 @@
    -
  • Block quotes
  • -
  • Admonitions
  • +
  • Block quotes
  • +
  • Admonitions
@@ -68,10 +68,10 @@
    -
  • Basic tables
  • -
  • Merging cells
  • -
  • Styling tables and cells.
  • -
  • Table captions
  • +
  • Basic tables
  • +
  • Merging cells
  • +
  • Styling tables and cells.
  • +
  • Table captions
@@ -80,9 +80,9 @@
    -
  • Inline code
  • -
  • Code blocks
  • -
  • Keyboard shortcuts
  • +
  • Inline code
  • +
  • Code blocks
  • +
  • Keyboard shortcuts
@@ -91,7 +91,7 @@
    -
  • Footnotes
  • +
  • Footnotes
@@ -100,7 +100,7 @@
    -
  • Images
  • +
  • Images
@@ -109,8 +109,8 @@
    -
  • External links
  • -
  • Internal Trilium links
  • +
  • External links
  • +
  • Internal Trilium links
@@ -119,7 +119,7 @@
    -
  • Include note
  • +
  • Include note
@@ -128,12 +128,12 @@
    -
  • Symbols
  • -
  • Math Equations +
  • Symbols
  • +
  • Math Equations
  • -
  • Mermaid diagrams
  • -
  • Horizontal ruler
  • -
  • Page break
  • +
  • Mermaid diagrams
  • +
  • Horizontal ruler
  • +
  • Page break
@@ -142,12 +142,12 @@ @@ -157,11 +157,11 @@ diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Backend scripts/Events.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Backend scripts/Events.html index 30e97babc..d2866b081 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Backend scripts/Events.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Backend scripts/Events.html @@ -19,14 +19,14 @@

Defines on which events script should run. Possible values are:

    -
  • frontendStartup - when Trilium frontend starts up (or is refreshed), +
  • frontendStartup - when Trilium frontend starts up (or is refreshed), but not on mobile.
  • -
  • mobileStartup - when Trilium frontend starts up (or is refreshed), +
  • mobileStartup - when Trilium frontend starts up (or is refreshed), on mobile.
  • -
  • backendStartup - when Trilium backend starts up
  • -
  • hourly - run once an hour. You can use additional label runAtHour to +
  • backendStartup - when Trilium backend starts up
  • +
  • hourly - run once an hour. You can use additional label runAtHour to specify at which hour, on the back-end.
  • -
  • daily - run once a day, on the back-end
  • +
  • daily - run once a day, on the back-end
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html index c6cfba5bd..d46ac8b84 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html @@ -107,10 +107,10 @@ class="ck-table-resized">
    -
  • The widget must export a class and not an instance of the class +
  • The widget must export a class and not an instance of the class (e.g. no new) because it needs to be multiplied for each note, so that splits work correctly.
  • -
  • Since the class is exported instead of an instance, the parentWidget getter +
  • Since the class is exported instead of an instance, the parentWidget getter must be static, otherwise the widget is ignored.
@@ -124,7 +124,7 @@ class="ck-table-resized">
    -
  • Although not mandatory, it's best to use a RightPanelWidget instead +
  • Although not mandatory, it's best to use a RightPanelWidget instead of a BasicWidget or a NoteContextAwareWidget.
diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index 4f833f93b..4277ea4b9 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 2c8eafa53..b7675da99 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -6169,6 +6169,20 @@ "type": "text", "mime": "text/markdown", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "dj3j8dG4th4l", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wy8So3yZZlH9", + "isInheritable": false, + "position": 20 + }, { "type": "label", "name": "shareAlias", @@ -6186,14 +6200,14 @@ { "type": "relation", "name": "internalLink", - "value": "dj3j8dG4th4l", + "value": "Gr6xFaF6ioJ5", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "wy8So3yZZlH9", + "value": "WOcw2SLH6tbX", "isInheritable": false, "position": 50 } From 5a60fdad8ad43e0311fa058a7f731afa51beafb6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:08:53 +0200 Subject: [PATCH 024/102] chore(note_detail): map SQL console to own type widget --- apps/client/src/widgets/NoteDetail.tsx | 2 ++ apps/client/src/widgets/note_types.tsx | 7 ++++++- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 apps/client/src/widgets/type_widgets/SqlConsole.tsx diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index ef9d68c99..2332dbf2d 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -318,6 +318,8 @@ export async function getExtendedWidgetType(note: FNote | null | undefined, note resultingType = "noteMap"; } else if (type === "text" && (await noteContext?.isReadOnly())) { resultingType = "readOnlyText"; + } else if (note.isTriliumSqlite()) { + resultingType = "sqlConsole"; } else if ((type === "code" || type === "mermaid") && (await noteContext?.isReadOnly())) { resultingType = "readOnlyCode"; } else if (type === "text") { diff --git a/apps/client/src/widgets/note_types.tsx b/apps/client/src/widgets/note_types.tsx index 3f3ab5e6f..e58960d70 100644 --- a/apps/client/src/widgets/note_types.tsx +++ b/apps/client/src/widgets/note_types.tsx @@ -12,7 +12,7 @@ import { TypeWidgetProps } from "./type_widgets/type_widget"; * A `NoteType` altered by the note detail widget, taking into consideration whether the note is editable or not and adding special note types such as an empty one, * for protected session or attachment information. */ -export type ExtendedNoteType = Exclude | "empty" | "readOnlyCode" | "readOnlyText" | "editableText" | "editableCode" | "attachmentDetail" | "attachmentList" | "protectedSession" | "aiChat"; +export type ExtendedNoteType = Exclude | "empty" | "readOnlyCode" | "readOnlyText" | "editableText" | "editableCode" | "attachmentDetail" | "attachmentList" | "protectedSession" | "aiChat" | "sqlConsole"; export type TypeWidget = ((props: TypeWidgetProps) => VNode | JSX.Element | undefined); type NoteTypeView = () => (Promise<{ default: TypeWidget } | TypeWidget> | TypeWidget); @@ -140,5 +140,10 @@ export const TYPE_MAPPINGS: Record = { view: () => import("./type_widgets/AiChat"), className: "ai-chat-widget-container", isFullHeight: true + }, + sqlConsole: { + view: () => import("./type_widgets/SqlConsole"), + className: "sql-console-widget-container", + isFullHeight: true } }; diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx new file mode 100644 index 000000000..44a002380 --- /dev/null +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -0,0 +1,5 @@ +export default function SqlConsole() { + return ( +
SQL Console Widget
+ ); +} From 3d8289d394c34843387eb87da17d54ddcede8eb1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:12:16 +0200 Subject: [PATCH 025/102] chore(note_detail): get code editor to show --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 44a002380..dcb025ad5 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -1,5 +1,11 @@ -export default function SqlConsole() { +import SplitEditor from "./helpers/SplitEditor"; +import { TypeWidgetProps } from "./type_widget"; + +export default function SqlConsole(props: TypeWidgetProps) { return ( -
SQL Console Widget
+ ); } From 9bac07ce62e144cb1c228c0a43ced0cce935c5cc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:29:15 +0200 Subject: [PATCH 026/102] chore(sql_console): integrate results into preview of split --- apps/client/src/layouts/desktop_layout.tsx | 2 - apps/client/src/widgets/sql_result.tsx | 63 ------------------- .../src/widgets/type_widgets/SqlConsole.tsx | 63 +++++++++++++++++++ 3 files changed, 63 insertions(+), 65 deletions(-) delete mode 100644 apps/client/src/widgets/sql_result.tsx diff --git a/apps/client/src/layouts/desktop_layout.tsx b/apps/client/src/layouts/desktop_layout.tsx index ffc94aec3..c0f43d46c 100644 --- a/apps/client/src/layouts/desktop_layout.tsx +++ b/apps/client/src/layouts/desktop_layout.tsx @@ -46,7 +46,6 @@ import ScrollPadding from "../widgets/scroll_padding.js"; import SearchResult from "../widgets/search_result.jsx"; import SharedInfo from "../widgets/shared_info.jsx"; import RightPanelContainer from "../widgets/sidebar/RightPanelContainer.jsx"; -import SqlResults from "../widgets/sql_result.js"; import SqlTableSchemas from "../widgets/sql_table_schemas.js"; import TabRowWidget from "../widgets/tab_row.js"; import TabHistoryNavigationButtons from "../widgets/TabHistoryNavigationButtons.jsx"; @@ -167,7 +166,6 @@ export default class DesktopLayout { .child() .child() .child() - .child() .child() ) .child() diff --git a/apps/client/src/widgets/sql_result.tsx b/apps/client/src/widgets/sql_result.tsx deleted file mode 100644 index 7aaa5739d..000000000 --- a/apps/client/src/widgets/sql_result.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { SqlExecuteResults } from "@triliumnext/commons"; -import { useNoteContext, useTriliumEvent } from "./react/hooks"; -import "./sql_result.css"; -import { useState } from "preact/hooks"; -import Alert from "./react/Alert"; -import { t } from "../services/i18n"; - -export default function SqlResults() { - const { note, ntxId } = useNoteContext(); - const [ results, setResults ] = useState(); - - useTriliumEvent("sqlQueryResults", ({ ntxId: eventNtxId, results }) => { - if (eventNtxId !== ntxId) return; - setResults(results); - }) - - const isEnabled = note?.mime === "text/x-sqlite;schema=trilium"; - return ( -
- {isEnabled && ( - results?.length === 1 && Array.isArray(results[0]) && results[0].length === 0 ? ( - - {t("sql_result.no_rows")} - - ) : ( -
- {results?.map(rows => { - // inserts, updates - if (typeof rows === "object" && !Array.isArray(rows)) { - return
{JSON.stringify(rows, null, "\t")}
- } - - // selects - return - })} -
- ) - )} -
- ) -} - -function SqlResultTable({ rows }: { rows: object[] }) { - if (!rows.length) return; - - return ( - - - - {Object.keys(rows[0]).map(key => )} - - - - - {rows.map(row => ( - - {Object.values(row).map(cell => )} - - ))} - -
{key}
{cell}
- ) -} diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index dcb025ad5..06b30c462 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -1,3 +1,9 @@ +import { SqlExecuteResults } from "@triliumnext/commons"; +import { useState } from "preact/hooks"; + +import { t } from "../../services/i18n"; +import Alert from "../react/Alert"; +import { useTriliumEvent } from "../react/hooks"; import SplitEditor from "./helpers/SplitEditor"; import { TypeWidgetProps } from "./type_widget"; @@ -6,6 +12,63 @@ export default function SqlConsole(props: TypeWidgetProps) { } /> ); } + +function SqlResults({ note, ntxId }: TypeWidgetProps) { + const [ results, setResults ] = useState(); + + useTriliumEvent("sqlQueryResults", ({ ntxId: eventNtxId, results }) => { + if (eventNtxId !== ntxId) return; + setResults(results); + }); + + const isEnabled = note?.mime === "text/x-sqlite;schema=trilium"; + return ( +
+ {isEnabled && ( + results?.length === 1 && Array.isArray(results[0]) && results[0].length === 0 ? ( + + {t("sql_result.no_rows")} + + ) : ( +
+ {results?.map(rows => { + // inserts, updates + if (typeof rows === "object" && !Array.isArray(rows)) { + return
{JSON.stringify(rows, null, "\t")}
; + } + + // selects + return ; + })} +
+ ) + )} +
+ ); +} + +function SqlResultTable({ rows }: { rows: object[] }) { + if (!rows.length) return; + + return ( + + + + {Object.keys(rows[0]).map(key => )} + + + + + {rows.map(row => ( + + {Object.values(row).map(cell => )} + + ))} + +
{key}
{cell}
+ ); +} From 0740788cc83b31da2f6edcbc1d08f890e00022d6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:32:28 +0200 Subject: [PATCH 027/102] chore(sql_console): link stylesheet --- .../widgets/{sql_result.css => type_widgets/SqlConsole.css} | 0 apps/client/src/widgets/type_widgets/SqlConsole.tsx | 2 ++ apps/server/src/app.ts | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) rename apps/client/src/widgets/{sql_result.css => type_widgets/SqlConsole.css} (100%) diff --git a/apps/client/src/widgets/sql_result.css b/apps/client/src/widgets/type_widgets/SqlConsole.css similarity index 100% rename from apps/client/src/widgets/sql_result.css rename to apps/client/src/widgets/type_widgets/SqlConsole.css diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 06b30c462..8c9200299 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -1,3 +1,5 @@ +import "./SqlConsole.css"; + import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index d3d09c5c7..0ab7a620c 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -3,6 +3,7 @@ import "./becca/becca_loader.js"; import compression from "compression"; import cookieParser from "cookie-parser"; +import { renderFile } from "ejs"; import express from "express"; import { auth } from "express-openid-connect"; import helmet from "helmet"; @@ -34,8 +35,7 @@ export default async function buildApp() { // view engine setup app.set("views", path.join(assetsDir, "views")); - const ejs = await import("ejs"); - app.engine("ejs", (filePath, options, callback) => ejs.renderFile(filePath, options, callback)); + app.engine("ejs", (filePath, options, callback) => renderFile(filePath, options, callback)); app.set("view engine", "ejs"); app.use((req, res, next) => { From f29427684940e6b9f96528a834ce3dfa08de210c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:38:44 +0200 Subject: [PATCH 028/102] fix(sql_console): full-height not respected --- apps/client/src/widgets/NoteDetail.tsx | 3 +-- apps/client/src/widgets/scroll_padding.tsx | 9 ++++++--- apps/client/src/widgets/type_widgets/SqlConsole.css | 13 ++++++++----- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index 2332dbf2d..ebce85a0c 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -344,9 +344,8 @@ export function checkFullHeight(noteContext: NoteContext | undefined, type: Exte // https://github.com/zadam/trilium/issues/2522 const isBackendNote = noteContext?.noteId === "_backendLog"; - const isSqlNote = noteContext.note?.mime === "text/x-sqlite;schema=trilium"; const isFullHeightNoteType = type && TYPE_MAPPINGS[type].isFullHeight; - return (!noteContext?.hasNoteList() && isFullHeightNoteType && !isSqlNote) + return (!noteContext?.hasNoteList() && isFullHeightNoteType) || noteContext?.viewScope?.viewMode === "attachments" || isBackendNote; } diff --git a/apps/client/src/widgets/scroll_padding.tsx b/apps/client/src/widgets/scroll_padding.tsx index d42098672..549e53f44 100644 --- a/apps/client/src/widgets/scroll_padding.tsx +++ b/apps/client/src/widgets/scroll_padding.tsx @@ -1,11 +1,14 @@ import { useEffect, useRef, useState } from "preact/hooks"; + import { useNoteContext } from "./react/hooks"; export default function ScrollPadding() { const { note, parentComponent, ntxId, viewScope } = useNoteContext(); const ref = useRef(null); const [height, setHeight] = useState(10); - const isEnabled = ["text", "code"].includes(note?.type ?? "") && viewScope?.viewMode === "default"; + const isEnabled = ["text", "code"].includes(note?.type ?? "") + && viewScope?.viewMode === "default" + && !note?.isTriliumSqlite(); const refreshHeight = () => { if (!ref.current) return; @@ -37,6 +40,6 @@ export default function ScrollPadding() { style={{ height }} onClick={() => parentComponent.triggerCommand("scrollToEnd", { ntxId })} /> - :
- ) + :
+ ); } diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 63b5621ed..2d19e9098 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -1,7 +1,10 @@ -.sql-result-widget { - padding: 15px; +.sql-console-widget-container { + .note-detail-split-preview { + overflow: auto; + } + + .sql-console-result-container td { + white-space: preserve; + } } -.sql-console-result-container td { - white-space: preserve; -} \ No newline at end of file From 5053e744473356b963d8c8bd69e76723655d5c17 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:41:45 +0200 Subject: [PATCH 029/102] fix(sql_console): note type switcher showing up --- apps/client/src/widgets/layout/InlineTitle.tsx | 6 ++++-- apps/client/src/widgets/layout/NoteTypeSwitcher.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/layout/InlineTitle.tsx b/apps/client/src/widgets/layout/InlineTitle.tsx index ce44681e6..b0e7e4e8a 100644 --- a/apps/client/src/widgets/layout/InlineTitle.tsx +++ b/apps/client/src/widgets/layout/InlineTitle.tsx @@ -7,6 +7,7 @@ import { ComponentChild } from "preact"; import { useLayoutEffect, useMemo, useRef, useState } from "preact/hooks"; import { Trans } from "react-i18next"; +import FNote from "../../entities/fnote"; import { ViewScope } from "../../services/link"; import { formatDateTime } from "../../utils/formatters"; import NoteIcon from "../note_icon"; @@ -69,9 +70,10 @@ export default function InlineTitle() { ); } -function shouldShow(noteId: string | undefined, type: NoteType | undefined, viewScope: ViewScope | undefined) { +function shouldShow(note: FNote, type: NoteType | undefined, viewScope: ViewScope | undefined) { if (viewScope?.viewMode !== "default") return false; - if (noteId?.startsWith("_options")) return true; + if (note.noteId?.startsWith("_options")) return true; + if (note.isTriliumSqlite()) return false; return type && supportedNoteTypes.has(type); } diff --git a/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx b/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx index 8ac68ae83..e345249ad 100644 --- a/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx +++ b/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx @@ -39,7 +39,7 @@ export default function NoteTypeSwitcher() { const currentNoteTypeData = useMemo(() => NOTE_TYPES.find(t => t.type === currentNoteType), [ currentNoteType ]); const { builtinTemplates, collectionTemplates } = useBuiltinTemplates(); - return (currentNoteType && supportedNoteTypes.has(currentNoteType) && + return (currentNoteType && supportedNoteTypes.has(currentNoteType) && !note?.isTriliumSqlite() &&
Date: Sat, 17 Jan 2026 20:44:03 +0200 Subject: [PATCH 030/102] chore(sql_console): reverse preview and code sections --- apps/client/src/widgets/type_widgets/SqlConsole.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 2d19e9098..15272c2bc 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -1,4 +1,8 @@ .sql-console-widget-container { + .note-detail-split.split-vertical { + flex-direction: column-reverse; + } + .note-detail-split-preview { overflow: auto; } From 52ed1750ac53c482deae466caea1ff180c61ca1b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:52:53 +0200 Subject: [PATCH 031/102] fix(sql_console): runtime error for inline title --- apps/client/src/widgets/layout/InlineTitle.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/client/src/widgets/layout/InlineTitle.tsx b/apps/client/src/widgets/layout/InlineTitle.tsx index b0e7e4e8a..907090253 100644 --- a/apps/client/src/widgets/layout/InlineTitle.tsx +++ b/apps/client/src/widgets/layout/InlineTitle.tsx @@ -23,12 +23,12 @@ const supportedNoteTypes = new Set([ export default function InlineTitle() { const { note, parentComponent, viewScope } = useNoteContext(); const type = useNoteProperty(note, "type"); - const [ shown, setShown ] = useState(shouldShow(note?.noteId, type, viewScope)); + const [ shown, setShown ] = useState(shouldShow(note, type, viewScope)); const containerRef = useRef(null); const [ titleHidden, setTitleHidden ] = useState(false); useLayoutEffect(() => { - setShown(shouldShow(note?.noteId, type, viewScope)); + setShown(shouldShow(note, type, viewScope)); }, [ note, type, viewScope ]); useLayoutEffect(() => { @@ -70,10 +70,10 @@ export default function InlineTitle() { ); } -function shouldShow(note: FNote, type: NoteType | undefined, viewScope: ViewScope | undefined) { +function shouldShow(note: FNote | null | undefined, type: NoteType | undefined, viewScope: ViewScope | undefined) { if (viewScope?.viewMode !== "default") return false; - if (note.noteId?.startsWith("_options")) return true; - if (note.isTriliumSqlite()) return false; + if (note?.noteId?.startsWith("_options")) return true; + if (note?.isTriliumSqlite()) return false; return type && supportedNoteTypes.has(type); } From 6972a4b9011f5f8178c1ea4eb498e2435f52b307 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 20:58:26 +0200 Subject: [PATCH 032/102] fix(note_detail): preview leaks between mermaid & SQL console --- apps/client/src/widgets/NoteDetail.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index ebce85a0c..bb47dc80c 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -265,9 +265,13 @@ function useNoteInfo() { const [ note, setNote ] = useState(); const [ type, setType ] = useState(); const [ mime, setMime ] = useState(); + const refreshIdRef = useRef(0); function refresh() { + const refreshId = ++refreshIdRef.current; + getExtendedWidgetType(actualNote, noteContext).then(type => { + if (refreshId !== refreshIdRef.current) return; setNote(actualNote); setType(type); setMime(actualNote?.mime); From 781de9a1fbc9830b58c511d52734bc468f6126bf Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:22:22 +0200 Subject: [PATCH 033/102] feat(sql_console): basic integration of Tabulator --- .../src/widgets/type_widgets/SqlConsole.tsx | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 8c9200299..0c6651d80 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -4,6 +4,7 @@ import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; import { t } from "../../services/i18n"; +import Tabulator from "../collections/table/tabulator"; import Alert from "../react/Alert"; import { useTriliumEvent } from "../react/hooks"; import SplitEditor from "./helpers/SplitEditor"; @@ -57,20 +58,15 @@ function SqlResultTable({ rows }: { rows: object[] }) { if (!rows.length) return; return ( - - - - {Object.keys(rows[0]).map(key => )} - - - - - {rows.map(row => ( - - {Object.values(row).map(cell => )} - - ))} - -
{key}
{cell}
+ ({ + title: key, + field: key + })) + ]} + data={rows} + /> ); } From 2ecfbbf284f7e58b3b94560de715d69c3d823654 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:26:28 +0200 Subject: [PATCH 034/102] feat(sql_console): improve fit & solve build error --- .../widgets/collections/table/tabulator.tsx | 24 +++++++++++-------- apps/client/src/widgets/sql_table_schemas.css | 11 +-------- .../src/widgets/type_widgets/SqlConsole.css | 8 +++++-- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/apps/client/src/widgets/collections/table/tabulator.tsx b/apps/client/src/widgets/collections/table/tabulator.tsx index 31fb8d4f8..d908104ce 100644 --- a/apps/client/src/widgets/collections/table/tabulator.tsx +++ b/apps/client/src/widgets/collections/table/tabulator.tsx @@ -1,18 +1,20 @@ -import { useContext, useEffect, useLayoutEffect, useRef } from "preact/hooks"; -import { EventCallBackMethods, Module, Options, Tabulator as VanillaTabulator } from "tabulator-tables"; import "tabulator-tables/dist/css/tabulator.css"; import "../../../../src/stylesheets/table.css"; -import { ParentComponent, renderReactWidget } from "../../react/react_utils"; -import { JSX } from "preact/jsx-runtime"; + import { isValidElement, RefObject } from "preact"; +import { useContext, useEffect, useLayoutEffect, useRef } from "preact/hooks"; +import { JSX } from "preact/jsx-runtime"; +import { EventCallBackMethods, Module, Options, Tabulator as VanillaTabulator } from "tabulator-tables"; + +import { ParentComponent, renderReactWidget } from "../../react/react_utils"; interface TableProps extends Omit { - tabulatorRef: RefObject; + tabulatorRef?: RefObject; className?: string; data?: T[]; modules?: (new (table: VanillaTabulator) => Module)[]; events?: Partial; - index: keyof T; + index?: keyof T; footerElement?: string | HTMLElement | JSX.Element; onReady?: () => void; } @@ -43,7 +45,9 @@ export default function Tabulator({ className, columns, data, modules, tabula tabulator.on("tableBuilt", () => { tabulatorRef.current = tabulator; - externalTabulatorRef.current = tabulator; + if (externalTabulatorRef) { + externalTabulatorRef.current = tabulator; + } onReady?.(); }); @@ -62,12 +66,12 @@ export default function Tabulator({ className, columns, data, modules, tabula for (const [ eventName, handler ] of Object.entries(events)) { tabulator.off(eventName as keyof EventCallBackMethods, handler); } - } + }; }, Object.values(events ?? {})); // Change in data. - useEffect(() => { tabulatorRef.current?.setData(data) }, [ data ]); - useEffect(() => { columns && tabulatorRef.current?.setColumns(columns)}, [ data]); + useEffect(() => { tabulatorRef.current?.setData(data); }, [ data ]); + useEffect(() => { columns && tabulatorRef.current?.setColumns(columns); }, [ data ]); return (
diff --git a/apps/client/src/widgets/sql_table_schemas.css b/apps/client/src/widgets/sql_table_schemas.css index d6c1c8f95..1dcf3919f 100644 --- a/apps/client/src/widgets/sql_table_schemas.css +++ b/apps/client/src/widgets/sql_table_schemas.css @@ -19,15 +19,6 @@ cursor: pointer; } -.sql-console-result-container { - width: 100%; - font-size: smaller; - margin-top: 10px; - flex-grow: 1; - overflow: auto; - min-height: 0; -} - .table-schema td { padding: 5px; } @@ -40,4 +31,4 @@ /* Data type */ .dropdown .table-schema td:nth-child(2) { color: var(--muted-text-color); -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 15272c2bc..3f77b38f7 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -7,8 +7,12 @@ overflow: auto; } - .sql-console-result-container td { - white-space: preserve; + .sql-console-result-container { + width: 100%; + font-size: smaller; + flex-grow: 1; + overflow: auto; + min-height: 0; } } From 6ae74b3181356683aada977a8011328645c7b63b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:35:58 +0200 Subject: [PATCH 035/102] feat(sql_console): make scrolls and headers always visible --- .../src/widgets/type_widgets/SqlConsole.css | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 3f77b38f7..aad40abbb 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -7,12 +7,21 @@ overflow: auto; } - .sql-console-result-container { - width: 100%; - font-size: smaller; - flex-grow: 1; - overflow: auto; - min-height: 0; + .sql-result-widget { + height: 100%; + + > .sql-console-result-container { + width: 100%; + height: 100%; + font-size: smaller; + flex-grow: 1; + overflow: auto; + min-height: 0; + + > .tabulator { + height: 100%; + } + } } } From 7c18025098d1348820817f1c5036687fe29be64a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:41:06 +0200 Subject: [PATCH 036/102] feat(sql_console): reduce spacing to fit more content --- apps/client/src/widgets/type_widgets/SqlConsole.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index aad40abbb..24406999b 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -20,6 +20,15 @@ > .tabulator { height: 100%; + --cell-vert-padding-size: 4px; + + > .tabulator-tableholder { + padding: 0; + } + + .tabulator-col-content { + padding: 4px !important; + } } } } From c6896a4b33bef171baf076410f992efd38c41f89 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:43:21 +0200 Subject: [PATCH 037/102] feat(sql_console): reduce column width --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 0c6651d80..c66473fb5 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -63,7 +63,10 @@ function SqlResultTable({ rows }: { rows: object[] }) { columns={[ ...Object.keys(rows[0]).map(key => ({ title: key, - field: key + field: key, + minWidth: 100, + maxWidth: 400, + widthGrow: 1 })) ]} data={rows} From 769f3db21c8d8dc0ebe019bf1ffe74d7e657ec27 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:45:10 +0200 Subject: [PATCH 038/102] feat(sql_console): make columns resizable --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index c66473fb5..5042b0968 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,6 +2,7 @@ import "./SqlConsole.css"; import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; +import { ResizeColumnsModule } from "tabulator-tables"; import { t } from "../../services/i18n"; import Tabulator from "../collections/table/tabulator"; @@ -60,13 +61,15 @@ function SqlResultTable({ rows }: { rows: object[] }) { return ( ({ title: key, field: key, + width: 250, minWidth: 100, - maxWidth: 400, - widthGrow: 1 + widthGrow: 1, + resizable: true })) ]} data={rows} From 630d16b722f2a3618af4228c9546514a6ee6c241 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 21:47:02 +0200 Subject: [PATCH 039/102] feat(sql_console): enable sorting --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 5042b0968..e6682caa3 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,7 +2,7 @@ import "./SqlConsole.css"; import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; -import { ResizeColumnsModule } from "tabulator-tables"; +import { ResizeColumnsModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; import Tabulator from "../collections/table/tabulator"; @@ -61,7 +61,7 @@ function SqlResultTable({ rows }: { rows: object[] }) { return ( ({ title: key, From f10373d54f147a59c20002672e9c3578c7e71caf Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 22:02:47 +0200 Subject: [PATCH 040/102] feat(sql_console): add clipboard --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index e6682caa3..081ab7ad3 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,7 +2,7 @@ import "./SqlConsole.css"; import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; -import { ResizeColumnsModule, SortModule } from "tabulator-tables"; +import { ClipboardModule, EditModule, ExportModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; import Tabulator from "../collections/table/tabulator"; @@ -61,7 +61,14 @@ function SqlResultTable({ rows }: { rows: object[] }) { return ( ({ title: key, From bc79ff684503ef982df484823d7e5d77de5ea8b7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 22:09:24 +0200 Subject: [PATCH 041/102] feat(sql_console): row numbers --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 081ab7ad3..5fadec709 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,7 +2,7 @@ import "./SqlConsole.css"; import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; -import { ClipboardModule, EditModule, ExportModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; +import { ClipboardModule, EditModule, ExportModule, FormatModule, FrozenColumnsModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; import Tabulator from "../collections/table/tabulator"; @@ -61,7 +61,7 @@ function SqlResultTable({ rows }: { rows: object[] }) { return ( ({ title: key, field: key, From 2c87f609f37e60643013c6920066c873ca004750 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 22:13:13 +0200 Subject: [PATCH 042/102] feat(sql_console): add filter --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 5fadec709..9551f60b7 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,7 +2,7 @@ import "./SqlConsole.css"; import { SqlExecuteResults } from "@triliumnext/commons"; import { useState } from "preact/hooks"; -import { ClipboardModule, EditModule, ExportModule, FormatModule, FrozenColumnsModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; +import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; import Tabulator from "../collections/table/tabulator"; @@ -61,7 +61,7 @@ function SqlResultTable({ rows }: { rows: object[] }) { return ( Date: Sat, 17 Jan 2026 22:29:20 +0200 Subject: [PATCH 043/102] feat(sql_console): increase size for results --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 9551f60b7..e68f1fb08 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -17,6 +17,9 @@ export default function SqlConsole(props: TypeWidgetProps) { noteType="code" {...props} previewContent={} + splitOptions={{ + sizes: [ 90, 10 ] + }} /> ); } From 4c4e5b85e9b94fe89a89a70faeb34c67c14890fe Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 22:38:18 +0200 Subject: [PATCH 044/102] chore(sql_console): integrate table reference --- apps/client/src/layouts/desktop_layout.tsx | 2 - apps/client/src/widgets/sql_table_schemas.css | 34 ---------- apps/client/src/widgets/sql_table_schemas.tsx | 46 -------------- .../src/widgets/type_widgets/SqlConsole.css | 41 ++++++++++++ .../src/widgets/type_widgets/SqlConsole.tsx | 63 ++++++++++++++++--- .../type_widgets/helpers/SplitEditor.tsx | 26 ++++---- 6 files changed, 109 insertions(+), 103 deletions(-) delete mode 100644 apps/client/src/widgets/sql_table_schemas.css delete mode 100644 apps/client/src/widgets/sql_table_schemas.tsx diff --git a/apps/client/src/layouts/desktop_layout.tsx b/apps/client/src/layouts/desktop_layout.tsx index c0f43d46c..511f6f9c0 100644 --- a/apps/client/src/layouts/desktop_layout.tsx +++ b/apps/client/src/layouts/desktop_layout.tsx @@ -46,7 +46,6 @@ import ScrollPadding from "../widgets/scroll_padding.js"; import SearchResult from "../widgets/search_result.jsx"; import SharedInfo from "../widgets/shared_info.jsx"; import RightPanelContainer from "../widgets/sidebar/RightPanelContainer.jsx"; -import SqlTableSchemas from "../widgets/sql_table_schemas.js"; import TabRowWidget from "../widgets/tab_row.js"; import TabHistoryNavigationButtons from "../widgets/TabHistoryNavigationButtons.jsx"; import TitleBarButtons from "../widgets/title_bar_buttons.jsx"; @@ -162,7 +161,6 @@ export default class DesktopLayout { .child() ) .optChild(!isNewLayout, ) - .child() .child() .child() .child() diff --git a/apps/client/src/widgets/sql_table_schemas.css b/apps/client/src/widgets/sql_table_schemas.css deleted file mode 100644 index 1dcf3919f..000000000 --- a/apps/client/src/widgets/sql_table_schemas.css +++ /dev/null @@ -1,34 +0,0 @@ -.sql-table-schemas-widget { - padding: 12px; - padding-inline-end: 10%; - contain: none !important; -} - -.sql-table-schemas > .dropdown { - display: inline-block !important; -} - -.sql-table-schemas button.btn { - padding: 0.25rem 0.4rem; - font-size: 0.875rem; - line-height: 0.5; - border: 1px solid var(--button-border-color); - border-radius: var(--button-border-radius); - background: var(--button-background-color); - color: var(--button-text-color); - cursor: pointer; -} - -.table-schema td { - padding: 5px; -} - -.dropdown .table-schema { - font-family: var(--monospace-font-family); - font-size: .85em; -} - -/* Data type */ -.dropdown .table-schema td:nth-child(2) { - color: var(--muted-text-color); -} diff --git a/apps/client/src/widgets/sql_table_schemas.tsx b/apps/client/src/widgets/sql_table_schemas.tsx deleted file mode 100644 index 3605c2f95..000000000 --- a/apps/client/src/widgets/sql_table_schemas.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { useEffect, useState } from "preact/hooks"; -import { t } from "../services/i18n"; -import { useNoteContext } from "./react/hooks"; -import "./sql_table_schemas.css"; -import { SchemaResponse } from "@triliumnext/commons"; -import server from "../services/server"; -import Dropdown from "./react/Dropdown"; - -export default function SqlTableSchemas() { - const { note } = useNoteContext(); - const [ schemas, setSchemas ] = useState(); - - useEffect(() => { - server.get("sql/schema").then(setSchemas); - }, []); - - const isEnabled = note?.mime === "text/x-sqlite;schema=trilium" && schemas; - return ( -
- {isEnabled && ( - <> - {t("sql_table_schemas.tables")}{": "} - - - {schemas.map(({ name, columns }) => ( - <> - - - {columns.map(column => ( - - - - - ))} -
{column.name}{column.type}
-
- {" "} - - ))} -
- - )} -
- ) -} \ No newline at end of file diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 24406999b..2aec59070 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -32,5 +32,46 @@ } } } + + .sql-table-schemas-widget { + padding: 12px; + padding-inline-end: 10%; + contain: none !important; + + .sql-table-schemas { + display: flex; + flex-wrap: wrap; + gap: 0.25em; + } + + > .dropdown { + display: inline-block !important; + } + + button.btn { + padding: 0.25rem 0.4rem; + font-size: 0.875rem; + line-height: 0.5; + border: 1px solid var(--button-border-color); + border-radius: var(--button-border-radius); + background: var(--button-background-color); + color: var(--button-text-color); + cursor: pointer; + } + + .table-schema td { + padding: 5px; + } + + .dropdown .table-schema { + font-family: var(--monospace-font-family); + font-size: .85em; + } + + /* Data type */ + .dropdown .table-schema td:nth-child(2) { + color: var(--muted-text-color); + } + } } diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index e68f1fb08..4c5491d8d 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -1,26 +1,31 @@ import "./SqlConsole.css"; -import { SqlExecuteResults } from "@triliumnext/commons"; -import { useState } from "preact/hooks"; +import { SchemaResponse, SqlExecuteResults } from "@triliumnext/commons"; +import { useEffect, useState } from "preact/hooks"; import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; +import server from "../../services/server"; import Tabulator from "../collections/table/tabulator"; import Alert from "../react/Alert"; +import Dropdown from "../react/Dropdown"; import { useTriliumEvent } from "../react/hooks"; import SplitEditor from "./helpers/SplitEditor"; import { TypeWidgetProps } from "./type_widget"; export default function SqlConsole(props: TypeWidgetProps) { return ( - } - splitOptions={{ - sizes: [ 90, 10 ] - }} - /> + <> + } + previewContent={} + splitOptions={{ + sizes: [ 70, 30 ] + }} + /> + ); } @@ -94,3 +99,41 @@ function SqlResultTable({ rows }: { rows: object[] }) { /> ); } + +export function SqlTableSchemas({ note }: TypeWidgetProps) { + const [ schemas, setSchemas ] = useState(); + + useEffect(() => { + server.get("sql/schema").then(setSchemas); + }, []); + + const isEnabled = note?.mime === "text/x-sqlite;schema=trilium" && schemas; + return ( +
+ {isEnabled && ( + <> + {t("sql_table_schemas.tables")}{": "} + + + {schemas.map(({ name, columns }) => ( + <> + + + {columns.map(column => ( + + + + + ))} +
{column.name}{column.type}
+
+ {" "} + + ))} +
+ + )} +
+ ); +} diff --git a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx index e6d85cf7c..0b45d8521 100644 --- a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx +++ b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx @@ -1,13 +1,15 @@ +import "./SplitEditor.css"; + +import Split from "@triliumnext/split.js"; +import { ComponentChildren } from "preact"; import { useEffect, useRef } from "preact/hooks"; + +import { DEFAULT_GUTTER_SIZE } from "../../../services/resizer"; import utils, { isMobile } from "../../../services/utils"; +import ActionButton, { ActionButtonProps } from "../../react/ActionButton"; import Admonition from "../../react/Admonition"; import { useNoteLabelBoolean, useTriliumOption } from "../../react/hooks"; -import "./SplitEditor.css"; -import Split from "@triliumnext/split.js"; -import { DEFAULT_GUTTER_SIZE } from "../../../services/resizer"; import { EditableCode, EditableCodeProps } from "../code/Code"; -import { ComponentChildren } from "preact"; -import ActionButton, { ActionButtonProps } from "../../react/ActionButton"; export interface SplitEditorProps extends EditableCodeProps { className?: string; @@ -15,6 +17,7 @@ export interface SplitEditorProps extends EditableCodeProps { splitOptions?: Split.Options; previewContent: ComponentChildren; previewButtons?: ComponentChildren; + editorBefore?: ComponentChildren; } /** @@ -26,13 +29,14 @@ export interface SplitEditorProps extends EditableCodeProps { * - Can display errors to the user via {@link setError}. * - Horizontal or vertical orientation for the editor/preview split, adjustable via the switch split orientation button floating button. */ -export default function SplitEditor({ note, error, splitOptions, previewContent, previewButtons, className, ...editorProps }: SplitEditorProps) { +export default function SplitEditor({ note, error, splitOptions, previewContent, previewButtons, className, editorBefore, ...editorProps }: SplitEditorProps) { const splitEditorOrientation = useSplitOrientation(); const [ readOnly ] = useNoteLabelBoolean(note, "readOnly"); const containerRef = useRef(null); const editor = (!readOnly &&
+ {editorBefore}
+
{splitEditorOrientation === "horizontal" - ? <>{editor}{preview} - : <>{preview}{editor}} + ? <>{editor}{preview} + : <>{preview}{editor}}
- ) + ); } export function PreviewButton(props: Omit) { @@ -88,7 +92,7 @@ export function PreviewButton(props: Omit) { className="tn-tool-button" noIconActionClass titlePosition="top" - /> + />; } function useSplitOrientation() { From fb0c7359f184271ccac23c264361a90f96ea2693 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 22:39:32 +0200 Subject: [PATCH 045/102] chore(sql_console): fix typecheck issue --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 4c5491d8d..24c6522be 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -92,7 +92,7 @@ function SqlResultTable({ rows }: { rows: object[] }) { minWidth: 100, widthGrow: 1, resizable: true, - headerFilter: true + headerFilter: true as const })) ]} data={rows} From 56fcc7adcc85ec234b22c5a49b511955a352c598 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 17 Jan 2026 22:41:55 +0200 Subject: [PATCH 046/102] chore(sql_console): fix lint warnings --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 24c6522be..54e17647e 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,6 +2,7 @@ import "./SqlConsole.css"; import { SchemaResponse, SqlExecuteResults } from "@triliumnext/commons"; import { useEffect, useState } from "preact/hooks"; +import { Fragment } from "preact/jsx-runtime"; import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; @@ -47,14 +48,14 @@ function SqlResults({ note, ntxId }: TypeWidgetProps) { ) : (
- {results?.map(rows => { + {results?.map((rows, index) => { // inserts, updates if (typeof rows === "object" && !Array.isArray(rows)) { - return
{JSON.stringify(rows, null, "\t")}
; + return
{JSON.stringify(rows, null, "\t")}
; } // selects - return ; + return ; })}
) @@ -116,12 +117,12 @@ export function SqlTableSchemas({ note }: TypeWidgetProps) { {schemas.map(({ name, columns }) => ( - <> + {columns.map(column => ( - + @@ -129,7 +130,7 @@ export function SqlTableSchemas({ note }: TypeWidgetProps) {
{column.name} {column.type}
{" "} - +
))}
From 1b812f1886521f202e51fbe0b0208a1b950b446d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 01:37:35 +0000 Subject: [PATCH 047/102] chore(deps): update dependency @smithy/middleware-retry to v4.4.24 --- packages/ckeditor5/package.json | 2 +- pnpm-lock.yaml | 120 ++++++++++++++++++++++++++------ 2 files changed, 98 insertions(+), 24 deletions(-) diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index d912a9685..6ccb19bf2 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -16,7 +16,7 @@ "ckeditor5-premium-features": "47.4.0" }, "devDependencies": { - "@smithy/middleware-retry": "4.4.23", + "@smithy/middleware-retry": "4.4.24", "@types/jquery": "3.5.33" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fb5adf9e..f1bc120b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -888,8 +888,8 @@ importers: version: 47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5) devDependencies: '@smithy/middleware-retry': - specifier: 4.4.23 - version: 4.4.23 + specifier: 4.4.24 + version: 4.4.24 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -4804,6 +4804,10 @@ packages: resolution: {integrity: sha512-BpAffW1mIyRZongoKBbh3RgHG+JDHJek/8hjA/9LnPunM+ejorO6axkxCgwxCe4K//g/JdPeR9vROHDYr/hfnQ==} engines: {node: '>=18.0.0'} + '@smithy/core@3.20.7': + resolution: {integrity: sha512-aO7jmh3CtrmPsIJxUwYIzI5WVlMK8BMCPQ4D4nTzqTqBhbzvxHNzBMGcEg13yg/z9R2Qsz49NUFl0F0lVbTVFw==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.0.6': resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} @@ -4856,8 +4860,12 @@ packages: resolution: {integrity: sha512-SCmhUG1UwtnEhF5Sxd8qk7bJwkj1BpFzFlHkXqKCEmDPLrRjJyTGM0EhqT7XBtDaDJjCfjRJQodgZcKDR843qg==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.23': - resolution: {integrity: sha512-lLEmkQj7I7oKfvZ1wsnToGJouLOtfkMXDKRA1Hi6F+mMp5O1N8GcVWmVeNgTtgZtd0OTXDTI2vpVQmeutydGew==} + '@smithy/middleware-endpoint@4.4.8': + resolution: {integrity: sha512-TV44qwB/T0OMMzjIuI+JeS0ort3bvlPJ8XIH0MSlGADraXpZqmyND27ueuAL3E14optleADWqtd7dUgc2w+qhQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.24': + resolution: {integrity: sha512-yiUY1UvnbUFfP5izoKLtfxDSTRv724YRRwyiC/5HYY6vdsVDcDOXKSXmkJl/Hovcxt5r+8tZEUAdrOaCJwrl9Q==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.9': @@ -4908,6 +4916,10 @@ packages: resolution: {integrity: sha512-wcr3UEL26k7lLoyf9eVDZoD1nNY3Fa1gbNuOXvfxvVWLGkOVW+RYZgUUp/bXHryJfycIOQnBq9o1JAE00ax8HQ==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.10.9': + resolution: {integrity: sha512-Je0EvGXVJ0Vrrr2lsubq43JGRIluJ/hX17aN/W/A0WfE+JpoMdI8kwk2t9F0zTX9232sJDGcoH4zZre6m6f/sg==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.12.0': resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} engines: {node: '>=18.0.0'} @@ -14522,7 +14534,7 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 '@smithy/middleware-endpoint': 4.4.7 - '@smithy/middleware-retry': 4.4.23 + '@smithy/middleware-retry': 4.4.24 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 @@ -14568,7 +14580,7 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 '@smithy/middleware-endpoint': 4.4.7 - '@smithy/middleware-retry': 4.4.23 + '@smithy/middleware-retry': 4.4.24 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 @@ -14762,7 +14774,7 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 '@smithy/middleware-endpoint': 4.4.7 - '@smithy/middleware-retry': 4.4.23 + '@smithy/middleware-retry': 4.4.24 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 @@ -15086,8 +15098,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-upload': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -15228,8 +15238,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-cloud-services@47.4.0': dependencies: @@ -15441,8 +15449,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-decoupled@47.4.0': dependencies: @@ -15452,8 +15458,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-inline@47.4.0': dependencies: @@ -15463,6 +15467,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: @@ -15485,6 +15491,8 @@ snapshots: '@ckeditor/ckeditor5-table': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: @@ -15510,8 +15518,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@47.4.0': dependencies: @@ -15543,6 +15549,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: @@ -15567,8 +15575,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-font@47.4.0': dependencies: @@ -15643,8 +15649,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -15690,6 +15694,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -15702,6 +15708,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-indent@47.4.0': dependencies: @@ -15713,6 +15721,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15722,6 +15732,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -15746,6 +15758,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -15769,6 +15783,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -15806,6 +15822,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15815,6 +15833,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: @@ -15827,6 +15847,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: @@ -15835,6 +15857,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: @@ -15889,6 +15913,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: @@ -15998,6 +16024,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -16010,6 +16038,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: @@ -16057,6 +16087,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-table@47.4.0': dependencies: @@ -16069,6 +16101,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-template@47.4.0': dependencies: @@ -16179,6 +16213,8 @@ snapshots: '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-widget@47.4.0': dependencies: @@ -16198,6 +16234,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -19274,6 +19312,19 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 + '@smithy/core@3.20.7': + dependencies: + '@smithy/middleware-serde': 4.2.9 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + '@smithy/credential-provider-imds@4.0.6': dependencies: '@smithy/node-config-provider': 4.3.8 @@ -19357,12 +19408,23 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.23': + '@smithy/middleware-endpoint@4.4.8': + dependencies: + '@smithy/core': 3.20.7 + '@smithy/middleware-serde': 4.2.9 + '@smithy/node-config-provider': 4.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-middleware': 4.2.8 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.4.24': dependencies: '@smithy/node-config-provider': 4.3.8 '@smithy/protocol-http': 5.3.8 '@smithy/service-error-classification': 4.2.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -19446,6 +19508,16 @@ snapshots: '@smithy/util-stream': 4.5.10 tslib: 2.8.1 + '@smithy/smithy-client@4.10.9': + dependencies: + '@smithy/core': 3.20.7 + '@smithy/middleware-endpoint': 4.4.8 + '@smithy/middleware-stack': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.10 + tslib: 2.8.1 + '@smithy/types@4.12.0': dependencies: tslib: 2.8.1 @@ -21664,6 +21736,8 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: From d83d7ed106e7dee7e2caae8186665baf48b57f54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 01:38:26 +0000 Subject: [PATCH 048/102] chore(deps): update dependency webdriverio to v9.23.2 --- packages/ckeditor5-admonition/package.json | 2 +- packages/ckeditor5-footnotes/package.json | 2 +- .../ckeditor5-keyboard-marker/package.json | 2 +- packages/ckeditor5-math/package.json | 2 +- packages/ckeditor5-mermaid/package.json | 2 +- pnpm-lock.yaml | 154 ++++++++++-------- 6 files changed, 93 insertions(+), 71 deletions(-) diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json index 8a6aaa4a5..2364bd851 100644 --- a/packages/ckeditor5-admonition/package.json +++ b/packages/ckeditor5-admonition/package.json @@ -39,7 +39,7 @@ "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.17", - "webdriverio": "9.23.0" + "webdriverio": "9.23.2" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json index b3f32618b..e387a8518 100644 --- a/packages/ckeditor5-footnotes/package.json +++ b/packages/ckeditor5-footnotes/package.json @@ -40,7 +40,7 @@ "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.17", - "webdriverio": "9.23.0" + "webdriverio": "9.23.2" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json index e8b65485d..e72036a08 100644 --- a/packages/ckeditor5-keyboard-marker/package.json +++ b/packages/ckeditor5-keyboard-marker/package.json @@ -42,7 +42,7 @@ "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.17", - "webdriverio": "9.23.0" + "webdriverio": "9.23.2" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index 43d6c9cbf..259cee11d 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -42,7 +42,7 @@ "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.17", - "webdriverio": "9.23.0" + "webdriverio": "9.23.2" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json index 10b632874..34d580fff 100644 --- a/packages/ckeditor5-mermaid/package.json +++ b/packages/ckeditor5-mermaid/package.json @@ -42,7 +42,7 @@ "typescript": "5.9.3", "vite-plugin-svgo": "2.0.0", "vitest": "4.0.17", - "webdriverio": "9.23.0" + "webdriverio": "9.23.2" }, "peerDependencies": { "ckeditor5": "47.4.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fb5adf9e..eac812f92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,7 +57,7 @@ importers: version: 24.10.9 '@vitest/browser-webdriverio': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-v8': specifier: 4.0.17 version: 4.0.17(@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17))(vitest@4.0.17) @@ -951,8 +951,8 @@ importers: specifier: 4.0.17 version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.0 - version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.2 + version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-footnotes: devDependencies: @@ -1011,8 +1011,8 @@ importers: specifier: 4.0.17 version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.0 - version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.2 + version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-keyboard-marker: devDependencies: @@ -1071,8 +1071,8 @@ importers: specifier: 4.0.17 version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.0 - version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.2 + version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-math: dependencies: @@ -1138,8 +1138,8 @@ importers: specifier: 4.0.17 version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.0 - version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.2 + version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-mermaid: dependencies: @@ -1205,8 +1205,8 @@ importers: specifier: 4.0.17 version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.23.0 - version: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.23.2 + version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/codemirror: dependencies: @@ -5868,27 +5868,27 @@ packages: '@vue/shared@3.5.14': resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} - '@wdio/config@9.23.0': - resolution: {integrity: sha512-hhtngUG2uCxYmScSEor+k22EVlsTW3ARXgke8NPVeQA4p1+GC2CvRZi4P7nmhRTZubgLrENYYsveFcYR+1UXhQ==} + '@wdio/config@9.23.2': + resolution: {integrity: sha512-19Z+AIQ1NUpr6ncTumjSthm6A7c3DbaGTp+VCdcyN+vHYOK4WsWIomSk+uSbFosYFQVGRjCaHaeGSnC8GNPGYQ==} engines: {node: '>=18.20.0'} '@wdio/logger@9.18.0': resolution: {integrity: sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==} engines: {node: '>=18.20.0'} - '@wdio/protocols@9.16.2': - resolution: {integrity: sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==} + '@wdio/protocols@9.23.2': + resolution: {integrity: sha512-pmCYOYI2N89QCC8IaiHwaWyP0mR8T1iKkEGpoTq2XVihp7VK/lfPvieyeZT5/e28MadYLJsDQ603pbu5J1NRDg==} '@wdio/repl@9.16.2': resolution: {integrity: sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==} engines: {node: '>=18.20.0'} - '@wdio/types@9.20.0': - resolution: {integrity: sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==} + '@wdio/types@9.23.2': + resolution: {integrity: sha512-ryfrERGsNp+aCcrTE1rFU6cbmDj8GHZ04R9k52KNt2u1a6bv3Eh5A/cUA0hXuMdEUfsc8ePLYdwQyOLFydZ0ig==} engines: {node: '>=18.20.0'} - '@wdio/utils@9.23.0': - resolution: {integrity: sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==} + '@wdio/utils@9.23.2': + resolution: {integrity: sha512-+QfgXUWeA940AXT5l5UlrBKoHBk9GLSQE3BA+7ra1zWuFvv6SHG6M2mwplcPlOlymJMqXy8e7ZgLEoLkXuvC1Q==} engines: {node: '>=18.20.0'} '@webassemblyjs/ast@1.14.1': @@ -14015,12 +14015,12 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webdriver@9.23.0: - resolution: {integrity: sha512-XkZOhjoBOY7maKI3BhDF2rNiDne4wBD6Gw6VUnt4X9b7j9NtfzcCrThBlT0hnA8W77bWNtMRCSpw9Ajy08HqKg==} + webdriver@9.23.2: + resolution: {integrity: sha512-HZy3eydZbmex0pbyLwHaDsAyZ+S+V4XQTdGK/nAOi4uPa74U6yT9vXqtb+3B+5/LDM7L8kTD6Z3b1y4gB4pmTw==} engines: {node: '>=18.20.0'} - webdriverio@9.23.0: - resolution: {integrity: sha512-Y5y4jpwHvuduUfup+gXTuCU6AROn/k6qOba3st0laFluKHY+q5SHOpQAJdS8acYLwE8caDQ2dXJhmXyxuJrm0Q==} + webdriverio@9.23.2: + resolution: {integrity: sha512-VjfTw1bRJdBrzjoCu7BGThxn1JK2V7mAGvxibaBrCNIayPPQjLhVDNJPOVEiR7txM6zmOUWxhkCDxHjhMYirfQ==} engines: {node: '>=18.20.0'} peerDependencies: puppeteer-core: '>=22.x || <=24.x' @@ -15086,8 +15086,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-upload': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -15228,16 +15226,12 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-cloud-services@47.4.0': dependencies: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15430,8 +15424,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-classic@47.4.0': dependencies: @@ -15441,8 +15433,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-decoupled@47.4.0': dependencies: @@ -15452,8 +15442,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-inline@47.4.0': dependencies: @@ -15463,6 +15451,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: @@ -15485,6 +15475,8 @@ snapshots: '@ckeditor/ckeditor5-table': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: @@ -15510,8 +15502,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@47.4.0': dependencies: @@ -15543,6 +15533,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: @@ -15567,8 +15559,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-font@47.4.0': dependencies: @@ -15643,8 +15633,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -15690,6 +15678,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -15702,6 +15692,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-indent@47.4.0': dependencies: @@ -15713,6 +15705,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15722,6 +15716,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -15746,6 +15742,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -15769,6 +15767,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -15806,6 +15806,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15815,6 +15817,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: @@ -15827,6 +15831,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: @@ -15835,6 +15841,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: @@ -15889,6 +15897,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: @@ -15952,8 +15962,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -15998,6 +16006,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -16010,6 +16020,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: @@ -16057,6 +16069,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-table@47.4.0': dependencies: @@ -16069,6 +16083,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-template@47.4.0': dependencies: @@ -16179,6 +16195,8 @@ snapshots: '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-widget@47.4.0': dependencies: @@ -16198,6 +16216,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -20504,11 +20524,11 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - webdriverio: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriverio: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - msw @@ -20662,13 +20682,13 @@ snapshots: '@vue/shared@3.5.14': {} - '@wdio/config@9.23.0': + '@wdio/config@9.23.2': dependencies: '@wdio/logger': 9.18.0 - '@wdio/types': 9.20.0 - '@wdio/utils': 9.23.0 + '@wdio/types': 9.23.2 + '@wdio/utils': 9.23.2 deepmerge-ts: 7.1.5 - glob: 10.4.5 + glob: 10.5.0 import-meta-resolve: 4.2.0 transitivePeerDependencies: - bare-buffer @@ -20682,21 +20702,21 @@ snapshots: safe-regex2: 5.0.0 strip-ansi: 7.1.2 - '@wdio/protocols@9.16.2': {} + '@wdio/protocols@9.23.2': {} '@wdio/repl@9.16.2': dependencies: '@types/node': 20.19.25 - '@wdio/types@9.20.0': + '@wdio/types@9.23.2': dependencies: '@types/node': 20.19.25 - '@wdio/utils@9.23.0': + '@wdio/utils@9.23.2': dependencies: '@puppeteer/browsers': 2.10.10 '@wdio/logger': 9.18.0 - '@wdio/types': 9.20.0 + '@wdio/types': 9.23.2 decamelize: 6.0.1 deepmerge-ts: 7.1.5 edgedriver: 6.1.2 @@ -21664,6 +21684,8 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: @@ -26544,7 +26566,7 @@ snapshots: diff: 7.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 10.4.5 + glob: 10.5.0 he: 1.2.0 js-yaml: 4.1.1 log-symbols: 4.1.0 @@ -30501,7 +30523,7 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.9 - '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.17(vitest@4.0.17) happy-dom: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -30591,15 +30613,15 @@ snapshots: web-streams-polyfill@3.3.3: {} - webdriver@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriver@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/ws': 8.18.1 - '@wdio/config': 9.23.0 + '@wdio/config': 9.23.2 '@wdio/logger': 9.18.0 - '@wdio/protocols': 9.16.2 - '@wdio/types': 9.20.0 - '@wdio/utils': 9.23.0 + '@wdio/protocols': 9.23.2 + '@wdio/types': 9.23.2 + '@wdio/utils': 9.23.2 deepmerge-ts: 7.1.5 https-proxy-agent: 7.0.6 undici: 6.21.3 @@ -30610,16 +30632,16 @@ snapshots: - supports-color - utf-8-validate - webdriverio@9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/sinonjs__fake-timers': 8.1.5 - '@wdio/config': 9.23.0 + '@wdio/config': 9.23.2 '@wdio/logger': 9.18.0 - '@wdio/protocols': 9.16.2 + '@wdio/protocols': 9.23.2 '@wdio/repl': 9.16.2 - '@wdio/types': 9.20.0 - '@wdio/utils': 9.23.0 + '@wdio/types': 9.23.2 + '@wdio/utils': 9.23.2 archiver: 7.0.1 aria-query: 5.3.2 cheerio: 1.1.2 @@ -30636,7 +30658,7 @@ snapshots: rgb2hex: 0.2.5 serialize-error: 12.0.0 urlpattern-polyfill: 10.1.0 - webdriver: 9.23.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriver: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-buffer - bufferutil From 3fce4fc66cc53d1496d1f3d0f6aaf8370e2a8518 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 01:39:14 +0000 Subject: [PATCH 049/102] fix(deps): update dependency better-sqlite3 to v12.6.2 --- apps/desktop/package.json | 2 +- apps/dump-db/package.json | 2 +- apps/edit-docs/package.json | 2 +- apps/server/docker/package.json | 2 +- apps/server/package.json | 2 +- pnpm-lock.yaml | 84 +++++++++++++++++++++------------ 6 files changed, 58 insertions(+), 36 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 06a138a89..3728e0082 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -23,7 +23,7 @@ }, "dependencies": { "@electron/remote": "2.1.3", - "better-sqlite3": "12.6.0", + "better-sqlite3": "12.6.2", "electron-debug": "4.1.0", "electron-dl": "4.0.0", "electron-squirrel-startup": "1.0.1", diff --git a/apps/dump-db/package.json b/apps/dump-db/package.json index 752b93e93..58c3ca848 100644 --- a/apps/dump-db/package.json +++ b/apps/dump-db/package.json @@ -4,7 +4,7 @@ "description": "Standalone tool to dump contents of Trilium document.db file into a directory tree of notes", "private": true, "dependencies": { - "better-sqlite3": "12.6.0", + "better-sqlite3": "12.6.2", "mime-types": "3.0.2", "sanitize-filename": "1.6.3", "tsx": "4.21.0", diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index b17afb35e..107c25fb5 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -5,7 +5,7 @@ "description": "Desktop version of Trilium which imports the demo database (presented to new users at start-up) or the user guide and other documentation and saves the modifications for committing.", "dependencies": { "archiver": "7.0.1", - "better-sqlite3": "12.6.0" + "better-sqlite3": "12.6.2" }, "devDependencies": { "@triliumnext/client": "workspace:*", diff --git a/apps/server/docker/package.json b/apps/server/docker/package.json index a0212e8ab..0d94a4972 100644 --- a/apps/server/docker/package.json +++ b/apps/server/docker/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "better-sqlite3": "12.6.0" + "better-sqlite3": "12.6.2" } } \ No newline at end of file diff --git a/apps/server/package.json b/apps/server/package.json index f3378a241..5c46b0c6f 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -29,7 +29,7 @@ "proxy-nginx-subdir": "docker run --name trilium-nginx-subdir --rm --network=host -v ./docker/nginx.conf:/etc/nginx/conf.d/default.conf:ro nginx:latest" }, "dependencies": { - "better-sqlite3": "12.6.0", + "better-sqlite3": "12.6.2", "html-to-text": "9.0.5", "node-html-parser": "7.0.2", "sucrase": "3.35.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fb5adf9e..5376c5bde 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -378,8 +378,8 @@ importers: specifier: 2.1.3 version: 2.1.3(electron@40.0.0) better-sqlite3: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.6.2 + version: 12.6.2 electron-debug: specifier: 4.1.0 version: 4.1.0 @@ -442,8 +442,8 @@ importers: apps/dump-db: dependencies: better-sqlite3: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.6.2 + version: 12.6.2 mime-types: specifier: 3.0.2 version: 3.0.2 @@ -473,8 +473,8 @@ importers: specifier: 7.0.1 version: 7.0.1 better-sqlite3: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.6.2 + version: 12.6.2 devDependencies: '@triliumnext/client': specifier: workspace:* @@ -507,8 +507,8 @@ importers: apps/server: dependencies: better-sqlite3: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.6.2 + version: 12.6.2 html-to-text: specifier: 9.0.5 version: 9.0.5 @@ -6385,8 +6385,8 @@ packages: peerDependencies: ajv: 4.11.8 - 8 - better-sqlite3@12.6.0: - resolution: {integrity: sha512-FXI191x+D6UPWSze5IzZjhz+i9MK9nsuHsmTX9bXVl52k06AfZ2xql0lrgIUuzsMsJ7Vgl5kIptvDgBLIV3ZSQ==} + better-sqlite3@12.6.2: + resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==} engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} bezier-easing@2.1.0: @@ -15086,8 +15086,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-upload': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -15228,16 +15226,12 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-cloud-services@47.4.0': dependencies: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15430,8 +15424,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-classic@47.4.0': dependencies: @@ -15441,8 +15433,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-decoupled@47.4.0': dependencies: @@ -15452,8 +15442,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-inline@47.4.0': dependencies: @@ -15463,6 +15451,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: @@ -15485,6 +15475,8 @@ snapshots: '@ckeditor/ckeditor5-table': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: @@ -15510,8 +15502,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@47.4.0': dependencies: @@ -15543,6 +15533,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: @@ -15567,8 +15559,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-font@47.4.0': dependencies: @@ -15643,8 +15633,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -15690,6 +15678,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -15702,6 +15692,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-indent@47.4.0': dependencies: @@ -15713,6 +15705,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15722,6 +15716,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -15746,6 +15742,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -15769,6 +15767,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -15806,6 +15806,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15815,6 +15817,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: @@ -15827,6 +15831,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: @@ -15835,6 +15841,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: @@ -15889,6 +15897,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: @@ -15952,8 +15962,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -15998,6 +16006,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -16010,6 +16020,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: @@ -16057,6 +16069,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-table@47.4.0': dependencies: @@ -16069,6 +16083,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-template@47.4.0': dependencies: @@ -16179,6 +16195,8 @@ snapshots: '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-widget@47.4.0': dependencies: @@ -16198,6 +16216,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -21243,7 +21263,7 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 - better-sqlite3@12.6.0: + better-sqlite3@12.6.2: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 @@ -21664,6 +21684,8 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: From 8fdadb379854e811cac5ca937f72d550927c7137 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 01:40:46 +0000 Subject: [PATCH 050/102] fix(deps): update dependency jquery to v4 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 80 +++++++++++++++++++++++++--------------- 2 files changed, 52 insertions(+), 30 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index c3886cc4f..aa25e71b1 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -46,7 +46,7 @@ "globals": "17.0.0", "i18next": "25.7.4", "i18next-http-backend": "3.0.2", - "jquery": "3.7.1", + "jquery": "4.0.0", "jquery.fancytree": "2.38.5", "jsplumb": "2.15.6", "katex": "0.16.27", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fb5adf9e..49524f6f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -254,11 +254,11 @@ importers: specifier: 3.0.2 version: 3.0.2(encoding@0.1.13) jquery: - specifier: 3.7.1 - version: 3.7.1 + specifier: 4.0.0 + version: 4.0.0 jquery.fancytree: specifier: 2.38.5 - version: 2.38.5(jquery@3.7.1) + version: 2.38.5(jquery@4.0.0) jsplumb: specifier: 2.15.6 version: 2.15.6 @@ -394,7 +394,7 @@ importers: version: 0.2.2 jquery.fancytree: specifier: 2.38.5 - version: 2.38.5(jquery@3.7.1) + version: 2.38.5(jquery@4.0.0) devDependencies: '@electron-forge/cli': specifier: 7.11.1 @@ -9527,8 +9527,8 @@ packages: peerDependencies: jquery: '>=1.9' - jquery@3.7.1: - resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + jquery@4.0.0: + resolution: {integrity: sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg==} js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} @@ -15086,8 +15086,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-upload': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -15228,16 +15226,12 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-cloud-services@47.4.0': dependencies: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15430,8 +15424,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-classic@47.4.0': dependencies: @@ -15441,8 +15433,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-decoupled@47.4.0': dependencies: @@ -15452,8 +15442,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-inline@47.4.0': dependencies: @@ -15463,6 +15451,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: @@ -15485,6 +15475,8 @@ snapshots: '@ckeditor/ckeditor5-table': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: @@ -15510,8 +15502,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@47.4.0': dependencies: @@ -15543,6 +15533,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: @@ -15567,8 +15559,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-font@47.4.0': dependencies: @@ -15643,8 +15633,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -15690,6 +15678,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -15702,6 +15692,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-indent@47.4.0': dependencies: @@ -15713,6 +15705,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15722,6 +15716,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -15746,6 +15742,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -15769,6 +15767,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -15806,6 +15806,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15815,6 +15817,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: @@ -15827,6 +15831,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: @@ -15835,6 +15841,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: @@ -15889,6 +15897,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: @@ -15952,8 +15962,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -15998,6 +16006,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -16010,6 +16020,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: @@ -16057,6 +16069,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-table@47.4.0': dependencies: @@ -16069,6 +16083,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-template@47.4.0': dependencies: @@ -16179,6 +16195,8 @@ snapshots: '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-widget@47.4.0': dependencies: @@ -16198,6 +16216,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -21664,6 +21684,8 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: @@ -25263,11 +25285,11 @@ snapshots: jquery-hotkeys@0.2.2: {} - jquery.fancytree@2.38.5(jquery@3.7.1): + jquery.fancytree@2.38.5(jquery@4.0.0): dependencies: - jquery: 3.7.1 + jquery: 4.0.0 - jquery@3.7.1: {} + jquery@4.0.0: {} js-levenshtein@1.1.6: {} From c287a2ae97768707719e7b0cfaf259d70379d5e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 05:39:59 +0000 Subject: [PATCH 051/102] fix(deps): update dependency mind-elixir to v5.6.1 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 70 ++++++++++++++++++++++++++++------------ 2 files changed, 51 insertions(+), 21 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index c3886cc4f..87085ecbb 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -56,7 +56,7 @@ "mark.js": "8.11.1", "marked": "17.0.1", "mermaid": "11.12.2", - "mind-elixir": "5.5.0", + "mind-elixir": "5.6.1", "normalize.css": "8.0.1", "panzoom": "9.4.3", "preact": "10.28.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fb5adf9e..0157b5bb9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -192,7 +192,7 @@ importers: version: 0.2.0(mermaid@11.12.2) '@mind-elixir/node-menu': specifier: 5.0.1 - version: 5.0.1(mind-elixir@5.5.0) + version: 5.0.1(mind-elixir@5.6.1) '@popperjs/core': specifier: 2.11.8 version: 2.11.8 @@ -284,8 +284,8 @@ importers: specifier: 11.12.2 version: 11.12.2 mind-elixir: - specifier: 5.5.0 - version: 5.5.0 + specifier: 5.6.1 + version: 5.6.1 normalize.css: specifier: 8.0.1 version: 8.0.1 @@ -10347,8 +10347,8 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - mind-elixir@5.5.0: - resolution: {integrity: sha512-a/bOTp3wJrK/vTm2/Vn5+9kYL0fNqxWvm8SsVojJO/tltLPPU8yMPzFCZHzGRz1Aoj6bpLxN+ExfIbc28nrNxQ==} + mind-elixir@5.6.1: + resolution: {integrity: sha512-FTpP5yfyjqXxtHbUAcJVrzBgbU9en0dQIbYx4lQc1C7aWOnjHGHr9iVccgMqU4gh9jVIBpunm4++2DpN753mGg==} mini-css-extract-plugin@2.9.4: resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} @@ -15228,8 +15228,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-cloud-services@47.4.0': dependencies: @@ -15430,8 +15428,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-classic@47.4.0': dependencies: @@ -15452,8 +15448,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-editor-inline@47.4.0': dependencies: @@ -15463,6 +15457,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@47.4.0': dependencies: @@ -15485,6 +15481,8 @@ snapshots: '@ckeditor/ckeditor5-table': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@47.4.0': dependencies: @@ -15510,8 +15508,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@47.4.0': dependencies: @@ -15543,6 +15539,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-word@47.4.0': dependencies: @@ -15567,8 +15565,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-font@47.4.0': dependencies: @@ -15643,8 +15639,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-html-embed@47.4.0': dependencies: @@ -15690,6 +15684,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@47.4.0': dependencies: @@ -15702,6 +15698,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-indent@47.4.0': dependencies: @@ -15713,6 +15711,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -15722,6 +15722,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@47.4.0': dependencies: @@ -15746,6 +15748,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-list-multi-level@47.4.0': dependencies: @@ -15769,6 +15773,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-markdown-gfm@47.4.0': dependencies: @@ -15806,6 +15812,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-mention@47.4.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15815,6 +15823,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-merge-fields@47.4.0': dependencies: @@ -15827,6 +15837,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-minimap@47.4.0': dependencies: @@ -15835,6 +15847,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-operations-compressor@47.4.0': dependencies: @@ -15889,6 +15903,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-pagination@47.4.0': dependencies: @@ -15998,6 +16014,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -16010,6 +16028,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-source-editing-enhanced@47.4.0': dependencies: @@ -16057,6 +16077,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-table@47.4.0': dependencies: @@ -16069,6 +16091,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-template@47.4.0': dependencies: @@ -16179,6 +16203,8 @@ snapshots: '@ckeditor/ckeditor5-engine': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-widget@47.4.0': dependencies: @@ -16198,6 +16224,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@codemirror/autocomplete@6.18.6': dependencies: @@ -18112,9 +18140,9 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} - '@mind-elixir/node-menu@5.0.1(mind-elixir@5.5.0)': + '@mind-elixir/node-menu@5.0.1(mind-elixir@5.6.1)': dependencies: - mind-elixir: 5.5.0 + mind-elixir: 5.6.1 '@mixmark-io/domino@2.2.0': {} @@ -21664,6 +21692,8 @@ snapshots: ckeditor5-collaboration@47.4.0: dependencies: '@ckeditor/ckeditor5-collaboration-core': 47.4.0 + transitivePeerDependencies: + - supports-color ckeditor5-premium-features@47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5): dependencies: @@ -26397,7 +26427,7 @@ snapshots: mimic-response@3.1.0: {} - mind-elixir@5.5.0: {} + mind-elixir@5.6.1: {} mini-css-extract-plugin@2.9.4(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)): dependencies: From 432c054b68f2e6182339af5e04c278f457301930 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 18 Jan 2026 07:25:40 +0100 Subject: [PATCH 052/102] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-nb_NO.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/README-nb_NO.md b/docs/README-nb_NO.md index fc5ae268c..f4ebb1531 100644 --- a/docs/README-nb_NO.md +++ b/docs/README-nb_NO.md @@ -62,8 +62,8 @@ Vår dokumentasjon er tilgjengelig i flere format: TriliumNext](https://docs.triliumnotes.org/user-guide/setup/upgrading) - [Grunnleggende konsepter og funksjoner](https://docs.triliumnotes.org/user-guide/concepts/notes) -- [Patterns of Personal Knowledge - Base](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) +- [Modeller for personlig + kunnskapsbase](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) ## 🎁 Funksjoner @@ -109,8 +109,8 @@ Vår dokumentasjon er tilgjengelig i flere format: * Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) * [Geo maps](https://docs.triliumnotes.org/user-guide/collections/geomap) with location pins and GPX tracks -* [Scripting](https://docs.triliumnotes.org/user-guide/scripts) - see [Advanced - showcases](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases) +* [Skripting](https://docs.triliumnotes.org/user-guide/scripts) - se [Avanserte + bruksområder](https://docs.triliumnotes.org/user-guide/advanced-usage/advanced-showcases) * [REST API](https://docs.triliumnotes.org/user-guide/advanced-usage/etapi) for automatisering * Scales well in both usability and performance upwards of 100 000 notes @@ -156,13 +156,13 @@ compatible with the latest zadam/trilium version of versions of TriliumNext/Trilium have their sync versions incremented which prevents direct migration. -## 💬 Discuss with us +## 💬Diskuter med oss Feel free to join our official conversations. We would love to hear what features, suggestions, or issues you may have! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous - discussions.) +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synkrone + diskusjoner.) - The `General` Matrix room is also bridged to [XMPP](xmpp:discuss@trilium.thisgreat.party?join) - [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For @@ -322,7 +322,7 @@ Consider supporting the main developer - [GitHub Sponsors](https://github.com/sponsors/eliandoran) - [PayPal](https://paypal.me/eliandoran) -- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) +- [Spander en kaffe](https://buymeacoffee.com/eliandoran) ## 🔑 Lisens From ebadcfd844e4040504cdb49d06644eb0a0888b5e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 10:14:55 +0200 Subject: [PATCH 053/102] feat(sql_console): enable pagination --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 54e17647e..24dd33980 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -3,7 +3,7 @@ import "./SqlConsole.css"; import { SchemaResponse, SqlExecuteResults } from "@triliumnext/commons"; import { useEffect, useState } from "preact/hooks"; import { Fragment } from "preact/jsx-runtime"; -import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; +import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, PageModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; import server from "../../services/server"; @@ -70,7 +70,7 @@ function SqlResultTable({ rows }: { rows: object[] }) { return ( Date: Sun, 18 Jan 2026 10:20:15 +0200 Subject: [PATCH 054/102] chore(sql_console): full-height table --- apps/client/src/stylesheets/table.css | 9 ++++----- apps/client/src/widgets/collections/table/index.css | 6 +++++- apps/client/src/widgets/type_widgets/SqlConsole.css | 1 - apps/client/src/widgets/type_widgets/SqlConsole.tsx | 1 + 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index 11e401fcb..f5cd77f98 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -14,13 +14,13 @@ --row-moving-background-color: var(--accented-background-color); --row-text-color: var(--main-text-color); --row-delimiter-color: var(--more-accented-background-color); - + --cell-horiz-padding-size: 8px; --cell-vert-padding-size: 8px; - + --cell-editable-hover-outline-color: var(--main-border-color); --cell-read-only-text-color: var(--muted-text-color); - + --cell-editing-border-color: var(--main-border-color); --cell-editing-border-width: 2px; --cell-editing-background-color: var(--ck-color-selector-focused-cell-background); @@ -80,7 +80,6 @@ .tabulator-tableholder { padding-top: 10px; - height: unset !important; /* Don't extend on the full height */ } /* Rows */ @@ -196,4 +195,4 @@ :root .tabulator .tabulator-footer { border-top: unset; padding: 10px 0; -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/collections/table/index.css b/apps/client/src/widgets/collections/table/index.css index ff24dda26..897a87b51 100644 --- a/apps/client/src/widgets/collections/table/index.css +++ b/apps/client/src/widgets/collections/table/index.css @@ -4,6 +4,10 @@ height: 100%; user-select: none; padding: 0 5px 0 10px; + + .tabulator-tableholder { + height: unset !important; + } } .table-view-container { @@ -68,4 +72,4 @@ inset-inline-start: 0; font-size: 1.5em; transform: translateY(-50%); -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 2aec59070..c1871fad3 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -19,7 +19,6 @@ min-height: 0; > .tabulator { - height: 100%; --cell-vert-padding-size: 4px; > .tabulator-tableholder { diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 24dd33980..34fd573a5 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -81,6 +81,7 @@ function SqlResultTable({ rows }: { rows: object[] }) { pagination paginationSize={20} paginationCounter="rows" + height="100%" columns={[ { title: "#", From 9c4163ad3aceb5fbb9b22da393551eed60c2c003 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 10:24:55 +0200 Subject: [PATCH 055/102] feat(sql_console): page size selector --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 34fd573a5..0c2741714 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -79,7 +79,8 @@ function SqlResultTable({ rows }: { rows: object[] }) { columnHeaders: false }} pagination - paginationSize={20} + paginationSize={15} + paginationSizeSelector paginationCounter="rows" height="100%" columns={[ From af5061646c03e76a3cdec2e8252c591f43b54b32 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 10:36:44 +0200 Subject: [PATCH 056/102] feat(sql_console): add not yet executed message --- .../src/translations/en/translation.json | 4 +- apps/client/src/widgets/react/NoItems.css | 18 ++++++ apps/client/src/widgets/react/NoItems.tsx | 21 +++++++ .../widgets/sidebar/RightPanelContainer.css | 18 ------ .../widgets/sidebar/RightPanelContainer.tsx | 12 ++-- .../src/widgets/type_widgets/SqlConsole.tsx | 55 ++++++++++++------- 6 files changed, 83 insertions(+), 45 deletions(-) create mode 100644 apps/client/src/widgets/react/NoItems.css create mode 100644 apps/client/src/widgets/react/NoItems.tsx diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 652ad0725..4633b1a47 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -1815,7 +1815,9 @@ "configure_launchbar": "Configure Launchbar" }, "sql_result": { - "no_rows": "No rows have been returned for this query" + "not_executed": "The query has not been executed yet.", + "no_rows": "No rows have been returned for this query", + "execute_now": "Execute now" }, "sql_table_schemas": { "tables": "Tables" diff --git a/apps/client/src/widgets/react/NoItems.css b/apps/client/src/widgets/react/NoItems.css new file mode 100644 index 000000000..f9876db6c --- /dev/null +++ b/apps/client/src/widgets/react/NoItems.css @@ -0,0 +1,18 @@ +.no-items { + display: flex; + align-items: center; + justify-content: center; + flex-grow: 1; + flex-direction: column; + padding: 0.75em; + color: var(--muted-text-color); + height: 100%; + + .tn-icon { + font-size: 3em; + } + + button { + margin-top: 1em; + } +} diff --git a/apps/client/src/widgets/react/NoItems.tsx b/apps/client/src/widgets/react/NoItems.tsx new file mode 100644 index 000000000..d7a5a6270 --- /dev/null +++ b/apps/client/src/widgets/react/NoItems.tsx @@ -0,0 +1,21 @@ +import "./NoItems.css"; + +import { ComponentChildren } from "preact"; + +import Icon from "./Icon"; + +interface NoItemsProps { + icon: string; + text: string; + children?: ComponentChildren; +} + +export default function NoItems({ icon, text, children }: NoItemsProps) { + return ( +
+ + {text} + {children} +
+ ); +} diff --git a/apps/client/src/widgets/sidebar/RightPanelContainer.css b/apps/client/src/widgets/sidebar/RightPanelContainer.css index 4c097c386..2000a20d7 100644 --- a/apps/client/src/widgets/sidebar/RightPanelContainer.css +++ b/apps/client/src/widgets/sidebar/RightPanelContainer.css @@ -40,22 +40,4 @@ body.experimental-feature-new-layout #right-pane { .gutter-vertical + .card .card-header { padding-top: 0; } - - .no-items { - display: flex; - align-items: center; - justify-content: center; - flex-grow: 1; - flex-direction: column; - padding: 0.75em; - color: var(--muted-text-color); - - .tn-icon { - font-size: 3em; - } - - button { - margin-top: 1em; - } - } } diff --git a/apps/client/src/widgets/sidebar/RightPanelContainer.tsx b/apps/client/src/widgets/sidebar/RightPanelContainer.tsx index d28887b9f..f6f1784a5 100644 --- a/apps/client/src/widgets/sidebar/RightPanelContainer.tsx +++ b/apps/client/src/widgets/sidebar/RightPanelContainer.tsx @@ -3,7 +3,7 @@ import "./RightPanelContainer.css"; import Split from "@triliumnext/split.js"; import { VNode } from "preact"; -import { useState, useEffect, useRef, useCallback } from "preact/hooks"; +import { useCallback,useEffect, useRef, useState } from "preact/hooks"; import appContext from "../../components/app_context"; import { WidgetsByParent } from "../../services/bundle"; @@ -13,6 +13,7 @@ import { DEFAULT_GUTTER_SIZE } from "../../services/resizer"; import Button from "../react/Button"; import { useActiveNoteContext, useLegacyWidget, useNoteProperty, useTriliumEvent, useTriliumOptionJson } from "../react/hooks"; import Icon from "../react/Icon"; +import NoItems from "../react/NoItems"; import LegacyRightPanelWidget from "../right_panel_widget"; import HighlightsList from "./HighlightsList"; import PdfAttachments from "./pdf/PdfAttachments"; @@ -47,14 +48,15 @@ export default function RightPanelContainer({ widgetsByParent }: { widgetsByPare items.length > 0 ? ( items ) : ( -
- - {t("right_pane.empty_message")} +
+ ) )}
diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 0c2741714..ad03f38a7 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -9,8 +9,10 @@ import { t } from "../../services/i18n"; import server from "../../services/server"; import Tabulator from "../collections/table/tabulator"; import Alert from "../react/Alert"; +import Button from "../react/Button"; import Dropdown from "../react/Dropdown"; import { useTriliumEvent } from "../react/hooks"; +import NoItems from "../react/NoItems"; import SplitEditor from "./helpers/SplitEditor"; import { TypeWidgetProps } from "./type_widget"; @@ -30,7 +32,7 @@ export default function SqlConsole(props: TypeWidgetProps) { ); } -function SqlResults({ note, ntxId }: TypeWidgetProps) { +function SqlResults({ ntxId }: TypeWidgetProps) { const [ results, setResults ] = useState(); useTriliumEvent("sqlQueryResults", ({ ntxId: eventNtxId, results }) => { @@ -38,27 +40,38 @@ function SqlResults({ note, ntxId }: TypeWidgetProps) { setResults(results); }); - const isEnabled = note?.mime === "text/x-sqlite;schema=trilium"; - return ( -
- {isEnabled && ( - results?.length === 1 && Array.isArray(results[0]) && results[0].length === 0 ? ( - - {t("sql_result.no_rows")} - - ) : ( -
- {results?.map((rows, index) => { - // inserts, updates - if (typeof rows === "object" && !Array.isArray(rows)) { - return
{JSON.stringify(rows, null, "\t")}
; - } + if (results === undefined) { + return ( + +
- ) + return ( +
+ {results?.length === 1 && Array.isArray(results[0]) && results[0].length === 0 ? ( + + {t("sql_result.no_rows")} + + ) : ( +
+ {results?.map((rows, index) => { + // inserts, updates + if (typeof rows === "object" && !Array.isArray(rows)) { + return
{JSON.stringify(rows, null, "\t")}
; + } + + // selects + return ; + })} +
)}
); From 7179701e0f9c42111a1953a4638c33dd1e52fec5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 10:58:32 +0200 Subject: [PATCH 057/102] feat(sql_console): improve no results --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index ad03f38a7..42c19c62e 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -57,9 +57,10 @@ function SqlResults({ ntxId }: TypeWidgetProps) { return (
{results?.length === 1 && Array.isArray(results[0]) && results[0].length === 0 ? ( - - {t("sql_result.no_rows")} - + ) : (
{results?.map((rows, index) => { From 94dca4cd87c7fa9e17a7e847aaa2ab2b64b959ce Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 11:13:31 +0200 Subject: [PATCH 058/102] feat(sql_console): report errors inline --- apps/client/src/components/app_context.ts | 4 +- apps/client/src/components/entrypoints.ts | 26 ++++---- .../src/translations/en/translation.json | 1 + .../src/widgets/type_widgets/SqlConsole.tsx | 61 ++++++++++++------- 4 files changed, 52 insertions(+), 40 deletions(-) diff --git a/apps/client/src/components/app_context.ts b/apps/client/src/components/app_context.ts index b5f203b24..8f6466e01 100644 --- a/apps/client/src/components/app_context.ts +++ b/apps/client/src/components/app_context.ts @@ -1,6 +1,6 @@ import type { CKTextEditor } from "@triliumnext/ckeditor5"; import type CodeMirror from "@triliumnext/codemirror"; -import { SqlExecuteResults } from "@triliumnext/commons"; +import { SqlExecuteResponse } from "@triliumnext/commons"; import type { NativeImage, TouchBar } from "electron"; import { ColumnComponent } from "tabulator-tables"; @@ -410,7 +410,7 @@ type EventMappings = { addNewLabel: CommandData; addNewRelation: CommandData; sqlQueryResults: CommandData & { - results: SqlExecuteResults; + response: SqlExecuteResponse; }; readOnlyTemporarilyDisabled: { noteContext: NoteContext; diff --git a/apps/client/src/components/entrypoints.ts b/apps/client/src/components/entrypoints.ts index 8a902666f..8fc4e1b3d 100644 --- a/apps/client/src/components/entrypoints.ts +++ b/apps/client/src/components/entrypoints.ts @@ -1,16 +1,17 @@ -import utils from "../services/utils.js"; +import { CreateChildrenResponse, SqlExecuteResponse } from "@triliumnext/commons"; + +import bundleService from "../services/bundle.js"; import dateNoteService from "../services/date_notes.js"; +import froca from "../services/froca.js"; +import { t } from "../services/i18n.js"; +import linkService from "../services/link.js"; import protectedSessionHolder from "../services/protected_session_holder.js"; import server from "../services/server.js"; +import toastService from "../services/toast.js"; +import utils from "../services/utils.js"; +import ws from "../services/ws.js"; import appContext, { type NoteCommandData } from "./app_context.js"; import Component from "./component.js"; -import toastService from "../services/toast.js"; -import ws from "../services/ws.js"; -import bundleService from "../services/bundle.js"; -import froca from "../services/froca.js"; -import linkService from "../services/link.js"; -import { t } from "../services/i18n.js"; -import { CreateChildrenResponse, SqlExecuteResponse } from "@triliumnext/commons"; export default class Entrypoints extends Component { constructor() { @@ -187,13 +188,8 @@ export default class Entrypoints extends Component { } else if (note.mime.endsWith("env=backend")) { await server.post(`script/run/${note.noteId}`); } else if (note.mime === "text/x-sqlite;schema=trilium") { - const resp = await server.post(`sql/execute/${note.noteId}`); - - if (!resp.success) { - toastService.showError(t("entrypoints.sql-error", { message: resp.error })); - } - - await appContext.triggerEvent("sqlQueryResults", { ntxId: ntxId, results: resp.results }); + const response = await server.post(`sql/execute/${note.noteId}`); + await appContext.triggerEvent("sqlQueryResults", { ntxId, response }); } toastService.showMessage(t("entrypoints.note-executed")); diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 4633b1a47..19beceee3 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -1817,6 +1817,7 @@ "sql_result": { "not_executed": "The query has not been executed yet.", "no_rows": "No rows have been returned for this query", + "failed": "SQL query execution has failed", "execute_now": "Execute now" }, "sql_table_schemas": { diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 42c19c62e..2af9c8f0f 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -1,6 +1,6 @@ import "./SqlConsole.css"; -import { SchemaResponse, SqlExecuteResults } from "@triliumnext/commons"; +import { SchemaResponse, SqlExecuteResponse } from "@triliumnext/commons"; import { useEffect, useState } from "preact/hooks"; import { Fragment } from "preact/jsx-runtime"; import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, PageModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; @@ -8,7 +8,6 @@ import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, import { t } from "../../services/i18n"; import server from "../../services/server"; import Tabulator from "../collections/table/tabulator"; -import Alert from "../react/Alert"; import Button from "../react/Button"; import Dropdown from "../react/Dropdown"; import { useTriliumEvent } from "../react/hooks"; @@ -33,14 +32,15 @@ export default function SqlConsole(props: TypeWidgetProps) { } function SqlResults({ ntxId }: TypeWidgetProps) { - const [ results, setResults ] = useState(); + const [ response, setResponse ] = useState(); - useTriliumEvent("sqlQueryResults", ({ ntxId: eventNtxId, results }) => { + useTriliumEvent("sqlQueryResults", ({ ntxId: eventNtxId, response }) => { if (eventNtxId !== ntxId) return; - setResults(results); + setResponse(response); }); - if (results === undefined) { + // Not yet executed. + if (response === undefined) { return ( +
{response.error}
+
+ ); + } + + // Zero results. + if (response?.results.length === 1 && Array.isArray(response.results[0]) && response.results[0].length === 0) { + return ( + + ); + } + return (
- {results?.length === 1 && Array.isArray(results[0]) && results[0].length === 0 ? ( - - ) : ( -
- {results?.map((rows, index) => { - // inserts, updates - if (typeof rows === "object" && !Array.isArray(rows)) { - return
{JSON.stringify(rows, null, "\t")}
; - } +
+ {response?.results.map((rows, index) => { + // inserts, updates + if (typeof rows === "object" && !Array.isArray(rows)) { + return
{JSON.stringify(rows, null, "\t")}
; + } - // selects - return ; - })} -
- )} + // selects + return ; + })} +
); } From 748b87da9af8b0c3c6e266c30312c5fa94e2be29 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 11:34:31 +0200 Subject: [PATCH 059/102] feat(sql_console): improve display for statements --- apps/client/src/translations/en/translation.json | 1 + apps/client/src/widgets/type_widgets/SqlConsole.tsx | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 19beceee3..f112508c1 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -1818,6 +1818,7 @@ "not_executed": "The query has not been executed yet.", "no_rows": "No rows have been returned for this query", "failed": "SQL query execution has failed", + "statement_result": "Statement result", "execute_now": "Execute now" }, "sql_table_schemas": { diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 2af9c8f0f..d7cd02f0e 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -82,7 +82,15 @@ function SqlResults({ ntxId }: TypeWidgetProps) { {response?.results.map((rows, index) => { // inserts, updates if (typeof rows === "object" && !Array.isArray(rows)) { - return
{JSON.stringify(rows, null, "\t")}
; + return ( + +
{JSON.stringify(rows, null, "\t")}
+
+ ); } // selects From 69e88c1d9fc9a210a4d19d0e34d1934dbc8e60ca Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 11:48:34 +0200 Subject: [PATCH 060/102] chore(sql_console): set gutter color --- apps/client/src/widgets/type_widgets/SqlConsole.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index c1871fad3..0ba53e8aa 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -7,6 +7,10 @@ overflow: auto; } + .gutter { + background-color: var(--accented-background-color) !important; + } + .sql-result-widget { height: 100%; From 711828d6b485770e3e88ddbb0cf53fe781912bf8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 12:07:23 +0200 Subject: [PATCH 061/102] fix(shortcuts): triggering in bubbling phase, not capturing --- apps/client/src/services/shortcuts.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/client/src/services/shortcuts.ts b/apps/client/src/services/shortcuts.ts index 63db45302..62c6b21ff 100644 --- a/apps/client/src/services/shortcuts.ts +++ b/apps/client/src/services/shortcuts.ts @@ -110,8 +110,9 @@ function bindElShortcut($el: JQuery, keyboardShortcut: st } }; - // Add the event listener - element.addEventListener('keydown', listener); + // Add the event listener in capture phase to intercept events before they reach + // child elements like CodeMirror + element.addEventListener('keydown', listener, true); // Store the binding for later cleanup const binding: ShortcutBinding = { @@ -138,15 +139,16 @@ export function removeIndividualBinding(binding: ShortcutBinding) { if (activeBindingsInNamespace) { activeBindings.set(key, activeBindingsInNamespace.filter(aBinding => aBinding.handler === binding.handler)); } - binding.element.removeEventListener("keydown", binding.listener); + // Remove listener with capture phase to match how it was added + binding.element.removeEventListener("keydown", binding.listener, true); } function removeNamespaceBindings(namespace: string) { const bindings = activeBindings.get(namespace); if (bindings) { - // Remove all event listeners for this namespace bindings.forEach(binding => { - binding.element.removeEventListener('keydown', binding.listener); + // Remove listener with capture phase to match how it was added + binding.element.removeEventListener('keydown', binding.listener, true); }); activeBindings.delete(namespace); } From 8182a04eaeb2f7a81228db555368b067c6057ca5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 12:09:01 +0200 Subject: [PATCH 062/102] fix(sql_console): not refreshing when switching between notes --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index d7cd02f0e..298ffa1bd 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -22,7 +22,7 @@ export default function SqlConsole(props: TypeWidgetProps) { noteType="code" {...props} editorBefore={} - previewContent={} + previewContent={} splitOptions={{ sizes: [ 70, 30 ] }} From 28d0bfd2295574c74f1576a8e3aa0d41715fa0a8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 12:11:03 +0200 Subject: [PATCH 063/102] chore(sql_console): reducing padding in footer --- apps/client/src/widgets/type_widgets/SqlConsole.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 0ba53e8aa..346dd302a 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -32,6 +32,11 @@ .tabulator-col-content { padding: 4px !important; } + + > .tabulator-footer, + > .tabulator-footer .tabulator-footer-contents { + padding: 2px 4px; + } } } } From 791697369dffd6ae4963ec2256f612bfdd6383d8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 12:22:53 +0200 Subject: [PATCH 064/102] style(sql_console): remove background for footer --- apps/client/src/stylesheets/table.css | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index f5cd77f98..afd85857f 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -98,6 +98,10 @@ border-top: none; border-bottom: 1px solid var(--row-delimiter-color); color: var(--row-text-color); + + &:last-of-type { + border-bottom: none; + } } .tabulator-row.tabulator-row-odd { @@ -173,10 +177,6 @@ margin: 0; } -.tabulator .tabulator-footer { - color: var(--main-text-color); -} - /* Context menus */ .tabulator-popup-container { @@ -191,8 +191,9 @@ } /* Footer */ - :root .tabulator .tabulator-footer { - border-top: unset; + background: transparent; + color: var(--main-text-color); + border-top: 1px solid var(--main-border-color); padding: 10px 0; } From 4491086c55b242bd935095a2c02def3b58df518b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 12:34:00 +0200 Subject: [PATCH 065/102] style(sql_console): improve header & footer inputs --- apps/client/src/stylesheets/table.css | 47 +++++++++++++++++-- .../src/widgets/type_widgets/SqlConsole.css | 4 -- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index afd85857f..3facb01e4 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -40,10 +40,33 @@ border-bottom: var(--col-header-bottom-border); background: var(--col-header-background-color); color: var(--col-header-text-color); -} -.tabulator .tabulator-col-content { - padding: 8px 4px !important; + .tabulator-col-content { + padding: 0 !important; + + .tabulator-col-title-holder { + padding: 8px 4px; + } + + &:has(.tabulator-header-filter) { + .tabulator-col-title-holder { + padding: 4px; + padding-bottom: 0; + } + } + + .tabulator-header-filter { + background: var(--main-background-color); + padding: 1px; + + input { + background: var(--input-background-color); + color: var(--input-text-color); + border: 1px solid var(--button-border-color); + outline: none; + } + } + } } @media (hover: hover) and (pointer: fine) { @@ -196,4 +219,22 @@ color: var(--main-text-color); border-top: 1px solid var(--main-border-color); padding: 10px 0; + + .tabulator-page { + background: var(--button-background-color); + color: var(--button-text-color); + border: 1px solid var(--button-border-color); + border-radius: var(--button-border-radius); + + &:hover { + border-color: var(--hover-item-border-color); + color: var(--button-text-color); + } + } + + select { + background: var(--button-background-color); + color: var(--input-text-color); + border: 1px solid var(--button-border-color); + } } diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.css b/apps/client/src/widgets/type_widgets/SqlConsole.css index 346dd302a..85b812554 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.css +++ b/apps/client/src/widgets/type_widgets/SqlConsole.css @@ -29,10 +29,6 @@ padding: 0; } - .tabulator-col-content { - padding: 4px !important; - } - > .tabulator-footer, > .tabulator-footer .tabulator-footer-contents { padding: 2px 4px; From c376b0bbe2caf4de2baf45d21a4f92deb7e28ccc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 12:35:42 +0200 Subject: [PATCH 066/102] style(sql_console): improve filter spacing --- apps/client/src/stylesheets/table.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index 3facb01e4..b14a2edbc 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -57,13 +57,15 @@ .tabulator-header-filter { background: var(--main-background-color); - padding: 1px; + padding: 2px 1px; input { - background: var(--input-background-color); - color: var(--input-text-color); + background: var(--main-background-color); + color: var(--main-text-color); border: 1px solid var(--button-border-color); + border-radius: 3px; outline: none; + padding: 2px; } } } From 0844914e1162f0f847c0345cc3f7edbb48051fa5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 13:05:18 +0200 Subject: [PATCH 067/102] style(sql_console): improve style for highlighted range --- apps/client/src/stylesheets/table.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index b14a2edbc..e39b77142 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -40,6 +40,13 @@ border-bottom: var(--col-header-bottom-border); background: var(--col-header-background-color); color: var(--col-header-text-color); + font-weight: normal; + + .tabulator-col.tabulator-range-highlight { + background: inherit; + color: inherit; + font-weight: bold; + } .tabulator-col-content { padding: 0 !important; From 197fa90176364c18e038bdd0619ad451eef3f27b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 13:09:46 +0200 Subject: [PATCH 068/102] style(sql_console): improve style for frozen cell --- apps/client/src/stylesheets/table.css | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index e39b77142..dace356a9 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -134,6 +134,10 @@ &:last-of-type { border-bottom: none; } + + &.tabulator-range-highlight > .tabulator-cell.tabulator-frozen { + font-weight: bold; + } } .tabulator-row.tabulator-row-odd { @@ -155,11 +159,14 @@ margin-inline-end: var(--cell-editing-border-width); } -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left, .tabulator-row .tabulator-cell { border-inline-end-color: transparent; } +.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { + border-inline-end-color: var(--main-border-color); +} + .tabulator-row .tabulator-cell:not(.tabulator-editable) { color: var(--cell-read-only-text-color); } From bfc521fdc0ae66686d3bf7857ffebe213cfd6edd Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 17:11:03 +0200 Subject: [PATCH 069/102] fix(sql_console): enforce vertical layout --- apps/client/src/widgets/type_widgets/SqlConsole.tsx | 1 + .../src/widgets/type_widgets/helpers/SplitEditor.tsx | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 298ffa1bd..8823f59ab 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -23,6 +23,7 @@ export default function SqlConsole(props: TypeWidgetProps) { {...props} editorBefore={} previewContent={} + forceOrientation="vertical" splitOptions={{ sizes: [ 70, 30 ] }} diff --git a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx index 0b45d8521..5e4da905b 100644 --- a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx +++ b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx @@ -18,6 +18,7 @@ export interface SplitEditorProps extends EditableCodeProps { previewContent: ComponentChildren; previewButtons?: ComponentChildren; editorBefore?: ComponentChildren; + forceOrientation?: "horizontal" | "vertical"; } /** @@ -29,8 +30,8 @@ export interface SplitEditorProps extends EditableCodeProps { * - Can display errors to the user via {@link setError}. * - Horizontal or vertical orientation for the editor/preview split, adjustable via the switch split orientation button floating button. */ -export default function SplitEditor({ note, error, splitOptions, previewContent, previewButtons, className, editorBefore, ...editorProps }: SplitEditorProps) { - const splitEditorOrientation = useSplitOrientation(); +export default function SplitEditor({ note, error, splitOptions, previewContent, previewButtons, className, editorBefore, forceOrientation, ...editorProps }: SplitEditorProps) { + const splitEditorOrientation = useSplitOrientation(forceOrientation); const [ readOnly ] = useNoteLabelBoolean(note, "readOnly"); const containerRef = useRef(null); @@ -95,8 +96,9 @@ export function PreviewButton(props: Omit) { />; } -function useSplitOrientation() { +function useSplitOrientation(forceOrientation?: "horizontal" | "vertical") { const [ splitEditorOrientation ] = useTriliumOption("splitEditorOrientation"); + if (forceOrientation) return forceOrientation; if (isMobile()) return "vertical"; if (!splitEditorOrientation) return "horizontal"; return splitEditorOrientation as "horizontal" | "vertical"; From 97dfad419c1682cb4f047a5f99f7bf1b0a42e8f5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 17:35:01 +0200 Subject: [PATCH 070/102] docs(user): refresh photo for SQL console --- .../1_SQL Console_image.png | Bin 30610 -> 230 bytes .../2_SQL Console_image.png | Bin 230 -> 76220 bytes .../3_SQL Console_image.png | Bin 265 -> 0 bytes .../SQL Console.html | 34 ++++---- .../Import & Export/Evernote.html | 33 ++++---- .../Server Installation.html | 29 ++++--- .../Developer Guide/Documentation.md | 2 +- docs/Release Notes/Release Notes/v0.101.2.md | 2 +- docs/User Guide/!!!meta.json | 74 ++++++++---------- .../1_SQL Console_image.png | Bin 30610 -> 230 bytes .../2_SQL Console_image.png | Bin 230 -> 76220 bytes .../3_SQL Console_image.png | Bin 265 -> 0 bytes .../SQL Console.md | 10 +-- 13 files changed, 83 insertions(+), 101 deletions(-) delete mode 100644 apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png delete mode 100644 docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png index 6f32f76ec97a50703e8775ff38053b61e949dde4..1b1834ba1fc25a9c47a42ed6611323294e72c426 100644 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^!XV56BpAZ2GX;PYW3iKG2*)$7=$Syy0#6sm5Q)pl zKjL1$WMt=j|DT!BnU&dS!%sG$;-nXMlR2I=p72v;dw<`-kiCuhe{4gN!lwhef^9SE zIX147WplX3sn=H1BEcN-_P_5L9`OT7q5;|ZjJgF$77Sv}YdYMO$kxdyUgIb> z`d__chPCr`Ie`o57Chp`i8q+dxDPG!Im7wp@;6z91?*|^F5LDC59-c-SSzJDr%~a{ agL(#G))kA^YHm6X@_?tSpUXO@geCy8El%A4 literal 30610 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≪vU@{_wtbe$k2p!9f|rLWgqukh1V=-P!^ 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
u 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 CDWUNI literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^!XV56BpAZ2GX;PYW3iKG2*)$7=$Syy0#6sm5Q)pl zKjL1$WMt=j|DT!BnU&dS!%sG$;-nXMlR2I=p72v;dw<`-kiCuhe{4gN!lwhef^9SE zIX147WplX3sn=H1BEcN-_P_5L9`OT7q5;|ZjJgF$77Sv}YdYMO$kxdyUgIb> z`d__chPCr`Ie`o57Chp`i8q+dxDPG!Im7wp@;6z91?*|^F5LDC59-c-SSzJDr%~a{ agL(#G))kA^YHm6X@_?tSpUXO@geCy8El%A4 diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png deleted file mode 100644 index ccef8f7aaf842172732a1f8c469c878d9b54d276..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^fs2QjEn;o*^91xT0qQIfp%6977~7 zC;#YY_#dYG@9%$m=1Cs5%+6-3I@Fn)HCLT5^ShR6FwtK0o@ln*pZ|Y8+WRc&WMt`y z|JUBR=lS!!CXyOY_*3eW8zO?f+H)<@vUjo(*Vz>D`>dlv{UQeDW(UP9>+W0e@HqaL z*RlF9o>na%aI)?G|A%V->(8+pwH_|Aj!|h_SXl4B#7g%HU-;w8|Nm@lGc%OJWz7DvGkkb`J7SVh^AC_8 NJzf1=);T3K0RSO!Y0Urt diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html index 27e27dddb..3b5c25ce6 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html @@ -1,36 +1,30 @@

The SQL Console is Trilium's built-in database editor.

-

It can be accessed by going to the global menu → +

It can be accessed by going to the Global menu → Advanced → Open SQL Console.

Interaction

    -
  • -

    Hovering the mouse over one of the tables listed at the top of the document - will show the columns and their data type.

    -
  • -
  • -

    Only one SQL statement can be run at once.

    -
  • -
  • -

    To run the statement, press the - icon.

    -
  • -
  • -

    For queries that return a result, the data will displayed in a table.

    -

    - -

    -
  • +
  • Hovering the mouse over one of the tables listed at the top of the document + will show the columns and their data type.
  • +
  • Only one SQL statement can be run at once.
  • +
  • To run the statement, press the Execute icon.
  • +
  • For queries that return a result, the data will displayed in a table.
+
+ +

Saved SQL console

SQL queries or commands can be saved into a dedicated note.

To do so, simply write the query and press the - button. Once saved, the note will appear in Day Notes.

+ button. Once saved, the note will appear in Day Notes.

  • The SQL expression will not be displayed by default, but it can still be viewed by going to the note context menu and selecting Note source.
  • -
  • The expression cannot be modified. If needed, recreate it by copying the +
  • The expression cannot be modified. If needed, recreate it by copying the statement back into the SQL console and then saving it again.
\ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html index e5a8231ba..3efd53a8f 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote.html @@ -27,31 +27,28 @@
  • Attachments
  • The hierarchy of headings (these are shifted to start with H2 because - H1 is reserved for note title, see Headings)
  • -
  • Tables
  • -
  • Bulleted lists
  • -
  • Numbered lists
  • -
  • Bold
  • -
  • Italics
  • -
  • Strikethrough
  • -
  • Highlights
  • -
  • Font colors
  • -
  • Soft line breaks
  • -
  • External links
  • + H1 is reserved for note title, see Headings) +
  • Tables
  • +
  • Bulleted lists
  • +
  • Numbered lists
  • +
  • Bold
  • +
  • Italics
  • +
  • Strikethrough
  • +
  • Highlights
  • +
  • Font colors
  • +
  • Soft line breaks
  • +
  • External links

However, we do not guarantee that all of your formatting will be imported 100% correctly.

Limitations

  • The size limit of one import is 250Mb. If the total size of your files - is larger, you can increase the upload limit, + is larger, you can increase the upload limit, or divide your files, and run the import as many times as necessary.
  • -
  • All resources (except for images) are created as notes’ attachments.
  • -
  • If you have HTML inside ENEX files, the HTML formatting may be broken - or lost after import in Trilium. See Reporting issues.
  • +
  • All resources (except for images) are created as notes’ attachments.
  • +
  • If you have HTML inside ENEX files, the HTML formatting may be broken + or lost after import in Trilium. See Reporting issues.

Internal links

The importer cannot transform Evernote internal links into Trilium internal diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html index cbf57c6ca..7b3a54250 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation.html @@ -7,21 +7,20 @@

The server installation includes both web and mobile frontends.

Configuration

diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index 4277ea4b9..35f406a73 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/Release Notes/Release Notes/v0.101.2.md b/docs/Release Notes/Release Notes/v0.101.2.md index 6942b2e8e..842f42c29 100644 --- a/docs/Release Notes/Release Notes/v0.101.2.md +++ b/docs/Release Notes/Release Notes/v0.101.2.md @@ -18,5 +18,5 @@ * [Max content width is not respected when switching between note types in the same tab](https://github.com/TriliumNext/Trilium/issues/8065) * [Crash When a Note Includes Itself](https://github.com/TriliumNext/Trilium/issues/8294) * [Severe Performance Degradation and Crash Issues Due to Recursive Inclusion in Included Notes](https://github.com/TriliumNext/Trilium/issues/8017) -* [ is not a launcher even though it's in the launcher subtree](https://github.com/TriliumNext/Trilium/issues/8218) +* [is not a launcher even though it's in the launcher subtree](https://github.com/TriliumNext/Trilium/issues/8218) * [Archived subnotes of direct children appear in grid view without #includeArchived](https://github.com/TriliumNext/Trilium/issues/8184) \ No newline at end of file diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index b7675da99..f7800ca55 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -6172,17 +6172,31 @@ { "type": "relation", "name": "internalLink", - "value": "dj3j8dG4th4l", + "value": "Gr6xFaF6ioJ5", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "wy8So3yZZlH9", + "value": "WOcw2SLH6tbX", "isInheritable": false, "position": 20 }, + { + "type": "relation", + "name": "internalLink", + "value": "wy8So3yZZlH9", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "dj3j8dG4th4l", + "isInheritable": false, + "position": 40 + }, { "type": "label", "name": "shareAlias", @@ -6196,20 +6210,6 @@ "value": "bx bx-window-open", "isInheritable": false, "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "Gr6xFaF6ioJ5", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "WOcw2SLH6tbX", - "isInheritable": false, - "position": 50 } ], "format": "markdown", @@ -14200,20 +14200,6 @@ "type": "text", "mime": "text/html", "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "Vc8PjrjAGuOp", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "l0tKav7yLHGF", - "isInheritable": false, - "position": 20 - }, { "type": "label", "name": "iconClass", @@ -14227,6 +14213,20 @@ "value": "sql-console", "isInheritable": false, "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 60 } ], "format": "markdown", @@ -14240,29 +14240,21 @@ "position": 10, "dataFileName": "SQL Console_image.png" }, - { - "attachmentId": "827EgLgWhZWF", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_SQL Console_image.png" - }, { "attachmentId": "gIbK7NNLu3iZ", "title": "image.png", "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "2_SQL Console_image.png" + "dataFileName": "1_SQL Console_image.png" }, { - "attachmentId": "pP87PB9ELjQn", + "attachmentId": "wdBs3e0MApgs", "title": "image.png", "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "3_SQL Console_image.png" + "dataFileName": "2_SQL Console_image.png" } ] } diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/1_SQL Console_image.png index 6f32f76ec97a50703e8775ff38053b61e949dde4..1b1834ba1fc25a9c47a42ed6611323294e72c426 100644 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^!XV56BpAZ2GX;PYW3iKG2*)$7=$Syy0#6sm5Q)pl zKjL1$WMt=j|DT!BnU&dS!%sG$;-nXMlR2I=p72v;dw<`-kiCuhe{4gN!lwhef^9SE zIX147WplX3sn=H1BEcN-_P_5L9`OT7q5;|ZjJgF$77Sv}YdYMO$kxdyUgIb> z`d__chPCr`Ie`o57Chp`i8q+dxDPG!Im7wp@;6z91?*|^F5LDC59-c-SSzJDr%~a{ agL(#G))kA^YHm6X@_?tSpUXO@geCy8El%A4 literal 30610 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≪vU@{_wtbe$k2p!9f|rLWgqukh1V=-P!^ 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
u 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 CDWUNI literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^!XV56BpAZ2GX;PYW3iKG2*)$7=$Syy0#6sm5Q)pl zKjL1$WMt=j|DT!BnU&dS!%sG$;-nXMlR2I=p72v;dw<`-kiCuhe{4gN!lwhef^9SE zIX147WplX3sn=H1BEcN-_P_5L9`OT7q5;|ZjJgF$77Sv}YdYMO$kxdyUgIb> z`d__chPCr`Ie`o57Chp`i8q+dxDPG!Im7wp@;6z91?*|^F5LDC59-c-SSzJDr%~a{ agL(#G))kA^YHm6X@_?tSpUXO@geCy8El%A4 diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/3_SQL Console_image.png deleted file mode 100644 index ccef8f7aaf842172732a1f8c469c878d9b54d276..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^fs2QjEn;o*^91xT0qQIfp%6977~7 zC;#YY_#dYG@9%$m=1Cs5%+6-3I@Fn)HCLT5^ShR6FwtK0o@ln*pZ|Y8+WRc&WMt`y z|JUBR=lS!!CXyOY_*3eW8zO?f+H)<@vUjo(*Vz>D`>dlv{UQeDW(UP9>+W0e@HqaL z*RlF9o>na%aI)?G|A%V->(8+pwH_|Aj!|h_SXl4B#7g%HU-;w8|Nm@lGc%OJWz7DvGkkb`J7SVh^AC_8 NJzf1=);T3K0RSO!Y0Urt diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md index f5139a269..6ba851ec6 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md +++ b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md @@ -1,7 +1,7 @@ # SQL Console The SQL Console is Trilium's built-in database editor. -It can be accessed by going to the [global menu](../../../Basic%20Concepts%20and%20Features/UI%20Elements) → Advanced → Open SQL Console. +It can be accessed by going to the Global menu → Advanced → Open SQL Console. ![](SQL%20Console_image.png) @@ -9,16 +9,16 @@ It can be accessed by going to the [global menu](../../../Basic%20Concepts%20and * Hovering the mouse over one of the tables listed at the top of the document will show the columns and their data type. * Only one SQL statement can be run at once. -* To run the statement, press the ![](3_SQL%20Console_image.png)icon. +* To run the statement, press the _Execute_ icon. * For queries that return a result, the data will displayed in a table. - - ![](1_SQL%20Console_image.png) + +

### Saved SQL console SQL queries or commands can be saved into a dedicated note. -To do so, simply write the query and press the ![](2_SQL%20Console_image.png)button. Once saved, the note will appear in [Day Notes](../../Advanced%20Showcases/Day%20Notes.md). +To do so, simply write the query and press the ![](1_SQL%20Console_image.png) button. Once saved, the note will appear in Day Notes. * The SQL expression will not be displayed by default, but it can still be viewed by going to the note context menu and selecting _Note source_. * The expression cannot be modified. If needed, recreate it by copying the statement back into the SQL console and then saving it again. \ No newline at end of file From 57d894e765f8eeb6c9d6632e869297703ea00485 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 17:47:09 +0200 Subject: [PATCH 071/102] feat(sql_console): enable read-only for saved notes --- apps/client/src/widgets/FloatingButtonsDefinitions.tsx | 4 ++-- apps/client/src/widgets/ribbon/NoteActionsCustom.tsx | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/FloatingButtonsDefinitions.tsx b/apps/client/src/widgets/FloatingButtonsDefinitions.tsx index 8bf02d96c..4ad6c520a 100644 --- a/apps/client/src/widgets/FloatingButtonsDefinitions.tsx +++ b/apps/client/src/widgets/FloatingButtonsDefinitions.tsx @@ -7,7 +7,6 @@ import Component from "../components/component"; import NoteContext from "../components/note_context"; import FNote from "../entities/fnote"; import attributes from "../services/attributes"; -import { isExperimentalFeatureEnabled } from "../services/experimental_features"; import froca from "../services/froca"; import { t } from "../services/i18n"; import { copyImageReferenceToClipboard } from "../services/image"; @@ -101,7 +100,8 @@ function SwitchSplitOrientationButton({ note, isReadOnly, isDefaultViewMode }: F function ToggleReadOnlyButton({ note, viewType, isDefaultViewMode }: FloatingButtonContext) { const [ isReadOnly, setReadOnly ] = useNoteLabelBoolean(note, "readOnly"); - const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || viewType === "geoMap") + const isSavedSqlite = note.isTriliumSqlite() && !note.isHiddenCompletely(); + const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || viewType === "geoMap" || isSavedSqlite) && note.isContentAvailable() && isDefaultViewMode; return isEnabled && Date: Sun, 18 Jan 2026 18:06:30 +0200 Subject: [PATCH 072/102] docs(user): update SQL console based on new interaction --- .../SQL Console.html | 38 +++++++++++++++---- docs/User Guide/!!!meta.json | 14 +++++++ .../SQL Console.md | 14 ++++++- 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html index 3b5c25ce6..3549a96e9 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html @@ -11,20 +11,44 @@
  • Only one SQL statement can be run at once.
  • To run the statement, press the Execute icon.
  • For queries that return a result, the data will displayed in a table.
  • +
  • For statements (e.g. INSERT, UPDATE), + the number of affected rows is displayed.
  • +

    Interacting with the table

    +

    After executing a query, a table with the results will be displayed:

    +
      +
    • +

      Clicking on a column allows sorting ascending or descending.

      +
    • +
    • +

      Underneath each column there is an input field which allows filtering + by text.

      +
    • +
    • +

      Press Ctrl+C to copy the current cell to clipboard.

      +
    • +
    • +

      Multiple cells can be selected by dragging or by holding Shift + + arrow keys

      +
    • +
    • +

      Results are paginated for performance reasons. The controls at the bottom + of the table can be used to navigate through pages.

      +
    • +

    Saved SQL console

    SQL queries or commands can be saved into a dedicated note.

    To do so, simply write the query and press the button. Once saved, the note will appear in Day Notes.

    -
      -
    • The SQL expression will not be displayed by default, but it can still - be viewed by going to the note context menu and selecting Note source.
    • -
    • The expression cannot be modified. If needed, recreate it by copying the - statement back into the SQL console and then saving it again.
    • -
    \ No newline at end of file +

    The note can be locked for editing by pressing the Lock button + in the note actions section near the title bar (on the New Layout, + or in the Floating buttons area + if using the old layout). When editing is locked, the SQL statement is + hidden from view.

    \ No newline at end of file diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index f7800ca55..6b0711f16 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -14227,6 +14227,20 @@ "value": "x3i7MxGccDuM", "isInheritable": false, "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IjZS7iK5EXtb", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 80 } ], "format": "markdown", diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md index 6ba851ec6..d9dfd8fb8 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md +++ b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.md @@ -11,14 +11,24 @@ It can be accessed by going to the  +### Interacting with the table + +After executing a query, a table with the results will be displayed: + +* Clicking on a column allows sorting ascending or descending. +* Underneath each column there is an input field which allows filtering by text. +* Press Ctrl+C to copy the current cell to clipboard. +* Multiple cells can be selected by dragging or by holding Shift + arrow keys +* Results are paginated for performance reasons. The controls at the bottom of the table can be used to navigate through pages. + ### Saved SQL console SQL queries or commands can be saved into a dedicated note. To do so, simply write the query and press the ![](1_SQL%20Console_image.png) button. Once saved, the note will appear in Day Notes. -* The SQL expression will not be displayed by default, but it can still be viewed by going to the note context menu and selecting _Note source_. -* The expression cannot be modified. If needed, recreate it by copying the statement back into the SQL console and then saving it again. \ No newline at end of file +The note can be locked for editing by pressing the _Lock_ button in the note actions section near the title bar (on the New Layout, or in the Floating buttons area if using the old layout). When editing is locked, the SQL statement is hidden from view. \ No newline at end of file From fc0ccbfcf5bf5beaa7b9e00ef3d358b9b1e7c939 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 18:19:35 +0200 Subject: [PATCH 073/102] chore(sql_console): address requested changes --- .../widgets/collections/table/tabulator.tsx | 5 +++- .../src/widgets/type_widgets/SqlConsole.tsx | 24 ++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/apps/client/src/widgets/collections/table/tabulator.tsx b/apps/client/src/widgets/collections/table/tabulator.tsx index d908104ce..62d7283b9 100644 --- a/apps/client/src/widgets/collections/table/tabulator.tsx +++ b/apps/client/src/widgets/collections/table/tabulator.tsx @@ -71,7 +71,10 @@ export default function Tabulator({ className, columns, data, modules, tabula // Change in data. useEffect(() => { tabulatorRef.current?.setData(data); }, [ data ]); - useEffect(() => { columns && tabulatorRef.current?.setColumns(columns); }, [ data ]); + useEffect(() => { + if (!columns) return; + tabulatorRef.current?.setColumns(columns); + }, [ columns ]); return (
    diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 8823f59ab..6b8f79a5f 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -160,20 +160,16 @@ export function SqlTableSchemas({ note }: TypeWidgetProps) { {schemas.map(({ name, columns }) => ( - - - - {columns.map(column => ( - - - - - ))} -
    {column.name}{column.type}
    -
    - {" "} -
    + + + {columns.map(column => ( + + + + + ))} +
    {column.name}{column.type}
    +
    ))}
    From e33950e0009dd20c27851c6ca21961c8f9d924da Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 18:22:21 +0200 Subject: [PATCH 074/102] test(client): fix broken tests after change in shortcut behaviour --- apps/client/src/services/shortcuts.spec.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/client/src/services/shortcuts.spec.ts b/apps/client/src/services/shortcuts.spec.ts index 6950c604c..e73f4bcb5 100644 --- a/apps/client/src/services/shortcuts.spec.ts +++ b/apps/client/src/services/shortcuts.spec.ts @@ -1,5 +1,6 @@ -import { describe, expect, it, vi, beforeEach, afterEach } from "vitest"; -import shortcuts, { keyMatches, matchesShortcut, isIMEComposing } from "./shortcuts.js"; +import { afterEach,beforeEach, describe, expect, it, vi } from "vitest"; + +import shortcuts, { isIMEComposing,keyMatches, matchesShortcut } from "./shortcuts.js"; // Mock utils module vi.mock("./utils.js", () => ({ @@ -248,7 +249,7 @@ describe("shortcuts", () => { const handler = vi.fn(); shortcuts.bindGlobalShortcut("ctrl+a", handler, "test-namespace"); - expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); + expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); }); it("should not bind shortcuts when handler is null", () => { @@ -279,7 +280,7 @@ describe("shortcuts", () => { const handler = vi.fn(); shortcuts.bindElShortcut(mockJQueryEl, "ctrl+a", handler, "test-namespace"); - expect(mockEl.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); + expect(mockEl.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); }); it("should fall back to document when element is empty", () => { @@ -289,7 +290,7 @@ describe("shortcuts", () => { const handler = vi.fn(); shortcuts.bindElShortcut(emptyJQuery, "ctrl+a", handler, "test-namespace"); - expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); + expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); }); }); @@ -300,7 +301,7 @@ describe("shortcuts", () => { shortcuts.removeGlobalShortcut("test-namespace"); - expect(mockElement.removeEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); + expect(mockElement.removeEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); }); }); From 4c55e857b88778b1ecfda12d78342e4d5565cd14 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 18:33:48 +0200 Subject: [PATCH 075/102] fix(server): build failing due to import --- apps/server/src/app.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index 0ab7a620c..f2f7cdff9 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -3,7 +3,7 @@ import "./becca/becca_loader.js"; import compression from "compression"; import cookieParser from "cookie-parser"; -import { renderFile } from "ejs"; +import ejs from "ejs"; import express from "express"; import { auth } from "express-openid-connect"; import helmet from "helmet"; @@ -35,7 +35,7 @@ export default async function buildApp() { // view engine setup app.set("views", path.join(assetsDir, "views")); - app.engine("ejs", (filePath, options, callback) => renderFile(filePath, options, callback)); + app.engine("ejs", (filePath, options, callback) => ejs.renderFile(filePath, options, callback)); app.set("view engine", "ejs"); app.use((req, res, next) => { From eac7235199679c57c55cd634638adc9515e77d4c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 18:38:14 +0200 Subject: [PATCH 076/102] chore(sql_console): address requested changes --- apps/client/src/services/shortcuts.spec.ts | 2 +- .../widgets/sidebar/RightPanelContainer.tsx | 3 +-- .../src/widgets/type_widgets/SqlConsole.tsx | 25 ++++++++----------- .../type_widgets/helpers/SplitEditor.tsx | 2 +- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/apps/client/src/services/shortcuts.spec.ts b/apps/client/src/services/shortcuts.spec.ts index e73f4bcb5..ed17dcd39 100644 --- a/apps/client/src/services/shortcuts.spec.ts +++ b/apps/client/src/services/shortcuts.spec.ts @@ -1,4 +1,4 @@ -import { afterEach,beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import shortcuts, { isIMEComposing,keyMatches, matchesShortcut } from "./shortcuts.js"; diff --git a/apps/client/src/widgets/sidebar/RightPanelContainer.tsx b/apps/client/src/widgets/sidebar/RightPanelContainer.tsx index f6f1784a5..082b0a66f 100644 --- a/apps/client/src/widgets/sidebar/RightPanelContainer.tsx +++ b/apps/client/src/widgets/sidebar/RightPanelContainer.tsx @@ -3,7 +3,7 @@ import "./RightPanelContainer.css"; import Split from "@triliumnext/split.js"; import { VNode } from "preact"; -import { useCallback,useEffect, useRef, useState } from "preact/hooks"; +import { useCallback, useEffect, useRef, useState } from "preact/hooks"; import appContext from "../../components/app_context"; import { WidgetsByParent } from "../../services/bundle"; @@ -12,7 +12,6 @@ import options from "../../services/options"; import { DEFAULT_GUTTER_SIZE } from "../../services/resizer"; import Button from "../react/Button"; import { useActiveNoteContext, useLegacyWidget, useNoteProperty, useTriliumEvent, useTriliumOptionJson } from "../react/hooks"; -import Icon from "../react/Icon"; import NoItems from "../react/NoItems"; import LegacyRightPanelWidget from "../right_panel_widget"; import HighlightsList from "./HighlightsList"; diff --git a/apps/client/src/widgets/type_widgets/SqlConsole.tsx b/apps/client/src/widgets/type_widgets/SqlConsole.tsx index 6b8f79a5f..9c4108003 100644 --- a/apps/client/src/widgets/type_widgets/SqlConsole.tsx +++ b/apps/client/src/widgets/type_widgets/SqlConsole.tsx @@ -2,7 +2,6 @@ import "./SqlConsole.css"; import { SchemaResponse, SqlExecuteResponse } from "@triliumnext/commons"; import { useEffect, useState } from "preact/hooks"; -import { Fragment } from "preact/jsx-runtime"; import { ClipboardModule, EditModule, ExportModule, FilterModule, FormatModule, FrozenColumnsModule, KeybindingsModule, PageModule, ResizeColumnsModule, SelectRangeModule, SelectRowModule, SortModule } from "tabulator-tables"; import { t } from "../../services/i18n"; @@ -17,18 +16,16 @@ import { TypeWidgetProps } from "./type_widget"; export default function SqlConsole(props: TypeWidgetProps) { return ( - <> - } - previewContent={} - forceOrientation="vertical" - splitOptions={{ - sizes: [ 70, 30 ] - }} - /> - + } + previewContent={} + forceOrientation="vertical" + splitOptions={{ + sizes: [ 70, 30 ] + }} + /> ); } @@ -151,7 +148,7 @@ export function SqlTableSchemas({ note }: TypeWidgetProps) { server.get("sql/schema").then(setSchemas); }, []); - const isEnabled = note?.mime === "text/x-sqlite;schema=trilium" && schemas; + const isEnabled = note.isTriliumSqlite() && schemas; return (
    {isEnabled && ( diff --git a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx index 5e4da905b..6553b650a 100644 --- a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx +++ b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx @@ -79,7 +79,7 @@ export default function SplitEditor({ note, error, splitOptions, previewContent, }, [ readOnly, splitEditorOrientation ]); return ( -
    +
    {splitEditorOrientation === "horizontal" ? <>{editor}{preview} : <>{preview}{editor}} From 1d3d214101ae6c674efad99fdf1bca0d307a96f8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 22:05:16 +0200 Subject: [PATCH 077/102] fix(print): not printing at all --- apps/client/src/index.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/apps/client/src/index.ts b/apps/client/src/index.ts index 795adc8cf..fa04369c9 100644 --- a/apps/client/src/index.ts +++ b/apps/client/src/index.ts @@ -91,10 +91,17 @@ function setBodyAttributes() { } async function loadScripts() { - if (glob.device === "mobile") { - await import("./mobile.js"); - } else { - await import("./desktop.js"); + switch (glob.device) { + case "mobile": + await import("./mobile.js"); + break; + case "print": + await import("./print.js"); + break; + case "desktop": + default: + await import("./desktop.js"); + break; } } From e6380b87b69433387128d04227fe4f1de8463e90 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 22:26:13 +0200 Subject: [PATCH 078/102] fix(print): some collections not rendered at all --- apps/client/src/widgets/collections/NoteList.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/collections/NoteList.tsx b/apps/client/src/widgets/collections/NoteList.tsx index ec80e6b19..0b864ace2 100644 --- a/apps/client/src/widgets/collections/NoteList.tsx +++ b/apps/client/src/widgets/collections/NoteList.tsx @@ -1,7 +1,7 @@ import "./NoteList.css"; import { WebSocketMessage } from "@triliumnext/commons"; -import { VNode } from "preact"; +import { Component, VNode } from "preact"; import { lazy, Suspense } from "preact/compat"; import { useEffect, useRef, useState } from "preact/hooks"; @@ -120,7 +120,9 @@ export function CustomNoteList({ note, viewType, isEnabled: shouldEnable, notePa } const ComponentToRender = viewType && props && isEnabled && ( - props.media === "print" ? ViewComponents[viewType].print : ViewComponents[viewType].normal + props.media === "print" + ? ViewComponents[viewType].print ?? ViewComponents[viewType].normal + : ViewComponents[viewType].normal ); return ( From 418a5465832f3076b049f14ebba9454436cc6a02 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Jan 2026 22:39:09 +0200 Subject: [PATCH 079/102] fix(print): clicking inside print preview hides it --- apps/client/src/print.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/client/src/print.tsx b/apps/client/src/print.tsx index 16b41cd42..96461db2d 100644 --- a/apps/client/src/print.tsx +++ b/apps/client/src/print.tsx @@ -29,7 +29,9 @@ async function main() { const froca = (await import("./services/froca")).default; const note = await froca.getNote(noteId); - render(, document.body); + const bodyWrapper = document.createElement("div"); + render(, bodyWrapper); + document.body.appendChild(bodyWrapper); } function App({ note, noteId }: { note: FNote | null | undefined, noteId: string }) { From 60dbdbeb719bec4c6e19e45bd932061afb8c4e30 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 02:05:32 +0000 Subject: [PATCH 080/102] chore(deps): update dependency happy-dom to v20.3.3 --- apps/client/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 49 ++++++++++++++++++++++------------------ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 87085ecbb..20fa345b9 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -78,7 +78,7 @@ "@types/reveal.js": "5.2.2", "@types/tabulator-tables": "6.3.1", "copy-webpack-plugin": "13.0.1", - "happy-dom": "20.3.1", + "happy-dom": "20.3.3", "lightningcss": "1.30.2", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.4" diff --git a/package.json b/package.json index 667daea68..5d046f92a 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-playwright": "2.5.0", "eslint-plugin-simple-import-sort": "12.1.1", - "happy-dom": "20.3.1", + "happy-dom": "20.3.3", "http-server": "14.1.1", "jiti": "2.6.1", "js-yaml": "4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f132aed0..352ce15a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,8 +92,8 @@ importers: specifier: 12.1.1 version: 12.1.1(eslint@9.39.2(jiti@2.6.1)) happy-dom: - specifier: 20.3.1 - version: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.3.3 + version: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) http-server: specifier: 14.1.1 version: 14.1.1 @@ -135,7 +135,7 @@ importers: version: 4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) apps/build-docs: devDependencies: @@ -345,8 +345,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) happy-dom: - specifier: 20.3.1 - version: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.3.3 + version: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) lightningcss: specifier: 1.30.2 version: 1.30.2 @@ -858,7 +858,7 @@ importers: version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -949,7 +949,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1009,7 +1009,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1069,7 +1069,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1136,7 +1136,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1203,7 +1203,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -8746,8 +8746,8 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - happy-dom@20.3.1: - resolution: {integrity: sha512-tLvsizNno05Hij0PoB0QN/S8xf0YU2AGvO11/JlJDw5McA/gzyn0Ni1RwbTI1/zteUbOekJH0t6q8HFvjbxsGg==} + happy-dom@20.3.3: + resolution: {integrity: sha512-hM9gltmtQLfmWPqoPreUtRdP3nZCSzQEw7l/JC+up5CxquDykhYFKzIzoFFeVev3AGFEULNvsbE8fpZPgxUYEQ==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -13239,10 +13239,12 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me temp@0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} @@ -15244,6 +15246,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -20573,7 +20577,7 @@ snapshots: '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20590,7 +20594,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20610,7 +20614,7 @@ snapshots: magicast: 0.5.1 obug: 2.1.1 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -20626,7 +20630,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) @@ -20674,7 +20678,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@4.0.17': dependencies: @@ -24461,11 +24465,12 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): + happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@types/node': 20.19.25 + '@types/node': 24.10.9 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 + entities: 4.5.0 whatwg-mimetype: 3.0.0 ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: @@ -30544,7 +30549,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.17 '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) @@ -30571,7 +30576,7 @@ snapshots: '@types/node': 24.10.9 '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.17(vitest@4.0.17) - happy-dom: 20.3.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + happy-dom: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti From 84cf4ef4a3be287b11291b9dbffe6700cf949eb5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 19 Jan 2026 13:51:27 +0200 Subject: [PATCH 081/102] fix(print): only first page is shown --- apps/client/src/index.ts | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/apps/client/src/index.ts b/apps/client/src/index.ts index fa04369c9..fb6c61774 100644 --- a/apps/client/src/index.ts +++ b/apps/client/src/index.ts @@ -39,22 +39,25 @@ async function loadBootstrapCss() { } function loadStylesheets() { - const { assetPath, themeCssUrl, themeUseNextAsBase } = window.glob; + const { device, assetPath, themeCssUrl, themeUseNextAsBase } = window.glob; + const cssToLoad: string[] = []; - cssToLoad.push(`${assetPath}/stylesheets/ckeditor-theme.css`); - cssToLoad.push(`api/fonts`); - cssToLoad.push(`${assetPath}/stylesheets/theme-light.css`); - if (themeCssUrl) { - cssToLoad.push(themeCssUrl); + if (device !== "print") { + cssToLoad.push(`${assetPath}/stylesheets/ckeditor-theme.css`); + cssToLoad.push(`api/fonts`); + cssToLoad.push(`${assetPath}/stylesheets/theme-light.css`); + if (themeCssUrl) { + cssToLoad.push(themeCssUrl); + } + if (themeUseNextAsBase === "next") { + cssToLoad.push(`${assetPath}/stylesheets/theme-next.css`); + } else if (themeUseNextAsBase === "next-dark") { + cssToLoad.push(`${assetPath}/stylesheets/theme-next-dark.css`); + } else if (themeUseNextAsBase === "next-light") { + cssToLoad.push(`${assetPath}/stylesheets/theme-next-light.css`); + } + cssToLoad.push(`${assetPath}/stylesheets/style.css`); } - if (themeUseNextAsBase === "next") { - cssToLoad.push(`${assetPath}/stylesheets/theme-next.css`); - } else if (themeUseNextAsBase === "next-dark") { - cssToLoad.push(`${assetPath}/stylesheets/theme-next-dark.css`); - } else if (themeUseNextAsBase === "next-light") { - cssToLoad.push(`${assetPath}/stylesheets/theme-next-light.css`); - } - cssToLoad.push(`${assetPath}/stylesheets/style.css`); for (const href of cssToLoad) { const linkEl = document.createElement("link"); From 5d1a63bce070d56eb75422e88bf82cfbe4acbdd5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 19 Jan 2026 14:55:33 +0200 Subject: [PATCH 082/102] fix(print): crash when printing presentation --- apps/client/src/widgets/NoteDetail.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index bb47dc80c..64a485188 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -363,8 +363,8 @@ function showToast(type: "printing" | "exporting_pdf", progress: number = 0) { }); } -function handlePrintReport(printReport: PrintReport) { - if (printReport.type === "collection" && printReport.ignoredNoteIds.length > 0) { +function handlePrintReport(printReport?: PrintReport) { + if (printReport?.type === "collection" && printReport.ignoredNoteIds.length > 0) { toast.showPersistent({ id: "print-report", icon: "bx bx-collection", From e0b3e41c9e386986adfe28e150ce9c9c2b89d9eb Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 19 Jan 2026 07:48:16 +0100 Subject: [PATCH 083/102] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-tr.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/README-tr.md b/docs/README-tr.md index 2046da31d..bd52da803 100644 --- a/docs/README-tr.md +++ b/docs/README-tr.md @@ -57,13 +57,10 @@ Dokümantasyonumuz birden fazla formatta mevcuttur: ### Hızlı linkler - [Başlangıç Kılavuzu](https://docs.triliumnotes.org/) -- [Installation Instructions](https://docs.triliumnotes.org/user-guide/setup) -- [Docker - Setup](https://docs.triliumnotes.org/user-guide/setup/server/installation/docker) -- [Upgrading - TriliumNext](https://docs.triliumnotes.org/user-guide/setup/upgrading) -- [Basic Concepts and - Features](https://docs.triliumnotes.org/user-guide/concepts/notes) +- Kurulum Klavuzu +- Docker kurulumu +- [TrilliumNext Güncelleme] +- Basit Kavramlar ve Özellikler - [Patterns of Personal Knowledge Base](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) From da59c14231120bcd9727beae12c1c2e1c252a8cd Mon Sep 17 00:00:00 2001 From: Toto Yullian Date: Mon, 19 Jan 2026 11:07:16 +0100 Subject: [PATCH 084/102] Translated using Weblate (Indonesian) Currently translated at 18.1% (21 of 116 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/id/ --- docs/README-id.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README-id.md b/docs/README-id.md index 0f0a9d1d2..3a74efc08 100644 --- a/docs/README-id.md +++ b/docs/README-id.md @@ -88,8 +88,8 @@ Dokumentasi kami tersedia dalam berbagai format: [attributes](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) can be used for note organization, querying and advanced [scripting](https://docs.triliumnotes.org/user-guide/scripts) -* UI available in English, German, Spanish, French, Romanian, and Chinese - (simplified and traditional) +* Antarmuka pengguna tersedia dalam bahasa Inggris, Jerman, Spanyol, Prancis, + Rumania, dan Tionghoa (sederhana dan tradisional) * Direct [OpenID and TOTP integration](https://docs.triliumnotes.org/user-guide/setup/server/mfa) for more secure login From c304753ffcfe583ddfdb1c4f36d9c7909258f687 Mon Sep 17 00:00:00 2001 From: Baris Konag Date: Sun, 18 Jan 2026 22:50:02 +0100 Subject: [PATCH 085/102] Translated using Weblate (Turkish) Currently translated at 4.3% (17 of 388 strings) Translation: Trilium Notes/Server Translate-URL: https://hosted.weblate.org/projects/trilium/server/tr/ --- apps/server/src/assets/translations/tr/server.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/server/src/assets/translations/tr/server.json b/apps/server/src/assets/translations/tr/server.json index 90d245735..dcb1b624a 100644 --- a/apps/server/src/assets/translations/tr/server.json +++ b/apps/server/src/assets/translations/tr/server.json @@ -13,6 +13,9 @@ "collapse-subtree": "Geçerli notun alt ağacını daraltır", "sort-child-notes": "Alt notları sırala", "creating-and-moving-notes": "Notları oluşturma ve yerlerini değiştirme", - "create-note-into": "Aktif nota bağlı alt not oluştur" + "create-note-into": "Aktif nota bağlı alt not oluştur", + "create-note-after": "Aktif nottan sonra yeni bir not oluştur", + "delete-note": "Notu sil", + "move-note-down": "Notu aşağıya kaydır" } } From c7cc702c4acb4c9ee2c619a458d49226096f65de Mon Sep 17 00:00:00 2001 From: Baris Konag Date: Sun, 18 Jan 2026 22:51:07 +0100 Subject: [PATCH 086/102] Translated using Weblate (Turkish) Currently translated at 10.5% (16 of 152 strings) Translation: Trilium Notes/Website Translate-URL: https://hosted.weblate.org/projects/trilium/website/tr/ --- apps/website/src/translations/tr/translation.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/website/src/translations/tr/translation.json b/apps/website/src/translations/tr/translation.json index f320e3116..7c4b0822d 100644 --- a/apps/website/src/translations/tr/translation.json +++ b/apps/website/src/translations/tr/translation.json @@ -17,6 +17,8 @@ "organization_benefits": { "title": "Organizasyon", "note_structure_title": "Not yapısı", - "note_structure_description": "Notlar hiyerarşik olarak düzenlenebilir. Her not 'alt notlar' içerebildiği için klasörlere ihtiyaç duyulmaz. Tek bir not, hiyerarşinin birden fazla noktasına eklenebilir." + "note_structure_description": "Notlar hiyerarşik olarak düzenlenebilir. Her not 'alt notlar' içerebildiği için klasörlere ihtiyaç duyulmaz. Tek bir not, hiyerarşinin birden fazla noktasına eklenebilir.", + "attributes_description": "Notlar arasında ilişkiler kurun veya kolay kategorizasyon için etiketler ekleyin. Tablolarda ve panolarda kullanılabilen yapılandırılmış bilgileri eklemek için öne çıkan öznitelikleri kullanın.", + "hoisting_description": "Kişisel ve iş notlarınızı bir çalışma alanı altında gruplandırarak kolayca ayırın; bu sayede not ağacınız yalnızca belirli bir not kümesini gösterecek şekilde odaklanacaktır." } } From d43309947e26fcc8695bc95582c5789b4bf4098e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 19 Jan 2026 18:39:22 +0200 Subject: [PATCH 087/102] fix(client): polyfill removed jQuery methods --- apps/client/src/index.ts | 11 +++++++++++ apps/client/src/runtime.ts | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/apps/client/src/index.ts b/apps/client/src/index.ts index 795adc8cf..f4560fa3a 100644 --- a/apps/client/src/index.ts +++ b/apps/client/src/index.ts @@ -16,6 +16,17 @@ async function initJQuery() { const $ = (await import("jquery")).default; window.$ = $; window.jQuery = $; + + // Polyfill removed jQuery methods for autocomplete.js compatibility + ($ as any).isArray = Array.isArray; + ($ as any).isFunction = function(obj: any) { return typeof obj === 'function'; }; + ($ as any).isPlainObject = function(obj: any) { + if (obj == null || typeof obj !== 'object') { return false; } + const proto = Object.getPrototypeOf(obj); + if (proto === null) { return true; } + const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor === 'function' && Ctor === Object; + }; } async function setupGlob() { diff --git a/apps/client/src/runtime.ts b/apps/client/src/runtime.ts index 4c82481b1..cab174a76 100644 --- a/apps/client/src/runtime.ts +++ b/apps/client/src/runtime.ts @@ -8,6 +8,17 @@ async function loadBootstrap() { } } +// Polyfill removed jQuery methods for autocomplete.js compatibility +($ as any).isArray = Array.isArray; +($ as any).isFunction = function(obj: any) { return typeof obj === 'function'; }; +($ as any).isPlainObject = function(obj: any) { + if (obj == null || typeof obj !== 'object') { return false; } + const proto = Object.getPrototypeOf(obj); + if (proto === null) { return true; } + const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor === 'function' && Ctor === Object; +}; + (window as any).$ = $; (window as any).jQuery = $; await loadBootstrap(); From c97f52da366f4b14703ee03cf804d8d28dfc09fc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 19 Jan 2026 19:02:54 +0200 Subject: [PATCH 088/102] docs(user): mention breaking change update for scripts --- .../doc_notes/en/User Guide/!!!meta.json | 2 +- .../SQL Console.html | 41 ++++----- .../Scripting/Breaking changes.html | 27 ++++++ .../Developer Guide/Documentation.md | 2 +- docs/User Guide/!!!meta.json | 90 +++++++++++++------ .../User Guide/Scripting/Breaking changes.md | 14 +++ 6 files changed, 120 insertions(+), 56 deletions(-) create mode 100644 apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Breaking changes.html create mode 100644 docs/User Guide/User Guide/Scripting/Breaking changes.md diff --git a/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json b/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json index cab05610e..b828947f2 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json +++ b/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json @@ -1 +1 @@ -[{"id":"_help_BOCnjTMBCoxW","title":"Feature Highlights","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Feature Highlights"},{"name":"iconClass","value":"bx bx-star","type":"label"}]},{"id":"_help_Otzi9La2YAUX","title":"Installation & Setup","type":"book","attributes":[{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_poXkQfguuA0U","title":"Desktop Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation"},{"name":"iconClass","value":"bx bx-desktop","type":"label"}],"children":[{"id":"_help_nRqcgfTb97uV","title":"Using the desktop application as a server","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application "},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_Rp0q8bSP6Ayl","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Nix flake"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]}]},{"id":"_help_WOcw2SLH6tbX","title":"Server Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation"},{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_Dgg7bR3b6K9j","title":"1. Installing the server","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_3tW6mORuTHnB","title":"Packaged version for Linux","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_rWX5eY045zbE","title":"Using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker"},{"name":"iconClass","value":"bx bxl-docker","type":"label"}]},{"id":"_help_moVgBcoxE3EK","title":"On NixOS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/On NixOS"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_J1Bb6lVlwU5T","title":"Manually","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]},{"id":"_help_DCmT6e7clMoP","title":"Using Kubernetes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Kubernetes"},{"name":"iconClass","value":"bx bxl-kubernetes","type":"label"}]},{"id":"_help_klCWNks3ReaQ","title":"Multiple server instances","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Multiple server instances"},{"name":"iconClass","value":"bx bxs-user-account","type":"label"}]}]},{"id":"_help_vcjrb3VVYPZI","title":"2. Reverse proxy","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_ud6MShXL4WpO","title":"Nginx","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_fDLvzOx29Pfg","title":"Apache using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache using Docker"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_LLzSMXACKhUs","title":"Trusted proxy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Trusted proxy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_5ERVJb9s4FRD","title":"Traefik","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_l2VkvOwUNfZj","title":"HTTPS (TLS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/HTTPS (TLS)"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_0hzsNCP31IAB","title":"Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Authentication"},{"name":"iconClass","value":"bx bx-user","type":"label"}]},{"id":"_help_7DAiwaf8Z7Rz","title":"Multi-Factor Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication"},{"name":"iconClass","value":"bx bx-stopwatch","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Nix flake.clone"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_yeEaYqosGLSh","title":"Third-party cloud hosting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting"},{"name":"iconClass","value":"bx bx-cloud","type":"label"}]},{"id":"_help_iGTnKjubbXkA","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]}]},{"id":"_help_cbkrhQjrkKrh","title":"Synchronization","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Synchronization"},{"name":"iconClass","value":"bx bx-sync","type":"label"}]},{"id":"_help_RDslemsQ6gCp","title":"Mobile Frontend","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Mobile Frontend"},{"name":"iconClass","value":"bx bx-mobile-alt","type":"label"}]},{"id":"_help_MtPxeAWVAzMg","title":"Web Clipper","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Web Clipper"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_n1lujUxCwipy","title":"Upgrading TriliumNext","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Upgrading TriliumNext"},{"name":"iconClass","value":"bx bx-up-arrow-alt","type":"label"}]},{"id":"_help_ODY7qQn5m2FT","title":"Backup","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Backup"},{"name":"iconClass","value":"bx bx-hdd","type":"label"}]},{"id":"_help_tAassRL4RSQL","title":"Data directory","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Data directory"},{"name":"iconClass","value":"bx bx-folder-open","type":"label"}]}]},{"id":"_help_gh7bpGYxajRS","title":"Basic Concepts and Features","type":"book","attributes":[{"name":"iconClass","value":"bx bx-help-circle","type":"label"}],"children":[{"id":"_help_Vc8PjrjAGuOp","title":"UI Elements","type":"book","attributes":[{"name":"iconClass","value":"bx bx-window-alt","type":"label"}],"children":[{"id":"_help_x0JgW8UqGXvq","title":"Vertical and horizontal layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout"},{"name":"iconClass","value":"bx bxs-layout","type":"label"}]},{"id":"_help_x3i7MxGccDuM","title":"Global menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Global menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_oPVyFC7WL2Lp","title":"Note Tree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree"},{"name":"iconClass","value":"bx bxs-tree-alt","type":"label"}],"children":[{"id":"_help_YtSN43OrfzaA","title":"Note tree contextual menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_yTjUdsOi4CIE","title":"Multiple selection","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_DvdZhoQZY9Yd","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_wyaGBBQrl4i3","title":"Hiding the subtree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Hiding the subtree"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]}]},{"id":"_help_BlN9DFI679QC","title":"Ribbon","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon"},{"name":"iconClass","value":"bx bx-dots-horizontal","type":"label"}]},{"id":"_help_3seOhtN8uLIY","title":"Tabs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs"},{"name":"iconClass","value":"bx bx-dock-top","type":"label"}]},{"id":"_help_xYmIYSP6wE3F","title":"Launch Bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar"},{"name":"iconClass","value":"bx bx-sidebar","type":"label"}]},{"id":"_help_8YBEPzcpUgxw","title":"Note buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note buttons"},{"name":"iconClass","value":"bx bx-dots-vertical-rounded","type":"label"}]},{"id":"_help_4TIF1oA4VQRO","title":"Options","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Options"},{"name":"iconClass","value":"bx bx-cog","type":"label"}]},{"id":"_help_luNhaphA37EO","title":"Split View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View"},{"name":"iconClass","value":"bx bx-dock-right","type":"label"}]},{"id":"_help_XpOYSgsLkTJy","title":"Floating buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons"},{"name":"iconClass","value":"bx bx-rectangle","type":"label"}]},{"id":"_help_RnaPdbciOfeq","title":"Right Sidebar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar"},{"name":"iconClass","value":"bx bxs-dock-right","type":"label"}]},{"id":"_help_r5JGHN99bVKn","title":"Recent Changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_ny318J39E5Z0","title":"Zoom","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom"},{"name":"iconClass","value":"bx bx-zoom-in","type":"label"}]},{"id":"_help_lgKX7r3aL30x","title":"Note Tooltip","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip"},{"name":"iconClass","value":"bx bx-message-detail","type":"label"}]},{"id":"_help_IjZS7iK5EXtb","title":"New Layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout"},{"name":"iconClass","value":"bx bx-layout","type":"label"}],"children":[{"id":"_help_I6p2a06hdnL6","title":"Breadcrumb","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb"},{"name":"iconClass","value":"bx bx-chevron-right","type":"label"}]},{"id":"_help_AlJ73vBCjWDw","title":"Status bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar"},{"name":"iconClass","value":"bx bx-dock-bottom","type":"label"}]}]}]},{"id":"_help_BFs8mudNFgCS","title":"Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes"},{"name":"iconClass","value":"bx bx-notepad","type":"label"}],"children":[{"id":"_help_p9kXRFAkwN4o","title":"Note Icons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_0vhv7lsOLy82","title":"Attachments","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Attachments"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_IakOLONlIfGI","title":"Cloning Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes"},{"name":"iconClass","value":"bx bx-duplicate","type":"label"}],"children":[{"id":"_help_TBwsyfadTA18","title":"Branch prefix","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix"},{"name":"iconClass","value":"bx bx-rename","type":"label"}]}]},{"id":"_help_bwg0e8ewQMak","title":"Protected Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_MKmLg5x6xkor","title":"Archived Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes"},{"name":"iconClass","value":"bx bx-box","type":"label"}]},{"id":"_help_vZWERwf8U3nx","title":"Note Revisions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_aGlEvb9hyDhS","title":"Sorting Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes"},{"name":"iconClass","value":"bx bx-sort-up","type":"label"}]},{"id":"_help_NRnIZmSMc5sj","title":"Printing & Exporting as PDF","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF"},{"name":"iconClass","value":"bx bx-printer","type":"label"}]},{"id":"_help_CoFPLs3dRlXc","title":"Read-Only Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_0ESUbbAxVnoK","title":"Note List","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]}]},{"id":"_help_wArbEsdSae6g","title":"Navigation","type":"book","attributes":[{"name":"iconClass","value":"bx bx-navigation","type":"label"}],"children":[{"id":"_help_kBrnXNG3Hplm","title":"Tree Concepts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Tree Concepts"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}]},{"id":"_help_MMiBEQljMQh2","title":"Note Navigation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation"},{"name":"iconClass","value":"bx bxs-navigation","type":"label"}]},{"id":"_help_Ms1nauBra7gq","title":"Quick search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_F1r9QtzQLZqm","title":"Jump to...","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to"},{"name":"iconClass","value":"bx bx-send","type":"label"}]},{"id":"_help_eIg8jdvaoNNd","title":"Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_u3YFHC9tQlpm","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmarks","type":"label"}]},{"id":"_help_OR8WJ7Iz9K4U","title":"Note Hoisting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting"},{"name":"iconClass","value":"bx bxs-chevrons-up","type":"label"}]},{"id":"_help_ZjLYv08Rp3qC","title":"Quick edit","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick edit"},{"name":"iconClass","value":"bx bx-edit","type":"label"}]},{"id":"_help_9sRHySam5fXb","title":"Workspaces","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces"},{"name":"iconClass","value":"bx bx-door-open","type":"label"}]},{"id":"_help_xWtq5NUHOwql","title":"Similar Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes"},{"name":"iconClass","value":"bx bx-bar-chart","type":"label"}]},{"id":"_help_McngOG2jbUWX","title":"Search in note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]}]},{"id":"_help_A9Oc6YKKc65v","title":"Keyboard Shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_Wy267RK4M69c","title":"Themes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes"},{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_VbjZvtUek0Ln","title":"Theme Gallery","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]},{"id":"_help_gOKqSJgXLcIj","title":"Icon Packs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_mHbBMPDPkVV5","title":"Import & Export","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export"},{"name":"iconClass","value":"bx bx-import","type":"label"}],"children":[{"id":"_help_Oau6X9rCuegd","title":"Markdown","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}],"children":[{"id":"_help_rJ9grSgoExl9","title":"Supported syntax","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown/Supported syntax"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]}]},{"id":"_help_syuSEKf2rUGr","title":"Evernote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}],"children":[{"id":"_help_dj3j8dG4th4l","title":"Process internal links by title","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_GnhlmrATVqcH","title":"OneNote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/OneNote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}]}]},{"id":"_help_rC3pL2aptaRE","title":"Zen mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Zen mode"},{"name":"iconClass","value":"bx bxs-yin-yang","type":"label"}]}]},{"id":"_help_s3YCWHBfmYuM","title":"Quick Start","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Quick Start"},{"name":"iconClass","value":"bx bx-run","type":"label"}]},{"id":"_help_i6dbnitykE5D","title":"FAQ","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/FAQ"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_KSZ04uQ2D1St","title":"Note Types","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types"},{"name":"iconClass","value":"bx bx-edit","type":"label"}],"children":[{"id":"_help_iPIMuisry3hd","title":"Text","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text"},{"name":"iconClass","value":"bx bx-note","type":"label"}],"children":[{"id":"_help_NwBbFdNZ9h7O","title":"Block quotes & admonitions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Block quotes & admonitions"},{"name":"iconClass","value":"bx bx-info-circle","type":"label"}]},{"id":"_help_oSuaNgyyKnhu","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmark","type":"label"}]},{"id":"_help_veGu4faJErEM","title":"Content language & Right-to-left support","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Content language & Right-to-le"},{"name":"iconClass","value":"bx bx-align-right","type":"label"}]},{"id":"_help_2x0ZAX9ePtzV","title":"Cut to subnote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Cut to subnote"},{"name":"iconClass","value":"bx bx-cut","type":"label"}]},{"id":"_help_UYuUB1ZekNQU","title":"Developer-specific formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_QxEyIjRBizuC","title":"Code blocks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting/Code blocks"},{"name":"iconClass","value":"bx bx-code","type":"label"}]}]},{"id":"_help_AgjCISero73a","title":"Footnotes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Footnotes"},{"name":"iconClass","value":"bx bx-bracket","type":"label"}]},{"id":"_help_nRhnJkTT8cPs","title":"Formatting toolbar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Formatting toolbar"},{"name":"iconClass","value":"bx bx-text","type":"label"}]},{"id":"_help_Gr6xFaF6ioJ5","title":"General formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/General formatting"},{"name":"iconClass","value":"bx bx-bold","type":"label"}]},{"id":"_help_AxshuNRegLAv","title":"Highlights list","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Highlights list"},{"name":"iconClass","value":"bx bx-highlight","type":"label"}]},{"id":"_help_mT0HEkOsz6i1","title":"Images","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images"},{"name":"iconClass","value":"bx bx-image-alt","type":"label"}],"children":[{"id":"_help_0Ofbk1aSuVRu","title":"Image references","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images/Image references"},{"name":"iconClass","value":"bx bxs-file-image","type":"label"}]}]},{"id":"_help_nBAXQFj20hS1","title":"Include Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Include Note"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_CohkqWQC1iBv","title":"Insert buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Insert buttons"},{"name":"iconClass","value":"bx bx-plus","type":"label"}]},{"id":"_help_oiVPnW8QfnvS","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_QEAPj01N5f7w","title":"Links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links"},{"name":"iconClass","value":"bx bx-link-alt","type":"label"}],"children":[{"id":"_help_3IDVtesTQ8ds","title":"External links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/External links"},{"name":"iconClass","value":"bx bx-link-external","type":"label"}]},{"id":"_help_hrZ1D00cLbal","title":"Internal (reference) links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/Internal (reference) links"},{"name":"iconClass","value":"bx bx-link","type":"label"}]}]},{"id":"_help_S6Xx8QIWTV66","title":"Lists","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Lists"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]},{"id":"_help_QrtTYPmdd1qq","title":"Markdown-like formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Markdown-like formatting"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}]},{"id":"_help_YfYAtQBcfo5V","title":"Math Equations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Math Equations"},{"name":"iconClass","value":"bx bx-math","type":"label"}]},{"id":"_help_dEHYtoWWi8ct","title":"Other features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Other features"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_gLt3vA97tMcp","title":"Premium features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features"},{"name":"iconClass","value":"bx bx-star","type":"label"}],"children":[{"id":"_help_ZlN4nump6EbW","title":"Slash Commands","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Slash Commands"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_pwc194wlRzcH","title":"Text Snippets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Text Snippets"},{"name":"iconClass","value":"bx bx-align-left","type":"label"}]},{"id":"_help_5wZallV2Qo1t","title":"Format Painter","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Format Painter"},{"name":"iconClass","value":"bx bxs-paint-roll","type":"label"}]}]},{"id":"_help_BFvAtE74rbP6","title":"Table of contents","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Table of contents"},{"name":"iconClass","value":"bx bx-heading","type":"label"}]},{"id":"_help_NdowYOC1GFKS","title":"Tables","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Tables"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_6f9hih2hXXZk","title":"Code","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Code"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_m523cpzocqaD","title":"Saved Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Saved Search"},{"name":"iconClass","value":"bx bx-file-find","type":"label"}]},{"id":"_help_iRwzGnHPzonm","title":"Relation Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Relation Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_bdUJEHsAPYQR","title":"Note Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Note Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_HcABDtFCkbFN","title":"Render Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Render Note"},{"name":"iconClass","value":"bx bx-extension","type":"label"}]},{"id":"_help_s1aBHPd79XYj","title":"Mermaid Diagrams","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams"},{"name":"iconClass","value":"bx bx-selection","type":"label"}],"children":[{"id":"_help_RH6yLjjWJHof","title":"ELK layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_WWgeUaBb7UfC","title":"Syntax reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://mermaid.js.org/intro/syntax-reference.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_grjYqerjn243","title":"Canvas","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Canvas"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_1vHRoWCEjj0L","title":"Web View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Web View"},{"name":"iconClass","value":"bx bx-globe-alt","type":"label"}]},{"id":"_help_gBbsAeiuUxI5","title":"Mind Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mind Map"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_W8vYD3Q1zjCR","title":"File","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File"},{"name":"iconClass","value":"bx bx-file-blank","type":"label"}],"children":[{"id":"_help_XJGJrpu7F9sh","title":"PDFs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File/PDFs"},{"name":"iconClass","value":"bx bxs-file-pdf","type":"label"}]}]}]},{"id":"_help_GTwFsgaA0lCt","title":"Collections","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections"},{"name":"iconClass","value":"bx bx-book","type":"label"}],"children":[{"id":"_help_xWbu3jpNWapp","title":"Calendar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Calendar"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_2FvYrpmOXm29","title":"Table","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Table"},{"name":"iconClass","value":"bx bx-table","type":"label"}]},{"id":"_help_CtBQqbwXDx1w","title":"Kanban Board","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Kanban Board"},{"name":"iconClass","value":"bx bx-columns","type":"label"}]},{"id":"_help_81SGnPGMk7Xc","title":"Geo Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Geo Map"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]},{"id":"_help_zP3PMqaG71Ct","title":"Presentation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Presentation"},{"name":"iconClass","value":"bx bx-slideshow","type":"label"}]},{"id":"_help_8QqnMzx393bx","title":"Grid View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Grid View"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_mULW0Q3VojwY","title":"List View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/List View"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]}]},{"id":"_help_BgmBlOIl72jZ","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting"},{"name":"iconClass","value":"bx bx-bug","type":"label"}],"children":[{"id":"_help_wy8So3yZZlH9","title":"Reporting issues","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Reporting issues"},{"name":"iconClass","value":"bx bx-bug-alt","type":"label"}]},{"id":"_help_x59R8J8KV5Bp","title":"Anonymized Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Anonymized Database"},{"name":"iconClass","value":"bx bx-low-vision","type":"label"}]},{"id":"_help_qzNzp9LYQyPT","title":"Error logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs"},{"name":"iconClass","value":"bx bx-comment-error","type":"label"}],"children":[{"id":"_help_bnyigUA2UK7s","title":"Backend (server) logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Backend (server) logs"},{"name":"iconClass","value":"bx bx-server","type":"label"}]},{"id":"_help_9yEHzMyFirZR","title":"Frontend logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Frontend logs"},{"name":"iconClass","value":"bx bx-window-alt","type":"label"}]}]},{"id":"_help_vdlYGAcpXAgc","title":"Synchronization fails with 504 Gateway Timeout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Synchronization fails with 504"},{"name":"iconClass","value":"bx bx-error","type":"label"}]},{"id":"_help_s8alTXmpFR61","title":"Refreshing the application","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Refreshing the application"},{"name":"iconClass","value":"bx bx-refresh","type":"label"}]}]},{"id":"_help_pKK96zzmvBGf","title":"Theme development","type":"book","attributes":[{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_7NfNr5pZpVKV","title":"Creating a custom theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating a custom theme"},{"name":"iconClass","value":"bx bxs-color","type":"label"}]},{"id":"_help_WFGzWeUK6arS","title":"Customize the Next theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Customize the Next theme"},{"name":"iconClass","value":"bx bx-news","type":"label"}]},{"id":"_help_WN5z4M8ASACJ","title":"Reference","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Reference"},{"name":"iconClass","value":"bx bx-book-open","type":"label"}]},{"id":"_help_AlhDUqhENtH7","title":"Custom app-wide CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Custom app-wide CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]},{"id":"_help_g1mlRoU8CsqC","title":"Creating an icon pack","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating an icon pack"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_tC7s2alapj8V","title":"Advanced Usage","type":"book","attributes":[{"name":"iconClass","value":"bx bx-rocket","type":"label"}],"children":[{"id":"_help_zEY4DaJG4YT5","title":"Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes"},{"name":"iconClass","value":"bx bx-list-check","type":"label"}],"children":[{"id":"_help_HI6GBBIduIgv","title":"Labels","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Labels"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_Cq5X6iKQop6R","title":"Relations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Relations"},{"name":"iconClass","value":"bx bx-transfer","type":"label"}]},{"id":"_help_bwZpz2ajCEwO","title":"Attribute Inheritance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_OFXdgB2nNk1F","title":"Promoted Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_KC1HB96bqqHX","title":"Templates","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Templates"},{"name":"iconClass","value":"bx bx-copy","type":"label"}]},{"id":"_help_BCkXAVs63Ttv","title":"Note Map (Link map, Tree map)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map)"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_R9pX4DGra2Vt","title":"Sharing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing"},{"name":"iconClass","value":"bx bx-share-alt","type":"label"}],"children":[{"id":"_help_Qjt68inQ2bRj","title":"Serving directly the content of a note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_ycBFjKrrwE9p","title":"Exporting static HTML for web publishing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Exporting static HTML for web "},{"name":"iconClass","value":"bx bxs-file-html","type":"label"}]},{"id":"_help_sLIJ6f1dkJYW","title":"Reverse proxy configuration","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration"},{"name":"iconClass","value":"bx bx-world","type":"label"}]}]},{"id":"_help_5668rwcirq1t","title":"Advanced Showcases","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_l0tKav7yLHGF","title":"Day Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_R7abl2fc6Mxi","title":"Weight Tracker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker"},{"name":"iconClass","value":"bx bx-line-chart","type":"label"}]},{"id":"_help_xYjQUYhpbUEW","title":"Task Manager","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager"},{"name":"iconClass","value":"bx bx-calendar-check","type":"label"}]}]},{"id":"_help_J5Ex1ZrMbyJ6","title":"Custom Request Handler","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Request Handler"},{"name":"iconClass","value":"bx bx-globe","type":"label"}]},{"id":"_help_d3fAXQ2diepH","title":"Custom Resource Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Resource Providers"},{"name":"iconClass","value":"bx bxs-file-plus","type":"label"}]},{"id":"_help_pgxEVkzLl1OP","title":"ETAPI (REST API)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/ETAPI (REST API)"},{"name":"iconClass","value":"bx bx-extension","type":"label"}],"children":[{"id":"_help_9qPsTWBorUhQ","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/etapi/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_47ZrP6FNuoG8","title":"Default Note Title","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Default Note Title"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_wX4HbRucYSDD","title":"Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database"},{"name":"iconClass","value":"bx bx-data","type":"label"}],"children":[{"id":"_help_oyIAJ9PvvwHX","title":"Manually altering the database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database"},{"name":"iconClass","value":"bx bxs-edit","type":"label"}],"children":[{"id":"_help_YKWqdJhzi2VY","title":"SQL Console","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console"},{"name":"iconClass","value":"bx bx-data","type":"label"}]}]},{"id":"_help_6tZeKvSHEUiB","title":"Demo Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Demo Notes"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_Gzjqa934BdH4","title":"Configuration (config.ini or environment variables)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or e"},{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_c5xB8m4g2IY6","title":"Trilium instance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance"},{"name":"iconClass","value":"bx bx-windows","type":"label"}]},{"id":"_help_LWtBjFej3wX3","title":"Cross-Origin Resource Sharing (CORS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Cross-Origin Resource Sharing "},{"name":"iconClass","value":"bx bx-lock","type":"label"}]}]},{"id":"_help_ivYnonVFBxbQ","title":"Bulk Actions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Bulk Actions"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_4FahAwuGTAwC","title":"Note source","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note source"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_1YeN2MzFUluU","title":"Technologies used","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}],"children":[{"id":"_help_MI26XDLSAlCD","title":"CKEditor","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/CKEditor"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_N4IDkixaDG9C","title":"MindElixir","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/MindElixir"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_H0mM1lTxF9JI","title":"Excalidraw","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_MQHyy2dIFgxS","title":"Leaflet","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Leaflet"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]}]},{"id":"_help_m1lbrzyKDaRB","title":"Note ID","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note ID"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_0vTSyvhPTAOz","title":"Internal API","type":"book","attributes":[{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_z8O2VG4ZZJD7","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/internal/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_2mUhVmZK8RF3","title":"Hidden Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Hidden Notes"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]},{"id":"_help_uYF7pmepw27K","title":"Metrics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Metrics"},{"name":"iconClass","value":"bx bxs-data","type":"label"}],"children":[{"id":"_help_bOP3TB56fL1V","title":"grafana-dashboard.json","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_64ZTlUPgEPtW","title":"Safe mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Safe mode"},{"name":"iconClass","value":"bx bxs-virus-block","type":"label"}]},{"id":"_help_HAIOFBoYIIdO","title":"Nightly release","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Nightly release"},{"name":"iconClass","value":"bx bx-moon","type":"label"}]},{"id":"_help_ZmT9ln8XJX2o","title":"Read-only database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Read-only database"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_GBBMSlVSOIGP","title":"AI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI"},{"name":"iconClass","value":"bx bx-bot","type":"label"}],"children":[{"id":"_help_WkM7gsEUyCXs","title":"Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers"},{"name":"iconClass","value":"bx bx-select-multiple","type":"label"}],"children":[{"id":"_help_7EdTxPADv95W","title":"Ollama","type":"book","attributes":[{"name":"iconClass","value":"bx bx-message-dots","type":"label"}],"children":[{"id":"_help_vvUCN7FDkq7G","title":"Installing Ollama","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Ollama/Installing Ollama"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ZavFigBX9AwP","title":"OpenAI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/OpenAI"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]},{"id":"_help_e0lkirXEiSNc","title":"Anthropic","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Anthropic"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]}]}]},{"id":"_help_CdNpE2pqjmI6","title":"Scripting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting"},{"name":"iconClass","value":"bx bxs-file-js","type":"label"}],"children":[{"id":"_help_yIhgI5H7A2Sm","title":"Frontend Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics"},{"name":"iconClass","value":"bx bx-window","type":"label"}],"children":[{"id":"_help_MgibgPcfeuGz","title":"Custom Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets"},{"name":"iconClass","value":"bx bxs-widget","type":"label"}],"children":[{"id":"_help_SynTBQiBsdYJ","title":"Widget Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GhurYZjh8e1V","title":"Note context aware widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_M8IppdwVHSjG","title":"Right pane widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_YNxAqkI5Kg1M","title":"Word count widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Word count widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_VqGQnnPGnqAU","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gMkgcLJ6jBkg","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_es8OU2GuguFU","title":"Examples","type":"book","attributes":[{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_TjLYAo3JMO8X","title":"\"New Task\" launcher button","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/New Task launcher button"},{"name":"iconClass","value":"bx bx-task","type":"label"}]},{"id":"_help_7kZPMD0uFwkH","title":"Downloading responses from Google Forms","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Downloading responses from Goo"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_DL92EjAaXT26","title":"Using promoted attributes to configure scripts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Using promoted attributes to c"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_4Gn3psZKsfSm","title":"Launch Bar Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets"},{"name":"iconClass","value":"bx bx-dock-left","type":"label"}],"children":[{"id":"_help_IPArqVfDQ4We","title":"Note Title Widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gcI7RPbaNSh3","title":"Analog Watch","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_KLsqhjaqh1QW","title":"Preact","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact"},{"name":"iconClass","value":"bx bxl-react","type":"label"}],"children":[{"id":"_help_Bqde6BvPo05g","title":"Component libraries","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Component libraries"},{"name":"iconClass","value":"bx bxs-component","type":"label"}]},{"id":"_help_ykYtbM9k3a7B","title":"Hooks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Hooks"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_Sg9GrCtyftZf","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]},{"id":"_help_RSssb9S3xgSr","title":"Built-in components","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_i9B4IW7b6V6z","title":"Widget showcase","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]}]},{"id":"_help_SPirpZypehBG","title":"Backend scripts","type":"book","attributes":[{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_fZ2IGYFXjkEy","title":"Server-side imports","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Server-side imports"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GPERMystNGTB","title":"Events","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Events"},{"name":"iconClass","value":"bx bx-rss","type":"label"}]}]},{"id":"_help_wqXwKJl6VpNk","title":"Common concepts","type":"book","attributes":[{"name":"iconClass","value":"bx bxl-nodejs","type":"label"}],"children":[{"id":"_help_hA834UaHhSNn","title":"Script bundles","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Common concepts/Script bundles"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_GLks18SNjxmC","title":"Script API","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API"},{"name":"iconClass","value":"bx bx-code-curly","type":"label"}],"children":[{"id":"_help_Q2z6av6JZVWm","title":"Frontend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend"},{"name":"iconClass","value":"bx bx-folder","type":"label"}],"enforceAttributes":true,"children":[{"id":"_help_habiZ3HU8Kw8","title":"FNote","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend/interfaces/FNote.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_MEtfsqa5VwNi","title":"Backend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/backend"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true},{"id":"_help_ApVHZ8JY5ofC","title":"Day.js","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API/Day.js"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]}]},{"id":"_help_vElnKeDNPSVl","title":"Logging","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Logging"},{"name":"iconClass","value":"bx bx-terminal","type":"label"}]}]},{"id":"_help_Fm0j45KqyHpU","title":"Miscellaneous","type":"book","attributes":[{"name":"iconClass","value":"bx bx-info-circle","type":"label"}],"children":[{"id":"_help_WFbFXrgnDyyU","title":"Privacy Policy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Privacy Policy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_NcsmUYZRWEW4","title":"Patterns of personal knowledge","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Patterns of personal knowledge"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}] \ No newline at end of file +[{"id":"_help_BOCnjTMBCoxW","title":"Feature Highlights","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Feature Highlights"},{"name":"iconClass","value":"bx bx-star","type":"label"}]},{"id":"_help_Otzi9La2YAUX","title":"Installation & Setup","type":"book","attributes":[{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_poXkQfguuA0U","title":"Desktop Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation"},{"name":"iconClass","value":"bx bx-desktop","type":"label"}],"children":[{"id":"_help_nRqcgfTb97uV","title":"Using the desktop application as a server","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application "},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_Rp0q8bSP6Ayl","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Nix flake"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]}]},{"id":"_help_WOcw2SLH6tbX","title":"Server Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation"},{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_Dgg7bR3b6K9j","title":"1. Installing the server","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_3tW6mORuTHnB","title":"Packaged version for Linux","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_rWX5eY045zbE","title":"Using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker"},{"name":"iconClass","value":"bx bxl-docker","type":"label"}]},{"id":"_help_moVgBcoxE3EK","title":"On NixOS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/On NixOS"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_J1Bb6lVlwU5T","title":"Manually","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]},{"id":"_help_DCmT6e7clMoP","title":"Using Kubernetes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Kubernetes"},{"name":"iconClass","value":"bx bxl-kubernetes","type":"label"}]},{"id":"_help_klCWNks3ReaQ","title":"Multiple server instances","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Multiple server instances"},{"name":"iconClass","value":"bx bxs-user-account","type":"label"}]}]},{"id":"_help_vcjrb3VVYPZI","title":"2. Reverse proxy","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_ud6MShXL4WpO","title":"Nginx","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_fDLvzOx29Pfg","title":"Apache using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache using Docker"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_LLzSMXACKhUs","title":"Trusted proxy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Trusted proxy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_5ERVJb9s4FRD","title":"Traefik","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_l2VkvOwUNfZj","title":"HTTPS (TLS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/HTTPS (TLS)"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_0hzsNCP31IAB","title":"Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Authentication"},{"name":"iconClass","value":"bx bx-user","type":"label"}]},{"id":"_help_7DAiwaf8Z7Rz","title":"Multi-Factor Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication"},{"name":"iconClass","value":"bx bx-stopwatch","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Nix flake.clone"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_yeEaYqosGLSh","title":"Third-party cloud hosting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting"},{"name":"iconClass","value":"bx bx-cloud","type":"label"}]},{"id":"_help_iGTnKjubbXkA","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]}]},{"id":"_help_cbkrhQjrkKrh","title":"Synchronization","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Synchronization"},{"name":"iconClass","value":"bx bx-sync","type":"label"}]},{"id":"_help_RDslemsQ6gCp","title":"Mobile Frontend","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Mobile Frontend"},{"name":"iconClass","value":"bx bx-mobile-alt","type":"label"}]},{"id":"_help_MtPxeAWVAzMg","title":"Web Clipper","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Web Clipper"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_n1lujUxCwipy","title":"Upgrading TriliumNext","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Upgrading TriliumNext"},{"name":"iconClass","value":"bx bx-up-arrow-alt","type":"label"}]},{"id":"_help_ODY7qQn5m2FT","title":"Backup","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Backup"},{"name":"iconClass","value":"bx bx-hdd","type":"label"}]},{"id":"_help_tAassRL4RSQL","title":"Data directory","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Data directory"},{"name":"iconClass","value":"bx bx-folder-open","type":"label"}]}]},{"id":"_help_gh7bpGYxajRS","title":"Basic Concepts and Features","type":"book","attributes":[{"name":"iconClass","value":"bx bx-help-circle","type":"label"}],"children":[{"id":"_help_Vc8PjrjAGuOp","title":"UI Elements","type":"book","attributes":[{"name":"iconClass","value":"bx bx-window-alt","type":"label"}],"children":[{"id":"_help_x0JgW8UqGXvq","title":"Vertical and horizontal layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout"},{"name":"iconClass","value":"bx bxs-layout","type":"label"}]},{"id":"_help_x3i7MxGccDuM","title":"Global menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Global menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_oPVyFC7WL2Lp","title":"Note Tree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree"},{"name":"iconClass","value":"bx bxs-tree-alt","type":"label"}],"children":[{"id":"_help_YtSN43OrfzaA","title":"Note tree contextual menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_yTjUdsOi4CIE","title":"Multiple selection","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_DvdZhoQZY9Yd","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_wyaGBBQrl4i3","title":"Hiding the subtree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Hiding the subtree"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]}]},{"id":"_help_BlN9DFI679QC","title":"Ribbon","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon"},{"name":"iconClass","value":"bx bx-dots-horizontal","type":"label"}]},{"id":"_help_3seOhtN8uLIY","title":"Tabs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs"},{"name":"iconClass","value":"bx bx-dock-top","type":"label"}]},{"id":"_help_xYmIYSP6wE3F","title":"Launch Bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar"},{"name":"iconClass","value":"bx bx-sidebar","type":"label"}]},{"id":"_help_8YBEPzcpUgxw","title":"Note buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note buttons"},{"name":"iconClass","value":"bx bx-dots-vertical-rounded","type":"label"}]},{"id":"_help_4TIF1oA4VQRO","title":"Options","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Options"},{"name":"iconClass","value":"bx bx-cog","type":"label"}]},{"id":"_help_luNhaphA37EO","title":"Split View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View"},{"name":"iconClass","value":"bx bx-dock-right","type":"label"}]},{"id":"_help_XpOYSgsLkTJy","title":"Floating buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons"},{"name":"iconClass","value":"bx bx-rectangle","type":"label"}]},{"id":"_help_RnaPdbciOfeq","title":"Right Sidebar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar"},{"name":"iconClass","value":"bx bxs-dock-right","type":"label"}]},{"id":"_help_r5JGHN99bVKn","title":"Recent Changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_ny318J39E5Z0","title":"Zoom","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom"},{"name":"iconClass","value":"bx bx-zoom-in","type":"label"}]},{"id":"_help_lgKX7r3aL30x","title":"Note Tooltip","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip"},{"name":"iconClass","value":"bx bx-message-detail","type":"label"}]},{"id":"_help_IjZS7iK5EXtb","title":"New Layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout"},{"name":"iconClass","value":"bx bx-layout","type":"label"}],"children":[{"id":"_help_I6p2a06hdnL6","title":"Breadcrumb","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb"},{"name":"iconClass","value":"bx bx-chevron-right","type":"label"}]},{"id":"_help_AlJ73vBCjWDw","title":"Status bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar"},{"name":"iconClass","value":"bx bx-dock-bottom","type":"label"}]}]}]},{"id":"_help_BFs8mudNFgCS","title":"Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes"},{"name":"iconClass","value":"bx bx-notepad","type":"label"}],"children":[{"id":"_help_p9kXRFAkwN4o","title":"Note Icons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_0vhv7lsOLy82","title":"Attachments","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Attachments"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_IakOLONlIfGI","title":"Cloning Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes"},{"name":"iconClass","value":"bx bx-duplicate","type":"label"}],"children":[{"id":"_help_TBwsyfadTA18","title":"Branch prefix","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix"},{"name":"iconClass","value":"bx bx-rename","type":"label"}]}]},{"id":"_help_bwg0e8ewQMak","title":"Protected Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_MKmLg5x6xkor","title":"Archived Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes"},{"name":"iconClass","value":"bx bx-box","type":"label"}]},{"id":"_help_vZWERwf8U3nx","title":"Note Revisions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_aGlEvb9hyDhS","title":"Sorting Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes"},{"name":"iconClass","value":"bx bx-sort-up","type":"label"}]},{"id":"_help_NRnIZmSMc5sj","title":"Printing & Exporting as PDF","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF"},{"name":"iconClass","value":"bx bx-printer","type":"label"}]},{"id":"_help_CoFPLs3dRlXc","title":"Read-Only Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_0ESUbbAxVnoK","title":"Note List","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]}]},{"id":"_help_wArbEsdSae6g","title":"Navigation","type":"book","attributes":[{"name":"iconClass","value":"bx bx-navigation","type":"label"}],"children":[{"id":"_help_kBrnXNG3Hplm","title":"Tree Concepts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Tree Concepts"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}]},{"id":"_help_MMiBEQljMQh2","title":"Note Navigation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation"},{"name":"iconClass","value":"bx bxs-navigation","type":"label"}]},{"id":"_help_Ms1nauBra7gq","title":"Quick search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_F1r9QtzQLZqm","title":"Jump to...","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to"},{"name":"iconClass","value":"bx bx-send","type":"label"}]},{"id":"_help_eIg8jdvaoNNd","title":"Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_u3YFHC9tQlpm","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmarks","type":"label"}]},{"id":"_help_OR8WJ7Iz9K4U","title":"Note Hoisting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting"},{"name":"iconClass","value":"bx bxs-chevrons-up","type":"label"}]},{"id":"_help_ZjLYv08Rp3qC","title":"Quick edit","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick edit"},{"name":"iconClass","value":"bx bx-edit","type":"label"}]},{"id":"_help_9sRHySam5fXb","title":"Workspaces","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces"},{"name":"iconClass","value":"bx bx-door-open","type":"label"}]},{"id":"_help_xWtq5NUHOwql","title":"Similar Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes"},{"name":"iconClass","value":"bx bx-bar-chart","type":"label"}]},{"id":"_help_McngOG2jbUWX","title":"Search in note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]}]},{"id":"_help_A9Oc6YKKc65v","title":"Keyboard Shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_Wy267RK4M69c","title":"Themes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes"},{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_VbjZvtUek0Ln","title":"Theme Gallery","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]},{"id":"_help_gOKqSJgXLcIj","title":"Icon Packs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_mHbBMPDPkVV5","title":"Import & Export","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export"},{"name":"iconClass","value":"bx bx-import","type":"label"}],"children":[{"id":"_help_Oau6X9rCuegd","title":"Markdown","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}],"children":[{"id":"_help_rJ9grSgoExl9","title":"Supported syntax","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown/Supported syntax"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]}]},{"id":"_help_syuSEKf2rUGr","title":"Evernote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}],"children":[{"id":"_help_dj3j8dG4th4l","title":"Process internal links by title","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_GnhlmrATVqcH","title":"OneNote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/OneNote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}]}]},{"id":"_help_rC3pL2aptaRE","title":"Zen mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Zen mode"},{"name":"iconClass","value":"bx bxs-yin-yang","type":"label"}]}]},{"id":"_help_s3YCWHBfmYuM","title":"Quick Start","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Quick Start"},{"name":"iconClass","value":"bx bx-run","type":"label"}]},{"id":"_help_i6dbnitykE5D","title":"FAQ","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/FAQ"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_KSZ04uQ2D1St","title":"Note Types","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types"},{"name":"iconClass","value":"bx bx-edit","type":"label"}],"children":[{"id":"_help_iPIMuisry3hd","title":"Text","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text"},{"name":"iconClass","value":"bx bx-note","type":"label"}],"children":[{"id":"_help_NwBbFdNZ9h7O","title":"Block quotes & admonitions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Block quotes & admonitions"},{"name":"iconClass","value":"bx bx-info-circle","type":"label"}]},{"id":"_help_oSuaNgyyKnhu","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmark","type":"label"}]},{"id":"_help_veGu4faJErEM","title":"Content language & Right-to-left support","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Content language & Right-to-le"},{"name":"iconClass","value":"bx bx-align-right","type":"label"}]},{"id":"_help_2x0ZAX9ePtzV","title":"Cut to subnote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Cut to subnote"},{"name":"iconClass","value":"bx bx-cut","type":"label"}]},{"id":"_help_UYuUB1ZekNQU","title":"Developer-specific formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_QxEyIjRBizuC","title":"Code blocks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting/Code blocks"},{"name":"iconClass","value":"bx bx-code","type":"label"}]}]},{"id":"_help_AgjCISero73a","title":"Footnotes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Footnotes"},{"name":"iconClass","value":"bx bx-bracket","type":"label"}]},{"id":"_help_nRhnJkTT8cPs","title":"Formatting toolbar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Formatting toolbar"},{"name":"iconClass","value":"bx bx-text","type":"label"}]},{"id":"_help_Gr6xFaF6ioJ5","title":"General formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/General formatting"},{"name":"iconClass","value":"bx bx-bold","type":"label"}]},{"id":"_help_AxshuNRegLAv","title":"Highlights list","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Highlights list"},{"name":"iconClass","value":"bx bx-highlight","type":"label"}]},{"id":"_help_mT0HEkOsz6i1","title":"Images","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images"},{"name":"iconClass","value":"bx bx-image-alt","type":"label"}],"children":[{"id":"_help_0Ofbk1aSuVRu","title":"Image references","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images/Image references"},{"name":"iconClass","value":"bx bxs-file-image","type":"label"}]}]},{"id":"_help_nBAXQFj20hS1","title":"Include Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Include Note"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_CohkqWQC1iBv","title":"Insert buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Insert buttons"},{"name":"iconClass","value":"bx bx-plus","type":"label"}]},{"id":"_help_oiVPnW8QfnvS","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_QEAPj01N5f7w","title":"Links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links"},{"name":"iconClass","value":"bx bx-link-alt","type":"label"}],"children":[{"id":"_help_3IDVtesTQ8ds","title":"External links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/External links"},{"name":"iconClass","value":"bx bx-link-external","type":"label"}]},{"id":"_help_hrZ1D00cLbal","title":"Internal (reference) links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/Internal (reference) links"},{"name":"iconClass","value":"bx bx-link","type":"label"}]}]},{"id":"_help_S6Xx8QIWTV66","title":"Lists","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Lists"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]},{"id":"_help_QrtTYPmdd1qq","title":"Markdown-like formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Markdown-like formatting"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}]},{"id":"_help_YfYAtQBcfo5V","title":"Math Equations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Math Equations"},{"name":"iconClass","value":"bx bx-math","type":"label"}]},{"id":"_help_dEHYtoWWi8ct","title":"Other features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Other features"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_gLt3vA97tMcp","title":"Premium features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features"},{"name":"iconClass","value":"bx bx-star","type":"label"}],"children":[{"id":"_help_ZlN4nump6EbW","title":"Slash Commands","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Slash Commands"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_pwc194wlRzcH","title":"Text Snippets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Text Snippets"},{"name":"iconClass","value":"bx bx-align-left","type":"label"}]},{"id":"_help_5wZallV2Qo1t","title":"Format Painter","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Format Painter"},{"name":"iconClass","value":"bx bxs-paint-roll","type":"label"}]}]},{"id":"_help_BFvAtE74rbP6","title":"Table of contents","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Table of contents"},{"name":"iconClass","value":"bx bx-heading","type":"label"}]},{"id":"_help_NdowYOC1GFKS","title":"Tables","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Tables"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_6f9hih2hXXZk","title":"Code","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Code"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_m523cpzocqaD","title":"Saved Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Saved Search"},{"name":"iconClass","value":"bx bx-file-find","type":"label"}]},{"id":"_help_iRwzGnHPzonm","title":"Relation Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Relation Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_bdUJEHsAPYQR","title":"Note Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Note Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_HcABDtFCkbFN","title":"Render Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Render Note"},{"name":"iconClass","value":"bx bx-extension","type":"label"}]},{"id":"_help_s1aBHPd79XYj","title":"Mermaid Diagrams","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams"},{"name":"iconClass","value":"bx bx-selection","type":"label"}],"children":[{"id":"_help_RH6yLjjWJHof","title":"ELK layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_WWgeUaBb7UfC","title":"Syntax reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://mermaid.js.org/intro/syntax-reference.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_grjYqerjn243","title":"Canvas","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Canvas"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_1vHRoWCEjj0L","title":"Web View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Web View"},{"name":"iconClass","value":"bx bx-globe-alt","type":"label"}]},{"id":"_help_gBbsAeiuUxI5","title":"Mind Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mind Map"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_W8vYD3Q1zjCR","title":"File","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File"},{"name":"iconClass","value":"bx bx-file-blank","type":"label"}],"children":[{"id":"_help_XJGJrpu7F9sh","title":"PDFs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File/PDFs"},{"name":"iconClass","value":"bx bxs-file-pdf","type":"label"}]}]}]},{"id":"_help_GTwFsgaA0lCt","title":"Collections","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections"},{"name":"iconClass","value":"bx bx-book","type":"label"}],"children":[{"id":"_help_xWbu3jpNWapp","title":"Calendar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Calendar"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_2FvYrpmOXm29","title":"Table","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Table"},{"name":"iconClass","value":"bx bx-table","type":"label"}]},{"id":"_help_CtBQqbwXDx1w","title":"Kanban Board","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Kanban Board"},{"name":"iconClass","value":"bx bx-columns","type":"label"}]},{"id":"_help_81SGnPGMk7Xc","title":"Geo Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Geo Map"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]},{"id":"_help_zP3PMqaG71Ct","title":"Presentation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Presentation"},{"name":"iconClass","value":"bx bx-slideshow","type":"label"}]},{"id":"_help_8QqnMzx393bx","title":"Grid View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Grid View"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_mULW0Q3VojwY","title":"List View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/List View"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]}]},{"id":"_help_BgmBlOIl72jZ","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting"},{"name":"iconClass","value":"bx bx-bug","type":"label"}],"children":[{"id":"_help_wy8So3yZZlH9","title":"Reporting issues","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Reporting issues"},{"name":"iconClass","value":"bx bx-bug-alt","type":"label"}]},{"id":"_help_x59R8J8KV5Bp","title":"Anonymized Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Anonymized Database"},{"name":"iconClass","value":"bx bx-low-vision","type":"label"}]},{"id":"_help_qzNzp9LYQyPT","title":"Error logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs"},{"name":"iconClass","value":"bx bx-comment-error","type":"label"}],"children":[{"id":"_help_bnyigUA2UK7s","title":"Backend (server) logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Backend (server) logs"},{"name":"iconClass","value":"bx bx-server","type":"label"}]},{"id":"_help_9yEHzMyFirZR","title":"Frontend logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Frontend logs"},{"name":"iconClass","value":"bx bx-window-alt","type":"label"}]}]},{"id":"_help_vdlYGAcpXAgc","title":"Synchronization fails with 504 Gateway Timeout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Synchronization fails with 504"},{"name":"iconClass","value":"bx bx-error","type":"label"}]},{"id":"_help_s8alTXmpFR61","title":"Refreshing the application","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Refreshing the application"},{"name":"iconClass","value":"bx bx-refresh","type":"label"}]}]},{"id":"_help_pKK96zzmvBGf","title":"Theme development","type":"book","attributes":[{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_7NfNr5pZpVKV","title":"Creating a custom theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating a custom theme"},{"name":"iconClass","value":"bx bxs-color","type":"label"}]},{"id":"_help_WFGzWeUK6arS","title":"Customize the Next theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Customize the Next theme"},{"name":"iconClass","value":"bx bx-news","type":"label"}]},{"id":"_help_WN5z4M8ASACJ","title":"Reference","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Reference"},{"name":"iconClass","value":"bx bx-book-open","type":"label"}]},{"id":"_help_AlhDUqhENtH7","title":"Custom app-wide CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Custom app-wide CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]},{"id":"_help_g1mlRoU8CsqC","title":"Creating an icon pack","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating an icon pack"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_tC7s2alapj8V","title":"Advanced Usage","type":"book","attributes":[{"name":"iconClass","value":"bx bx-rocket","type":"label"}],"children":[{"id":"_help_zEY4DaJG4YT5","title":"Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes"},{"name":"iconClass","value":"bx bx-list-check","type":"label"}],"children":[{"id":"_help_HI6GBBIduIgv","title":"Labels","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Labels"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_Cq5X6iKQop6R","title":"Relations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Relations"},{"name":"iconClass","value":"bx bx-transfer","type":"label"}]},{"id":"_help_bwZpz2ajCEwO","title":"Attribute Inheritance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_OFXdgB2nNk1F","title":"Promoted Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_KC1HB96bqqHX","title":"Templates","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Templates"},{"name":"iconClass","value":"bx bx-copy","type":"label"}]},{"id":"_help_BCkXAVs63Ttv","title":"Note Map (Link map, Tree map)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map)"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_R9pX4DGra2Vt","title":"Sharing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing"},{"name":"iconClass","value":"bx bx-share-alt","type":"label"}],"children":[{"id":"_help_Qjt68inQ2bRj","title":"Serving directly the content of a note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_ycBFjKrrwE9p","title":"Exporting static HTML for web publishing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Exporting static HTML for web "},{"name":"iconClass","value":"bx bxs-file-html","type":"label"}]},{"id":"_help_sLIJ6f1dkJYW","title":"Reverse proxy configuration","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration"},{"name":"iconClass","value":"bx bx-world","type":"label"}]}]},{"id":"_help_5668rwcirq1t","title":"Advanced Showcases","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_l0tKav7yLHGF","title":"Day Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_R7abl2fc6Mxi","title":"Weight Tracker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker"},{"name":"iconClass","value":"bx bx-line-chart","type":"label"}]},{"id":"_help_xYjQUYhpbUEW","title":"Task Manager","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager"},{"name":"iconClass","value":"bx bx-calendar-check","type":"label"}]}]},{"id":"_help_J5Ex1ZrMbyJ6","title":"Custom Request Handler","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Request Handler"},{"name":"iconClass","value":"bx bx-globe","type":"label"}]},{"id":"_help_d3fAXQ2diepH","title":"Custom Resource Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Resource Providers"},{"name":"iconClass","value":"bx bxs-file-plus","type":"label"}]},{"id":"_help_pgxEVkzLl1OP","title":"ETAPI (REST API)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/ETAPI (REST API)"},{"name":"iconClass","value":"bx bx-extension","type":"label"}],"children":[{"id":"_help_9qPsTWBorUhQ","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/etapi/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_47ZrP6FNuoG8","title":"Default Note Title","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Default Note Title"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_wX4HbRucYSDD","title":"Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database"},{"name":"iconClass","value":"bx bx-data","type":"label"}],"children":[{"id":"_help_oyIAJ9PvvwHX","title":"Manually altering the database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database"},{"name":"iconClass","value":"bx bxs-edit","type":"label"}],"children":[{"id":"_help_YKWqdJhzi2VY","title":"SQL Console","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console"},{"name":"iconClass","value":"bx bx-data","type":"label"}]}]},{"id":"_help_6tZeKvSHEUiB","title":"Demo Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Demo Notes"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_Gzjqa934BdH4","title":"Configuration (config.ini or environment variables)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or e"},{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_c5xB8m4g2IY6","title":"Trilium instance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance"},{"name":"iconClass","value":"bx bx-windows","type":"label"}]},{"id":"_help_LWtBjFej3wX3","title":"Cross-Origin Resource Sharing (CORS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Cross-Origin Resource Sharing "},{"name":"iconClass","value":"bx bx-lock","type":"label"}]}]},{"id":"_help_ivYnonVFBxbQ","title":"Bulk Actions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Bulk Actions"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_4FahAwuGTAwC","title":"Note source","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note source"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_1YeN2MzFUluU","title":"Technologies used","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}],"children":[{"id":"_help_MI26XDLSAlCD","title":"CKEditor","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/CKEditor"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_N4IDkixaDG9C","title":"MindElixir","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/MindElixir"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_H0mM1lTxF9JI","title":"Excalidraw","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_MQHyy2dIFgxS","title":"Leaflet","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Leaflet"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]}]},{"id":"_help_m1lbrzyKDaRB","title":"Note ID","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note ID"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_0vTSyvhPTAOz","title":"Internal API","type":"book","attributes":[{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_z8O2VG4ZZJD7","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/internal/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_2mUhVmZK8RF3","title":"Hidden Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Hidden Notes"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]},{"id":"_help_uYF7pmepw27K","title":"Metrics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Metrics"},{"name":"iconClass","value":"bx bxs-data","type":"label"}],"children":[{"id":"_help_bOP3TB56fL1V","title":"grafana-dashboard.json","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_64ZTlUPgEPtW","title":"Safe mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Safe mode"},{"name":"iconClass","value":"bx bxs-virus-block","type":"label"}]},{"id":"_help_HAIOFBoYIIdO","title":"Nightly release","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Nightly release"},{"name":"iconClass","value":"bx bx-moon","type":"label"}]},{"id":"_help_ZmT9ln8XJX2o","title":"Read-only database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Read-only database"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_GBBMSlVSOIGP","title":"AI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI"},{"name":"iconClass","value":"bx bx-bot","type":"label"}],"children":[{"id":"_help_WkM7gsEUyCXs","title":"Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers"},{"name":"iconClass","value":"bx bx-select-multiple","type":"label"}],"children":[{"id":"_help_7EdTxPADv95W","title":"Ollama","type":"book","attributes":[{"name":"iconClass","value":"bx bx-message-dots","type":"label"}],"children":[{"id":"_help_vvUCN7FDkq7G","title":"Installing Ollama","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Ollama/Installing Ollama"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ZavFigBX9AwP","title":"OpenAI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/OpenAI"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]},{"id":"_help_e0lkirXEiSNc","title":"Anthropic","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Anthropic"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]}]}]},{"id":"_help_CdNpE2pqjmI6","title":"Scripting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting"},{"name":"iconClass","value":"bx bxs-file-js","type":"label"}],"children":[{"id":"_help_yIhgI5H7A2Sm","title":"Frontend Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics"},{"name":"iconClass","value":"bx bx-window","type":"label"}],"children":[{"id":"_help_MgibgPcfeuGz","title":"Custom Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets"},{"name":"iconClass","value":"bx bxs-widget","type":"label"}],"children":[{"id":"_help_SynTBQiBsdYJ","title":"Widget Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GhurYZjh8e1V","title":"Note context aware widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_M8IppdwVHSjG","title":"Right pane widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_YNxAqkI5Kg1M","title":"Word count widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Word count widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_VqGQnnPGnqAU","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gMkgcLJ6jBkg","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_es8OU2GuguFU","title":"Examples","type":"book","attributes":[{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_TjLYAo3JMO8X","title":"\"New Task\" launcher button","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/New Task launcher button"},{"name":"iconClass","value":"bx bx-task","type":"label"}]},{"id":"_help_7kZPMD0uFwkH","title":"Downloading responses from Google Forms","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Downloading responses from Goo"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_DL92EjAaXT26","title":"Using promoted attributes to configure scripts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Using promoted attributes to c"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_4Gn3psZKsfSm","title":"Launch Bar Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets"},{"name":"iconClass","value":"bx bx-dock-left","type":"label"}],"children":[{"id":"_help_IPArqVfDQ4We","title":"Note Title Widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gcI7RPbaNSh3","title":"Analog Watch","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_KLsqhjaqh1QW","title":"Preact","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact"},{"name":"iconClass","value":"bx bxl-react","type":"label"}],"children":[{"id":"_help_Bqde6BvPo05g","title":"Component libraries","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Component libraries"},{"name":"iconClass","value":"bx bxs-component","type":"label"}]},{"id":"_help_ykYtbM9k3a7B","title":"Hooks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Hooks"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_Sg9GrCtyftZf","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]},{"id":"_help_RSssb9S3xgSr","title":"Built-in components","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_i9B4IW7b6V6z","title":"Widget showcase","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]}]},{"id":"_help_SPirpZypehBG","title":"Backend scripts","type":"book","attributes":[{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_fZ2IGYFXjkEy","title":"Server-side imports","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Server-side imports"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GPERMystNGTB","title":"Events","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Events"},{"name":"iconClass","value":"bx bx-rss","type":"label"}]}]},{"id":"_help_wqXwKJl6VpNk","title":"Common concepts","type":"book","attributes":[{"name":"iconClass","value":"bx bxl-nodejs","type":"label"}],"children":[{"id":"_help_hA834UaHhSNn","title":"Script bundles","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Common concepts/Script bundles"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_GLks18SNjxmC","title":"Script API","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API"},{"name":"iconClass","value":"bx bx-code-curly","type":"label"}],"children":[{"id":"_help_Q2z6av6JZVWm","title":"Frontend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend"},{"name":"iconClass","value":"bx bx-folder","type":"label"}],"enforceAttributes":true,"children":[{"id":"_help_habiZ3HU8Kw8","title":"FNote","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend/interfaces/FNote.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_MEtfsqa5VwNi","title":"Backend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/backend"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true},{"id":"_help_ApVHZ8JY5ofC","title":"Day.js","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API/Day.js"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]}]},{"id":"_help_vElnKeDNPSVl","title":"Logging","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Logging"},{"name":"iconClass","value":"bx bx-terminal","type":"label"}]},{"id":"_help_cNpC0ITcfX0N","title":"Breaking changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Breaking changes"},{"name":"iconClass","value":"bx bx-up-arrow-alt","type":"label"}]}]},{"id":"_help_Fm0j45KqyHpU","title":"Miscellaneous","type":"book","attributes":[{"name":"iconClass","value":"bx bx-info-circle","type":"label"}],"children":[{"id":"_help_WFbFXrgnDyyU","title":"Privacy Policy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Privacy Policy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_NcsmUYZRWEW4","title":"Patterns of personal knowledge","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Patterns of personal knowledge"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}] \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html index 3549a96e9..0a93b3b89 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html @@ -1,5 +1,5 @@

    The SQL Console is Trilium's built-in database editor.

    -

    It can be accessed by going to the Global menu → +

    It can be accessed by going to the Global menu → Advanced → Open SQL Console.

    @@ -11,44 +11,33 @@

  • Only one SQL statement can be run at once.
  • To run the statement, press the Execute icon.
  • For queries that return a result, the data will displayed in a table.
  • -
  • For statements (e.g. INSERT, UPDATE), +
  • For statements (e.g. INSERT, UPDATE), the number of affected rows is displayed.
  • +

    Interacting with the table

    After executing a query, a table with the results will be displayed:

      -
    • -

      Clicking on a column allows sorting ascending or descending.

      -
    • -
    • -

      Underneath each column there is an input field which allows filtering - by text.

      -
    • -
    • -

      Press Ctrl+C to copy the current cell to clipboard.

      -
    • -
    • -

      Multiple cells can be selected by dragging or by holding Shift + - arrow keys

      -
    • -
    • -

      Results are paginated for performance reasons. The controls at the bottom - of the table can be used to navigate through pages.

      -
    • +
    • Clicking on a column allows sorting ascending or descending.
    • +
    • Underneath each column there is an input field which allows filtering + by text.
    • +
    • Press Ctrl+C to copy the current cell to clipboard.
    • +
    • Multiple cells can be selected by dragging or by holding Shift + + arrow keys
    • +
    • Results are paginated for performance reasons. The controls at the bottom + of the table can be used to navigate through pages.

    Saved SQL console

    SQL queries or commands can be saved into a dedicated note.

    To do so, simply write the query and press the button. Once saved, the note will appear in Day Notes.

    + href="#root/_help_l0tKav7yLHGF">Day Notes.

    The note can be locked for editing by pressing the Lock button in the note actions section near the title bar (on the New Layout, - or in the Floating buttons area - if using the old layout). When editing is locked, the SQL statement is - hidden from view.

    \ No newline at end of file + href="#root/_help_IjZS7iK5EXtb">New Layout, or in the Floating buttons area if using the old + layout). When editing is locked, the SQL statement is hidden from view.

    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Breaking changes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Breaking changes.html new file mode 100644 index 000000000..2acf6aa19 --- /dev/null +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Breaking changes.html @@ -0,0 +1,27 @@ +

    v0.102.0: Upgrade to jQuery 4.0.0

    +

    jQuery 4 removes legacy browser support (such as IE11 support), but it + also removes some APIs that are considered deprecated such as:

    +
    +

    jQuery.isArray, jQuery.parseJSON, + jQuery.trim, jQuery.type, jQuery.now, + jQuery.isNumeric, jQuery.isFunction, + jQuery.isWindow, jQuery.camelCase, + jQuery.nodeName, jQuery.cssNumber, + jQuery.cssProps, and jQuery.fx.interval.

    +

    Use native equivalents like Array.isArray(), + JSON.parse(), String.prototype.trim(), + and Date.now() instead.

    +
    +

    This may affect custom scripts if they (or the custom jQuery libraries + used) depend on the deprecated APIs.

    +

    Note that Trilium polyfills jQuery.isArray, + isFunctionand isPlainObject because + they were required by one of our dependencies (the autocomplete).

    +

    For more information, consult the official blog post.

    \ No newline at end of file diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index 35f406a73..ea5d135a2 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 6b0711f16..55cfaa0fa 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -14200,6 +14200,34 @@ "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IjZS7iK5EXtb", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 40 + }, { "type": "label", "name": "iconClass", @@ -14213,34 +14241,6 @@ "value": "sql-console", "isInheritable": false, "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "l0tKav7yLHGF", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "x3i7MxGccDuM", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IjZS7iK5EXtb", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "XpOYSgsLkTJy", - "isInheritable": false, - "position": 80 } ], "format": "markdown", @@ -17586,6 +17586,40 @@ "dataFileName": "Logging_image.png" } ] + }, + { + "isClone": false, + "noteId": "cNpC0ITcfX0N", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "cNpC0ITcfX0N" + ], + "title": "Breaking changes", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-up-arrow-alt", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "breaking-changes", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Breaking changes.md", + "attachments": [] } ] }, diff --git a/docs/User Guide/User Guide/Scripting/Breaking changes.md b/docs/User Guide/User Guide/Scripting/Breaking changes.md new file mode 100644 index 000000000..8b887aab9 --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Breaking changes.md @@ -0,0 +1,14 @@ +# Breaking changes +## v0.102.0: Upgrade to jQuery 4.0.0 + +jQuery 4 removes legacy browser support (such as IE11 support), but it also removes some APIs that are considered deprecated such as: + +> `jQuery.isArray`, `jQuery.parseJSON`, `jQuery.trim`, `jQuery.type`, `jQuery.now`, `jQuery.isNumeric`, `jQuery.isFunction`, `jQuery.isWindow`, `jQuery.camelCase`, `jQuery.nodeName`, `jQuery.cssNumber`, `jQuery.cssProps`, and `jQuery.fx.interval`. +> +> Use native equivalents like `Array.isArray()`, `JSON.parse()`, `String.prototype.trim()`, and `Date.now()` instead. + +This may affect custom scripts if they (or the custom jQuery libraries used) depend on the deprecated APIs. + +Note that Trilium polyfills `jQuery.isArray`, `isFunction` and `isPlainObject` because they were required by one of our dependencies (the autocomplete). + +For more information, consult [the official blog post](https://blog.jquery.com/2026/01/17/jquery-4-0-0/). \ No newline at end of file From e5bc416b466f5936dca24c94f8d71bde532d9c4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 01:14:50 +0000 Subject: [PATCH 089/102] chore(deps): update dependency vite-plugin-static-copy to v3.1.5 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 18 ++++++------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 1e336f6c3..1eb7e7900 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -81,6 +81,6 @@ "happy-dom": "20.3.3", "lightningcss": "1.30.2", "script-loader": "0.7.2", - "vite-plugin-static-copy": "3.1.4" + "vite-plugin-static-copy": "3.1.5" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf90c7f1e..ec0c7034a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -354,8 +354,8 @@ importers: specifier: 0.7.2 version: 0.7.2 vite-plugin-static-copy: - specifier: 3.1.4 - version: 3.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + specifier: 3.1.5 + version: 3.1.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) apps/db-compare: dependencies: @@ -10962,10 +10962,6 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} - engines: {node: '>=18'} - p-map@7.0.4: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} @@ -13864,8 +13860,8 @@ packages: vite: optional: true - vite-plugin-static-copy@3.1.4: - resolution: {integrity: sha512-iCmr4GSw4eSnaB+G8zc2f4dxSuDjbkjwpuBLLGvQYR9IW7rnDzftnUjOH5p4RYR+d4GsiBqXRvzuFhs5bnzVyw==} + vite-plugin-static-copy@3.1.5: + resolution: {integrity: sha512-9pbZn9Vb+uUNg/Tr/f2MXmGvfSfLeWjscS4zTA3v+sWqKN+AjJ/ipTFwaqdopJkNkxG5DfgYrZXD80ljbNDxbg==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -27150,8 +27146,6 @@ snapshots: dependencies: aggregate-error: 3.1.0 - p-map@7.0.3: {} - p-map@7.0.4: {} p-queue@6.6.2: @@ -30503,10 +30497,10 @@ snapshots: - rollup - supports-color - vite-plugin-static-copy@3.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-static-copy@3.1.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 - p-map: 7.0.3 + p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) From c043788b09901bfd293e04a8afc5b94e8cb73bb5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 01:15:00 +0000 Subject: [PATCH 090/102] chore(deps): update pnpm to v10.28.1 --- apps/build-docs/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json index 80cdef54f..1ab4c6bc5 100644 --- a/apps/build-docs/package.json +++ b/apps/build-docs/package.json @@ -9,7 +9,7 @@ "keywords": [], "author": "Elian Doran ", "license": "AGPL-3.0-only", - "packageManager": "pnpm@10.28.0", + "packageManager": "pnpm@10.28.1", "devDependencies": { "@redocly/cli": "2.14.5", "archiver": "7.0.1", diff --git a/package.json b/package.json index 5d046f92a..1bd68cc67 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "url": "https://github.com/TriliumNext/Trilium/issues" }, "homepage": "https://triliumnotes.org", - "packageManager": "pnpm@10.28.0", + "packageManager": "pnpm@10.28.1", "pnpm": { "patchedDependencies": { "@ckeditor/ckeditor5-mention": "patches/@ckeditor__ckeditor5-mention.patch", From dad9578b83563463851cbde9f63ef539bfda4b16 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 01:16:12 +0000 Subject: [PATCH 091/102] chore(deps): update dependency turnish to v1.8.0 --- apps/server/package.json | 2 +- pnpm-lock.yaml | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index 5c46b0c6f..3c8f26993 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -126,7 +126,7 @@ "swagger-jsdoc": "6.2.8", "time2fa": "1.4.2", "tmp": "0.2.5", - "turnish": "1.7.1", + "turnish": "1.8.0", "unescape": "1.0.1", "vite": "7.3.1", "ws": "8.19.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf90c7f1e..910de3c99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -793,8 +793,8 @@ importers: specifier: 0.2.5 version: 0.2.5 turnish: - specifier: 1.7.1 - version: 1.7.1 + specifier: 1.8.0 + version: 1.8.0 unescape: specifier: 1.0.1 version: 1.0.1 @@ -13483,8 +13483,8 @@ packages: turndown@7.2.2: resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} - turnish@1.7.1: - resolution: {integrity: sha512-NgyY7pIDABjKyg2isRgZyFPav6tOyvmqpTx3HROsKrOaE3JccP4C1P2IhAtkAZ8DkQb/O1R7HOFAkxY8uaJmcQ==} + turnish@1.8.0: + resolution: {integrity: sha512-r1K94mbU5FHwvHKsPrTejuxoQTyKrddeWNzxS53Dnu+33DJLZJzfAHmo7GhdxBvhrHYCfv/diYvpq2VCGSGa+w==} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -15311,8 +15311,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -30130,7 +30128,7 @@ snapshots: dependencies: '@mixmark-io/domino': 2.2.0 - turnish@1.7.1: + turnish@1.8.0: dependencies: '@adobe/css-tools': 4.4.4 '@mixmark-io/domino': 2.2.0 From 15396640268076766d4e81952c1c59ae8127203e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 20 Jan 2026 15:16:32 +0200 Subject: [PATCH 092/102] Revert "test(client): fix broken tests after change in shortcut behaviour" This reverts commit e33950e0009dd20c27851c6ca21961c8f9d924da. --- apps/client/src/services/shortcuts.spec.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/client/src/services/shortcuts.spec.ts b/apps/client/src/services/shortcuts.spec.ts index ed17dcd39..f2170da30 100644 --- a/apps/client/src/services/shortcuts.spec.ts +++ b/apps/client/src/services/shortcuts.spec.ts @@ -1,6 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import shortcuts, { isIMEComposing,keyMatches, matchesShortcut } from "./shortcuts.js"; +import shortcuts, { isIMEComposing, keyMatches, matchesShortcut } from "./shortcuts.js"; // Mock utils module vi.mock("./utils.js", () => ({ @@ -249,7 +249,7 @@ describe("shortcuts", () => { const handler = vi.fn(); shortcuts.bindGlobalShortcut("ctrl+a", handler, "test-namespace"); - expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); + expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); }); it("should not bind shortcuts when handler is null", () => { @@ -280,7 +280,7 @@ describe("shortcuts", () => { const handler = vi.fn(); shortcuts.bindElShortcut(mockJQueryEl, "ctrl+a", handler, "test-namespace"); - expect(mockEl.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); + expect(mockEl.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); }); it("should fall back to document when element is empty", () => { @@ -290,7 +290,7 @@ describe("shortcuts", () => { const handler = vi.fn(); shortcuts.bindElShortcut(emptyJQuery, "ctrl+a", handler, "test-namespace"); - expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); + expect(mockElement.addEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); }); }); @@ -301,7 +301,7 @@ describe("shortcuts", () => { shortcuts.removeGlobalShortcut("test-namespace"); - expect(mockElement.removeEventListener).toHaveBeenCalledWith("keydown", expect.any(Function), true); + expect(mockElement.removeEventListener).toHaveBeenCalledWith("keydown", expect.any(Function)); }); }); From f96ed0af2660b97b0c69c11595f004b7466ca409 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 20 Jan 2026 15:16:51 +0200 Subject: [PATCH 093/102] Revert "fix(shortcuts): triggering in bubbling phase, not capturing" This reverts commit 711828d6b485770e3e88ddbb0cf53fe781912bf8. --- apps/client/src/services/shortcuts.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/apps/client/src/services/shortcuts.ts b/apps/client/src/services/shortcuts.ts index 62c6b21ff..63db45302 100644 --- a/apps/client/src/services/shortcuts.ts +++ b/apps/client/src/services/shortcuts.ts @@ -110,9 +110,8 @@ function bindElShortcut($el: JQuery, keyboardShortcut: st } }; - // Add the event listener in capture phase to intercept events before they reach - // child elements like CodeMirror - element.addEventListener('keydown', listener, true); + // Add the event listener + element.addEventListener('keydown', listener); // Store the binding for later cleanup const binding: ShortcutBinding = { @@ -139,16 +138,15 @@ export function removeIndividualBinding(binding: ShortcutBinding) { if (activeBindingsInNamespace) { activeBindings.set(key, activeBindingsInNamespace.filter(aBinding => aBinding.handler === binding.handler)); } - // Remove listener with capture phase to match how it was added - binding.element.removeEventListener("keydown", binding.listener, true); + binding.element.removeEventListener("keydown", binding.listener); } function removeNamespaceBindings(namespace: string) { const bindings = activeBindings.get(namespace); if (bindings) { + // Remove all event listeners for this namespace bindings.forEach(binding => { - // Remove listener with capture phase to match how it was added - binding.element.removeEventListener('keydown', binding.listener, true); + binding.element.removeEventListener('keydown', binding.listener); }); activeBindings.delete(namespace); } From f83d95136dbbc1fc348a55b75fc37c31344c47b4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 20 Jan 2026 16:11:40 +0200 Subject: [PATCH 094/102] fix(codemirror): ctrl+enter generates newline --- packages/codemirror/src/index.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/codemirror/src/index.ts b/packages/codemirror/src/index.ts index c86d37b12..f77342455 100644 --- a/packages/codemirror/src/index.ts +++ b/packages/codemirror/src/index.ts @@ -1,5 +1,5 @@ import { defaultKeymap, history, historyKeymap } from "@codemirror/commands"; -import { EditorView, highlightActiveLine, keymap, lineNumbers, placeholder, ViewPlugin, ViewUpdate, type EditorViewConfig } from "@codemirror/view"; +import { EditorView, highlightActiveLine, keymap, lineNumbers, placeholder, ViewPlugin, ViewUpdate, type EditorViewConfig, KeyBinding } from "@codemirror/view"; import { defaultHighlightStyle, StreamLanguage, syntaxHighlighting, indentUnit, bracketMatching, foldGutter, codeFolding } from "@codemirror/language"; import { Compartment, EditorSelection, EditorState, type Extension } from "@codemirror/state"; import { highlightSelectionMatches } from "@codemirror/search"; @@ -12,6 +12,17 @@ import { createSearchHighlighter, SearchHighlighter, searchMatchHighlightTheme } export { default as ColorThemes, type ThemeDefinition, getThemeById } from "./color_themes.js"; +// Custom keymap to prevent Ctrl+Enter from inserting a newline +// This allows the parent application to handle the shortcut (e.g., for "Run Active Note") +const preventCtrlEnterKeymap: readonly KeyBinding[] = [ + { + key: "Ctrl-Enter", + mac: "Cmd-Enter", + run: () => true, // Return true to mark event as handled, preventing default newline insertion + preventDefault: true + } +]; + type ContentChangedListener = () => void; export interface EditorConfig { @@ -59,6 +70,7 @@ export default class CodeMirror extends EditorView { lineNumbers(), indentUnit.of(" ".repeat(4)), keymap.of([ + ...preventCtrlEnterKeymap, ...defaultKeymap, ...historyKeymap, ...smartIndentWithTab From 60c789b6c7ffb3e93bb21f2b83f181164b66d530 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 20 Jan 2026 16:33:46 +0200 Subject: [PATCH 095/102] fix(client): production affected by cache of index JS --- apps/client/vite.config.mts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/client/vite.config.mts b/apps/client/vite.config.mts index c5c411a33..b76595d64 100644 --- a/apps/client/vite.config.mts +++ b/apps/client/vite.config.mts @@ -93,7 +93,15 @@ export default defineConfig(() => ({ print: join(__dirname, "src", "print.tsx") }, output: { - entryFileNames: "src/[name].js", + entryFileNames: (chunk) => { + // We enforce a hash in the main index file to avoid caching issues, this only works because we have the HTML entry point. + if (chunk.name === "index") { + return "src/[name]-[hash].js"; + } + + // For EJS-rendered pages (e.g. login) we need to have a stable name. + return "src/[name].js"; + }, chunkFileNames: "src/[name]-[hash].js", assetFileNames: "src/[name]-[hash].[ext]", manualChunks: { From 798efbc22fe3740231fbe1cb6380a84c6af286c7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 01:33:18 +0000 Subject: [PATCH 096/102] chore(deps): update dependency @smithy/middleware-retry to v4.4.26 --- packages/ckeditor5/package.json | 2 +- pnpm-lock.yaml | 80 +++++++++++++++++---------------- 2 files changed, 42 insertions(+), 40 deletions(-) diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 6ccb19bf2..165787584 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -16,7 +16,7 @@ "ckeditor5-premium-features": "47.4.0" }, "devDependencies": { - "@smithy/middleware-retry": "4.4.24", + "@smithy/middleware-retry": "4.4.26", "@types/jquery": "3.5.33" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24521f0d5..5a7cad1a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -888,8 +888,8 @@ importers: version: 47.4.0(bufferutil@4.0.9)(ckeditor5@47.4.0)(utf-8-validate@6.0.5) devDependencies: '@smithy/middleware-retry': - specifier: 4.4.24 - version: 4.4.24 + specifier: 4.4.26 + version: 4.4.26 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -4800,14 +4800,14 @@ packages: resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.20.6': - resolution: {integrity: sha512-BpAffW1mIyRZongoKBbh3RgHG+JDHJek/8hjA/9LnPunM+ejorO6axkxCgwxCe4K//g/JdPeR9vROHDYr/hfnQ==} - engines: {node: '>=18.0.0'} - '@smithy/core@3.20.7': resolution: {integrity: sha512-aO7jmh3CtrmPsIJxUwYIzI5WVlMK8BMCPQ4D4nTzqTqBhbzvxHNzBMGcEg13yg/z9R2Qsz49NUFl0F0lVbTVFw==} engines: {node: '>=18.0.0'} + '@smithy/core@3.21.0': + resolution: {integrity: sha512-bg2TfzgsERyETAxc/Ims/eJX8eAnIeTi4r4LHpMpfF/2NyO6RsWis0rjKcCPaGksljmOb23BZRiCeT/3NvwkXw==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.0.6': resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} @@ -4856,16 +4856,16 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.7': - resolution: {integrity: sha512-SCmhUG1UwtnEhF5Sxd8qk7bJwkj1BpFzFlHkXqKCEmDPLrRjJyTGM0EhqT7XBtDaDJjCfjRJQodgZcKDR843qg==} + '@smithy/middleware-endpoint@4.4.10': + resolution: {integrity: sha512-kwWpNltpxrvPabnjEFvwSmA+66l6s2ReCvgVSzW/z92LU4T28fTdgZ18IdYRYOrisu2NMQ0jUndRScbO65A/zg==} engines: {node: '>=18.0.0'} '@smithy/middleware-endpoint@4.4.8': resolution: {integrity: sha512-TV44qwB/T0OMMzjIuI+JeS0ort3bvlPJ8XIH0MSlGADraXpZqmyND27ueuAL3E14optleADWqtd7dUgc2w+qhQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.24': - resolution: {integrity: sha512-yiUY1UvnbUFfP5izoKLtfxDSTRv724YRRwyiC/5HYY6vdsVDcDOXKSXmkJl/Hovcxt5r+8tZEUAdrOaCJwrl9Q==} + '@smithy/middleware-retry@4.4.26': + resolution: {integrity: sha512-ozZMoTAr+B2aVYfLYfkssFvc8ZV3p/vLpVQ7/k277xxUOA9ykSPe5obL2j6yHfbdrM/SZV7qj0uk/hSqavHrLw==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.9': @@ -4912,8 +4912,8 @@ packages: resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.8': - resolution: {integrity: sha512-wcr3UEL26k7lLoyf9eVDZoD1nNY3Fa1gbNuOXvfxvVWLGkOVW+RYZgUUp/bXHryJfycIOQnBq9o1JAE00ax8HQ==} + '@smithy/smithy-client@4.10.11': + resolution: {integrity: sha512-6o804SCyHGMXAb5mFJ+iTy9kVKv7F91a9szN0J+9X6p8A0NrdpUxdaC57aye2ipQkP2C4IAqETEpGZ0Zj77Haw==} engines: {node: '>=18.0.0'} '@smithy/smithy-client@4.10.9': @@ -14523,7 +14523,7 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.20.6 + '@smithy/core': 3.20.7 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 @@ -14531,14 +14531,14 @@ snapshots: '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.7 - '@smithy/middleware-retry': 4.4.24 + '@smithy/middleware-endpoint': 4.4.8 + '@smithy/middleware-retry': 4.4.26 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -14572,19 +14572,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.20.6 + '@smithy/core': 3.20.7 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.7 - '@smithy/middleware-retry': 4.4.24 + '@smithy/middleware-endpoint': 4.4.8 + '@smithy/middleware-retry': 4.4.26 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -14604,12 +14604,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.20.6 + '@smithy/core': 3.20.7 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 @@ -14634,7 +14634,7 @@ snapshots: '@smithy/node-http-handler': 4.4.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 @@ -14746,7 +14746,7 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 '@aws-sdk/util-endpoints': 3.821.0 - '@smithy/core': 3.20.6 + '@smithy/core': 3.20.7 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -14766,19 +14766,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.20.6 + '@smithy/core': 3.20.7 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.4.7 - '@smithy/middleware-retry': 4.4.24 + '@smithy/middleware-endpoint': 4.4.8 + '@smithy/middleware-retry': 4.4.26 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15307,6 +15307,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -19289,7 +19291,7 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/core@3.20.6': + '@smithy/core@3.20.7': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -19302,7 +19304,7 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 - '@smithy/core@3.20.7': + '@smithy/core@3.21.0': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -19387,9 +19389,9 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.7': + '@smithy/middleware-endpoint@4.4.10': dependencies: - '@smithy/core': 3.20.6 + '@smithy/core': 3.21.0 '@smithy/middleware-serde': 4.2.9 '@smithy/node-config-provider': 4.3.8 '@smithy/shared-ini-file-loader': 4.4.3 @@ -19409,12 +19411,12 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.24': + '@smithy/middleware-retry@4.4.26': dependencies: '@smithy/node-config-provider': 4.3.8 '@smithy/protocol-http': 5.3.8 '@smithy/service-error-classification': 4.2.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.11 '@smithy/types': 4.12.0 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -19488,10 +19490,10 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.10.8': + '@smithy/smithy-client@4.10.11': dependencies: - '@smithy/core': 3.20.6 - '@smithy/middleware-endpoint': 4.4.7 + '@smithy/core': 3.21.0 + '@smithy/middleware-endpoint': 4.4.10 '@smithy/middleware-stack': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 @@ -19549,7 +19551,7 @@ snapshots: '@smithy/util-defaults-mode-browser@4.0.22': dependencies: '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 bowser: 2.11.0 tslib: 2.8.1 @@ -19560,7 +19562,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.6 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.8 + '@smithy/smithy-client': 4.10.9 '@smithy/types': 4.12.0 tslib: 2.8.1 From 16ed9a7e8e89a09a685bde4eeb5ac15171cd5b28 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 01:34:07 +0000 Subject: [PATCH 097/102] fix(deps): update dependency @zumer/snapdom to v2.0.2 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 1eb7e7900..66eae322a 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -34,7 +34,7 @@ "@triliumnext/highlightjs": "workspace:*", "@triliumnext/share-theme": "workspace:*", "@triliumnext/split.js": "workspace:*", - "@zumer/snapdom": "2.0.1", + "@zumer/snapdom": "2.0.2", "autocomplete.js": "0.38.1", "bootstrap": "5.3.8", "boxicons": "2.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24521f0d5..e13bf7e6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -218,8 +218,8 @@ importers: specifier: workspace:* version: link:../../packages/splitjs '@zumer/snapdom': - specifier: 2.0.1 - version: 2.0.1 + specifier: 2.0.2 + version: 2.0.2 autocomplete.js: specifier: 0.38.1 version: 0.38.1 @@ -5965,8 +5965,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.0.1': - resolution: {integrity: sha512-78/qbYl2FTv4H6qaXcNfAujfIOSzdvs83NW63VbyC9QA3sqNPfPvhn4xYMO6Gy11hXwJUEhd0z65yKiNzDwy9w==} + '@zumer/snapdom@2.0.2': + resolution: {integrity: sha512-W6quT4lMcPu8Q9O/Q6witSfc6/+xuY8C8yDoHug/+o7zYKCNE/e0I3//XsWDkyq9C0mDE0TAWF/8bwCR7x3gHQ==} abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -15307,6 +15307,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -20860,7 +20862,7 @@ snapshots: '@zip.js/zip.js@2.8.11': {} - '@zumer/snapdom@2.0.1': {} + '@zumer/snapdom@2.0.2': {} abab@2.0.6: {} From 4da6294ef27e253ebf0eabfefe1865e7c426bd5c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 01:35:35 +0000 Subject: [PATCH 098/102] chore(deps): update dependency node-abi to v4.26.0 --- package.json | 2 +- pnpm-lock.yaml | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 1bd68cc67..381cca4bd 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "on-headers@<1.1.0": ">=1.1.0", "form-data@>=4.0.0 <4.0.4": ">=4.0.4", "form-data@>=3.0.0 <3.0.4": ">=3.0.4", - "node-abi": "4.25.0" + "node-abi": "4.26.0" }, "ignoredBuiltDependencies": [ "sqlite3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24521f0d5..d8bcbd322 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,7 +20,7 @@ overrides: on-headers@<1.1.0: '>=1.1.0' form-data@>=4.0.0 <4.0.4: '>=4.0.4' form-data@>=3.0.0 <3.0.4: '>=3.0.4' - node-abi: 4.25.0 + node-abi: 4.26.0 patchedDependencies: '@ckeditor/ckeditor5-code-block': @@ -10625,8 +10625,8 @@ packages: nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - node-abi@4.25.0: - resolution: {integrity: sha512-BRrQZc23ljOLms7EXVds3MOpB59/x7gaORodNuIwt96JKlflUmrOgv5hSJZEEM/WkW3uXpjZ4x1wcFu8V9mTpw==} + node-abi@4.26.0: + resolution: {integrity: sha512-8QwIZqikRvDIkXS2S93LjzhsSPJuIbfaMETWH+Bx8oOT9Sa9UsUtBFQlc3gBNd1+QINjaTloitXr1W3dQLi9Iw==} engines: {node: '>=22.12.0'} node-addon-api@7.1.1: @@ -15307,6 +15307,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -16808,7 +16810,7 @@ snapshots: detect-libc: 2.1.2 fs-extra: 10.1.0 got: 11.8.6 - node-abi: 4.25.0 + node-abi: 4.26.0 node-api-version: 0.2.1 ora: 5.4.1 read-binary-file-arch: 1.0.6 @@ -16826,7 +16828,7 @@ snapshots: detect-libc: 2.1.2 got: 11.8.6 graceful-fs: 4.2.11 - node-abi: 4.25.0 + node-abi: 4.26.0 node-api-version: 0.2.1 node-gyp: 11.4.2 ora: 5.4.1 @@ -26746,7 +26748,7 @@ snapshots: nice-try@1.0.5: {} - node-abi@4.25.0: + node-abi@4.26.0: dependencies: semver: 7.7.3 @@ -27889,7 +27891,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 4.25.0 + node-abi: 4.26.0 pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 From a285c46b97173d17fd32bea548f82e34382bb1ba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 01:36:23 +0000 Subject: [PATCH 099/102] fix(deps): update dependency @preact/signals to v2.6.0 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 1eb7e7900..f7630da16 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -27,7 +27,7 @@ "@mermaid-js/layout-elk": "0.2.0", "@mind-elixir/node-menu": "5.0.1", "@popperjs/core": "2.11.8", - "@preact/signals": "2.5.1", + "@preact/signals": "2.6.0", "@triliumnext/ckeditor5": "workspace:*", "@triliumnext/codemirror": "workspace:*", "@triliumnext/commons": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24521f0d5..e440398aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -197,8 +197,8 @@ importers: specifier: 2.11.8 version: 2.11.8 '@preact/signals': - specifier: 2.5.1 - version: 2.5.1(preact@10.28.2) + specifier: 2.6.0 + version: 2.6.0(preact@10.28.2) '@triliumnext/ckeditor5': specifier: workspace:* version: link:../../packages/ckeditor5 @@ -4043,11 +4043,11 @@ packages: '@babel/core': 7.x vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x - '@preact/signals-core@1.12.1': - resolution: {integrity: sha512-BwbTXpj+9QutoZLQvbttRg5x3l5468qaV2kufh+51yha1c53ep5dY4kTuZR35+3pAZxpfQerGJiQqg34ZNZ6uA==} + '@preact/signals-core@1.12.2': + resolution: {integrity: sha512-5Yf8h1Ke3SMHr15xl630KtwPTW4sYDFkkxS0vQ8UiQLWwZQnrF9IKaVG1mN5VcJz52EcWs2acsc/Npjha/7ysA==} - '@preact/signals@2.5.1': - resolution: {integrity: sha512-VPjk5YFt7i11Fi4UK0tzaEe5xLwfhUxXL3l89ocxQ5aPz7bRo8M5+N73LjBMPklyXKYKz6YsNo4Smp8n6nplng==} + '@preact/signals@2.6.0': + resolution: {integrity: sha512-a22Mh1CCA+PaqobdV2YfeZ30PGywp/QnhCBNVDIsHUdkuqpYcbxt0vgC78JYaicBqWxAOGXLoExj5WHaZ/VKvg==} peerDependencies: preact: 10.28.2 @@ -15307,6 +15307,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -18510,11 +18512,11 @@ snapshots: - preact - supports-color - '@preact/signals-core@1.12.1': {} + '@preact/signals-core@1.12.2': {} - '@preact/signals@2.5.1(preact@10.28.2)': + '@preact/signals@2.6.0(preact@10.28.2)': dependencies: - '@preact/signals-core': 1.12.1 + '@preact/signals-core': 1.12.2 preact: 10.28.2 '@prefresh/babel-plugin@0.5.2': {} From 794e03b2cb023a33f9beaa2629cab084ac9164c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 01:37:06 +0000 Subject: [PATCH 100/102] fix(deps): update dependency i18next to v25.8.0 --- apps/client/package.json | 2 +- apps/server/package.json | 2 +- apps/website/package.json | 2 +- pnpm-lock.yaml | 28 +++++++++++++++------------- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 1eb7e7900..317ce2e50 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -44,7 +44,7 @@ "draggabilly": "3.0.0", "force-graph": "1.51.0", "globals": "17.0.0", - "i18next": "25.7.4", + "i18next": "25.8.0", "i18next-http-backend": "3.0.2", "jquery": "4.0.0", "jquery.fancytree": "2.38.5", diff --git a/apps/server/package.json b/apps/server/package.json index 3c8f26993..482f608da 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -99,7 +99,7 @@ "html2plaintext": "2.1.4", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", - "i18next": "25.7.4", + "i18next": "25.8.0", "i18next-fs-backend": "2.6.1", "image-type": "6.0.0", "ini": "6.0.0", diff --git a/apps/website/package.json b/apps/website/package.json index 304563fcb..b478eec64 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -9,7 +9,7 @@ "preview": "pnpm build && vite preview" }, "dependencies": { - "i18next": "25.7.4", + "i18next": "25.8.0", "i18next-http-backend": "3.0.2", "preact": "10.28.2", "preact-iso": "2.11.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24521f0d5..9604bc715 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -248,8 +248,8 @@ importers: specifier: 17.0.0 version: 17.0.0 i18next: - specifier: 25.7.4 - version: 25.7.4(typescript@5.9.3) + specifier: 25.8.0 + version: 25.8.0(typescript@5.9.3) i18next-http-backend: specifier: 3.0.2 version: 3.0.2(encoding@0.1.13) @@ -297,7 +297,7 @@ importers: version: 10.28.2 react-i18next: specifier: 16.5.3 - version: 16.5.3(i18next@25.7.4(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 16.5.3(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) react-window: specifier: 2.2.5 version: 2.2.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -712,8 +712,8 @@ importers: specifier: 7.0.6 version: 7.0.6 i18next: - specifier: 25.7.4 - version: 25.7.4(typescript@5.9.3) + specifier: 25.8.0 + version: 25.8.0(typescript@5.9.3) i18next-fs-backend: specifier: 2.6.1 version: 2.6.1 @@ -820,8 +820,8 @@ importers: apps/website: dependencies: i18next: - specifier: 25.7.4 - version: 25.7.4(typescript@5.9.3) + specifier: 25.8.0 + version: 25.8.0(typescript@5.9.3) i18next-http-backend: specifier: 3.0.2 version: 3.0.2(encoding@0.1.13) @@ -836,7 +836,7 @@ importers: version: 6.6.5(preact@10.28.2) react-i18next: specifier: 16.5.3 - version: 16.5.3(i18next@25.7.4(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 16.5.3(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) devDependencies: '@preact/preset-vite': specifier: 2.10.2 @@ -9024,8 +9024,8 @@ packages: i18next-http-backend@3.0.2: resolution: {integrity: sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g==} - i18next@25.7.4: - resolution: {integrity: sha512-hRkpEblXXcXSNbw8mBNq9042OEetgyB/ahc/X17uV/khPwzV+uB8RHceHh3qavyrkPJvmXFKXME2Sy1E0KjAfw==} + i18next@25.8.0: + resolution: {integrity: sha512-urrg4HMFFMQZ2bbKRK7IZ8/CTE7D8H4JRlAwqA2ZwDRFfdd0K/4cdbNNLgfn9mo+I/h9wJu61qJzH7jCFAhUZQ==} peerDependencies: typescript: ^5 peerDependenciesMeta: @@ -15307,6 +15307,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -24857,7 +24859,7 @@ snapshots: transitivePeerDependencies: - encoding - i18next@25.7.4(typescript@5.9.3): + i18next@25.8.0(typescript@5.9.3): dependencies: '@babel/runtime': 7.28.4 optionalDependencies: @@ -28092,11 +28094,11 @@ snapshots: react: 19.2.3 scheduler: 0.27.0 - react-i18next@16.5.3(i18next@25.7.4(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): + react-i18next@16.5.3(i18next@25.8.0(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: '@babel/runtime': 7.28.4 html-parse-stringify: 3.0.1 - i18next: 25.7.4(typescript@5.9.3) + i18next: 25.8.0(typescript@5.9.3) react: 19.2.3 use-sync-external-store: 1.6.0(react@19.2.3) optionalDependencies: From 96b1efcfdc9a9417ed5cbd6eae6a36f3dd75b2c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 06:17:33 +0000 Subject: [PATCH 101/102] chore(deps): update dependency lightningcss to v1.31.1 --- apps/client/package.json | 2 +- pnpm-lock.yaml | 236 +++++++++++++++++++-------------------- 2 files changed, 119 insertions(+), 119 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 1eb7e7900..8f5990b69 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -79,7 +79,7 @@ "@types/tabulator-tables": "6.3.1", "copy-webpack-plugin": "13.0.1", "happy-dom": "20.3.3", - "lightningcss": "1.30.2", + "lightningcss": "1.31.1", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.5" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24521f0d5..31033f429 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,10 +57,10 @@ importers: version: 24.10.9 '@vitest/browser-webdriverio': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-v8': specifier: 4.0.17 - version: 4.0.17(@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17))(vitest@4.0.17) + version: 4.0.17(@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17))(vitest@4.0.17) '@vitest/ui': specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) @@ -111,7 +111,7 @@ importers: version: 0.18.0 rollup-plugin-webpack-stats: specifier: 2.1.9 - version: 2.1.9(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.1.9(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) tslib: specifier: 2.8.1 version: 2.8.1 @@ -129,13 +129,13 @@ importers: version: 2.0.1 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) apps/build-docs: devDependencies: @@ -319,7 +319,7 @@ importers: version: 5.0.0 '@prefresh/vite': specifier: 2.4.11 - version: 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@types/bootstrap': specifier: 5.2.10 version: 5.2.10 @@ -348,14 +348,14 @@ importers: specifier: 20.3.3 version: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) lightningcss: - specifier: 1.30.2 - version: 1.30.2 + specifier: 1.31.1 + version: 1.31.1 script-loader: specifier: 0.7.2 version: 0.7.2 vite-plugin-static-copy: specifier: 3.1.5 - version: 3.1.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 3.1.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) apps/db-compare: dependencies: @@ -800,7 +800,7 @@ importers: version: 1.0.1 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) ws: specifier: 8.19.0 version: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -840,7 +840,7 @@ importers: devDependencies: '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -855,10 +855,10 @@ importers: version: 0.4.2 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -913,7 +913,7 @@ importers: version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) '@vitest/coverage-istanbul': specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) @@ -946,10 +946,10 @@ importers: version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -973,7 +973,7 @@ importers: version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) '@vitest/coverage-istanbul': specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) @@ -1006,10 +1006,10 @@ importers: version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1033,7 +1033,7 @@ importers: version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) '@vitest/coverage-istanbul': specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) @@ -1066,10 +1066,10 @@ importers: version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1100,7 +1100,7 @@ importers: version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) '@vitest/coverage-istanbul': specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) @@ -1133,10 +1133,10 @@ importers: version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1167,7 +1167,7 @@ importers: version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.17 - version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + version: 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) '@vitest/coverage-istanbul': specifier: 4.0.17 version: 4.0.17(vitest@4.0.17) @@ -1200,10 +1200,10 @@ importers: version: 5.9.3 vite-plugin-svgo: specifier: 2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -9776,74 +9776,74 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} lilconfig@2.1.0: @@ -15307,6 +15307,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -16014,8 +16016,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -18494,18 +18494,18 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@prefresh/vite': 2.4.8(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@prefresh/vite': 2.4.8(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) debug: 4.4.1 picocolors: 1.1.1 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-prerender-plugin: 0.5.11(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite-prerender-plugin: 0.5.11(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) transitivePeerDependencies: - preact - supports-color @@ -18525,7 +18525,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@prefresh/babel-plugin': 0.5.2 @@ -18533,11 +18533,11 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.2 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@prefresh/vite@2.4.8(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@prefresh/vite@2.4.8(preact@10.28.2)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@prefresh/babel-plugin': 0.5.2 @@ -18545,7 +18545,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.28.2 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -20566,10 +20566,10 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20577,16 +20577,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)': + '@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)': dependencies: - '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/utils': 4.0.17 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20606,11 +20606,11 @@ snapshots: magicast: 0.5.1 obug: 2.1.1 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.17(@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17))(vitest@4.0.17)': + '@vitest/coverage-v8@4.0.17(@vitest/browser@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17))(vitest@4.0.17)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.17 @@ -20622,9 +20622,9 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: - '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) + '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) '@vitest/expect@4.0.17': dependencies: @@ -20635,14 +20635,14 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitest/mocker@4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.7.5(@types/node@24.10.9)(typescript@5.9.3) - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/pretty-format@4.0.17': dependencies: @@ -20670,7 +20670,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@4.0.17': dependencies: @@ -25630,54 +25630,54 @@ snapshots: dependencies: immediate: 3.0.6 - lightningcss-android-arm64@1.30.2: + lightningcss-android-arm64@1.31.1: optional: true - lightningcss-darwin-arm64@1.30.2: + lightningcss-darwin-arm64@1.31.1: optional: true - lightningcss-darwin-x64@1.30.2: + lightningcss-darwin-x64@1.31.1: optional: true - lightningcss-freebsd-x64@1.30.2: + lightningcss-freebsd-x64@1.31.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.2: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true - lightningcss-linux-arm64-gnu@1.30.2: + lightningcss-linux-arm64-gnu@1.31.1: optional: true - lightningcss-linux-arm64-musl@1.30.2: + lightningcss-linux-arm64-musl@1.31.1: optional: true - lightningcss-linux-x64-gnu@1.30.2: + lightningcss-linux-x64-gnu@1.31.1: optional: true - lightningcss-linux-x64-musl@1.30.2: + lightningcss-linux-x64-musl@1.31.1: optional: true - lightningcss-win32-arm64-msvc@1.30.2: + lightningcss-win32-arm64-msvc@1.31.1: optional: true - lightningcss-win32-x64-msvc@1.30.2: + lightningcss-win32-x64-msvc@1.31.1: optional: true - lightningcss@1.30.2: + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 lilconfig@2.1.0: {} @@ -28514,11 +28514,11 @@ snapshots: '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.29 optional: true - rollup-plugin-stats@1.5.4(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + rollup-plugin-stats@1.5.4(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) rollup-plugin-styles@4.0.0(rollup@4.52.0): dependencies: @@ -28547,13 +28547,13 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.52.0) rollup: 4.52.0 - rollup-plugin-webpack-stats@2.1.9(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + rollup-plugin-webpack-stats@2.1.9(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: - rollup-plugin-stats: 1.5.4(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + rollup-plugin-stats: 1.5.4(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) rollup@4.52.0: dependencies: @@ -30476,7 +30476,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-dts@4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.52.8(@types/node@24.10.9) '@rollup/pluginutils': 5.1.4(rollup@4.52.0) @@ -30489,27 +30489,27 @@ snapshots: magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-static-copy@3.1.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-static-copy@3.1.5(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-plugin-svgo@2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-svgo@2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: svgo: 3.3.2 typescript: 5.9.3 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-prerender-plugin@0.5.11(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-prerender-plugin@0.5.11(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -30517,9 +30517,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -30532,17 +30532,17 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.1.3 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.91.0 sass-embedded: 1.91.0 terser: 5.44.0 tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.2)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.17 - '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.17 '@vitest/runner': 4.0.17 '@vitest/snapshot': 4.0.17 @@ -30559,12 +30559,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.9 - '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.17(vitest@4.0.17) happy-dom: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) From 8a280c2f9dbbb922e910f10324a6c4fbe0258c1d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:07:19 +0000 Subject: [PATCH 102/102] chore(deps): update dependency happy-dom to v20.3.4 --- apps/client/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 50 +++++++++++++++++++++++----------------- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 0f3bd9947..f8c2e9822 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -78,7 +78,7 @@ "@types/reveal.js": "5.2.2", "@types/tabulator-tables": "6.3.1", "copy-webpack-plugin": "13.0.1", - "happy-dom": "20.3.3", + "happy-dom": "20.3.4", "lightningcss": "1.31.1", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.5" diff --git a/package.json b/package.json index 381cca4bd..8bb958314 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-playwright": "2.5.0", "eslint-plugin-simple-import-sort": "12.1.1", - "happy-dom": "20.3.3", + "happy-dom": "20.3.4", "http-server": "14.1.1", "jiti": "2.6.1", "js-yaml": "4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80b8e9659..69981a1a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,8 +92,8 @@ importers: specifier: 12.1.1 version: 12.1.1(eslint@9.39.2(jiti@2.6.1)) happy-dom: - specifier: 20.3.3 - version: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.3.4 + version: 20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) http-server: specifier: 14.1.1 version: 14.1.1 @@ -135,7 +135,7 @@ importers: version: 4.5.4(@types/node@24.10.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) apps/build-docs: devDependencies: @@ -345,8 +345,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) happy-dom: - specifier: 20.3.3 - version: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.3.4 + version: 20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) lightningcss: specifier: 1.31.1 version: 1.31.1 @@ -858,7 +858,7 @@ importers: version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -949,7 +949,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1009,7 +1009,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1069,7 +1069,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1136,7 +1136,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1203,7 +1203,7 @@ importers: version: 2.0.0(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: specifier: 9.23.2 version: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -8746,8 +8746,8 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - happy-dom@20.3.3: - resolution: {integrity: sha512-hM9gltmtQLfmWPqoPreUtRdP3nZCSzQEw7l/JC+up5CxquDykhYFKzIzoFFeVev3AGFEULNvsbE8fpZPgxUYEQ==} + happy-dom@20.3.4: + resolution: {integrity: sha512-rfbiwB6OKxZFIFQ7SRnCPB2WL9WhyXsFoTfecYgeCeFSOBxvkWLaXsdv5ehzJrfqwXQmDephAKWLRQoFoJwrew==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -15242,6 +15242,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@47.4.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15443,6 +15445,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-decoupled@47.4.0': dependencies: @@ -15972,6 +15976,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-restricted-editing@47.4.0': dependencies: @@ -16016,6 +16022,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@47.4.0': dependencies: @@ -20569,7 +20577,7 @@ snapshots: '@vitest/browser-webdriverio@4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: 9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20586,7 +20594,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -20606,7 +20614,7 @@ snapshots: magicast: 0.5.1 obug: 2.1.1 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -20622,7 +20630,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: '@vitest/browser': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17) @@ -20670,7 +20678,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@4.0.17': dependencies: @@ -24457,7 +24465,7 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): + happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 24.10.9 '@types/whatwg-mimetype': 3.0.2 @@ -30539,7 +30547,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.17)(@vitest/ui@4.0.17)(happy-dom@20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.31.1)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.17 '@vitest/mocker': 4.0.17(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) @@ -30566,7 +30574,7 @@ snapshots: '@types/node': 24.10.9 '@vitest/browser-webdriverio': 4.0.17(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.9)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.31.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.17)(webdriverio@9.23.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.17(vitest@4.0.17) - happy-dom: 20.3.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + happy-dom: 20.3.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti