diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..c58bd439d9 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,57 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch client (Chrome)", + "request": "launch", + "type": "chrome", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}/apps/client" + }, + { + "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" + }, + "autoAttachChildProcesses": true, + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "skipFiles": ["/**", "${workspaceFolder}/node_modules/**"] + }, + { + "name": "Launch Vitest with current test file", + "type": "node", + "request": "launch", + "autoAttachChildProcesses": true, + "program": "${workspaceFolder}/node_modules/vitest/vitest.mjs", + "args": ["run", "${relativeFile}"], + "smartStep": true, + "console": "integratedTerminal", + "skipFiles": ["/**", "**/node_modules/**"], + "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" + } + ] +} 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/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(); } 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%; } 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())); 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(); } } } 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' ), }); } 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