From a904e82d728973b09df4c2d2be2b22ae7de56282 Mon Sep 17 00:00:00 2001 From: Sylvain Pasche Date: Wed, 21 Sep 2022 23:29:12 +0200 Subject: [PATCH 01/16] use same variable as Firefox for scrollbar thumb Use --active-item-background-color variable for scrollbar thumb background color on WebKit browsers (which is already used for Firefox). This should improve visibility of the scrollbar. --- src/public/stylesheets/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index 65ba93bd6..cf3cd4096 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -778,7 +778,7 @@ body { ::-webkit-scrollbar-thumb { border-radius: 3px; border: 1px solid var(--scrollbar-border-color); - background-color: var(--main-background-color); + background-color: var(--active-item-background-color); } ::-webkit-scrollbar-corner { From 5820f874fc738259a66a87ff4a9eedb5ebc96eb6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 27 Feb 2023 00:59:46 +0200 Subject: [PATCH 02/16] Fix infinite loop in autocompletion In some cases, the token used for highlighting autocompletion gets to be empty, resulting in an infinte loop. One such case is searching for `''` (without the backticks). --- src/services/search/services/search.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/services/search/services/search.js b/src/services/search/services/search.js index 3b18c0b33..b9ead869a 100644 --- a/src/services/search/services/search.js +++ b/src/services/search/services/search.js @@ -334,6 +334,11 @@ function highlightSearchResults(searchResults, highlightedTokens) { } for (const token of highlightedTokens) { + if (!token) { + // Avoid empty tokens, which might cause an infinite loop. + continue; + } + for (const result of searchResults) { // Reset token const tokenRegex = new RegExp(utils.escapeRegExp(token), "gi"); From 4cd54e5a9addd05655bca5b98c314d7d8a8a1091 Mon Sep 17 00:00:00 2001 From: MeIchthys <10717998+meichthys@users.noreply.github.com> Date: Thu, 9 Mar 2023 11:51:13 -0500 Subject: [PATCH 03/16] Emojify Readme --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index dc451dbc9..d2806af64 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ # Trilium Notes -[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) +[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) -[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for quick overview: -![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png) +Trilium Screenshot Ukraine is currently defending itself from Russian aggression, please consider [donating to Ukrainian Army or humanitarian charities](https://standforukraine.com/). -drawing +

+ drawing + Trilium Notes supports Ukraine! +

-Trilium Notes supports Ukraine! - -## Features +## 🎁 Features * Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes)) * Rich WYSIWYG note editing including e.g. tables, images and [math](https://github.com/zadam/trilium/wiki/Text-notes#math-support) with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-notes#autoformat) @@ -37,7 +37,7 @@ Ukraine is currently defending itself from Russian aggression, please consider [ Check out [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party themes, scripts, plugins and more. -## Builds +## 🏗 Builds Trilium is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support). @@ -49,13 +49,13 @@ Trilium is also provided as a Flatpak: [](https://flathub.org/apps/details/com.github.zadam.trilium) -## Documentation +## 📝 Documentation [See wiki for complete list of documentation pages.](https://github.com/zadam/trilium/wiki/) You can also read [Patterns of personal knowledge base](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base) to get some inspiration on how you might use Trilium. -## Contribute +## 💻 Contribute Use a browser based dev environment @@ -67,17 +67,17 @@ npm install npm run start-server ``` -## Shoutouts +## 📢 Shoutouts * [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team * [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it. * [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages * [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) -## Donating +## 🤝 Support -You can donate using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). +You can support Trilum using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). -## License +## 🔑 License This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. From 02f218389b2eaed8459fc44303756beffe23b175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D1=88=D0=BA=D0=B0724=D0=B0=D1=8F?= Date: Sat, 11 Mar 2023 20:21:32 +1100 Subject: [PATCH 04/16] support listening on unix sockets --- src/services/port.js | 2 +- src/www | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/services/port.js b/src/services/port.js index 559385644..bba42b7c7 100644 --- a/src/services/port.js +++ b/src/services/port.js @@ -6,7 +6,7 @@ const dataDir = require('./data_dir'); function parseAndValidate(portStr, source) { const portNum = parseInt(portStr); - if (!portNum || portNum < 0 || portNum >= 65536) { + if (!portNum && portNum !== 0 || portNum < 0 || portNum >= 65536) { console.log(`FATAL ERROR: Invalid port value "${portStr}" from ${source}, should be a number between 0 and 65536.`); process.exit(-1); } diff --git a/src/www b/src/www index 778197e37..16989404b 100644 --- a/src/www +++ b/src/www @@ -100,7 +100,11 @@ async function startTrilium() { */ httpServer.keepAliveTimeout = 120000 * 5; - httpServer.listen(port, host); + if (port !== 0) { + httpServer.listen(port, host); // TCP socket. + } else { + httpServer.listen(host); // Unix socket. + } httpServer.on('error', error => { if (error.syscall !== 'listen') { throw error; From 9a08aa2ab5b001ce0be493565646e9fa4c871690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D1=88=D0=BA=D0=B0724=D0=B0=D1=8F?= Date: Sat, 11 Mar 2023 20:57:16 +1100 Subject: [PATCH 05/16] Fix healthcheck and some messages --- docker_healthcheck.js | 19 ++++++++++++++----- src/www | 13 ++++++++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/docker_healthcheck.js b/docker_healthcheck.js index eeceea584..7c8258ba6 100755 --- a/docker_healthcheck.js +++ b/docker_healthcheck.js @@ -10,18 +10,27 @@ if (config.https) { const port = require('./src/services/port'); const host = require('./src/services/host'); -const url = `http://${host}:${port}/api/health-check`; -const options = { timeout: 2000 }; -const request = http.request(url, options, res => { + +let options = {timeout: 2000}; +const callback = res => { console.log(`STATUS: ${res.statusCode}`); if (res.statusCode === 200) { process.exit(0); } else { process.exit(1); } -}); +}; +let request; +if (port !== 0) { // TCP socket. + const url = `http://${host}:${port}/api/health-check`; + request = http.request(url, options, callback); +} else { // Unix socket. + options.socketPath = host; + options.path = '/api/health-check'; + request = http.request(options, callback); +} request.on("error", err => { console.log("ERROR"); process.exit(1); }); -request.end(); \ No newline at end of file +request.end(); diff --git a/src/www b/src/www index 16989404b..1bf484520 100644 --- a/src/www +++ b/src/www @@ -100,13 +100,14 @@ async function startTrilium() { */ httpServer.keepAliveTimeout = 120000 * 5; - if (port !== 0) { + const listenTcp = port !== 0; + if (listenTcp) { httpServer.listen(port, host); // TCP socket. } else { httpServer.listen(host); // Unix socket. } httpServer.on('error', error => { - if (error.syscall !== 'listen') { + if (!listenTcp || error.syscall !== 'listen') { throw error; } @@ -128,7 +129,13 @@ async function startTrilium() { } ) - httpServer.on('listening', () => log.info(`Listening on port ${httpServer.address().port}`)); + httpServer.on('listening', () => { + if (listenTcp) { + log.info(`Listening on port ${port}`) + } else { + log.info(`Listening on unix socket ${host}`) + } + }); ws.init(httpServer, sessionParser); From 0c806024fb3cb7ea8dec87fedbfa9aebd7c7ed8e Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 12 Mar 2023 21:20:34 +0100 Subject: [PATCH 06/16] added some extra allowed URI schemes, fixes #3692 --- src/services/html_sanitizer.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/services/html_sanitizer.js b/src/services/html_sanitizer.js index 32b275d17..899987b49 100644 --- a/src/services/html_sanitizer.js +++ b/src/services/html_sanitizer.js @@ -45,7 +45,12 @@ function sanitize(dirtyHtml) { 'table': [ 'class' ], 'en-media': [ 'hash' ] }, - allowedSchemes: ['http', 'https', 'ftp', 'mailto', 'data', 'evernote'], + allowedSchemes: [ + 'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'irc', 'gemini', 'git', + 'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message', + 'mumble', 'nfs', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp', 'view-source', + 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack' + ], transformTags, }); } From 8de67b69455c761f7402e256a892535c9440c3d4 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 12 Mar 2023 21:37:13 +0100 Subject: [PATCH 07/16] small fixes / refactoring --- docker_healthcheck.js | 6 +++++- src/services/port.js | 4 ++-- src/www | 8 ++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docker_healthcheck.js b/docker_healthcheck.js index 7c8258ba6..c5d255595 100755 --- a/docker_healthcheck.js +++ b/docker_healthcheck.js @@ -11,7 +11,8 @@ if (config.https) { const port = require('./src/services/port'); const host = require('./src/services/host'); -let options = {timeout: 2000}; +const options = { timeout: 2000 }; + const callback = res => { console.log(`STATUS: ${res.statusCode}`); if (res.statusCode === 200) { @@ -20,7 +21,9 @@ const callback = res => { process.exit(1); } }; + let request; + if (port !== 0) { // TCP socket. const url = `http://${host}:${port}/api/health-check`; request = http.request(url, options, callback); @@ -29,6 +32,7 @@ if (port !== 0) { // TCP socket. options.path = '/api/health-check'; request = http.request(options, callback); } + request.on("error", err => { console.log("ERROR"); process.exit(1); diff --git a/src/services/port.js b/src/services/port.js index bba42b7c7..c57f22a5d 100644 --- a/src/services/port.js +++ b/src/services/port.js @@ -6,8 +6,8 @@ const dataDir = require('./data_dir'); function parseAndValidate(portStr, source) { const portNum = parseInt(portStr); - if (!portNum && portNum !== 0 || portNum < 0 || portNum >= 65536) { - console.log(`FATAL ERROR: Invalid port value "${portStr}" from ${source}, should be a number between 0 and 65536.`); + if (isNaN(portNum) || portNum < 0 || portNum >= 65536) { + console.log(`FATAL ERROR: Invalid port value "${portStr}" from ${source}, should be an integer between 0 and 65536.`); process.exit(-1); } diff --git a/src/www b/src/www index 1bf484520..136feabf3 100644 --- a/src/www +++ b/src/www @@ -100,14 +100,14 @@ async function startTrilium() { */ httpServer.keepAliveTimeout = 120000 * 5; - const listenTcp = port !== 0; - if (listenTcp) { + const listenOnTcp = port !== 0; + if (listenOnTcp) { httpServer.listen(port, host); // TCP socket. } else { httpServer.listen(host); // Unix socket. } httpServer.on('error', error => { - if (!listenTcp || error.syscall !== 'listen') { + if (!listenOnTcp || error.syscall !== 'listen') { throw error; } @@ -130,7 +130,7 @@ async function startTrilium() { ) httpServer.on('listening', () => { - if (listenTcp) { + if (listenOnTcp) { log.info(`Listening on port ${port}`) } else { log.info(`Listening on unix socket ${host}`) From 29eae4eeb6114100a8ab3b1ff8b3a771c5aa871d Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 12 Mar 2023 23:05:54 +0100 Subject: [PATCH 08/16] fixed jsdoc --- src/becca/entities/bnote.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/becca/entities/bnote.js b/src/becca/entities/bnote.js index 6ef73b28d..07ebd612f 100644 --- a/src/becca/entities/bnote.js +++ b/src/becca/entities/bnote.js @@ -1362,7 +1362,7 @@ class BNote extends AbstractBeccaEntity { /** * @param parentNoteId - * @returns {{success: boolean, message: string}} + * @returns {{success: boolean, message: string, branchId: string, notePath: string}} */ cloneTo(parentNoteId) { const cloningService = require("../../services/cloning"); From 697f6ee2a99d65591e67e0823c1d3fed2e97473e Mon Sep 17 00:00:00 2001 From: MeIchthys <10717998+meichthys@users.noreply.github.com> Date: Mon, 13 Mar 2023 10:36:25 -0400 Subject: [PATCH 09/16] Add `onenote` Scheme to html sanitizer --- src/services/html_sanitizer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/html_sanitizer.js b/src/services/html_sanitizer.js index 899987b49..4693ee1df 100644 --- a/src/services/html_sanitizer.js +++ b/src/services/html_sanitizer.js @@ -48,8 +48,8 @@ function sanitize(dirtyHtml) { allowedSchemes: [ 'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'irc', 'gemini', 'git', 'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message', - 'mumble', 'nfs', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp', 'view-source', - 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack' + 'mumble', 'nfs', 'onenote', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp', + 'view-source', 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack' ], transformTags, }); From 0b2401146863f20bd868dafeb7c4de8bd6f6c34c Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 14 Mar 2023 20:32:35 +0100 Subject: [PATCH 10/16] docker_healthcheck.js should not create log files, #3677 --- docker_healthcheck.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker_healthcheck.js b/docker_healthcheck.js index c5d255595..2602cd706 100755 --- a/docker_healthcheck.js +++ b/docker_healthcheck.js @@ -1,5 +1,8 @@ const http = require("http"); -const config = require("./src/services/config"); +const ini = require("ini"); +const fs = require("fs"); +const dataDir = require("./src/services/data_dir"); +const config = ini.parse(fs.readFileSync(dataDir.CONFIG_INI_PATH, 'utf-8')); if (config.https) { // built-in TLS (terminated by trilium) is not supported yet, PRs are welcome From e6803e9a9bf76e1b7020ca9c59a3c0f74db45c46 Mon Sep 17 00:00:00 2001 From: holo Date: Wed, 15 Mar 2023 00:01:25 +0000 Subject: [PATCH 11/16] =?UTF-8?q?=E2=80=9CDocker=20non-root=20healthcheck?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fe88bfb02..84db0939b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,4 +39,4 @@ RUN adduser -s /bin/false node; exit 0 EXPOSE 8080 CMD [ "./start-docker.sh" ] -HEALTHCHECK --start-period=10s CMD node docker_healthcheck.js +HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js From eebf3299831ccdb8ad97dde6644db7b49a0a6db1 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 14 Mar 2023 20:56:12 +0100 Subject: [PATCH 12/16] Avoid EditableCode inheriting mode from previous notes. Previously, if CodeMirror doesn't support a mode explicitly the mode wouldn't be updated on refresh. This means editors like Mermaid would get their mode "inherited" from the previous mode you had open. Now the mode is set to text/plain if CodeMirror doesn't support the note's MIME type. P.S. some of the mermaid diagrams in the demo data have their MIME type incorrectly set to text/plain rather than text/mermaid, so it doesn't reproduce on all diagrams in the demo data. --- .../app/widgets/type_widgets/editable_code.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/public/app/widgets/type_widgets/editable_code.js b/src/public/app/widgets/type_widgets/editable_code.js index 144f1392d..abb55b36b 100644 --- a/src/public/app/widgets/type_widgets/editable_code.js +++ b/src/public/app/widgets/type_widgets/editable_code.js @@ -77,12 +77,15 @@ export default class EditableCodeTypeWidget extends TypeWidget { this.codeEditor.setValue(noteComplement.content || ""); this.codeEditor.clearHistory(); - const info = CodeMirror.findModeByMIME(note.mime); - - if (info) { - this.codeEditor.setOption("mode", info.mime); - CodeMirror.autoLoadMode(this.codeEditor, info.mode); + let info = CodeMirror.findModeByMIME(note.mime); + if (!info) { + // Switch back to plain text if CodeMirror does not have a mode for whatever MIME type we're editing. + // To avoid inheriting a mode from a previously open code note. + info = CodeMirror.findModeByMIME("text/plain"); } + + this.codeEditor.setOption("mode", info.mime); + CodeMirror.autoLoadMode(this.codeEditor, info.mode); }); this.show(); From 54e21bf249f367753b4d4dad35d57bbb1f0ef000 Mon Sep 17 00:00:00 2001 From: MeIchthys <10717998+meichthys@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:58:40 -0400 Subject: [PATCH 13/16] Capitalize `Owned Attributes` title --- src/public/app/widgets/ribbon_widgets/owned_attribute_list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js b/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js index 836d39a98..343cf8ff4 100644 --- a/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js +++ b/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js @@ -48,7 +48,7 @@ export default class OwnedAttributeListWidget extends NoteContextAwareWidget { getTitle() { return { show: !this.note.isLaunchBarConfig(), - title: "Owned attributes", + title: "Owned Attributes", icon: "bx bx-list-check" }; } From b1153f8d014197ccacfff81be11248fd712b6d6e Mon Sep 17 00:00:00 2001 From: MeIchthys <10717998+meichthys@users.noreply.github.com> Date: Tue, 14 Mar 2023 16:01:08 -0400 Subject: [PATCH 14/16] Capitalize `Inherited Attributes` for consistency --- .../app/widgets/ribbon_widgets/inherited_attribute_list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js b/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js index 19263fdf4..e434c20a6 100644 --- a/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js +++ b/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js @@ -44,7 +44,7 @@ export default class InheritedAttributesWidget extends NoteContextAwareWidget { getTitle() { return { show: !this.note.isLaunchBarConfig(), - title: "Inherited attributes", + title: "Inherited Attributes", icon: "bx bx-list-plus" }; } From 7cda81ec68bec90ba3dbeaab149f17a9fa31316c Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 14 Mar 2023 21:07:14 +0100 Subject: [PATCH 15/16] fix default keyboard shortcuts for mac forward, back, closes #3708 --- src/services/keyboard_actions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/keyboard_actions.js b/src/services/keyboard_actions.js index d665692a9..063bcdbda 100644 --- a/src/services/keyboard_actions.js +++ b/src/services/keyboard_actions.js @@ -14,13 +14,13 @@ const DEFAULT_KEYBOARD_ACTIONS = [ { actionName: "backInNoteHistory", // Mac has a different history navigation shortcuts - https://github.com/zadam/trilium/issues/376 - defaultShortcuts: isMac ? ["Meta+Left"] : ["Alt+Left"], + defaultShortcuts: isMac ? ["CommandOrControl+Left"] : ["Alt+Left"], scope: "window" }, { actionName: "forwardInNoteHistory", // Mac has a different history navigation shortcuts - https://github.com/zadam/trilium/issues/376 - defaultShortcuts: isMac ? ["Meta+Right"] : ["Alt+Right"], + defaultShortcuts: isMac ? ["CommandOrControl+Right"] : ["Alt+Right"], scope: "window" }, { From 48ba73e06d21d2ae5ec4f77d03982bfa973457e9 Mon Sep 17 00:00:00 2001 From: MeIchthys <10717998+meichthys@users.noreply.github.com> Date: Wed, 15 Mar 2023 09:56:26 -0400 Subject: [PATCH 16/16] Fixes #3718 --- src/public/app/widgets/sql_table_schemas.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/public/app/widgets/sql_table_schemas.js b/src/public/app/widgets/sql_table_schemas.js index 8a986fe04..5764636b5 100644 --- a/src/public/app/widgets/sql_table_schemas.js +++ b/src/public/app/widgets/sql_table_schemas.js @@ -6,8 +6,9 @@ const TPL = ` - + Tables: `;