From c4f430276ac3762fc2f93ca474686f46d53d864c Mon Sep 17 00:00:00 2001 From: Jin <22962980+JYC333@users.noreply.github.com> Date: Sat, 14 Sep 2024 11:02:23 +0200 Subject: [PATCH 1/6] fix global menu advanced command can't click --- src/public/app/widgets/buttons/global_menu.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/public/app/widgets/buttons/global_menu.js b/src/public/app/widgets/buttons/global_menu.js index 842f4edb4..d4e65b989 100644 --- a/src/public/app/widgets/buttons/global_menu.js +++ b/src/public/app/widgets/buttons/global_menu.js @@ -280,7 +280,9 @@ export default class GlobalMenuWidget extends BasicWidget { this.dropdown.toggle(); }); this.$widget.on('click', '.dropdown-submenu', e => { - e.stopPropagation(); + if ($(e.target).children(".dropdown-menu").length === 1 || $(e.target).hasClass('dropdown-toggle')) { + e.stopPropagation(); + } }) this.$widget.find(".global-menu-button-update-available").append( From 9e85d2cdbd271c6bf8b98ac80d65eb6f08816c4b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 14 Sep 2024 14:34:24 +0300 Subject: [PATCH 2/6] server: Fix missing translations in keyboard actions --- src/becca/becca_loader.ts | 4 +++- src/services/keyboard_actions.ts | 4 ++++ src/services/sql_init.ts | 9 +++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/becca/becca_loader.ts b/src/becca/becca_loader.ts index 9df2362ed..8bdfd475e 100644 --- a/src/becca/becca_loader.ts +++ b/src/becca/becca_loader.ts @@ -13,11 +13,13 @@ import cls from "../services/cls.js"; import entityConstructor from "../becca/entity_constructor.js"; import { AttributeRow, BranchRow, EtapiTokenRow, NoteRow, OptionRow } from './entities/rows.js'; import AbstractBeccaEntity from "./entities/abstract_becca_entity.js"; -import options_init from "../services/options_init.js"; import ws from "../services/ws.js"; const beccaLoaded = new Promise(async (res, rej) => { const sqlInit = (await import("../services/sql_init.js")).default; + // We have to import async since options init requires keyboard actions which require translations. + const options_init = (await import("../services/options_init.js")).default; + sqlInit.dbReady.then(() => { cls.init(() => { load(); diff --git a/src/services/keyboard_actions.ts b/src/services/keyboard_actions.ts index c00186ef6..e039d52ba 100644 --- a/src/services/keyboard_actions.ts +++ b/src/services/keyboard_actions.ts @@ -18,6 +18,10 @@ const isElectron = utils.isElectron(); * e.g. CTRL-C in note tree does something a bit different from CTRL-C in the text editor. */ +if (!t("keyboard_actions.note-navigation")) { + throw new Error("Keyboard actions loaded before translations."); +} + const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [ { separator: t("keyboard_actions.note-navigation") diff --git a/src/services/sql_init.ts b/src/services/sql_init.ts index 715514746..256971423 100644 --- a/src/services/sql_init.ts +++ b/src/services/sql_init.ts @@ -11,7 +11,6 @@ import migrationService from "./migration.js"; import cls from "./cls.js"; import config from "./config.js"; import { OptionRow } from '../becca/entities/rows.js'; -import optionsInitService from "./options_init.js"; import BNote from "../becca/entities/bnote.js"; import BBranch from "../becca/entities/bbranch.js"; import zipImportService from "./import/zip.js"; @@ -62,6 +61,9 @@ async function createInitialDatabase() { let rootNote!: BNote; + // We have to import async since options init requires keyboard actions which require translations. + const optionsInitService = (await import("./options_init.js")).default; + sql.transactional(() => { log.info("Creating database schema ..."); @@ -86,7 +88,7 @@ async function createInitialDatabase() { isExpanded: true, notePosition: 10 }).save(); - + optionsInitService.initDocumentOptions(); optionsInitService.initNotSyncedOptions(true, defaultTheme, {}); optionsInitService.initStartupOptions(); @@ -129,6 +131,9 @@ async function createDatabaseForSync(options: OptionRow[], syncServerHost = '', const defaultTheme = await getDefaultTheme(); const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf8"); + // We have to import async since options init requires keyboard actions which require translations. + const optionsInitService = (await import("./options_init.js")).default; + sql.transactional(() => { sql.executeScript(schema); From 9b6148dec3da9f87bcb5919e402020ee4f8a0aa6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 14 Sep 2024 14:44:32 +0300 Subject: [PATCH 3/6] client: Translate attribute editor placeholder --- src/public/app/widgets/attribute_widgets/attribute_editor.js | 2 +- src/public/translations/en/translation.json | 3 ++- src/public/translations/ro/translation.json | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/public/app/widgets/attribute_widgets/attribute_editor.js b/src/public/app/widgets/attribute_widgets/attribute_editor.js index aa86ec5cc..cb843bf98 100644 --- a/src/public/app/widgets/attribute_widgets/attribute_editor.js +++ b/src/public/app/widgets/attribute_widgets/attribute_editor.js @@ -175,7 +175,7 @@ const editorConfig = { toolbar: { items: [] }, - placeholder: "Type the labels and relations here", + placeholder: t("attribute_editor.placeholder"), mention: mentionSetup }; diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 8b96ebf42..8a1e108b3 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -408,7 +408,8 @@ "add_new_label": "Add new label ", "add_new_relation": "Add new relation ", "add_new_label_definition": "Add new label definition", - "add_new_relation_definition": "Add new relation definition" + "add_new_relation_definition": "Add new relation definition", + "placeholder": "Type the labels and relations here" }, "abstract_bulk_action": { "remove_this_search_action": "Remove this search action" diff --git a/src/public/translations/ro/translation.json b/src/public/translations/ro/translation.json index 74d005cfb..f057c3600 100644 --- a/src/public/translations/ro/translation.json +++ b/src/public/translations/ro/translation.json @@ -237,7 +237,8 @@ "help_text_body1": "Pentru a adăuga o etichetă doar scrieți, spre exemplu, #piatră sau #an = 2020 dacă se dorește adăugarea unei valori", "help_text_body2": "Pentru relații, scrieți author = @ ce va afișa o autocompletare pentru identificarea notiței dorite.", "help_text_body3": "În mod alternativ, se pot adăuga etichete și relații utilizând butonul + din partea dreaptă.", - "save_attributes": "Salvează atributele " + "save_attributes": "Salvează atributele ", + "placeholder": "Aici puteți introduce etichete și relații" }, "backend_log": { "refresh": "Reîmprospătare" From e511d6aecf5453ee4cd560219d7929fb2048da9b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 14 Sep 2024 14:47:48 +0300 Subject: [PATCH 4/6] client: Fix strange margins when ribbon has hidden components --- src/public/app/widgets/ribbon_widgets/basic_properties.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/public/app/widgets/ribbon_widgets/basic_properties.js b/src/public/app/widgets/ribbon_widgets/basic_properties.js index a206c6643..b8b6fabaa 100644 --- a/src/public/app/widgets/ribbon_widgets/basic_properties.js +++ b/src/public/app/widgets/ribbon_widgets/basic_properties.js @@ -17,12 +17,15 @@ const TPL = ` flex-wrap: wrap; } - .basic-properties-widget > * { - margin-right: 30px; + .basic-properties-widget > * { margin-top: 9px; margin-bottom: 2px; } + .basic-properties-widget > * > :last-child { + margin-right: 30px; + } + .note-type-container, .editability-select-container { display: flex; align-items: center; From 88875a33757aa68ae0544f385704a1d6948d6ec7 Mon Sep 17 00:00:00 2001 From: perfectra1n Date: Sat, 14 Sep 2024 12:50:25 -0700 Subject: [PATCH 5/6] Print Docker container log, if success or failure healthcheck --- .github/workflows/main-docker.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main-docker.yml b/.github/workflows/main-docker.yml index 6b0c13f7e..43049175b 100644 --- a/.github/workflows/main-docker.yml +++ b/.github/workflows/main-docker.yml @@ -65,10 +65,12 @@ jobs: tags: ${{ env.TEST_TAG }} cache-from: type=gha cache-to: type=gha,mode=max - - - name: Run the container in the background - run: docker run -d --rm --name trilium_local ${{ env.TEST_TAG }} - + + - name: Validate container run output + run: | + CONTAINER_ID=$(docker run -d --log-driver=journald --rm --name trilium_local ${{ env.TEST_TAG }}) + echo "Container ID: $CONTAINER_ID" + - name: Wait for the healthchecks to pass uses: stringbean/docker-healthcheck-action@v1 with: @@ -77,6 +79,12 @@ jobs: require-status: running require-healthy: true + # Print the entire log of the container thus far, regardless if the healthcheck failed or succeeded + - name: Print entire log + if: always() + run: | + journalctl -u docker CONTAINER_NAME=trilium_local --no-pager + build: name: Build Docker images runs-on: ubuntu-latest From ec7fabcb582ca326a37ed4132e1b2f24a51ad39b Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Sun, 15 Sep 2024 22:22:38 +0800 Subject: [PATCH 6/6] Floating buttons can be displayed again after being closed --- .../floating_buttons/floating_buttons.js | 40 +++++++++++++++++-- .../hide_floating_buttons_button.js | 2 +- src/public/translations/en/translation.json | 3 ++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/public/app/widgets/floating_buttons/floating_buttons.js b/src/public/app/widgets/floating_buttons/floating_buttons.js index 75c30ca75..8e8db3292 100644 --- a/src/public/app/widgets/floating_buttons/floating_buttons.js +++ b/src/public/app/widgets/floating_buttons/floating_buttons.js @@ -1,4 +1,5 @@ import NoteContextAwareWidget from "../note_context_aware_widget.js"; +import { t } from "../../services/i18n.js"; const TPL = `
@@ -7,7 +8,7 @@ const TPL = ` position: relative; } - .floating-buttons-children { + .floating-buttons-children,.show-floating-buttons { position: absolute; top: 10px; right: 10px; @@ -42,12 +43,44 @@ const TPL = ` border-color: var(--button-border-color); } - .floating-buttons.temporarily-hidden { + .floating-buttons .floating-buttons-children.temporarily-hidden { display: none; }
+ + +
+ + + +
`; export default class FloatingButtons extends NoteContextAwareWidget { @@ -62,10 +95,11 @@ export default class FloatingButtons extends NoteContextAwareWidget { async refreshWithNote(note) { this.toggle(true); + this.$widget.find(".show-floating-buttons-button").on('click', () => this.toggle(true)); } toggle(show) { - this.$widget.toggleClass("temporarily-hidden", !show); + this.$widget.find(".floating-buttons-children").toggleClass("temporarily-hidden", !show); } hideFloatingButtonsCommand() { diff --git a/src/public/app/widgets/floating_buttons/hide_floating_buttons_button.js b/src/public/app/widgets/floating_buttons/hide_floating_buttons_button.js index 3d1a8146c..a0fa71d6a 100644 --- a/src/public/app/widgets/floating_buttons/hide_floating_buttons_button.js +++ b/src/public/app/widgets/floating_buttons/hide_floating_buttons_button.js @@ -27,7 +27,7 @@ const TPL = ` `; diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 8a1e108b3..b8855153b 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -660,6 +660,9 @@ "hide_floating_buttons_button": { "button_title": "Hide buttons" }, + "show_floating_buttons_button": { + "button_title": "Show buttons" + }, "svg_export_button": { "button_title": "Export diagram as SVG" },