From 3f6f3d2565bbeffdc8a8e835a3a4265c913679bb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 01:32:42 +0000 Subject: [PATCH 01/29] Update dependency @redocly/cli to v2.15.1 --- apps/build-docs/package.json | 2 +- pnpm-lock.yaml | 112 +++++++---------------------------- 2 files changed, 24 insertions(+), 90 deletions(-) diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json index ac5be7e9be..56fff334a8 100644 --- a/apps/build-docs/package.json +++ b/apps/build-docs/package.json @@ -11,7 +11,7 @@ "license": "AGPL-3.0-only", "packageManager": "pnpm@10.28.2", "devDependencies": { - "@redocly/cli": "2.15.0", + "@redocly/cli": "2.15.1", "archiver": "7.0.1", "fs-extra": "11.3.3", "react": "19.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68404cf8df..c35cdf37f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,8 +156,8 @@ importers: apps/build-docs: devDependencies: '@redocly/cli': - specifier: 2.15.0 - version: 2.15.0(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) + specifier: 2.15.1 + version: 2.15.1(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) archiver: specifier: 7.0.1 version: 7.0.1 @@ -3562,10 +3562,6 @@ packages: resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -4245,10 +4241,6 @@ packages: '@phosphor-icons/web@2.1.2': resolution: {integrity: sha512-rPAR9o/bEcp4Cw4DEeZHXf+nlGCMNGkNDRizYHM47NLxz9vvEHp/Tt6FMK1NcWadzw/pFDPnRBGi/ofRya958A==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@playwright/test@1.58.1': resolution: {integrity: sha512-6LdVIUERWxQMmUSSQi0I53GgCBYgM2RpGngCPY7hSeju+VrKjq3lvs7HpJoPbDiY5QM5EYRtRX5fvrinnMAz3w==} engines: {node: '>=18'} @@ -4629,27 +4621,27 @@ packages: '@redocly/ajv@8.17.2': resolution: {integrity: sha512-rcbDZOfXAgGEJeJ30aWCVVJvxV9ooevb/m1/SFblO2qHs4cqTk178gx7T/vdslf57EA4lTofrwsq5K8rxK9g+g==} - '@redocly/cli@2.15.0': - resolution: {integrity: sha512-PjqCE1HDSHgHOrNxixeJSrumy8an2O4rcjXCIfdiHAjB1HOlMEtdgrz5OCx9f0lzcOXrgi61ThFNvO5jG56tUw==} + '@redocly/cli@2.15.1': + resolution: {integrity: sha512-wnzIxQxqhcg9HQUbjxD++cnRpCI8pUUFw2YV9XlFcvDp1EpPy6QokSnZZL3TbC1PLqzTE2XnUycawoTPv9hBuA==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true '@redocly/config@0.22.2': resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} - '@redocly/config@0.41.2': - resolution: {integrity: sha512-G6muhdTKcEV2TECBFzuT905p4a27OgUtwBqRVnMx1JebO6i8zlm6bPB2H3fD1Hl+MiUpk7Jx2kwGmLVgpz5nIg==} + '@redocly/config@0.41.4': + resolution: {integrity: sha512-LaRKXpHyK5GxmgG2n2e8xp2NyUa8qZls3WMAVg5hKO4b2d7X5uU5F2jvH6JUTVdRW/VfStQqan5DQ1uQz7MVzg==} '@redocly/openapi-core@1.34.5': resolution: {integrity: sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@redocly/openapi-core@2.15.0': - resolution: {integrity: sha512-q/2UM5tA9mgk4zaIDUkKOG9KBUqIdSIhp5DugHmFOszOE+WMiL23BIV40K79jNF9aSU3zF1p1c/Zu0UoBmBsZg==} + '@redocly/openapi-core@2.15.1': + resolution: {integrity: sha512-6OKY+ZgAnU2B1OoPQHXXWCXwNQQUn+8N7WfGMrpRZxorQsB9EcQs0rYofO4mquFzvmIgU2owf8cLaD771pv3BQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.15.0': - resolution: {integrity: sha512-0LFtQXNUE+e9OdGDLS+yt4RBx0JTGhM7UAaBC4tzLqPvhtbdWo/WB/WdasGIt4vMM9K47KivxPHmX13sSLEO2Q==} + '@redocly/respect-core@2.15.1': + resolution: {integrity: sha512-Qrbhv/TE0TkxNaoDv1hPtNcpMORQiSrU9R95ZtI6KevgUcuEK2GgmoXHTrtVdWdxnpqm8bESTxffcz7+etMjOQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} '@replit/codemirror-indentation-markers@6.5.3': @@ -8803,10 +8795,6 @@ packages: foreach@2.0.6: resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data-encoder@4.1.0: resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==} engines: {node: '>= 18'} @@ -9050,10 +9038,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - hasBin: true - glob@13.0.0: resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} @@ -9961,9 +9945,6 @@ packages: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -11688,10 +11669,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} @@ -16011,8 +15988,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: @@ -16078,6 +16053,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.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -16230,8 +16207,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: @@ -16254,8 +16229,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: @@ -16281,8 +16254,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: @@ -16440,8 +16411,6 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.4.0 ckeditor5: 47.4.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-icons@47.4.0': {} @@ -18561,15 +18530,6 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 @@ -19379,9 +19339,6 @@ snapshots: '@phosphor-icons/web@2.1.2': {} - '@pkgjs/parseargs@0.11.0': - optional: true - '@playwright/test@1.58.1': dependencies: playwright: 1.58.1 @@ -19780,14 +19737,14 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - '@redocly/cli@2.15.0(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': + '@redocly/cli@2.15.1(@opentelemetry/api@1.9.0)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 - '@redocly/openapi-core': 2.15.0 - '@redocly/respect-core': 2.15.0 + '@redocly/openapi-core': 2.15.1 + '@redocly/respect-core': 2.15.1 abort-controller: 3.0.0 ajv: '@redocly/ajv@8.17.1' ajv-formats: 3.0.1(@redocly/ajv@8.17.1) @@ -19798,6 +19755,7 @@ snapshots: handlebars: 4.7.8 https-proxy-agent: 7.0.6 mobx: 6.15.0 + picomatch: 4.0.3 pluralize: 8.0.0 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -19820,7 +19778,7 @@ snapshots: '@redocly/config@0.22.2': {} - '@redocly/config@0.41.2': + '@redocly/config@0.41.4': dependencies: json-schema-to-ts: 2.7.2 @@ -19838,10 +19796,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@redocly/openapi-core@2.15.0': + '@redocly/openapi-core@2.15.1': dependencies: '@redocly/ajv': 8.17.2 - '@redocly/config': 0.41.2 + '@redocly/config': 0.41.4 ajv: '@redocly/ajv@8.17.2' ajv-formats: 3.0.1(@redocly/ajv@8.17.2) colorette: 1.4.0 @@ -19851,12 +19809,12 @@ snapshots: pluralize: 8.0.0 yaml-ast-parser: 0.0.43 - '@redocly/respect-core@2.15.0': + '@redocly/respect-core@2.15.1': dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.17.1 - '@redocly/openapi-core': 2.15.0 + '@redocly/openapi-core': 2.15.1 ajv: '@redocly/ajv@8.17.1' better-ajv-errors: 1.2.0(@redocly/ajv@8.17.1) colorette: 2.0.20 @@ -19864,6 +19822,7 @@ snapshots: jsonpath-rfc9535: 1.3.0 openapi-sampler: 1.6.2 outdent: 0.8.0 + picomatch: 4.0.3 '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.12)': dependencies: @@ -22020,7 +21979,7 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.5.0 + glob: 13.0.0 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 @@ -25124,11 +25083,6 @@ snapshots: foreach@2.0.6: {} - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data-encoder@4.1.0: {} form-data@4.0.5: @@ -25402,15 +25356,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@13.0.0: dependencies: minimatch: 10.1.1 @@ -26390,12 +26335,6 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jake@10.9.2: dependencies: async: 3.2.6 @@ -28589,11 +28528,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-scurry@2.0.0: dependencies: lru-cache: 11.2.4 From 177aedeaaedf84acd3c54afdf4bdfbc650d45d91 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 01:33:28 +0000 Subject: [PATCH 02/29] Update dependency @smithy/middleware-retry to v4.4.30 --- packages/ckeditor5/package.json | 2 +- pnpm-lock.yaml | 153 ++++++++++++++++++-------------- 2 files changed, 88 insertions(+), 67 deletions(-) diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index d31e3a5ff1..af4b31a38a 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.29", + "@smithy/middleware-retry": "4.4.30", "@types/jquery": "3.5.33" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68404cf8df..1a69c50d4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -917,8 +917,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.29 - version: 4.4.29 + specifier: 4.4.30 + version: 4.4.30 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -5047,14 +5047,14 @@ packages: resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.21.1': - resolution: {integrity: sha512-NUH8R4O6FkN8HKMojzbGg/5pNjsfTjlMmeFclyPfPaXXUrbr5TzhWgbf7t92wfrpCHRgpjyz7ffASIS3wX28aA==} - engines: {node: '>=18.0.0'} - '@smithy/core@3.22.0': resolution: {integrity: sha512-6vjCHD6vaY8KubeNw2Fg3EK0KLGQYdldG4fYgQmA0xSW0dJ8G2xFhSOdrlUakWVoP5JuWHtFODg3PNd/DN3FDA==} engines: {node: '>=18.0.0'} + '@smithy/core@3.22.1': + resolution: {integrity: sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.0.6': resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} @@ -5103,16 +5103,16 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.11': - resolution: {integrity: sha512-/WqsrycweGGfb9sSzME4CrsuayjJF6BueBmkKlcbeU5q18OhxRrvvKlmfw3tpDsK5ilx2XUJvoukwxHB0nHs/Q==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.12': resolution: {integrity: sha512-9JMKHVJtW9RysTNjcBZQHDwB0p3iTP6B1IfQV4m+uCevkVd/VuLgwfqk5cnI4RHcp4cPwoIvxQqN4B1sxeHo8Q==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.29': - resolution: {integrity: sha512-bmTn75a4tmKRkC5w61yYQLb3DmxNzB8qSVu9SbTYqW6GAL0WXO2bDZuMAn/GJSbOdHEdjZvWxe+9Kk015bw6Cg==} + '@smithy/middleware-endpoint@4.4.13': + resolution: {integrity: sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.30': + resolution: {integrity: sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.9': @@ -5131,6 +5131,10 @@ packages: resolution: {integrity: sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==} engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.4.9': + resolution: {integrity: sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.8': resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} engines: {node: '>=18.0.0'} @@ -5159,14 +5163,14 @@ packages: resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.12': - resolution: {integrity: sha512-VKO/HKoQ5OrSHW6AJUmEnUKeXI1/5LfCwO9cwyao7CmLvGnZeM1i36Lyful3LK1XU7HwTVieTqO1y2C/6t3qtA==} - engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.11.1': resolution: {integrity: sha512-SERgNg5Z1U+jfR6/2xPYjSEHY1t3pyTHC/Ma3YQl6qWtmiL42bvNId3W/oMUWIwu7ekL2FMPdqAmwbQegM7HeQ==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.11.2': + resolution: {integrity: sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.12.0': resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} engines: {node: '>=18.0.0'} @@ -5235,6 +5239,10 @@ packages: resolution: {integrity: sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==} engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.5.11': + resolution: {integrity: sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@4.2.0': resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} engines: {node: '>=18.0.0'} @@ -15293,7 +15301,7 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.21.1 + '@smithy/core': 3.22.0 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 @@ -15301,14 +15309,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.11 - '@smithy/middleware-retry': 4.4.29 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.30 '@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.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15342,19 +15350,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.21.1 + '@smithy/core': 3.22.0 '@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.11 - '@smithy/middleware-retry': 4.4.29 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.30 '@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.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -15374,12 +15382,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.21.1 + '@smithy/core': 3.22.0 '@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.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 @@ -15404,7 +15412,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.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 @@ -15516,7 +15524,7 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 '@aws-sdk/util-endpoints': 3.821.0 - '@smithy/core': 3.21.1 + '@smithy/core': 3.22.0 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -15536,19 +15544,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.21.1 + '@smithy/core': 3.22.0 '@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.11 - '@smithy/middleware-retry': 4.4.29 + '@smithy/middleware-endpoint': 4.4.12 + '@smithy/middleware-retry': 4.4.30 '@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.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 @@ -16011,8 +16019,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: @@ -16281,8 +16287,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: @@ -16743,8 +16747,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: @@ -20193,7 +20195,7 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/core@3.21.1': + '@smithy/core@3.22.0': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -20206,7 +20208,7 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 - '@smithy/core@3.22.0': + '@smithy/core@3.22.1': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -20214,7 +20216,7 @@ snapshots: '@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-stream': 4.5.11 '@smithy/util-utf8': 4.2.0 '@smithy/uuid': 1.1.0 tslib: 2.8.1 @@ -20291,17 +20293,6 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.11': - dependencies: - '@smithy/core': 3.21.1 - '@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.12': dependencies: '@smithy/core': 3.22.0 @@ -20313,12 +20304,23 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.29': + '@smithy/middleware-endpoint@4.4.13': + dependencies: + '@smithy/core': 3.22.1 + '@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.30': 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.11.1 + '@smithy/smithy-client': 4.11.2 '@smithy/types': 4.12.0 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -20351,6 +20353,14 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@smithy/node-http-handler@4.4.9': + dependencies: + '@smithy/abort-controller': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/property-provider@4.2.8': dependencies: '@smithy/types': 4.12.0 @@ -20392,16 +20402,6 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.10.12': - dependencies: - '@smithy/core': 3.21.1 - '@smithy/middleware-endpoint': 4.4.11 - '@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.11.1': dependencies: '@smithy/core': 3.22.0 @@ -20412,6 +20412,16 @@ snapshots: '@smithy/util-stream': 4.5.10 tslib: 2.8.1 + '@smithy/smithy-client@4.11.2': + dependencies: + '@smithy/core': 3.22.1 + '@smithy/middleware-endpoint': 4.4.13 + '@smithy/middleware-stack': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.11 + tslib: 2.8.1 + '@smithy/types@4.12.0': dependencies: tslib: 2.8.1 @@ -20457,7 +20467,7 @@ snapshots: '@smithy/util-defaults-mode-browser@4.0.22': dependencies: '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 bowser: 2.11.0 tslib: 2.8.1 @@ -20468,7 +20478,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.12 + '@smithy/smithy-client': 4.11.1 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -20510,6 +20520,17 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/util-stream@4.5.11': + dependencies: + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.9 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-uri-escape@4.2.0': dependencies: tslib: 2.8.1 From 1c260f58902462e44fd2e2e84b5f28d643663692 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 01:34:19 +0000 Subject: [PATCH 03/29] Update dependency happy-dom to v20.5.0 --- apps/client/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 50 ++++++++++++++++++---------------------- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index ca31f70a70..dc210480a6 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.4.0", + "happy-dom": "20.5.0", "lightningcss": "1.31.1", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.2.0" diff --git a/package.json b/package.json index 8015f90bf6..2d66b6b943 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-playwright": "2.5.1", "eslint-plugin-simple-import-sort": "12.1.1", - "happy-dom": "20.4.0", + "happy-dom": "20.5.0", "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 68404cf8df..94d0c15c59 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,8 +108,8 @@ importers: specifier: 12.1.1 version: 12.1.1(eslint@9.39.2(jiti@2.6.1)) happy-dom: - specifier: 20.4.0 - version: 20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.5.0 + version: 20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) http-server: specifier: 14.1.1 version: 14.1.1 @@ -151,7 +151,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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: @@ -361,8 +361,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.27.2)) happy-dom: - specifier: 20.4.0 - version: 20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 20.5.0 + version: 20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) lightningcss: specifier: 1.31.1 version: 1.31.1 @@ -887,7 +887,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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: @@ -978,7 +978,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.3 version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1038,7 +1038,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.3 version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1098,7 +1098,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.3 version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1165,7 +1165,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.3 version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1232,7 +1232,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.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.3 version: 9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -9170,8 +9170,8 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - happy-dom@20.4.0: - resolution: {integrity: sha512-RDeQm3dT9n0A5f/TszjUmNCLEuPnMGv3Tv4BmNINebz/h17PA6LMBcxJ5FrcqltNBMh9jA/8ufgDdBYUdBt+eg==} + happy-dom@20.5.0: + resolution: {integrity: sha512-VQe+Q5CYiGOgcCERXhcfNsbnrN92FDEKciMH/x6LppU9dd0j4aTjCTlqONFOIMcAm/5JxS3+utowbXV1OoFr+g==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -16011,8 +16011,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: @@ -16078,6 +16076,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.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -16281,8 +16281,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: @@ -16743,8 +16741,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: @@ -21493,7 +21489,7 @@ snapshots: '@vitest/browser-webdriverio@4.0.18(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.18)(webdriverio@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@vitest/browser': 4.0.18(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.18) - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -21510,7 +21506,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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 @@ -21530,7 +21526,7 @@ snapshots: magicast: 0.5.1 obug: 2.1.1 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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 @@ -21546,7 +21542,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.18(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.18) @@ -21594,7 +21590,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.18': dependencies: @@ -25556,7 +25552,7 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - happy-dom@20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + happy-dom@20.5.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 24.10.9 '@types/whatwg-mimetype': 3.0.2 @@ -32022,7 +32018,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.4.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.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.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(@vitest/browser-webdriverio@4.0.18)(@vitest/ui@4.0.18)(happy-dom@20.5.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.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.18 '@vitest/mocker': 4.0.18(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)) @@ -32049,7 +32045,7 @@ snapshots: '@types/node': 24.10.9 '@vitest/browser-webdriverio': 4.0.18(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.18)(webdriverio@9.23.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.18(vitest@4.0.18) - happy-dom: 20.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + happy-dom: 20.5.0(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 e951d60800469298790ccb030e91f8570795edc7 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 3 Feb 2026 20:54:56 +0200 Subject: [PATCH 04/29] style/options: hide collection properties --- apps/client/src/stylesheets/theme-next/pages.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/client/src/stylesheets/theme-next/pages.css b/apps/client/src/stylesheets/theme-next/pages.css index f323d00005..e6125e80e2 100644 --- a/apps/client/src/stylesheets/theme-next/pages.css +++ b/apps/client/src/stylesheets/theme-next/pages.css @@ -156,6 +156,10 @@ --preferred-max-content-width: var(--options-card-max-width); } +.note-split.options .collection-properties { + visibility: hidden; +} + /* Create a gap at the top of the option pages */ .note-detail-content-widget-content.options>*:first-child { margin-top: var(--options-first-item-top-margin, 1em); From c42c06d048e148534ba8a572252d8b09675a0aa7 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 3 Feb 2026 21:01:08 +0200 Subject: [PATCH 05/29] style/global menu: use proper heading for the development options section --- apps/client/src/widgets/buttons/global_menu.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/client/src/widgets/buttons/global_menu.tsx b/apps/client/src/widgets/buttons/global_menu.tsx index 95a3b8b946..0986c8ad29 100644 --- a/apps/client/src/widgets/buttons/global_menu.tsx +++ b/apps/client/src/widgets/buttons/global_menu.tsx @@ -105,8 +105,7 @@ function BrowserOnlyOptions() { function DevelopmentOptions({ dropStart }: { dropStart: boolean }) { return <> - - Development Options + {experimentalFeatures.map((feature) => ( From bb05aeeaf79a4504c0965f5bae56aecf66525753 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Wed, 4 Feb 2026 00:44:54 +0200 Subject: [PATCH 06/29] style/split: tweak transition for the current split indicator --- apps/client/src/stylesheets/theme-next/shell.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index 18ab495907..fae4001f08 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -1272,7 +1272,7 @@ body.layout-horizontal #rest-pane > .classic-toolbar-widget { #center-pane .note-split { padding-top: 2px; background-color: var(--note-split-background-color, var(--main-background-color)); - transition: border-color 250ms ease-in; + transition: border-color 150ms ease-out; border: 2px solid transparent; } From 416144265b540587bacfcc5e622df255f4ab497e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 12:06:29 +0200 Subject: [PATCH 07/29] fix(client): wrong positioning of modals due to mobile changes --- apps/client/src/stylesheets/style.css | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index e3d3f5279f..1d4bbf058d 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -1681,13 +1681,15 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { background: var(--main-background-color); } - .modal-dialog { - margin: var(--bs-modal-margin); - max-width: 80%; - } + body.mobile { + .modal-dialog { + margin: var(--bs-modal-margin); + max-width: 80%; + } - .modal-content { - height: 100%; + .modal-content { + height: 100%; + } } } From 0f3f49915ea5560cbaf99a3534c24daf354ca55d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 12:22:54 +0200 Subject: [PATCH 08/29] fix(mobile): note actions should be at the bottom, not above launch bar --- apps/client/src/stylesheets/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 1d4bbf058d..4c520be7ec 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -1552,8 +1552,8 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { max-height: calc(var(--tn-modal-max-height) - var(--dropdown-bottom)); } - body.mobile .modal-dialog .dropdown-menu.mobile-bottom-menu.show { - --dropdown-bottom: 0; + body.mobile .dropdown-menu.mobile-bottom-menu.show { + --dropdown-bottom: 0px; } #mobile-sidebar-container { From e38df0c731f5e3cb31ede0ff4823e02b35fcbbc6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:06:49 +0200 Subject: [PATCH 09/29] fix(mobile): note paths dialog doesn't trigger clone note to location --- apps/client/src/widgets/ribbon/NotePathsTab.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/ribbon/NotePathsTab.tsx b/apps/client/src/widgets/ribbon/NotePathsTab.tsx index 0b81ebe036..2ef9085331 100644 --- a/apps/client/src/widgets/ribbon/NotePathsTab.tsx +++ b/apps/client/src/widgets/ribbon/NotePathsTab.tsx @@ -1,7 +1,7 @@ import "./NotePathsTab.css"; import clsx from "clsx"; -import { useEffect, useMemo, useState } from "preact/hooks"; +import { useContext, useEffect, useMemo, useState } from "preact/hooks"; import FNote, { NotePathRecord } from "../../entities/fnote"; import { t } from "../../services/i18n"; @@ -9,7 +9,7 @@ import { NOTE_PATH_TITLE_SEPARATOR } from "../../services/tree"; import { useTriliumEvent } from "../react/hooks"; import LinkButton from "../react/LinkButton"; import NoteLink from "../react/NoteLink"; -import { joinElements } from "../react/react_utils"; +import { joinElements, ParentComponent } from "../react/react_utils"; import { TabContext } from "./ribbon-interface"; export default function NotePathsTab({ note, hoistedNoteId, notePath }: TabContext) { @@ -21,6 +21,7 @@ export function NotePathsWidget({ sortedNotePaths, currentNotePath }: { sortedNotePaths: NotePathRecord[] | undefined; currentNotePath?: string | null | undefined; }) { + const parentComponent = useContext(ParentComponent); return (
<> @@ -40,7 +41,7 @@ export function NotePathsWidget({ sortedNotePaths, currentNotePath }: { parentComponent?.triggerCommand("cloneNoteIdsTo")} />
From 48d06dcb06d92791c1b3d7d603ec86009998c371 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:17:28 +0200 Subject: [PATCH 10/29] fix(mobile): note context menu too tall in browser --- apps/client/src/stylesheets/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 4c520be7ec..90adc404f6 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -28,7 +28,7 @@ --bs-body-color: var(--main-text-color) !important; --bs-body-bg: var(--main-background-color) !important; --ck-mention-list-max-height: 500px; - --tn-modal-max-height: 90vh; + --tn-modal-max-height: 90svh; --tree-item-light-theme-max-color-lightness: 50; --tree-item-dark-theme-min-color-lightness: 75; From 99eec0c41e85b8f3d929d341a5a1da22c3783067 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:18:26 +0200 Subject: [PATCH 11/29] fix(mobile): duplicate promoted attributes --- apps/client/src/layouts/mobile_layout.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index 27b0779921..9913949a52 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -20,7 +20,6 @@ import NoteTitleWidget from "../widgets/note_title.js"; import NoteTreeWidget from "../widgets/note_tree.js"; import NoteWrapperWidget from "../widgets/note_wrapper.js"; import NoteDetail from "../widgets/NoteDetail.jsx"; -import PromotedAttributes from "../widgets/PromotedAttributes.jsx"; import QuickSearchWidget from "../widgets/quick_search.js"; import { useNoteContext } from "../widgets/react/hooks.jsx"; import StandaloneRibbonAdapter from "../widgets/ribbon/components/StandaloneRibbonAdapter.jsx"; @@ -155,7 +154,6 @@ export default class MobileLayout { .child() .child() ) - .child() .child( new ScrollingContainer() .filling() From 671a05470e2c32af2ea1598f24cc5d84ae169fce Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:24:08 +0200 Subject: [PATCH 12/29] fix(mobile): missing badge style in tree --- apps/client/src/widgets/note_tree.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/widgets/note_tree.css b/apps/client/src/widgets/note_tree.css index 57e3460ac2..dbcb66cbc1 100644 --- a/apps/client/src/widgets/note_tree.css +++ b/apps/client/src/widgets/note_tree.css @@ -1,4 +1,4 @@ -#left-pane .tree-wrapper { +.tree-wrapper { .note-indicator-icon.subtree-hidden-badge { font-family: inherit !important; margin-inline: 0.5em; From 66e0f1ab19bdc5eaeaef930feb158bfd0b36c5b7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:29:45 +0200 Subject: [PATCH 13/29] chore(mobile/tree): slightly bigger expanders --- apps/client/src/layouts/mobile_layout.tsx | 9 --------- apps/client/src/stylesheets/theme-next/shell.css | 6 ------ 2 files changed, 15 deletions(-) diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index 9913949a52..5b30fc2c90 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -67,12 +67,7 @@ const FANCYTREE_CSS = ` padding-inline-start: 10px; } -.fancytree-custom-icon { - font-size: 2em; -} - .fancytree-title { - font-size: 1.5em; margin-inline-start: 0.6em !important; } @@ -80,10 +75,6 @@ const FANCYTREE_CSS = ` padding: 5px; } -.fancytree-node .fancytree-expander:before { - font-size: 2em !important; -} - span.fancytree-expander { width: 24px !important; margin-inline-end: 5px; diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index fae4001f08..f665bcc843 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -739,12 +739,6 @@ body[dir=rtl] #left-pane span.fancytree-node.protected > span.fancytree-custom-i transform: translateX(-25%); } -body.mobile .fancytree-expander::before, -body.mobile .fancytree-title, -body.mobile .fancytree-node > span { - font-size: 1rem !important; -} - @media (max-width: 991px) { body.mobile #mobile-sidebar-container { background-color: rgba(0, 0, 0, 0.5); From 70523574b0b6247a333d1a887f4f88155ed4ace1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:37:04 +0200 Subject: [PATCH 14/29] refactor(client): extract mobile layout CSS to dedicated file --- apps/client/src/layouts/mobile_layout.css | 72 ++++++++++++++++++++ apps/client/src/layouts/mobile_layout.tsx | 82 +---------------------- 2 files changed, 75 insertions(+), 79 deletions(-) create mode 100644 apps/client/src/layouts/mobile_layout.css diff --git a/apps/client/src/layouts/mobile_layout.css b/apps/client/src/layouts/mobile_layout.css new file mode 100644 index 0000000000..95b9dd8afb --- /dev/null +++ b/apps/client/src/layouts/mobile_layout.css @@ -0,0 +1,72 @@ +span.keyboard-shortcut, +kbd { + display: none; +} + +.dropdown-menu { + font-size: larger; +} + +.action-button { + background: none; + border: none; + cursor: pointer; + font-size: 1.25em; + padding-inline-start: 0.5em; + padding-inline-end: 0.5em; + color: var(--main-text-color); +} +.quick-search { + margin: 0; +} +.quick-search .dropdown-menu { + max-width: 350px; +} + +/* #region Tree */ +.tree-wrapper { + max-height: 100%; + margin-top: 0px; + overflow-y: auto; + contain: content; + padding-inline-start: 10px; +} + +.fancytree-title { + margin-inline-start: 0.6em !important; +} + +.fancytree-node { + padding: 5px; +} + +span.fancytree-expander { + width: 24px !important; + margin-inline-end: 5px; +} + +.fancytree-loading span.fancytree-expander { + width: 24px; + height: 32px; +} + +.fancytree-loading span.fancytree-expander:after { + width: 20px; + height: 20px; + margin-top: 4px; + border-width: 2px; + border-style: solid; +} + +.tree-wrapper .collapse-tree-button, +.tree-wrapper .scroll-to-active-note-button, +.tree-wrapper .tree-settings-button { + position: fixed; + margin-inline-end: 16px; + display: none; +} + +.tree-wrapper .unhoist-button { + font-size: 200%; +} +/* #endregion */ diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index 5b30fc2c90..0f36f282c4 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -1,3 +1,5 @@ +import "./mobile_layout.css"; + import type AppContext from "../components/app_context.js"; import GlobalMenuWidget from "../widgets/buttons/global_menu.js"; import CloseZenModeButton from "../widgets/close_zen_button.js"; @@ -29,89 +31,11 @@ import SearchResult from "../widgets/search_result.jsx"; import MobileEditorToolbar from "../widgets/type_widgets/text/mobile_editor_toolbar.jsx"; import { applyModals } from "./layout_commons.js"; -const MOBILE_CSS = ` -`; - -const FANCYTREE_CSS = ` -`; - export default class MobileLayout { getRootWidget(appContext: typeof AppContext) { const rootContainer = new RootContainer(true) .setParent(appContext) .class("horizontal-layout") - .cssBlock(MOBILE_CSS) .child(new FlexContainer("column").id("mobile-sidebar-container")) .child( new FlexContainer("row") @@ -125,7 +49,7 @@ export default class MobileLayout { .css("padding-inline-start", "0") .css("padding-inline-end", "0") .css("contain", "content") - .child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget().cssBlock(FANCYTREE_CSS))) + .child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget())) ) .child( new ScreenContainer("detail", "row") From e021a54d2dfd3aad74ecf7cb0aacd09151df77bf Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 13:42:30 +0200 Subject: [PATCH 15/29] fix(mobile): formatting toolbar not appearing after read-only (closes #5368) --- .../text/mobile_editor_toolbar.tsx | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.tsx b/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.tsx index 86e7129ef6..8b266b3612 100644 --- a/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.tsx +++ b/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.tsx @@ -1,8 +1,10 @@ -import { MutableRef, useCallback, useEffect, useRef, useState } from "preact/hooks"; -import { useNoteContext, useTriliumEvent } from "../../react/hooks"; import "./mobile_editor_toolbar.css"; -import { isIOS } from "../../../services/utils"; + import { CKTextEditor, ClassicEditor } from "@triliumnext/ckeditor5"; +import { MutableRef, useCallback, useEffect, useRef, useState } from "preact/hooks"; + +import { isIOS } from "../../../services/utils"; +import { useIsNoteReadOnly, useNoteContext, useNoteProperty, useTriliumEvent } from "../../react/hooks"; interface MobileEditorToolbarProps { inPopupEditor?: boolean; @@ -17,17 +19,13 @@ interface MobileEditorToolbarProps { export default function MobileEditorToolbar({ inPopupEditor }: MobileEditorToolbarProps) { const containerRef = useRef(null); const { note, noteContext, ntxId } = useNoteContext(); - const [ shouldDisplay, setShouldDisplay ] = useState(false); + const noteType = useNoteProperty(note, "type"); + const { isReadOnly } = useIsNoteReadOnly(note, noteContext); + const shouldDisplay = noteType === "text" && !isReadOnly; const [ dropdownActive, setDropdownActive ] = useState(false); usePositioningOniOS(!inPopupEditor, containerRef); - useEffect(() => { - noteContext?.isReadOnly().then(isReadOnly => { - setShouldDisplay(note?.type === "text" && !isReadOnly); - }); - }, [ note ]); - // Attach the toolbar from the CKEditor. useTriliumEvent("textEditorRefreshed", ({ ntxId: eventNtxId, editor }) => { if (eventNtxId !== ntxId || !containerRef.current) return; @@ -62,15 +60,15 @@ export default function MobileEditorToolbar({ inPopupEditor }: MobileEditorToolb return (
-
+
- ) + ); } function usePositioningOniOS(enabled: boolean, wrapperRef: MutableRef) { const adjustPosition = useCallback(() => { if (!wrapperRef.current) return; - let bottom = window.innerHeight - (window.visualViewport?.height || 0); + const bottom = window.innerHeight - (window.visualViewport?.height || 0); wrapperRef.current.style.bottom = `${bottom}px`; }, []); From 8c848a4cb589bf6d0fcbb0741e819674a9a27a23 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 14:04:47 +0200 Subject: [PATCH 16/29] fix(mobile): wrong context activation logic when creating new split --- apps/client/src/stylesheets/style.css | 4 ++-- .../widgets/mobile_widgets/mobile_detail_menu.tsx | 12 ++++++++++-- apps/client/src/widgets/ribbon/NoteActions.tsx | 11 ++++++++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 90adc404f6..e94249741b 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -2639,10 +2639,10 @@ iframe.print-iframe { } } - /* #root-widget.virtual-keyboard-opened .note-split:not(:focus-within) { + #root-widget.virtual-keyboard-opened .note-split:not(.active) { max-height: 80px; opacity: 0.4; - } */ + } } } diff --git a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx index dc0c5e89cd..358a61ffc3 100644 --- a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx +++ b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx @@ -1,4 +1,5 @@ -import { createPortal, useState } from "preact/compat"; +import { Dropdown as BootstrapDropdown } from "bootstrap"; +import { createPortal, useRef, useState } from "preact/compat"; import FNote, { NotePathRecord } from "../../entities/fnote"; import { t } from "../../services/i18n"; @@ -13,6 +14,7 @@ import NoteActionsCustom from "../ribbon/NoteActionsCustom"; import { NotePathsWidget, useSortedNotePaths } from "../ribbon/NotePathsTab"; export default function MobileDetailMenu() { + const dropdownRef = useRef(null); const { note, noteContext, parentComponent, ntxId, viewScope, hoistedNoteId } = useNoteContext(); const subContexts = noteContext?.getMainContext().getSubContexts() ?? []; const isMainContext = noteContext?.isMainContext(); @@ -32,6 +34,7 @@ export default function MobileDetailMenu() {
{note ? (
@@ -60,7 +63,12 @@ export default function MobileDetailMenu() { {subContexts.length < 2 && <> parentComponent.triggerCommand("openNewNoteSplit", { ntxId })} + onClick={(e) => { + // We have to manually manage the hide because otherwise the old note context gets activated. + e.stopPropagation(); + dropdownRef.current?.hide(); + parentComponent.triggerCommand("openNewNoteSplit", { ntxId }); + }} icon="bx bx-dock-right" >{t("create_pane_button.create_new_split")} } diff --git a/apps/client/src/widgets/ribbon/NoteActions.tsx b/apps/client/src/widgets/ribbon/NoteActions.tsx index 51788085d2..daeab278cc 100644 --- a/apps/client/src/widgets/ribbon/NoteActions.tsx +++ b/apps/client/src/widgets/ribbon/NoteActions.tsx @@ -22,7 +22,7 @@ import MovePaneButton from "../buttons/move_pane_button"; import ActionButton from "../react/ActionButton"; import Dropdown from "../react/Dropdown"; import { FormDropdownDivider, FormDropdownSubmenu, FormListHeader, FormListItem, FormListToggleableItem } from "../react/FormList"; -import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumOption } from "../react/hooks"; +import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useSyncedRef, useTriliumEvent, useTriliumOption } from "../react/hooks"; import { ParentComponent } from "../react/react_utils"; import { NoteTypeDropdownContent, useNoteBookmarkState, useShareState } from "./BasicPropertiesTab"; import NoteActionsCustom from "./NoteActionsCustom"; @@ -63,8 +63,13 @@ function RevisionsButton({ note }: { note: FNote }) { type ItemToFocus = "basic-properties"; -export function NoteContextMenu({ note, noteContext, extraItems }: { note: FNote, noteContext?: NoteContext, extraItems?: ComponentChildren; }) { - const dropdownRef = useRef(null); +export function NoteContextMenu({ note, noteContext, extraItems, dropdownRef: externalDropdownRef }: { + note: FNote, + noteContext?: NoteContext, + extraItems?: ComponentChildren; + dropdownRef?: RefObject; +}) { + const dropdownRef = useSyncedRef(externalDropdownRef, null); const parentComponent = useContext(ParentComponent); const noteType = useNoteProperty(note, "type") ?? ""; const [viewType] = useNoteLabel(note, "viewType"); From ab89f16e7c7ac4d56de3b9d99839753ef0fd41e1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 14:29:47 +0200 Subject: [PATCH 17/29] fix(mobile): unnecessary separator for custom note actions --- apps/client/src/widgets/ribbon/NoteActionsCustom.css | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/client/src/widgets/ribbon/NoteActionsCustom.css b/apps/client/src/widgets/ribbon/NoteActionsCustom.css index e0ad0eb8fb..3c2a2000ce 100644 --- a/apps/client/src/widgets/ribbon/NoteActionsCustom.css +++ b/apps/client/src/widgets/ribbon/NoteActionsCustom.css @@ -1,4 +1,3 @@ body.mobile .note-actions-custom:not(:empty) { margin-bottom: calc(var(--bs-dropdown-divider-margin-y) * 2); - border-top: 1px solid var(--bs-dropdown-divider-bg); } From 1e70d066bdbb7ec5a1eda217631f7571414cbab4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 14:39:58 +0200 Subject: [PATCH 18/29] fix(mobile/tab_switcher): wrong preview for relation map --- apps/client/src/widgets/mobile_widgets/TabSwitcher.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css index f401ee61b0..e46bb0a808 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css @@ -94,7 +94,8 @@ &.type-book, &.type-contentWidget, &.type-search, - &.type-empty { + &.type-empty, + &.type-relationMap { display: flex; align-items: center; justify-content: center; From c1ea94423b656cc6c1551ab1424efd7c17d526e4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 14:46:52 +0200 Subject: [PATCH 19/29] refactor(client): use CSS file for content renderer --- apps/client/src/services/content_renderer.css | 12 ++++++++++++ apps/client/src/services/content_renderer.ts | 15 ++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 apps/client/src/services/content_renderer.css diff --git a/apps/client/src/services/content_renderer.css b/apps/client/src/services/content_renderer.css new file mode 100644 index 0000000000..a44fa54a29 --- /dev/null +++ b/apps/client/src/services/content_renderer.css @@ -0,0 +1,12 @@ +.rendered-content.no-preview { + display: flex; + flex-direction: column; + + & > div { + justify-content: space-around; + align-items: center; + height: 100%; + font-size: 500%; + flex-grow: 1; + } +} diff --git a/apps/client/src/services/content_renderer.ts b/apps/client/src/services/content_renderer.ts index 4fbf51024c..50fc94580d 100644 --- a/apps/client/src/services/content_renderer.ts +++ b/apps/client/src/services/content_renderer.ts @@ -1,3 +1,5 @@ +import "./content_renderer.css"; + import { normalizeMimeTypeForCKEditor } from "@triliumnext/commons"; import WheelZoom from 'vanilla-js-wheel-zoom'; @@ -71,18 +73,9 @@ export async function getRenderedContent(this: {} | { ctx: string }, entity: FNo $renderedContent.append($("
").append("
This note is protected and to access it you need to enter password.
").append("
").append($button)); } else if (entity instanceof FNote) { - $renderedContent - .css("display", "flex") - .css("flex-direction", "column"); + $renderedContent.addClass("no-preview"); $renderedContent.append( - $("
") - .css("display", "flex") - .css("justify-content", "space-around") - .css("align-items", "center") - .css("height", "100%") - .css("font-size", "500%") - .css("flex-grow", "1") - .append($("").addClass(entity.getIcon())) + $("
").append($("").addClass(entity.getIcon())) ); if (entity.type === "webView" && entity.hasLabel("webViewSrc")) { From fa72eb2edbac25913655df9b0ee8b135cd75f9fc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 14:53:00 +0200 Subject: [PATCH 20/29] fix(mobile/tab_switcher): view mode not displayed in title --- .../widgets/mobile_widgets/TabSwitcher.tsx | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx index 6ee84f0465..fc72a739a2 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx @@ -138,7 +138,6 @@ function Tab({ noteContext, containerRef, selectTab, activeNtxId }: { activeNtxId: string | null | undefined; }) { const { note } = noteContext; - const iconClass = useNoteIcon(note); const colorClass = note?.getColorClass() || ''; const workspaceTabBackgroundColorHue = getWorkspaceTabBackgroundColorHue(noteContext); const subContexts = noteContext.getSubContexts(); @@ -158,19 +157,7 @@ function Tab({ noteContext, containerRef, selectTab, activeNtxId }: { > {subContexts.map(subContext => ( -
- {subContext.note && } - {subContext.note?.title ?? t("tab_row.new_tab")} - {subContext.isMainContext() && { - // We are closing a tab, so we need to prevent propagation for click (activate tab). - e.stopPropagation(); - appContext.tabManager.removeNoteContext(subContext.ntxId); - }} - />} -
+
@@ -180,6 +167,32 @@ function Tab({ noteContext, containerRef, selectTab, activeNtxId }: { ); } +function TabHeader({ noteContext, colorClass }: { noteContext: NoteContext, colorClass: string }) { + const iconClass = useNoteIcon(noteContext.note); + const [ navigationTitle, setNavigationTitle ] = useState(null); + + // Manage the title for read-only notes + useEffect(() => { + noteContext?.getNavigationTitle().then(setNavigationTitle); + }, [noteContext]); + + return ( +
+ {noteContext.note && } + {navigationTitle ?? noteContext.note?.title ?? t("tab_row.new_tab")} + {noteContext.isMainContext() && { + // We are closing a tab, so we need to prevent propagation for click (activate tab). + e.stopPropagation(); + appContext.tabManager.removeNoteContext(noteContext.ntxId); + }} + />} +
+ ); +} + function TabPreviewContent({ note }: { note: FNote | null }) { From af89a0a88370f055df86c37105fad514f7dd260e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 15:17:39 +0200 Subject: [PATCH 21/29] fix(new_layout): note title actions shown in non-standard view modes --- apps/client/src/widgets/layout/NoteTitleActions.tsx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/apps/client/src/widgets/layout/NoteTitleActions.tsx b/apps/client/src/widgets/layout/NoteTitleActions.tsx index 96a2e92963..7c4e68698a 100644 --- a/apps/client/src/widgets/layout/NoteTitleActions.tsx +++ b/apps/client/src/widgets/layout/NoteTitleActions.tsx @@ -1,25 +1,21 @@ import "./NoteTitleActions.css"; -import clsx from "clsx"; import { useEffect, useState } from "preact/hooks"; import NoteContext from "../../components/note_context"; import FNote from "../../entities/fnote"; import { t } from "../../services/i18n"; -import CollectionProperties from "../note_bars/CollectionProperties"; import { checkFullHeight, getExtendedWidgetType } from "../NoteDetail"; import { PromotedAttributesContent, usePromotedAttributeData } from "../PromotedAttributes"; -import SimpleBadge from "../react/Badge"; import Collapsible, { ExternallyControlledCollapsible } from "../react/Collapsible"; import { useNoteContext, useNoteLabel, useNoteProperty, useTriliumEvent, useTriliumOptionBool } from "../react/hooks"; -import NoteLink, { NewNoteLink } from "../react/NoteLink"; +import { NewNoteLink } from "../react/NoteLink"; import { useEditedNotes } from "../ribbon/EditedNotesTab"; import SearchDefinitionTab from "../ribbon/SearchDefinitionTab"; import NoteTypeSwitcher from "./NoteTypeSwitcher"; export default function NoteTitleActions() { - const { note, ntxId, componentId, noteContext } = useNoteContext(); - const isHiddenNote = note && note.noteId !== "_search" && note.noteId.startsWith("_"); + const { note, ntxId, componentId, noteContext, viewScope } = useNoteContext(); const noteType = useNoteProperty(note, "type"); return ( @@ -27,7 +23,7 @@ export default function NoteTitleActions() { {noteType === "search" && } - + {viewScope?.viewMode === "default" && }
); } From 06af5e15cd07160fcc7b0eeec1ba4c90cabe608d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 15:41:15 +0200 Subject: [PATCH 22/29] feat(mobile/tab_switcher): consider view scope for preview --- .../widgets/mobile_widgets/TabSwitcher.css | 3 +- .../widgets/mobile_widgets/TabSwitcher.tsx | 44 ++++++++++++------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css index e46bb0a808..895940be9f 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css @@ -95,7 +95,8 @@ &.type-contentWidget, &.type-search, &.type-empty, - &.type-relationMap { + &.type-relationMap, + &.tab-preview-placeholder { display: flex; align-items: center; justify-content: center; diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx index fc72a739a2..ed3d735d1c 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx @@ -1,6 +1,7 @@ import "./TabSwitcher.css"; import clsx from "clsx"; +import { ComponentChild } from "preact"; import { createPortal, Fragment } from "preact/compat"; import { useCallback, useEffect, useRef, useState } from "preact/hooks"; @@ -11,6 +12,7 @@ import contextMenu from "../../menus/context_menu"; import { getHue, parseColor } from "../../services/css_class_manager"; import froca from "../../services/froca"; import { t } from "../../services/i18n"; +import type { ViewMode, ViewScope } from "../../services/link"; import { NoteContent } from "../collections/legacy/ListOrGridView"; import { LaunchBarActionButton } from "../launch_bar/launch_bar_widgets"; import { ICON_MAPPINGS } from "../note_bars/CollectionProperties"; @@ -20,6 +22,13 @@ import Icon from "../react/Icon"; import LinkButton from "../react/LinkButton"; import Modal from "../react/Modal"; +const VIEW_MODE_ICON_MAPPINGS: Record, string> = { + source: "bx bx-code", + "contextual-help": "bx bx-help-circle", + "note-map": "bx bxs-network-chart", + attachments: "bx bx-paperclip", +}; + export default function TabSwitcher() { const [ shown, setShown ] = useState(false); const mainNoteContexts = useMainNoteContexts(); @@ -158,9 +167,7 @@ function Tab({ noteContext, containerRef, selectTab, activeNtxId }: { {subContexts.map(subContext => ( -
- -
+
))}
@@ -193,24 +200,31 @@ function TabHeader({ noteContext, colorClass }: { noteContext: NoteContext, colo ); } -function TabPreviewContent({ note }: { - note: FNote | null +function TabPreviewContent({ note, viewScope }: { + note: FNote | null, + viewScope: ViewScope | undefined }) { + let el: ComponentChild; + let isPlaceholder = true; + if (!note) { - return ; - } - - if (note.type === "book") { - return ; - } - - return ( - ; + } else if (note.type === "book") { + el = ; + } else if (viewScope?.viewMode !== "default") { + el = ; + } else { + el = + />; + isPlaceholder = false; + } + + return ( +
{el}
); } From 7f891ef5237ed3963e06590b1a85b4e2be4f8b2f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 15:44:17 +0200 Subject: [PATCH 23/29] feat(mobile/tab_switcher): improve display for some text elements --- .../src/widgets/mobile_widgets/TabSwitcher.css | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css index 895940be9f..451fbefc6c 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css @@ -89,6 +89,16 @@ &.type-text { padding: 10px; + --ck-content-todo-list-checkmark-size: 8px; + + p { margin-bottom: 0.2em;} + hr { margin-block: 0.1em; height: 1px; } + h2 { font-size: 1.20em; } + h3 { font-size: 1.15em; } + h4 { font-size: 1.10em; } + h5 { font-size: 1.05em} + h6 { font-size: 1em; } + ul, ol { margin: 0 } } &.type-book, @@ -107,13 +117,6 @@ .preview-placeholder { font-size: 500%; } - - p { margin-bottom: 0.2em;} - h2 { font-size: 1.20em; } - h3 { font-size: 1.15em; } - h4 { font-size: 1.10em; } - h5 { font-size: 1.05em} - h6 { font-size: 1em; } } &.with-split { From 46f1cd38e0a1c5f63186ee6e7652abd6819c5e80 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 16:24:14 +0200 Subject: [PATCH 24/29] feat(mobile): enforce backdrop effects off --- .../src/widgets/containers/root_container.ts | 17 +++++++++-------- .../widgets/type_widgets/options/appearance.tsx | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/client/src/widgets/containers/root_container.ts b/apps/client/src/widgets/containers/root_container.ts index 03df4a8ec6..e81d867ef4 100644 --- a/apps/client/src/widgets/containers/root_container.ts +++ b/apps/client/src/widgets/containers/root_container.ts @@ -1,11 +1,12 @@ -import { EventData } from "../../components/app_context.js"; import { LOCALES } from "@triliumnext/commons"; -import { readCssVar } from "../../utils/css-var.js"; -import FlexContainer from "./flex_container.js"; -import options from "../../services/options.js"; -import type BasicWidget from "../basic_widget.js"; -import utils from "../../services/utils.js"; + +import { EventData } from "../../components/app_context.js"; import { getEnabledExperimentalFeatureIds } from "../../services/experimental_features.js"; +import options from "../../services/options.js"; +import utils, { isMobile } from "../../services/utils.js"; +import { readCssVar } from "../../utils/css-var.js"; +import type BasicWidget from "../basic_widget.js"; +import FlexContainer from "./flex_container.js"; /** * The root container is the top-most widget/container, from which the entire layout derives. @@ -88,7 +89,7 @@ export default class RootContainer extends FlexContainer { } #setBackdropEffects() { - const enabled = options.is("backdropEffectsEnabled"); + const enabled = options.is("backdropEffectsEnabled") && !isMobile(); document.body.classList.toggle("backdrop-effects-disabled", !enabled); } @@ -96,7 +97,7 @@ export default class RootContainer extends FlexContainer { // Supports background effects const useBgfx = readCssVar(document.documentElement, "allow-background-effects") - .asBoolean(false); + .asBoolean(false); document.body.classList.toggle("theme-supports-background-effects", useBgfx); } diff --git a/apps/client/src/widgets/type_widgets/options/appearance.tsx b/apps/client/src/widgets/type_widgets/options/appearance.tsx index 3cff63ed66..94fc1f1fbd 100644 --- a/apps/client/src/widgets/type_widgets/options/appearance.tsx +++ b/apps/client/src/widgets/type_widgets/options/appearance.tsx @@ -388,10 +388,10 @@ function Performance() { currentValue={shadowsEnabled} onChange={setShadowsEnabled} /> - + />} {isElectron() && } From aee1a6e1f0641512b370dd8906b80a989a9749c1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 16:28:07 +0200 Subject: [PATCH 25/29] fix(note_list): regression in the display of no previews --- apps/client/src/services/content_renderer.css | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/client/src/services/content_renderer.css b/apps/client/src/services/content_renderer.css index a44fa54a29..80764486d4 100644 --- a/apps/client/src/services/content_renderer.css +++ b/apps/client/src/services/content_renderer.css @@ -1,12 +1,9 @@ -.rendered-content.no-preview { +.rendered-content.no-preview > div { display: flex; flex-direction: column; - - & > div { - justify-content: space-around; - align-items: center; - height: 100%; - font-size: 500%; - flex-grow: 1; - } + justify-content: space-around; + align-items: center; + height: 100%; + font-size: 500%; + flex-grow: 1; } From b802c3174c1b10637798150a69b2b8647431833e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 16:29:51 +0200 Subject: [PATCH 26/29] style(mobile): add top border to bottom bar --- apps/client/src/stylesheets/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index e94249741b..5a09589e28 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -111,6 +111,7 @@ body.mobile #root-widget.virtual-keyboard-opened #mobile-bottom-bar { } #mobile-bottom-bar { + border-top: 1px solid var(--main-border-color); padding-bottom: var(--mobile-bottom-offset); } From 62534e0e93a8b2294454fc3d11f13f1fe7602906 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 16:43:46 +0200 Subject: [PATCH 27/29] chore(mobile/tab_switcher): launcher preview not looking good --- apps/client/src/widgets/mobile_widgets/TabSwitcher.css | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css index 451fbefc6c..8be65240b2 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.css +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.css @@ -106,6 +106,7 @@ &.type-search, &.type-empty, &.type-relationMap, + &.type-launcher, &.tab-preview-placeholder { display: flex; align-items: center; From ac3b289c9eff4cc94dfe53018a0e05e817301eb0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 16:46:22 +0200 Subject: [PATCH 28/29] feat(mobile): more stable fixed tree for launch bar config --- apps/client/src/stylesheets/style.css | 34 ------------------- .../src/stylesheets/theme-next/shell.css | 2 +- apps/client/src/widgets/NoteDetail.css | 25 +++++++++++++- apps/client/src/widgets/NoteDetail.tsx | 26 +++++++++----- 4 files changed, 42 insertions(+), 45 deletions(-) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 5a09589e28..88f5e328bb 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -1694,40 +1694,6 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { } } -@media (max-width: 991px) { - body.mobile.force-fixed-tree #mobile-sidebar-wrapper { - padding-top: 0; - position: static; - height: 40vh; - width: 100vw; - transform: none !important; - background-color: var(--left-pane-background-color) !important; - border-bottom: 0.5px solid var(--main-border-color); - } - - body.mobile.force-fixed-tree #mobile-sidebar-container { - display: none !important; - } - - body.mobile.force-fixed-tree #mobile-sidebar-wrapper .quick-search { - display: none; - } - - body.mobile.force-fixed-tree .component > button.bx-sidebar { - visibility: hidden; - padding: 0; - width: 6px; - } - - body.mobile.force-fixed-tree #mobile-rest-container { - flex-direction: column !important; - } - - body.mobile.force-fixed-tree #detail-container { - flex-grow: 1; - } -} - #launcher-pane { color: var(--launcher-pane-text-color); background-color: var(--launcher-pane-background-color); diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index f665bcc843..0df9d6686a 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -744,7 +744,7 @@ body[dir=rtl] #left-pane span.fancytree-node.protected > span.fancytree-custom-i background-color: rgba(0, 0, 0, 0.5); } - body.mobile:not(.force-fixed-tree) #mobile-sidebar-wrapper { + body.mobile #mobile-sidebar-wrapper { border-top-right-radius: 12px; border-bottom-right-radius: 12px; border-inline-end: 1px solid var(--subtle-border-color); diff --git a/apps/client/src/widgets/NoteDetail.css b/apps/client/src/widgets/NoteDetail.css index 4382277805..0f6cdbfb03 100644 --- a/apps/client/src/widgets/NoteDetail.css +++ b/apps/client/src/widgets/NoteDetail.css @@ -3,6 +3,29 @@ font-family: var(--detail-font-family); font-size: var(--detail-font-size); contain: none; + + &.fixed-tree { + display: flex; + flex-direction: column; + height: 100%; + + .fixed-note-tree-container { + height: 60%; + border-bottom: 1px solid var(--main-border-color); + + .tree-wrapper { + padding: 0; + } + + .tree { + padding: 0; + } + + ul { + margin: 0; + } + } + } } body.prefers-centered-content .note-detail { @@ -12,4 +35,4 @@ body.prefers-centered-content .note-detail { .note-detail > * { contain: none; -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index 64a485188e..14b7fc3b53 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -1,5 +1,7 @@ import "./NoteDetail.css"; +import clsx from "clsx"; +import { use } from "i18next"; import { isValidElement, VNode } from "preact"; import { useEffect, useRef, useState } from "preact/hooks"; @@ -12,8 +14,9 @@ import { t } from "../services/i18n"; import protected_session_holder from "../services/protected_session_holder"; import toast from "../services/toast.js"; import { dynamicRequire, isElectron, isMobile } from "../services/utils"; +import NoteTreeWidget from "./note_tree"; import { ExtendedNoteType, TYPE_MAPPINGS, TypeWidget } from "./note_types"; -import { useNoteContext, useTriliumEvent } from "./react/hooks"; +import { useLegacyWidget, useNote, useNoteContext, useTriliumEvent } from "./react/hooks"; import { NoteListWithLinks } from "./react/NoteList"; import { TypeWidgetProps } from "./type_widgets/type_widget"; @@ -36,6 +39,7 @@ export default function NoteDetail() { const [ noteTypesToRender, setNoteTypesToRender ] = useState<{ [ key in ExtendedNoteType ]?: (props: TypeWidgetProps) => VNode }>({}); const [ activeNoteType, setActiveNoteType ] = useState(); const widgetRequestId = useRef(0); + const hasFixedTree = noteContext?.hoistedNoteId === "_lbMobileRoot" && isMobile(); const props: TypeWidgetProps = { note: note!, @@ -119,13 +123,6 @@ export default function NoteDetail() { } }); - // Fixed tree for launch bar config on mobile. - useEffect(() => { - if (!isMobile) return; - const hasFixedTree = noteContext?.hoistedNoteId === "_lbMobileRoot"; - document.body.classList.toggle("force-fixed-tree", hasFixedTree); - }, [ note ]); - // Handle toast notifications. useEffect(() => { if (!isElectron()) return; @@ -215,8 +212,13 @@ export default function NoteDetail() { return (
+ {hasFixedTree && } + {Object.entries(noteTypesToRender).map(([ itemType, Element ]) => { return new NoteTreeWidget(), { noteContext }); + return
{treeEl}
; +} + /** * Wraps a single note type widget, in order to keep it in the DOM even after the user has switched away to another note type. This allows faster loading of the same note type again. The properties are cached, so that they are updated only * while the widget is visible, to avoid rendering in the background. When not visible, the DOM element is simply hidden. From e0b4ebed9357de6a375ceab2e6c1fd9bd709b71e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 4 Feb 2026 18:40:30 +0200 Subject: [PATCH 29/29] chore(mobile): address requested changes --- apps/client/src/widgets/NoteDetail.tsx | 3 +-- apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx | 2 +- .../src/widgets/type_widgets/text/mobile_editor_toolbar.tsx | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index 14b7fc3b53..4c3e778f1b 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -1,7 +1,6 @@ import "./NoteDetail.css"; import clsx from "clsx"; -import { use } from "i18next"; import { isValidElement, VNode } from "preact"; import { useEffect, useRef, useState } from "preact/hooks"; @@ -16,7 +15,7 @@ import toast from "../services/toast.js"; import { dynamicRequire, isElectron, isMobile } from "../services/utils"; import NoteTreeWidget from "./note_tree"; import { ExtendedNoteType, TYPE_MAPPINGS, TypeWidget } from "./note_types"; -import { useLegacyWidget, useNote, useNoteContext, useTriliumEvent } from "./react/hooks"; +import { useLegacyWidget, useNoteContext, useTriliumEvent } from "./react/hooks"; import { NoteListWithLinks } from "./react/NoteList"; import { TypeWidgetProps } from "./type_widgets/type_widget"; diff --git a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx index ed3d735d1c..ff92b6512e 100644 --- a/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx +++ b/apps/client/src/widgets/mobile_widgets/TabSwitcher.tsx @@ -211,7 +211,7 @@ function TabPreviewContent({ note, viewScope }: { el = ; } else if (note.type === "book") { el = ; - } else if (viewScope?.viewMode !== "default") { + } else if (viewScope?.viewMode && viewScope.viewMode !== "default") { el = ; } else { el =