From e7d6658c7a1303496d7a3e8f9659e7851410b139 Mon Sep 17 00:00:00 2001 From: misch334 <259832695+misch334@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:34:00 +0100 Subject: [PATCH 01/12] add generic launch.json for debugging/dap --- .vscode/launch.json | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..2573a8e852 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,38 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch server", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/apps/server/src/main.ts", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/tsx", + "env": { + "NODE_ENV": "development", + "TRILIUM_ENV": "dev", + "TRILIUM_DATA_DIR": "${input:trilium_data_dir}", + "TRILIUM_RESOURCE_DIR": "${workspaceFolder}/apps/server/src" + }, + "cwd": "${workspaceFolder}", + "skipFiles": ["/**", "${workspaceFolder}/node_modules/**"] + }, + { + "name": "Launch vitest", + "type": "node", + "request": "launch", + "program": "${file}", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/vitest", + "runtimeArgs": ["--inspectBrk", "--no-file-parallelism", "run"], + "cwd": "${workspaceFolder}", + "skipFiles": ["/**", "${workspaceFolder}/node_modules/**"] + } + ], + "inputs": [ + { + "id": "trilium_data_dir", + "type": "promptString", + "description": "Select Trilum Notes data directory", + "default": "${workspaceFolder}/apps/server/data" + } + ] +} From ef6c733f93fae2abfbdfed45e15c9c64ca5ddc5b Mon Sep 17 00:00:00 2001 From: misch334 <259832695+misch334@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:15:51 +0100 Subject: [PATCH 02/12] add options recommended by tsx.is docs --- .vscode/launch.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.vscode/launch.json b/.vscode/launch.json index 2573a8e852..953428cdb0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,6 +14,8 @@ "TRILIUM_RESOURCE_DIR": "${workspaceFolder}/apps/server/src" }, "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", "skipFiles": ["/**", "${workspaceFolder}/node_modules/**"] }, { From 5c007cdebc3a1ac0f41605c31a72ec5f84fb658a Mon Sep 17 00:00:00 2001 From: misch334 <259832695+misch334@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:45:56 +0100 Subject: [PATCH 03/12] adjust vi launch.json to be based on vitest.dev/guide/debugging --- .vscode/launch.json | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 953428cdb0..a45f8602fc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -19,14 +19,16 @@ "skipFiles": ["/**", "${workspaceFolder}/node_modules/**"] }, { - "name": "Launch vitest", + "name": "Launch Vitest with current test file", "type": "node", "request": "launch", - "program": "${file}", - "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/vitest", - "runtimeArgs": ["--inspectBrk", "--no-file-parallelism", "run"], - "cwd": "${workspaceFolder}", - "skipFiles": ["/**", "${workspaceFolder}/node_modules/**"] + "autoAttachChildProcesses": true, + "program": "${workspaceFolder}/node_modules/vitest/vitest.mjs", + "args": ["run", "${relativeFile}"], + "smartStep": true, + "console": "integratedTerminal", + "skipFiles": ["/**", "**/node_modules/**"], + "cwd": "${workspaceFolder}" } ], "inputs": [ From fd8ab990bdaa39d3522d4273899aa81223598de5 Mon Sep 17 00:00:00 2001 From: misch334 <259832695+misch334@users.noreply.github.com> Date: Wed, 11 Feb 2026 07:25:58 +0100 Subject: [PATCH 04/12] add autoAttachChildProcesses to launch server config --- .vscode/launch.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/launch.json b/.vscode/launch.json index a45f8602fc..6aee4ca1af 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -13,6 +13,7 @@ "TRILIUM_DATA_DIR": "${input:trilium_data_dir}", "TRILIUM_RESOURCE_DIR": "${workspaceFolder}/apps/server/src" }, + "autoAttachChildProcesses": true, "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", From 4c36a9cca93cb7dfb3f51fb090aadcbd6de38cc7 Mon Sep 17 00:00:00 2001 From: misch334 <259832695+misch334@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:11:21 +0100 Subject: [PATCH 05/12] add client and compound launch entry --- .vscode/launch.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.vscode/launch.json b/.vscode/launch.json index 6aee4ca1af..e69744775a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,6 +1,14 @@ { "version": "0.2.0", "configurations": [ + { + "name": "Launch client (Chrome)", + "request": "launch", + "type": "chrome", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}/apps/client", + "runtimeExecutable": "${input:pick_chrome_browser}" + }, { "name": "Launch server", "type": "node", @@ -32,12 +40,26 @@ "cwd": "${workspaceFolder}" } ], + "compounds": [ + { + "name": "Launch client (Chrome) and server", + "configurations": ["Launch server","Launch client (Chrome)"], + "stopAll": true + } + ], "inputs": [ { "id": "trilium_data_dir", "type": "promptString", "description": "Select Trilum Notes data directory", "default": "${workspaceFolder}/apps/server/data" + }, + { + "id": "pick_chrome_browser", + "type": "pickString", + "description": "Select a Chrome browser", + "options": ["/usr/bin/chromium-browser", "/usr/bin/google-chrome"], + "default": "/usr/bin/chromium-browser" } ] } From b5300e5b868a5abfa5bea60a7a10442112271261 Mon Sep 17 00:00:00 2001 From: misch334 <259832695+misch334@users.noreply.github.com> Date: Mon, 23 Feb 2026 12:29:29 +0100 Subject: [PATCH 06/12] make browser reference platform-agnostic and reliant on defaults --- .vscode/launch.json | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index e69744775a..c58bd439d9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,8 +6,7 @@ "request": "launch", "type": "chrome", "url": "http://localhost:8080", - "webRoot": "${workspaceFolder}/apps/client", - "runtimeExecutable": "${input:pick_chrome_browser}" + "webRoot": "${workspaceFolder}/apps/client" }, { "name": "Launch server", @@ -53,13 +52,6 @@ "type": "promptString", "description": "Select Trilum Notes data directory", "default": "${workspaceFolder}/apps/server/data" - }, - { - "id": "pick_chrome_browser", - "type": "pickString", - "description": "Select a Chrome browser", - "options": ["/usr/bin/chromium-browser", "/usr/bin/google-chrome"], - "default": "/usr/bin/chromium-browser" } ] } From 7ec718218e8205abdcaaac68878a7f7a94973919 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 23 Feb 2026 18:45:20 +0200 Subject: [PATCH 07/12] fix(hidden_subtree): attribute of wrong type (relation vs label) causing issues --- apps/server/src/services/hidden_subtree.spec.ts | 11 +++++++++++ apps/server/src/services/hidden_subtree.ts | 6 ++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/server/src/services/hidden_subtree.spec.ts b/apps/server/src/services/hidden_subtree.spec.ts index 3596c54b27..dd3939155b 100644 --- a/apps/server/src/services/hidden_subtree.spec.ts +++ b/apps/server/src/services/hidden_subtree.spec.ts @@ -192,5 +192,16 @@ describe("Hidden Subtree", () => { llmNote = becca.getNote(noteId); expect(llmNote).toBeFalsy(); }); + + it("fixes attribute of wrong type", () => { + const template = becca.getNoteOrThrow("_template_table"); + cls.init(() => { + template.setAttribute("relation", "template", "root"); + hiddenSubtreeService.checkHiddenSubtree(); + }); + const attr = template.getAttributes().find(a => a.name === "template"); + expect(attr).toBeDefined(); + expect(attr?.type).toBe("label"); + }); }); }); diff --git a/apps/server/src/services/hidden_subtree.ts b/apps/server/src/services/hidden_subtree.ts index 96ae485af6..37863b3282 100644 --- a/apps/server/src/services/hidden_subtree.ts +++ b/apps/server/src/services/hidden_subtree.ts @@ -467,8 +467,10 @@ function checkHiddenSubtreeRecursively(parentNoteId: string, item: HiddenSubtree } // Ensure value is consistent. - if (attribute.value !== attrDef.value) { - note.setAttributeValueById(attribute.attributeId, attrDef.value); + if (attribute.value !== attrDef.value || attribute.type !== attrDef.type) { + attribute.type = attrDef.type; + attribute.value = attrDef.value ?? ""; + attribute.save(); } } } From 1fd0fb03fae255629440920a6768b29d355b672a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 23 Feb 2026 18:46:09 +0200 Subject: [PATCH 08/12] chore(ckeditor): remove unnecessary priority See https://github.com/ckeditor/ckeditor5/pull/19115#issuecomment-3944720307 --- packages/ckeditor5/src/plugins/indent_block_shortcut.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/ckeditor5/src/plugins/indent_block_shortcut.ts b/packages/ckeditor5/src/plugins/indent_block_shortcut.ts index 813922dcec..281710e499 100644 --- a/packages/ckeditor5/src/plugins/indent_block_shortcut.ts +++ b/packages/ckeditor5/src/plugins/indent_block_shortcut.ts @@ -21,7 +21,6 @@ export default class IndentBlockShortcutPlugin extends Plugin { command.execute(); } }, { - priority: "highest", context: node => isWidget( node ) || node.is( 'editableElement' ), }); } From 7f013a58f523253d8626baf40908ef86413d2f2c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 23 Feb 2026 18:55:19 +0200 Subject: [PATCH 09/12] fix(backend_log): not scrollable --- apps/client/src/widgets/type_widgets/ContentWidget.css | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/client/src/widgets/type_widgets/ContentWidget.css b/apps/client/src/widgets/type_widgets/ContentWidget.css index 3d1e9c4b5b..d5a0aa8b7b 100644 --- a/apps/client/src/widgets/type_widgets/ContentWidget.css +++ b/apps/client/src/widgets/type_widgets/ContentWidget.css @@ -4,4 +4,5 @@ .note-detail.full-height .note-detail-content-widget-content { padding: 0; + height: 100%; } From b06d390df5aee55bb2611530a558266e4e41f769 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 23 Feb 2026 18:59:07 +0200 Subject: [PATCH 10/12] chore(server): use purple icon in dev mode --- apps/server/src/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index f2f7cdff9e..d2d830ee06 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -88,7 +88,7 @@ export default async function buildApp() { const sessionParser = (await import("./routes/session_parser.js")).default; app.use(sessionParser); - app.use(favicon(path.join(assetsDir, "icon.ico"))); + app.use(favicon(path.join(assetsDir, isDev ? "icon-dev.ico" : "icon.ico"))); if (openID.isOpenIDEnabled()) app.use(auth(openID.generateOAuthConfig())); From df4fa42acda3c2a086eeffa236a898e073e0150e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 23 Feb 2026 19:56:03 +0200 Subject: [PATCH 11/12] fix(desktop): protected session not refreshing while app is in background (closes #7761) --- apps/client/src/services/utils.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/client/src/services/utils.ts b/apps/client/src/services/utils.ts index 74de008845..bc35a0bd3f 100644 --- a/apps/client/src/services/utils.ts +++ b/apps/client/src/services/utils.ts @@ -14,7 +14,9 @@ export function reloadFrontendApp(reason?: string) { } if (isElectron()) { - dynamicRequire("@electron/remote").BrowserWindow.getFocusedWindow()?.reload(); + for (const window of dynamicRequire("@electron/remote").BrowserWindow.getAllWindows()) { + window.reload(); + } } else { window.location.reload(); } From 477e516473fab83ef8117a7b038abede8703a202 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:59:39 +0000 Subject: [PATCH 12/12] fix(deps): update dependency katex to v0.16.33 --- apps/client/package.json | 2 +- packages/share-theme/package.json | 2 +- pnpm-lock.yaml | 44 ++++++++++++++++++++++--------- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 7acbff720f..44c1f83e84 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -49,7 +49,7 @@ "jquery": "4.0.0", "jquery.fancytree": "2.38.5", "jsplumb": "2.15.6", - "katex": "0.16.28", + "katex": "0.16.33", "knockout": "3.5.1", "leaflet": "1.9.4", "leaflet-gpx": "2.2.0", diff --git a/packages/share-theme/package.json b/packages/share-theme/package.json index 2519b48637..20928a17cb 100644 --- a/packages/share-theme/package.json +++ b/packages/share-theme/package.json @@ -25,7 +25,7 @@ "license": "Apache-2.0", "dependencies": { "fuse.js": "7.1.0", - "katex": "0.16.28", + "katex": "0.16.33", "mermaid": "11.12.3" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55a6484280..faa2223026 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -282,8 +282,8 @@ importers: specifier: 2.15.6 version: 2.15.6 katex: - specifier: 0.16.28 - version: 0.16.28 + specifier: 0.16.33 + version: 0.16.33 knockout: specifier: 3.5.1 version: 3.5.1 @@ -1421,8 +1421,8 @@ importers: specifier: 7.1.0 version: 7.1.0 katex: - specifier: 0.16.28 - version: 0.16.28 + specifier: 0.16.33 + version: 0.16.33 mermaid: specifier: 11.12.3 version: 11.12.3 @@ -10295,8 +10295,8 @@ packages: engines: {node: '>= 10'} hasBin: true - katex@0.16.28: - resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==} + katex@0.16.33: + resolution: {integrity: sha512-q3N5u+1sY9Bu7T4nlXoiRBXWfwSefNGoKeOwekV+gw0cAXQlz2Ww6BLcmBxVDeXBMUDQv6fK5bcNaJLxob3ZQA==} hasBin: true kdbush@4.0.2: @@ -16096,6 +16096,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: @@ -16107,6 +16109,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-utils': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-collaboration-core@47.4.0': dependencies: @@ -16286,6 +16290,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: @@ -16315,8 +16321,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: @@ -16339,6 +16343,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: @@ -16364,6 +16370,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: @@ -16375,6 +16383,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.4.0 '@ckeditor/ckeditor5-undo': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-export-inline-styles@47.4.0': dependencies: @@ -16393,6 +16403,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: @@ -16480,6 +16492,8 @@ snapshots: '@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: @@ -16515,6 +16529,8 @@ 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': {} @@ -16546,6 +16562,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: @@ -16681,6 +16699,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: @@ -16810,6 +16830,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: @@ -17007,8 +17029,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: @@ -26787,7 +26807,7 @@ snapshots: - supports-color - utf-8-validate - katex@0.16.28: + katex@0.16.33: dependencies: commander: 8.3.0 @@ -27520,7 +27540,7 @@ snapshots: dagre-d3-es: 7.0.13 dayjs: 1.11.19 dompurify: 3.2.5 - katex: 0.16.28 + katex: 0.16.33 khroma: 2.1.0 lodash-es: 4.17.23 marked: 16.4.2