diff --git a/apps/client/package.json b/apps/client/package.json index 6922d39b1..a84bda4c3 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/client", - "version": "0.99.3", + "version": "0.99.4", "description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)", "private": true, "license": "AGPL-3.0-only", diff --git a/apps/client/src/components/root_command_executor.ts b/apps/client/src/components/root_command_executor.ts index 3ad05b7a2..a2d62eddd 100644 --- a/apps/client/src/components/root_command_executor.ts +++ b/apps/client/src/components/root_command_executor.ts @@ -7,7 +7,6 @@ import protectedSessionService from "../services/protected_session.js"; import options from "../services/options.js"; import froca from "../services/froca.js"; import utils from "../services/utils.js"; -import LlmChatPanel from "../widgets/llm_chat_panel.js"; import toastService from "../services/toast.js"; import noteCreateService from "../services/note_create.js"; diff --git a/apps/client/src/services/utils.ts b/apps/client/src/services/utils.ts index 68746c54b..bb6d6d07f 100644 --- a/apps/client/src/services/utils.ts +++ b/apps/client/src/services/utils.ts @@ -841,7 +841,7 @@ export function arrayEqual(a: T[], b: T[]) { return true; } -type Indexed = T & { index: number }; +export type Indexed = T & { index: number }; /** * Given an object array, alters every object in the array to have an index field assigned to it. diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index d9f53b9ea..06a3c1c3e 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -2178,6 +2178,11 @@ body.zen .note-split .ribbon-container .classic-toolbar-widget { background: var(--menu-background-color); } +body.zen .note-split .ribbon-container .classic-toolbar-widget:not(:has(> .ck-toolbar)) { + /* Hide the toolbar wrapper if the toolbar is missing */ + display: none; +} + body.zen .note-split:focus-within .ribbon-container .classic-toolbar-widget { pointer-events: all; } @@ -2555,7 +2560,7 @@ iframe.print-iframe { } .scrolling-container > .note-detail.full-height, -.scrolling-container > .note-list-widget { +.scrolling-container > .note-list-widget.full-height { position: relative; flex-grow: 1; width: 100%; diff --git a/apps/client/src/widgets/react/hooks.tsx b/apps/client/src/widgets/react/hooks.tsx index 4ede3c73e..f6c14d45a 100644 --- a/apps/client/src/widgets/react/hooks.tsx +++ b/apps/client/src/widgets/react/hooks.tsx @@ -5,7 +5,7 @@ import { MutableRef, useCallback, useContext, useDebugValue, useEffect, useLayou import { ParentComponent, refToJQuerySelector } from "./react_utils"; import { RefObject, VNode } from "preact"; import { Tooltip } from "bootstrap"; -import { ViewScope } from "../../services/link"; +import { ViewMode, ViewScope } from "../../services/link"; import appContext, { EventData, EventNames } from "../../components/app_context"; import attributes from "../../services/attributes"; import BasicWidget, { ReactWrappedWidget } from "../basic_widget"; @@ -261,6 +261,7 @@ export function useNoteContext() { const [ notePath, setNotePath ] = useState(); const [ note, setNote ] = useState(); const [ , setViewScope ] = useState(); + const [ isReadOnlyTemporarilyDisabled, setIsReadOnlyTemporarilyDisabled ] = useState(noteContext?.viewScope?.isReadOnly); const [ refreshCounter, setRefreshCounter ] = useState(0); useEffect(() => { @@ -280,6 +281,11 @@ export function useNoteContext() { setRefreshCounter(refreshCounter + 1); } }); + useTriliumEvent("readOnlyTemporarilyDisabled", ({ noteContext: eventNoteContext }) => { + if (eventNoteContext.ntxId === noteContext?.ntxId) { + setIsReadOnlyTemporarilyDisabled(eventNoteContext?.viewScope?.readOnlyTemporarilyDisabled); + } + }); const parentComponent = useContext(ParentComponent) as ReactWrappedWidget; useDebugValue(() => `notePath=${notePath}, ntxId=${noteContext?.ntxId}`); @@ -293,7 +299,8 @@ export function useNoteContext() { viewScope: noteContext?.viewScope, componentId: parentComponent.componentId, noteContext, - parentComponent + parentComponent, + isReadOnlyTemporarilyDisabled }; } diff --git a/apps/client/src/widgets/ribbon/Ribbon.tsx b/apps/client/src/widgets/ribbon/Ribbon.tsx index 1c5b8a7bb..78cec9aca 100644 --- a/apps/client/src/widgets/ribbon/Ribbon.tsx +++ b/apps/client/src/widgets/ribbon/Ribbon.tsx @@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks" import { useNoteContext, useNoteProperty, useStaticTooltipWithKeyboardShortcut, useTriliumEvents } from "../react/hooks"; import "./style.css"; -import { numberObjectsInPlace } from "../../services/utils"; +import { Indexed, numberObjectsInPlace } from "../../services/utils"; import { EventNames } from "../../components/app_context"; import NoteActions from "./NoteActions"; import { KeyboardActionNames } from "@triliumnext/commons"; @@ -11,30 +11,47 @@ import { TabConfiguration, TitleContext } from "./ribbon-interface"; const TAB_CONFIGURATION = numberObjectsInPlace(RIBBON_TAB_DEFINITIONS); +interface ComputedTab extends Indexed { + shouldShow: boolean; +} + export default function Ribbon() { - const { note, ntxId, hoistedNoteId, notePath, noteContext, componentId } = useNoteContext(); + const { note, ntxId, hoistedNoteId, notePath, noteContext, componentId, isReadOnlyTemporarilyDisabled } = useNoteContext(); const noteType = useNoteProperty(note, "type"); - const titleContext: TitleContext = { note }; const [ activeTabIndex, setActiveTabIndex ] = useState(); - const computedTabs = useMemo( - () => TAB_CONFIGURATION.map(tab => { - const shouldShow = typeof tab.show === "boolean" ? tab.show : tab.show?.(titleContext); - return { + const [ computedTabs, setComputedTabs ] = useState(); + const titleContext: TitleContext = useMemo(() => ({ + note, + noteContext + }), [ note, noteContext ]); + + async function refresh() { + const computedTabs: ComputedTab[] = []; + for (const tab of TAB_CONFIGURATION) { + const shouldShow = await shouldShowTab(tab.show, titleContext); + computedTabs.push({ ...tab, - shouldShow - } - }), - [ titleContext, note, noteType ]); + shouldShow: !!shouldShow + }); + } + setComputedTabs(computedTabs); + } + + useEffect(() => { + refresh(); + }, [ note, noteType, isReadOnlyTemporarilyDisabled ]); // Automatically activate the first ribbon tab that needs to be activated whenever a note changes. useEffect(() => { + if (!computedTabs) return; const tabToActivate = computedTabs.find(tab => tab.shouldShow && (typeof tab.activate === "boolean" ? tab.activate : tab.activate?.(titleContext))); setActiveTabIndex(tabToActivate?.index); - }, [ note?.noteId ]); + }, [ computedTabs, note?.noteId ]); // Register keyboard shortcuts. const eventsToListenTo = useMemo(() => TAB_CONFIGURATION.filter(config => config.toggleCommand).map(config => config.toggleCommand) as EventNames[], []); useTriliumEvents(eventsToListenTo, useCallback((e, toggleCommand) => { + if (!computedTabs) return; const correspondingTab = computedTabs.find(tab => tab.toggleCommand === toggleCommand); if (correspondingTab) { if (activeTabIndex !== correspondingTab.index) { @@ -51,7 +68,7 @@ export default function Ribbon() { <>
- {computedTabs.map(({ title, icon, index, toggleCommand, shouldShow }) => ( + {computedTabs && computedTabs.map(({ title, icon, index, toggleCommand, shouldShow }) => ( shouldShow &&
- {computedTabs.map(tab => { + {computedTabs && computedTabs.map(tab => { const isActive = tab.index === activeTabIndex; if (!isActive && !tab.stayInDom) { return; @@ -129,3 +146,9 @@ function RibbonTab({ icon, title, active, onClick, toggleCommand }: { icon: stri ) } +export async function shouldShowTab(showConfig: boolean | ((context: TitleContext) => Promise | boolean | null | undefined), context: TitleContext) { + if (showConfig === null || showConfig === undefined) return true; + if (typeof showConfig === "boolean") return showConfig; + if ("then" in showConfig) return await showConfig(context); + return showConfig(context); +} diff --git a/apps/client/src/widgets/ribbon/RibbonDefinition.ts b/apps/client/src/widgets/ribbon/RibbonDefinition.ts index 8f37053dc..9f19707cb 100644 --- a/apps/client/src/widgets/ribbon/RibbonDefinition.ts +++ b/apps/client/src/widgets/ribbon/RibbonDefinition.ts @@ -21,7 +21,9 @@ export const RIBBON_TAB_DEFINITIONS: TabConfiguration[] = [ { title: t("classic_editor_toolbar.title"), icon: "bx bx-text", - show: ({ note }) => note?.type === "text" && options.get("textNoteEditorType") === "ckeditor-classic", + show: async ({ note, noteContext }) => note?.type === "text" + && options.get("textNoteEditorType") === "ckeditor-classic" + && !(await noteContext?.isReadOnly()), toggleCommand: "toggleRibbonTabClassicEditor", content: FormattingToolbar, activate: true, diff --git a/apps/client/src/widgets/ribbon/components/StandaloneRibbonAdapter.tsx b/apps/client/src/widgets/ribbon/components/StandaloneRibbonAdapter.tsx index 54a0f1af0..1fbdd5d63 100644 --- a/apps/client/src/widgets/ribbon/components/StandaloneRibbonAdapter.tsx +++ b/apps/client/src/widgets/ribbon/components/StandaloneRibbonAdapter.tsx @@ -1,8 +1,9 @@ import { ComponentChildren } from "preact"; import { useNoteContext } from "../../react/hooks"; -import { TabContext, TitleContext } from "../ribbon-interface"; +import { TabContext } from "../ribbon-interface"; import { useEffect, useMemo, useState } from "preact/hooks"; import { RIBBON_TAB_DEFINITIONS } from "../RibbonDefinition"; +import { shouldShowTab } from "../Ribbon"; interface StandaloneRibbonAdapterProps { component: (props: TabContext) => ComponentChildren; @@ -16,10 +17,11 @@ export default function StandaloneRibbonAdapter({ component }: StandaloneRibbonA const Component = component; const { note, ntxId, hoistedNoteId, notePath, noteContext, componentId } = useNoteContext(); const definition = useMemo(() => RIBBON_TAB_DEFINITIONS.find(def => def.content === component), [ component ]); - const [ shown, setShown ] = useState(unwrapShown(definition?.show, { note })); + const [ shown, setShown ] = useState(false); useEffect(() => { - setShown(unwrapShown(definition?.show, { note })); + if (!definition) return; + shouldShowTab(definition.show, { note, noteContext }).then(setShown); }, [ note ]); return ( @@ -35,9 +37,3 @@ export default function StandaloneRibbonAdapter({ component }: StandaloneRibbonA /> ); } - -function unwrapShown(value: boolean | ((context: TitleContext) => boolean | null | undefined) | undefined, context: TitleContext) { - if (!value) return true; - if (typeof value === "boolean") return value; - return !!value(context); -} diff --git a/apps/client/src/widgets/ribbon/ribbon-interface.ts b/apps/client/src/widgets/ribbon/ribbon-interface.ts index 2fbc40612..7ab982dd2 100644 --- a/apps/client/src/widgets/ribbon/ribbon-interface.ts +++ b/apps/client/src/widgets/ribbon/ribbon-interface.ts @@ -16,13 +16,14 @@ export interface TabContext { export interface TitleContext { note: FNote | null | undefined; + noteContext: NoteContext | undefined; } export interface TabConfiguration { title: string | ((context: TitleContext) => string); icon: string; content: (context: TabContext) => VNode | false; - show: boolean | ((context: TitleContext) => boolean | null | undefined); + show: boolean | ((context: TitleContext) => Promise | boolean | null | undefined); toggleCommand?: KeyboardActionNames; activate?: boolean | ((context: TitleContext) => boolean); /** diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 92da43cbb..f4bb4118f 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/desktop", - "version": "0.99.3", + "version": "0.99.4", "description": "Build your personal knowledge base with Trilium Notes", "private": true, "main": "src/main.ts", diff --git a/apps/server/package.json b/apps/server/package.json index 7f2ef25b2..24d44280b 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/server", - "version": "0.99.3", + "version": "0.99.4", "description": "The server-side component of TriliumNext, which exposes the client via the web, allows for sync and provides a REST API for both internal and external use.", "private": true, "main": "./src/main.ts", diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html index dbb508461..c0cf16ba9 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.html @@ -4,6 +4,7 @@
Screenshot of the note contextual menu indicating the “Export as PDF” option.
+

Printing

This feature allows printing of notes. It works on both the desktop client, but also on the web.

@@ -59,9 +60,9 @@ class="admonition note"> orientation, size. However, there are a few Attributes to adjust some of the settings:

    -
  • To print in landscape mode instead of portrait (useful for big diagrams +
  • To print in landscape mode instead of portrait (useful for big diagrams or slides), add #printLandscape.
  • -
  • By default, the resulting PDF will be in Letter format. It is possible +
  • By default, the resulting PDF will be in Letter format. It is possible to adjust it to another page size via the #printPageSize attribute, with one of the following values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
@@ -75,9 +76,9 @@ class="admonition note"> href="#root/_help_4TIF1oA4VQRO">Options and assigning a key combination for:

    -
  • Print Active Note +
  • Print Active Note
  • -
  • Export Active Note as PDF +
  • Export Active Note as PDF

Constraints & limitations

@@ -85,41 +86,40 @@ class="admonition note"> supported when printing, in which case the Print and Export as PDF options will be disabled.

    -
  • For Code notes: +
  • For Code notes:
      -
    • Line numbers are not printed.
    • -
    • Syntax highlighting is enabled, however a default theme (Visual Studio) +
    • Line numbers are not printed.
    • +
    • Syntax highlighting is enabled, however a default theme (Visual Studio) is enforced.
  • -
  • For Collections: +
  • For Collections:
      -
    • Only Presentation is +
    • Only Presentation is currently supported.
    • -
    • We plan to add support for all the collection types at some point.
    • +
    • We plan to add support for all the collection types at some point.
  • -
  • Using Custom app-wide CSS for +
  • Using Custom app-wide CSS for printing is not longer supported, due to a more stable but isolated mechanism.
      -
    • We plan to introduce a new mechanism specifically for a print CSS.
    • +
    • We plan to introduce a new mechanism specifically for a print CSS.

Customizing the print CSS

As an advanced use case, it's possible to customize the CSS used for printing such as adjusting the fonts, sizes or margins. Note that Custom app-wide CSS will - not work for printing.

+ href="#root/_help_AlhDUqhENtH7">Custom app-wide CSS will not work for + printing.

To do so:

    -
  • Create a CSS code note.
  • -
  • On the note being printed, apply the ~printCss relation to +
  • Create a CSS code note.
  • +
  • On the note being printed, apply the ~printCss relation to point to the newly created CSS code note.
  • -
  • To apply the CSS to multiple notes, consider using inheritable attributes or  - Templates.
  • +
  • To apply the CSS to multiple notes, consider using inheritable attributes or  + Templates.

For example, to change the font of the document from the one defined by the theme or the user to a serif one:

body {
@@ -128,14 +128,12 @@ class="admonition note">
 }

To remark:

    -
  • Multiple CSS notes can be add by using multiple ~printCss relations.
  • -
  • If the note pointing to the printCss doesn't have the right +
  • Multiple CSS notes can be add by using multiple ~printCss relations.
  • +
  • If the note pointing to the printCss doesn't have the right note type or mime type, it will be ignored.
  • -
  • If migrating from a previous version where Custom app-wide CSS, - there's no need for @media print {  since the style-sheet is - used only for printing.
  • +
  • If migrating from a previous version where Custom app-wide CSS, there's no need for @media print {  since + the style-sheet is used only for printing.

Under the hood

Both printing and exporting as PDF use the same mechanism: a note is rendered diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html index acdfa774d..9332bcc8f 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html @@ -1,38 +1,37 @@

It is possible to provide a CSS file to be used regardless of the theme set by the user.

-
- - - - - - - - - - - - - - - - - - - - - -
  
- - Start by creating a new note and changing the note type to CSS
- - In the ribbon, press the “Owned Attributes” section and type #appCss.
- - Type the desired CSS.    -
-
Generally it's a good idea to append !important for the styles - that are being changed, in order to prevent other
-
+ + + + + + + + + + + + + + + + + + + + + +
+ + Start by creating a new note and changing the note type to CSS
+ + In the ribbon, press the “Owned Attributes” section and type #appCss.
+ + Type the desired CSS.    +
+
Generally it's a good idea to append !important for the styles + that are being changed, in order to prevent other
+

Seeing the changes

Adding a new app CSS note or modifying an existing one does not immediately apply changes. To see the changes, press Ctrl+Shift+R to refresh @@ -43,7 +42,7 @@

Since v0.99.2, it's no longer possible to use #appCss to customize the printing CSS, since the printing is now done in an isolated environment.

However, it's still possible to customize the CSS via ~printCss; - see Printing & Exporting as PDF for + see Printing & Exporting as PDF for more information.

Per-workspace styles

@@ -52,10 +51,9 @@ workspaces.

To do so:

    -
  1. In the note with #workspace, add an inheritable attribute #cssClass(inheritable) with +
  2. In the note with #workspace, add an inheritable attribute #cssClass(inheritable) with a value that uniquely identifies the workspace (say my-workspace).
  3. -
  4. Anywhere in the note structure, create a CSS note with #appCss.
  5. +
  6. Anywhere in the note structure, create a CSS note with #appCss.

Change the color of the icons in the Note Tree

.fancytree-node.my-workspace.fancytree-custom-icon {
     color: #ff0000;
@@ -71,8 +69,8 @@
   width="641" height="630">
 
 
    -
  1. Insert an image in any note and take the URL of the image.
  2. -
  3. Use the following CSS, adjusting the background-image and width and height to +
  4. Insert an image in any note and take the URL of the image.
  5. +
  6. Use the following CSS, adjusting the background-image and width and height to the desired values.
.note-split.my-workspace .scrolling-container:after {
     position: fixed;
@@ -92,5 +90,5 @@
 

Some parts of the application can't be styled directly via custom CSS because they are rendered in an isolated mode (shadow DOM), more specifically:

\ No newline at end of file diff --git a/docs/Developer Guide/!!!meta.json b/docs/Developer Guide/!!!meta.json index 0c39870f6..8bcd2ba82 100644 --- a/docs/Developer Guide/!!!meta.json +++ b/docs/Developer Guide/!!!meta.json @@ -600,14 +600,14 @@ { "type": "relation", "name": "internalLink", - "value": "VIcWnKGs0sMh", + "value": "UvXpeSqfYc6d", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "UvXpeSqfYc6d", + "value": "VIcWnKGs0sMh", "isInheritable": false, "position": 20 }, @@ -743,14 +743,14 @@ { "type": "relation", "name": "internalLink", - "value": "VIcWnKGs0sMh", + "value": "UvXpeSqfYc6d", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "UvXpeSqfYc6d", + "value": "VIcWnKGs0sMh", "isInheritable": false, "position": 30 }, @@ -1053,14 +1053,14 @@ { "type": "relation", "name": "internalLink", - "value": "mXFYlhuEr1mZ", + "value": "T2W7WCZrYZBU", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "T2W7WCZrYZBU", + "value": "mXFYlhuEr1mZ", "isInheritable": false, "position": 20 }, diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index ec29800a5..de0b27f30 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/Release Notes/!!!meta.json b/docs/Release Notes/!!!meta.json index 2a508e594..5ffcff5c5 100644 --- a/docs/Release Notes/!!!meta.json +++ b/docs/Release Notes/!!!meta.json @@ -61,6 +61,32 @@ "attachments": [], "dirFileName": "Release Notes", "children": [ + { + "isClone": false, + "noteId": "RMBaNYPsRpIr", + "notePath": [ + "hD3V4hiu2VW4", + "RMBaNYPsRpIr" + ], + "title": "v0.99.4", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "template", + "value": "wyurrlcDl416", + "isInheritable": false, + "position": 60 + } + ], + "format": "markdown", + "dataFileName": "v0.99.4.md", + "attachments": [] + }, { "isClone": false, "noteId": "yuroLztFfpu5", @@ -69,7 +95,7 @@ "yuroLztFfpu5" ], "title": "v0.99.3", - "notePosition": 10, + "notePosition": 20, "prefix": null, "isExpanded": false, "type": "text", @@ -95,7 +121,7 @@ "z207sehwMJ6C" ], "title": "v0.99.2", - "notePosition": 20, + "notePosition": 30, "prefix": null, "isExpanded": false, "type": "text", @@ -121,7 +147,7 @@ "WGQsXq2jNyTi" ], "title": "v0.99.1", - "notePosition": 30, + "notePosition": 40, "prefix": null, "isExpanded": false, "type": "text", @@ -147,7 +173,7 @@ "cyw2Yue9vXf3" ], "title": "v0.99.0", - "notePosition": 40, + "notePosition": 50, "prefix": null, "isExpanded": false, "type": "text", @@ -173,7 +199,7 @@ "QOJwjruOUr4k" ], "title": "v0.98.1", - "notePosition": 50, + "notePosition": 60, "prefix": null, "isExpanded": false, "type": "text", @@ -199,7 +225,7 @@ "PLUoryywi0BC" ], "title": "v0.98.0", - "notePosition": 60, + "notePosition": 70, "prefix": null, "isExpanded": false, "type": "text", @@ -225,7 +251,7 @@ "lvOuiWsLDv8F" ], "title": "v0.97.2", - "notePosition": 70, + "notePosition": 80, "prefix": null, "isExpanded": false, "type": "text", @@ -251,7 +277,7 @@ "OtFZ6Nd9vM3n" ], "title": "v0.97.1", - "notePosition": 80, + "notePosition": 90, "prefix": null, "isExpanded": false, "type": "text", @@ -277,7 +303,7 @@ "SJZ5PwfzHSQ1" ], "title": "v0.97.0", - "notePosition": 90, + "notePosition": 100, "prefix": null, "isExpanded": false, "type": "text", @@ -303,7 +329,7 @@ "mYXFde3LuNR7" ], "title": "v0.96.0", - "notePosition": 100, + "notePosition": 110, "prefix": null, "isExpanded": false, "type": "text", @@ -329,7 +355,7 @@ "jthwbL0FdaeU" ], "title": "v0.95.0", - "notePosition": 110, + "notePosition": 120, "prefix": null, "isExpanded": false, "type": "text", @@ -355,7 +381,7 @@ "7HGYsJbLuhnv" ], "title": "v0.94.1", - "notePosition": 120, + "notePosition": 130, "prefix": null, "isExpanded": false, "type": "text", @@ -381,7 +407,7 @@ "Neq53ujRGBqv" ], "title": "v0.94.0", - "notePosition": 130, + "notePosition": 140, "prefix": null, "isExpanded": false, "type": "text", @@ -407,7 +433,7 @@ "VN3xnce1vLkX" ], "title": "v0.93.0", - "notePosition": 140, + "notePosition": 150, "prefix": null, "isExpanded": false, "type": "text", @@ -425,7 +451,7 @@ "WRaBfQqPr6qo" ], "title": "v0.92.7", - "notePosition": 150, + "notePosition": 160, "prefix": null, "isExpanded": false, "type": "text", @@ -451,7 +477,7 @@ "a2rwfKNmUFU1" ], "title": "v0.92.6", - "notePosition": 160, + "notePosition": 170, "prefix": null, "isExpanded": false, "type": "text", @@ -469,7 +495,7 @@ "fEJ8qErr0BKL" ], "title": "v0.92.5-beta", - "notePosition": 170, + "notePosition": 180, "prefix": null, "isExpanded": false, "type": "text", @@ -487,7 +513,7 @@ "kkkZQQGSXjwy" ], "title": "v0.92.4", - "notePosition": 180, + "notePosition": 190, "prefix": null, "isExpanded": false, "type": "text", @@ -505,7 +531,7 @@ "vAroNixiezaH" ], "title": "v0.92.3-beta", - "notePosition": 190, + "notePosition": 200, "prefix": null, "isExpanded": false, "type": "text", @@ -523,7 +549,7 @@ "mHEq1wxAKNZd" ], "title": "v0.92.2-beta", - "notePosition": 200, + "notePosition": 210, "prefix": null, "isExpanded": false, "type": "text", @@ -541,7 +567,7 @@ "IykjoAmBpc61" ], "title": "v0.92.1-beta", - "notePosition": 210, + "notePosition": 220, "prefix": null, "isExpanded": false, "type": "text", @@ -559,7 +585,7 @@ "dq2AJ9vSBX4Y" ], "title": "v0.92.0-beta", - "notePosition": 220, + "notePosition": 230, "prefix": null, "isExpanded": false, "type": "text", @@ -577,7 +603,7 @@ "3a8aMe4jz4yM" ], "title": "v0.91.6", - "notePosition": 230, + "notePosition": 240, "prefix": null, "isExpanded": false, "type": "text", @@ -595,7 +621,7 @@ "8djQjkiDGESe" ], "title": "v0.91.5", - "notePosition": 240, + "notePosition": 250, "prefix": null, "isExpanded": false, "type": "text", @@ -613,7 +639,7 @@ "OylxVoVJqNmr" ], "title": "v0.91.4-beta", - "notePosition": 250, + "notePosition": 260, "prefix": null, "isExpanded": false, "type": "text", @@ -631,7 +657,7 @@ "tANGQDvnyhrj" ], "title": "v0.91.3-beta", - "notePosition": 260, + "notePosition": 270, "prefix": null, "isExpanded": false, "type": "text", @@ -649,7 +675,7 @@ "hMoBfwSoj1SC" ], "title": "v0.91.2-beta", - "notePosition": 270, + "notePosition": 280, "prefix": null, "isExpanded": false, "type": "text", @@ -667,7 +693,7 @@ "a2XMSKROCl9z" ], "title": "v0.91.1-beta", - "notePosition": 280, + "notePosition": 290, "prefix": null, "isExpanded": false, "type": "text", @@ -685,7 +711,7 @@ "yqXFvWbLkuMD" ], "title": "v0.90.12", - "notePosition": 290, + "notePosition": 300, "prefix": null, "isExpanded": false, "type": "text", @@ -703,7 +729,7 @@ "veS7pg311yJP" ], "title": "v0.90.11-beta", - "notePosition": 300, + "notePosition": 310, "prefix": null, "isExpanded": false, "type": "text", @@ -721,7 +747,7 @@ "sq5W9TQxRqMq" ], "title": "v0.90.10-beta", - "notePosition": 310, + "notePosition": 320, "prefix": null, "isExpanded": false, "type": "text", @@ -739,7 +765,7 @@ "yFEGVCUM9tPx" ], "title": "v0.90.9-beta", - "notePosition": 320, + "notePosition": 330, "prefix": null, "isExpanded": false, "type": "text", @@ -757,7 +783,7 @@ "o4wAGqOQuJtV" ], "title": "v0.90.8", - "notePosition": 330, + "notePosition": 340, "prefix": null, "isExpanded": false, "type": "text", @@ -790,7 +816,7 @@ "i4A5g9iOg9I0" ], "title": "v0.90.7-beta", - "notePosition": 340, + "notePosition": 350, "prefix": null, "isExpanded": false, "type": "text", @@ -808,7 +834,7 @@ "ThNf2GaKgXUs" ], "title": "v0.90.6-beta", - "notePosition": 350, + "notePosition": 360, "prefix": null, "isExpanded": false, "type": "text", @@ -826,7 +852,7 @@ "G4PAi554kQUr" ], "title": "v0.90.5-beta", - "notePosition": 360, + "notePosition": 370, "prefix": null, "isExpanded": false, "type": "text", @@ -853,7 +879,7 @@ "zATRobGRCmBn" ], "title": "v0.90.4", - "notePosition": 370, + "notePosition": 380, "prefix": null, "isExpanded": false, "type": "text", @@ -871,7 +897,7 @@ "sCDLf8IKn3Iz" ], "title": "v0.90.3", - "notePosition": 380, + "notePosition": 390, "prefix": null, "isExpanded": false, "type": "text", @@ -889,7 +915,7 @@ "VqqyBu4AuTjC" ], "title": "v0.90.2-beta", - "notePosition": 390, + "notePosition": 400, "prefix": null, "isExpanded": false, "type": "text", @@ -907,7 +933,7 @@ "RX3Nl7wInLsA" ], "title": "v0.90.1-beta", - "notePosition": 400, + "notePosition": 410, "prefix": null, "isExpanded": false, "type": "text", @@ -925,7 +951,7 @@ "GyueACukPWjk" ], "title": "v0.90.0-beta", - "notePosition": 410, + "notePosition": 420, "prefix": null, "isExpanded": false, "type": "text", @@ -943,7 +969,7 @@ "kzjHexDTTeVB" ], "title": "v0.48", - "notePosition": 420, + "notePosition": 430, "prefix": null, "isExpanded": false, "type": "text", @@ -1010,7 +1036,7 @@ "wyurrlcDl416" ], "title": "Release Template", - "notePosition": 430, + "notePosition": 440, "prefix": null, "isExpanded": false, "type": "text", diff --git a/docs/Release Notes/Release Notes/v0.99.4.md b/docs/Release Notes/Release Notes/v0.99.4.md new file mode 100644 index 000000000..8f11bbaf5 --- /dev/null +++ b/docs/Release Notes/Release Notes/v0.99.4.md @@ -0,0 +1,79 @@ +# v0.99.4 +> [!NOTE] +> If you are interested in an [official mobile application](https://oss.issuehunt.io/r/TriliumNext/Trilium/issues/7447)  ([#7447](https://github.com/TriliumNext/Trilium/issues/7447)) or [multi-user support](https://oss.issuehunt.io/r/TriliumNext/Trilium/issues/4956) ([#4956](https://github.com/TriliumNext/Trilium/issues/4956)), consider offering financial support via IssueHunt (see links). + +> [!IMPORTANT] +> If you enjoyed this release, consider showing a token of appreciation by: +> +> * Pressing the “Star” button on [GitHub](https://github.com/TriliumNext/Trilium) (top-right). +> * Considering a one-time or recurrent donation to the [lead developer](https://github.com/eliandoran) via [GitHub Sponsors](https://github.com/sponsors/eliandoran) or [PayPal](https://paypal.me/eliandoran). + +## 💡 Key highlights + +* The [triliumnotes.org](https://triliumnotes.org/) website now has multi-language support. Consider contributing translations over on [Weblate](https://hosted.weblate.org/projects/trilium/website/). +* [docs.triliumnotes.org](https://docs.triliumnotes.org) has switched from mkdocs to our own export to static website solution based on the Share functionality. +* Developer documentation is now available at [docs.triliumnotes.org/developer-guide/](https://docs.triliumnotes.org/developer-guide/). + +## 🐞 Bugfixes + +* [Excessive spacing in expanded empty children of a collection list view](https://github.com/TriliumNext/Trilium/issues/7319) +* [Share: headings with CJK characters had incorrect URLs.](https://github.com/TriliumNext/Trilium/issues/6430) +* Share: headings were displayed in ToC with their HTML tags escaped. +* Import/export was enabled in note context menu for help notes. +* [Image colors become muted on a canvas note when dark theme is enabled](https://github.com/TriliumNext/Trilium/issues/5708) +* [Edited notes list automatic updates to Hidden Notes](https://github.com/TriliumNext/Trilium/issues/5683) +* [Calendar tooltip is not correctly positioned](https://github.com/TriliumNext/Trilium/issues/5675) +* Some images not displayed properly when printing or exporting to PDF. +* [New tab in a freshly opened window does not show recent notes](https://github.com/TriliumNext/Trilium/issues/6881) by @SiriusXT +* [Overlapping note map button & fixed toolbar not shown in Zen Mode](https://github.com/TriliumNext/Trilium/pull/7543) by @SiriusXT +* ["Markdown import from clipboard" not working in "Quick edit"](https://github.com/TriliumNext/Trilium/issues/7520) by @SiriusXT +* [Note revisions not displaying the right date](https://github.com/TriliumNext/Trilium/pull/7544) by @contributor +* Bug fixes for the share theme: + * [Admonition icons not displayed](https://github.com/TriliumNext/Trilium/issues/6733) + * Light theme was not loaded in some circumstances. + * Flash of dark color when loading the light theme. + * Improved layout of the share theme to better fit and not zoom out on mobile devices such as tablets. +* [Reload not working on extra desktop windows](https://github.com/TriliumNext/Trilium/pull/7567) by @SiriusXT +* [Activate the nearest path when opening a cloned note](https://github.com/TriliumNext/Trilium/pull/7552) by @SiriusXT +* [Port-in-use dialog shown when opening a new window](https://github.com/TriliumNext/Trilium/pull/7595) by @SiriusXT +* [Enable Numpad Enter to trigger quick search](https://github.com/TriliumNext/Trilium/pull/7624) by @SiriusXT +* [Search with `=` no longer working](https://github.com/TriliumNext/Trilium/pull/7268) by @perfectra1n +* [Kanban template doesn't copy empty columns](https://github.com/TriliumNext/Trilium/issues/7612) +* [Picture references in HTML export pointing to non-existing files (affects duplicated, untouched notes)](https://github.com/TriliumNext/Trilium/issues/7471) & [Images not available for shared Duplicated note](https://github.com/TriliumNext/Trilium/issues/7642) +* [Cloned note in board view](https://github.com/TriliumNext/Trilium/issues/6786) +* [Ignore toggle tray command if tray is disabled](https://github.com/TriliumNext/Trilium/pull/7654) by @contributor +* Fixed formatting toolbar shown for read-only notes + +## ✨ Improvements + +* [Search results are now displayed on mobile, including the search definition.](https://github.com/TriliumNext/Trilium/issues/5655) +* [Add UI for #iconClass="bx bx-empty"](https://github.com/TriliumNext/Trilium/issues/7370) +* [Keyboard shortcut for Today Note button](https://github.com/TriliumNext/Trilium/issues/7472) by @contributor +* [Mermaid diagram notes: add link to docs](https://github.com/TriliumNext/Trilium/issues/5378) +* [Change the branch prefix of multiple notes simultaneously](https://github.com/TriliumNext/Trilium/issues/7571) by @Copilot +* [Custom CSS for printing is now possible again](https://github.com/TriliumNext/Trilium/issues/7608) +* [Send global shortcut to current window](https://github.com/TriliumNext/Trilium/pull/7645) +* The calendar collection now uses the “Date & Number Format”. +* [Many UI improvements](https://github.com/TriliumNext/Trilium/pull/7655) by @adoriandoran + * **Zen Mode Overhaul** – improved the appearance and layout of the Zen Mode view. The content of text notes is now vertically aligned, with a slightly larger font size to enhance focus. The content width now follows the “Max content width” option. The formatting toolbar has been moved to the bottom and remains full-width even in split-note view. You can now activate editing mode for read-only notes directly from Zen Mode. A launcher for Zen Mode has also been added to the Launchbar (hidden by default, to add it to the Launchbar: right-click the toolbar, choose Configure Launchbar, then right-click Zen Mode and select Move to visible launchers). + * **“Max content width” option and content alignment improvements** – the internal behavior of the “Max content width” option has been rewritten. Content now aligns to the left by default (or to the right in RTL mode). To center the content instead, enable “Keep content centered” under Options → Appearance. The note title and ribbon now always span the full width, and the scrollbar stays aligned with the edge. Changing the width value no longer requires restarting the front-end. + * **Read-only note alert bar** – to better highlight that a note is read-only and make editing more intuitive, a message bar now appears at the top of the note with a button to enable editing. The floating pencil button used previously for this purpose has been removed. An “Edit” command has also been added to the note menu. + * **Quick Edit dialog background tinting** – the background tint of the Quick Edit dialog now reflects the note’s color attribute. + * **Extra Mica effect** – on Windows 11, the desktop app now applies the Mica background effect to settings pages, the right pane, and empty tabs. + +## 📖 Documentation + +* Moved Collections one level up. +* The API documentation has been moved online-only. +* The technical documentation has been restructured and brought up to date. +* Many improvements to the user guide as well. + +## 🌍 Internationalization + +* Various translation updates. + +## 🛠️ Technical updates + +* [`trilium` batch files not running on Powershell 7](https://github.com/TriliumNext/Trilium/pull/7513) by @Ra2-IFV +* **Switched from Node.js 22 to Node.js 24 as it becomes the new LTS.** +* edited notes: remove comma for flexible styling by @contributor \ No newline at end of file diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 27f4866db..60e415c5d 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -143,77 +143,77 @@ { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "NRnIZmSMc5sj", + "value": "ZlN4nump6EbW", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "rC3pL2aptaRE", + "value": "pwc194wlRzcH", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "xWbu3jpNWapp", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "81SGnPGMk7Xc", + "value": "7DAiwaf8Z7Rz", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "veGu4faJErEM", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "ZlN4nump6EbW", + "value": "NRnIZmSMc5sj", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "pwc194wlRzcH", + "value": "rC3pL2aptaRE", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "7DAiwaf8Z7Rz", + "value": "xWbu3jpNWapp", "isInheritable": false, "position": 120 }, { "type": "relation", "name": "internalLink", - "value": "veGu4faJErEM", + "value": "AgjCISero73a", "isInheritable": false, "position": 130 }, { "type": "relation", "name": "internalLink", - "value": "AgjCISero73a", + "value": "81SGnPGMk7Xc", "isInheritable": false, "position": 140 }, @@ -351,14 +351,14 @@ { "type": "relation", "name": "internalLink", - "value": "x3i7MxGccDuM", + "value": "WOcw2SLH6tbX", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "WOcw2SLH6tbX", + "value": "x3i7MxGccDuM", "isInheritable": false, "position": 20 }, @@ -849,21 +849,21 @@ { "type": "relation", "name": "internalLink", - "value": "J1Bb6lVlwU5T", + "value": "cbkrhQjrkKrh", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "3tW6mORuTHnB", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "3tW6mORuTHnB", + "value": "J1Bb6lVlwU5T", "isInheritable": false, "position": 30 }, @@ -1129,21 +1129,21 @@ { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "7DAiwaf8Z7Rz", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "YKWqdJhzi2VY", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "7DAiwaf8Z7Rz", + "value": "YKWqdJhzi2VY", "isInheritable": false, "position": 30 }, @@ -1250,14 +1250,14 @@ { "type": "relation", "name": "internalLink", - "value": "poXkQfguuA0U", + "value": "cbkrhQjrkKrh", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "poXkQfguuA0U", "isInheritable": false, "position": 30 }, @@ -1423,21 +1423,21 @@ { "type": "relation", "name": "internalLink", - "value": "nRqcgfTb97uV", + "value": "WOcw2SLH6tbX", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "bwg0e8ewQMak", + "value": "nRqcgfTb97uV", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "WOcw2SLH6tbX", + "value": "bwg0e8ewQMak", "isInheritable": false, "position": 30 }, @@ -1618,21 +1618,21 @@ { "type": "relation", "name": "internalLink", - "value": "Gzjqa934BdH4", + "value": "tAassRL4RSQL", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "tAassRL4RSQL", + "value": "cbkrhQjrkKrh", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "Gzjqa934BdH4", "isInheritable": false, "position": 40 }, @@ -1687,21 +1687,21 @@ { "type": "relation", "name": "internalLink", - "value": "Gzjqa934BdH4", + "value": "bnyigUA2UK7s", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "bnyigUA2UK7s", + "value": "x59R8J8KV5Bp", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "x59R8J8KV5Bp", + "value": "Gzjqa934BdH4", "isInheritable": false, "position": 50 }, @@ -2095,126 +2095,126 @@ { "type": "relation", "name": "internalLink", - "value": "OR8WJ7Iz9K4U", + "value": "3seOhtN8uLIY", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "OR8WJ7Iz9K4U", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "bwg0e8ewQMak", + "value": "KSZ04uQ2D1St", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "IakOLONlIfGI", + "value": "KC1HB96bqqHX", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "MKmLg5x6xkor", + "value": "bwg0e8ewQMak", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "mHbBMPDPkVV5", + "value": "IakOLONlIfGI", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "eIg8jdvaoNNd", + "value": "MKmLg5x6xkor", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "ivYnonVFBxbQ", + "value": "r5JGHN99bVKn", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "TBwsyfadTA18", + "value": "mHbBMPDPkVV5", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "0vhv7lsOLy82", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 120 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "ivYnonVFBxbQ", "isInheritable": false, "position": 130 }, { "type": "relation", "name": "internalLink", - "value": "aGlEvb9hyDhS", + "value": "TBwsyfadTA18", "isInheritable": false, "position": 140 }, { "type": "relation", "name": "internalLink", - "value": "wArbEsdSae6g", + "value": "0vhv7lsOLy82", "isInheritable": false, "position": 150 }, { "type": "relation", "name": "internalLink", - "value": "3seOhtN8uLIY", + "value": "W8vYD3Q1zjCR", "isInheritable": false, "position": 160 }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 170 }, { "type": "relation", "name": "internalLink", - "value": "r5JGHN99bVKn", + "value": "aGlEvb9hyDhS", "isInheritable": false, "position": 180 }, { "type": "relation", "name": "internalLink", - "value": "W8vYD3Q1zjCR", + "value": "QEAPj01N5f7w", "isInheritable": false, "position": 190 }, { "type": "relation", "name": "internalLink", - "value": "QEAPj01N5f7w", + "value": "wArbEsdSae6g", "isInheritable": false, "position": 200 }, @@ -2391,147 +2391,147 @@ { "type": "relation", "name": "internalLink", - "value": "4FahAwuGTAwC", + "value": "nRhnJkTT8cPs", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "bwg0e8ewQMak", + "value": "KSZ04uQ2D1St", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "CoFPLs3dRlXc", + "value": "4FahAwuGTAwC", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "xYmIYSP6wE3F", + "value": "bwg0e8ewQMak", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "u3YFHC9tQlpm", + "value": "CoFPLs3dRlXc", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "xYmIYSP6wE3F", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "u3YFHC9tQlpm", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "WOcw2SLH6tbX", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "bwZpz2ajCEwO", + "value": "KC1HB96bqqHX", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "veGu4faJErEM", "isInheritable": false, "position": 120 }, { "type": "relation", "name": "internalLink", - "value": "IakOLONlIfGI", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 130 }, { "type": "relation", "name": "internalLink", - "value": "xWtq5NUHOwql", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 140 }, { "type": "relation", "name": "internalLink", - "value": "m1lbrzyKDaRB", + "value": "bwZpz2ajCEwO", "isInheritable": false, "position": 150 }, { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 160 }, { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "IakOLONlIfGI", "isInheritable": false, "position": 170 }, { "type": "relation", "name": "internalLink", - "value": "_optionsAppearance", + "value": "xWtq5NUHOwql", "isInheritable": false, "position": 180 }, { "type": "relation", "name": "internalLink", - "value": "nRhnJkTT8cPs", + "value": "m1lbrzyKDaRB", "isInheritable": false, "position": 190 }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 200 }, { "type": "relation", "name": "internalLink", - "value": "WOcw2SLH6tbX", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 210 }, { "type": "relation", "name": "internalLink", - "value": "veGu4faJErEM", + "value": "_optionsAppearance", "isInheritable": false, "position": 220 }, @@ -2582,21 +2582,21 @@ { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "x0JgW8UqGXvq", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "luNhaphA37EO", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "x0JgW8UqGXvq", + "value": "luNhaphA37EO", "isInheritable": false, "position": 30 }, @@ -2663,56 +2663,56 @@ { "type": "relation", "name": "internalLink", - "value": "x3i7MxGccDuM", + "value": "x0JgW8UqGXvq", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "p9kXRFAkwN4o", + "value": "x3i7MxGccDuM", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "OR8WJ7Iz9K4U", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "p9kXRFAkwN4o", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "x0JgW8UqGXvq", + "value": "OR8WJ7Iz9K4U", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "SynTBQiBsdYJ", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "SynTBQiBsdYJ", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 80 }, @@ -2763,28 +2763,28 @@ { "type": "relation", "name": "internalLink", - "value": "vZWERwf8U3nx", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "4FahAwuGTAwC", + "value": "vZWERwf8U3nx", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "0vhv7lsOLy82", + "value": "4FahAwuGTAwC", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "0vhv7lsOLy82", "isInheritable": false, "position": 40 }, @@ -2929,21 +2929,21 @@ { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "3seOhtN8uLIY", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "OR8WJ7Iz9K4U", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "3seOhtN8uLIY", + "value": "OR8WJ7Iz9K4U", "isInheritable": false, "position": 30 }, @@ -3026,35 +3026,35 @@ { "type": "relation", "name": "internalLink", - "value": "CoFPLs3dRlXc", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "s1aBHPd79XYj", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "s1aBHPd79XYj", + "value": "grjYqerjn243", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "grjYqerjn243", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "CoFPLs3dRlXc", "isInheritable": false, "position": 50 }, @@ -3335,56 +3335,56 @@ { "type": "relation", "name": "internalLink", - "value": "ZjLYv08Rp3qC", + "value": "hrZ1D00cLbal", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "Cq5X6iKQop6R", + "value": "ZjLYv08Rp3qC", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "hrZ1D00cLbal", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "GTwFsgaA0lCt", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "GTwFsgaA0lCt", + "value": "81SGnPGMk7Xc", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "81SGnPGMk7Xc", + "value": "xWbu3jpNWapp", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "xWbu3jpNWapp", + "value": "2FvYrpmOXm29", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "2FvYrpmOXm29", + "value": "Cq5X6iKQop6R", "isInheritable": false, "position": 80 }, @@ -3601,14 +3601,14 @@ { "type": "relation", "name": "internalLink", - "value": "R7abl2fc6Mxi", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "R7abl2fc6Mxi", "isInheritable": false, "position": 30 }, @@ -3724,14 +3724,14 @@ { "type": "relation", "name": "internalLink", - "value": "IakOLONlIfGI", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "IakOLONlIfGI", "isInheritable": false, "position": 20 }, @@ -3949,14 +3949,14 @@ { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 20 }, @@ -3998,73 +3998,87 @@ { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "wy8So3yZZlH9", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "CohkqWQC1iBv", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "wy8So3yZZlH9", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "CohkqWQC1iBv", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "4TIF1oA4VQRO", + "value": "KSZ04uQ2D1St", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "GTwFsgaA0lCt", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "GTwFsgaA0lCt", + "value": "zP3PMqaG71Ct", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "zP3PMqaG71Ct", + "value": "AlhDUqhENtH7", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "AlhDUqhENtH7", + "value": "bwZpz2ajCEwO", "isInheritable": false, "position": 100 }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0ESUbbAxVnoK", + "isInheritable": false, + "position": 120 + }, { "type": "label", "name": "iconClass", @@ -4078,20 +4092,6 @@ "value": "printing-and-pdf-export", "isInheritable": false, "position": 110 - }, - { - "type": "relation", - "name": "internalLink", - "value": "bwZpz2ajCEwO", - "isInheritable": false, - "position": 120 - }, - { - "type": "relation", - "name": "internalLink", - "value": "KC1HB96bqqHX", - "isInheritable": false, - "position": 130 } ], "format": "markdown", @@ -4134,49 +4134,49 @@ { "type": "relation", "name": "internalLink", - "value": "_optionsTextNotes", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "_optionsCodeNotes", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "_optionsTextNotes", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "_optionsCodeNotes", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "4TIF1oA4VQRO", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 70 }, @@ -4449,14 +4449,14 @@ { "type": "relation", "name": "internalLink", - "value": "F1r9QtzQLZqm", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "eIg8jdvaoNNd", + "value": "F1r9QtzQLZqm", "isInheritable": false, "position": 20 }, @@ -4528,14 +4528,14 @@ { "type": "relation", "name": "internalLink", - "value": "A9Oc6YKKc65v", + "value": "xYmIYSP6wE3F", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "xYmIYSP6wE3F", + "value": "A9Oc6YKKc65v", "isInheritable": false, "position": 20 }, @@ -4609,77 +4609,77 @@ { "type": "relation", "name": "internalLink", - "value": "A9Oc6YKKc65v", + "value": "xYmIYSP6wE3F", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "OR8WJ7Iz9K4U", + "value": "YtSN43OrfzaA", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "A9Oc6YKKc65v", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "ivYnonVFBxbQ", + "value": "OR8WJ7Iz9K4U", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "xYmIYSP6wE3F", + "value": "9sRHySam5fXb", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "YtSN43OrfzaA", + "value": "m523cpzocqaD", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "9sRHySam5fXb", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "m523cpzocqaD", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "MKmLg5x6xkor", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "MKmLg5x6xkor", + "value": "qzNzp9LYQyPT", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "qzNzp9LYQyPT", + "value": "ivYnonVFBxbQ", "isInheritable": false, "position": 120 }, @@ -4980,21 +4980,21 @@ { "type": "relation", "name": "internalLink", - "value": "MI26XDLSAlCD", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "MI26XDLSAlCD", "isInheritable": false, "position": 30 }, @@ -5053,14 +5053,14 @@ { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "MMiBEQljMQh2", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "MMiBEQljMQh2", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 20 }, @@ -5646,63 +5646,63 @@ { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "wy8So3yZZlH9", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "IakOLONlIfGI", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "BCkXAVs63Ttv", + "value": "tAassRL4RSQL", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "eIg8jdvaoNNd", + "value": "cbkrhQjrkKrh", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "wy8So3yZZlH9", + "value": "IakOLONlIfGI", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "tAassRL4RSQL", + "value": "BCkXAVs63Ttv", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 90 }, @@ -6134,14 +6134,14 @@ { "type": "relation", "name": "internalLink", - "value": "rJ9grSgoExl9", + "value": "nRhnJkTT8cPs", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "nRhnJkTT8cPs", + "value": "rJ9grSgoExl9", "isInheritable": false, "position": 20 }, @@ -6484,21 +6484,21 @@ { "type": "relation", "name": "internalLink", - "value": "CoFPLs3dRlXc", + "value": "nRhnJkTT8cPs", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "4TIF1oA4VQRO", + "value": "CoFPLs3dRlXc", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "nRhnJkTT8cPs", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 40 }, @@ -6722,21 +6722,21 @@ { "type": "relation", "name": "internalLink", - "value": "Wy267RK4M69c", + "value": "YfYAtQBcfo5V", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "Oau6X9rCuegd", + "value": "Wy267RK4M69c", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "YfYAtQBcfo5V", + "value": "Oau6X9rCuegd", "isInheritable": false, "position": 40 }, @@ -6819,35 +6819,35 @@ { "type": "relation", "name": "internalLink", - "value": "RnaPdbciOfeq", + "value": "BFvAtE74rbP6", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "XpOYSgsLkTJy", + "value": "RnaPdbciOfeq", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "_optionsTextNotes", + "value": "XpOYSgsLkTJy", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "_optionsTextNotes", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "BFvAtE74rbP6", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 50 }, @@ -7220,28 +7220,28 @@ { "type": "relation", "name": "internalLink", - "value": "s1aBHPd79XYj", + "value": "YfYAtQBcfo5V", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "nBAXQFj20hS1", + "value": "s1aBHPd79XYj", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "NRnIZmSMc5sj", + "value": "nBAXQFj20hS1", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "YfYAtQBcfo5V", + "value": "NRnIZmSMc5sj", "isInheritable": false, "position": 60 }, @@ -7372,28 +7372,28 @@ { "type": "relation", "name": "internalLink", - "value": "UYuUB1ZekNQU", + "value": "QEAPj01N5f7w", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "MI26XDLSAlCD", + "value": "UYuUB1ZekNQU", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "QEAPj01N5f7w", + "value": "YfYAtQBcfo5V", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "YfYAtQBcfo5V", + "value": "MI26XDLSAlCD", "isInheritable": false, "position": 40 }, @@ -7759,49 +7759,49 @@ { "type": "relation", "name": "internalLink", - "value": "Oau6X9rCuegd", + "value": "dEHYtoWWi8ct", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "Gr6xFaF6ioJ5", + "value": "Oau6X9rCuegd", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "S6Xx8QIWTV66", + "value": "Gr6xFaF6ioJ5", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "NwBbFdNZ9h7O", + "value": "S6Xx8QIWTV66", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "QxEyIjRBizuC", + "value": "NwBbFdNZ9h7O", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "CohkqWQC1iBv", + "value": "QxEyIjRBizuC", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "dEHYtoWWi8ct", + "value": "CohkqWQC1iBv", "isInheritable": false, "position": 80 }, @@ -8209,21 +8209,21 @@ { "type": "relation", "name": "internalLink", - "value": "9sRHySam5fXb", + "value": "s8alTXmpFR61", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "s8alTXmpFR61", + "value": "wy8So3yZZlH9", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "wy8So3yZZlH9", + "value": "9sRHySam5fXb", "isInheritable": false, "position": 90 }, @@ -8527,35 +8527,35 @@ { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "4TIF1oA4VQRO", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "QxEyIjRBizuC", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "QxEyIjRBizuC", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 50 }, @@ -8836,42 +8836,42 @@ { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "HcABDtFCkbFN", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "HcABDtFCkbFN", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "R7abl2fc6Mxi", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "6tZeKvSHEUiB", + "value": "R7abl2fc6Mxi", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "6tZeKvSHEUiB", "isInheritable": false, "position": 60 }, @@ -9231,70 +9231,70 @@ { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "ODY7qQn5m2FT", + "value": "0Ofbk1aSuVRu", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "mHbBMPDPkVV5", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "ODY7qQn5m2FT", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "mHbBMPDPkVV5", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "0vhv7lsOLy82", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "8YBEPzcpUgxw", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "0vhv7lsOLy82", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "8YBEPzcpUgxw", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "0Ofbk1aSuVRu", + "value": "0ESUbbAxVnoK", "isInheritable": false, "position": 110 }, @@ -9754,28 +9754,28 @@ { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "eIg8jdvaoNNd", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "m523cpzocqaD", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "m523cpzocqaD", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 70 }, @@ -9875,56 +9875,56 @@ { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "KSZ04uQ2D1St", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "XpOYSgsLkTJy", + "value": "0ESUbbAxVnoK", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "XpOYSgsLkTJy", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "IakOLONlIfGI", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "lgKX7r3aL30x", + "value": "IakOLONlIfGI", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "ZjLYv08Rp3qC", + "value": "lgKX7r3aL30x", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "ZjLYv08Rp3qC", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 80 }, @@ -10133,28 +10133,28 @@ { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "AlhDUqhENtH7", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "AlhDUqhENtH7", + "value": "0ESUbbAxVnoK", "isInheritable": false, "position": 50 }, @@ -10233,28 +10233,28 @@ { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "W8vYD3Q1zjCR", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "W8vYD3Q1zjCR", + "value": "0ESUbbAxVnoK", "isInheritable": false, "position": 40 }, @@ -10989,24 +10989,31 @@ { "type": "relation", "name": "internalLink", - "value": "9sRHySam5fXb", + "value": "NRnIZmSMc5sj", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "9sRHySam5fXb", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "zP3PMqaG71Ct", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 30 }, + { + "type": "relation", + "name": "internalLink", + "value": "zP3PMqaG71Ct", + "isInheritable": false, + "position": 40 + }, { "type": "label", "name": "shareAlias", @@ -11020,13 +11027,6 @@ "value": "bx bxs-file-css", "isInheritable": false, "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "NRnIZmSMc5sj", - "isInheritable": false, - "position": 60 } ], "format": "markdown", @@ -11206,133 +11206,133 @@ { "type": "relation", "name": "internalLink", - "value": "R7abl2fc6Mxi", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "bwZpz2ajCEwO", + "value": "R7abl2fc6Mxi", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "_help_YKWqdJhzi2VY", + "value": "bwZpz2ajCEwO", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "vZWERwf8U3nx", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "vZWERwf8U3nx", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "GPERMystNGTB", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "GPERMystNGTB", + "value": "CoFPLs3dRlXc", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "CoFPLs3dRlXc", + "value": "AlhDUqhENtH7", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "AlhDUqhENtH7", + "value": "pKK96zzmvBGf", "isInheritable": false, "position": 120 }, { "type": "relation", "name": "internalLink", - "value": "pKK96zzmvBGf", + "value": "WFGzWeUK6arS", "isInheritable": false, "position": 130 }, { "type": "relation", "name": "internalLink", - "value": "WFGzWeUK6arS", + "value": "0ESUbbAxVnoK", "isInheritable": false, "position": 140 }, { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "J5Ex1ZrMbyJ6", "isInheritable": false, "position": 150 }, { "type": "relation", "name": "internalLink", - "value": "J5Ex1ZrMbyJ6", + "value": "d3fAXQ2diepH", "isInheritable": false, "position": 160 }, { "type": "relation", "name": "internalLink", - "value": "d3fAXQ2diepH", + "value": "MgibgPcfeuGz", "isInheritable": false, "position": 170 }, { "type": "relation", "name": "internalLink", - "value": "MgibgPcfeuGz", + "value": "m523cpzocqaD", "isInheritable": false, "position": 180 }, { "type": "relation", "name": "internalLink", - "value": "m523cpzocqaD", + "value": "9sRHySam5fXb", "isInheritable": false, "position": 190 }, { "type": "relation", "name": "internalLink", - "value": "9sRHySam5fXb", + "value": "_help_YKWqdJhzi2VY", "isInheritable": false, "position": 200 }, @@ -11465,35 +11465,35 @@ { "type": "relation", "name": "internalLink", - "value": "bwZpz2ajCEwO", + "value": "HcABDtFCkbFN", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "HcABDtFCkbFN", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "KC1HB96bqqHX", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "bwZpz2ajCEwO", "isInheritable": false, "position": 70 }, @@ -11686,42 +11686,42 @@ { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "9sRHySam5fXb", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "xYjQUYhpbUEW", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "iRwzGnHPzonm", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "47ZrP6FNuoG8", + "value": "xYjQUYhpbUEW", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "9sRHySam5fXb", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "iRwzGnHPzonm", + "value": "47ZrP6FNuoG8", "isInheritable": false, "position": 80 }, @@ -12388,35 +12388,35 @@ { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "GLks18SNjxmC", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "GLks18SNjxmC", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "KC1HB96bqqHX", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 50 }, @@ -12488,28 +12488,28 @@ { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 40 }, @@ -12603,21 +12603,21 @@ { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 30 }, @@ -12963,14 +12963,14 @@ { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "Vc8PjrjAGuOp", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "Vc8PjrjAGuOp", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 20 }, @@ -13047,28 +13047,28 @@ { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "iRwzGnHPzonm", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "R7abl2fc6Mxi", + "value": "l0tKav7yLHGF", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "xYjQUYhpbUEW", + "value": "R7abl2fc6Mxi", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "iRwzGnHPzonm", + "value": "xYjQUYhpbUEW", "isInheritable": false, "position": 40 }, @@ -13239,28 +13239,28 @@ { "type": "relation", "name": "internalLink", - "value": "HI6GBBIduIgv", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "Cq5X6iKQop6R", + "value": "yTjUdsOi4CIE", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "HI6GBBIduIgv", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "yTjUdsOi4CIE", + "value": "Cq5X6iKQop6R", "isInheritable": false, "position": 40 }, @@ -13816,182 +13816,182 @@ { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "_globalNoteMap", + "value": "QEAPj01N5f7w", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "_sqlConsole", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "YKWqdJhzi2VY", + "value": "m1lbrzyKDaRB", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "_search", + "value": "x3i7MxGccDuM", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "_bulkAction", + "value": "_globalNoteMap", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "ivYnonVFBxbQ", + "value": "bdUJEHsAPYQR", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "_backendLog", + "value": "xYmIYSP6wE3F", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "_userHidden", + "value": "u3YFHC9tQlpm", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "_lbTplRoot", + "value": "_sqlConsole", "isInheritable": false, "position": 120 }, { "type": "relation", "name": "internalLink", - "value": "_share", + "value": "YKWqdJhzi2VY", "isInheritable": false, "position": 130 }, { "type": "relation", "name": "internalLink", - "value": "_lbRoot", + "value": "_search", "isInheritable": false, "position": 140 }, { "type": "relation", "name": "internalLink", - "value": "_options", + "value": "_bulkAction", "isInheritable": false, "position": 150 }, { "type": "relation", "name": "internalLink", - "value": "_lbMobileRoot", + "value": "ivYnonVFBxbQ", "isInheritable": false, "position": 160 }, { "type": "relation", "name": "internalLink", - "value": "_help", + "value": "_backendLog", "isInheritable": false, "position": 170 }, { "type": "relation", "name": "internalLink", - "value": "eIg8jdvaoNNd", + "value": "qzNzp9LYQyPT", "isInheritable": false, "position": 180 }, { "type": "relation", "name": "internalLink", - "value": "QEAPj01N5f7w", + "value": "_userHidden", "isInheritable": false, "position": 190 }, { "type": "relation", "name": "internalLink", - "value": "m1lbrzyKDaRB", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 200 }, { "type": "relation", "name": "internalLink", - "value": "x3i7MxGccDuM", + "value": "_lbTplRoot", "isInheritable": false, "position": 210 }, { "type": "relation", "name": "internalLink", - "value": "bdUJEHsAPYQR", + "value": "_share", "isInheritable": false, "position": 220 }, { "type": "relation", "name": "internalLink", - "value": "xYmIYSP6wE3F", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 230 }, { "type": "relation", "name": "internalLink", - "value": "u3YFHC9tQlpm", + "value": "_lbRoot", "isInheritable": false, "position": 240 }, { "type": "relation", "name": "internalLink", - "value": "qzNzp9LYQyPT", + "value": "_options", "isInheritable": false, "position": 250 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 260 }, { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "_lbMobileRoot", "isInheritable": false, "position": 270 }, { "type": "relation", "name": "internalLink", - "value": "4TIF1oA4VQRO", + "value": "_help", "isInheritable": false, "position": 280 }, @@ -14190,42 +14190,42 @@ { "type": "relation", "name": "internalLink", - "value": "Gzjqa934BdH4", + "value": "wy8So3yZZlH9", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "wy8So3yZZlH9", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "eIg8jdvaoNNd", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "eIg8jdvaoNNd", + "value": "GTwFsgaA0lCt", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "GTwFsgaA0lCt", + "value": "KSZ04uQ2D1St", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "Gzjqa934BdH4", "isInheritable": false, "position": 60 }, @@ -15095,21 +15095,21 @@ { "type": "relation", "name": "internalLink", - "value": "yIhgI5H7A2Sm", + "value": "s8alTXmpFR61", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "m1lbrzyKDaRB", + "value": "yIhgI5H7A2Sm", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "s8alTXmpFR61", + "value": "m1lbrzyKDaRB", "isInheritable": false, "position": 70 }, @@ -15639,49 +15639,49 @@ { "type": "relation", "name": "internalLink", - "value": "R7abl2fc6Mxi", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "bwg0e8ewQMak", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "R7abl2fc6Mxi", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "bwg0e8ewQMak", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "iRwzGnHPzonm", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "iRwzGnHPzonm", + "value": "cbkrhQjrkKrh", "isInheritable": false, "position": 90 }, diff --git a/package.json b/package.json index 10407a7f9..04da94cce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/source", - "version": "0.99.3", + "version": "0.99.4", "description": "Build your personal knowledge base with Trilium Notes", "directories": { "doc": "docs" diff --git a/packages/commons/package.json b/packages/commons/package.json index ecb5a08c3..6face2c35 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/commons", - "version": "0.99.3", + "version": "0.99.4", "description": "Shared library between the clients (e.g. browser, Electron) and the server, mostly for type definitions and utility methods.", "private": true, "type": "module",