From ec3c9a9ae55272e5014e7dc1c05d161c2f00dccd Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:16:05 +0200 Subject: [PATCH 01/26] feat(layout): keyboard shortcut for formatting toolbar --- .../src/widgets/ribbon/FormattingToolbar.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/client/src/widgets/ribbon/FormattingToolbar.tsx b/apps/client/src/widgets/ribbon/FormattingToolbar.tsx index 610063a3c..0225a74bc 100644 --- a/apps/client/src/widgets/ribbon/FormattingToolbar.tsx +++ b/apps/client/src/widgets/ribbon/FormattingToolbar.tsx @@ -49,6 +49,21 @@ export function FixedFormattingToolbar() { const renderState = useRenderState(noteContext, note); const [ toolbarToRender, setToolbarToRender ] = useState(); + // Keyboard shortcut. + const lastFocusedElement = useRef(null); + useTriliumEvent("toggleRibbonTabClassicEditor", () => { + if (!toolbarToRender) return; + if (!toolbarToRender.contains(document.activeElement)) { + // Focus to the fixed formatting toolbar. + lastFocusedElement.current = document.activeElement; + toolbarToRender.querySelector(".ck-toolbar__items button")?.focus(); + } else { + // Focus back to the last selection. + (lastFocusedElement.current as HTMLElement)?.focus(); + lastFocusedElement.current = null; + } + }); + // Populate the cache with the toolbar of every note context. useTriliumEvent("textEditorRefreshed", ({ ntxId: eventNtxId, editor }) => { if (!eventNtxId) return; From c0eb34927f43a18a54c13c3659294c25d7cc2e7c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:23:14 +0200 Subject: [PATCH 02/26] feat(layout): keyboard shortcut for basic properties --- apps/client/src/widgets/ribbon/NoteActions.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/ribbon/NoteActions.tsx b/apps/client/src/widgets/ribbon/NoteActions.tsx index bb6d9a8d8..a6aaf14ff 100644 --- a/apps/client/src/widgets/ribbon/NoteActions.tsx +++ b/apps/client/src/widgets/ribbon/NoteActions.tsx @@ -1,5 +1,6 @@ import { ConvertToAttachmentResponse } from "@triliumnext/commons"; -import { useContext } from "preact/hooks"; +import { Dropdown as BootstrapDropdown } from "bootstrap"; +import { useContext, useRef } from "preact/hooks"; import appContext, { CommandNames } from "../../components/app_context"; import Component from "../../components/component"; @@ -20,7 +21,7 @@ import MovePaneButton from "../buttons/move_pane_button"; import ActionButton from "../react/ActionButton"; import Dropdown from "../react/Dropdown"; import { FormDropdownDivider, FormDropdownSubmenu, FormListHeader, FormListItem, FormListToggleableItem } from "../react/FormList"; -import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumOption } from "../react/hooks"; +import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumOption } from "../react/hooks"; import { ParentComponent } from "../react/react_utils"; import { NoteTypeDropdownContent, useNoteBookmarkState, useShareState } from "./BasicPropertiesTab"; import NoteActionsCustom from "./NoteActionsCustom"; @@ -60,6 +61,7 @@ function RevisionsButton({ note }: { note: FNote }) { } function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: NoteContext }) { + const dropdownRef = useRef(null); const parentComponent = useContext(ParentComponent); const noteType = useNoteProperty(note, "type") ?? ""; const [viewType] = useNoteLabel(note, "viewType"); @@ -78,8 +80,15 @@ function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: Not const { isReadOnly, enableEditing } = useIsNoteReadOnly(note, noteContext); const isNormalViewMode = noteContext?.viewScope?.viewMode === "default"; + // Keyboard shortcuts. + useTriliumEvent("toggleRibbonTabBasicProperties", () => { + if (!isNewLayout) return; + dropdownRef.current?.toggle(); + }); + return ( Date: Tue, 16 Dec 2025 18:29:46 +0200 Subject: [PATCH 03/26] feat(layout): focus exactly on basic properties --- apps/client/src/widgets/react/FormList.tsx | 9 +++---- .../client/src/widgets/ribbon/NoteActions.tsx | 24 +++++++++++++++---- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/apps/client/src/widgets/react/FormList.tsx b/apps/client/src/widgets/react/FormList.tsx index dd40bd08c..84cc4d8c6 100644 --- a/apps/client/src/widgets/react/FormList.tsx +++ b/apps/client/src/widgets/react/FormList.tsx @@ -2,13 +2,13 @@ import "./FormList.css"; import { Dropdown as BootstrapDropdown, Tooltip } from "bootstrap"; import clsx from "clsx"; -import { ComponentChildren } from "preact"; +import { ComponentChildren, RefObject } from "preact"; import { type CSSProperties,useEffect, useMemo, useRef, useState } from "preact/compat"; import { CommandNames } from "../../components/app_context"; import { handleRightToLeftPlacement, isMobile, openInAppHelpFromUrl } from "../../services/utils"; import FormToggle from "./FormToggle"; -import { useStaticTooltip } from "./hooks"; +import { useStaticTooltip, useSyncedRef } from "./hooks"; import Icon from "./Icon"; interface FormListOpts { @@ -97,6 +97,7 @@ interface FormListItemOpts { className?: string; rtl?: boolean; postContent?: ComponentChildren; + itemRef?: RefObject; } const TOOLTIP_CONFIG: Partial = { @@ -104,8 +105,8 @@ const TOOLTIP_CONFIG: Partial = { fallbackPlacements: [ handleRightToLeftPlacement("right") ] }; -export function FormListItem({ className, icon, value, title, active, disabled, checked, container, onClick, selected, rtl, triggerCommand, description, ...contentProps }: FormListItemOpts) { - const itemRef = useRef(null); +export function FormListItem({ className, icon, value, title, active, disabled, checked, container, onClick, selected, rtl, triggerCommand, description, itemRef: externalItemRef, ...contentProps }: FormListItemOpts) { + const itemRef = useSyncedRef(externalItemRef, null); if (checked) { icon = "bx bx-check"; diff --git a/apps/client/src/widgets/ribbon/NoteActions.tsx b/apps/client/src/widgets/ribbon/NoteActions.tsx index a6aaf14ff..dfb0d93bb 100644 --- a/apps/client/src/widgets/ribbon/NoteActions.tsx +++ b/apps/client/src/widgets/ribbon/NoteActions.tsx @@ -1,6 +1,7 @@ import { ConvertToAttachmentResponse } from "@triliumnext/commons"; import { Dropdown as BootstrapDropdown } from "bootstrap"; -import { useContext, useRef } from "preact/hooks"; +import { RefObject } from "preact"; +import { useContext, useEffect, useRef } from "preact/hooks"; import appContext, { CommandNames } from "../../components/app_context"; import Component from "../../components/component"; @@ -60,6 +61,8 @@ function RevisionsButton({ note }: { note: FNote }) { ); } +type ItemToFocus = "basic-properties"; + function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: NoteContext }) { const dropdownRef = useRef(null); const parentComponent = useContext(ParentComponent); @@ -79,10 +82,12 @@ function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: Not const [syncServerHost] = useTriliumOption("syncServerHost"); const { isReadOnly, enableEditing } = useIsNoteReadOnly(note, noteContext); const isNormalViewMode = noteContext?.viewScope?.viewMode === "default"; + const itemToFocusRef = useRef(null); // Keyboard shortcuts. useTriliumEvent("toggleRibbonTabBasicProperties", () => { if (!isNewLayout) return; + itemToFocusRef.current = "basic-properties"; dropdownRef.current?.toggle(); }); @@ -93,7 +98,9 @@ function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: Not className="note-actions" hideToggleArrow noSelectButtonStyle - iconAction> + iconAction + onHidden={() => itemToFocusRef.current = null } + > {isReadOnly && <> {isNewLayout && isNormalViewMode && !isHelpPage && <> - + } @@ -157,14 +164,22 @@ function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: Not ); } -function NoteBasicProperties({ note }: { +function NoteBasicProperties({ note, focus }: { note: FNote; + focus: RefObject; }) { + const itemToFocusRef = useRef(null); const [ isBookmarked, setIsBookmarked ] = useNoteBookmarkState(note); const [ isShared, switchShareState ] = useShareState(note); const [ isTemplate, setIsTemplate ] = useNoteLabelBoolean(note, "template"); const isProtected = useNoteProperty(note, "isProtected"); + useEffect(() => { + if (focus.current === "basic-properties") { + itemToFocusRef.current?.focus(); + } + }, [ focus ]); + return <> Date: Tue, 16 Dec 2025 18:32:33 +0200 Subject: [PATCH 04/26] feat(layout): keyboard shortcut for collection properties --- .../src/widgets/note_bars/CollectionProperties.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/note_bars/CollectionProperties.tsx b/apps/client/src/widgets/note_bars/CollectionProperties.tsx index 0c07e8f02..6fc510fc7 100644 --- a/apps/client/src/widgets/note_bars/CollectionProperties.tsx +++ b/apps/client/src/widgets/note_bars/CollectionProperties.tsx @@ -1,7 +1,7 @@ import "./CollectionProperties.css"; import { t } from "i18next"; -import { useContext } from "preact/hooks"; +import { useContext, useRef } from "preact/hooks"; import { Fragment } from "preact/jsx-runtime"; import FNote from "../../entities/fnote"; @@ -12,7 +12,7 @@ import ActionButton from "../react/ActionButton"; import Dropdown from "../react/Dropdown"; import { FormDropdownDivider, FormDropdownSubmenu, FormListItem, FormListToggleableItem } from "../react/FormList"; import FormTextBox from "../react/FormTextBox"; -import { useNoteLabel, useNoteLabelBoolean, useNoteLabelWithDefault } from "../react/hooks"; +import { useNoteLabel, useNoteLabelBoolean, useNoteLabelWithDefault, useTriliumEvent } from "../react/hooks"; import Icon from "../react/Icon"; import { ParentComponent } from "../react/react_utils"; import { bookPropertiesConfig, BookProperty, ButtonProperty, CheckBoxProperty, ComboBoxItem, ComboBoxProperty, NumberProperty, SplitButtonProperty } from "../ribbon/collection-properties-config"; @@ -42,8 +42,15 @@ export default function CollectionProperties({ note }: { note: FNote }) { } function ViewTypeSwitcher({ viewType, setViewType }: { viewType: ViewTypeOptions, setViewType: (newValue: ViewTypeOptions) => void }) { + // Keyboard shortcut + const dropdownContainerRef = useRef(null); + useTriliumEvent("toggleRibbonTabBookProperties", () => { + dropdownContainerRef.current?.querySelector("button")?.focus(); + }); + return (   {VIEW_TYPE_MAPPINGS[viewType]} From 613764d423259a72114d5c2e3e6107ecfa684b47 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:39:31 +0200 Subject: [PATCH 05/26] feat(layout): keyboard shortcut for file properties --- apps/client/src/widgets/ribbon/NoteActionsCustom.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx b/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx index b60abf93b..ef3051222 100644 --- a/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx +++ b/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx @@ -1,5 +1,5 @@ import { NoteType } from "@triliumnext/commons"; -import { useContext, useEffect, useState } from "preact/hooks"; +import { useContext, useEffect, useRef, useState } from "preact/hooks"; import Component from "../../components/component"; import NoteContext from "../../components/note_context"; @@ -38,6 +38,7 @@ interface NoteActionsCustomInnerProps extends NoteActionsCustomProps { */ export default function NoteActionsCustom(props: NoteActionsCustomProps) { const { note } = props; + const containerRef = useRef(null); const noteType = useNoteProperty(note, "type"); const noteMime = useNoteProperty(note, "mime"); const [ viewType ] = useNoteLabel(note, "viewType"); @@ -53,8 +54,15 @@ export default function NoteActionsCustom(props: NoteActionsCustomProps) { isReadOnly }; + useTriliumEvent("toggleRibbonTabFileProperties", () => { + (containerRef.current?.firstElementChild as HTMLElement)?.focus(); + }); + return (innerProps && -
+
From a5fcee500eb9516229f686b4986cbe15d314fee1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:40:37 +0200 Subject: [PATCH 06/26] feat(layout): keyboard shortcut for image properties --- apps/client/src/widgets/ribbon/NoteActionsCustom.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx b/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx index ef3051222..83fb30253 100644 --- a/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx +++ b/apps/client/src/widgets/ribbon/NoteActionsCustom.tsx @@ -12,7 +12,7 @@ import { ViewTypeOptions } from "../collections/interface"; import { buildSaveSqlToNoteHandler } from "../FloatingButtonsDefinitions"; import ActionButton from "../react/ActionButton"; import { FormFileUploadActionButton } from "../react/FormFileUpload"; -import { useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumOption } from "../react/hooks"; +import { useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumEvents, useTriliumOption } from "../react/hooks"; import { ParentComponent } from "../react/react_utils"; import { buildUploadNewFileRevisionListener } from "./FilePropertiesTab"; import { buildUploadNewImageRevisionListener } from "./ImagePropertiesTab"; @@ -54,7 +54,7 @@ export default function NoteActionsCustom(props: NoteActionsCustomProps) { isReadOnly }; - useTriliumEvent("toggleRibbonTabFileProperties", () => { + useTriliumEvents([ "toggleRibbonTabFileProperties", "toggleRibbonTabImageProperties" ], () => { (containerRef.current?.firstElementChild as HTMLElement)?.focus(); }); From 2eaa4ef20610dd7eae1b41050cc86572beedb228 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:43:04 +0200 Subject: [PATCH 07/26] fix(note_info): fixed note types do not have icon --- apps/client/src/entities/fnote.ts | 56 ++++++++++---------- apps/client/src/widgets/layout/StatusBar.tsx | 10 ++-- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/apps/client/src/entities/fnote.ts b/apps/client/src/entities/fnote.ts index 0f6df098a..cd255b72a 100644 --- a/apps/client/src/entities/fnote.ts +++ b/apps/client/src/entities/fnote.ts @@ -1,17 +1,17 @@ -import server from "../services/server.js"; -import noteAttributeCache from "../services/note_attribute_cache.js"; -import protectedSessionHolder from "../services/protected_session_holder.js"; import cssClassManager from "../services/css_class_manager.js"; import type { Froca } from "../services/froca-interface.js"; -import type FAttachment from "./fattachment.js"; -import type { default as FAttribute, AttributeType } from "./fattribute.js"; -import utils from "../services/utils.js"; +import noteAttributeCache from "../services/note_attribute_cache.js"; +import protectedSessionHolder from "../services/protected_session_holder.js"; import search from "../services/search.js"; +import server from "../services/server.js"; +import utils from "../services/utils.js"; +import type FAttachment from "./fattachment.js"; +import type { AttributeType,default as FAttribute } from "./fattribute.js"; const LABEL = "label"; const RELATION = "relation"; -const NOTE_TYPE_ICONS = { +export const NOTE_TYPE_ICONS = { file: "bx bx-file", image: "bx bx-image", code: "bx bx-code", @@ -268,13 +268,13 @@ export default class FNote { } } return results; - } else { - return this.children; - } + } + return this.children; + } async getSubtreeNoteIds(includeArchived = false) { - let noteIds: (string | string[])[] = []; + const noteIds: (string | string[])[] = []; for (const child of await this.getChildNotes()) { if (child.isArchived && !includeArchived) continue; @@ -471,9 +471,9 @@ export default class FNote { return a.isHidden ? 1 : -1; } else if (a.isSearch !== b.isSearch) { return a.isSearch ? 1 : -1; - } else { - return a.notePath.length - b.notePath.length; - } + } + return a.notePath.length - b.notePath.length; + }); return notePaths; @@ -597,14 +597,14 @@ export default class FNote { } else if (this.type === "text") { if (this.isFolder()) { return "bx bx-folder"; - } else { - return "bx bx-note"; - } + } + return "bx bx-note"; + } else if (this.type === "code" && this.mime.startsWith("text/x-sql")) { return "bx bx-data"; - } else { - return NOTE_TYPE_ICONS[this.type]; - } + } + return NOTE_TYPE_ICONS[this.type]; + } getColorClass() { @@ -617,7 +617,7 @@ export default class FNote { } getFilteredChildBranches() { - let childBranches = this.getChildBranches(); + const childBranches = this.getChildBranches(); if (!childBranches) { console.error(`No children for '${this.noteId}'. This shouldn't happen.`); @@ -811,9 +811,9 @@ export default class FNote { return this.getLabelValue(nameWithPrefix.substring(1)); } else if (nameWithPrefix.startsWith("~")) { return this.getRelationValue(nameWithPrefix.substring(1)); - } else { - return this.getLabelValue(nameWithPrefix); - } + } + return this.getLabelValue(nameWithPrefix); + } /** @@ -878,10 +878,10 @@ export default class FNote { promotedAttrs.sort((a, b) => { if (a.noteId === b.noteId) { return a.position < b.position ? -1 : 1; - } else { - // inherited promoted attributes should stay grouped: https://github.com/zadam/trilium/issues/3761 - return a.noteId < b.noteId ? -1 : 1; - } + } + // inherited promoted attributes should stay grouped: https://github.com/zadam/trilium/issues/3761 + return a.noteId < b.noteId ? -1 : 1; + }); return promotedAttrs; diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index 2f53f6b89..d12e92099 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -9,7 +9,7 @@ import { useContext, useEffect, useMemo, useRef, useState } from "preact/hooks"; import { CommandNames } from "../../components/app_context"; import NoteContext from "../../components/note_context"; -import FNote from "../../entities/fnote"; +import FNote, { NOTE_TYPE_ICONS } from "../../entities/fnote"; import attributes from "../../services/attributes"; import { t } from "../../services/i18n"; import { ViewScope } from "../../services/link"; @@ -220,10 +220,10 @@ export function NoteInfoBadge({ note, setSimilarNotesShown }: NoteInfoContext) { const dropdownRef = useRef(null); const { metadata, ...sizeProps } = useNoteMetadata(note); const [ originalFileName ] = useNoteLabel(note, "originalFileName"); - const currentNoteType = useNoteProperty(note, "type"); - const currentNoteTypeData = useMemo(() => NOTE_TYPES.find(t => t.type === currentNoteType), [ currentNoteType ]); + const noteType = useNoteProperty(note, "type"); + const noteTypeMapping = useMemo(() => NOTE_TYPES.find(t => t.type === noteType), [ noteType ]); - return (note && currentNoteTypeData && + return (note && noteType && noteTypeMapping && } - {" "}{currentNoteTypeData?.title}} /> + {" "}{noteTypeMapping?.title}} /> {note.mime && } {note.noteId}} /> } /> From 1835676d09aec5cbf513d9c1f6950c10c48a4f5c Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:54:15 +0200 Subject: [PATCH 08/26] feat(layout): keyboard shortcut for owned & inherited attributes --- apps/client/src/widgets/layout/StatusBar.tsx | 4 ++ .../ribbon/components/AttributeEditor.tsx | 57 ++++++++++--------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index d12e92099..424fd81fa 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -349,6 +349,10 @@ function AttributesPane({ note, noteContext, attributesShown, setAttributesShown // Show on keyboard shortcuts. useTriliumEvents([ "addNewLabel", "addNewRelation" ], () => setAttributesShown(true)); + useTriliumEvents([ "toggleRibbonTabOwnedAttributes", "toggleRibbonTabInheritedAttributes" ], () => setAttributesShown(!attributesShown)); + + // Auto-focus the owned attributes. + useEffect(() => api.current?.focus(), [ attributesShown ]); // Interaction with the attribute editor. useLegacyImperativeHandlers(useMemo(() => ({ diff --git a/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx b/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx index bf0aa9428..ee9129bbd 100644 --- a/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx +++ b/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx @@ -1,25 +1,26 @@ -import { MutableRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from "preact/hooks"; import { AttributeEditor as CKEditorAttributeEditor, MentionFeed, ModelElement, ModelNode, ModelPosition } from "@triliumnext/ckeditor5"; +import { AttributeType } from "@triliumnext/commons"; +import { MutableRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from "preact/hooks"; + +import type { CommandData, FilteredCommandNames } from "../../../components/app_context"; +import FAttribute from "../../../entities/fattribute"; +import FNote from "../../../entities/fnote"; +import contextMenu from "../../../menus/context_menu"; +import attribute_parser, { Attribute } from "../../../services/attribute_parser"; +import attribute_renderer from "../../../services/attribute_renderer"; +import attributes from "../../../services/attributes"; +import froca from "../../../services/froca"; import { t } from "../../../services/i18n"; -import server from "../../../services/server"; +import link from "../../../services/link"; import note_autocomplete, { Suggestion } from "../../../services/note_autocomplete"; +import note_create from "../../../services/note_create"; +import server from "../../../services/server"; +import { isIMEComposing } from "../../../services/shortcuts"; +import { escapeQuotes, getErrorMessage } from "../../../services/utils"; +import AttributeDetailWidget from "../../attribute_widgets/attribute_detail"; +import ActionButton from "../../react/ActionButton"; import CKEditor, { CKEditorApi } from "../../react/CKEditor"; import { useLegacyImperativeHandlers, useLegacyWidget, useTooltip, useTriliumEvent, useTriliumOption } from "../../react/hooks"; -import FAttribute from "../../../entities/fattribute"; -import attribute_renderer from "../../../services/attribute_renderer"; -import FNote from "../../../entities/fnote"; -import AttributeDetailWidget from "../../attribute_widgets/attribute_detail"; -import attribute_parser, { Attribute } from "../../../services/attribute_parser"; -import ActionButton from "../../react/ActionButton"; -import { escapeQuotes, getErrorMessage } from "../../../services/utils"; -import link from "../../../services/link"; -import { isIMEComposing } from "../../../services/shortcuts"; -import froca from "../../../services/froca"; -import contextMenu from "../../../menus/context_menu"; -import type { CommandData, FilteredCommandNames } from "../../../components/app_context"; -import { AttributeType } from "@triliumnext/commons"; -import attributes from "../../../services/attributes"; -import note_create from "../../../services/note_create"; type AttributeCommandNames = FilteredCommandNames; @@ -52,7 +53,7 @@ const mentionSetup: MentionFeed[] = [ return names.map((name) => { return { id: `#${name}`, - name: name + name }; }); }, @@ -66,7 +67,7 @@ const mentionSetup: MentionFeed[] = [ return names.map((name) => { return { id: `~${name}`, - name: name + name }; }); }, @@ -85,9 +86,10 @@ interface AttributeEditorProps { } export interface AttributeEditorImperativeHandlers { - save: () => Promise; - refresh: () => void; - renderOwnedAttributes: (ownedAttributes: FAttribute[]) => Promise; + save(): Promise; + refresh(): void; + focus(): void; + renderOwnedAttributes(ownedAttributes: FAttribute[]): Promise; } export default function AttributeEditor({ api, note, componentId, notePath, ntxId, hidden }: AttributeEditorProps) { @@ -124,7 +126,7 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI // attrs are not resorted if position changes after the initial load ownedAttributes.sort((a, b) => a.position - b.position); - let htmlAttrs = ("

" + (await attribute_renderer.renderAttributes(ownedAttributes, true)).html() + "

"); + let htmlAttrs = (`

${(await attribute_renderer.renderAttributes(ownedAttributes, true)).html()}

`); if (saved) { lastSavedContent.current = htmlAttrs; @@ -162,7 +164,7 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI wrapperRef.current.style.opacity = "0"; setTimeout(() => { if (wrapperRef.current) { - wrapperRef.current.style.opacity = "1" + wrapperRef.current.style.opacity = "1"; } }, 100); } @@ -252,7 +254,7 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI if (notePath) { result = await note_create.createNoteWithTypePrompt(notePath, { activate: false, - title: title + title }); } @@ -274,7 +276,8 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI useImperativeHandle(api, () => ({ save, refresh, - renderOwnedAttributes: (attributes) => renderOwnedAttributes(attributes as FAttribute[], false) + renderOwnedAttributes: (attributes) => renderOwnedAttributes(attributes as FAttribute[], false), + focus: () => editorRef.current?.focus() }), [ save, refresh, renderOwnedAttributes ]); return ( @@ -404,7 +407,7 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI {attributeDetailWidgetEl} - ) + ); } function getPreprocessedData(currentValue: string) { From 4f1c19f1e29ad91002329861f7c28c91eeea7a21 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 18:56:41 +0200 Subject: [PATCH 09/26] feat(layout): keyboard shortcut for note info --- apps/client/src/widgets/layout/StatusBar.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index 424fd81fa..cc20931d1 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -222,8 +222,12 @@ export function NoteInfoBadge({ note, setSimilarNotesShown }: NoteInfoContext) { const [ originalFileName ] = useNoteLabel(note, "originalFileName"); const noteType = useNoteProperty(note, "type"); const noteTypeMapping = useMemo(() => NOTE_TYPES.find(t => t.type === noteType), [ noteType ]); + const enabled = note && noteType && noteTypeMapping; - return (note && noteType && noteTypeMapping && + // Keyboard shortcut. + useTriliumEvent("toggleRibbonTabNoteInfo", () => enabled && dropdownRef.current?.show()); + + return (enabled && Date: Tue, 16 Dec 2025 18:59:36 +0200 Subject: [PATCH 10/26] feat(layout): keyboard shortcut for note paths --- apps/client/src/widgets/layout/StatusBar.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index cc20931d1..00a57b573 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -1,6 +1,6 @@ import "./StatusBar.css"; -import { Locale } from "@triliumnext/commons"; +import { KeyboardActionNames, Locale } from "@triliumnext/commons"; import { Dropdown as BootstrapDropdown } from "bootstrap"; import clsx from "clsx"; import { type ComponentChildren } from "preact"; @@ -381,12 +381,18 @@ function AttributesPane({ note, noteContext, attributesShown, setAttributesShown //#region Note paths function NotePaths({ note, hoistedNoteId, notePath }: StatusBarContext) { + const dropdownRef = useRef(null); const sortedNotePaths = useSortedNotePaths(note, hoistedNoteId); const count = sortedNotePaths?.length ?? 0; + const enabled = count > 1; - return (count > 1 && + // Keyboard shortcut. + useTriliumEvent("toggleRibbonTabNotePaths", () => enabled && dropdownRef.current?.show()); + + return (enabled && Date: Tue, 16 Dec 2025 19:01:03 +0200 Subject: [PATCH 11/26] feat(layout): keyboard shortcut for similar notes --- apps/client/src/widgets/layout/StatusBar.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index 00a57b573..6f8e5cdcc 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -216,7 +216,7 @@ interface NoteInfoContext extends StatusBarContext { setSimilarNotesShown: (value: boolean) => void; } -export function NoteInfoBadge({ note, setSimilarNotesShown }: NoteInfoContext) { +export function NoteInfoBadge({ note, similarNotesShown, setSimilarNotesShown }: NoteInfoContext) { const dropdownRef = useRef(null); const { metadata, ...sizeProps } = useNoteMetadata(note); const [ originalFileName ] = useNoteLabel(note, "originalFileName"); @@ -226,6 +226,7 @@ export function NoteInfoBadge({ note, setSimilarNotesShown }: NoteInfoContext) { // Keyboard shortcut. useTriliumEvent("toggleRibbonTabNoteInfo", () => enabled && dropdownRef.current?.show()); + useTriliumEvent("toggleRibbonTabSimilarNotes", () => setSimilarNotesShown(!similarNotesShown)); return (enabled && Date: Tue, 16 Dec 2025 19:12:42 +0200 Subject: [PATCH 12/26] fix(layout): toggleRibbonTabNoteMap not working in old layout --- .../src/components/root_command_executor.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/client/src/components/root_command_executor.ts b/apps/client/src/components/root_command_executor.ts index 918809cd1..048aa4bd0 100644 --- a/apps/client/src/components/root_command_executor.ts +++ b/apps/client/src/components/root_command_executor.ts @@ -1,14 +1,14 @@ -import Component from "./component.js"; -import appContext, { type CommandData, type CommandListenerData } from "./app_context.js"; import dateNoteService from "../services/date_notes.js"; -import treeService from "../services/tree.js"; -import openService from "../services/open.js"; -import protectedSessionService from "../services/protected_session.js"; -import options from "../services/options.js"; import froca from "../services/froca.js"; -import utils, { openInReusableSplit } from "../services/utils.js"; -import toastService from "../services/toast.js"; import noteCreateService from "../services/note_create.js"; +import openService from "../services/open.js"; +import options from "../services/options.js"; +import protectedSessionService from "../services/protected_session.js"; +import toastService from "../services/toast.js"; +import treeService from "../services/tree.js"; +import utils, { openInReusableSplit } from "../services/utils.js"; +import appContext, { type CommandListenerData } from "./app_context.js"; +import Component from "./component.js"; export default class RootCommandExecutor extends Component { editReadOnlyNoteCommand() { @@ -193,10 +193,13 @@ export default class RootCommandExecutor extends Component { appContext.triggerEvent("zenModeChanged", { isEnabled }); } - async toggleRibbonTabNoteMapCommand() { + async toggleRibbonTabNoteMapCommand(data: CommandListenerData<"toggleRibbonTabNoteMap">) { const { isExperimentalFeatureEnabled } = await import("../services/experimental_features.js"); const isNewLayout = isExperimentalFeatureEnabled("new-layout"); - if (!isNewLayout) return; + if (!isNewLayout) { + this.triggerEvent("toggleRibbonTabNoteMap", data); + return; + } const activeContext = appContext.tabManager.getActiveContext(); if (!activeContext?.notePath) return; @@ -272,7 +275,7 @@ export default class RootCommandExecutor extends Component { } catch (e) { console.error("Error creating AI Chat note:", e); - toastService.showError("Failed to create AI Chat note: " + (e as Error).message); + toastService.showError(`Failed to create AI Chat note: ${(e as Error).message}`); } } } From 77b92385cbc6eaa17a8a5b18975d74c4e517ddf1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 19:21:50 +0200 Subject: [PATCH 13/26] feat(layout): keyboard shortcut for promoted attributes --- apps/client/src/widgets/layout/NoteTitleActions.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/layout/NoteTitleActions.tsx b/apps/client/src/widgets/layout/NoteTitleActions.tsx index a04bfc242..2e13c5f10 100644 --- a/apps/client/src/widgets/layout/NoteTitleActions.tsx +++ b/apps/client/src/widgets/layout/NoteTitleActions.tsx @@ -1,7 +1,7 @@ import "./NoteTitleActions.css"; import clsx from "clsx"; -import { useEffect, useState } from "preact/hooks"; +import { useEffect, useRef, useState } from "preact/hooks"; import NoteContext from "../../components/note_context"; import FNote from "../../entities/fnote"; @@ -10,7 +10,7 @@ import CollectionProperties from "../note_bars/CollectionProperties"; import { checkFullHeight, getExtendedWidgetType } from "../NoteDetail"; import { PromotedAttributesContent, usePromotedAttributeData } from "../PromotedAttributes"; import Collapsible, { ExternallyControlledCollapsible } from "../react/Collapsible"; -import { useNoteContext, useNoteProperty } from "../react/hooks"; +import { useNoteContext, useNoteProperty, useTriliumEvent } from "../react/hooks"; import SearchDefinitionTab from "../ribbon/SearchDefinitionTab"; export default function NoteTitleActions() { @@ -57,6 +57,9 @@ function PromotedAttributes({ note, componentId, noteContext }: { }); }, [ note, noteContext ]); + // Keyboard shortcut. + useTriliumEvent("toggleRibbonTabPromotedAttributes", () => setExpanded(!expanded)); + if (!cells?.length) return false; return (note && ( Date: Tue, 16 Dec 2025 19:29:59 +0200 Subject: [PATCH 14/26] feat(layout): preserve newlines in tooltips --- apps/client/src/stylesheets/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index a7a13f288..24b9275fd 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -717,6 +717,7 @@ table.promoted-attributes-in-tooltip th { .tooltip { font-size: var(--main-font-size) !important; z-index: calc(var(--ck-z-panel) - 1) !important; + white-space: pre-wrap; } .tooltip.tooltip-top { From 737e5b85b442456eeeb2dee346f5f1dc278d944b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 19:40:24 +0200 Subject: [PATCH 15/26] fix(badges): "temporarily editable" remaining after changing editability --- apps/client/src/widgets/layout/NoteBadges.tsx | 5 ++--- apps/client/src/widgets/react/hooks.tsx | 6 +++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/client/src/widgets/layout/NoteBadges.tsx b/apps/client/src/widgets/layout/NoteBadges.tsx index 9cbbf6fcc..245f23199 100644 --- a/apps/client/src/widgets/layout/NoteBadges.tsx +++ b/apps/client/src/widgets/layout/NoteBadges.tsx @@ -22,11 +22,10 @@ export default function NoteBadges() { function ReadOnlyBadge() { const { note, noteContext } = useNoteContext(); - const { isReadOnly, enableEditing } = useIsNoteReadOnly(note, noteContext); + const { isReadOnly, enableEditing, temporarilyEditable } = useIsNoteReadOnly(note, noteContext); const isExplicitReadOnly = note?.isLabelTruthy("readOnly"); - const isTemporarilyEditable = noteContext?.ntxId !== "_popup-editor" && noteContext?.viewScope?.readOnlyTemporarilyDisabled; - if (isTemporarilyEditable) { + if (temporarilyEditable) { return (undefined); const [ readOnlyAttr ] = useNoteLabelBoolean(note, "readOnly"); const [ autoReadOnlyDisabledAttr ] = useNoteLabelBoolean(note, "autoReadOnlyDisabled"); + const [ temporarilyEditable, setTemporarilyEditable ] = useState(false); const enableEditing = useCallback((enabled = true) => { if (noteContext?.viewScope) { noteContext.viewScope.readOnlyTemporarilyDisabled = enabled; appContext.triggerEvent("readOnlyTemporarilyDisabled", {noteContext}); + setTemporarilyEditable(enabled); } }, [noteContext]); @@ -945,6 +947,7 @@ export function useIsNoteReadOnly(note: FNote | null | undefined, noteContext: N if (note && noteContext) { isNoteReadOnly(note, noteContext).then((readOnly) => { setIsReadOnly(readOnly); + setTemporarilyEditable(false); }); } }, [ note, noteContext, noteContext?.viewScope, readOnlyAttr, autoReadOnlyDisabledAttr ]); @@ -952,10 +955,11 @@ export function useIsNoteReadOnly(note: FNote | null | undefined, noteContext: N useTriliumEvent("readOnlyTemporarilyDisabled", ({noteContext: eventNoteContext}) => { if (noteContext?.ntxId === eventNoteContext.ntxId) { setIsReadOnly(!noteContext.viewScope?.readOnlyTemporarilyDisabled); + setTemporarilyEditable(true); } }); - return { isReadOnly, enableEditing }; + return { isReadOnly, enableEditing, temporarilyEditable }; } async function isNoteReadOnly(note: FNote, noteContext: NoteContext) { From af02685f2ff8ff7ecbd1a7785d186581eba7ca34 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 16 Dec 2025 20:14:21 +0200 Subject: [PATCH 16/26] chore(options): fix misalignment in options row --- .../src/widgets/type_widgets/options/components/OptionsRow.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/options/components/OptionsRow.css b/apps/client/src/widgets/type_widgets/options/components/OptionsRow.css index 6eeaa1074..5f764fcc4 100644 --- a/apps/client/src/widgets/type_widgets/options/components/OptionsRow.css +++ b/apps/client/src/widgets/type_widgets/options/components/OptionsRow.css @@ -8,6 +8,7 @@ .option-row > label { width: 40%; margin-bottom: 0 !important; + flex-shrink: 0; } .option-row > select, @@ -26,4 +27,4 @@ .option-row.centered { justify-content: center; -} \ No newline at end of file +} From 948a6f84d63f2ded785a8f544db06e539c99167e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 12:37:12 +0200 Subject: [PATCH 17/26] feat(options/appearance): add basic illustration for old layout --- .../type_widgets/options/appearance.css | 91 ++++++++++++++ .../type_widgets/options/appearance.tsx | 112 ++++++++++++++---- .../components/RadioWithIllustration.css | 8 ++ .../components/RadioWithIllustration.tsx | 28 +++++ apps/server/src/routes/api/options.ts | 16 +-- apps/server/src/services/options_init.ts | 14 ++- packages/commons/src/lib/options_interface.ts | 1 + 7 files changed, 237 insertions(+), 33 deletions(-) create mode 100644 apps/client/src/widgets/type_widgets/options/appearance.css create mode 100644 apps/client/src/widgets/type_widgets/options/components/RadioWithIllustration.css create mode 100644 apps/client/src/widgets/type_widgets/options/components/RadioWithIllustration.tsx diff --git a/apps/client/src/widgets/type_widgets/options/appearance.css b/apps/client/src/widgets/type_widgets/options/appearance.css new file mode 100644 index 000000000..4cfaa3450 --- /dev/null +++ b/apps/client/src/widgets/type_widgets/options/appearance.css @@ -0,0 +1,91 @@ +.old-layout-illustration { + width: 170px; + height: 130px; + border: 1px solid var(--main-border-color); + border-radius: 6px; + display: flex; + background: var(--root-background); + overflow: hidden; + + .launcher-pane { + width: 10%; + background: var(--launcher-pane-vert-background-color); + display: flex; + flex-direction: column; + align-items: center; + padding: 1px 0; + + svg { + margin-top: 1px; + margin-bottom: 5px; + } + + .bx { + margin: 4px 0; + font-size: 12px; + opacity: 0.5; + } + } + + .tree { + width: 20%; + font-size: 4px; + padding: 12px 5px; + overflow: hidden; + flex-shrink: 0; + + ul { + list-style-type: none; + margin: 0; + padding: 0; + } + } + + .main { + display: flex; + flex-direction: column; + flex-grow: 1; + + .tab-bar { + height: 20px; + } + + .content { + background-color: var(--main-background-color); + flex-grow: 1; + border-top-left-radius: 6px; + padding: 5px; + + .title-bar { + display: flex; + align-items: center; + font-size: 14px; + + .title { + flex-grow: 1; + } + } + + .ribbon { + .bx { + font-size: 10px; + } + + .ribbon-header { + display: flex; + } + + .ribbon-body { + height: 20px; + background-color: rgba(0, 0, 0, 0.05); + border-radius: 6px; + margin: 1px 0; + } + } + + .content-inner { + font-size: 6px; + } + } + } +} diff --git a/apps/client/src/widgets/type_widgets/options/appearance.tsx b/apps/client/src/widgets/type_widgets/options/appearance.tsx index 809d05e9e..fe6c54746 100644 --- a/apps/client/src/widgets/type_widgets/options/appearance.tsx +++ b/apps/client/src/widgets/type_widgets/options/appearance.tsx @@ -1,18 +1,23 @@ +import "./appearance.css"; + +import { FontFamily, OptionNames } from "@triliumnext/commons"; import { useEffect, useState } from "preact/hooks"; + import { t } from "../../../services/i18n"; -import { isElectron, isMobile, reloadFrontendApp, restartDesktopApp } from "../../../services/utils"; -import Column from "../../react/Column"; -import FormRadioGroup from "../../react/FormRadioGroup"; -import FormSelect, { FormSelectWithGroups } from "../../react/FormSelect"; -import { useTriliumOption, useTriliumOptionBool } from "../../react/hooks"; -import OptionsSection from "./components/OptionsSection"; import server from "../../../services/server"; +import { isElectron, isMobile, reloadFrontendApp, restartDesktopApp } from "../../../services/utils"; +import Button from "../../react/Button"; +import Column from "../../react/Column"; import FormCheckbox from "../../react/FormCheckbox"; import FormGroup from "../../react/FormGroup"; -import { FontFamily, OptionNames } from "@triliumnext/commons"; -import FormTextBox, { FormTextBoxWithUnit } from "../../react/FormTextBox"; +import FormRadioGroup from "../../react/FormRadioGroup"; +import FormSelect, { FormSelectWithGroups } from "../../react/FormSelect"; import FormText from "../../react/FormText"; -import Button from "../../react/Button"; +import FormTextBox, { FormTextBoxWithUnit } from "../../react/FormTextBox"; +import { useTriliumOption, useTriliumOptionBool } from "../../react/hooks"; +import Icon from "../../react/Icon"; +import OptionsSection from "./components/OptionsSection"; +import RadioWithIllustration from "./components/RadioWithIllustration"; import RelatedSettings from "./components/RelatedSettings"; const MIN_CONTENT_WIDTH = 640; @@ -30,7 +35,7 @@ const BUILTIN_THEMES: Theme[] = [ { val: "auto", title: t("theme.auto_theme") }, { val: "light", title: t("theme.light_theme") }, { val: "dark", title: t("theme.dark_theme") } -] +]; interface FontFamilyEntry { value: FontFamily; @@ -84,6 +89,7 @@ export default function AppearanceSettings() { return (
+ {!isMobile() && } {!isMobile() && } {overrideThemeFonts === "true" && } @@ -102,7 +108,73 @@ export default function AppearanceSettings() { } ]} />
- ) + ); +} + +function LayoutSwitcher() { + return ( + + }, + { key: "new-layout", text: "New layout", illustration: } + ]} + /> + + ); +} + +function LayoutIllustration({ isNewLayout }: { isNewLayout: boolean }) { + return ( +
+
+ + + + +
+ +
+
    +
  • Options
  • +
      +
    • Appearance
    • +
    • Shortcuts
    • +
    • Text Notes
    • +
    • Code Notes
    • +
    • Images
    • +
    +
+
+ +
+
+ +
+
+ + Title + +
+ + {!isNewLayout &&
+
+ + + + +
+ +
+
} + +
+ This is a "demo" document packaged with Trilium to showcase some of its features and also give you some ideas on how you might structure your notes. You can play with it, and modify the note content and tree structure as you wish. +
+
+
+
+ ); } function LayoutOrientation() { @@ -141,7 +213,7 @@ function ApplicationTheme() { setThemes([ ...BUILTIN_THEMES, ...userThemes - ]) + ]); }); }, []); @@ -162,7 +234,7 @@ function ApplicationTheme() {
- ) + ); } function Fonts() { @@ -245,7 +317,7 @@ function ElectronIntegration() {
diff --git a/apps/client/src/widgets/type_widgets/options/components/RadioWithIllustration.tsx b/apps/client/src/widgets/type_widgets/options/components/RadioWithIllustration.tsx index f41d3701b..8d768f486 100644 --- a/apps/client/src/widgets/type_widgets/options/components/RadioWithIllustration.tsx +++ b/apps/client/src/widgets/type_widgets/options/components/RadioWithIllustration.tsx @@ -10,7 +10,7 @@ interface RadioWithIllustrationProps { illustration: ComponentChild; }[]; currentValue: string; - onChange(newValue: string); + onChange(newValue: string): void; } export default function RadioWithIllustration({ currentValue, onChange, values }: RadioWithIllustrationProps) { From d0b0a13b6d45340f378efb320a480d1d71be0418 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 15:44:01 +0200 Subject: [PATCH 21/26] chore(options/appearance): use translations --- apps/client/src/translations/en/translation.json | 5 ++++- apps/client/src/widgets/type_widgets/options/appearance.tsx | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 8764f8001..7e74fb471 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -2116,7 +2116,10 @@ }, "settings_appearance": { "related_code_blocks": "Color scheme for code blocks in text notes", - "related_code_notes": "Color scheme for code notes" + "related_code_notes": "Color scheme for code notes", + "ui": "User interface", + "ui_old_layout": "Old layout", + "ui_new_layout": "New layout" }, "units": { "percentage": "%" diff --git a/apps/client/src/widgets/type_widgets/options/appearance.tsx b/apps/client/src/widgets/type_widgets/options/appearance.tsx index f88ec4058..1896d1855 100644 --- a/apps/client/src/widgets/type_widgets/options/appearance.tsx +++ b/apps/client/src/widgets/type_widgets/options/appearance.tsx @@ -115,7 +115,7 @@ function LayoutSwitcher() { const [ newLayout, setNewLayout ] = useTriliumOptionBool("newLayout"); return ( - + { @@ -123,8 +123,8 @@ function LayoutSwitcher() { reloadFrontendApp(); }} values={[ - { key: "old-layout", text: "Old layout", illustration: }, - { key: "new-layout", text: "New layout", illustration: } + { key: "old-layout", text: t("settings_appearance.ui_old_layout"), illustration: }, + { key: "new-layout", text: t("settings_appearance.ui_new_layout"), illustration: } ]} /> From 87d99aaffa0730baa03d9c89b92a499c25fcc01a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 15:46:00 +0200 Subject: [PATCH 22/26] fix(layout): experimental styles not applied --- apps/client/src/services/experimental_features.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/client/src/services/experimental_features.ts b/apps/client/src/services/experimental_features.ts index 23477eae9..d252e2a77 100644 --- a/apps/client/src/services/experimental_features.ts +++ b/apps/client/src/services/experimental_features.ts @@ -28,7 +28,11 @@ export function isExperimentalFeatureEnabled(featureId: ExperimentalFeatureId): } export function getEnabledExperimentalFeatureIds() { - return getEnabledFeatures().values(); + const values = [ ...getEnabledFeatures().values() ]; + if (options.is("newLayout")) { + values.push("new-layout"); + } + return values; } export async function toggleExperimentalFeature(featureId: ExperimentalFeatureId, enable: boolean) { From 261c1f77cfbe21147b63d24285843ee17bd47c11 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 15:47:11 +0200 Subject: [PATCH 23/26] fix(layout): 2px margin in code notes --- apps/client/src/widgets/layout/InlineTitle.css | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/layout/InlineTitle.css b/apps/client/src/widgets/layout/InlineTitle.css index a667e35fc..613c845e3 100644 --- a/apps/client/src/widgets/layout/InlineTitle.css +++ b/apps/client/src/widgets/layout/InlineTitle.css @@ -7,7 +7,6 @@ } .inline-title { - margin-top: 2px; /* Allow space for the focus outline */ max-width: var(--max-content-width); container-type: inline-size; padding-inline-start: 24px; @@ -111,7 +110,7 @@ body.prefers-centered-content .inline-title { .note-type-switcher { --badge-radius: 12px; - + position: relative; top: 5px; padding: .25em 0; @@ -121,7 +120,7 @@ body.prefers-centered-content .inline-title { min-width: 0; gap: 5px; min-height: 35px; - + >* { flex-shrink: 0; animation: note-type-switcher-intro 200ms ease-in; From cbecc2499937db926dca36c615d224808fe57426 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 16:05:13 +0200 Subject: [PATCH 24/26] feat(call_to_action): inform about the layout change --- .../src/translations/en/translation.json | 2 + .../src/widgets/dialogs/call_to_action.tsx | 13 ++++--- .../dialogs/call_to_action_definitions.ts | 39 +++++++++++-------- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 7e74fb471..19c294044 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -2109,6 +2109,8 @@ "background_effects_title": "Background effects are now stable", "background_effects_message": "On Windows devices, background effects are now fully stable. The background effects adds a touch of color to the user interface by blurring the background behind it. This technique is also used in other applications such as Windows Explorer.", "background_effects_button": "Enable background effects", + "new_layout_title": "New layout", + "new_layout_message": "We’ve introduced a modernized layout for Trilium. The ribbon has been removed and seamlessly integrated into the main interface, with a new status bar and expandable sections (such as promoted attributes) taking over key functions.\n\nThe new layout is enabled by default, and can be temporarily disabled via Options → Appearance.", "dismiss": "Dismiss" }, "settings": { diff --git a/apps/client/src/widgets/dialogs/call_to_action.tsx b/apps/client/src/widgets/dialogs/call_to_action.tsx index 1ae4a14eb..9267384ae 100644 --- a/apps/client/src/widgets/dialogs/call_to_action.tsx +++ b/apps/client/src/widgets/dialogs/call_to_action.tsx @@ -1,11 +1,12 @@ import { useMemo, useState } from "preact/hooks"; + +import { t } from "../../services/i18n"; import Button from "../react/Button"; import Modal from "../react/Modal"; import { dismissCallToAction, getCallToActions } from "./call_to_action_definitions"; -import { t } from "../../services/i18n"; export default function CallToActionDialog() { - const activeCallToActions = useMemo(() => getCallToActions(), []); + const activeCallToActions = useMemo(() => getCallToActions(), []); const [ activeIndex, setActiveIndex ] = useState(0); const [ shown, setShown ] = useState(true); const activeItem = activeCallToActions[activeIndex]; @@ -36,11 +37,13 @@ export default function CallToActionDialog() { await dismissCallToAction(activeItem.id); await button.onClick(); goToNext(); - }}/> + }}/> )} } > -

{activeItem.message}

+

{activeItem.message}

- ) + ); } diff --git a/apps/client/src/widgets/dialogs/call_to_action_definitions.ts b/apps/client/src/widgets/dialogs/call_to_action_definitions.ts index 31982689e..056672b16 100644 --- a/apps/client/src/widgets/dialogs/call_to_action_definitions.ts +++ b/apps/client/src/widgets/dialogs/call_to_action_definitions.ts @@ -1,6 +1,6 @@ -import utils from "../../services/utils"; -import options from "../../services/options"; import { t } from "../../services/i18n"; +import options from "../../services/options"; +import utils from "../../services/utils"; /** * A "call-to-action" is an interactive message for the user, generally to present new features. @@ -46,20 +46,11 @@ function isNextTheme() { const CALL_TO_ACTIONS: CallToAction[] = [ { - id: "next_theme", - title: t("call_to_action.next_theme_title"), - message: t("call_to_action.next_theme_message"), - enabled: () => !isNextTheme(), - buttons: [ - { - text: t("call_to_action.next_theme_button"), - async onClick() { - await options.save("theme", "next"); - await options.save("backgroundEffects", "true"); - utils.reloadFrontendApp("call-to-action"); - } - } - ] + id: "new_layout", + title: t("call_to_action.new_layout_title"), + message: t("call_to_action.new_layout_message"), + enabled: () => true, + buttons: [] }, { id: "background_effects", @@ -75,6 +66,22 @@ const CALL_TO_ACTIONS: CallToAction[] = [ } } ] + }, + { + id: "next_theme", + title: t("call_to_action.next_theme_title"), + message: t("call_to_action.next_theme_message"), + enabled: () => !isNextTheme(), + buttons: [ + { + text: t("call_to_action.next_theme_button"), + async onClick() { + await options.save("theme", "next"); + await options.save("backgroundEffects", "true"); + utils.reloadFrontendApp("call-to-action"); + } + } + ] } ]; From ea4a3b7f079264dac1ba761892b4bd2f2ff10ac7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 17:04:47 +0200 Subject: [PATCH 25/26] chore(client): address requested changes --- apps/client/src/entities/fnote.ts | 20 ++++++++----------- apps/client/src/stylesheets/style.css | 4 ++++ .../src/widgets/buttons/global_menu.tsx | 15 +++++++------- .../src/widgets/dialogs/call_to_action.tsx | 4 +--- .../type_widgets/options/appearance.tsx | 3 ++- 5 files changed, 22 insertions(+), 24 deletions(-) diff --git a/apps/client/src/entities/fnote.ts b/apps/client/src/entities/fnote.ts index cd255b72a..cd1a8b7a7 100644 --- a/apps/client/src/entities/fnote.ts +++ b/apps/client/src/entities/fnote.ts @@ -268,9 +268,8 @@ export default class FNote { } } return results; - } + } return this.children; - } async getSubtreeNoteIds(includeArchived = false) { @@ -471,9 +470,8 @@ export default class FNote { return a.isHidden ? 1 : -1; } else if (a.isSearch !== b.isSearch) { return a.isSearch ? 1 : -1; - } + } return a.notePath.length - b.notePath.length; - }); return notePaths; @@ -597,14 +595,12 @@ export default class FNote { } else if (this.type === "text") { if (this.isFolder()) { return "bx bx-folder"; - } + } return "bx bx-note"; - } else if (this.type === "code" && this.mime.startsWith("text/x-sql")) { return "bx bx-data"; - } + } return NOTE_TYPE_ICONS[this.type]; - } getColorClass() { @@ -811,9 +807,9 @@ export default class FNote { return this.getLabelValue(nameWithPrefix.substring(1)); } else if (nameWithPrefix.startsWith("~")) { return this.getRelationValue(nameWithPrefix.substring(1)); - } + } return this.getLabelValue(nameWithPrefix); - + } /** @@ -878,10 +874,10 @@ export default class FNote { promotedAttrs.sort((a, b) => { if (a.noteId === b.noteId) { return a.position < b.position ? -1 : 1; - } + } // inherited promoted attributes should stay grouped: https://github.com/zadam/trilium/issues/3761 return a.noteId < b.noteId ? -1 : 1; - + }); return promotedAttrs; diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 24b9275fd..f10ace694 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -724,6 +724,10 @@ table.promoted-attributes-in-tooltip th { z-index: 32767 !important; } +.pre-wrap-text { + white-space: pre-wrap; +} + .bs-tooltip-bottom .tooltip-arrow::before { border-bottom-color: var(--main-border-color) !important; } diff --git a/apps/client/src/widgets/buttons/global_menu.tsx b/apps/client/src/widgets/buttons/global_menu.tsx index fa24c8387..255cf89c9 100644 --- a/apps/client/src/widgets/buttons/global_menu.tsx +++ b/apps/client/src/widgets/buttons/global_menu.tsx @@ -1,7 +1,7 @@ import "./global_menu.css"; import { KeyboardActionNames } from "@triliumnext/commons"; -import { ComponentChildren } from "preact"; +import { ComponentChildren, RefObject } from "preact"; import { useContext, useEffect, useRef, useState } from "preact/hooks"; import { CommandNames } from "../../components/app_context"; @@ -30,13 +30,15 @@ export default function GlobalMenu({ isHorizontalLayout }: { isHorizontalLayout: const parentComponent = useContext(ParentComponent); const { isUpdateAvailable, latestVersion } = useTriliumUpdateStatus(); const isMobileLocal = isMobile(); + const logoRef = useRef(null); + useStaticTooltip(logoRef); return ( - {isVerticalLayout && } + {isVerticalLayout && } {isUpdateAvailable && } @@ -135,9 +137,9 @@ function SwitchToOptions() { return; } else if (!isMobile()) { return ; - } + } return ; - + } function MenuItem({ icon, text, title, command, disabled, active }: MenuItemProps void)>) { @@ -159,10 +161,7 @@ function KeyboardActionMenuItem({ text, command, ...props }: MenuItemProps; } -function VerticalLayoutIcon() { - const logoRef = useRef(null); - useStaticTooltip(logoRef); - +export function VerticalLayoutIcon({ logoRef }: { logoRef?: RefObject }) { return ( diff --git a/apps/client/src/widgets/dialogs/call_to_action.tsx b/apps/client/src/widgets/dialogs/call_to_action.tsx index 9267384ae..4f6da5293 100644 --- a/apps/client/src/widgets/dialogs/call_to_action.tsx +++ b/apps/client/src/widgets/dialogs/call_to_action.tsx @@ -41,9 +41,7 @@ export default function CallToActionDialog() { )} } > -

{activeItem.message}

+

{activeItem.message}

); } diff --git a/apps/client/src/widgets/type_widgets/options/appearance.tsx b/apps/client/src/widgets/type_widgets/options/appearance.tsx index 1896d1855..feecb56f5 100644 --- a/apps/client/src/widgets/type_widgets/options/appearance.tsx +++ b/apps/client/src/widgets/type_widgets/options/appearance.tsx @@ -6,6 +6,7 @@ import { useEffect, useState } from "preact/hooks"; import { t } from "../../../services/i18n"; import server from "../../../services/server"; import { isElectron, isMobile, reloadFrontendApp, restartDesktopApp } from "../../../services/utils"; +import { VerticalLayoutIcon } from "../../buttons/global_menu"; import Button from "../../react/Button"; import Column from "../../react/Column"; import FormCheckbox from "../../react/FormCheckbox"; @@ -135,7 +136,7 @@ function LayoutIllustration({ isNewLayout }: { isNewLayout?: boolean }) { return (
- + From c7f1e46b268395fda205376fbf798541d0cf8112 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 17 Dec 2025 18:05:39 +0200 Subject: [PATCH 26/26] e2e(server): disable new layout and call-to-action for now --- apps/server/spec/db/document.db | Bin 1220608 -> 1318912 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/server/spec/db/document.db b/apps/server/spec/db/document.db index 264a9ff0d1edf2d8b2df3eefedec5ba881e48ffe..06ca200470c85630ba673c461deea8f37fef298a 100644 GIT binary patch delta 138767 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 Ll=UegRqOu+`sI(- delta 57906 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