From ea3f47b8fa923ffa1f86307f9c0b522b52e672b1 Mon Sep 17 00:00:00 2001 From: meichthys Date: Mon, 14 Oct 2024 01:12:43 -0400 Subject: [PATCH 001/171] Move Description section to top of bug report --- .github/ISSUE_TEMPLATE/bug_report.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 28347d8b6..bda19fdc0 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -3,6 +3,12 @@ description: Report a bug title: "(Bug report) " labels: "Type: Bug" body: +- type: textarea + attributes: + label: Description + description: A clear and concise description of the bug and any additional information. + validations: + required: true - type: input attributes: label: TriliumNext Version @@ -38,12 +44,6 @@ body: placeholder: "e.g. Windows 10 version 1909, macOS Catalina 10.15.7, or Ubuntu 20.04" validations: required: true -- type: textarea - attributes: - label: Description - description: A clear and concise description of the bug and any additional information. - validations: - required: true - type: textarea attributes: label: Error logs From 35da7908f81952b2fcf697fb1eddfa67d150c304 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 20 Oct 2024 00:25:11 +0300 Subject: [PATCH 002/171] client: Move promoted attributes to scrolling container --- src/public/app/layouts/desktop_layout.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index fd4aff19f..1fc15fb69 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -140,7 +140,6 @@ export default class DesktopLayout { // the order of the widgets matter. Some of these want to "activate" themselves // when visible. When this happens to multiple of them, the first one "wins". // promoted attributes should always win. - .ribbon(new PromotedAttributesWidget()) .ribbon(new ScriptExecutorWidget()) .ribbon(new SearchDefinitionWidget()) .ribbon(new EditedNotesWidget()) @@ -157,7 +156,7 @@ export default class DesktopLayout { .ribbon(new NoteInfoWidget()) .button(new RevisionsButton()) .button(new NoteActionsWidget()) - ) + ) .child(new SharedInfoWidget()) .child(new WatchedFileUpdateStatusWidget()) .child(new FloatingButtons() @@ -175,6 +174,7 @@ export default class DesktopLayout { .child( new ScrollingContainer() .filling() + .child(new PromotedAttributesWidget()) .child(new SqlTableSchemasWidget()) .child(new NoteDetailWidget()) .child(new NoteListWidget()) From 18b0907841c92c2271e6f9681fec6acb73191c9f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 20 Oct 2024 00:26:55 +0300 Subject: [PATCH 003/171] client: Move note title to scrolling container --- src/public/app/layouts/desktop_layout.js | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 1fc15fb69..2ba26c307 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -121,20 +121,7 @@ export default class DesktopLayout { .collapsible() .id('center-pane') .child(new SplitNoteContainer(() => - new NoteWrapperWidget() - .child(new FlexContainer('row').class('title-row') - .css("height", "50px") - .css("min-height", "50px") - .css('align-items', "center") - .cssBlock('.title-row > * { margin: 5px; }') - .child(new NoteIconWidget()) - .child(new NoteTitleWidget()) - .child(new SpacerWidget(0, 1)) - .child(new MovePaneButton(true)) - .child(new MovePaneButton(false)) - .child(new ClosePaneButton()) - .child(new CreatePaneButton()) - ) + new NoteWrapperWidget() .child( new RibbonContainer() // the order of the widgets matter. Some of these want to "activate" themselves @@ -171,9 +158,22 @@ export default class DesktopLayout { .child(new HideFloatingButtonsButton()) ) .child(new MermaidWidget()) - .child( + .child( new ScrollingContainer() .filling() + .child(new FlexContainer('row').class('title-row') + .css("height", "50px") + .css("min-height", "50px") + .css('align-items', "center") + .cssBlock('.title-row > * { margin: 5px; }') + .child(new NoteIconWidget()) + .child(new NoteTitleWidget()) + .child(new SpacerWidget(0, 1)) + .child(new MovePaneButton(true)) + .child(new MovePaneButton(false)) + .child(new ClosePaneButton()) + .child(new CreatePaneButton()) + ) .child(new PromotedAttributesWidget()) .child(new SqlTableSchemasWidget()) .child(new NoteDetailWidget()) From fcebb43410bdb0c3fa9d843349b17a68c9043bc8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 20 Oct 2024 00:38:17 +0300 Subject: [PATCH 004/171] client: Use single column layout for promoted attributes --- .../ribbon_widgets/promoted_attributes.js | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/public/app/widgets/ribbon_widgets/promoted_attributes.js b/src/public/app/widgets/ribbon_widgets/promoted_attributes.js index 5c91b4223..6811ea1c6 100644 --- a/src/public/app/widgets/ribbon_widgets/promoted_attributes.js +++ b/src/public/app/widgets/ribbon_widgets/promoted_attributes.js @@ -18,32 +18,35 @@ const TPL = ` } .promoted-attributes-container { - margin: auto; - display: flex; - flex-direction: row; - flex-shrink: 0; - flex-grow: 0; - justify-content: space-evenly; + margin: 0 1.5em; overflow: auto; max-height: 400px; flex-wrap: wrap; + display: table; } - .promoted-attribute-cell { display: flex; align-items: center; margin: 10px; + display: table-row; + } + .promoted-attribute-cell > * { + display: table-cell; + padding: 1px 0; } .promoted-attribute-cell div.input-group { margin-left: 10px; + display: flex; } .promoted-attribute-cell strong { word-break:keep-all; white-space: nowrap; } .promoted-attribute-cell input[type="checkbox"] { - height: 1.5em; + height: 1.5em; + flex-grow: 0; + width: unset; } @@ -211,9 +214,6 @@ export default class PromotedAttributesWidget extends NoteContextAwareWidget { } else if (definition.labelType === 'boolean') { $input.prop("type", "checkbox"); - // hack, without this the checkbox is invisible - // we should be using a different bootstrap structure for checkboxes - $input.css('width', '80px'); if (valueAttr.value === "true") { $input.prop("checked", "checked"); From ac61d0f3ea41693af79b835859dd1d96fe89654e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 20 Oct 2024 00:56:05 +0300 Subject: [PATCH 005/171] client: Move ribbon at the bottom --- src/public/app/layouts/desktop_layout.js | 46 +++++++++---------- .../widgets/containers/ribbon_container.js | 14 +++--- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 2ba26c307..b6a0583d9 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -121,29 +121,7 @@ export default class DesktopLayout { .collapsible() .id('center-pane') .child(new SplitNoteContainer(() => - new NoteWrapperWidget() - .child( - new RibbonContainer() - // the order of the widgets matter. Some of these want to "activate" themselves - // when visible. When this happens to multiple of them, the first one "wins". - // promoted attributes should always win. - .ribbon(new ScriptExecutorWidget()) - .ribbon(new SearchDefinitionWidget()) - .ribbon(new EditedNotesWidget()) - .ribbon(new BookPropertiesWidget()) - .ribbon(new NotePropertiesWidget()) - .ribbon(new FilePropertiesWidget()) - .ribbon(new ImagePropertiesWidget()) - .ribbon(new BasicPropertiesWidget()) - .ribbon(new OwnedAttributeListWidget()) - .ribbon(new InheritedAttributesWidget()) - .ribbon(new NotePathsWidget()) - .ribbon(new NoteMapRibbonWidget()) - .ribbon(new SimilarNotesWidget()) - .ribbon(new NoteInfoWidget()) - .button(new RevisionsButton()) - .button(new NoteActionsWidget()) - ) + new NoteWrapperWidget() .child(new SharedInfoWidget()) .child(new WatchedFileUpdateStatusWidget()) .child(new FloatingButtons() @@ -188,6 +166,28 @@ export default class DesktopLayout { ...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC ...this.customWidgets.get('note-detail-pane') ) + .child( + new RibbonContainer() + // the order of the widgets matter. Some of these want to "activate" themselves + // when visible. When this happens to multiple of them, the first one "wins". + // promoted attributes should always win. + .ribbon(new ScriptExecutorWidget()) + .ribbon(new SearchDefinitionWidget()) + .ribbon(new EditedNotesWidget()) + .ribbon(new BookPropertiesWidget()) + .ribbon(new NotePropertiesWidget()) + .ribbon(new FilePropertiesWidget()) + .ribbon(new ImagePropertiesWidget()) + .ribbon(new BasicPropertiesWidget()) + .ribbon(new OwnedAttributeListWidget()) + .ribbon(new InheritedAttributesWidget()) + .ribbon(new NotePathsWidget()) + .ribbon(new NoteMapRibbonWidget()) + .ribbon(new SimilarNotesWidget()) + .ribbon(new NoteInfoWidget()) + .button(new RevisionsButton()) + .button(new NoteActionsWidget()) + ) ) ) .child(...this.customWidgets.get('center-pane')) diff --git a/src/public/app/widgets/containers/ribbon_container.js b/src/public/app/widgets/containers/ribbon_container.js index c75776a99..604d2c28e 100644 --- a/src/public/app/widgets/containers/ribbon_container.js +++ b/src/public/app/widgets/containers/ribbon_container.js @@ -6,7 +6,7 @@ const TPL = `
- + - + + +
`; export default class NoteActionsWidget extends NoteContextAwareWidget { From 0ba883ce2f9002c5139f4c8b5b276ddc03244b4b Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Tue, 19 Nov 2024 12:08:41 +0800 Subject: [PATCH 031/171] Add box icons to note menu --- src/public/app/widgets/buttons/note_actions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/public/app/widgets/buttons/note_actions.js b/src/public/app/widgets/buttons/note_actions.js index 8c70d667d..cdefcbb48 100644 --- a/src/public/app/widgets/buttons/note_actions.js +++ b/src/public/app/widgets/buttons/note_actions.js @@ -55,7 +55,7 @@ const TPL = ` ${t('note_actions.open_note_externally')} From f7b1c3fee39ae4a992733c23a703e1904f6e3e28 Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Tue, 19 Nov 2024 14:03:30 +0800 Subject: [PATCH 032/171] Add box icons to note menu --- .../app/widgets/buttons/note_actions.js | 103 +++++++++--------- 1 file changed, 53 insertions(+), 50 deletions(-) diff --git a/src/public/app/widgets/buttons/note_actions.js b/src/public/app/widgets/buttons/note_actions.js index cdefcbb48..7cb0c8c50 100644 --- a/src/public/app/widgets/buttons/note_actions.js +++ b/src/public/app/widgets/buttons/note_actions.js @@ -10,62 +10,65 @@ import { t } from "../../services/i18n.js"; const TPL = ` `; export default class NoteActionsWidget extends NoteContextAwareWidget { From 5b050410cbdc8aca9aa9ba4fb9b2ac1a12d42084 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 09:48:44 +0200 Subject: [PATCH 033/171] Fix the action button tooltips for the "Existing tokens" table --- src/public/app/widgets/type_widgets/options/etapi.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/public/app/widgets/type_widgets/options/etapi.js b/src/public/app/widgets/type_widgets/options/etapi.js index f2536842e..65ddb72e0 100644 --- a/src/public/app/widgets/type_widgets/options/etapi.js +++ b/src/public/app/widgets/type_widgets/options/etapi.js @@ -95,9 +95,9 @@ export default class EtapiOptions extends OptionsWidget { .append($("").text(token.name)) .append($("").text(token.utcDateCreated)) .append($("").append( - $('') + $(``) .on("click", () => this.renameToken(token.etapiTokenId, token.name)), - $('') + $(``) .on("click", () => this.deleteToken(token.etapiTokenId, token.name)) )) ); From d8e50a2ab85f3e1d649d6df7135def431815449c Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Tue, 19 Nov 2024 22:21:33 +0800 Subject: [PATCH 034/171] add icons to the Attachments menu --- .../widgets/buttons/attachments_actions.js | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/public/app/widgets/buttons/attachments_actions.js b/src/public/app/widgets/buttons/attachments_actions.js index b0f0cc2fa..1580753c0 100644 --- a/src/public/app/widgets/buttons/attachments_actions.js +++ b/src/public/app/widgets/buttons/attachments_actions.js @@ -20,6 +20,13 @@ const TPL = ` width: 20em; } + .attachment-actions .dropdown-item .bx { + position: relative; + top: 3px; + font-size: 120%; + margin-right: 5px; + } + .attachment-actions .dropdown-item[disabled], .attachment-actions .dropdown-item[disabled]:hover { color: var(--muted-text-color) !important; background-color: transparent !important; @@ -32,16 +39,22 @@ const TPL = ` style="position: relative; top: 3px;"> From 5d6a42b987c3d60264f8097f8558faa2e2aa96aa Mon Sep 17 00:00:00 2001 From: MeIchthys Date: Tue, 19 Nov 2024 14:22:52 +0000 Subject: [PATCH 035/171] Improve note revision wording and consistency Removed plurals where not needed, capitalized revisions dialog title, made note revision setting titles consistent with note revision dialog. --- src/public/translations/en/translation.json | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 9847b0e24..e74cf0ee1 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -238,23 +238,23 @@ "confirm_undelete": "Do you want to undelete this note and its sub-notes?" }, "revisions": { - "note_revisions": "Note revisions", + "note_revisions": "Note Revisions", "delete_all_revisions": "Delete all revisions of this note", "delete_all_button": "Delete all revisions", - "help_title": "Help on Note revisions", + "help_title": "Help on Note Revisions", "revision_last_edited": "This revision was last edited on {{date}}", - "confirm_delete_all": "Do you want to delete all revisions of this note? This action will erase revision title and content, but still preserve revision metadata.", + "confirm_delete_all": "Do you want to delete all revisions of this note? This action will erase the revision title and content, but still preserve the revision metadata.", "no_revisions": "No revisions for this note yet...", "restore_button": "Restore this revision", - "confirm_restore": "Do you want to restore this revision? This will overwrite current title and content of the note with this revision.", + "confirm_restore": "Do you want to restore this revision? This will overwrite the current title and content of the note with this revision.", "delete_button": "Delete this revision", - "confirm_delete": "Do you want to delete this revision? This action will delete revision title and content, but still preserve revision metadata.", - "revisions_deleted": "Note revisions has been deleted.", + "confirm_delete": "Do you want to delete this revision? This action will delete the revision title and content, but still preserve the revision metadata.", + "revisions_deleted": "Note revisions have been deleted.", "revision_restored": "Note revision has been restored.", "revision_deleted": "Note revision has been deleted.", - "snapshot_interval": "Note Revisions Snapshot Interval: {{seconds}}s.", - "maximum_revisions": "Maximum revisions for current note: {{number}}.", - "settings": "Settings for Note revisions", + "snapshot_interval": "Note Revision Snapshot Interval: {{seconds}}s.", + "maximum_revisions": "Note Revision Snapshot Limit: {{number}}.", + "settings": "Note Revision Settings", "download_button": "Download", "mime": "MIME: ", "file_size": "File size:", @@ -1108,12 +1108,12 @@ "deleted_notes_erased": "Deleted notes have been erased." }, "revisions_snapshot_interval": { - "note_revisions_snapshot_interval_title": "Note Revisions Snapshot Interval", - "note_revisions_snapshot_description": "Note revision snapshot time interval is time in seconds after which a new note revision will be created for the note. See wiki for more info.", + "note_revisions_snapshot_interval_title": "Note Revision Snapshot Interval", + "note_revisions_snapshot_description": "The Note revision snapshot interval is the time in seconds after which a new note revision will be created for the note. See wiki for more info.", "snapshot_time_interval_label": "Note revision snapshot time interval (in seconds):" }, "revisions_snapshot_limit": { - "note_revisions_snapshot_limit_title": "Note Revision Snapshots Limit", + "note_revisions_snapshot_limit_title": "Note Revision Snapshot Limit", "note_revisions_snapshot_limit_description": "The note revision snapshot number limit refers to the maximum number of revisions that can be saved for each note. Where -1 means no limit, 0 means delete all revisions. You can set the maximum revisions for a single note through the #versioningLimit label.", "snapshot_number_limit_label": "Note revision snapshot number limit:", "erase_excess_revision_snapshots": "Erase excess revision snapshots now", From 75941de449014c02012bd4890c8fe68b1d4efef6 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 17:42:03 +0200 Subject: [PATCH 036/171] Replace the "Existing backups" bulleted list with a table --- .../widgets/type_widgets/options/backup.js | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/public/app/widgets/type_widgets/options/backup.js b/src/public/app/widgets/type_widgets/options/backup.js index fc3c070a4..1cdfddad9 100644 --- a/src/public/app/widgets/type_widgets/options/backup.js +++ b/src/public/app/widgets/type_widgets/options/backup.js @@ -42,7 +42,17 @@ const TPL = `

${t('backup.existing_backups')}

-
    + + + + + + + + + +
    Date and timePath
    +
    `; @@ -73,7 +83,7 @@ export default class BackupOptions extends OptionsWidget { this.$monthlyBackupEnabled.on('change', () => this.updateCheckboxOption('monthlyBackupEnabled', this.$monthlyBackupEnabled)); - this.$existingBackupList = this.$widget.find(".existing-backup-list"); + this.$existingBackupList = this.$widget.find(".existing-backup-list-items"); } optionsLoaded(options) { @@ -89,7 +99,12 @@ export default class BackupOptions extends OptionsWidget { } for (const {filePath, mtime} of backupFiles) { - this.$existingBackupList.append($("
  • ").text(`${filePath} ${mtime ? ` - ${mtime}` : ''}`)); + this.$existingBackupList.append($(` + + ${(mtime) ? mtime : "-"} + ${filePath} + + `)); } }); } From 970c3bd7adec4183cfcef1c2e36e0331b69dcdd5 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 17:54:34 +0200 Subject: [PATCH 037/171] Format date and time --- src/public/app/widgets/type_widgets/options/backup.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/public/app/widgets/type_widgets/options/backup.js b/src/public/app/widgets/type_widgets/options/backup.js index 1cdfddad9..027453faf 100644 --- a/src/public/app/widgets/type_widgets/options/backup.js +++ b/src/public/app/widgets/type_widgets/options/backup.js @@ -98,10 +98,15 @@ export default class BackupOptions extends OptionsWidget { backupFiles = [{filePath: t('backup.no_backup_yet'), mtime: ''}]; } + const dateTimeFormatter = new Intl.DateTimeFormat(navigator.language, { + dateStyle: "medium", + timeStyle: "medium" + }); + for (const {filePath, mtime} of backupFiles) { this.$existingBackupList.append($(` - ${(mtime) ? mtime : "-"} + ${(mtime) ? dateTimeFormatter.format(new Date(mtime)) : "-"} ${filePath} `)); From 22b768e5e88b2bb2716c87764b115ed4d6ecaeb9 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 18:00:23 +0200 Subject: [PATCH 038/171] Add translation --- src/public/app/widgets/type_widgets/options/backup.js | 4 ++-- src/public/translations/en/translation.json | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/public/app/widgets/type_widgets/options/backup.js b/src/public/app/widgets/type_widgets/options/backup.js index 027453faf..dd51d0d7f 100644 --- a/src/public/app/widgets/type_widgets/options/backup.js +++ b/src/public/app/widgets/type_widgets/options/backup.js @@ -45,8 +45,8 @@ const TPL = ` - - + + diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 9847b0e24..c949fd588 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -1183,6 +1183,8 @@ "backup_now": "Backup now", "backup_database_now": "Backup database now", "existing_backups": "Existing backups", + "date-and-time": "Date & time", + "path": "Path", "database_backed_up_to": "Database has been backed up to", "no_backup_yet": "no backup yet" }, From 32a4a9c072d17972fc6fc99fc5fb6db74d6301f7 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 18:07:42 +0200 Subject: [PATCH 039/171] Sort the backup files by date & time --- src/public/app/widgets/type_widgets/options/backup.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/public/app/widgets/type_widgets/options/backup.js b/src/public/app/widgets/type_widgets/options/backup.js index dd51d0d7f..f68fcb0dd 100644 --- a/src/public/app/widgets/type_widgets/options/backup.js +++ b/src/public/app/widgets/type_widgets/options/backup.js @@ -98,6 +98,13 @@ export default class BackupOptions extends OptionsWidget { backupFiles = [{filePath: t('backup.no_backup_yet'), mtime: ''}]; } + // Sort the backup files by modification date & time in a desceding order + backupFiles.sort((a, b) => { + if (a.mtime < b.mtime) return 1; + if (a.mtime > b.mtime) return -1; + return 0; + }); + const dateTimeFormatter = new Intl.DateTimeFormat(navigator.language, { dateStyle: "medium", timeStyle: "medium" From e94942d665519a84641b7568c6f791b101424b45 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 20:22:10 +0200 Subject: [PATCH 040/171] Handle the situation where no backups are available --- src/public/app/widgets/type_widgets/options/backup.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/public/app/widgets/type_widgets/options/backup.js b/src/public/app/widgets/type_widgets/options/backup.js index f68fcb0dd..dc647437b 100644 --- a/src/public/app/widgets/type_widgets/options/backup.js +++ b/src/public/app/widgets/type_widgets/options/backup.js @@ -95,7 +95,13 @@ export default class BackupOptions extends OptionsWidget { this.$existingBackupList.empty(); if (!backupFiles.length) { - backupFiles = [{filePath: t('backup.no_backup_yet'), mtime: ''}]; + this.$existingBackupList.append($(` + + + + `)); + + return; } // Sort the backup files by modification date & time in a desceding order From 349b1c1d78ad68043837828afc34acab0301d5f3 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 20:28:47 +0200 Subject: [PATCH 041/171] Improve appeareance --- src/public/app/widgets/type_widgets/options/backup.js | 6 +++++- src/public/stylesheets/style.css | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/public/app/widgets/type_widgets/options/backup.js b/src/public/app/widgets/type_widgets/options/backup.js index dc647437b..35cd4b829 100644 --- a/src/public/app/widgets/type_widgets/options/backup.js +++ b/src/public/app/widgets/type_widgets/options/backup.js @@ -43,6 +43,10 @@ const TPL = `

    ${t('backup.existing_backups')}

    Date and timePath${t("backup.date-and-time")}${t("backup.path")}
    ${t('backup.no_backup_yet')}
    + + + + @@ -97,7 +101,7 @@ export default class BackupOptions extends OptionsWidget { if (!backupFiles.length) { this.$existingBackupList.append($(` - + `)); diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index 60cda7349..bdcd6a7d8 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -1238,3 +1238,7 @@ textarea { padding: 1rem; } +.empty-table-placeholder { + text-align: center; + color: var(--muted-text-color); +} \ No newline at end of file From 70be4cd1c25fc7a2969e1978e5c685a834c6bc47 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 20:34:54 +0200 Subject: [PATCH 042/171] Update the Romanian translation --- src/public/translations/ro/translation.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/public/translations/ro/translation.json b/src/public/translations/ro/translation.json index 9bd9b0ccf..13d0ea3cf 100644 --- a/src/public/translations/ro/translation.json +++ b/src/public/translations/ro/translation.json @@ -254,6 +254,8 @@ "enable_monthly_backup": "Activează copia de siguranță lunară", "enable_weekly_backup": "Activează copia de siguranță săptămânală", "existing_backups": "Copii de siguranță existente", + "date-and-time": "Data și ora", + "path": "Calea fișierului", "no_backup_yet": "nu există încă nicio copie de siguranță" }, "basic_properties": { From f629d480285fb7b450c671778054ac1b07ca1af2 Mon Sep 17 00:00:00 2001 From: Jon Fuller Date: Tue, 19 Nov 2024 12:08:17 -0800 Subject: [PATCH 043/171] Update renovate.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the package rules for now, use the default schemas. Also include this repository in the config since I forgot that part 🤣 --- renovate.json | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/renovate.json b/renovate.json index 6321b1cb7..11a054226 100644 --- a/renovate.json +++ b/renovate.json @@ -3,16 +3,10 @@ "extends": [ "config:base" ], + "repositories": ["TriliumNext/Notes"], "schedule": ["before 3am"], - "packageRules": [ - { - "matchUpdateTypes": ["minor", "patch"], - "matchCurrentVersion": "!/^0/", - "automerge": false - } - ], "labels": ["dependencies", "renovate"], "prHourlyLimit": 0, "prConcurrentLimit": 0, "branchConcurrentLimit": 0 -} \ No newline at end of file +} From 80ce2f5dbd0eebd1bf6a7d5fa6fefa547c43f368 Mon Sep 17 00:00:00 2001 From: Adorian Doran Date: Tue, 19 Nov 2024 22:31:29 +0200 Subject: [PATCH 044/171] Reorder the global menu items --- src/public/app/widgets/buttons/global_menu.js | 85 +++++++++++-------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/src/public/app/widgets/buttons/global_menu.js b/src/public/app/widgets/buttons/global_menu.js index d760ecd5c..886b0a740 100644 --- a/src/public/app/widgets/buttons/global_menu.js +++ b/src/public/app/widgets/buttons/global_menu.js @@ -125,27 +125,17 @@ const TPL = `
    ${t("backup.date-and-time")}
    ${t('backup.no_backup_yet')}${t('backup.no_backup_yet')}