From d483b6e8401cea9659b2388f5746b9a0e22b2a15 Mon Sep 17 00:00:00 2001 From: Kevin Leutzinger <6435727+kleutzinger@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:50:10 -0400 Subject: [PATCH 001/201] add shareHTML relation --- .../server/src/services/builtin_attributes.ts | 2 ++ packages/share-theme/src/templates/page.ejs | 34 +++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/apps/server/src/services/builtin_attributes.ts b/apps/server/src/services/builtin_attributes.ts index 2d35992aaa..ca48f3df1b 100644 --- a/apps/server/src/services/builtin_attributes.ts +++ b/apps/server/src/services/builtin_attributes.ts @@ -66,6 +66,7 @@ export default [ { type: "label", name: "shareDisallowRobotIndexing" }, { type: "label", name: "shareCredentials" }, { type: "label", name: "shareIndex" }, + { type: "label", name: "shareHTMLLocation" }, { type: "label", name: "displayRelations" }, { type: "label", name: "hideRelations" }, { type: "label", name: "titleTemplate", isDangerous: true }, @@ -105,6 +106,7 @@ export default [ { type: "relation", name: "renderNote", isDangerous: true }, { type: "relation", name: "shareCss" }, { type: "relation", name: "shareJs" }, + { type: "relation", name: "shareHTML" }, { type: "relation", name: "shareTemplate" }, { type: "relation", name: "shareFavicon" } ]; diff --git a/packages/share-theme/src/templates/page.ejs b/packages/share-theme/src/templates/page.ejs index e4ac1f6030..eaa7dbe3bc 100644 --- a/packages/share-theme/src/templates/page.ejs +++ b/packages/share-theme/src/templates/page.ejs @@ -1,7 +1,31 @@ - <% const hasTree = subRoot.note.hasVisibleChildren(); %> + <% + const hasTree = subRoot.note.hasVisibleChildren(); + + // Collect HTML snippets by location + const htmlSnippetsByLocation = {}; + for (const htmlRelation of note.getRelations("shareHTML")) { + const htmlNote = htmlRelation.targetNote; + if (htmlNote) { + let location = htmlNote.getLabelValue("shareHTMLLocation") || "content:end"; + // Default to :end if no position specified + if (!location.includes(":")) { + location = location + ":end"; + } + if (!htmlSnippetsByLocation[location]) { + htmlSnippetsByLocation[location] = []; + } + htmlSnippetsByLocation[location].push(htmlNote.getContent()); + } + } + const renderSnippets = (location) => { + const snippets = htmlSnippetsByLocation[location]; + return snippets ? snippets.join("\n") : ""; + }; + %> + <%- renderSnippets("head:start") %> @@ -53,6 +77,7 @@ + <%- renderSnippets("head:end") %> <% const customLogoId = subRoot.note.getRelation("shareLogo")?.value; @@ -72,6 +97,7 @@ content = content.replaceAll(headingRe, (...match) => { }); %> +<%- renderSnippets("body:start") %>
Logo @@ -121,8 +147,8 @@ content = content.replaceAll(headingRe, (...match) => {
-
ck-content<% } %><% if (isEmpty) { %> no-content<% } %>"> + <%- renderSnippets("content:start") %>

<%= note.title %>

<% if (isEmpty && (!note.hasVisibleChildren() && note.type !== "book")) { %>

This note has no content.

@@ -132,6 +158,7 @@ content = content.replaceAll(headingRe, (...match) => { %> <%- content %> <% } %> + <%- renderSnippets("content:end") %>
<% if (note.hasVisibleChildren() || note.type === "book") { %> @@ -164,7 +191,7 @@ content = content.replaceAll(headingRe, (...match) => {
<% } %> - <% if (hasTree) { %> + <% if (hasTree) { %> <%- include("prev_next", { note: note, subRoot: subRoot }) %> <% } %> @@ -205,5 +232,6 @@ content = content.replaceAll(headingRe, (...match) => { <% } %>
+<%- renderSnippets("body:end") %> From 0a25d4db0d5be2a50ef510549c6f8479f250fb9f Mon Sep 17 00:00:00 2001 From: Kevin Leutzinger <6435727+kleutzinger@users.noreply.github.com> Date: Wed, 1 Oct 2025 03:30:16 -0400 Subject: [PATCH 002/201] shareHTML to shareHtml --- apps/server/src/services/builtin_attributes.ts | 4 ++-- packages/share-theme/src/templates/page.ejs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/server/src/services/builtin_attributes.ts b/apps/server/src/services/builtin_attributes.ts index ca48f3df1b..293bc6b5d9 100644 --- a/apps/server/src/services/builtin_attributes.ts +++ b/apps/server/src/services/builtin_attributes.ts @@ -66,7 +66,7 @@ export default [ { type: "label", name: "shareDisallowRobotIndexing" }, { type: "label", name: "shareCredentials" }, { type: "label", name: "shareIndex" }, - { type: "label", name: "shareHTMLLocation" }, + { type: "label", name: "shareHtmlLocation" }, { type: "label", name: "displayRelations" }, { type: "label", name: "hideRelations" }, { type: "label", name: "titleTemplate", isDangerous: true }, @@ -106,7 +106,7 @@ export default [ { type: "relation", name: "renderNote", isDangerous: true }, { type: "relation", name: "shareCss" }, { type: "relation", name: "shareJs" }, - { type: "relation", name: "shareHTML" }, + { type: "relation", name: "shareHtml" }, { type: "relation", name: "shareTemplate" }, { type: "relation", name: "shareFavicon" } ]; diff --git a/packages/share-theme/src/templates/page.ejs b/packages/share-theme/src/templates/page.ejs index eaa7dbe3bc..cc96cc4cae 100644 --- a/packages/share-theme/src/templates/page.ejs +++ b/packages/share-theme/src/templates/page.ejs @@ -6,10 +6,10 @@ // Collect HTML snippets by location const htmlSnippetsByLocation = {}; - for (const htmlRelation of note.getRelations("shareHTML")) { + for (const htmlRelation of note.getRelations("shareHtml")) { const htmlNote = htmlRelation.targetNote; if (htmlNote) { - let location = htmlNote.getLabelValue("shareHTMLLocation") || "content:end"; + let location = htmlNote.getLabelValue("shareHtmlLocation") || "content:end"; // Default to :end if no position specified if (!location.includes(":")) { location = location + ":end"; From 888d0d10846d55c44c6b3f438f774303db53cfd1 Mon Sep 17 00:00:00 2001 From: Kevin Leutzinger <6435727+kleutzinger@users.noreply.github.com> Date: Wed, 1 Oct 2025 03:46:08 -0400 Subject: [PATCH 003/201] add docs about shareHtml and shareHtmlLocation --- .../Advanced Usage/Attributes/Relations.md | 1 + .../User Guide/Advanced Usage/Sharing.md | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md index 2916640ecb..454e7d007f 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md @@ -50,5 +50,6 @@ These relations are supported and used internally by Trilium. | `widget_relation` | target of this relation will be executed and rendered as a widget in the sidebar | | `shareCss` | CSS note which will be injected into the share page. CSS note must be in the shared sub-tree as well. Consider using `share_hidden_from_tree` and `share_omit_default_css` as well. | | `shareJs` | JavaScript note which will be injected into the share page. JS note must be in the shared sub-tree as well. Consider using `share_hidden_from_tree`. | +| `shareHtml` | HTML note which will be injected into the share page at locations specified by the `shareHtmlLocation` label. HTML note must be in the shared sub-tree as well. Consider using `share_hidden_from_tree`. | | `shareTemplate` | Embedded JavaScript note that will be used as the template for displaying the shared note. Falls back to the default template. Consider using `share_hidden_from_tree`. | | `shareFavicon` | Favicon note to be set in the shared page. Typically you want to set it to share root and make it inheritable. Favicon note must be in the shared sub-tree as well. Consider using `share_hidden_from_tree`. | \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Sharing.md b/docs/User Guide/User Guide/Advanced Usage/Sharing.md index 37ce5fee84..793389ae26 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Sharing.md +++ b/docs/User Guide/User Guide/Advanced Usage/Sharing.md @@ -67,6 +67,23 @@ The default design should be a good starting point, but you can customize it usi You can inject custom JavaScript into the shared note using the `~shareJs` relation. This allows you to access note attributes or traverse the note tree using the `fetchNote()` API, which retrieves note data based on its ID. +### Adding custom HTML + +You can inject custom HTML snippets into specific locations of the shared page using the `~shareHtml` relation. The HTML note should contain the raw HTML content you want to inject, and you can control where it appears using the `#shareHtmlLocation` label. + +The `#shareHtmlLocation` label accepts values in the format `location:position`: +- **Locations**: `head`, `body`, `content` +- **Positions**: `start`, `end` + +For example: +- `#shareHtmlLocation=head:start` - Injects HTML at the beginning of the `` section +- `#shareHtmlLocation=head:end` - Injects HTML at the end of the `` section (default) +- `#shareHtmlLocation=body:start` - Injects HTML at the beginning of the `` section +- `#shareHtmlLocation=content:start` - Injects HTML at the beginning of the content area +- `#shareHtmlLocation=content:end` - Injects HTML at the end of the content area + +If no location is specified, the HTML will be injected at `content:end` by default. + Example: ```javascript @@ -106,7 +123,7 @@ To do so, create a shared text note and apply the `shareIndex` label. When viewe ## Attribute reference -
AttributeDescription
shareHiddenFromTreethis note is hidden from left navigation tree, but still accessible with its URL
shareExternalLinknote will act as a link to an external website in the share tree
shareAliasdefine an alias using which the note will be available under https://your_trilium_host/share/[your_alias]
shareOmitDefaultCssdefault share page CSS will be omitted. Use when you make extensive styling changes.
shareRootmarks note which is served on /share root.
shareDescriptiondefine text to be added to the HTML meta tag for description
shareRawNote will be served in its raw format, without HTML wrapper. See also Serving directly the content of a note for an alternative method without setting an attribute.
shareDisallowRobotIndexing

Indicates to web crawlers that the page should not be indexed of this note by:

  • Setting the X-Robots-Tag: noindex HTTP header.
  • Setting the noindex, follow meta tag.
shareCredentialsrequire credentials to access this shared note. Value is expected to be in format username:password. Don't forget to make this inheritable to apply to child-notes/images.
shareIndexNote with this label will list all roots of shared notes.
+
AttributeDescription
shareHiddenFromTreethis note is hidden from left navigation tree, but still accessible with its URL
shareExternalLinknote will act as a link to an external website in the share tree
shareAliasdefine an alias using which the note will be available under https://your_trilium_host/share/[your_alias]
shareOmitDefaultCssdefault share page CSS will be omitted. Use when you make extensive styling changes.
shareRootmarks note which is served on /share root.
shareDescriptiondefine text to be added to the HTML meta tag for description
shareRawNote will be served in its raw format, without HTML wrapper. See also Serving directly the content of a note for an alternative method without setting an attribute.
shareDisallowRobotIndexing

Indicates to web crawlers that the page should not be indexed of this note by:

  • Setting the X-Robots-Tag: noindex HTTP header.
  • Setting the noindex, follow meta tag.
shareCredentialsrequire credentials to access this shared note. Value is expected to be in format username:password. Don't forget to make this inheritable to apply to child-notes/images.
shareIndexNote with this label will list all roots of shared notes.
shareHtmlLocationdefines where custom HTML injected via ~shareHtml relation should be placed. Format: location:position where location is head, body, or content and position is start or end. Defaults to content:end.
## Credits From b8851565ebcba216d5dc025a513edda9242e73ca Mon Sep 17 00:00:00 2001 From: Kevin Leutzinger <6435727+kleutzinger@users.noreply.github.com> Date: Wed, 1 Oct 2025 03:53:29 -0400 Subject: [PATCH 004/201] docs: clarify shareHtmlLocation goes on snippet note --- docs/User Guide/User Guide/Advanced Usage/Sharing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/User Guide/User Guide/Advanced Usage/Sharing.md b/docs/User Guide/User Guide/Advanced Usage/Sharing.md index 793389ae26..caee9238e1 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Sharing.md +++ b/docs/User Guide/User Guide/Advanced Usage/Sharing.md @@ -69,7 +69,7 @@ You can inject custom JavaScript into the shared note using the `~shareJs` relat ### Adding custom HTML -You can inject custom HTML snippets into specific locations of the shared page using the `~shareHtml` relation. The HTML note should contain the raw HTML content you want to inject, and you can control where it appears using the `#shareHtmlLocation` label. +You can inject custom HTML snippets into specific locations of the shared page using the `~shareHtml` relation. The HTML note should contain the raw HTML content you want to inject, and you can control where it appears by adding the `#shareHtmlLocation` label to the HTML snippet note itself. The `#shareHtmlLocation` label accepts values in the format `location:position`: - **Locations**: `head`, `body`, `content` @@ -123,7 +123,7 @@ To do so, create a shared text note and apply the `shareIndex` label. When viewe ## Attribute reference -
AttributeDescription
shareHiddenFromTreethis note is hidden from left navigation tree, but still accessible with its URL
shareExternalLinknote will act as a link to an external website in the share tree
shareAliasdefine an alias using which the note will be available under https://your_trilium_host/share/[your_alias]
shareOmitDefaultCssdefault share page CSS will be omitted. Use when you make extensive styling changes.
shareRootmarks note which is served on /share root.
shareDescriptiondefine text to be added to the HTML meta tag for description
shareRawNote will be served in its raw format, without HTML wrapper. See also Serving directly the content of a note for an alternative method without setting an attribute.
shareDisallowRobotIndexing

Indicates to web crawlers that the page should not be indexed of this note by:

  • Setting the X-Robots-Tag: noindex HTTP header.
  • Setting the noindex, follow meta tag.
shareCredentialsrequire credentials to access this shared note. Value is expected to be in format username:password. Don't forget to make this inheritable to apply to child-notes/images.
shareIndexNote with this label will list all roots of shared notes.
shareHtmlLocationdefines where custom HTML injected via ~shareHtml relation should be placed. Format: location:position where location is head, body, or content and position is start or end. Defaults to content:end.
+
AttributeDescription
shareHiddenFromTreethis note is hidden from left navigation tree, but still accessible with its URL
shareExternalLinknote will act as a link to an external website in the share tree
shareAliasdefine an alias using which the note will be available under https://your_trilium_host/share/[your_alias]
shareOmitDefaultCssdefault share page CSS will be omitted. Use when you make extensive styling changes.
shareRootmarks note which is served on /share root.
shareDescriptiondefine text to be added to the HTML meta tag for description
shareRawNote will be served in its raw format, without HTML wrapper. See also Serving directly the content of a note for an alternative method without setting an attribute.
shareDisallowRobotIndexing

Indicates to web crawlers that the page should not be indexed of this note by:

  • Setting the X-Robots-Tag: noindex HTTP header.
  • Setting the noindex, follow meta tag.
shareCredentialsrequire credentials to access this shared note. Value is expected to be in format username:password. Don't forget to make this inheritable to apply to child-notes/images.
shareIndexNote with this label will list all roots of shared notes.
shareHtmlLocationdefines where custom HTML injected via ~shareHtml relation should be placed. Applied to the HTML snippet note itself. Format: location:position where location is head, body, or content and position is start or end. Defaults to content:end.
## Credits From 4101acc2e39fd68f094351a3504d7c0575233249 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sat, 4 Oct 2025 16:07:41 +0200 Subject: [PATCH 005/201] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-ZH_CN.md | 339 ++++++++++++++++++++++++++++------------- docs/README-ZH_TW.md | 337 ++++++++++++++++++++++++++++------------- docs/README-es.md | 341 +++++++++++++++++++++++++++++++++--------- docs/README-it.md | 348 +++++++++++++++++++++++++++++++++++-------- docs/README-ja.md | 334 +++++++++++++++++++++++++++++++++++------ docs/README-ro.md | 338 ++++++++++++++++++++--------------------- docs/README-ru.md | 330 +++++++++++++++++++++++++++++++++++----- 7 files changed, 1781 insertions(+), 586 deletions(-) diff --git a/docs/README-ZH_CN.md b/docs/README-ZH_CN.md index 9a16b92743..4e87408087 100644 --- a/docs/README-ZH_CN.md +++ b/docs/README-ZH_CN.md @@ -1,130 +1,222 @@ # Trilium Notes -![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran) -![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes) -![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total) -[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[英文](../README.md) | [简体中文](./README-ZH_CN.md) | [正体中文](./README-ZH_TW.md) | [俄文](./README-ru.md) | [日文](./README-ja.md) | [意大利文](./README-it.md) | [西班牙文](./README-es.md) +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) -Trilium Notes 是一款免费且开源、跨平台的阶层式笔记应用程序,专注于建立大型个人知识库。 +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. -想快速了解,请查看[屏幕截图](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: -
Trilium Screenshot +Trilium Screenshot -## 🎁 功能 +## 📚 Documentation -* 笔记可组织成任意深度的树形结构。单一笔记可放在树中的多个位置(参见[笔记复制/克隆](https://triliumnext.github.io/Docs/Wiki/cloning-notes))。 -* 丰富的所见即所得(WYSIWYG)笔记编辑器,支持表格、图片与[数学公式](https://triliumnext.github.io/Docs/Wiki/text-notes),并具备 Markdown 的[自动格式](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)。 -* 支持编辑[程序代码笔记](https://triliumnext.github.io/Docs/Wiki/code-notes),包含语法高亮。 -* 快速、轻松地在笔记间[导航](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文搜索,以及[笔记聚焦(hoisting)](https://triliumnext.github.io/Docs/Wiki/note-hoisting)。 -* 无缝的[笔记版本管理](https://triliumnext.github.io/Docs/Wiki/note-revisions)。 -* 笔记[属性](https://triliumnext.github.io/Docs/Wiki/attributes)可用于笔记的组织、查询与高级[脚本](https://triliumnext.github.io/Docs/Wiki/scripts)。 -* 接口提供英文、德文、西班牙文、法文、罗马尼亚文与中文(简体与正体)。 -* 直接整合 [OpenID 与 TOTP](./User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) 以实现更安全的登录。 -* 与自架的同步服务器进行[同步](https://triliumnext.github.io/Docs/Wiki/synchronization) - * 另有[第三方同步服务器托管服务](https://trilium.cc/paid-hosting)。 -* 将笔记[分享](https://triliumnext.github.io/Docs/Wiki/sharing)(公开发布)到互联网。 -* 以每则笔记为粒度的强大[笔记加密](https://triliumnext.github.io/Docs/Wiki/protected-notes)。 -* 手绘/示意图:基于 [Excalidraw](https://excalidraw.com/)(笔记类型为「canvas」)。 -* 用于可视化笔记及其关系的[关系图](https://triliumnext.github.io/Docs/Wiki/relation-map)与[链接图](https://triliumnext.github.io/Docs/Wiki/link-map)。 -* 思维导图:基于 [Mind Elixir](https://docs.mind-elixir.com/)。 -* 具有定位钉与 GPX 轨迹的[地图](./User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md)。 -* [脚本](https://triliumnext.github.io/Docs/Wiki/scripts)——参见[高级展示](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)。 -* 用于自动化的 [REST API](https://triliumnext.github.io/Docs/Wiki/etapi)。 -* 在可用性与效能上均可良好扩展,支持超过 100,000 笔笔记。 -* 为手机与平板优化的[移动前端](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)。 -* 内置[深色主题](https://triliumnext.github.io/Docs/Wiki/themes),并支持用户主题。 -* [Evernote 导入](https://triliumnext.github.io/Docs/Wiki/evernote-import)与 [Markdown 导入与导出](https://triliumnext.github.io/Docs/Wiki/markdown)。 -* 用于快速保存网页内容的 [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper)。 -* 可自定义的 UI(侧边栏按钮、用户自定义小组件等)。 -* [度量指标(Metrics)](./User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md),并附有 [Grafana 仪表板](./User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json)。 +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** -✨ 想要更多 TriliumNext 的主题、脚本、外挂与资源,亦可参考以下第三方资源/社群: +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository -- [awesome-trilium](https://github.com/Nriver/awesome-trilium)(第三方主题、脚本、外挂与更多)。 -- [TriliumRocks!](https://trilium.rocks/)(教学、指南等等)。 +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## ⚠️ 为什么是 TriliumNext? +## 🎁 Features -[原本的 Trilium 项目目前处于维护模式](https://github.com/zadam/trilium/issues/4620)。 +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -### 从 Trilium 迁移? +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: -从既有的 zadam/Trilium 例项迁移到 TriliumNext/Notes 不需要特别的迁移步骤。只要[照一般方式安装 TriliumNext/Notes](#-安装),它就会直接使用你现有的数据库。 +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. -版本至多至 [v0.90.4](https://github.com/TriliumNext/Notes/releases/tag/v0.90.4) 与 zadam/trilium 最新版本 [v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7) 兼容。之后的 TriliumNext 版本已提升同步版本号(与上述不再兼容)。 +## ❓Why TriliumNext? -## 📖 文件 +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext -我们目前正将文件搬移至应用程序内(在 Trilium 中按 `F1`)。在完成前,文件中可能会有缺漏。如果你想在 GitHub 上查看,也可以直接查看[使用说明](./User%20Guide/User%20Guide/)。 +### ⬆️Migrating from Zadam/Trilium? -以下提供一些快速连结,方便你导览文件: -- [服务器安装](./User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) - - [Docker 安装](./User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) -- [升级 TriliumNext](./User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) -- [基本概念与功能-笔记](./User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) -- [个人知识库的模式](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. -在我们完成重新整理文件架构之前,你也可以[查看旧版文件](https://triliumnext.github.io/Docs)。 +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. -## 💬 与我们交流 +## 💬 Discuss with us -欢迎加入官方社群。我们很乐意听到你对功能、建议或问题的想法! +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org)(同步讨论) - - `General` Matrix 房间也桥接到 [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [GitHub Discussions](https://github.com/TriliumNext/Notes/discussions)(异步讨论)。 -- [GitHub Issues](https://github.com/TriliumNext/Notes/issues)(回报错误与提出功能需求)。 +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) -## 🏗 安装 +## 🏗 Installation -### Windows / macOS +### Windows / MacOS -从[最新释出页面](https://github.com/TriliumNext/Trilium/releases/latest)下载你平台的二进制文件,解压缩后执行 `trilium` 可执行文件。 +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. ### Linux -如果你的发行版如下表所列,请使用该发行版的套件。 +If your distribution is listed in the table below, use your distribution's +package. -[![Packaging status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -你也可以从[最新释出页面](https://github.com/TriliumNext/Trilium/releases/latest)下载对应平台的二进制文件,解压缩后执行 `trilium` 可执行文件。 +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. -TriliumNext 也提供 Flatpak,惟尚未发布到 FlatHub。 +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. -### 查看器(任何操作系统) +### Browser (any OS) -若你有(如下所述的)服务器安装,便可直接存取网页界面(其与桌面应用几乎相同)。 +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). -目前仅支持(并实测)最新版的 Chrome 与 Firefox。 +Currently only the latest versions of Chrome & Firefox are supported (and +tested). -### 移动装置 +### Mobile -若要在行动装置上使用 TriliumNext,你可以透过移动查看器存取服务器安装的移动版接口(见下)。 +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). -如果你偏好原生 Android 应用,可使用 [TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid)。回报问题或缺少的功能,请至[其储存库](https://github.com/FliegendeWurst/TriliumDroid)。 +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. -更多关于移动应用支持的信息,请见议题:https://github.com/TriliumNext/Notes/issues/72。 +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. -### 服务器 +### Server -若要在你自己的服务器上安装 TriliumNext(包括从 [Docker Hub](https://hub.docker.com/r/triliumnext/trilium) 使用 Docker 部署),请遵循[服务器安装文件](https://triliumnext.github.io/Docs/Wiki/server-installation)。 +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). -## 💻 贡献 -### 翻译 +## 💻 Contribute -如果你是母语人士,欢迎前往我们的 [Weblate 页面](https://hosted.weblate.org/engage/trilium/)协助翻译 Trilium。 +### Translations -以下是目前的语言覆盖状态: +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). -[![Translation status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) +Here's the language coverage we have so far: -### 程序代码 +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -下载储存库,使用 `pnpm` 安装相依套件,接着启动服务器(于 http://localhost:8080 提供服务): +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -132,47 +224,90 @@ pnpm install pnpm run server:start ``` -### 文件 +### Documentation -下载储存库,使用 `pnpm` 安装相依套件,接着启动编辑文件所需的环境: +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm run edit-docs:edit-docs +pnpm edit-docs:edit-docs ``` -### 建置桌面可执行文件 - -下载储存库,使用 `pnpm` 安装相依套件,然后为 Windows 建置桌面应用: +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm --filter=desktop electron-forge:make --arch=x64 --platform=win32 +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` -更多细节请参见[开发文件](https://github.com/TriliumNext/Notes/blob/develop/docs/Developer%20Guide/Developer%20Guide/Building%20and%20deployment/Running%20a%20development%20build.md)。 +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). -### 开发者文件 +### Developer Documentation -请参阅[环境设定指南](./Developer%20Guide/Developer%20Guide/Environment%20Setup.md)。若有更多疑问,欢迎透过上方「与我们交流」章节所列连结与我们联系。 +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. -## 👏 鸣谢 +## 👏 Shoutouts -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) —— 业界最佳的所见即所得编辑器,团队互动积极。 -* [FancyTree](https://github.com/mar10/fancytree) —— 功能非常丰富的树状元件,几乎没有对手。没有它,Trilium Notes 将不会是今天的样子。 -* [CodeMirror](https://github.com/codemirror/CodeMirror) —— 支持大量语言的程序代码编辑器。 -* [jsPlumb](https://github.com/jsplumb/jsplumb) —— 无可匹敌的视觉联机函式库。用于[关系图](https://triliumnext.github.io/Docs/Wiki/relation-map.html)与[连结图](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map)。 +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. -## 🤝 支持我们 +Trilium would not be possible without the technologies behind it: -目前尚无法直接赞助 TriliumNext 组织。不过你可以: -- 透过赞助我们的开发者来支持 TriliumNext 的持续开发:[eliandoran](https://github.com/sponsors/eliandoran)(完整清单请见 [repository insights]([developers]([url](https://github.com/TriliumNext/Notes/graphs/contributors)))) -- 透过 [PayPal](https://paypal.me/za4am) 或比特币(bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2)向原始的 Trilium 开发者([zadam](https://github.com/sponsors/zadam))表达支持。 +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) -## 🔑 授权条款 +## 🤝 Support -Copyright 2017–2025 zadam、Elian Doran 与其他贡献者。 +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. -本程序系自由软件:你可以在自由软件基金会(Free Software Foundation)所发布的 GNU Affero 通用公众授权条款(GNU AGPL)第 3 版或(由你选择)任何后续版本之条款下重新散布或修改本程序。 +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. diff --git a/docs/README-ZH_TW.md b/docs/README-ZH_TW.md index 53a86abd50..4e87408087 100644 --- a/docs/README-ZH_TW.md +++ b/docs/README-ZH_TW.md @@ -1,130 +1,222 @@ # Trilium Notes -![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran) -![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes) -![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total) -[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[英文](../README.md) | [簡體中文](./README-ZH_CN.md) | [正體中文](./README-ZH_TW.md) | [俄文](./README-ru.md) | [日文](./README-ja.md) | [義大利文](./README-it.md) | [西班牙文](./README-es.md) +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) -Trilium Notes 是一款免費且開源、跨平台的階層式筆記應用程式,專注於建立大型個人知識庫。 +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. -想快速了解,請查看[螢幕截圖](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: -Trilium Screenshot +Trilium Screenshot -## 🎁 功能 +## 📚 Documentation -* 筆記可組織成任意深度的樹狀結構。單一筆記可放在樹中的多個位置(參見[筆記複製/克隆](https://triliumnext.github.io/Docs/Wiki/cloning-notes))。 -* 豐富的所見即所得(WYSIWYG)筆記編輯器,支援表格、圖片與[數學公式](https://triliumnext.github.io/Docs/Wiki/text-notes),並具備 Markdown 的[自動格式化](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)。 -* 支援編輯[程式碼筆記](https://triliumnext.github.io/Docs/Wiki/code-notes),包含語法高亮。 -* 快速、輕鬆地在筆記間[導航](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文搜尋,以及[筆記聚焦(hoisting)](https://triliumnext.github.io/Docs/Wiki/note-hoisting)。 -* 無縫的[筆記版本管理](https://triliumnext.github.io/Docs/Wiki/note-revisions)。 -* 筆記[屬性](https://triliumnext.github.io/Docs/Wiki/attributes)可用於筆記的組織、查詢與進階[腳本](https://triliumnext.github.io/Docs/Wiki/scripts)。 -* 介面提供英文、德文、西班牙文、法文、羅馬尼亞文與中文(簡體與正體)。 -* 直接整合 [OpenID 與 TOTP](./User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) 以實現更安全的登入。 -* 與自架的同步伺服器進行[同步](https://triliumnext.github.io/Docs/Wiki/synchronization) - * 另有[第三方同步伺服器託管服務](https://trilium.cc/paid-hosting)。 -* 將筆記[分享](https://triliumnext.github.io/Docs/Wiki/sharing)(公開發布)到網際網路。 -* 以每則筆記為粒度的強大[筆記加密](https://triliumnext.github.io/Docs/Wiki/protected-notes)。 -* 手繪/示意圖:基於 [Excalidraw](https://excalidraw.com/)(筆記類型為「canvas」)。 -* 用於視覺化筆記及其關係的[關聯圖](https://triliumnext.github.io/Docs/Wiki/relation-map)與[連結圖](https://triliumnext.github.io/Docs/Wiki/link-map)。 -* 心智圖:基於 [Mind Elixir](https://docs.mind-elixir.com/)。 -* 具有定位釘與 GPX 軌跡的[地圖](./User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md)。 -* [腳本](https://triliumnext.github.io/Docs/Wiki/scripts)——參見[進階展示](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)。 -* 用於自動化的 [REST API](https://triliumnext.github.io/Docs/Wiki/etapi)。 -* 在可用性與效能上均可良好擴展,支援超過 100,000 筆筆記。 -* 為手機與平板最佳化的[行動前端](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)。 -* 內建[深色主題](https://triliumnext.github.io/Docs/Wiki/themes),並支援使用者主題。 -* [Evernote 匯入](https://triliumnext.github.io/Docs/Wiki/evernote-import)與 [Markdown 匯入與匯出](https://triliumnext.github.io/Docs/Wiki/markdown)。 -* 用於快速保存網頁內容的 [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper)。 -* 可自訂的 UI(側邊欄按鈕、使用者自訂小工具等)。 -* [度量指標(Metrics)](./User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md),並附有 [Grafana 儀表板](./User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json)。 +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** -✨ 想要更多 TriliumNext 的主題、腳本、外掛與資源,亦可參考以下第三方資源/社群: +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository -- [awesome-trilium](https://github.com/Nriver/awesome-trilium)(第三方主題、腳本、外掛與更多)。 -- [TriliumRocks!](https://trilium.rocks/)(教學、指南等等)。 +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## ⚠️ 為什麼是 TriliumNext? +## 🎁 Features -[原本的 Trilium 專案目前處於維護模式](https://github.com/zadam/trilium/issues/4620)。 +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -### 從 Trilium 遷移? +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: -從既有的 zadam/Trilium 例項遷移到 TriliumNext/Notes 不需要特別的遷移步驟。只要[照一般方式安裝 TriliumNext/Notes](#-安裝),它就會直接使用你現有的資料庫。 +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. -版本至多至 [v0.90.4](https://github.com/TriliumNext/Notes/releases/tag/v0.90.4) 與 zadam/trilium 最新版本 [v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7) 相容。之後的 TriliumNext 版本已提升同步版本號(與上述不再相容)。 +## ❓Why TriliumNext? -## 📖 文件 +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext -我們目前正將文件搬移至應用程式內(在 Trilium 中按 `F1`)。在完成前,文件中可能會有缺漏。如果你想在 GitHub 上瀏覽,也可以直接查看[使用說明](./User%20Guide/User%20Guide/)。 +### ⬆️Migrating from Zadam/Trilium? -以下提供一些快速連結,方便你導覽文件: -- [伺服器安裝](./User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) - - [Docker 安裝](./User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) -- [升級 TriliumNext](./User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) -- [基本概念與功能-筆記](./User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) -- [個人知識庫的模式](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. -在我們完成重新整理文件架構之前,你也可以[瀏覽舊版文件](https://triliumnext.github.io/Docs)。 +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. -## 💬 與我們交流 +## 💬 Discuss with us -歡迎加入官方社群。我們很樂意聽到你對功能、建議或問題的想法! +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org)(同步討論) - - `General` Matrix 房間也橋接到 [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [GitHub Discussions](https://github.com/TriliumNext/Notes/discussions)(非同步討論)。 -- [GitHub Issues](https://github.com/TriliumNext/Notes/issues)(回報錯誤與提出功能需求)。 +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) -## 🏗 安裝 +## 🏗 Installation -### Windows / macOS +### Windows / MacOS -從[最新釋出頁面](https://github.com/TriliumNext/Trilium/releases/latest)下載你平台的二進位檔,解壓縮後執行 `trilium` 可執行檔。 +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. ### Linux -如果你的發行版如下表所列,請使用該發行版的套件。 +If your distribution is listed in the table below, use your distribution's +package. -[![Packaging status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -你也可以從[最新釋出頁面](https://github.com/TriliumNext/Trilium/releases/latest)下載對應平台的二進位檔,解壓縮後執行 `trilium` 可執行檔。 +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. -TriliumNext 也提供 Flatpak,惟尚未發佈到 FlatHub。 +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. -### 瀏覽器(任何作業系統) +### Browser (any OS) -若你有(如下所述的)伺服器安裝,便可直接存取網頁介面(其與桌面應用幾乎相同)。 +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). -目前僅支援(並實測)最新版的 Chrome 與 Firefox。 +Currently only the latest versions of Chrome & Firefox are supported (and +tested). -### 行動裝置 +### Mobile -若要在行動裝置上使用 TriliumNext,你可以透過行動瀏覽器存取伺服器安裝的行動版介面(見下)。 +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). -如果你偏好原生 Android 應用,可使用 [TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid)。回報問題或缺少的功能,請至[其儲存庫](https://github.com/FliegendeWurst/TriliumDroid)。 +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. -更多關於行動應用支援的資訊,請見議題:https://github.com/TriliumNext/Notes/issues/72。 +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. -### 伺服器 +### Server -若要在你自己的伺服器上安裝 TriliumNext(包括從 [Docker Hub](https://hub.docker.com/r/triliumnext/trilium) 使用 Docker 部署),請遵循[伺服器安裝文件](https://triliumnext.github.io/Docs/Wiki/server-installation)。 +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). -## 💻 貢獻 -### 翻譯 +## 💻 Contribute -如果你是母語人士,歡迎前往我們的 [Weblate 頁面](https://hosted.weblate.org/engage/trilium/)協助翻譯 Trilium。 +### Translations -以下是目前的語言覆蓋狀態: +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). -[![Translation status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) +Here's the language coverage we have so far: -### 程式碼 +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -下載儲存庫,使用 `pnpm` 安裝相依套件,接著啟動伺服器(將於 http://localhost:8080 提供服務): +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -132,9 +224,10 @@ pnpm install pnpm run server:start ``` -### 文件 +### Documentation -下載儲存庫,使用 `pnpm` 安裝相依套件,接著啟動編輯文件所需的環境: +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -142,37 +235,79 @@ pnpm install pnpm edit-docs:edit-docs ``` -### 建置桌面可執行檔 - -下載儲存庫,使用 `pnpm` 安裝相依套件,然後為 Windows 建置桌面應用: +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium pnpm install -pnpm --filter=desktop electron-forge:make --arch=x64 --platform=win32 +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` -更多細節請參見[開發文件](https://github.com/TriliumNext/Notes/blob/develop/docs/Developer%20Guide/Developer%20Guide/Building%20and%20deployment/Running%20a%20development%20build.md)。 +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). -### 開發者文件 +### Developer Documentation -請參閱[環境設定指南](./Developer%20Guide/Developer%20Guide/Environment%20Setup.md)。若有更多疑問,歡迎透過上方「與我們交流」章節所列連結與我們聯繫。 +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. -## 👏 鳴謝 +## 👏 Shoutouts -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) —— 業界最佳的所見即所得編輯器,團隊互動積極。 -* [FancyTree](https://github.com/mar10/fancytree) —— 功能非常豐富的樹狀元件,幾乎沒有對手。沒有它,Trilium Notes 將不會是今天的樣子。 -* [CodeMirror](https://github.com/codemirror/CodeMirror) —— 支援大量語言的程式碼編輯器。 -* [jsPlumb](https://github.com/jsplumb/jsplumb) —— 無可匹敵的視覺連線函式庫。用於[關聯圖](https://triliumnext.github.io/Docs/Wiki/relation-map.html)與[連結圖](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map)。 +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. -## 🤝 支援我們 +Trilium would not be possible without the technologies behind it: -目前尚無法直接贊助 TriliumNext 組織。不過你可以: -- 透過贊助我們的開發者來支持 TriliumNext 的持續開發:[eliandoran](https://github.com/sponsors/eliandoran)(完整清單請見 [repository insights]([developers]([url](https://github.com/TriliumNext/Notes/graphs/contributors)))) -- 透過 [PayPal](https://paypal.me/za4am) 或比特幣(bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2)向原始的 Trilium 開發者([zadam](https://github.com/sponsors/zadam))表達支持。 +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) -## 🔑 授權條款 +## 🤝 Support -Copyright 2017–2025 zadam、Elian Doran 與其他貢獻者。 +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. -本程式係自由軟體:你可以在自由軟體基金會(Free Software Foundation)所發佈的 GNU Affero 通用公眾授權條款(GNU AGPL)第 3 版或(由你選擇)任何後續版本之條款下重新散布或修改本程式。 +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. diff --git a/docs/README-es.md b/docs/README-es.md index f8a01b06a4..4e87408087 100644 --- a/docs/README-es.md +++ b/docs/README-es.md @@ -1,106 +1,313 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -Trilium Notes es una aplicación de toma de notas jerárquicas multi-plataforma y de código libre con un enfoque en la construcción de grandes bases de conocimiento personal. +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) -Vea estas [capturas de pantalla](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) para un vistazo rápido: +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. -Trilium Screenshot +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: -## ⚠️ ¿Por qué usar TriliumNext? +Trilium Screenshot -[El proyecto Trilium original está en modo de mantenimiento](https://github.com/zadam/trilium/issues/4620) +## 📚 Documentation -### ¿Cómo migrar desde Trilium? +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** -No hay pasos de migración especiales para migrar de una instancia de zadam/Trilium a una instancia de TriliumNext/Trilium. Simplemente actualice su instancia de Trilium a la última versión e [instale TriliumNext/Trilium como de costumbre](#-Instalación) +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository -## 💬 Discuta con nosotros +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -Siéntase libre de unirse a nuestras conversaciones oficiales. ¡Nos encantaría escuchar de las características, sugerencias o problemas que pueda tener! +## 🎁 Features -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Para discusiones síncronas) - - La sala `General` es replicada a [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [Discusiones de GitHub](https://github.com/TriliumNext/Trilium/discussions) (Para discusiones asíncronas) -- [Wiki](https://triliumnext.github.io/Docs/) (Para preguntas frecuentes y guías de usuario) +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -## 🎁 Características +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: -- Las notas pueden ser acomodadas en un árbol de profundidad arbitraria. Una sola nota puede ser colocada en múltiples lugares del árbol (vea [clonar](https://triliumnext.github.io/Docs/Wiki/cloning-notes) -- Edición de notas WYSIWYG enriquecida que incluye, por ejemplo, tablas, imágenes y [matemáticas](https://triliumnext.github.io/Docs/Wiki/text-notes) con [autoformato](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) markdown -- Soporte para editar [notas con código fuente](https://triliumnext.github.io/Docs/Wiki/code-notes), incluyendo resaltado de sintaxis -- Rápida y sencilla [navegación entre notas](https://triliumnext.github.io/Docs/Wiki/note-navigation), búsqueda de texto completo y [elevación de notas](https://triliumnext.github.io/Docs/Wiki/note-hoisting) -- [Versionado de notas](https://triliumnext.github.io/Docs/Wiki/note-revisions) sutil -- Los [atributos](https://triliumnext.github.io/Docs/Wiki/attributes) de las notas pueden utilizarse para organización, realizar consultas y [scripts](https://triliumnext.github.io/Docs/Wiki/scripts) avanzados -- [Sincronización](https://triliumnext.github.io/Docs/Wiki/synchronization) con servidor de sincronización propio - - existe un [servicio de terceros para alojar el servidor de sincronización](https://trilium.cc/paid-hosting) -- [Compartir](https://triliumnext.github.io/Docs/Wiki/sharing) (publicar) notas al Internet público -- Fuerte [encriptación de notas](https://triliumnext.github.io/Docs/Wiki/protected-notes) con granularidad para cada nota -- Esbozo de diagramas con Excalidraw incorporado (tipo de nota «canvas») -- [Mapas de relaciones]() y [mapas de enlaces](https://triliumnext.github.io/Docs/Wiki/link-map) para visualizar las notas y sus relaciones -- [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - vea [casos de uso avanzados](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -- [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) para automatización -- Escala bien tanto en uso como en rendimiento a partir de 100,000 notas -- [Interfaz móvil](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) optimizada para teléfonos inteligentes y tabletas -- [Tema nocturno](https://triliumnext.github.io/Docs/Wiki/themes) -- Importación y exportación de [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) y [Markdown](https://triliumnext.github.io/Docs/Wiki/markdown) -- [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) para guardar fácilmente contenido web +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. -✨ Consulte los/las siguientes recursos/comunidades de terceros para obtener más información sobre complementos para TriliumNext: +## ❓Why TriliumNext? -- [awesome-trilium](https://github.com/Nriver/awesome-trilium) para temas, scripts, plugins y más de terceros. -- [TriliumRocks!](https://trilium.rocks/) para tutoriales, guías y mucho más. +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext -## 🏗 Instalación +### ⬆️Migrating from Zadam/Trilium? -### Escritorio +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. -Para usar TriliumNext en su máquina de escritorio (Linux, MacOS y Windows) tiene algunas opciones: +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. -- Descargue la versión binaria para su plataforma desde la [página de lanzamientos](https://github.com/TriliumNext/Trilium/releases/latest), descomprima el paquete y ejecute el ejecutable `trilium`. -- Acceda a TriliumNext a través de la interfaz web de una instalación de servidor (ver más abajo) - - Actualmente solo las últimas versiones de Chrome y Firefox son compatibles (y están probadas). -- (Próximamente) TriliumNext también se proporcionará como un Flatpak +## 💬 Discuss with us -### Móvil +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! -Para usar TriliumNext en un dispositivo móvil: +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) -- Utilice un navegador web móvil para acceder a la interfaz móvil de una instalación de servidor (ver más abajo) -- El uso de una aplicación móvil aún no está soportado ([vea aquí](https://github.com/TriliumNext/Trilium/issues/72)) para seguir las mejoras móviles. +## 🏗 Installation -### Servidor +### Windows / MacOS -Para instalar TriliumNext en su servidor (incluyendo vía Docker desde [Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) siga la [documentación de instalación de servidor](https://triliumnext.github.io/Docs/Wiki/server-installation). +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. -## 📝 Documentación +### Linux -[Vea la Wiki para la lista completa de páginas de documentación.](https://triliumnext.github.io/Docs) +If your distribution is listed in the table below, use your distribution's +package. -También puede leer [Patrones para una base de conocimiento personal](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) para obtener un poco de inspiración de como podría usar TriliumNext. +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -## 💻 Contribuir +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. -Clone localmente y ejecute +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): ```shell -npm install -npm run server:start +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start ``` -## 👏 Reconocimientos +### Documentation -- [CKEditor 5](https://github.com/ckeditor/ckeditor5) - el mejor editor WYSIWYG en el mercado, equipo muy interactivo y atento -- [FancyTree](https://github.com/mar10/fancytree) - biblioteca de árbol muy rica en funciones sin competencia real. Trilium Notes no sería lo mismo sin esta. -- [CodeMirror](https://github.com/codemirror/CodeMirror) - editor de código con soporte para una gran cantidad de lenguajes -- [jsPlumb](https://github.com/jsplumb/jsplumb) - biblioteca de conectividad visual sin competencia. Usado en [mapas de relación](https://triliumnext.github.io/Docs/Wiki/Relation-map) y [mapas de enlace](https://triliumnext.github.io/Docs/Wiki/Link-map) +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` -## 🤝 Soporte +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` -Puede apoyar al desarrollador original de Trilium usando GitHub Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). -Apoyo para la organización TriliumNext será posible en un futuro próximo. +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). -## 🔑 Licencia +### Developer Documentation -Este programa es software libre: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de Affero GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior. +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. diff --git a/docs/README-it.md b/docs/README-it.md index 25c369abaa..4e87408087 100644 --- a/docs/README-it.md +++ b/docs/README-it.md @@ -1,93 +1,313 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -Trilium Notes è un'applicazione per appunti ad organizzazione gerarchica, studiata per la costruzione di archivi di conoscenza personali di grandi dimensioni. +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) -Vedi [fotografie](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) per una panoramica veloce: +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. -Trilium Screenshot +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: -## ⚠️ Perchè TriliumNext? -[Il progetto originale Trilium è in modalità di manutenzione](https://github.com/zadam/trilium/issues/4620) +Trilium Screenshot -## 🗭 Discuti con noi -Sentiti libero di unirti alle nostre discussioni ufficiali e alla nostra comunità. Siamo concentrati sullo sviluppo di Trilium e ci piacerebbe sapere quali funzioni, suggerimenti o eventuali problemi hai! +## 📚 Documentation -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Per discussioni sincrone) -- [Discussioni Github](https://github.com/TriliumNext/Trilium/discussions) (Per discussioni asincrone) -- [Wiki](https://triliumnext.github.io/Docs/) (Per le domande più comuni e le guide per l'utente) +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** -Le due stanze linkate sopra sono connesse e contengono gli stessi messaggi, quindi puoi usare XMPP o Matrix da qualsiasi client tu preferisca, praticamente su qualsiasi piattaforma! -### Comunità non ufficiali +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository -[Trilium Rocks](https://discord.gg/aqdX9mXX4r) -## 🎁 Funzionalità +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -* Gli appunti possono essere organizzati in un albero di profondità arbitraria. Un singolo appunto può essere collocato in più posti nell'albero (vedi [clonazione](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) -* Ricco editor visuale (WYSIWYG), con supporto -tra l'altro- per tabelle, immagini ed [espressioni matematiche](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support) e con [formattazione automatica](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) per markdown -* Supporto per la modifica di [appunti con codice sorgente](https://triliumnext.github.io/Docs/Wiki/code-notes), con evidenziazione della sintassi -* [Navigazione veloce](https://triliumnext.github.io/Docs/Wiki/note-navigation) tra gli appunti, ricerca testuale completa e [fissaggio degli appunti](https://triliumnext.github.io/Docs/Wiki/note-hoisting) -* Supporto integrato ed automatico per le [revisioni degli appunti](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* Gli [attributi](https://triliumnext.github.io/Docs/Wiki/attributes) degli appunti possono essere utilizzati per l'organizzazione, per l'interrogazione e per lo scripting avanzato (prorgrammazione). -* [Sincronizzazione](https://triliumnext.github.io/Docs/Wiki/synchronization) con un server di sincronizzazione auto-ospitato - * c'è un [servizio di terze parti per ospitare server di sincronizzazione](https://trilium.cc/paid-hosting) -* [Condivisione](https://triliumnext.github.io/Docs/Wiki/sharing) (pubblicazione) di appunti sull'internet pubblico -* Robusta [crittografia](https://triliumnext.github.io/Docs/Wiki/protected-notes) configurabile singolarmente per ogni appunto -* Disegno di diagrammi con Excalidraw (tipo di appunto "canvas") -* [Mappe relazionali](https://triliumnext.github.io/Docs/Wiki/relation-map) e [mappe di collegamenti](https://triliumnext.github.io/Docs/Wiki/link-map) per visualizzare gli appunti e le loro relazioni -* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - vedi [Esempi avanzati](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -* [API REST](https://triliumnext.github.io/Docs/Wiki/etapi) per l'automazione -* Si adatta bene sia in termini di usabilità che di prestazioni fino ad oltre 100 000 appunti -* Interfaccia utente ottimizzata per il [mobile](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) (smartphone e tablet) -* [Tema Notturno](https://triliumnext.github.io/Docs/Wiki/themes) -* Supporto per importazione ed esportazione da e per [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) e [Markdown import](https://triliumnext.github.io/Docs/Wiki/markdown) -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) per il salvataggio facile di contenuti web +## 🎁 Features -✨ Dai un'occhiata alle seguenti risorse di terze parti per scoprire altre bellezze legate a TriliumNext: +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) --[awesome-trilium](https://github.com/Nriver/awesome-trilium) per temi, script, plugin e altro di terze parti. -- [TriliumRocks!](https://trilium.rocks/) per tutorial, guide e molto altro. -## 🏗 Rilasci +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). -Trilium è fornito come applicazione desktop (Linux e Windows) o come applicazione web ospitata sul tuo server (Linux). La versione desktop per Mac OS è disponibile, ma [non è supportata](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support). +## 💻 Contribute -* Se vuoi usare Trilium sul tuo desktop, scarica il rilascio binario per la tua piattaforma dall'[ultimo rilascio](https://github.com/TriliumNext/Trilium/releases/latest), decomprimi l'archivio e avvia l'eseguibile ```trilium```. -* Se vuoi installare Trilium su un server, segui [questa pagina](https://triliumnext.github.io/Docs/Wiki/server-installation). - * Per ora solo Chrome e Firefox sono i browser supportati (testati). +### Translations -TriliumNext sarà fornito anche come Flatpak: +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). - +Here's the language coverage we have so far: -## 📝 Documentazione +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -[Vedi la wiki per una lista completa delle pagine di documentazione.](https://triliumnext.github.io/Docs/) - -Puoi anche leggere ["Patterns of personal knowledge base"](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) per avere un'ispirazione su come potresti utilizzare Trilium. - -## 💻 Contribuire - -Clona localmente ed esegui +### Code +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): ```shell -npm install -npm run server:start +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start ``` -## 👏 Riconoscimenti +### Documentation -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - miglior editor visuale (WYSIWYG) sul mercato, squadra di sviluppo attenta e reattiva -* [FancyTree](https://github.com/mar10/fancytree) - libreria per alberi molto ricca di funzionalità, senza pari. Trilium Notes non sarebbe lo stesso senza di essa. -* [CodeMirror](https://github.com/codemirror/CodeMirror) - editor di codice con supporto per un'enorme quantità di linguaggi. -* [jsPlumb](https://github.com/jsplumb/jsplumb) - libreria per la connettività visuale senza pari. Utilizzata per [mappe relazionali](https://triliumnext.github.io/Docs/Wiki/relation-map) e [mappe di collegamenti](https://triliumnext.github.io/Docs/Wiki/link-map). +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` -## 🤝 Supporto +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` -Puoi sostenere lo sviluppatore originale di Trilium utilizzando gli sponsor di GitHub, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). -Il supporto all'organizzazione TriliumNext sarà possibile nel prossimo futuro. +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). -## 🔑 Licenza +### Developer Documentation -Questo programma è software libero: è possibile redistribuirlo e/o modificarlo nei termini della GNU Affero General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, o (a propria scelta) qualsiasi versione successiva. +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. diff --git a/docs/README-ja.md b/docs/README-ja.md index bef53ec5e8..4e87408087 100644 --- a/docs/README-ja.md +++ b/docs/README-ja.md @@ -1,73 +1,313 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://triliumnext.github.io/Docs/Wiki/screenshot-tour)をご覧ください: +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) -Trilium Screenshot +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. -## 🎁 特徴 +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: -* ノートは、任意の深さのツリーに配置できます。単一のノートをツリー内の複数の場所に配置できます ([cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes) を参照) -* マークダウン[オートフォーマット](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)による、表、画像、[数学](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support)などの豊富な WYSIWYG ノート編集機能 -* シンタックスハイライトを含む[ソースコード付きノート](https://triliumnext.github.io/Docs/Wiki/code-notes)の編集をサポート -* [ノート間のナビゲーション](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文検索、[ノートホイスト](https://triliumnext.github.io/Docs/Wiki/note-hoisting)が高速かつ簡単に行えます -* シームレスな[ノートのバージョン管理](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* ノート[属性](https://triliumnext.github.io/Docs/Wiki/Attributes)は、ノート整理、クエリ、高度な[スクリプト](https://triliumnext.github.io/Docs/Wiki/scripts)に使用できます -* 自己ホスト型同期サーバーとの[同期](https://triliumnext.github.io/Docs/Wiki/synchronization) - * [同期サーバーをホストするサードパーティ・サービス](https://trilium.cc/paid-hosting)があります -* 公開インターネットへのノートの[共有](https://triliumnext.github.io/Docs/Wiki/sharing)(公開) -* ノートごとの粒度を持つ強力な[ノート暗号化](https://triliumnext.github.io/Docs/Wiki/protected-notes) -* 組み込みの Excalidraw を使用した図のスケッチ (ノート タイプ"キャンバス") -* ノートとその関係を可視化するための[関係図](https://triliumnext.github.io/Docs/Wiki/relation-map)と[リンクマップ](https://triliumnext.github.io/Docs/Wiki/link-map) -* [スクリプティング](https://triliumnext.github.io/Docs/Wiki/scripts) - [高度なショーケース](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)を参照 -* 自動化のための [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) -* ユーザビリティとパフォーマンスの両方で 100 000 ノート以上に拡張可能 -* スマートフォンとタブレット向けのタッチ最適化[モバイルフロントエンド](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) -* [ナイトテーマ](https://triliumnext.github.io/Docs/Wiki/themes) -* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) と [Markdown のインポートとエクスポート](https://triliumnext.github.io/Docs/Wiki/Markdown) -* Web コンテンツを簡単に保存するための [Web クリッパー](https://triliumnext.github.io/Docs/Wiki/web-clipper) +Trilium Screenshot -サードパーティのテーマ、スクリプト、プラグインなどは、 [awesome-trilium](https://github.com/Nriver/awesome-trilium) をチェックしてください。 +## 📚 Documentation -## 🏗 ビルド +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** -Trilium は、デスクトップアプリケーション(Linux、Windows)またはサーバー上でホストされるウェブアプリケーション(Linux)として提供されます。 Mac OS のデスクトップビルドも利用可能ですが、 [unsupported](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support) となっています。 +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository -* デスクトップで Trilium を使用したい場合は、 [latest release](https://github.com/TriliumNext/Trilium/releases/latest) からお使いのプラットフォームのバイナリリリースをダウンロードし、パッケージを解凍して ``trilium`` の実行ファイルを実行してください。 -* サーバーに Trilium をインストールする場合は、[このページ](https://triliumnext.github.io/Docs/Wiki/server-installation)に従ってください。 - * 現在、対応(動作確認)しているブラウザは、最近の Chrome と Firefox のみです。 +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -Trilium は Flatpak としても提供されます: +## 🎁 Features -[](https://flathub.org/apps/details/com.github.zadam.trilium) +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -## 📝 ドキュメント +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: -[ドキュメントページの全リストはwikiをご覧ください。](https://triliumnext.github.io/Docs/) +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. -また、[個人的な知識基盤のパターン](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)を読むと、 Trilium の使い方のヒントを得ることができます。 +## ❓Why TriliumNext? -## 💻 コントリビュート +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext -または、ローカルにクローンして実行 +### ⬆️Migrating from Zadam/Trilium? +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): ```shell -npm install -npm run server:start +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start ``` -## 📢 シャウトアウト +### Documentation -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市場で最高の WYSIWYG エディター、非常にインタラクティブで聞き上手なチーム -* [FancyTree](https://github.com/mar10/fancytree) - 真の競争相手がいない、非常に機能豊富なツリーライブラリです。 Trilium Notes は、これなしでは成り立たないでしょう。 -* [CodeMirror](https://github.com/codemirror/CodeMirror) - 膨大な数の言語をサポートするコードエディタ -* [jsPlumb](https://github.com/jsplumb/jsplumb) - 競合のないビジュアルコネクティビティライブラリです。[関係図](https://triliumnext.github.io/Docs/Wiki/relation-map)、[リンク図](https://triliumnext.github.io/Docs/Wiki/link-map)で使用。 +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` -## 🤝 サポート +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` -GitHub スポンサー、[PayPal](https://paypal.me/za4am)もしくは Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) にて Trilium をサポートすることができます。 +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). -## 🔑 ライセンス +### Developer Documentation -このプログラムはフリーソフトウェアです:フリーソフトウェア財団が発行した GNU Affero General Public License のバージョン3、またはそれ以降のバージョンのいずれかに従って、再配布および/または改変することができます。 +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. diff --git a/docs/README-ro.md b/docs/README-ro.md index 4a4aa80c2a..f255aa0e12 100644 --- a/docs/README-ro.md +++ b/docs/README-ro.md @@ -1,7 +1,7 @@ # Trilium Notes -![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![Donatori -pe LiberaPay](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Sponsori prin GitHub](https://img.shields.io/github/sponsors/eliandoran) +![Sponsori prin LiberaPay](https://img.shields.io/liberapay/patrons/ElianDoran)\ ![Descărcări pe Docker](https://img.shields.io/docker/pulls/triliumnext/trilium) ![Descărcări pe GitHub (toate variantele, toate release-urile)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ @@ -9,10 +9,10 @@ release-urile)](https://img.shields.io/github/downloads/triliumnext/trilium/tota [![Starea traducerilor](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | -[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) -| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | -[Spanish](./docs/README-es.md) +[Engleză](./README.md) | [Chineză (Simplificată)](./docs/README-ZH_CN.md) | +[Chineză (Tradițională)](./docs/README-ZH_TW.md) | [Rusă](./docs/README-ru.md) | +[Japoneză](./docs/README-ja.md) | [Italiană](./docs/README-it.md) | +[Spaniolă](./docs/README-es.md) Trilium Notes este o aplicație gratuită și open-source pentru notițe structurate ierarhic cu scopul de a crea o bază de date de cunoștințe personală, de mari @@ -55,10 +55,10 @@ Documentația este disponibilă în mai multe formate: O singură notiță poate fi plasată în mai multe locuri în abore (vedeți [procesul de clonare](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) * Editor vizual de notițe cu suport de tabele, imagini și [ecuații - matematice](https://triliumnext.github.io/Docs/Wiki/text-notes) și - [autoformatare în stil + matematice](https://triliumnext.github.io/Docs/Wiki/text-notes) cu + [auto-formatare în stil Markdown](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) -* Suport pentru editarea [notițelor de tip cod +* Suport for editarea [notițelor de tip cod sursă](https://triliumnext.github.io/Docs/Wiki/code-notes), inclusiv cu evidențierea sintaxei * [Navigare rapidă printre @@ -67,158 +67,160 @@ Documentația este disponibilă în mai multe formate: notițelor](https://triliumnext.github.io/Docs/Wiki/note-hoisting) * Salvarea transparentă a [reviziilor notițelor](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* [Atribute](https://triliumnext.github.io/Docs/Wiki/attributes) pentru - organizarea și căutarea notițelor, dar și posibilitatea - [script-uri](https://triliumnext.github.io/Docs/Wiki/scripts) avansate +* [Attribute](https://triliumnext.github.io/Docs/Wiki/attributes) pentru + organizarea și căutarea notițelor, dar și posibilitatea de [script-uri + avansate](https://triliumnext.github.io/Docs/Wiki/scripts) * Interfața grafică este disponibilă în mai multe limbi, dintre care și limba română -* Direct [OpenID and TOTP - integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) - for more secure login -* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) - with self-hosted sync server - * there's a [3rd party service for hosting synchronisation - server](https://trilium.cc/paid-hosting) -* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes - to public internet -* Strong [note - encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with - per-note granularity -* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type - "canvas") -* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and - [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing - notes and their relations -* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) -* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with - location pins and GPX tracks -* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced - showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation -* Scales well in both usability and performance upwards of 100 000 notes -* Touch optimized [mobile - frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for - smartphones and tablets -* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support - for user themes -* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and - [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy - saving of web content -* Customizable UI (sidebar buttons, user-defined widgets, ...) -* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along - with a [Grafana - Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) +* [Integrare directă cu OpenID and + TOTP](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + pentru o autentificare mai sigură +* [Sincronizare](https://triliumnext.github.io/Docs/Wiki/synchronization) cu un + server propriu + * există și un [serviciu terț pentru + sincronizare](https://trilium.cc/paid-hosting) +* [Partajarea](https://triliumnext.github.io/Docs/Wiki/sharing) (publicarea) + notițelor pe Internet +* [Criptare puternică](https://triliumnext.github.io/Docs/Wiki/protected-notes) + la nivel de notițe +* Desenare liberă, folosind [Excalidraw](https://excalidraw.com/) (notițe de tip + „schiță”) +* [Hărți de relații](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [hărți de legături](https://triliumnext.github.io/Docs/Wiki/link-map) pentru + vizualizarea notițelor și a relațiilor acestora +* Hărți mentale, bazate pe [Mind Elixir](https://docs.mind-elixir.com/) +* [Hărți geografice](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) + cu marcaje și trasee GPX +* [Scriptare](https://triliumnext.github.io/Docs/Wiki/scripts) - vedeți + [Prezentare + avansată](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [API-uri REST](https://triliumnext.github.io/Docs/Wiki/etapi) pentru + automatizare +* Suportă peste 100 de mii de notițe fără impact de performanță +* [Interfață de mobil optimizată pentru touch + screen](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) pentru + telefoane mobile și tablete +* [Temă întunecată](https://triliumnext.github.io/Docs/Wiki/themes) predefinită, + dar și suport pentru teme personalizate +* Import și export pentru + [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) și + [Markdown](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) pentru + salvarea rapidă a conținutului de pe Internet +* Interfață grafică personalizabilă (butoane, widget-uri definite de utilizator, + ...) +* [Metrice](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), + inclusiv un [dashboard + Grafana](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -✨ Check out the following third-party resources/communities for more TriliumNext -related goodies: +✨ Consultați următoarele resurse din partea comunității Trilium: -- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party - themes, scripts, plugins and more. -- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) pentru teme + adiționale, script-uri, plugin-uri și altele. +- [TriliumRocks!](https://trilium.rocks/) pentru tutoriale, ghiduri și altele. -## ❓Why TriliumNext? +## ❓De ce TriliumNext? -The original Trilium developer ([Zadam](https://github.com/zadam)) has -graciously given the Trilium repository to the community project which resides -at https://github.com/TriliumNext +Primul dezvoltator ([Zadam](https://github.com/zadam)) a oferit repository-ul +original către fork-ul TriliumNext aflat la https://github.com/TriliumNext -### ⬆️Migrating from Zadam/Trilium? +### ⬆️ Migrare de la versiunea originală (Zadam/Trilium)? -There are no special migration steps to migrate from a zadam/Trilium instance to -a TriliumNext/Trilium instance. Simply [install -TriliumNext/Trilium](#-installation) as usual and it will use your existing -database. +Nu există pași speciali de a migra de la o instanță de zadam/Trilium. Pur și +simplu [instalați TriliumNext/Trilium](#-installation) în mod obișnuit și va +utiliza baza de date existentă. -Versions up to and including -[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are -compatible with the latest zadam/trilium version of -[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later -versions of TriliumNext/Trilium have their sync versions incremented which -prevents direct migration. +Versiunile până la +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) inclusiv +sunt compatibile cu ultima versiune zadam/trilium, anume +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Toate +versiunile mai noi au versiune de sincronizare mai mare, ce previn migrarea +directă. -## 💬 Discuss with us +## 💬 Discută cu noi -Feel free to join our official conversations. We would love to hear what -features, suggestions, or issues you may have! +Participați la canalele noastre oficiale. Ne-ar plăcea să știm ce funcții, +sugestii sau probleme aveți! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous - discussions.) - - The `General` Matrix room is also bridged to +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (pentru discuții în timp + real). + - Camera de chat `General` se partajează și prin [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For - asynchronous discussions.) -- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug - reports and feature requests.) +- [Discuții pe GitHub](https://github.com/TriliumNext/Trilium/discussions) + (pentru discuții de tip forum) +- [GitHub Issues](https://github.com/TriliumNext/Trilium/issues) (pentru + rapoarte de bug-uri și cereri de funcționalități.) -## 🏗 Installation +## 🏗 Procesul de instalare ### Windows / MacOS -Download the binary release for your platform from the [latest release -page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package -and run the `trilium` executable. +Descărcați release-ul binar pentru platforma dvs. de pe pagina [ultimului +release](https://github.com/TriliumNext/Trilium/releases/latest), dezarhivați și +rulați executabilul `trilium`. ### Linux -If your distribution is listed in the table below, use your distribution's -package. +Dacă distribuția dvs. de Linux este listată în tabelul de mai jos, puteți folosi +pachetul specific acelei distribuții. -[![Packaging -status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) +[![Stare +împachetare](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -You may also download the binary release for your platform from the [latest -release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the -package and run the `trilium` executable. +De asemenea puteți descărca release-ul binar de pe [pagina ultimului +release](https://github.com/TriliumNext/Trilium/releases/latest), dezarhivați +pachetul și rulați executabilul `trilium`. -TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. +Trilium vine și sub formă de Flatpak, dar nu este încă publicată pe FlatHub. -### Browser (any OS) +### Navigator web (orice sistem de operare) -If you use a server installation (see below), you can directly access the web -interface (which is almost identical to the desktop app). +Dacă folosiți varianta de server (vedeți mai jos), puteți accesa direct +interfața web (care este aproape identică aplicației desktop). -Currently only the latest versions of Chrome & Firefox are supported (and -tested). +Doar ultimele versiuni de Chrome și Firefox sunt suportate și testate. -### Mobile +### Mobil -To use TriliumNext on a mobile device, you can use a mobile web browser to -access the mobile interface of a server installation (see below). +Pentru a putea folosi Trilium pe mobil, puteți folosi un navigator web pentru a +putea accesa interfața de mobil a unei instalări server (vedeți mai jos). -See issue https://github.com/TriliumNext/Trilium/issues/4962 for more -information on mobile app support. +Consultați https://github.com/TriliumNext/Trilium/issues/4962 pentru mai multe +informații despre suportul aplicației de mobil. -If you prefer a native Android app, you can use +Dacă preferați o aplicație nativă de Android, puteți folosi [TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). -Report bugs and missing features at [their -repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to -disable automatic updates on your server installation (see below) when using -TriliumDroid since the sync version must match between Trilium and TriliumDroid. +Bug-urile și cererile de funcționalități pentru această aplicație trebuie +reportate la [repository-ul +lor](https://github.com/FliegendeWurst/TriliumDroid). Notă: este recomandat să +se dezactiveze update-urile automatizate la server (vedeți mai jos) deoarece +versiunea de sincronizare uneori rămâne în urmă la aplicația de mobil. ### Server -To install TriliumNext on your own server (including via Docker from -[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server -installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). +Pentru a instala Trilium pe server (inclusiv prin Docker din +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)), urmați [documentația +de instalare a +server-ului](https://triliumnext.github.io/Docs/Wiki/server-installation). -## 💻 Contribute +## 💻 Moduri de a contribui -### Translations +### Traduceri -If you are a native speaker, help us translate Trilium by heading over to our -[Weblate page](https://hosted.weblate.org/engage/trilium/). +Dacă sunteți un vorbitor experimentat al unei alte limbi, ne puteți ajuta să +traduceți Trilium prin intermediul +[Weblate](https://hosted.weblate.org/engage/trilium/). -Here's the language coverage we have so far: +Aceasta este acoperirea traducerilor per limbă: -[![Translation -status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) +[![Starea +traducerilor](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -### Code +### Cod -Download the repository, install dependencies using `pnpm` and then run the -server (available at http://localhost:8080): +Descărcați repository-ul, instalați dependențele folosind `pnpm` și apoi rulați +server-ul (disponibil la http://localhost:8080): ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -226,10 +228,10 @@ pnpm install pnpm run server:start ``` -### Documentation +### Documentație -Download the repository, install dependencies using `pnpm` and then run the -environment required to edit the documentation: +Descărcați repository-ul, instalați dependințele folosind `pnpm` și apoi rulați +mediul de editare a documentației: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -237,9 +239,9 @@ pnpm install pnpm edit-docs:edit-docs ``` -### Building the Executable -Download the repository, install dependencies using `pnpm` and then build the -desktop app for Windows: +### Compilarea executabilului +Descărcați repository-ul, instalați dependințele utilizând `pnpm` și compilați +aplicația de desktop pentru Windows: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -247,56 +249,58 @@ pnpm install pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` -For more details, see the [development -docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). +Pentru mai multe detalii, vedeți [documentația pentru +dezvoltare](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). -### Developer Documentation +### Documentația pentru dezvoltatori -Please view the [documentation -guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) -for details. If you have more questions, feel free to reach out via the links -described in the "Discuss with us" section above. +Urmărți +[documentația](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +pentru mai multe detalii. Dacă aveți întrebări, puteți să ne contactați folosind +legăturile descrise în secțiunea „Discutați cu noi” de mai sus. -## 👏 Shoutouts +## 👏 Mențiuni -* [zadam](https://github.com/zadam) for the original concept and implementation - of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. -* [nriver](https://github.com/nriver) for his work on internationalization. -* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. -* [antoniotejada](https://github.com/nriver) for the original syntax highlight - widget. -* [Dosu](https://dosu.dev/) for providing us with the automated responses to - GitHub issues and discussions. -* [Tabler Icons](https://tabler.io/icons) for the system tray icons. +* [zadam](https://github.com/zadam) pentru conceptul și implementarea originală + a aplicației. +* [Larsa](https://github.com/LarsaSara) pentru pictograma aplicației. +* [nriver](https://github.com/nriver) pentru sistemul de internaționalizare. +* [Thomas Frei](https://github.com/thfrei) pentru munca sa originală pentru + notițele de tip schiță. +* [antoniotejada](https://github.com/nriver) pentru implementarea originală a + widget-ului de evidențiere al sintaxei. +* [Dosu](https://dosu.dev/) pentru răspunsurile automate la issue-urile de pe + GitHub și discuții. +* [Tabler Icons](https://tabler.io/icons) pentru iconițele din bara de sistem. -Trilium would not be possible without the technologies behind it: +Trilium nu ar fi fost posibil fără tehnologiile pe care este bazat: -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind - text notes. We are grateful for being offered a set of the premium features. -* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with - support for huge amount of languages. -* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite - whiteboard used in Canvas notes. -* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the - mind map functionality. -* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical - maps. -* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive - table used in collections. -* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library - without real competition. -* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. - Used in [relation - maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link - maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - editorul vizual din + spatele notițelor de tip text. Suntem recunoscători pentru setul de + funcționalități premium. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - editorul de cod cu + suport pentru foarte multe limbaje de programare. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - tehnologia de + desenare folosită în notițele de tip schiță. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - pentru + funcționalitatea de tip hartă mentală. +* [Leaflet](https://github.com/Leaflet/Leaflet) - pentru randarea hărților + geografice. +* [Tabulator](https://github.com/olifolkerd/tabulator) - pentru tabele + interactive folosite în colecții. +* [FancyTree](https://github.com/mar10/fancytree) - bibliotecă pentru + vizualizare de tip arbore. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - bibliotecă de conectivitate + vizuală. Folosită în [hărți de tip + relație](https://triliumnext.github.io/Docs/Wiki/relation-map.html) și [hărți + de legături](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) -## 🤝 Support +## 🤝 Sprijiniți proiectul -Trilium is built and maintained with [hundreds of hours of -work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your -support keeps it open-source, improves features, and covers costs such as -hosting. +Trilium este construit și menținut prin efortul [a sute de ore de +muncă](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Sprijinul +dvs. permite să-l menținem open-source, să îmbunătățim funcționalitățile și să +acoperim costuri suplimentare precum găzduirea. Consider supporting the main developer ([eliandoran](https://github.com/eliandoran)) of the application via: diff --git a/docs/README-ru.md b/docs/README-ru.md index b51c333d81..4e87408087 100644 --- a/docs/README-ru.md +++ b/docs/README-ru.md @@ -1,59 +1,313 @@ # Trilium Notes -[English](../README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README-ru.md) | [Japanese](./README-ja.md) | [Italian](./README-it.md) | [Spanish](./README-es.md) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) -Trilium Screenshot +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. -## 🎁 Возможности +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: -* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) -* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, изображениями, [формулами](https://triliumnext.github.io/Docs/Wiki/text-notes#math-support) и разметкой markdown, имеет [автоформатирование](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) -* Редактирование [заметок с исходным кодом](https://triliumnext.github.io/Docs/Wiki/code-notes), включая подсветку синтаксиса -* Быстрая и простая [навигация между заметками](https://triliumnext.github.io/Docs/Wiki/note-navigation), полнотекстовый поиск и [выделение заметок](https://triliumnext.github.io/Docs/Wiki/note-hoisting) в отдельный блок -* Бесшовное [версионирование заметки](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* Специальные [атрибуты](https://triliumnext.github.io/Docs/Wiki/attributes) позволяют гибко организовать структуру, используются для поиска и продвинутого [скриптинга](https://triliumnext.github.io/Docs/Wiki/scripts) -* [Синхронизация](https://triliumnext.github.io/Docs/Wiki/synchronization) заметок со своим сервером -* Надёжное [шифрование](https://triliumnext.github.io/Docs/Wiki/protected-notes) с детализацией по каждой заметке -* [Карты связей](https://triliumnext.github.io/Docs/Wiki/relation-map) и [карты ссылок](https://triliumnext.github.io/Docs/Wiki/link-map) для визуализации их взяимосвязей -* [Скрипты](https://triliumnext.github.io/Docs/Wiki/scripts) - см. [продвинутые примеры](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -* Хорошо масштабируется, как по удобству использования, так и по производительности до 100000 заметок -* Оптимизированный [мобильный фронтенд](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) смартфонов и планшетов -* [Темная тема](https://triliumnext.github.io/Docs/Wiki/themes) -* Импорт и экпорт [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) и данных в [markdown](https://triliumnext.github.io/Docs/Wiki/markdown) формате -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) для удобного сохранения веб-контента +Trilium Screenshot -## 🏗 Сборки +## 📚 Documentation -Trilium предоставляется в виде десктопного приложения (Linux и Windows) или веб-приложения, размещенного на вашем сервере (Linux). Доступна сборка Mac OS, но она [не поддерживается](https://triliumnext.github.io/Docs/Wiki/faq#mac-os-support). +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** -* Если вы хотите использовать Trilium на десктопе, скачайте архив для своей платформы со страницы [релизов](https://github.com/TriliumNext/Trilium/releases/latest), распакуйте и запустите исполняемый файл ```trilium```. -* Если вы хотите установить Trilium на сервере, следуйте этой [инструкции](https://triliumnext.github.io/Docs/Wiki/server-installation). - * В данный момент поддерживаются (протестированы) последние версии браузеров Chrome и Firefox. +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository -## 📝 Документация +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -[Полный список страниц документации доступен в Wiki.](https://triliumnext.github.io/Docs/) +## 🎁 Features -Вы также можете ознакомиться с [шаблонами персональных баз знаний](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge), чтобы получить представление о том, как можно использовать Trilium. +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -## 💻 Участвуйте в разработке +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: -Или склонируйте на своё устройство и запустите +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): ```shell -npm install -npm run server:start +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start ``` -## 👏 Благодарности +### Documentation -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - лучший WYSIWYG редактор, очень активная и внимательная команда. -* [FancyTree](https://github.com/mar10/fancytree) - многофункциональная библиотека для создания древовидных структур. Вне конкуренции. Без него Trilium Notes не были бы таким. -* [CodeMirror](https://github.com/codemirror/CodeMirror) - редактор кода с поддержкой огромного количество языков. -* [jsPlumb](https://github.com/jsplumb/jsplumb) - библиотека для визуализации связей. Вне конкуренции. Используется в [картах связей](https://triliumnext.github.io/Docs/Wiki/relation-map) и [картах ссылок](https://triliumnext.github.io/Docs/Wiki/link-map). +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` -## 🔑 Лицензия +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` -Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии. +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From fcc22cc2125108a5229620d3b1c5ad426e5c1929 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 4 Oct 2025 16:11:14 +0200 Subject: [PATCH 006/201] Translated using Weblate (Romanian) Currently translated at 96.5% (111 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/ --- docs/README-ro.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/README-ro.md b/docs/README-ro.md index f255aa0e12..69a65a0451 100644 --- a/docs/README-ro.md +++ b/docs/README-ro.md @@ -302,18 +302,18 @@ muncă](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Sprijinu dvs. permite să-l menținem open-source, să îmbunătățim funcționalitățile și să acoperim costuri suplimentare precum găzduirea. -Consider supporting the main developer -([eliandoran](https://github.com/eliandoran)) of the application via: +Considerați sprijinirea dezvoltatorului principal al aplicației +([eliandoran](https://github.com/eliandoran)) prin intermediul: -- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [Sponsori GitHub](https://github.com/sponsors/eliandoran) - [PayPal](https://paypal.me/eliandoran) - [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) -## 🔑 License +## 🔑 Licență -Copyright 2017-2025 zadam, Elian Doran, and other contributors +Copyright 2017-2025 zadam, Elian Doran și alți contribuitori -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU Affero General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. +Acest program este liber: se poate redistribui și se poate modifica sub termenii +licenței GNU Affero General Public License publicată de către Free Software +Foundation, fie versiunea 3 a licenței sau (în funcție de preferință) orice +versiune ulterioară. From 984e8bbba0002903ca6613ff9cfd4f3bba9fb9af Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:12 +0200 Subject: [PATCH 007/201] Added translation using Weblate (md (generated) (md)) --- apps/client/src/translations/md/translation.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/client/src/translations/md/translation.json diff --git a/apps/client/src/translations/md/translation.json b/apps/client/src/translations/md/translation.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/apps/client/src/translations/md/translation.json @@ -0,0 +1 @@ +{} From cd100f37fec712d73de6a5377e5da8b428cd2137 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:33 +0200 Subject: [PATCH 008/201] Added translation using Weblate (md (generated) (md)) --- apps/server/src/assets/translations/md/server.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/server/src/assets/translations/md/server.json diff --git a/apps/server/src/assets/translations/md/server.json b/apps/server/src/assets/translations/md/server.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/apps/server/src/assets/translations/md/server.json @@ -0,0 +1 @@ +{} From dc7f4a6cf3783a7a92ad32eb663554ede37f2e93 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:35 +0200 Subject: [PATCH 009/201] Added translation using Weblate (Turkish) --- docs/README-tr.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-tr.md diff --git a/docs/README-tr.md b/docs/README-tr.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-tr.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 24a632056ad2c3fed6a751ce56b2996fb07974e6 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:36 +0200 Subject: [PATCH 010/201] Added translation using Weblate (Portuguese (Brazil)) --- docs/README-pt_BR.md | 313 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-pt_BR.md diff --git a/docs/README-pt_BR.md b/docs/README-pt_BR.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-pt_BR.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From dfddf044cf0869d67acbc109519985562d72385c Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:38 +0200 Subject: [PATCH 011/201] Added translation using Weblate (German) --- docs/README-de.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-de.md diff --git a/docs/README-de.md b/docs/README-de.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-de.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 1702ec56447ea05fcb077784249f7c80e849c269 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:40 +0200 Subject: [PATCH 012/201] Added translation using Weblate (Greek) --- docs/README-el.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-el.md diff --git a/docs/README-el.md b/docs/README-el.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-el.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From c3dd9865e7ec7b479a6fd92c41fd2ec306bf98fc Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:41 +0200 Subject: [PATCH 013/201] Added translation using Weblate (Ukrainian) --- docs/README-uk.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-uk.md diff --git a/docs/README-uk.md b/docs/README-uk.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-uk.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 718dffa672a67aab5a21ec84d87dd8717dc1681a Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:43 +0200 Subject: [PATCH 014/201] Added translation using Weblate (Catalan) --- docs/README-ca.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-ca.md diff --git a/docs/README-ca.md b/docs/README-ca.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-ca.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From e7315e7d35676e0c353625c9528d74384f40141f Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:44 +0200 Subject: [PATCH 015/201] Added translation using Weblate (Czech) --- docs/README-cs.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-cs.md diff --git a/docs/README-cs.md b/docs/README-cs.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-cs.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 37b63d4ea920770d1c7a4db9172a5f23037a5667 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:46 +0200 Subject: [PATCH 016/201] Added translation using Weblate (Portuguese) --- docs/README-pt.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-pt.md diff --git a/docs/README-pt.md b/docs/README-pt.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-pt.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 1bfc3d450f8fcb11ec2f48bd97179bd69fdadaac Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:47 +0200 Subject: [PATCH 017/201] Added translation using Weblate (Vietnamese) --- docs/README-vi.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-vi.md diff --git a/docs/README-vi.md b/docs/README-vi.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-vi.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From b16309d01ad5428b07383a24c561d250b8b76a1e Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:49 +0200 Subject: [PATCH 018/201] Added translation using Weblate (Croatian) --- docs/README-hr.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-hr.md diff --git a/docs/README-hr.md b/docs/README-hr.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-hr.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From a982fc326f810e84156fea4ac50d121ac7a94b61 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:50 +0200 Subject: [PATCH 019/201] Added translation using Weblate (Hungarian) --- docs/README-hu.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-hu.md diff --git a/docs/README-hu.md b/docs/README-hu.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-hu.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 99500bca8f546c48f60efb178963859d13444f7b Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:52 +0200 Subject: [PATCH 020/201] Added translation using Weblate (Polish) --- docs/README-pl.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-pl.md diff --git a/docs/README-pl.md b/docs/README-pl.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-pl.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 76a283ed77b3206b1b360fa70b5b884b64f9c613 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:53 +0200 Subject: [PATCH 021/201] Added translation using Weblate (Arabic) --- docs/README-ar.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-ar.md diff --git a/docs/README-ar.md b/docs/README-ar.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-ar.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From fafc4af2377f8ed2453118dff47481800d5ea5ce Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:55 +0200 Subject: [PATCH 022/201] Added translation using Weblate (Dutch) --- docs/README-nl.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-nl.md diff --git a/docs/README-nl.md b/docs/README-nl.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-nl.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From ce0b39765e3178c8b58b50e56996e553ee3673d5 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:56 +0200 Subject: [PATCH 023/201] Added translation using Weblate (French) --- docs/README-fr.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-fr.md diff --git a/docs/README-fr.md b/docs/README-fr.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-fr.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 27415b4e160fd36991c098d23b9569af6ed96239 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:58 +0200 Subject: [PATCH 024/201] Added translation using Weblate (Persian) --- docs/README-fa.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-fa.md diff --git a/docs/README-fa.md b/docs/README-fa.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-fa.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 8c687de3c618c6ca8a5d8592962245864c229352 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:45:59 +0200 Subject: [PATCH 025/201] Added translation using Weblate (Finnish) --- docs/README-fi.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-fi.md diff --git a/docs/README-fi.md b/docs/README-fi.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-fi.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 2a40ffd16480c065e565ad14f689fccbf15865f1 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:46:01 +0200 Subject: [PATCH 026/201] Added translation using Weblate (Serbian) --- docs/README-sr.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-sr.md diff --git a/docs/README-sr.md b/docs/README-sr.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-sr.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 5d0b6f9fadac823a9850c761179e367bc8309214 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:46:02 +0200 Subject: [PATCH 027/201] Added translation using Weblate (Korean) --- docs/README-ko.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-ko.md diff --git a/docs/README-ko.md b/docs/README-ko.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-ko.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 15d00b61dd1aee442481557feb953bb87f022aeb Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:46:04 +0200 Subject: [PATCH 028/201] Added translation using Weblate (Slovenian) --- docs/README-sl.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-sl.md diff --git a/docs/README-sl.md b/docs/README-sl.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-sl.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From e592a377992028e94cb68545844782591dd456ed Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:46:06 +0200 Subject: [PATCH 029/201] =?UTF-8?q?Added=20translation=20using=20Weblate?= =?UTF-8?q?=20(Norwegian=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README-nb_NO.md | 313 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-nb_NO.md diff --git a/docs/README-nb_NO.md b/docs/README-nb_NO.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-nb_NO.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 5da46a167865af6befd23257d156d76dbbb0c3d9 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sun, 5 Oct 2025 02:46:07 +0200 Subject: [PATCH 030/201] Added translation using Weblate (md (generated) (md)) --- docs/README-md.md | 313 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 docs/README-md.md diff --git a/docs/README-md.md b/docs/README-md.md new file mode 100644 index 0000000000..4e87408087 --- /dev/null +++ b/docs/README-md.md @@ -0,0 +1,313 @@ +# Trilium Notes + +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) +![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) +![GitHub Downloads (all assets, all +releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) +[![Translation +status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) + +[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | +[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) +| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | +[Spanish](./docs/README-es.md) + +Trilium Notes is a free and open-source, cross-platform hierarchical note taking +application with focus on building large personal knowledge bases. + +See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for +quick overview: + +Trilium Screenshot + +## 📚 Documentation + +**Visit our comprehensive documentation at +[docs.triliumnotes.org](https://docs.triliumnotes.org/)** + +Our documentation is available in multiple formats: +- **Online Documentation**: Browse the full documentation at + [docs.triliumnotes.org](https://docs.triliumnotes.org/) +- **In-App Help**: Press `F1` within Trilium to access the same documentation + directly in the application +- **GitHub**: Navigate through the [User + Guide](./docs/User%20Guide/User%20Guide/) in this repository + +### Quick Links +- [Getting Started Guide](https://docs.triliumnotes.org/) +- [Installation + Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +- [Docker + Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [Upgrading + TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [Basic Concepts and + Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [Patterns of Personal Knowledge + Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + +## 🎁 Features + +* Notes can be arranged into arbitrarily deep tree. Single note can be placed + into multiple places in the tree (see + [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Rich WYSIWYG note editor including e.g. tables, images and + [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown + [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Support for editing [notes with source + code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax + highlighting +* Fast and easy [navigation between + notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text + search and [note + hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* Seamless [note + versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be + used for note organization, querying and advanced + [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* UI available in English, German, Spanish, French, Romanian, and Chinese + (simplified and traditional) +* Direct [OpenID and TOTP + integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + for more secure login +* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) + with self-hosted sync server + * there's a [3rd party service for hosting synchronisation + server](https://trilium.cc/paid-hosting) +* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes + to public internet +* Strong [note + encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with + per-note granularity +* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type + "canvas") +* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and + [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing + notes and their relations +* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) +* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with + location pins and GPX tracks +* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced + showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation +* Scales well in both usability and performance upwards of 100 000 notes +* Touch optimized [mobile + frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for + smartphones and tablets +* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support + for user themes +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and + [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy + saving of web content +* Customizable UI (sidebar buttons, user-defined widgets, ...) +* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along + with a [Grafana + Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) + +✨ Check out the following third-party resources/communities for more TriliumNext +related goodies: + +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party + themes, scripts, plugins and more. +- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. + +## ❓Why TriliumNext? + +The original Trilium developer ([Zadam](https://github.com/zadam)) has +graciously given the Trilium repository to the community project which resides +at https://github.com/TriliumNext + +### ⬆️Migrating from Zadam/Trilium? + +There are no special migration steps to migrate from a zadam/Trilium instance to +a TriliumNext/Trilium instance. Simply [install +TriliumNext/Trilium](#-installation) as usual and it will use your existing +database. + +Versions up to and including +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are +compatible with the latest zadam/trilium version of +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later +versions of TriliumNext/Trilium have their sync versions incremented which +prevents direct migration. + +## 💬 Discuss with us + +Feel free to join our official conversations. We would love to hear what +features, suggestions, or issues you may have! + +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous + discussions.) + - The `General` Matrix room is also bridged to + [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For + asynchronous discussions.) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug + reports and feature requests.) + +## 🏗 Installation + +### Windows / MacOS + +Download the binary release for your platform from the [latest release +page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package +and run the `trilium` executable. + +### Linux + +If your distribution is listed in the table below, use your distribution's +package. + +[![Packaging +status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) + +You may also download the binary release for your platform from the [latest +release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the +package and run the `trilium` executable. + +TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. + +### Browser (any OS) + +If you use a server installation (see below), you can directly access the web +interface (which is almost identical to the desktop app). + +Currently only the latest versions of Chrome & Firefox are supported (and +tested). + +### Mobile + +To use TriliumNext on a mobile device, you can use a mobile web browser to +access the mobile interface of a server installation (see below). + +See issue https://github.com/TriliumNext/Trilium/issues/4962 for more +information on mobile app support. + +If you prefer a native Android app, you can use +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). +Report bugs and missing features at [their +repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to +disable automatic updates on your server installation (see below) when using +TriliumDroid since the sync version must match between Trilium and TriliumDroid. + +### Server + +To install TriliumNext on your own server (including via Docker from +[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server +installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). + + +## 💻 Contribute + +### Translations + +If you are a native speaker, help us translate Trilium by heading over to our +[Weblate page](https://hosted.weblate.org/engage/trilium/). + +Here's the language coverage we have so far: + +[![Translation +status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) + +### Code + +Download the repository, install dependencies using `pnpm` and then run the +server (available at http://localhost:8080): +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run server:start +``` + +### Documentation + +Download the repository, install dependencies using `pnpm` and then run the +environment required to edit the documentation: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm edit-docs:edit-docs +``` + +### Building the Executable +Download the repository, install dependencies using `pnpm` and then build the +desktop app for Windows: +```shell +git clone https://github.com/TriliumNext/Trilium.git +cd Trilium +pnpm install +pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 +``` + +For more details, see the [development +docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). + +### Developer Documentation + +Please view the [documentation +guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +for details. If you have more questions, feel free to reach out via the links +described in the "Discuss with us" section above. + +## 👏 Shoutouts + +* [zadam](https://github.com/zadam) for the original concept and implementation + of the application. +* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [nriver](https://github.com/nriver) for his work on internationalization. +* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. +* [antoniotejada](https://github.com/nriver) for the original syntax highlight + widget. +* [Dosu](https://dosu.dev/) for providing us with the automated responses to + GitHub issues and discussions. +* [Tabler Icons](https://tabler.io/icons) for the system tray icons. + +Trilium would not be possible without the technologies behind it: + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind + text notes. We are grateful for being offered a set of the premium features. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with + support for huge amount of languages. +* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite + whiteboard used in Canvas notes. +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the + mind map functionality. +* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical + maps. +* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive + table used in collections. +* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library + without real competition. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. + Used in [relation + maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link + maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + +## 🤝 Support + +Trilium is built and maintained with [hundreds of hours of +work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your +support keeps it open-source, improves features, and covers costs such as +hosting. + +Consider supporting the main developer +([eliandoran](https://github.com/eliandoran)) of the application via: + +- [GitHub Sponsors](https://github.com/sponsors/eliandoran) +- [PayPal](https://paypal.me/eliandoran) +- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) + +## 🔑 License + +Copyright 2017-2025 zadam, Elian Doran, and other contributors + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by the Free +Software Foundation, either version 3 of the License, or (at your option) any +later version. From 28240d549d75277bb9640195ffa6c167573fea5f Mon Sep 17 00:00:00 2001 From: green Date: Sun, 5 Oct 2025 16:49:55 +0200 Subject: [PATCH 031/201] Translated using Weblate (Japanese) Currently translated at 100.0% (1605 of 1605 strings) Translation: Trilium Notes/Client Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/ --- apps/client/src/translations/ja/translation.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index 1cb33b0806..a5cc74b501 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -550,7 +550,7 @@ "beta-feature": "Beta", "ai-chat": "AI チャット", "task-list": "タスクリスト", - "new-feature": "新しい", + "new-feature": "New", "collections": "コレクション" }, "edited_notes": { @@ -767,7 +767,7 @@ "placeholder": "ノート名で検索", "label": "祖先", "depth_label": "深さ", - "depth_doesnt_matter": "関係ない", + "depth_doesnt_matter": "関係なし", "depth_eq": "ちょうど {{count}} つ下の階層", "direct_children": "直接の子", "depth_gt": "{{count}} より下の階層", @@ -830,7 +830,7 @@ "max_width_label": "最大コンテンツ幅", "max_width_unit": "ピクセル", "apply_changes_description": "コンテンツ幅の変更を適用するには、クリックしてください", - "reload_description": "外観オプションからの変更" + "reload_description": "外観設定から変更" }, "theme": { "title": "アプリのテーマ", @@ -899,14 +899,14 @@ "bg_color": "背景色付きテキスト", "visibility_title": "ハイライトリスト表示", "visibility_description": "#hideHighlightWidget ラベルを追加することで、ノートごとにハイライトウィジェットを非表示にできます。", - "shortcut_info": "オプション -> ショートカット('右ペイン切り替え')で、右ペイン(ハイライトを含む)を素早く切り替えるキーボードショートカットを設定できます。" + "shortcut_info": "設定 -> ショートカット(右ペイン切り替え)で、右ペイン(ハイライトを含む)を素早く切り替えるキーボードショートカットを設定できます。" }, "table_of_contents": { "title": "目次", "description": "ノートに定義された数以上の見出しがある場合、テキストノートに目次が表示されます。この数はカスタマイズできます:", "unit": "見出し", - "disable_info": "このオプションに非常に大きな数値を設定することで、目次を効果的に無効にすることもできる。", - "shortcut_info": "オプション -> ショートカット('右ペイン切り替え')で、右ペイン(目次を含む)を素早く切り替えるキーボードショートカットを設定できます。" + "disable_info": "このオプションに非常に大きな数値を設定することで、目次を効果的に無効にすることもできます。", + "shortcut_info": "設定 -> ショートカット(右ペイン切り替え)で、右ペイン(目次を含む)を素早く切り替えるキーボードショートカットを設定できます。" }, "toc": { "table_of_contents": "目次", @@ -1073,7 +1073,7 @@ "read_only": "エディターは読み取り専用モードです。テキストとコードノートのみ機能します。", "auto_read_only_disabled": "テキスト/コードノートは、サイズが大きすぎる場合、自動的に読み取りモードに設定されます。このラベルをノートに追加することで、ノートごとにこの動作を無効にすることができます", "app_css": "Trilium アプリケーションに読み込まれ、Trilium の外観を変更するために使用できる CSS ノートをマークします。", - "app_theme": "Trilium のフルテーマである CSS ノートをマークし、Trilium オプションで利用できるようにします。", + "app_theme": "Trilium のフルテーマである CSS ノートをマークし、Trilium の設定で利用できるようにします。", "app_theme_base": "「next」、「next-light」、または「next-dark」に設定すると、従来のテーマではなく、対応する TriliumNext テーマ (auto、light、または dark) がカスタム テーマのベースとして使用されます。", "css_class": "このラベルの値は、ツリー内の特定のノートを表すノードにCSSクラスとして追加されます。これは高度なテーマ設定に役立ちます。テンプレートノートで使用できます。", "icon_class": "このラベルの値は、ツリー上のアイコンにCSSクラスとして追加され、ツリー内のノートを視覚的に区別するのに役立ちます。例えば、bx bx-home のように、アイコンは boxicons から取得されます。テンプレートノートで使用できます。", @@ -1275,7 +1275,7 @@ "editor_type": { "label": "書式設定ツールバー", "floating": { - "description": "編集ツールがカーソル付近に表示されます;", + "description": "編集ツールがカーソル付近に表示されます。", "title": "フローティング" }, "fixed": { From 38a4a3e7b654e15589a7e14a90e83432835fed35 Mon Sep 17 00:00:00 2001 From: green Date: Sun, 5 Oct 2025 15:36:45 +0200 Subject: [PATCH 032/201] Translated using Weblate (Japanese) Currently translated at 100.0% (381 of 381 strings) Translation: Trilium Notes/Server Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/ --- apps/server/src/assets/translations/ja/server.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server/src/assets/translations/ja/server.json b/apps/server/src/assets/translations/ja/server.json index fcdde2f7ea..cdf149cdca 100644 --- a/apps/server/src/assets/translations/ja/server.json +++ b/apps/server/src/assets/translations/ja/server.json @@ -338,7 +338,7 @@ "sync-status-title": "同期状態", "settings-title": "設定", "llm-chat-title": "ノートとチャット", - "options-title": "オプション", + "options-title": "設定", "multi-factor-authentication-title": "多要素認証", "etapi-title": "ETAPI", "visible-launchers-title": "可視化されたランチャー", From 2447a6fc8db1442b79ea5a7adcfbaf004e47eb13 Mon Sep 17 00:00:00 2001 From: Francis C Date: Sun, 5 Oct 2025 13:40:48 +0200 Subject: [PATCH 033/201] Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 77.3% (89 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hant/ --- docs/README-ZH_TW.md | 283 +++++++++++++++++-------------------------- 1 file changed, 110 insertions(+), 173 deletions(-) diff --git a/docs/README-ZH_TW.md b/docs/README-ZH_TW.md index 4e87408087..6b85e83966 100644 --- a/docs/README-ZH_TW.md +++ b/docs/README-ZH_TW.md @@ -9,183 +9,134 @@ releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | -[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) -| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | -[Spanish](./docs/README-es.md) +[英文](./README.md) | [簡體中文](./docs/README-ZH_CN.md) | +[正體中文](./docs/README-ZH_TW.md) | [俄文](./docs/README-ru.md) | +[日文](./docs/README-ja.md) | [義大利文](./docs/README-it.md) | +[西班牙文](./docs/README-es.md) -Trilium Notes is a free and open-source, cross-platform hierarchical note taking -application with focus on building large personal knowledge bases. +Trilium Notes 是一款免費且開源、跨平台的階層式筆記應用程式,專注於建立大型個人知識庫。 -See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for -quick overview: +想快速了解,請查看[螢幕截圖](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): Trilium Screenshot -## 📚 Documentation +## 📚 文件 -**Visit our comprehensive documentation at -[docs.triliumnotes.org](https://docs.triliumnotes.org/)** +**可以在 [docs.triliumnotes.org](https://docs.triliumnotes.org/) 查看完整使用說明** -Our documentation is available in multiple formats: -- **Online Documentation**: Browse the full documentation at - [docs.triliumnotes.org](https://docs.triliumnotes.org/) +我們的使用說明包含多種格式: +- **線上文件**:可於 [docs.triliumnotes.org](https://docs.triliumnotes.org/) 查看完整使用說明 - **In-App Help**: Press `F1` within Trilium to access the same documentation directly in the application - **GitHub**: Navigate through the [User Guide](./docs/User%20Guide/User%20Guide/) in this repository -### Quick Links -- [Getting Started Guide](https://docs.triliumnotes.org/) -- [Installation - Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +### 快速連結 +- [上手指南](https://docs.triliumnotes.org/) +- [安裝說明](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) - [Docker - Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) -- [Upgrading + 設定](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [升級 TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) -- [Basic Concepts and - Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [基礎觀念與功能](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) - [Patterns of Personal Knowledge Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## 🎁 Features +## 🎁 功能 -* Notes can be arranged into arbitrarily deep tree. Single note can be placed - into multiple places in the tree (see - [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) -* Rich WYSIWYG note editor including e.g. tables, images and - [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown - [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) -* Support for editing [notes with source - code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax - highlighting -* Fast and easy [navigation between - notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text - search and [note - hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) -* Seamless [note - versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be - used for note organization, querying and advanced - [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) -* UI available in English, German, Spanish, French, Romanian, and Chinese - (simplified and traditional) -* Direct [OpenID and TOTP - integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) - for more secure login -* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) - with self-hosted sync server - * there's a [3rd party service for hosting synchronisation - server](https://trilium.cc/paid-hosting) -* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes - to public internet -* Strong [note - encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with - per-note granularity -* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type - "canvas") -* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and - [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing - notes and their relations -* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) -* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with - location pins and GPX tracks -* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced - showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation -* Scales well in both usability and performance upwards of 100 000 notes -* Touch optimized [mobile - frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for - smartphones and tablets -* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support - for user themes -* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and - [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy - saving of web content -* Customizable UI (sidebar buttons, user-defined widgets, ...) -* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along - with a [Grafana - Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) +* 筆記可組織成任意深度的樹狀結構。單一筆記可放在樹中的多個位置(參見[筆記克隆](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* 豐富的所見即所得(WYSIWYG)筆記編輯器,支援表格、圖片與[數學公式](https://triliumnext.github.io/Docs/Wiki/text-notes),並具備 + Markdown + 的[自動格式化](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* 支援編輯[程式碼筆記](https://triliumnext.github.io/Docs/Wiki/code-notes),包含語法高亮 +* 快速、輕鬆地在筆記間[導航](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文搜尋,以及[筆記聚焦(hoisting)](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* 無縫的[筆記版本管理](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* 筆記[屬性](https://triliumnext.github.io/Docs/Wiki/attributes)可用於筆記的組織、查詢與進階[腳本](https://triliumnext.github.io/Docs/Wiki/scripts) +* 介面提供英文、德文、西班牙文、法文、羅馬尼亞文與中文(簡體與正體) +* 直接[整合 OpenID 與 + TOTP](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + 以實現更安全的登入 +* 與自架的同步伺服器進行[同步](https://triliumnext.github.io/Docs/Wiki/synchronization) + * 另有[第三方同步伺服器託管服務](https://trilium.cc/paid-hosting) +* 將筆記[分享](https://triliumnext.github.io/Docs/Wiki/sharing)(公開發布)到網際網路 +* 以每則筆記為粒度的強大[筆記加密](https://triliumnext.github.io/Docs/Wiki/protected-notes) +* 手繪/示意圖:基於 [Excalidraw](https://excalidraw.com/)(筆記類型為「canvas」) +* 用於視覺化筆記及其關係的[關聯圖](https://triliumnext.github.io/Docs/Wiki/relation-map)與[連結圖](https://triliumnext.github.io/Docs/Wiki/link-map) +* 心智圖:基於 [Mind Elixir](https://docs.mind-elixir.com/) +* 具有定位釘與 GPX 軌跡的[地圖](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) +* [腳本](https://triliumnext.github.io/Docs/Wiki/scripts)——參見[進階展示](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* 用於自動化的 [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) +* 在可用性與效能上均可良好擴展,支援超過十萬筆筆記 +* 為手機與平板最佳化的[行動前端](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) +* 內建[深色主題](https://triliumnext.github.io/Docs/Wiki/themes),並支援自訂主題 +* [Evernote 匯入](https://triliumnext.github.io/Docs/Wiki/evernote-import)與 + [Markdown 匯入與匯出](https://triliumnext.github.io/Docs/Wiki/markdown) +* 用於快速保存網頁內容的 [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) +* 可自訂的 UI(側邊欄按鈕、使用者自訂小工具等) +* [度量指標(Metrics)](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md),並附有 + [Grafana + 儀表板](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -✨ Check out the following third-party resources/communities for more TriliumNext -related goodies: +✨ 想要更多 Trilium Notes 的主題、腳本、外掛與資源,亦可參考以下第三方資源 / 社群: -- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party - themes, scripts, plugins and more. -- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. +- [awesome-trilium](https://github.com/Nriver/awesome-trilium)(第三方主題、腳本、外掛與更多)。 +- [TriliumRocks!](https://trilium.rocks/)(教學、指南等等)。 -## ❓Why TriliumNext? +## ❓為什麼是 TriliumNext? The original Trilium developer ([Zadam](https://github.com/zadam)) has graciously given the Trilium repository to the community project which resides at https://github.com/TriliumNext -### ⬆️Migrating from Zadam/Trilium? +### ⬆️從 Zadam/Trilium 遷移? -There are no special migration steps to migrate from a zadam/Trilium instance to -a TriliumNext/Trilium instance. Simply [install -TriliumNext/Trilium](#-installation) as usual and it will use your existing -database. +從既有的 zadam/Trilium 例項遷移到 TriliumNext/Notes 不需要特別的遷移步驟。只要照一般方式[安裝 +TriliumNext/Notes](#-installation),它就會直接使用你現有的資料庫。 -Versions up to and including -[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are -compatible with the latest zadam/trilium version of -[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later -versions of TriliumNext/Trilium have their sync versions incremented which -prevents direct migration. +版本最高至 [v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) 與 +zadam/trilium 最新版本 +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7) 相容。之後的 +TriliumNext 版本已提升同步版本號(與上述不再相容)。 -## 💬 Discuss with us +## 💬 與我們交流 -Feel free to join our official conversations. We would love to hear what -features, suggestions, or issues you may have! +歡迎加入官方社群。我們很樂意聽到你對功能、建議或問題的想法! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous - discussions.) - - The `General` Matrix room is also bridged to - [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For - asynchronous discussions.) -- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug - reports and feature requests.) +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org)(同步討論) + - `General` Matrix 房間也橋接到 [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [GitHub + Discussions](https://github.com/TriliumNext/Trilium/discussions)(非同步討論。) +- [GitHub Issues](https://github.com/TriliumNext/Trilium/issues)(回報錯誤與提出功能需求。) -## 🏗 Installation +## 🏗 安裝 ### Windows / MacOS -Download the binary release for your platform from the [latest release -page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package -and run the `trilium` executable. +從[最新釋出頁面](https://github.com/TriliumNext/Trilium/releases/latest)下載您平台的二進位檔,解壓縮後執行 +`trilium` 可執行檔。 ### Linux -If your distribution is listed in the table below, use your distribution's -package. +如果您的發行版如下表所列,請使用該發行版的套件。 -[![Packaging -status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) +[![打包狀態](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -You may also download the binary release for your platform from the [latest -release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the -package and run the `trilium` executable. +您也可以從[最新釋出頁面](https://github.com/TriliumNext/Trilium/releases/latest)下載對應平台的二進位檔,解壓縮後執行 +`trilium` 可執行檔。 -TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. +TriliumNext 也提供 Flatpak,惟尚未發佈到 FlatHub。 -### Browser (any OS) +### 瀏覽器(任何作業系統) -If you use a server installation (see below), you can directly access the web -interface (which is almost identical to the desktop app). +若您有(如下所述的)伺服器安裝,便可直接存取網頁介面(其與桌面應用幾乎相同)。 -Currently only the latest versions of Chrome & Firefox are supported (and -tested). +目前僅支援(並實測)最新版的 Chrome 與 Firefox。 -### Mobile +### 行動裝置 -To use TriliumNext on a mobile device, you can use a mobile web browser to -access the mobile interface of a server installation (see below). +若要在行動裝置上使用 TriliumNext,你可以透過行動瀏覽器存取伺服器安裝的行動版介面(見下)。 -See issue https://github.com/TriliumNext/Trilium/issues/4962 for more -information on mobile app support. +更多關於行動應用支援的資訊,請見議題:https://github.com/TriliumNext/Trilium/issues/4962。 If you prefer a native Android app, you can use [TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). @@ -194,29 +145,27 @@ repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to disable automatic updates on your server installation (see below) when using TriliumDroid since the sync version must match between Trilium and TriliumDroid. -### Server +### 伺服器 -To install TriliumNext on your own server (including via Docker from -[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server -installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). +若要在您自己的伺服器上安裝 TriliumNext(包括從 [Docker +Hub](https://hub.docker.com/r/triliumnext/trilium) 使用 Docker +部署),請遵循[伺服器安裝文件](https://triliumnext.github.io/Docs/Wiki/server-installation)。 -## 💻 Contribute +## 💻 貢獻 -### Translations +### 翻譯 -If you are a native speaker, help us translate Trilium by heading over to our -[Weblate page](https://hosted.weblate.org/engage/trilium/). +如果您是母語人士,歡迎前往我們的 [Weblate 頁面](https://hosted.weblate.org/engage/trilium/)協助翻譯 +Trilium。 -Here's the language coverage we have so far: +以下是目前的語言覆蓋狀態: -[![Translation -status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) +[![翻譯狀態](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -### Code +### 程式碼 -Download the repository, install dependencies using `pnpm` and then run the -server (available at http://localhost:8080): +下載儲存庫,使用 `pnpm` 安裝相依套件,接著啟動伺服器(將於 http://localhost:8080 提供服務): ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -224,10 +173,9 @@ pnpm install pnpm run server:start ``` -### Documentation +### 文件 -Download the repository, install dependencies using `pnpm` and then run the -environment required to edit the documentation: +下載儲存庫,使用 `pnpm` 安裝相依套件,接著啟動編輯文件所需的環境: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -235,9 +183,8 @@ pnpm install pnpm edit-docs:edit-docs ``` -### Building the Executable -Download the repository, install dependencies using `pnpm` and then build the -desktop app for Windows: +### 建置桌面可執行檔 +下載儲存庫,使用 `pnpm` 安裝相依套件,然後為 Windows 建置桌面應用: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -245,17 +192,13 @@ pnpm install pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` -For more details, see the [development -docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). +更多細節請參見[開發者文件](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide)。 -### Developer Documentation +### 開發者文件 -Please view the [documentation -guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) -for details. If you have more questions, feel free to reach out via the links -described in the "Discuss with us" section above. +請參閱[環境設定指南](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md)。若有更多疑問,歡迎透過上方「與我們交流」章節所列連結與我們聯繫。 -## 👏 Shoutouts +## 👏 鳴謝 * [zadam](https://github.com/zadam) for the original concept and implementation of the application. @@ -272,8 +215,7 @@ Trilium would not be possible without the technologies behind it: * [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind text notes. We are grateful for being offered a set of the premium features. -* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with - support for huge amount of languages. +* [CodeMirror](https://github.com/codemirror/CodeMirror) —— 支援大量語言的程式碼編輯器。 * [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite whiteboard used in Canvas notes. * [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the @@ -282,14 +224,11 @@ Trilium would not be possible without the technologies behind it: maps. * [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive table used in collections. -* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library - without real competition. -* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. - Used in [relation - maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link - maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) +* [FancyTree](https://github.com/mar10/fancytree) —— 功能非常豐富的樹狀元件,幾乎沒有對手。 +* [jsPlumb](https://github.com/jsplumb/jsplumb) —— + 視覺連線函式庫。用於[關聯圖](https://triliumnext.github.io/Docs/Wiki/relation-map.html)與[連結圖](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) -## 🤝 Support +## 🤝 支援我們 Trilium is built and maintained with [hundreds of hours of work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your @@ -303,11 +242,9 @@ Consider supporting the main developer - [PayPal](https://paypal.me/eliandoran) - [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) -## 🔑 License +## 🔑 授權條款 -Copyright 2017-2025 zadam, Elian Doran, and other contributors +Copyright 2017–2025 zadam、Elian Doran 與其他貢獻者 -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU Affero General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. +本程式係自由軟體:您可以在自由軟體基金會(Free Software Foundation)所發佈的 GNU Affero 通用公眾授權條款(GNU +AGPL)第 3 版或(由你選擇)任何後續版本之條款下重新散布或修改本程式。 From 75f7986e36bc3d1cf18b1befd350cb969e23cf7d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 5 Oct 2025 20:17:58 +0200 Subject: [PATCH 034/201] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 63.4% (73 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/zh_Hans/ --- docs/README-ZH_CN.md | 244 +++++++++++++++++-------------------------- 1 file changed, 97 insertions(+), 147 deletions(-) diff --git a/docs/README-ZH_CN.md b/docs/README-ZH_CN.md index 4e87408087..2d1099d10a 100644 --- a/docs/README-ZH_CN.md +++ b/docs/README-ZH_CN.md @@ -9,20 +9,18 @@ releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | -[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) -| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | -[Spanish](./docs/README-es.md) +[英文](./README.md) | [简体中文](./docs/README-ZH_CN.md) | +[正体中文](./docs/README-ZH_TW.md) | [俄文](./docs/README-ru.md) | +[日文](./docs/README-ja.md) | [意大利文](./docs/README-it.md) | +[西班牙文](./docs/README-es.md) -Trilium Notes is a free and open-source, cross-platform hierarchical note taking -application with focus on building large personal knowledge bases. +Trilium Notes 是一款免费且开源、跨平台的阶层式笔记应用程序,专注于建立大型个人知识库。 -See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for -quick overview: +想快速了解,请查看[screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour): Trilium Screenshot -## 📚 Documentation +## 📖 文件 **Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)** @@ -48,175 +46,132 @@ Our documentation is available in multiple formats: - [Patterns of Personal Knowledge Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## 🎁 Features +## 🎁 功能 -* Notes can be arranged into arbitrarily deep tree. Single note can be placed - into multiple places in the tree (see - [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) -* Rich WYSIWYG note editor including e.g. tables, images and - [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown - [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) -* Support for editing [notes with source - code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax - highlighting -* Fast and easy [navigation between - notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text - search and [note - hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) -* Seamless [note - versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be - used for note organization, querying and advanced - [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) -* UI available in English, German, Spanish, French, Romanian, and Chinese - (simplified and traditional) -* Direct [OpenID and TOTP - integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) - for more secure login -* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) - with self-hosted sync server - * there's a [3rd party service for hosting synchronisation +* 笔记可组织成任意深度的树形结构。单一笔记可放在树中的多个位置(参见 + [笔记复制/克隆](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* 丰富的所见即所得(WYSIWYG)笔记编辑器,支持表格、图片与[数学公式](https://triliumnext.github.io/Docs/Wiki/text-notes),并具备 + Markdown + 的[自动格式](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* 支持编辑[程序代码笔记](https://triliumnext.github.io/Docs/Wiki/code-notes), ,包含语法高亮 +* 快速、轻松地在笔记间[导航](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文搜索,以及[笔记聚焦(hoisting)](https://triliumnext.github.io/Docs/Wiki/note-hoisting) +* 无缝的[笔记版本管理](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* 笔记[属性](https://triliumnext.github.io/Docs/Wiki/attributes)可用于笔记的组织、查询与高级[脚本](https://triliumnext.github.io/Docs/Wiki/scripts) +* 接口提供英文、德文、西班牙文、法文、罗马尼亚文与中文(简体与正体) +* 直接整合[OpenID 与 + TOTP](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) + 以实现更安全的登录 +* 与自架的同步服务器进行[同步](https://triliumnext.github.io/Docs/Wiki/synchronization) + * 另有[3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting) -* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes - to public internet -* Strong [note - encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with - per-note granularity -* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type - "canvas") -* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and - [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing - notes and their relations -* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) -* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with - location pins and GPX tracks -* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced - showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation -* Scales well in both usability and performance upwards of 100 000 notes -* Touch optimized [mobile - frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for - smartphones and tablets -* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support - for user themes -* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and - [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy - saving of web content -* Customizable UI (sidebar buttons, user-defined widgets, ...) -* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along - with a [Grafana - Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) +* 将笔记[分享](https://triliumnext.github.io/Docs/Wiki/sharing)(公开发布)到互联网 +* 以每则笔记为粒度的强大 [笔记加密](https://triliumnext.github.io/Docs/Wiki/protected-notes) +* 手绘/示意图:基于 [Excalidraw](https://excalidraw.com/) (笔记类型为「canvas」) +* 用于可视化笔记及其关系的[关系图](https://triliumnext.github.io/Docs/Wiki/relation-map)与[链接图](https://triliumnext.github.io/Docs/Wiki/link-map) +* 思维导图:基于[Mind Elixir](https://docs.mind-elixir.com/) +* 具有定位钉与 GPX 轨迹的[地图](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) +* [脚本](https://triliumnext.github.io/Docs/Wiki/scripts) - 参见 + [高级展示](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* 用于自动化的 [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) +* 在可用性与效能上均可良好扩展,支持超过 100,000 笔笔记 +* 为手机与平板优化的[移动前端](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) +* 内置[深色主题](https://triliumnext.github.io/Docs/Wiki/themes) +* [Evernote 导入](https://triliumnext.github.io/Docs/Wiki/evernote-import)与 + [Markdown 导入与导出](https://triliumnext.github.io/Docs/Wiki/markdown) +* 用于快速保存网页内容的 [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) +* 可自定义的 UI(侧边栏按钮、用户自定义小组件等) +* [度量指标(Metrics)](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md),并附有 + [Grafana + 仪表板](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -✨ Check out the following third-party resources/communities for more TriliumNext -related goodies: +✨ 想要更多 TriliumNext 的主题、脚本、外挂与资源,亦可参考以下第三方资源/社群: -- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party - themes, scripts, plugins and more. -- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) (第三方主题、脚本、外挂与更多)。 +- [TriliumRocks!](https://trilium.rocks/) (教学、指南等等)。 -## ❓Why TriliumNext? +## ⚠️ 为什么是 TriliumNext? The original Trilium developer ([Zadam](https://github.com/zadam)) has graciously given the Trilium repository to the community project which resides at https://github.com/TriliumNext -### ⬆️Migrating from Zadam/Trilium? +### ⬆️ 从 Trilium 迁移? -There are no special migration steps to migrate from a zadam/Trilium instance to -a TriliumNext/Trilium instance. Simply [install -TriliumNext/Trilium](#-installation) as usual and it will use your existing -database. +从既有的 zadam/Trilium 例项迁移到 TriliumNext/Notes 不需要特别的迁移步骤。只要[照一般方式安装 +TriliumNext/Notes](#-installation)(#-安装),它就会直接使用你现有的数据库。 -Versions up to and including -[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are -compatible with the latest zadam/trilium version of -[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later -versions of TriliumNext/Trilium have their sync versions incremented which -prevents direct migration. +版本至多至 [v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) 与 +zadam/trilium 最新版本 +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7)兼容。之后的 +TriliumNext 版本已提升同步版本号(与上述不再兼容)。 -## 💬 Discuss with us +## 💬 与我们交流 -Feel free to join our official conversations. We would love to hear what -features, suggestions, or issues you may have! +欢迎加入官方社群。我们很乐意听到你对功能、建议或问题的想法! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous - discussions.) - - The `General` Matrix room is also bridged to - [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For - asynchronous discussions.) -- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug - reports and feature requests.) +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org)(同步讨论) + - `General` Matrix 房间也桥接到 [XMPP](xmpp:discuss@trilium.thisgreat.party?join) +- [GitHub + Discussions](https://github.com/TriliumNext/Trilium/discussions)(异步讨论)。 +- [GitHub Issues](https://github.com/TriliumNext/Trilium/issues)(回报错误与提出功能需求)。 -## 🏗 Installation +## 🏗 安装 -### Windows / MacOS +### Windows / macOS -Download the binary release for your platform from the [latest release -page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package -and run the `trilium` executable. +从[最新释出页面](https://github.com/TriliumNext/Trilium/releases/latest)下载你平台的二进制文件,解压缩后执行 +`trilium` 可执行文件。 ### Linux -If your distribution is listed in the table below, use your distribution's -package. +如果你的发行版如下表所列,请使用该发行版的套件。 [![Packaging status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -You may also download the binary release for your platform from the [latest -release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the -package and run the `trilium` executable. +你也可以从[最新释出页面](https://github.com/TriliumNext/Trilium/releases/latest)下载对应平台的二进制文件,解压缩后执行 +`trilium` 可执行文件。 -TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. +TriliumNext 也提供 Flatpak,惟尚未发布到 FlatHub。 -### Browser (any OS) +### 查看器(任何操作系统) -If you use a server installation (see below), you can directly access the web -interface (which is almost identical to the desktop app). +若你有(如下所述的)服务器安装,便可直接存取网页界面(其与桌面应用几乎相同)。 -Currently only the latest versions of Chrome & Firefox are supported (and -tested). +目前仅支持(并实测)最新版的 Chrome 与 Firefox。 -### Mobile +### 移动装置 -To use TriliumNext on a mobile device, you can use a mobile web browser to -access the mobile interface of a server installation (see below). +若要在行动装置上使用 TriliumNext,你可以透过移动查看器存取服务器安装的移动版接口(见下)。 See issue https://github.com/TriliumNext/Trilium/issues/4962 for more information on mobile app support. -If you prefer a native Android app, you can use -[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). -Report bugs and missing features at [their -repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to -disable automatic updates on your server installation (see below) when using -TriliumDroid since the sync version must match between Trilium and TriliumDroid. +如果你偏好原生 Android 应用,可使用 +[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid)。回报问题或缺少的功能,请至[其储存库](https://github.com/FliegendeWurst/TriliumDroid)。 -### Server +### 服务器 -To install TriliumNext on your own server (including via Docker from -[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server -installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). +若要在你自己的服务器上安装 TriliumNext(包括从 [Docker +Hub](https://hub.docker.com/r/triliumnext/trilium) 使用 Docker +部署),请遵循[服务器安装文件](https://triliumnext.github.io/Docs/Wiki/server-installation)。 -## 💻 Contribute +## 💻 贡献 -### Translations +### 翻译 -If you are a native speaker, help us translate Trilium by heading over to our -[Weblate page](https://hosted.weblate.org/engage/trilium/). +如果你是母语人士,欢迎前往我们的 [Weblate 页面](https://hosted.weblate.org/engage/trilium/)协助翻译 +Trilium。 -Here's the language coverage we have so far: +以下是目前的语言覆盖状态: [![Translation status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -### Code +### 程序代码 -Download the repository, install dependencies using `pnpm` and then run the -server (available at http://localhost:8080): +下载储存库,使用 `pnpm` 安装相依套件,接着启动服务器(于 http://localhost:8080 提供服务): ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -224,10 +179,9 @@ pnpm install pnpm run server:start ``` -### Documentation +### 文件 -Download the repository, install dependencies using `pnpm` and then run the -environment required to edit the documentation: +下载储存库,使用 `pnpm` 安装相依套件,接着启动编辑文件所需的环境: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -235,9 +189,8 @@ pnpm install pnpm edit-docs:edit-docs ``` -### Building the Executable -Download the repository, install dependencies using `pnpm` and then build the -desktop app for Windows: +### 建置桌面可执行文件 +下载储存库,使用 `pnpm` 安装相依套件,然后为 Windows 建置桌面应用: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -245,8 +198,7 @@ pnpm install pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` -For more details, see the [development -docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). +更多细节请参见[开发文件](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide)。 ### Developer Documentation @@ -255,7 +207,7 @@ guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/D for details. If you have more questions, feel free to reach out via the links described in the "Discuss with us" section above. -## 👏 Shoutouts +## 👏 鸣谢 * [zadam](https://github.com/zadam) for the original concept and implementation of the application. @@ -289,7 +241,7 @@ Trilium would not be possible without the technologies behind it: maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) -## 🤝 Support +## 🤝 支持我们 Trilium is built and maintained with [hundreds of hours of work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your @@ -303,11 +255,9 @@ Consider supporting the main developer - [PayPal](https://paypal.me/eliandoran) - [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) -## 🔑 License +## 🔑 授权条款 -Copyright 2017-2025 zadam, Elian Doran, and other contributors +Copyright 2017–2025 zadam、Elian Doran 与其他贡献者 -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU Affero General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. +本程序系自由软件:你可以在自由软件基金会(Free Software Foundation)所发布的 GNU Affero 通用公众授权条款(GNU +AGPL)第 3 版或(由你选择)任何后续版本之条款下重新散布或修改本程序。 From 1212f9a9e9e11a5583babd223005a8e8c304c0eb Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 5 Oct 2025 20:30:48 +0200 Subject: [PATCH 035/201] Translated using Weblate (Italian) Currently translated at 7.8% (9 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/it/ --- docs/README-it.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/README-it.md b/docs/README-it.md index 4e87408087..056de7e0db 100644 --- a/docs/README-it.md +++ b/docs/README-it.md @@ -14,15 +14,16 @@ status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted | [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | [Spanish](./docs/README-es.md) -Trilium Notes is a free and open-source, cross-platform hierarchical note taking -application with focus on building large personal knowledge bases. +Trilium Notes è un'applicazione per appunti ad organizzazione gerarchica, +studiata per la costruzione di archivi di conoscenza personali di grandi +dimensioni. -See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for -quick overview: +Vedi [fotografie](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) per +una panoramica veloce: Trilium Screenshot -## 📚 Documentation +## 📚 Documentazione **Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)** @@ -201,7 +202,7 @@ To install TriliumNext on your own server (including via Docker from installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). -## 💻 Contribute +## 💻 Contribuire ### Translations @@ -255,7 +256,7 @@ guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/D for details. If you have more questions, feel free to reach out via the links described in the "Discuss with us" section above. -## 👏 Shoutouts +## 👏 Riconoscimenti * [zadam](https://github.com/zadam) for the original concept and implementation of the application. @@ -289,7 +290,7 @@ Trilium would not be possible without the technologies behind it: maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) -## 🤝 Support +## 🤝 Supporto Trilium is built and maintained with [hundreds of hours of work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your @@ -303,11 +304,11 @@ Consider supporting the main developer - [PayPal](https://paypal.me/eliandoran) - [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) -## 🔑 License +## 🔑 Licenza Copyright 2017-2025 zadam, Elian Doran, and other contributors -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU Affero General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. +Questo programma è software libero: è possibile redistribuirlo e/o modificarlo +nei termini della GNU Affero General Public License come pubblicata dalla Free +Software Foundation, sia la versione 3 della Licenza, o (a propria scelta) +qualsiasi versione successiva. From a2d09efca4010f14d6ccddcd1d1bdc13b83ea8f5 Mon Sep 17 00:00:00 2001 From: green Date: Sun, 5 Oct 2025 19:07:32 +0200 Subject: [PATCH 036/201] Translated using Weblate (Japanese) Currently translated at 60.0% (69 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/ --- docs/README-ja.md | 238 ++++++++++++++++++++-------------------------- 1 file changed, 101 insertions(+), 137 deletions(-) diff --git a/docs/README-ja.md b/docs/README-ja.md index 4e87408087..569d2495d1 100644 --- a/docs/README-ja.md +++ b/docs/README-ja.md @@ -3,181 +3,145 @@ ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ ![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) -![GitHub Downloads (all assets, all -releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +![GitHub ダウンロード +(全アセット、全リリース)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ [![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) -[![Translation -status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) +[![翻訳状況](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | -[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) -| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | -[Spanish](./docs/README-es.md) +[英語](./README.md) | [中国語(簡体)](./docs/README-ZH_CN.md) | +[中国語(繁体)](./docs/README-ZH_TW.md) | [ロシア語](./docs/README-ru.md) | +[日本語](./docs/README-ja.md) | [イタリア語](./docs/README-it.md) | +[スペイン語](./docs/README-es.md) -Trilium Notes is a free and open-source, cross-platform hierarchical note taking -application with focus on building large personal knowledge bases. +Trilium Notes +は、大規模な個人知識ベースの構築に重点を置いた、無料かつオープンソースのクロスプラットフォームの階層型ノート作成アプリケーションです。 -See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for -quick overview: +概要については [スクリーンショット](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) +を参照してください: Trilium Screenshot -## 📚 Documentation +## 📚 ドキュメント -**Visit our comprehensive documentation at -[docs.triliumnotes.org](https://docs.triliumnotes.org/)** +**包括的なドキュメントは [docs.triliumnotes.org](https://docs.triliumnotes.org/) でご覧ください** -Our documentation is available in multiple formats: -- **Online Documentation**: Browse the full documentation at - [docs.triliumnotes.org](https://docs.triliumnotes.org/) -- **In-App Help**: Press `F1` within Trilium to access the same documentation - directly in the application -- **GitHub**: Navigate through the [User - Guide](./docs/User%20Guide/User%20Guide/) in this repository +当社のドキュメントは複数の形式でご利用いただけます: +- **オンラインドキュメント**: [docs.triliumnotes.org](https://docs.triliumnotes.org/) + で完全なドキュメントを参照してください +- **アプリ内ヘルプ**: Trilium内で `F1` キーを押すと、アプリケーション内で同じドキュメントに直接アクセスできます +- **GitHub**: このリポジトリの [ユーザーガイド](./docs/User%20Guide/User%20Guide/) を参照してください -### Quick Links -- [Getting Started Guide](https://docs.triliumnotes.org/) -- [Installation - Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) +### クイックリンク +- [スタートガイド](https://docs.triliumnotes.org/) +- [インストール手順](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) - [Docker - Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) -- [Upgrading - TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) -- [Basic Concepts and - Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) -- [Patterns of Personal Knowledge - Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) + のセットアップ](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md) +- [TriliumNext + のアップグレード](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md) +- [基本概念と機能](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md) +- [個人ナレッジベースのパターン](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## 🎁 Features +## 🎁 機能 -* Notes can be arranged into arbitrarily deep tree. Single note can be placed - into multiple places in the tree (see - [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) -* Rich WYSIWYG note editor including e.g. tables, images and - [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown - [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) -* Support for editing [notes with source - code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax - highlighting -* Fast and easy [navigation between - notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text - search and [note - hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) -* Seamless [note - versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be - used for note organization, querying and advanced - [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) -* UI available in English, German, Spanish, French, Romanian, and Chinese - (simplified and traditional) -* Direct [OpenID and TOTP - integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) - for more secure login -* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) - with self-hosted sync server - * there's a [3rd party service for hosting synchronisation - server](https://trilium.cc/paid-hosting) -* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes - to public internet -* Strong [note - encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with - per-note granularity -* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type - "canvas") -* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and - [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing - notes and their relations -* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) -* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with - location pins and GPX tracks -* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced - showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) -* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation -* Scales well in both usability and performance upwards of 100 000 notes -* Touch optimized [mobile - frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for - smartphones and tablets -* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support - for user themes -* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and - [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy - saving of web content -* Customizable UI (sidebar buttons, user-defined widgets, ...) -* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along - with a [Grafana - Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) +* ノートは任意の深さのツリーに配置できます。1つのノートをツリー内の複数の場所に配置できます([クローン](https://triliumnext.github.io/Docs/Wiki/cloning-notes)を参照) +* 豊富な WYSIWYG ノートエディター 例: + 表、画像、[数式](https://triliumnext.github.io/Docs/Wiki/text-notes) とマークダウン + [自動フォーマット](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) など +* 構文の強調表示を含む [ソースコード付きノート](https://triliumnext.github.io/Docs/Wiki/code-notes) + の編集をサポート +* [ノート間のナビゲーション](https://triliumnext.github.io/Docs/Wiki/note-navigation)、全文検索、[ノートのホイスト](https://triliumnext.github.io/Docs/Wiki/note-hoisting) + が高速かつ簡単に行えます +* シームレスな [ノートのバージョン管理](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* ノート[属性](https://triliumnext.github.io/Docs/Wiki/attributes) は、ノートの整理、クエリ、高度な + [スクリプト](https://triliumnext.github.io/Docs/Wiki/scripts) に使用できます +* UI は英語、ドイツ語、スペイン語、フランス語、ルーマニア語、中国語(簡体字および繁体字)でご利用いただけます +* より安全なログインのための直接的な + [OpenIDとTOTPの統合](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) +* セルフホスト同期サーバーとの [同期](https://triliumnext.github.io/Docs/Wiki/synchronization) + * [同期サーバーをホストするためのサードパーティサービス](https://trilium.cc/paid-hosting) があります +* インターネット上でノートの [共有](https://triliumnext.github.io/Docs/Wiki/sharing)(公開) +* ノートごとに調整可能で強力な + [ノート暗号化](https://triliumnext.github.io/Docs/Wiki/protected-notes) +* [Excalidraw](https://excalidraw.com/) をベースにした図のスケッチ(ノートタイプ「キャンバス」) +* ノートとそのリレーションを視覚化するための + [リレーションマップ](https://triliumnext.github.io/Docs/Wiki/relation-map) と + [リンクマップ](https://triliumnext.github.io/Docs/Wiki/link-map) +* [Mind Elixir](https://docs.mind-elixir.com/) をベースとしたマインドマップ +* 位置ピンと GPX トラック付きの + [ジオマップ](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) +* [スクリプト](https://triliumnext.github.io/Docs/Wiki/scripts) - + [高度なショーケース](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) を参照 +* 自動化のための [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) +* 10万件以上のノートでも、使いやすさとパフォーマンスの両面に優れた拡張性を実現 +* スマートフォンとタブレット向けにタッチ操作に最適化された + [モバイルフロントエンド](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) +* 組み込みの [ダークテーマ](https://triliumnext.github.io/Docs/Wiki/themes)、ユーザーテーマのサポート +* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) と + [Markdown のインポートとエクスポート](https://triliumnext.github.io/Docs/Wiki/markdown) +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) + でWebコンテンツを簡単に保存 +* カスタマイズ可能な UI (サイドバー ボタン、ユーザー定義のウィジェットなど) +* [メトリクス(Metrics)](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md) + と [Grafana + ダッシュボード](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json) -✨ Check out the following third-party resources/communities for more TriliumNext -related goodies: +✨ TriliumNext 関連のその他の情報については、次のサードパーティのリソース/コミュニティをご覧ください: -- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party - themes, scripts, plugins and more. -- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more. +- [awesome-trilium](https://github.com/Nriver/awesome-trilium) + サードパーティのテーマ、スクリプト、プラグインなど。 +- [TriliumRocks!](https://trilium.rocks/) ではチュートリアルやガイドなど、その他多数。 -## ❓Why TriliumNext? +## ❓なぜTriliumNext なのか? -The original Trilium developer ([Zadam](https://github.com/zadam)) has -graciously given the Trilium repository to the community project which resides -at https://github.com/TriliumNext +オリジナルの Trilium 開発者 ([Zadam](https://github.com/zadam)) +は、https://github.com/TriliumNext にあるコミュニティプロジェクトに Trilium リポジトリを快く提供してくれました -### ⬆️Migrating from Zadam/Trilium? +### ⬆️Zadam/Trilium から移行しますか? -There are no special migration steps to migrate from a zadam/Trilium instance to -a TriliumNext/Trilium instance. Simply [install -TriliumNext/Trilium](#-installation) as usual and it will use your existing -database. +zadam/Trilium インスタンスから TriliumNext/Trilium インスタンスへの移行には特別な手順はありません。通常通り +[TriliumNext/Triliumをインストール](#-installation) するだけで、既存のデータベースが使用されます。 -Versions up to and including -[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are -compatible with the latest zadam/trilium version of -[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later -versions of TriliumNext/Trilium have their sync versions incremented which -prevents direct migration. +[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) +までのバージョンは、最新の zadam/trilium バージョン +[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7) +と互換性があります。それ以降のバージョンの TriliumNext/Trilium では同期バージョンがインクリメントされるため、直接移行することはできません。 -## 💬 Discuss with us +## 💬 私たちと議論しましょう -Feel free to join our official conversations. We would love to hear what -features, suggestions, or issues you may have! +ぜひ公式の会話にご参加ください。機能に関するご意見、ご提案、問題など、ぜひお聞かせください! -- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous - discussions.) - - The `General` Matrix room is also bridged to - [XMPP](xmpp:discuss@trilium.thisgreat.party?join) -- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For - asynchronous discussions.) -- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug - reports and feature requests.) +- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (同期ディスカッション用) + - `General`マトリックスルームも [XMPP](xmpp:discuss@trilium.thisgreat.party?join) + にブリッジされています +- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) + (非同期ディスカッション用) +- [Github Issues](https://github.com/TriliumNext/Trilium/issues) + (バグレポートや機能リクエスト用) -## 🏗 Installation +## 🏗 インストール ### Windows / MacOS -Download the binary release for your platform from the [latest release -page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package -and run the `trilium` executable. +[最新リリース ページ](https://github.com/TriliumNext/Trilium/releases/latest) +からプラットフォーム用のバイナリ リリースをダウンロードし、パッケージを解凍して `trilium` 実行可能ファイルを実行します。 ### Linux -If your distribution is listed in the table below, use your distribution's -package. +ディストリビューションが以下の表に記載されている場合は、ディストリビューションのパッケージを使用してください。 [![Packaging status](https://repology.org/badge/vertical-allrepos/triliumnext.svg)](https://repology.org/project/triliumnext/versions) -You may also download the binary release for your platform from the [latest -release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the -package and run the `trilium` executable. +[最新リリース ページ](https://github.com/TriliumNext/Trilium/releases/latest) +からプラットフォーム用のバイナリ リリースをダウンロードし、パッケージを解凍して `trilium` 実行可能ファイルを実行することもできます。 -TriliumNext is also provided as a Flatpak, but not yet published on FlatHub. +TriliumNext は Flatpak としても提供されていますが、FlatHub ではまだ公開されていません。 -### Browser (any OS) +### ブラウザ(どのOSでも) -If you use a server installation (see below), you can directly access the web -interface (which is almost identical to the desktop app). +サーバーインストール (下記参照) を使用する場合は、Web インターフェイス (デスクトップアプリとほぼ同じ) に直接アクセスできます。 -Currently only the latest versions of Chrome & Firefox are supported (and -tested). +現在、Chrome と Firefox の最新バージョンのみがサポート (およびテスト) されています。 ### Mobile From 05645d93ef7279046220fad2ad0e57bf0a2e05cf Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 5 Oct 2025 20:28:24 +0200 Subject: [PATCH 037/201] Translated using Weblate (Russian) Currently translated at 21.7% (25 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ru/ --- docs/README-ru.md | 108 +++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/docs/README-ru.md b/docs/README-ru.md index 4e87408087..02f324930b 100644 --- a/docs/README-ru.md +++ b/docs/README-ru.md @@ -14,15 +14,15 @@ status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted | [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | [Spanish](./docs/README-es.md) -Trilium Notes is a free and open-source, cross-platform hierarchical note taking -application with focus on building large personal knowledge bases. +Trilium Notes – это приложение для заметок с иерархической структурой, +ориентированное на создание больших персональных баз знаний. -See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for -quick overview: +Для быстрого ознакомления посмотрите +[скриншот-тур](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) Trilium Screenshot -## 📚 Documentation +## 📚 Документация **Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)** @@ -48,61 +48,63 @@ Our documentation is available in multiple formats: - [Patterns of Personal Knowledge Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## 🎁 Features +## 🎁 Возможности -* Notes can be arranged into arbitrarily deep tree. Single note can be placed - into multiple places in the tree (see - [cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) -* Rich WYSIWYG note editor including e.g. tables, images and - [math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown - [autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) -* Support for editing [notes with source - code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax - highlighting -* Fast and easy [navigation between - notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text - search and [note - hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting) -* Seamless [note - versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions) -* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be - used for note organization, querying and advanced - [scripting](https://triliumnext.github.io/Docs/Wiki/scripts) +* Заметки можно расположить в виде дерева произвольной глубины. Отдельную + заметку можно разместить в нескольких местах дерева (см. + [клонирование](https://triliumnext.github.io/Docs/Wiki/cloning-notes)) +* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, + изображениями, [формулами](https://triliumnext.github.io/Docs/Wiki/text-notes) + и разметкой markdown, имеет + [автоформатирование](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat) +* Редактирование [заметок с исходным + кодом](https://triliumnext.github.io/Docs/Wiki/code-notes), включая подсветку + синтаксиса +* Быстрая и простая [навигация между + заметками](https://triliumnext.github.io/Docs/Wiki/note-navigation), + полнотекстовый поиск и [выделение + заметок](https://triliumnext.github.io/Docs/Wiki/note-hoisting) в отдельный + блок +* Бесшовное [версионирование + заметки](https://triliumnext.github.io/Docs/Wiki/note-revisions) +* Специальные [атрибуты](https://triliumnext.github.io/Docs/Wiki/attributes) + позволяют гибко организовать структуру, используются для поиска и продвинутого + [скриптинга](https://triliumnext.github.io/Docs/Wiki/scripts) * UI available in English, German, Spanish, French, Romanian, and Chinese (simplified and traditional) * Direct [OpenID and TOTP integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md) for more secure login -* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization) - with self-hosted sync server +* [Синхронизация](https://triliumnext.github.io/Docs/Wiki/synchronization) + заметок со своим сервером * there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting) * [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes to public internet -* Strong [note - encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with - per-note granularity +* Надёжное [шифрование](https://triliumnext.github.io/Docs/Wiki/protected-notes) + с детализацией по каждой заметке * Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type "canvas") -* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and - [link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing - notes and their relations +* [Карты связей](https://triliumnext.github.io/Docs/Wiki/relation-map) и [карты + ссылок](https://triliumnext.github.io/Docs/Wiki/link-map) для визуализации их + взяимосвязей * Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/) * [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with location pins and GPX tracks -* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced - showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) +* [Скрипты](https://triliumnext.github.io/Docs/Wiki/scripts) - см. [продвинутые + примеры](https://triliumnext.github.io/Docs/Wiki/advanced-showcases) * [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation -* Scales well in both usability and performance upwards of 100 000 notes -* Touch optimized [mobile - frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for - smartphones and tablets -* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support - for user themes -* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and - [Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown) -* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy - saving of web content +* Хорошо масштабируется, как по удобству использования, так и по + производительности до 100000 заметок +* Оптимизированный [мобильный + фронтенд](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) смартфонов + и планшетов +* [Темная тема](https://triliumnext.github.io/Docs/Wiki/themes) +* Импорт и экпорт + [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) и данных в + [markdown](https://triliumnext.github.io/Docs/Wiki/markdown) формате +* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) для + удобного сохранения веб-контента * Customizable UI (sidebar buttons, user-defined widgets, ...) * [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along with a [Grafana @@ -149,9 +151,9 @@ features, suggestions, or issues you may have! - [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug reports and feature requests.) -## 🏗 Installation +## 🏗 Сборки -### Windows / MacOS +### Windows / macOS Download the binary release for your platform from the [latest release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package @@ -201,7 +203,7 @@ To install TriliumNext on your own server (including via Docker from installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). -## 💻 Contribute +## 💻 Участвуйте в разработке ### Translations @@ -255,7 +257,7 @@ guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/D for details. If you have more questions, feel free to reach out via the links described in the "Discuss with us" section above. -## 👏 Shoutouts +## 👏 Благодарности * [zadam](https://github.com/zadam) for the original concept and implementation of the application. @@ -303,11 +305,11 @@ Consider supporting the main developer - [PayPal](https://paypal.me/eliandoran) - [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) -## 🔑 License +## 🔑 Лицензия Copyright 2017-2025 zadam, Elian Doran, and other contributors -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU Affero General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. +Эта программа является бесплатным программным обеспечением: вы можете +распространять и/или изменять ее в соответствии с условиями GNU Affero General +Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, +либо (по вашему выбору) любой более поздней версии. From b3cc51ce63a81198c20c83eb6d0d6cdda2e0c930 Mon Sep 17 00:00:00 2001 From: AndreR Date: Sun, 5 Oct 2025 18:18:12 +0200 Subject: [PATCH 038/201] Translated using Weblate (German) Currently translated at 5.2% (6 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/de/ --- docs/README-de.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/README-de.md b/docs/README-de.md index 4e87408087..55baa915ca 100644 --- a/docs/README-de.md +++ b/docs/README-de.md @@ -9,10 +9,10 @@ releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ [![Translation status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) -[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) | -[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md) -| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) | -[Spanish](./docs/README-es.md) +[Englisch](./README.md) | [Chinesisch (Vereinfacht)](./docs/README-ZH_CN.md) | +[Chinesisch (Traditionell)](./docs/README-ZH_TW.md) | +[Russisch](./docs/README-ru.md) | [Japanisch](./docs/README-ja.md) | +[Italienisch](./docs/README-it.md) | [Spanisch](./docs/README-es.md) Trilium Notes is a free and open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases. @@ -22,12 +22,12 @@ quick overview: Trilium Screenshot -## 📚 Documentation +## 📚 Dokumentation **Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)** -Our documentation is available in multiple formats: +Unsere Dokumentation ist verfügbar in mehreren Formaten: - **Online Documentation**: Browse the full documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/) - **In-App Help**: Press `F1` within Trilium to access the same documentation @@ -121,7 +121,7 @@ The original Trilium developer ([Zadam](https://github.com/zadam)) has graciously given the Trilium repository to the community project which resides at https://github.com/TriliumNext -### ⬆️Migrating from Zadam/Trilium? +### Migration von Zadam/Trilium? There are no special migration steps to migrate from a zadam/Trilium instance to a TriliumNext/Trilium instance. Simply [install @@ -210,8 +210,8 @@ If you are a native speaker, help us translate Trilium by heading over to our Here's the language coverage we have so far: -[![Translation -status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) +[![Status der +Übersetzung](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) ### Code From 332216f5f54fd952be737b5eecd9e0c82d514bcd Mon Sep 17 00:00:00 2001 From: green Date: Mon, 6 Oct 2025 05:48:58 +0200 Subject: [PATCH 039/201] Translated using Weblate (Japanese) Currently translated at 100.0% (115 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/ --- docs/README-ja.md | 148 +++++++++++++++++++++------------------------- 1 file changed, 67 insertions(+), 81 deletions(-) diff --git a/docs/README-ja.md b/docs/README-ja.md index 569d2495d1..c3a7de6957 100644 --- a/docs/README-ja.md +++ b/docs/README-ja.md @@ -143,44 +143,41 @@ TriliumNext は Flatpak としても提供されていますが、FlatHub では 現在、Chrome と Firefox の最新バージョンのみがサポート (およびテスト) されています。 -### Mobile +### モバイル -To use TriliumNext on a mobile device, you can use a mobile web browser to -access the mobile interface of a server installation (see below). +モバイルデバイスで TriliumNext を使用するには、モバイル Web +ブラウザーを使用して、サーバーインストールのモバイルインターフェイスにアクセスできます (以下を参照)。 -See issue https://github.com/TriliumNext/Trilium/issues/4962 for more -information on mobile app support. +モバイルアプリのサポートの詳細については、issue https://github.com/TriliumNext/Trilium/issues/4962 +を参照してください。 -If you prefer a native Android app, you can use -[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid). -Report bugs and missing features at [their -repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to -disable automatic updates on your server installation (see below) when using -TriliumDroid since the sync version must match between Trilium and TriliumDroid. +ネイティブAndroidアプリをご希望の場合は、[TriliumDroid](https://apt.izzysoft.de/fdroid/index/apk/eu.fliegendewurst.triliumdroid) +をご利用いただけます。バグや不足している機能は [リポジトリ](https://github.com/FliegendeWurst/TriliumDroid) +でご報告ください。注:TriliumDroidを使用する場合は、TriliumとTriliumDroidの同期バージョンが一致している必要があるため、サーバーインストールで自動更新を無効にすることをお勧めします(下記参照)。 -### Server +### サーバー -To install TriliumNext on your own server (including via Docker from -[Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server -installation docs](https://triliumnext.github.io/Docs/Wiki/server-installation). +独自のサーバーに TriliumNext をインストールするには +([Dockerhub](https://hub.docker.com/r/triliumnext/trilium) から Docker +経由でも含む)、[サーバーのインストール +ドキュメント](https://triliumnext.github.io/Docs/Wiki/server-installation) に従ってください。 -## 💻 Contribute +## 💻 貢献する -### Translations +### 翻訳 -If you are a native speaker, help us translate Trilium by heading over to our -[Weblate page](https://hosted.weblate.org/engage/trilium/). +ネイティブスピーカーの方は、[Weblate ページ](https://hosted.weblate.org/engage/trilium/) +にアクセスして、Trilium の翻訳にご協力ください。 -Here's the language coverage we have so far: +これまでにカバーされている言語は次のとおりです: -[![Translation -status](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) +[![翻訳状況](https://hosted.weblate.org/widget/trilium/multi-auto.svg)](https://hosted.weblate.org/engage/trilium/) -### Code +### コード -Download the repository, install dependencies using `pnpm` and then run the -server (available at http://localhost:8080): +リポジトリをダウンロードし、`pnpm` を使用して依存関係をインストールしてから、サーバーを実行します (http://localhost:8080 +で利用可能): ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -188,10 +185,9 @@ pnpm install pnpm run server:start ``` -### Documentation +### ドキュメント -Download the repository, install dependencies using `pnpm` and then run the -environment required to edit the documentation: +リポジトリをダウンロードし、`pnpm` を使用して依存関係をインストールし、ドキュメントを編集するために必要な環境を実行します: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -199,9 +195,8 @@ pnpm install pnpm edit-docs:edit-docs ``` -### Building the Executable -Download the repository, install dependencies using `pnpm` and then build the -desktop app for Windows: +### 実行ファイルの構築 +リポジトリをダウンロードし、`pnpm` を使用して依存関係をインストールし、Windows 用のデスクトップアプリをビルドします: ```shell git clone https://github.com/TriliumNext/Trilium.git cd Trilium @@ -209,69 +204,60 @@ pnpm install pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ``` -For more details, see the [development -docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide). +詳細については、[開発ドキュメント](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide) +を参照してください。 -### Developer Documentation +### 開発者向けドキュメント -Please view the [documentation -guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) -for details. If you have more questions, feel free to reach out via the links -described in the "Discuss with us" section above. +詳細については、[ドキュメントガイド](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md) +をご覧ください。ご質問がございましたら、上記の「私たちと議論しましょう」セクションに記載されているリンクからお気軽にお問い合わせください。 -## 👏 Shoutouts +## 👏 シャウトアウト -* [zadam](https://github.com/zadam) for the original concept and implementation - of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. -* [nriver](https://github.com/nriver) for his work on internationalization. -* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. -* [antoniotejada](https://github.com/nriver) for the original syntax highlight - widget. -* [Dosu](https://dosu.dev/) for providing us with the automated responses to - GitHub issues and discussions. -* [Tabler Icons](https://tabler.io/icons) for the system tray icons. +* [zadam](https://github.com/zadam) アプリケーションのオリジナルのコンセプトと実装に対して感謝します。 +* [Larsa](https://github.com/LarsaSara) アプリケーションアイコンをデザイン。 +* [nriver](https://github.com/nriver) 国際化への取り組み。 +* [Thomas Frei](https://github.com/thfrei) Canvasへのオリジナルな取り組み。 +* [antoniotejada](https://github.com/nriver) オリジナルの構文ハイライトウィジェット。 +* [Dosu](https://dosu.dev/) GitHub の問題やディスカッションに対する自動応答を提供してくれました。 +* [Tabler Icons](https://tabler.io/icons) システムトレイアイコン。 -Trilium would not be possible without the technologies behind it: +Trilium は、その基盤となる技術なしには実現できませんでした: -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind - text notes. We are grateful for being offered a set of the premium features. -* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with - support for huge amount of languages. -* [Excalidraw](https://github.com/excalidraw/excalidraw) - the infinite - whiteboard used in Canvas notes. -* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - providing the - mind map functionality. -* [Leaflet](https://github.com/Leaflet/Leaflet) - for rendering geographical - maps. -* [Tabulator](https://github.com/olifolkerd/tabulator) - for the interactive - table used in collections. -* [FancyTree](https://github.com/mar10/fancytree) - feature-rich tree library - without real competition. -* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library. - Used in [relation - maps](https://triliumnext.github.io/Docs/Wiki/relation-map.html) and [link - maps](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - + テキストノートを補完するビジュアルエディタ。プレミアム機能を提供していただき、感謝いたします。 +* [CodeMirror](https://github.com/codemirror/CodeMirror) - + 膨大な数の言語をサポートするコードエディター。 +* [Excalidraw](https://github.com/excalidraw/excalidraw) - Canvas + ノートで使用される無限のホワイトボード。 +* [Mind Elixir](https://github.com/SSShooter/mind-elixir-core) - + マインドマップ機能を提供します。 +* [Leaflet](https://github.com/Leaflet/Leaflet) - 地理マップをレンダリングします。 +* Tabulator](https://github.com/olifolkerd/tabulator) - + コレクションで使用されるインタラクティブなテーブル。 +* [FancyTree](https://github.com/mar10/fancytree) - 他に類を見ない機能豊富なツリーライブラリ。 +* [jsPlumb](https://github.com/jsplumb/jsplumb) - + 視覚的な接続ライブラリ。[リレーションマップ](https://triliumnext.github.io/Docs/Wiki/relation-map.html) + と [リンクマップ](https://triliumnext.github.io/Docs/Wiki/note-map.html#link-map) + で使用されます -## 🤝 Support +## 🤝 サポート -Trilium is built and maintained with [hundreds of hours of -work](https://github.com/TriliumNext/Trilium/graphs/commit-activity). Your -support keeps it open-source, improves features, and covers costs such as -hosting. +Triliumは +[数百時間もの作業](https://github.com/TriliumNext/Trilium/graphs/commit-activity) +によって構築・維持されています。皆様のご支援により、オープンソースとしての維持、機能の向上、ホスティングなどの費用を賄うことができます。 -Consider supporting the main developer -([eliandoran](https://github.com/eliandoran)) of the application via: +次の方法で、アプリケーションの主な開発者 ([eliandoran](https://github.com/eliandoran)) +をサポートすることを検討してください: - [GitHub Sponsors](https://github.com/sponsors/eliandoran) - [PayPal](https://paypal.me/eliandoran) - [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) -## 🔑 License +## 🔑 ライセンス -Copyright 2017-2025 zadam, Elian Doran, and other contributors +著作権 2017-2025 zadam、Elian Doran、その他寄稿者 -This program is free software: you can redistribute it and/or modify it under -the terms of the GNU Affero General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. +このプログラムはフリーソフトウェアです: フリーソフトウェア財団(Software Foundation) が発行する GNU Affero +一般公衆利用許諾書(GNU Affero General Public License) のバージョン 3、または (選択により) +それ以降のバージョンの規約に従って、このプログラムを再配布および/または改変することができます。 From d845343e97fb276e99fbf1370da077154d56c308 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 17:48:08 +0300 Subject: [PATCH 040/201] feat(collections/board): basic keyboard interaction --- apps/client/src/widgets/collections/board/card.tsx | 10 ++++++++++ apps/client/src/widgets/collections/board/column.tsx | 7 +++++++ apps/client/src/widgets/collections/board/index.css | 6 ++++++ 3 files changed, 23 insertions(+) diff --git a/apps/client/src/widgets/collections/board/card.tsx b/apps/client/src/widgets/collections/board/card.tsx index 5b663e141a..4317d829c1 100644 --- a/apps/client/src/widgets/collections/board/card.tsx +++ b/apps/client/src/widgets/collections/board/card.tsx @@ -63,6 +63,14 @@ export default function Card({ setBranchIdToEdit?.(branch.branchId); }, [ setBranchIdToEdit, branch ]); + const handleKeyUp = useCallback((e: KeyboardEvent) => { + if (e.key === "Enter") { + api.openNote(note.noteId); + } else if (e.key === "F2") { + setBranchIdToEdit?.(branch.branchId); + } + }, [ setBranchIdToEdit, note ]); + useEffect(() => { editorRef.current?.focus(); }, [ isEditing ]); @@ -83,9 +91,11 @@ export default function Card({ onDragEnd={handleDragEnd} onContextMenu={handleContextMenu} onClick={!isEditing ? handleOpen : undefined} + onKeyUp={handleKeyUp} style={{ display: !isVisible ? "none" : undefined }} + tabIndex={300} > {!isEditing ? ( <> diff --git a/apps/client/src/widgets/collections/board/column.tsx b/apps/client/src/widgets/collections/board/column.tsx index 01e71c8fff..6d704bbe7e 100644 --- a/apps/client/src/widgets/collections/board/column.tsx +++ b/apps/client/src/widgets/collections/board/column.tsx @@ -146,11 +146,18 @@ export default function Column({ function AddNewItem({ column, api }: { column: string, api: BoardApi }) { const [ isCreatingNewItem, setIsCreatingNewItem ] = useState(false); const addItemCallback = useCallback(() => setIsCreatingNewItem(true), []); + const handleKeyDown = useCallback((e: KeyboardEvent) => { + if (!isCreatingNewItem && e.key === "Enter") { + setIsCreatingNewItem(true); + } + }, []); return (
{!isCreatingNewItem ? ( <> diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index a89a6c5ffa..42eefd8588 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -121,6 +121,12 @@ font-size: var(--card-font-size); } +.board-view-container .board-note:focus, +.board-view-container .board-new-item:focus { + outline: 3px solid var(--input-focus-outline-color); + outline-offset: 0; +} + .board-view-container .board-note { transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.15s ease, margin-top 0.2s ease; } From f2e60f52d22a28da06fa6ddc70dee007f51a0df2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 17:54:52 +0300 Subject: [PATCH 041/201] feat(collections/board): restore focus --- apps/client/src/widgets/collections/board/card.tsx | 4 ++-- apps/client/src/widgets/collections/board/index.tsx | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/collections/board/card.tsx b/apps/client/src/widgets/collections/board/card.tsx index 4317d829c1..2879f3a43e 100644 --- a/apps/client/src/widgets/collections/board/card.tsx +++ b/apps/client/src/widgets/collections/board/card.tsx @@ -63,7 +63,7 @@ export default function Card({ setBranchIdToEdit?.(branch.branchId); }, [ setBranchIdToEdit, branch ]); - const handleKeyUp = useCallback((e: KeyboardEvent) => { + const handleKeyDown = useCallback((e: KeyboardEvent) => { if (e.key === "Enter") { api.openNote(note.noteId); } else if (e.key === "F2") { @@ -91,7 +91,7 @@ export default function Card({ onDragEnd={handleDragEnd} onContextMenu={handleContextMenu} onClick={!isEditing ? handleOpen : undefined} - onKeyUp={handleKeyUp} + onKeyDown={handleKeyDown} style={{ display: !isVisible ? "none" : undefined }} diff --git a/apps/client/src/widgets/collections/board/index.tsx b/apps/client/src/widgets/collections/board/index.tsx index 2e8add6b42..26757229d1 100644 --- a/apps/client/src/widgets/collections/board/index.tsx +++ b/apps/client/src/widgets/collections/board/index.tsx @@ -227,10 +227,12 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, multilin isNewItem?: boolean; }) { const inputRef = useRef(null); + const focusElRef = useRef(null); const dismissOnNextRefreshRef = useRef(false); const shouldDismiss = useRef(false); useEffect(() => { + focusElRef.current = document.activeElement; inputRef.current?.focus(); inputRef.current?.select(); }, [ inputRef ]); @@ -254,8 +256,11 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, multilin onKeyDown={(e: TargetedKeyboardEvent) => { if (e.key === "Enter" || e.key === "Escape") { e.preventDefault(); + e.stopPropagation(); shouldDismiss.current = (e.key === "Escape"); - e.currentTarget.blur(); + if (focusElRef.current instanceof HTMLElement) { + focusElRef.current.focus(); + } } }} onBlur={(newValue) => { From b1638e1ffcd507cd4237b95deafeb98fa3a25b69 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 18:01:25 +0300 Subject: [PATCH 042/201] docs(collections/board): keyboard shortcuts --- .../src/widgets/collections/board/column.tsx | 8 ++ .../src/widgets/collections/board/index.css | 3 +- .../Note Types/Collections/Board View.html | 65 +++++++++------- .../Custom app-wide CSS.html | 78 +++++++++---------- .../Note Types/Collections/Board View.md | 9 +++ 5 files changed, 95 insertions(+), 68 deletions(-) diff --git a/apps/client/src/widgets/collections/board/column.tsx b/apps/client/src/widgets/collections/board/column.tsx index 6d704bbe7e..6b437cdbd4 100644 --- a/apps/client/src/widgets/collections/board/column.tsx +++ b/apps/client/src/widgets/collections/board/column.tsx @@ -50,6 +50,12 @@ export default function Column({ openColumnContextMenu(api, e, column); }, [ api, column ]); + const handleTitleKeyDown = useCallback((e: KeyboardEvent) => { + if (e.key === "F2") { + setColumnNameToEdit?.(column); + } + }, [ column ]); + /** Allow using mouse wheel to scroll inside card, while also maintaining column horizontal scrolling. */ const handleScroll = useCallback((event: JSX.TargetedWheelEvent) => { const el = event.currentTarget; @@ -93,6 +99,8 @@ export default function Column({ onDragStart={handleColumnDragStart} onDragEnd={handleColumnDragEnd} onContextMenu={handleContextMenu} + onKeyDown={handleTitleKeyDown} + tabIndex={300} > {!isEditing ? ( <> diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index 42eefd8588..f018ec61cf 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -121,8 +121,7 @@ font-size: var(--card-font-size); } -.board-view-container .board-note:focus, -.board-view-container .board-new-item:focus { +.board-view-container :focus { outline: 3px solid var(--input-focus-outline-color); outline-offset: 0; } diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html index 2602f66044..67a7276567 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html @@ -15,61 +15,74 @@ in a hierarchy.

Interaction with columns

    -
  • Create a new column by pressing Add Column near the last column. +
  • Create a new column by pressing Add Column near the last column.
      -
    • Once pressed, a text box will be displayed to set the name of the column. +
    • Once pressed, a text box will be displayed to set the name of the column. Press Enter to confirm, or Escape to dismiss.
  • -
  • To reorder a column, simply hold the mouse over the title and drag it +
  • To reorder a column, simply hold the mouse over the title and drag it to the desired position.
  • -
  • To delete a column, right click on its title and select Delete column.
  • -
  • To rename a column, click on the note title. +
  • To delete a column, right click on its title and select Delete column.
  • +
  • To rename a column, click on the note title.
      -
    • Press Enter to confirm.
    • -
    • Upon renaming a column, the corresponding status attribute of all its +
    • Press Enter to confirm.
    • +
    • Upon renaming a column, the corresponding status attribute of all its notes will be changed in bulk.
    -
  • -
  • If there are many columns, use the mouse wheel to scroll.
  • + +
  • If there are many columns, use the mouse wheel to scroll.

Interaction with notes

    -
  • Create a new note in any column by pressing New item +
  • Create a new note in any column by pressing New item
      -
    • Enter the name of the note and press Enter or click away. To +
    • Enter the name of the note and press Enter or click away. To dismiss the creation of a new note, simply press Escape or leave the name empty.
    • -
    • Once created, the new note will have an attribute (status label +
    • Once created, the new note will have an attribute (status label by default) set to the name of the column.
  • -
  • To open the note, simply click on it.
  • -
  • To change the title of the note directly from the board, hover the mouse +
  • To open the note, simply click on it.
  • +
  • To change the title of the note directly from the board, hover the mouse over its card and press the edit button on the right.
  • -
  • To change the state of a note, simply drag a note from one column to the +
  • To change the state of a note, simply drag a note from one column to the other to change its state.
  • -
  • The order of the notes in each column corresponds to their position in +
  • The order of the notes in each column corresponds to their position in the tree.
      -
    • It's possible to reorder notes simply by dragging them to the desired +
    • It's possible to reorder notes simply by dragging them to the desired position within the same columns.
    • -
    • It's also possible to drag notes across columns, at the desired position.
    • +
    • It's also possible to drag notes across columns, at the desired position.
  • -
  • For more options, right click on a note to display a context menu with +
  • For more options, right click on a note to display a context menu with the following options:
      -
    • Open the note in a new tab/split/window or quick edit.
    • -
    • Move the note to any column.
    • -
    • Insert a new note above/below the current one.
    • -
    • Archive/unarchive the current note.
    • -
    • Delete the current note.
    • +
    • Open the note in a new tab/split/window or quick edit.
    • +
    • Move the note to any column.
    • +
    • Insert a new note above/below the current one.
    • +
    • Archive/unarchive the current note.
    • +
    • Delete the current note.
  • -
  • If there are many notes within the column, move the mouse over the column +
  • If there are many notes within the column, move the mouse over the column and use the mouse wheel to scroll.
+

Keyboard interaction

+

The board view has mild support for keyboard-based navigation:

+
    +
  • Use Tab and Shift+Tab to navigate between + column titles, notes and the “New item” button for each of the columns, + in sequential order.
  • +
  • To rename a column or a note, press F2 while it is focused.
  • +
  • To open a specific note or create a new item, press Enter while + it is focused.
  • +
  • To dismiss a rename of a note or a column, press Escape.
  • +

Configuration

Grouping by another attribute

By default, the label used to group the notes is #status. @@ -83,5 +96,5 @@ class="admonition note">

Interaction

Limitations

    -
  • It is not possible yet to use group by a relation, only by label.
  • +
  • It is not possible yet to use group by a relation, only by label.
\ No newline at end of file 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 0bcbfcd64b..195bfd2755 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 @@ -49,17 +48,16 @@ } }

Per-workspace styles

-

When using Workspaces, +

When using Workspaces, it can be helpful to create a visual distinction between notes in different 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 {
+

Change the color of the icons in the Note Tree

.fancytree-node.my-workspace.fancytree-custom-icon {
     color: #ff0000;
 }

Change the color of the note title and the icon

@@ -73,8 +71,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;
diff --git a/docs/User Guide/User Guide/Note Types/Collections/Board View.md b/docs/User Guide/User Guide/Note Types/Collections/Board View.md
index 4b8bcbdbc3..c2630e67df 100644
--- a/docs/User Guide/User Guide/Note Types/Collections/Board View.md	
+++ b/docs/User Guide/User Guide/Note Types/Collections/Board View.md	
@@ -39,6 +39,15 @@ Notes are displayed recursively, so even the child notes of the child notes will
     *   Delete the current note.
 *   If there are many notes within the column, move the mouse over the column and use the mouse wheel to scroll.
 
+## Keyboard interaction
+
+The board view has mild support for keyboard-based navigation:
+
+*   Use Tab and Shift+Tab to navigate between column titles, notes and the “New item” button for each of the columns, in sequential order.
+*   To rename a column or a note, press F2 while it is focused.
+*   To open a specific note or create a new item, press Enter while it is focused.
+*   To dismiss a rename of a note or a column, press Escape.
+
 ## Configuration
 
 ### Grouping by another attribute

From c820b5caa43649c3278ec949ce2936ce4e35a80a Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Mon, 6 Oct 2025 18:10:54 +0300
Subject: [PATCH 043/201] feat(collections/board): keep title of the column
 always visible

---
 .../src/widgets/collections/board/column.tsx  | 53 ++++++++++---------
 .../src/widgets/collections/board/index.css   | 11 +++-
 2 files changed, 37 insertions(+), 27 deletions(-)

diff --git a/apps/client/src/widgets/collections/board/column.tsx b/apps/client/src/widgets/collections/board/column.tsx
index 6b437cdbd4..a6779f30d1 100644
--- a/apps/client/src/widgets/collections/board/column.tsx
+++ b/apps/client/src/widgets/collections/board/column.tsx
@@ -88,7 +88,6 @@ export default function Column({
             onDragOver={isAnyColumnDragging ? handleColumnDragOver : handleDragOver}
             onDragLeave={handleDragLeave}
             onDrop={handleDrop}
-            onWheel={handleScroll}
             style={{
                 display: !isVisible ? "none" : undefined
             }}
@@ -120,33 +119,35 @@ export default function Column({
                 )}
             
 
-            {(columnItems ?? []).map(({ note, branch }, index) => {
-                const showIndicatorBefore = dropPosition?.column === column &&
-                                          dropPosition.index === index &&
-                                          draggedCard?.noteId !== note.noteId;
+            
+ {(columnItems ?? []).map(({ note, branch }, index) => { + const showIndicatorBefore = dropPosition?.column === column && + dropPosition.index === index && + draggedCard?.noteId !== note.noteId; - return ( - <> - {showIndicatorBefore && ( -
- )} - - - ); - })} - {dropPosition?.column === column && dropPosition.index === (columnItems?.length ?? 0) && ( -
- )} + return ( + <> + {showIndicatorBefore && ( +
+ )} + + + ); + })} + {dropPosition?.column === column && dropPosition.index === (columnItems?.length ?? 0) && ( +
+ )} - + +
) } diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index f018ec61cf..a6e0e6d284 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -24,10 +24,13 @@ border: 2px solid transparent; border-radius: 8px; padding: 0.5em; + padding-bottom: 0; background-color: var(--accented-background-color); transition: border-color 0.2s ease; overflow-y: auto; max-height: 100%; + display: flex; + flex-direction: column; } .board-view-container .board-column.drag-over { @@ -37,7 +40,7 @@ .board-view-container .board-column h3 { font-size: 1em; - margin-bottom: 0.75em; + margin: 0; padding: 0.5em 0.5em 0.5em 0.5em; border-bottom: 1px solid var(--main-border-color); cursor: grab; @@ -98,6 +101,12 @@ cursor: pointer; } +.board-view-container .board-column > .board-column-content { + flex-grow: 1; + overflow: scroll; + padding-bottom: 0.5em; +} + .board-view-container .board-column h3:hover .edit-icon, .board-view-container .board-note:hover .edit-icon { opacity: 1; From 7f88ae549432348c3d679c655ae99ea6b177dcc0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 18:29:17 +0300 Subject: [PATCH 044/201] fix(mobile): formatting toolbar appears cut off (closes #7206) --- .../widgets/type_widgets/ckeditor/mobile_editor_toolbar.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/ckeditor/mobile_editor_toolbar.css b/apps/client/src/widgets/type_widgets/ckeditor/mobile_editor_toolbar.css index 06dccd699f..e60ad2cad8 100644 --- a/apps/client/src/widgets/type_widgets/ckeditor/mobile_editor_toolbar.css +++ b/apps/client/src/widgets/type_widgets/ckeditor/mobile_editor_toolbar.css @@ -27,11 +27,11 @@ display: flex; align-items: flex-end; user-select: none; + scrollbar-width: 0 !important; } -.classic-toolbar-widget::-webkit-scrollbar { +.classic-toolbar-widget::-webkit-scrollbar:horizontal { height: 0 !important; - width: 0 !important; } .classic-toolbar-widget.dropdown-active { From b2174549c738bdb8ba210e75f55400297e0b4a10 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 18:48:13 +0300 Subject: [PATCH 045/201] chore(collections/table): avoid rendering if rows didn't load yet --- apps/client/src/widgets/collections/table/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/widgets/collections/table/index.tsx b/apps/client/src/widgets/collections/table/index.tsx index d99d912d6a..2a40c594c6 100644 --- a/apps/client/src/widgets/collections/table/index.tsx +++ b/apps/client/src/widgets/collections/table/index.tsx @@ -54,7 +54,7 @@ export default function TableView({ note, noteIds, notePath, viewConfig, saveCon return (
- {persistenceProps && ( + {rowData !== undefined && persistenceProps && ( <> Date: Mon, 6 Oct 2025 18:49:11 +0300 Subject: [PATCH 046/201] fix(collections/table): react to tree state changes (closes #7204) --- apps/client/src/widgets/collections/table/tabulator.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/collections/table/tabulator.tsx b/apps/client/src/widgets/collections/table/tabulator.tsx index 57c90b59ad..6301d5b386 100644 --- a/apps/client/src/widgets/collections/table/tabulator.tsx +++ b/apps/client/src/widgets/collections/table/tabulator.tsx @@ -16,7 +16,7 @@ interface TableProps extends Omit({ className, columns, data, modules, tabulatorRef: externalTabulatorRef, footerElement, events, index, ...restProps }: TableProps) { +export default function Tabulator({ className, columns, data, modules, tabulatorRef: externalTabulatorRef, footerElement, events, index, dataTree, ...restProps }: TableProps) { const parentComponent = useContext(ParentComponent); const containerRef = useRef(null); const tabulatorRef = useRef(null); @@ -36,6 +36,7 @@ export default function Tabulator({ className, columns, data, modules, tabula data, footerElement: (parentComponent && isValidElement(footerElement) ? renderReactWidget(parentComponent, footerElement)[0] : undefined), index: index as string | number | undefined, + dataTree, ...restProps }); @@ -45,7 +46,7 @@ export default function Tabulator({ className, columns, data, modules, tabula }); return () => tabulator.destroy(); - }, []); + }, [ dataTree ] ); useEffect(() => { const tabulator = tabulatorRef.current; From 69a59f09359f4d590ccfb00ae5f6843e91062d0f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 18:55:02 +0300 Subject: [PATCH 047/201] fix(collections/list): not reacting to expand/collapse button (closes #7209) --- apps/client/src/widgets/collections/legacy/ListOrGridView.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx index b88812d729..274ef21110 100644 --- a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx @@ -59,8 +59,8 @@ function ListNoteCard({ note, parentNote, expand, highlightedTokens }: { note: F const [ isExpanded, setExpanded ] = useState(expand); const notePath = getNotePath(parentNote, note); - // Reset expand state if switching to another note. - useEffect(() => setExpanded(expand), [ note ]); + // Reset expand state if switching to another note, or if user manually toggled expansion state. + useEffect(() => setExpanded(expand), [ note, expand ]); return (
Date: Mon, 6 Oct 2025 17:49:24 +0200 Subject: [PATCH 048/201] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-ro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README-ro.md b/docs/README-ro.md index 69a65a0451..fcbfbf68f1 100644 --- a/docs/README-ro.md +++ b/docs/README-ro.md @@ -153,7 +153,7 @@ sugestii sau probleme aveți! ## 🏗 Procesul de instalare -### Windows / MacOS +### Windows / macOS Descărcați release-ul binar pentru platforma dvs. de pe pagina [ultimului release](https://github.com/TriliumNext/Trilium/releases/latest), dezarhivați și From 6c106300d48860abdcf4d1fabc09443bed49052f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 19:18:47 +0300 Subject: [PATCH 049/201] chore(client): launch bar background affecting custom icons (closes #7147) --- apps/client/src/stylesheets/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index dbb2bdb465..eb9449aef4 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -1492,7 +1492,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { cursor: pointer; border: none; color: var(--launcher-pane-text-color); - background: transparent; + background-color: transparent; flex-shrink: 0; } From 2fca9957254b122a71169b12cc699cf43c27cbe6 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 6 Oct 2025 19:58:33 +0300 Subject: [PATCH 050/201] docs(guide): update html docs with sharing --- .../Advanced Usage/Attributes/Relations.html | 7 + .../User Guide/Advanced Usage/Sharing.html | 36 + docs/User Guide/!!!meta.json | 26563 ++++++++-------- .../User Guide/Advanced Usage/Sharing.md | 16 +- 4 files changed, 13333 insertions(+), 13289 deletions(-) diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html index 40294d6acf..6d85137f6a 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html @@ -116,6 +116,13 @@ class="admonition tip"> JavaScript note which will be injected into the share page. JS note must be in the shared sub-tree as well. Consider using share_hidden_from_tree. + + shareHtml + + HTML note which will be injected into the share page at locations specified + by the shareHtmlLocation label. HTML note must be in the shared + sub-tree as well. Consider using share_hidden_from_tree. + shareTemplate diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html index 1c7240c480..95cae2d8d8 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html @@ -234,6 +234,34 @@ class="image"> This allows you to access note attributes or traverse the note tree using the fetchNote() API, which retrieves note data based on its ID.

+

Adding custom HTML

+

You can inject custom HTML snippets into specific locations of the shared + page using the ~shareHtml relation. The HTML note should contain + the raw HTML content you want to inject, and you can control where it appears + by adding the #shareHtmlLocation label to the HTML snippet note + itself.

+

The #shareHtmlLocation label accepts values in the format location:position:

+
    +
  • Locations: head, body, content +
  • +
  • Positions: start, end +
  • +
+

For example:

+
    +
  • #shareHtmlLocation=head:start - Injects HTML at the beginning + of the <head> section
  • +
  • #shareHtmlLocation=head:end - Injects HTML at the end of the <head> section + (default)
  • +
  • #shareHtmlLocation=body:start - Injects HTML at the beginning + of the <body> section
  • +
  • #shareHtmlLocation=content:start - Injects HTML at the beginning + of the content area
  • +
  • #shareHtmlLocation=content:end - Injects HTML at the end of + the content area
  • +
+

If no location is specified, the HTML will be injected at content:end by + default.

Example:

const currentNote = await fetchNote();
 const parentNote = await fetchNote(currentNote.parentNoteIds[0]);
 
@@ -344,6 +372,14 @@ for (const attr of parentNote.attributes) {
         
         Note with this label will list all roots of shared notes.
       
+      
+        shareHtmlLocation
+        
+        defines where custom HTML injected via ~shareHtml relation
+          should be placed. Applied to the HTML snippet note itself. Format: location:position where
+          location is head, body, or content and
+          position is start or end. Defaults to content:end.
+      
     
   
   
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index 9957ce34ca..8ab66bce56 100644
--- a/docs/User Guide/!!!meta.json	
+++ b/docs/User Guide/!!!meta.json	
@@ -1,13284 +1,13283 @@
 {
-    "formatVersion": 2,
-    "appVersion": "0.99.0",
-    "files": [
-        {
-            "isClone": false,
-            "noteId": "pOsGYCXsbNQG",
-            "notePath": [
-                "pOsGYCXsbNQG"
-            ],
-            "title": "User Guide",
-            "notePosition": 1,
-            "prefix": null,
-            "isExpanded": false,
-            "type": "text",
-            "mime": "text/html",
-            "attributes": [],
-            "format": "markdown",
-            "dataFileName": "User Guide.md",
-            "attachments": [],
-            "dirFileName": "User Guide",
-            "children": [
-                {
-                    "isClone": false,
-                    "noteId": "BOCnjTMBCoxW",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "BOCnjTMBCoxW"
-                    ],
-                    "title": "Feature Highlights",
-                    "notePosition": 10,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/html",
-                    "attributes": [
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "ZjLYv08Rp3qC",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "R9pX4DGra2Vt",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "LMAv4Uy3Wk6J",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "NRnIZmSMc5sj",
-                            "isInheritable": false,
-                            "position": 40
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "rC3pL2aptaRE",
-                            "isInheritable": false,
-                            "position": 50
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "GTwFsgaA0lCt",
-                            "isInheritable": false,
-                            "position": 60
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "2FvYrpmOXm29",
-                            "isInheritable": false,
-                            "position": 70
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "iPIMuisry3hd",
-                            "isInheritable": false,
-                            "position": 80
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "ZlN4nump6EbW",
-                            "isInheritable": false,
-                            "position": 90
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "pwc194wlRzcH",
-                            "isInheritable": false,
-                            "position": 100
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "7DAiwaf8Z7Rz",
-                            "isInheritable": false,
-                            "position": 110
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "veGu4faJErEM",
-                            "isInheritable": false,
-                            "position": 120
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "xWbu3jpNWapp",
-                            "isInheritable": false,
-                            "position": 130
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "AgjCISero73a",
-                            "isInheritable": false,
-                            "position": 140
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "81SGnPGMk7Xc",
-                            "isInheritable": false,
-                            "position": 150
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "gBbsAeiuUxI5",
-                            "isInheritable": false,
-                            "position": 160
-                        },
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-star",
-                            "isInheritable": false,
-                            "position": 10
-                        }
-                    ],
-                    "format": "markdown",
-                    "dataFileName": "Feature Highlights.md",
-                    "attachments": []
-                },
-                {
-                    "isClone": false,
-                    "noteId": "Otzi9La2YAUX",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "Otzi9La2YAUX"
-                    ],
-                    "title": "Installation & Setup",
-                    "notePosition": 20,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/html",
-                    "attributes": [
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-cog",
-                            "isInheritable": false,
-                            "position": 10
-                        }
-                    ],
-                    "format": "markdown",
-                    "attachments": [],
-                    "dirFileName": "Installation & Setup",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "poXkQfguuA0U",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "poXkQfguuA0U"
-                            ],
-                            "title": "Desktop Installation",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "tAassRL4RSQL",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "l2VkvOwUNfZj",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "cbkrhQjrkKrh",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "desktop-installation",
-                                    "isInheritable": false,
-                                    "position": 30
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Desktop Installation.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "WOcw2SLH6tbX",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "WOcw2SLH6tbX"
-                            ],
-                            "title": "Server Installation",
-                            "notePosition": 20,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "cbkrhQjrkKrh",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "rWX5eY045zbE",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "3tW6mORuTHnB",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "J1Bb6lVlwU5T",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "DCmT6e7clMoP",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "moVgBcoxE3EK",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "RDslemsQ6gCp",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "l2VkvOwUNfZj",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "tAassRL4RSQL",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Gzjqa934BdH4",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0hzsNCP31IAB",
-                                    "isInheritable": false,
-                                    "position": 120
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "fDLvzOx29Pfg",
-                                    "isInheritable": false,
-                                    "position": 130
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "server-installation",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Server Installation.md",
-                            "attachments": [],
-                            "dirFileName": "Server Installation",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "Dgg7bR3b6K9j",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "Otzi9La2YAUX",
-                                        "WOcw2SLH6tbX",
-                                        "Dgg7bR3b6K9j"
-                                    ],
-                                    "title": "1. Installing the server",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "attachments": [],
-                                    "dirFileName": "1. Installing the server",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "3tW6mORuTHnB",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "Dgg7bR3b6K9j",
-                                                "3tW6mORuTHnB"
-                                            ],
-                                            "title": "Packaged version for Linux",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "WOcw2SLH6tbX",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "l2VkvOwUNfZj",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "packaged-server-installation",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxl-tux",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Packaged version for Linux.md",
-                                            "attachments": []
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "rWX5eY045zbE",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "Dgg7bR3b6K9j",
-                                                "rWX5eY045zbE"
-                                            ],
-                                            "title": "Using Docker",
-                                            "notePosition": 20,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "ud6MShXL4WpO",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "fDLvzOx29Pfg",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "docker-server-installation",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxl-docker",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Using Docker.md",
-                                            "attachments": []
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "moVgBcoxE3EK",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "Dgg7bR3b6K9j",
-                                                "moVgBcoxE3EK"
-                                            ],
-                                            "title": "On NixOS",
-                                            "notePosition": 30,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "nixos-server-installation",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxl-tux",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "On NixOS.md",
-                                            "attachments": []
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "J1Bb6lVlwU5T",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "Dgg7bR3b6K9j",
-                                                "J1Bb6lVlwU5T"
-                                            ],
-                                            "title": "Manually",
-                                            "notePosition": 40,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "rWX5eY045zbE",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "3tW6mORuTHnB",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "l2VkvOwUNfZj",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "manual-server-installation",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-code-alt",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Manually.md",
-                                            "attachments": []
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "DCmT6e7clMoP",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "Dgg7bR3b6K9j",
-                                                "DCmT6e7clMoP"
-                                            ],
-                                            "title": "Using Kubernetes",
-                                            "notePosition": 50,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "kubernetes-server-installation",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxl-kubernetes",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Using Kubernetes.md",
-                                            "attachments": []
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "klCWNks3ReaQ",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "Dgg7bR3b6K9j",
-                                                "klCWNks3ReaQ"
-                                            ],
-                                            "title": "Multiple server instances",
-                                            "notePosition": 60,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "J1Bb6lVlwU5T",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "cbkrhQjrkKrh",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "3tW6mORuTHnB",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "rWX5eY045zbE",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "moVgBcoxE3EK",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxs-user-account",
-                                                    "isInheritable": false,
-                                                    "position": 60
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Multiple server instances.md",
-                                            "attachments": []
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "vcjrb3VVYPZI",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "Otzi9La2YAUX",
-                                        "WOcw2SLH6tbX",
-                                        "vcjrb3VVYPZI"
-                                    ],
-                                    "title": "2. Reverse proxy",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "attachments": [],
-                                    "dirFileName": "2. Reverse proxy",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "ud6MShXL4WpO",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "vcjrb3VVYPZI",
-                                                "ud6MShXL4WpO"
-                                            ],
-                                            "title": "Nginx",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "nginx-proxy-setup",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Nginx.md",
-                                            "attachments": []
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "fDLvzOx29Pfg",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "Otzi9La2YAUX",
-                                                "WOcw2SLH6tbX",
-                                                "vcjrb3VVYPZI",
-                                                "fDLvzOx29Pfg"
-                                            ],
-                                            "title": "Apache",
-                                            "notePosition": 20,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/markdown",
-                                            "attributes": [
-                                                {
-                                                    "type": "label",
-                                                    "name": "shareAlias",
-                                                    "value": "apache-proxy-setup",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Apache.md",
-                                            "attachments": []
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "l2VkvOwUNfZj",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "Otzi9La2YAUX",
-                                        "WOcw2SLH6tbX",
-                                        "l2VkvOwUNfZj"
-                                    ],
-                                    "title": "TLS Configuration",
-                                    "notePosition": 100,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "WOcw2SLH6tbX",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "tAassRL4RSQL",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Gzjqa934BdH4",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "tls-configuration",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "TLS Configuration.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "0hzsNCP31IAB",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "Otzi9La2YAUX",
-                                        "WOcw2SLH6tbX",
-                                        "0hzsNCP31IAB"
-                                    ],
-                                    "title": "Authentication",
-                                    "notePosition": 110,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wX4HbRucYSDD",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YKWqdJhzi2VY",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "7DAiwaf8Z7Rz",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-lock-alt",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Authentication.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "7DAiwaf8Z7Rz",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "Otzi9La2YAUX",
-                                        "WOcw2SLH6tbX",
-                                        "7DAiwaf8Z7Rz"
-                                    ],
-                                    "title": "Multi-Factor Authentication",
-                                    "notePosition": 120,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Gzjqa934BdH4",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "multi-factor-authentication",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-stopwatch",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Multi-Factor Authentication.md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "cbkrhQjrkKrh",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "cbkrhQjrkKrh"
-                            ],
-                            "title": "Synchronization",
-                            "notePosition": 30,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "l2VkvOwUNfZj",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "poXkQfguuA0U",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "vZWERwf8U3nx",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "synchronization",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-sync",
-                                    "isInheritable": false,
-                                    "position": 70
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Synchronization.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "PU4LVfX4MaMD",
-                                    "title": "sync-in-progress.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Synchronization_sync-in-pr.png"
-                                },
-                                {
-                                    "attachmentId": "s3fKDqHslToK",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Synchronization_image.png"
-                                },
-                                {
-                                    "attachmentId": "wlHlhXqZ0i1S",
-                                    "title": "sync-config.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Synchronization_sync-confi.png"
-                                },
-                                {
-                                    "attachmentId": "x0t06ATHph6b",
-                                    "title": "sync-init.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Synchronization_sync-init.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "RDslemsQ6gCp",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "RDslemsQ6gCp"
-                            ],
-                            "title": "Mobile Frontend",
-                            "notePosition": 40,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bwg0e8ewQMak",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "WOcw2SLH6tbX",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "mobile-frontend",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-mobile-alt",
-                                    "isInheritable": false,
-                                    "position": 60
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Mobile Frontend.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "CyswsZZ3GwtQ",
-                                    "title": "mobile-tablet.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Mobile Frontend_mobile-tab.png"
-                                },
-                                {
-                                    "attachmentId": "txzBbmMtgsrx",
-                                    "title": "mobile-smartphone.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Mobile Frontend_mobile-sma.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "MtPxeAWVAzMg",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "MtPxeAWVAzMg"
-                            ],
-                            "title": "Web Clipper",
-                            "notePosition": 50,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "l0tKav7yLHGF",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "WOcw2SLH6tbX",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "web-clipper",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Web Clipper.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "fhKf5Otv0M5Y",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Web Clipper_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "n1lujUxCwipy",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "n1lujUxCwipy"
-                            ],
-                            "title": "Upgrading TriliumNext",
-                            "notePosition": 60,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "rWX5eY045zbE",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ODY7qQn5m2FT",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "cbkrhQjrkKrh",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "upgrading-trilium",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Upgrading TriliumNext.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "ODY7qQn5m2FT",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "ODY7qQn5m2FT"
-                            ],
-                            "title": "Backup",
-                            "notePosition": 70,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Gzjqa934BdH4",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "tAassRL4RSQL",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "cbkrhQjrkKrh",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "backup",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Backup.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "tAassRL4RSQL",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "Otzi9La2YAUX",
-                                "tAassRL4RSQL"
-                            ],
-                            "title": "Data directory",
-                            "notePosition": 80,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ODY7qQn5m2FT",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "data-directory",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-folder-open",
-                                    "isInheritable": false,
-                                    "position": 40
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Data directory.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "NONZTci1YkNe",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Data directory_image.png"
-                                }
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "gh7bpGYxajRS",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "gh7bpGYxajRS"
-                    ],
-                    "title": "Basic Concepts and Features",
-                    "notePosition": 40,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/html",
-                    "attributes": [
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-help-circle",
-                            "isInheritable": false,
-                            "position": 10
-                        }
-                    ],
-                    "format": "markdown",
-                    "attachments": [],
-                    "dirFileName": "Basic Concepts and Features",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "Vc8PjrjAGuOp",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "Vc8PjrjAGuOp"
-                            ],
-                            "title": "UI Elements",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-window-alt",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "attachments": [],
-                            "dirFileName": "UI Elements",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "x0JgW8UqGXvq",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "x0JgW8UqGXvq"
-                                    ],
-                                    "title": "Vertical and horizontal layout",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Ms1nauBra7gq",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x3i7MxGccDuM",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-layout",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Vertical and horizontal layout.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "9sCZBqokn4vf",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Vertical and horizontal la.png"
-                                        },
-                                        {
-                                            "attachmentId": "gw3DaUul5ccI",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Vertical and horizontal la.png"
-                                        },
-                                        {
-                                            "attachmentId": "jhiE5DTkLOCK",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "2_Vertical and horizontal la.png"
-                                        },
-                                        {
-                                            "attachmentId": "JwO3rUNb9tyU",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "3_Vertical and horizontal la.png"
-                                        },
-                                        {
-                                            "attachmentId": "NVjM5z6IsNZf",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Vertical and horizontal la.png"
-                                        },
-                                        {
-                                            "attachmentId": "Z2F8ipVjwugg",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Vertical and horizontal la.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "x3i7MxGccDuM",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "x3i7MxGccDuM"
-                                    ],
-                                    "title": "Global menu",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x0JgW8UqGXvq",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-menu",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Global menu.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "rCnBqSyldhp9",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Global menu_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "oPVyFC7WL2Lp",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "oPVyFC7WL2Lp"
-                                    ],
-                                    "title": "Note Tree",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "A9Oc6YKKc65v",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "IakOLONlIfGI",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YtSN43OrfzaA",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "DvdZhoQZY9Yd",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "tree-manipulation",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-tree-alt",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note Tree.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "AF3on7rb7R59",
-                                            "title": "drag-and-drop.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Note Tree_drag-and-drop.gif"
-                                        },
-                                        {
-                                            "attachmentId": "DYf7wm3Yv6EC",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Note Tree_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "m0KuVBZvGyzW",
-                                            "title": "move-note-with-keyboard.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Note Tree_move-note-with-k.gif"
-                                        }
-                                    ],
-                                    "dirFileName": "Note Tree",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "YtSN43OrfzaA",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "gh7bpGYxajRS",
-                                                "Vc8PjrjAGuOp",
-                                                "oPVyFC7WL2Lp",
-                                                "YtSN43OrfzaA"
-                                            ],
-                                            "title": "Note tree contextual menu",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "oPVyFC7WL2Lp",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "yTjUdsOi4CIE",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "OR8WJ7Iz9K4U",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "KC1HB96bqqHX",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "bwg0e8ewQMak",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "IakOLONlIfGI",
-                                                    "isInheritable": false,
-                                                    "position": 60
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "MKmLg5x6xkor",
-                                                    "isInheritable": false,
-                                                    "position": 70
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "mHbBMPDPkVV5",
-                                                    "isInheritable": false,
-                                                    "position": 80
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "eIg8jdvaoNNd",
-                                                    "isInheritable": false,
-                                                    "position": 90
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "ivYnonVFBxbQ",
-                                                    "isInheritable": false,
-                                                    "position": 100
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "TBwsyfadTA18",
-                                                    "isInheritable": false,
-                                                    "position": 110
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "0vhv7lsOLy82",
-                                                    "isInheritable": false,
-                                                    "position": 120
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "zEY4DaJG4YT5",
-                                                    "isInheritable": false,
-                                                    "position": 130
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "aGlEvb9hyDhS",
-                                                    "isInheritable": false,
-                                                    "position": 140
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "wArbEsdSae6g",
-                                                    "isInheritable": false,
-                                                    "position": 150
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "3seOhtN8uLIY",
-                                                    "isInheritable": false,
-                                                    "position": 160
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "KSZ04uQ2D1St",
-                                                    "isInheritable": false,
-                                                    "position": 170
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "r5JGHN99bVKn",
-                                                    "isInheritable": false,
-                                                    "position": 180
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "W8vYD3Q1zjCR",
-                                                    "isInheritable": false,
-                                                    "position": 190
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "QEAPj01N5f7w",
-                                                    "isInheritable": false,
-                                                    "position": 200
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-menu",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Note tree contextual menu.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "5mFOLdHBuKYa",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Note tree contextual menu_.png"
-                                                },
-                                                {
-                                                    "attachmentId": "E3x5TRRe2pvx",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "1_Note tree contextual menu_.png"
-                                                }
-                                            ]
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "yTjUdsOi4CIE",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "gh7bpGYxajRS",
-                                                "Vc8PjrjAGuOp",
-                                                "oPVyFC7WL2Lp",
-                                                "yTjUdsOi4CIE"
-                                            ],
-                                            "title": "Multiple selection",
-                                            "notePosition": 20,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "ivYnonVFBxbQ",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-list-plus",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Multiple selection.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "puanbWdFSfUM",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/jpg",
-                                                    "position": 10,
-                                                    "dataFileName": "Multiple selection_image.png"
-                                                }
-                                            ]
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "DvdZhoQZY9Yd",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "gh7bpGYxajRS",
-                                                "Vc8PjrjAGuOp",
-                                                "oPVyFC7WL2Lp",
-                                                "DvdZhoQZY9Yd"
-                                            ],
-                                            "title": "Keyboard shortcuts",
-                                            "notePosition": 30,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "oPVyFC7WL2Lp",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "ZjLYv08Rp3qC",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "yTjUdsOi4CIE",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxs-keyboard",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Keyboard shortcuts.md",
-                                            "attachments": []
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "BlN9DFI679QC",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "BlN9DFI679QC"
-                                    ],
-                                    "title": "Ribbon",
-                                    "notePosition": 50,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4FahAwuGTAwC",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwg0e8ewQMak",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CoFPLs3dRlXc",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "u3YFHC9tQlpm",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R9pX4DGra2Vt",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KC1HB96bqqHX",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 90
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 100
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwZpz2ajCEwO",
-                                            "isInheritable": false,
-                                            "position": 110
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 120
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "IakOLONlIfGI",
-                                            "isInheritable": false,
-                                            "position": 130
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xWtq5NUHOwql",
-                                            "isInheritable": false,
-                                            "position": 140
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "m1lbrzyKDaRB",
-                                            "isInheritable": false,
-                                            "position": 150
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wX4HbRucYSDD",
-                                            "isInheritable": false,
-                                            "position": 160
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "l0tKav7yLHGF",
-                                            "isInheritable": false,
-                                            "position": 170
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_optionsAppearance",
-                                            "isInheritable": false,
-                                            "position": 180
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 190
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KSZ04uQ2D1St",
-                                            "isInheritable": false,
-                                            "position": 200
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "WOcw2SLH6tbX",
-                                            "isInheritable": false,
-                                            "position": 210
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "veGu4faJErEM",
-                                            "isInheritable": false,
-                                            "position": 220
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-dots-horizontal",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Ribbon.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "JCiJ3vRhgXY9",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Ribbon_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "3seOhtN8uLIY",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "3seOhtN8uLIY"
-                                    ],
-                                    "title": "Tabs",
-                                    "notePosition": 70,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "luNhaphA37EO",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x0JgW8UqGXvq",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-dock-top",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Tabs.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "b4aCeUxoyA9k",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Tabs_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "bSaBdT5sH1S7",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Tabs_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "HffqAHhqe69i",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Tabs_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "xYmIYSP6wE3F",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "xYmIYSP6wE3F"
-                                    ],
-                                    "title": "Launch Bar",
-                                    "notePosition": 110,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x3i7MxGccDuM",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "p9kXRFAkwN4o",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OR8WJ7Iz9K4U",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x0JgW8UqGXvq",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CdNpE2pqjmI6",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "SynTBQiBsdYJ",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-sidebar",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Launch Bar.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "YsBMjK1g3jd1",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Launch Bar_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "8YBEPzcpUgxw",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "8YBEPzcpUgxw"
-                                    ],
-                                    "title": "Note buttons",
-                                    "notePosition": 130,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "vZWERwf8U3nx",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4FahAwuGTAwC",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "0vhv7lsOLy82",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-dots-vertical-rounded",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note buttons.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "iln72O2Xo8zy",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Note buttons_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "4TIF1oA4VQRO",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "4TIF1oA4VQRO"
-                                    ],
-                                    "title": "Options",
-                                    "notePosition": 140,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x3i7MxGccDuM",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_options",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "3seOhtN8uLIY",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "cbkrhQjrkKrh",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-cog",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Options.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "FZZUANQuZlhe",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Options_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "IJPuSn5cWjTO",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Options_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "luNhaphA37EO",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "luNhaphA37EO"
-                                    ],
-                                    "title": "Split View",
-                                    "notePosition": 150,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OR8WJ7Iz9K4U",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "3seOhtN8uLIY",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-dock-right",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Split View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "9plNhrKyZaXM",
-                                            "title": "3_Split View_image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Split View_3_Split View_im.png"
-                                        },
-                                        {
-                                            "attachmentId": "Lk0PrljxWYRp",
-                                            "title": "4_Split View_image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Split View_4_Split View_im.png"
-                                        },
-                                        {
-                                            "attachmentId": "Lt1OZVfsht6I",
-                                            "title": "Split View_image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Split View_Split View_imag.png"
-                                        },
-                                        {
-                                            "attachmentId": "qm9Dn3TD1w4k",
-                                            "title": "2_Split View_image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Split View_2_Split View_im.png"
-                                        },
-                                        {
-                                            "attachmentId": "UFITv6o2d4QN",
-                                            "title": "1_Split View_image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Split View_1_Split View_im.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "XpOYSgsLkTJy",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "XpOYSgsLkTJy"
-                                    ],
-                                    "title": "Floating buttons",
-                                    "notePosition": 160,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CoFPLs3dRlXc",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "s1aBHPd79XYj",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "grjYqerjn243",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-rectangle",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Floating buttons.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "drdKIHK5GzfU",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Floating buttons_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "RnaPdbciOfeq",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "RnaPdbciOfeq"
-                                    ],
-                                    "title": "Right Sidebar",
-                                    "notePosition": 170,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BFvAtE74rbP6",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "AxshuNRegLAv",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "luNhaphA37EO",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "3seOhtN8uLIY",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-dock-right",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Right Sidebar.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "ze9MwXmOPhp0",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Right Sidebar_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "r5JGHN99bVKn",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "r5JGHN99bVKn"
-                                    ],
-                                    "title": "Recent Changes",
-                                    "notePosition": 180,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OR8WJ7Iz9K4U",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "9sRHySam5fXb",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YtSN43OrfzaA",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-history",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Recent Changes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "3HsqEVy53S2H",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Recent Changes_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "dxoiP89lrRn6",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Recent Changes_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "ny318J39E5Z0",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "ny318J39E5Z0"
-                                    ],
-                                    "title": "Zoom",
-                                    "notePosition": 190,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-zoom-in",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Zoom.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "ZjLYv08Rp3qC",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "ZjLYv08Rp3qC"
-                                    ],
-                                    "title": "Quick edit",
-                                    "notePosition": 200,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "Quick edit.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "EBOLwVGrA8bv",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Quick edit_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "lgKX7r3aL30x",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Vc8PjrjAGuOp",
-                                        "lgKX7r3aL30x"
-                                    ],
-                                    "title": "Note Tooltip",
-                                    "notePosition": 210,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "ZjLYv08Rp3qC",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Cq5X6iKQop6R",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "hrZ1D00cLbal",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GTwFsgaA0lCt",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "81SGnPGMk7Xc",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xWbu3jpNWapp",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "2FvYrpmOXm29",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-message-detail",
-                                            "isInheritable": false,
-                                            "position": 100
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note Tooltip.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "AHAT2uK9sy9d",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Note Tooltip_image.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "BFs8mudNFgCS",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "BFs8mudNFgCS"
-                            ],
-                            "title": "Notes",
-                            "notePosition": 40,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iPIMuisry3hd",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "grjYqerjn243",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "s1aBHPd79XYj",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "m523cpzocqaD",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "HcABDtFCkbFN",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "IakOLONlIfGI",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "r5JGHN99bVKn",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ODY7qQn5m2FT",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CoFPLs3dRlXc",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "note",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-notepad",
-                                    "isInheritable": false,
-                                    "position": 100
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Notes.md",
-                            "attachments": [],
-                            "dirFileName": "Notes",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "p9kXRFAkwN4o",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "p9kXRFAkwN4o"
-                                    ],
-                                    "title": "Note Icons",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "note-icons",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-grid",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note Icons.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "6tSmLB1aFql6",
-                                            "title": "note-icon-gallery.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Note Icons_note-icon-galle.png"
-                                        },
-                                        {
-                                            "attachmentId": "QBMBQvrXn6G5",
-                                            "title": "note-icon-change.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Note Icons_note-icon-chang.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "0vhv7lsOLy82",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "0vhv7lsOLy82"
-                                    ],
-                                    "title": "Attachments",
-                                    "notePosition": 50,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BFs8mudNFgCS",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R7abl2fc6Mxi",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CdNpE2pqjmI6",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "W8vYD3Q1zjCR",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "8YBEPzcpUgxw",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "attachments",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-paperclip",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Attachments.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "IakOLONlIfGI",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "IakOLONlIfGI"
-                                    ],
-                                    "title": "Cloning Notes",
-                                    "notePosition": 60,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "A9Oc6YKKc65v",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "cloning-notes",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-duplicate",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Cloning Notes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "3n837NZNUg0t",
-                                            "title": "create-clone.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Cloning Notes_create-clone.gif"
-                                        }
-                                    ],
-                                    "dirFileName": "Cloning Notes",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "TBwsyfadTA18",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "gh7bpGYxajRS",
-                                                "BFs8mudNFgCS",
-                                                "IakOLONlIfGI",
-                                                "TBwsyfadTA18"
-                                            ],
-                                            "title": "Branch prefix",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "IakOLONlIfGI",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "oPVyFC7WL2Lp",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-rename",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Branch prefix.md",
-                                            "attachments": []
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "bwg0e8ewQMak",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "bwg0e8ewQMak"
-                                    ],
-                                    "title": "Protected Notes",
-                                    "notePosition": 70,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wX4HbRucYSDD",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "protected-notes",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-lock-alt",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Protected Notes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "NISgqIUKwaxr",
-                                            "title": "protecting-note.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Protected Notes_protecting.gif"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "MKmLg5x6xkor",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "MKmLg5x6xkor"
-                                    ],
-                                    "title": "Archived Notes",
-                                    "notePosition": 80,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwZpz2ajCEwO",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "eIg8jdvaoNNd",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "archived-notes",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-box",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Archived Notes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "ke9mcD9x5Jg4",
-                                            "title": "hide-archived.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Archived Notes_hide-archiv.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "vZWERwf8U3nx",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "vZWERwf8U3nx"
-                                    ],
-                                    "title": "Note Revisions",
-                                    "notePosition": 90,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "note-revisions",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-history",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note Revisions.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "1TA1nUFZzprY",
-                                            "title": "note-revisions.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Note Revisions_note-revisi.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "aGlEvb9hyDhS",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "aGlEvb9hyDhS"
-                                    ],
-                                    "title": "Sorting Notes",
-                                    "notePosition": 100,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "sorting",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-sort-up",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Sorting Notes.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "NRnIZmSMc5sj",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "NRnIZmSMc5sj"
-                                    ],
-                                    "title": "Export as PDF",
-                                    "notePosition": 120,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wy8So3yZZlH9",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-file-pdf",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Export as PDF.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "NfSjRsArIQHy",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Export as PDF_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Om2EmdZr54vy",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Export as PDF_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "CoFPLs3dRlXc",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "CoFPLs3dRlXc"
-                                    ],
-                                    "title": "Read-Only Notes",
-                                    "notePosition": 130,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_optionsTextNotes",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_optionsCodeNotes",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "XpOYSgsLkTJy",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "s1aBHPd79XYj",
-                                            "isInheritable": false,
-                                            "position": 90
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "81SGnPGMk7Xc",
-                                            "isInheritable": false,
-                                            "position": 100
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "read-only-note",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-edit-alt",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Read-Only Notes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "dUmc6vYfoQgZ",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Read-Only Notes_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "0ESUbbAxVnoK",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "BFs8mudNFgCS",
-                                        "0ESUbbAxVnoK"
-                                    ],
-                                    "title": "Note List",
-                                    "notePosition": 140,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GTwFsgaA0lCt",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-grid",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note List.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "9VbOf4HySQjH",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Note List_image.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "wArbEsdSae6g",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "wArbEsdSae6g"
-                            ],
-                            "title": "Navigation",
-                            "notePosition": 50,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-navigation",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "attachments": [],
-                            "dirFileName": "Navigation",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "kBrnXNG3Hplm",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "kBrnXNG3Hplm"
-                                    ],
-                                    "title": "Tree Concepts",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BFs8mudNFgCS",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "IakOLONlIfGI",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "tree-concepts",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-pyramid",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Tree Concepts.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "MMiBEQljMQh2",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "MMiBEQljMQh2"
-                                    ],
-                                    "title": "Note Navigation",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "F1r9QtzQLZqm",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "note-navigation",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-navigation",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note Navigation.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "jDuwVaU8bNtG",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Note Navigation_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "Ms1nauBra7gq",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "Ms1nauBra7gq"
-                                    ],
-                                    "title": "Quick search",
-                                    "notePosition": 40,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "F1r9QtzQLZqm",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "eIg8jdvaoNNd",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x0JgW8UqGXvq",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-search-alt-2",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Quick search.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "H0XlRahnnWbd",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Quick search_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "F1r9QtzQLZqm",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "F1r9QtzQLZqm"
-                                    ],
-                                    "title": "Jump to...",
-                                    "notePosition": 50,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "A9Oc6YKKc65v",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-send",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Jump to.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "7IU5WrneDsfi",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Jump to_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "P9veX5eFZdPp",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Jump to_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "y8yxomaf1Gkz",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Jump to_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "eIg8jdvaoNNd",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "eIg8jdvaoNNd"
-                                    ],
-                                    "title": "Search",
-                                    "notePosition": 60,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "A9Oc6YKKc65v",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OR8WJ7Iz9K4U",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wX4HbRucYSDD",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "ivYnonVFBxbQ",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YtSN43OrfzaA",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "9sRHySam5fXb",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "m523cpzocqaD",
-                                            "isInheritable": false,
-                                            "position": 90
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 100
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "MKmLg5x6xkor",
-                                            "isInheritable": false,
-                                            "position": 110
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "qzNzp9LYQyPT",
-                                            "isInheritable": false,
-                                            "position": 120
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 130
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "search",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-search-alt-2",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Search.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "WkhcA4FN7sGX",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Search_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "u3YFHC9tQlpm",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "u3YFHC9tQlpm"
-                                    ],
-                                    "title": "Bookmarks",
-                                    "notePosition": 70,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "bookmarks",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-bookmarks",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Bookmarks.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "99dD0P74W8QJ",
-                                            "title": "bookmark-folder.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Bookmarks_bookmark-folder.png"
-                                        },
-                                        {
-                                            "attachmentId": "9dX71aLlSl9R",
-                                            "title": "bookmarks.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Bookmarks_bookmarks.gif"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "OR8WJ7Iz9K4U",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "OR8WJ7Iz9K4U"
-                                    ],
-                                    "title": "Note Hoisting",
-                                    "notePosition": 80,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "MMiBEQljMQh2",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "9sRHySam5fXb",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "note-hoisting",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-chevrons-up",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Note Hoisting.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "wGJxetzAtPe0",
-                                            "title": "note-hoisting.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Note Hoisting_note-hoistin.gif"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": true,
-                                    "noteId": "ZjLYv08Rp3qC",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "ZjLYv08Rp3qC"
-                                    ],
-                                    "title": "Quick edit",
-                                    "prefix": null,
-                                    "dataFileName": "Quick edit.clone.md",
-                                    "type": "text",
-                                    "format": "markdown",
-                                    "isExpanded": false
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "9sRHySam5fXb",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "9sRHySam5fXb"
-                                    ],
-                                    "title": "Workspaces",
-                                    "notePosition": 90,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OR8WJ7Iz9K4U",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "l0tKav7yLHGF",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "workspace",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-door-open",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Workspaces.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "V4TIsmtBh8P7",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Workspaces_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "vZSH2mOKzWBx",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "1_Workspaces_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "xWtq5NUHOwql",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "xWtq5NUHOwql"
-                                    ],
-                                    "title": "Similar Notes",
-                                    "notePosition": 100,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-bar-chart",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Similar Notes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "0JOeCYHahqJS",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Similar Notes_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "McngOG2jbUWX",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "wArbEsdSae6g",
-                                        "McngOG2jbUWX"
-                                    ],
-                                    "title": "Search in note",
-                                    "notePosition": 110,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "MI26XDLSAlCD",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "8YBEPzcpUgxw",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-search-alt-2",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Search in note.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "vEq0g2DHEh3O",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Search in note_image.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "A9Oc6YKKc65v",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "A9Oc6YKKc65v"
-                            ],
-                            "title": "Keyboard Shortcuts",
-                            "notePosition": 60,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "MMiBEQljMQh2",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "IakOLONlIfGI",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iPIMuisry3hd",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "oiVPnW8QfnvS",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "QrtTYPmdd1qq",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "eIg8jdvaoNNd",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "keyboard-shortcuts",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-keyboard",
-                                    "isInheritable": false,
-                                    "position": 80
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Keyboard Shortcuts.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "Wy267RK4M69c",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "Wy267RK4M69c"
-                            ],
-                            "title": "Themes",
-                            "notePosition": 80,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6f9hih2hXXZk",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "VbjZvtUek0Ln",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "themes",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-palette",
-                                    "isInheritable": false,
-                                    "position": 60
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Themes.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "0IuNvWkls2sX",
-                                    "title": "dark-theme.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Themes_dark-theme.png"
-                                },
-                                {
-                                    "attachmentId": "HvcI7pb2pZJQ",
-                                    "title": "steel-blue.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Themes_steel-blue.png"
-                                },
-                                {
-                                    "attachmentId": "rwK3vuBgh7sY",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Themes_image.png"
-                                }
-                            ],
-                            "dirFileName": "Themes",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "VbjZvtUek0Ln",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "Wy267RK4M69c",
-                                        "VbjZvtUek0Ln"
-                                    ],
-                                    "title": "Theme Gallery",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "theme-gallery",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-book-reader",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Theme Gallery.md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "mHbBMPDPkVV5",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "mHbBMPDPkVV5"
-                            ],
-                            "title": "Import & Export",
-                            "notePosition": 90,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-import",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "attachments": [],
-                            "dirFileName": "Import & Export",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "Oau6X9rCuegd",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "mHbBMPDPkVV5",
-                                        "Oau6X9rCuegd"
-                                    ],
-                                    "title": "Markdown",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "rJ9grSgoExl9",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "markdown",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxl-markdown",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Markdown.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "eF5PfSUArlEl",
-                                            "title": "markdown-file-import.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Markdown_markdown-file-imp.gif"
-                                        },
-                                        {
-                                            "attachmentId": "lHeoBedkdNGi",
-                                            "title": "markdown-export-subtree.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Markdown_markdown-export-s.gif"
-                                        },
-                                        {
-                                            "attachmentId": "p8I5seD7NUiV",
-                                            "title": "markdown-export-note.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Markdown_markdown-export-n.gif"
-                                        },
-                                        {
-                                            "attachmentId": "tWIrcy00loZK",
-                                            "title": "markdown-inline-import.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Markdown_markdown-inline-i.gif"
-                                        }
-                                    ],
-                                    "dirFileName": "Markdown",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "rJ9grSgoExl9",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "gh7bpGYxajRS",
-                                                "mHbBMPDPkVV5",
-                                                "Oau6X9rCuegd",
-                                                "rJ9grSgoExl9"
-                                            ],
-                                            "title": "Supported syntax",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-code-alt",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Supported syntax.md",
-                                            "attachments": []
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "syuSEKf2rUGr",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "mHbBMPDPkVV5",
-                                        "syuSEKf2rUGr"
-                                    ],
-                                    "title": "Evernote",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "evernote-import",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Evernote.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "GnhlmrATVqcH",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "gh7bpGYxajRS",
-                                        "mHbBMPDPkVV5",
-                                        "GnhlmrATVqcH"
-                                    ],
-                                    "title": "OneNote",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "onenote",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "OneNote.md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "rC3pL2aptaRE",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "gh7bpGYxajRS",
-                                "rC3pL2aptaRE"
-                            ],
-                            "title": "Zen mode",
-                            "notePosition": 100,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-yin-yang",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Zen mode.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "Asn6uBNwt6JI",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Zen mode_image.png"
-                                },
-                                {
-                                    "attachmentId": "HGcQUOEXJ3Sp",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Zen mode_image.png"
-                                },
-                                {
-                                    "attachmentId": "lqQtSNb8loOS",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_Zen mode_image.png"
-                                },
-                                {
-                                    "attachmentId": "LX31yc6Jnksw",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "3_Zen mode_image.png"
-                                }
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "s3YCWHBfmYuM",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "s3YCWHBfmYuM"
-                    ],
-                    "title": "Quick Start",
-                    "notePosition": 60,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/markdown",
-                    "attributes": [
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "poXkQfguuA0U",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "WOcw2SLH6tbX",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "RDslemsQ6gCp",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "cbkrhQjrkKrh",
-                            "isInheritable": false,
-                            "position": 40
-                        },
-                        {
-                            "type": "label",
-                            "name": "shareAlias",
-                            "value": "quick-start",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-run",
-                            "isInheritable": false,
-                            "position": 40
-                        }
-                    ],
-                    "format": "markdown",
-                    "dataFileName": "Quick Start.md",
-                    "attachments": []
-                },
-                {
-                    "isClone": false,
-                    "noteId": "i6dbnitykE5D",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "i6dbnitykE5D"
-                    ],
-                    "title": "FAQ",
-                    "notePosition": 70,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/markdown",
-                    "attributes": [
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "wX4HbRucYSDD",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "IakOLONlIfGI",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "zEY4DaJG4YT5",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "BCkXAVs63Ttv",
-                            "isInheritable": false,
-                            "position": 40
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "eIg8jdvaoNNd",
-                            "isInheritable": false,
-                            "position": 50
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "wy8So3yZZlH9",
-                            "isInheritable": false,
-                            "position": 60
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "CdNpE2pqjmI6",
-                            "isInheritable": false,
-                            "position": 70
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "tAassRL4RSQL",
-                            "isInheritable": false,
-                            "position": 80
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "cbkrhQjrkKrh",
-                            "isInheritable": false,
-                            "position": 90
-                        },
-                        {
-                            "type": "label",
-                            "name": "shareAlias",
-                            "value": "faq",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-question-mark",
-                            "isInheritable": false,
-                            "position": 40
-                        }
-                    ],
-                    "format": "markdown",
-                    "dataFileName": "FAQ.md",
-                    "attachments": []
-                },
-                {
-                    "isClone": false,
-                    "noteId": "KSZ04uQ2D1St",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "KSZ04uQ2D1St"
-                    ],
-                    "title": "Note Types",
-                    "notePosition": 130,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/html",
-                    "attributes": [
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "iPIMuisry3hd",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "oPVyFC7WL2Lp",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "QEAPj01N5f7w",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "BlN9DFI679QC",
-                            "isInheritable": false,
-                            "position": 40
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "4FahAwuGTAwC",
-                            "isInheritable": false,
-                            "position": 50
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "6f9hih2hXXZk",
-                            "isInheritable": false,
-                            "position": 60
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "m523cpzocqaD",
-                            "isInheritable": false,
-                            "position": 70
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "iRwzGnHPzonm",
-                            "isInheritable": false,
-                            "position": 80
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "bdUJEHsAPYQR",
-                            "isInheritable": false,
-                            "position": 90
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "HcABDtFCkbFN",
-                            "isInheritable": false,
-                            "position": 100
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "CdNpE2pqjmI6",
-                            "isInheritable": false,
-                            "position": 110
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "GTwFsgaA0lCt",
-                            "isInheritable": false,
-                            "position": 120
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "s1aBHPd79XYj",
-                            "isInheritable": false,
-                            "position": 130
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "grjYqerjn243",
-                            "isInheritable": false,
-                            "position": 140
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "1vHRoWCEjj0L",
-                            "isInheritable": false,
-                            "position": 150
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "gBbsAeiuUxI5",
-                            "isInheritable": false,
-                            "position": 160
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "81SGnPGMk7Xc",
-                            "isInheritable": false,
-                            "position": 170
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "W8vYD3Q1zjCR",
-                            "isInheritable": false,
-                            "position": 180
-                        },
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-edit",
-                            "isInheritable": false,
-                            "position": 10
-                        }
-                    ],
-                    "format": "markdown",
-                    "dataFileName": "Note Types.md",
-                    "attachments": [
-                        {
-                            "attachmentId": "CRt4gLIroyZ9",
-                            "title": "image.png",
-                            "role": "image",
-                            "mime": "image/png",
-                            "position": 10,
-                            "dataFileName": "Note Types_image.png"
-                        }
-                    ],
-                    "dirFileName": "Note Types",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "iPIMuisry3hd",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "iPIMuisry3hd"
-                            ],
-                            "title": "Text",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "nRhnJkTT8cPs",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Gr6xFaF6ioJ5",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "S6Xx8QIWTV66",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "NwBbFdNZ9h7O",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "NdowYOC1GFKS",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "UYuUB1ZekNQU",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "AgjCISero73a",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "mT0HEkOsz6i1",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "QEAPj01N5f7w",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "nBAXQFj20hS1",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CohkqWQC1iBv",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "YfYAtQBcfo5V",
-                                    "isInheritable": false,
-                                    "position": 120
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "dEHYtoWWi8ct",
-                                    "isInheritable": false,
-                                    "position": 130
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "2x0ZAX9ePtzV",
-                                    "isInheritable": false,
-                                    "position": 140
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "gLt3vA97tMcp",
-                                    "isInheritable": false,
-                                    "position": 150
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ZlN4nump6EbW",
-                                    "isInheritable": false,
-                                    "position": 160
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "KC1HB96bqqHX",
-                                    "isInheritable": false,
-                                    "position": 170
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CoFPLs3dRlXc",
-                                    "isInheritable": false,
-                                    "position": 180
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "A9Oc6YKKc65v",
-                                    "isInheritable": false,
-                                    "position": 190
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "QrtTYPmdd1qq",
-                                    "isInheritable": false,
-                                    "position": 200
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "MI26XDLSAlCD",
-                                    "isInheritable": false,
-                                    "position": 210
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "text-notes",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "sorted",
-                                    "value": "",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-note",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "sorted",
-                                    "value": "",
-                                    "isInheritable": false,
-                                    "position": 40
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Text.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "o9zZbojtCsba",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Text_image.png"
-                                },
-                                {
-                                    "attachmentId": "okPQXpSZC3Ml",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Text_image.png"
-                                },
-                                {
-                                    "attachmentId": "TaEkNs5KA6Pv",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_Text_image.png"
-                                }
-                            ],
-                            "dirFileName": "Text",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "NwBbFdNZ9h7O",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "NwBbFdNZ9h7O"
-                                    ],
-                                    "title": "Block quotes & admonitions",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "rJ9grSgoExl9",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-info-circle",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Block quotes & admonitions.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "Cls5AZAbPsIO",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Block quotes & admonitions.png"
-                                        },
-                                        {
-                                            "attachmentId": "do36b54XpmIC",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Block quotes & admonitions.png"
-                                        },
-                                        {
-                                            "attachmentId": "hUwfwkRSDeLJ",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Block quotes & admonitions.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "oSuaNgyyKnhu",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "oSuaNgyyKnhu"
-                                    ],
-                                    "title": "Bookmarks",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "QEAPj01N5f7w",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-bookmark",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Bookmarks.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "2cn9iY3Qgyjs",
-                                            "title": "plus.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Bookmarks_plus.png"
-                                        },
-                                        {
-                                            "attachmentId": "JaiAT3dHDIyy",
-                                            "title": "plus.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Bookmarks_plus.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "veGu4faJErEM",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "veGu4faJErEM"
-                                    ],
-                                    "title": "Content language & Right-to-left support",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-align-right",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Content language & Right-to-le.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "xIGmhxc0vBlC",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Content language & Right-t.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "2x0ZAX9ePtzV",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "2x0ZAX9ePtzV"
-                                    ],
-                                    "title": "Cut to subnote",
-                                    "notePosition": 40,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-cut",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Cut to subnote.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "eFVU3SiVi9Bi",
-                                            "title": "cut-to-subnote.gif",
-                                            "role": "image",
-                                            "mime": "image/gif",
-                                            "position": 10,
-                                            "dataFileName": "Cut to subnote_cut-to-subn.gif"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "UYuUB1ZekNQU",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "UYuUB1ZekNQU"
-                                    ],
-                                    "title": "Developer-specific formatting",
-                                    "notePosition": 50,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "QxEyIjRBizuC",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-code-alt",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Developer-specific formatting.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "7tX4ckOSF8jq",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Developer-specific formatt.png"
-                                        },
-                                        {
-                                            "attachmentId": "HP741oAz3ebU",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Developer-specific formatt.png"
-                                        },
-                                        {
-                                            "attachmentId": "r8POqVPCOgmq",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Developer-specific formatt.png"
-                                        },
-                                        {
-                                            "attachmentId": "UkvE6wdUVadb",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_Developer-specific formatt.png"
-                                        },
-                                        {
-                                            "attachmentId": "V9BY5v8WX15Q",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "4_Developer-specific formatt.png"
-                                        },
-                                        {
-                                            "attachmentId": "VYcvGUzbobxQ",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Developer-specific formatt.png"
-                                        },
-                                        {
-                                            "attachmentId": "yKVC2F773Mg7",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "6_Developer-specific formatt.png"
-                                        }
-                                    ],
-                                    "dirFileName": "Developer-specific formatting",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "QxEyIjRBizuC",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "KSZ04uQ2D1St",
-                                                "iPIMuisry3hd",
-                                                "UYuUB1ZekNQU",
-                                                "QxEyIjRBizuC"
-                                            ],
-                                            "title": "Code blocks",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "6f9hih2hXXZk",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "CoFPLs3dRlXc",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "4TIF1oA4VQRO",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "nRhnJkTT8cPs",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "s8alTXmpFR61",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-code",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Code blocks.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "7HhhhyZ4AS0A",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Code blocks_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "DyHSLO958cdd",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/jpg",
-                                                    "position": 10,
-                                                    "dataFileName": "1_Code blocks_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "kE8PPw7iyuu9",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "2_Code blocks_image.png"
-                                                }
-                                            ]
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "AgjCISero73a",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "AgjCISero73a"
-                                    ],
-                                    "title": "Footnotes",
-                                    "notePosition": 60,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-bracket",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Footnotes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "33O4oRqrnYWb",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Footnotes_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "J0Rc5ZC9qozK",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Footnotes_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "nRhnJkTT8cPs",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "nRhnJkTT8cPs"
-                                    ],
-                                    "title": "Formatting toolbar",
-                                    "notePosition": 70,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_optionsTextNotes",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-text",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Formatting toolbar.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "CZ8ENj2LsBsA",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Formatting toolbar_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "iu9xb3VivIIl",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "1_Formatting toolbar_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "MMeih4nJVgNk",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "2_Formatting toolbar_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "SGaPJHzNyLLV",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "3_Formatting toolbar_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "Gr6xFaF6ioJ5",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "Gr6xFaF6ioJ5"
-                                    ],
-                                    "title": "General formatting",
-                                    "notePosition": 80,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Wy267RK4M69c",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Oau6X9rCuegd",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YfYAtQBcfo5V",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-bold",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "General formatting.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "4AfLRjhK3pZP",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "General formatting_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "OkGcMBKy5b38",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_General formatting_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "QlP03tA4G97k",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_General formatting_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "SwE8rNYiMEBb",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_General formatting_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "VRNPOor1LpMY",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_General formatting_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "AxshuNRegLAv",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "AxshuNRegLAv"
-                                    ],
-                                    "title": "Highlights list",
-                                    "notePosition": 90,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "RnaPdbciOfeq",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "XpOYSgsLkTJy",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_optionsTextNotes",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BFvAtE74rbP6",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-highlight",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Highlights list.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "lDcgRFQO5hDE",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Highlights list_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "mT0HEkOsz6i1",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "mT0HEkOsz6i1"
-                                    ],
-                                    "title": "Images",
-                                    "notePosition": 100,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "0vhv7lsOLy82",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "kBrnXNG3Hplm",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "4TIF1oA4VQRO",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "8YBEPzcpUgxw",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "NdowYOC1GFKS",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "images",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-image-alt",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Images.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "40jG4olRNAlc",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "bDkYm34QEH5a",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "1_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Bi9LiB0eMbcH",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "2_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "dRgFtpOcHwke",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "3_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "g7xB3E2Dva2q",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Ilz9SuEj39RF",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "MTsRB4C0yvKX",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "6_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "NZJRGKS6yDeg",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "7_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "PUjxzv10IJkx",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "8_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "qJXx7vPPD4JW",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "9_Images_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "SoDKgOmDoyc1",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "10_Images_image.png"
-                                        }
-                                    ],
-                                    "dirFileName": "Images",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "0Ofbk1aSuVRu",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "KSZ04uQ2D1St",
-                                                "iPIMuisry3hd",
-                                                "mT0HEkOsz6i1",
-                                                "0Ofbk1aSuVRu"
-                                            ],
-                                            "title": "Image references",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "iPIMuisry3hd",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "grjYqerjn243",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "s1aBHPd79XYj",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "gBbsAeiuUxI5",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "XpOYSgsLkTJy",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "s8alTXmpFR61",
-                                                    "isInheritable": false,
-                                                    "position": 60
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bxs-file-image",
-                                                    "isInheritable": false,
-                                                    "position": 80
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Image references.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "6OgYPJ60Uz76",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Image references_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "72VNSgANtMVT",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "1_Image references_image.png"
-                                                }
-                                            ]
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "nBAXQFj20hS1",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "nBAXQFj20hS1"
-                                    ],
-                                    "title": "Include Note",
-                                    "notePosition": 110,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R9pX4DGra2Vt",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Include Note.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "GoLuBbQUYIQE",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Include Note_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "CohkqWQC1iBv",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "CohkqWQC1iBv"
-                                    ],
-                                    "title": "Insert buttons",
-                                    "notePosition": 120,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oSuaNgyyKnhu",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "s1aBHPd79XYj",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nBAXQFj20hS1",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "NRnIZmSMc5sj",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YfYAtQBcfo5V",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-plus",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Insert buttons.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "1yYoQCxcL89p",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "75Y6A4kigDhM",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "dZrJ32Cz13fg",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Mj8uDOt36GM8",
-                                            "title": "plus.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Insert buttons_plus.png"
-                                        },
-                                        {
-                                            "attachmentId": "N1WMDAlCsrdy",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Oh4esHvmpwwS",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Pbux81ahBpld",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "r3blICK1PaXy",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "6_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "rpuASdGA28bV",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "7_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "sNeqHszPiist",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "8_Insert buttons_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "wTs0nELuclAk",
-                                            "title": "plus.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Insert buttons_plus.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "oiVPnW8QfnvS",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "oiVPnW8QfnvS"
-                                    ],
-                                    "title": "Keyboard shortcuts",
-                                    "notePosition": 130,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "UYuUB1ZekNQU",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "MI26XDLSAlCD",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "QEAPj01N5f7w",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YfYAtQBcfo5V",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-keyboard",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Keyboard shortcuts.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "QEAPj01N5f7w",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "QEAPj01N5f7w"
-                                    ],
-                                    "title": "Links",
-                                    "notePosition": 140,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "3IDVtesTQ8ds",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "hrZ1D00cLbal",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BCkXAVs63Ttv",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "links",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-link-alt",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Links.md",
-                                    "attachments": [],
-                                    "dirFileName": "Links",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "3IDVtesTQ8ds",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "KSZ04uQ2D1St",
-                                                "iPIMuisry3hd",
-                                                "QEAPj01N5f7w",
-                                                "3IDVtesTQ8ds"
-                                            ],
-                                            "title": "External links",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "nRhnJkTT8cPs",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-link-external",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "External links.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "4iWGIpzSV6MV",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "External links_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "7VIWlzGk8mAN",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "1_External links_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "ScPPPlw9Ab9Y",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "2_External links_image.png"
-                                                }
-                                            ]
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "hrZ1D00cLbal",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "KSZ04uQ2D1St",
-                                                "iPIMuisry3hd",
-                                                "QEAPj01N5f7w",
-                                                "hrZ1D00cLbal"
-                                            ],
-                                            "title": "Internal (reference) links",
-                                            "notePosition": 20,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "nRhnJkTT8cPs",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-link",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Internal (reference) links.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "ausNE2PtmeVB",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Internal (reference) links.png"
-                                                }
-                                            ]
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "S6Xx8QIWTV66",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "S6Xx8QIWTV66"
-                                    ],
-                                    "title": "Lists",
-                                    "notePosition": 150,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "dEHYtoWWi8ct",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-list-ul",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Lists.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "1d3z8mz0JANE",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "7YtO7boIQcSu",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "eCftcYsVKdAI",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "fB3ZhdfysYC3",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "3_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "IZewdPx4evIx",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "JopMc0iA0dqA",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "5_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "kZMYrJubac6T",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "6_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "PGeVq8YAQBFA",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "7_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "VgoG6BtlLYn7",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "8_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "y0zFP6x0IRRf",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "9_Lists_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "z8eVlXe2WKqr",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "10_Lists_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "QrtTYPmdd1qq",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "QrtTYPmdd1qq"
-                                    ],
-                                    "title": "Markdown-like formatting",
-                                    "notePosition": 160,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Oau6X9rCuegd",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Gr6xFaF6ioJ5",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "S6Xx8QIWTV66",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "NwBbFdNZ9h7O",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "QxEyIjRBizuC",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CohkqWQC1iBv",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "dEHYtoWWi8ct",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxl-markdown",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Markdown-like formatting.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "YfYAtQBcfo5V",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "YfYAtQBcfo5V"
-                                    ],
-                                    "title": "Math Equations",
-                                    "notePosition": 170,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CohkqWQC1iBv",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wy8So3yZZlH9",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-math",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Math Equations.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "8eaDWXBew9Q8",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Math Equations_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "B7EEd3MJTg7C",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Math Equations_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "dEHYtoWWi8ct",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "dEHYtoWWi8ct"
-                                    ],
-                                    "title": "Other features",
-                                    "notePosition": 180,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nRhnJkTT8cPs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "S6Xx8QIWTV66",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Oau6X9rCuegd",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "2x0ZAX9ePtzV",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-grid",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Other features.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "4ik2A185UZ8W",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Other features_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "o7PD1tyys94h",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Other features_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "po6eICABPAsk",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Other features_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "qCefsqgbbdjp",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_Other features_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "QTaczw8qoYL2",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Other features_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Roz4NVWVufdl",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Other features_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "x3lcgBCJOVzB",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "6_Other features_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "gLt3vA97tMcp",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "gLt3vA97tMcp"
-                                    ],
-                                    "title": "Premium features",
-                                    "notePosition": 190,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wy8So3yZZlH9",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-star",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Premium features.md",
-                                    "attachments": [],
-                                    "dirFileName": "Premium features",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "ZlN4nump6EbW",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "KSZ04uQ2D1St",
-                                                "iPIMuisry3hd",
-                                                "gLt3vA97tMcp",
-                                                "ZlN4nump6EbW"
-                                            ],
-                                            "title": "Slash Commands",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "gLt3vA97tMcp",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "iPIMuisry3hd",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "A9Oc6YKKc65v",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "NwBbFdNZ9h7O",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "pwc194wlRzcH",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-menu",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Slash Commands.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "WUCwfWz4wTwf",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Slash Commands_image.png"
-                                                }
-                                            ]
-                                        },
-                                        {
-                                            "isClone": false,
-                                            "noteId": "pwc194wlRzcH",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "KSZ04uQ2D1St",
-                                                "iPIMuisry3hd",
-                                                "gLt3vA97tMcp",
-                                                "pwc194wlRzcH"
-                                            ],
-                                            "title": "Text Snippets",
-                                            "notePosition": 20,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "gLt3vA97tMcp",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "KC1HB96bqqHX",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "oPVyFC7WL2Lp",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "OFXdgB2nNk1F",
-                                                    "isInheritable": false,
-                                                    "position": 40
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "nRhnJkTT8cPs",
-                                                    "isInheritable": false,
-                                                    "position": 50
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "ZlN4nump6EbW",
-                                                    "isInheritable": false,
-                                                    "position": 60
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "9sRHySam5fXb",
-                                                    "isInheritable": false,
-                                                    "position": 70
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "s8alTXmpFR61",
-                                                    "isInheritable": false,
-                                                    "position": 80
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "wy8So3yZZlH9",
-                                                    "isInheritable": false,
-                                                    "position": 90
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-align-left",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "Text Snippets.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "1hG8Yw0DTTxr",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Text Snippets_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "DlisV0iJLVec",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "1_Text Snippets_image.png"
-                                                }
-                                            ]
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "BFvAtE74rbP6",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "BFvAtE74rbP6"
-                                    ],
-                                    "title": "Table of contents",
-                                    "notePosition": 200,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "RnaPdbciOfeq",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "XpOYSgsLkTJy",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_optionsTextNotes",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-heading",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Table of contents.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "DL6PJX71Fk3S",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Table of contents_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "NdowYOC1GFKS",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "iPIMuisry3hd",
-                                        "NdowYOC1GFKS"
-                                    ],
-                                    "title": "Tables",
-                                    "notePosition": 210,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "mT0HEkOsz6i1",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-table",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Tables.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "60aP3UCfhfth",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "6v5g6D1BpJQD",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "75Kw8b8KOtBo",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "8mu4ZDtWl2wL",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "cFoSdHv9ada4",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "db1nOmkrTQSe",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "faKP7Qh4osof",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "6_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "LaeDASzm6aJg",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "7_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "pYIg6LGvQANx",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "8_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "UdhsypjV4pzZ",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "9_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "VerzwlO9y6Na",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "10_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "wYkQvargZlNF",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "11_Tables_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "YFGeAN41kvZY",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "12_Tables_image.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "6f9hih2hXXZk",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "6f9hih2hXXZk"
-                            ],
-                            "title": "Code",
-                            "notePosition": 40,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BlN9DFI679QC",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "4TIF1oA4VQRO",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iPIMuisry3hd",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "QxEyIjRBizuC",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "s8alTXmpFR61",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "code-notes",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-code",
-                                    "isInheritable": false,
-                                    "position": 90
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Code.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "hajUVeLs3EOM",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Code_image.png"
-                                },
-                                {
-                                    "attachmentId": "iKJbcEUkME1a",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "1_Code_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "m523cpzocqaD",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "m523cpzocqaD"
-                            ],
-                            "title": "Saved Search",
-                            "notePosition": 60,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "9sRHySam5fXb",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "saved-search",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-file-find",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Saved Search.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "FHgW8mO3DAPR",
-                                    "title": "saved-search.gif",
-                                    "role": "image",
-                                    "mime": "image/gif",
-                                    "position": 10,
-                                    "dataFileName": "Saved Search_saved-search.gif"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "iRwzGnHPzonm",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "iRwzGnHPzonm"
-                            ],
-                            "title": "Relation Map",
-                            "notePosition": 70,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BFs8mudNFgCS",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "OFXdgB2nNk1F",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BCkXAVs63Ttv",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "relation-map",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-network-chart",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Relation Map.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "14cTNGCN2eRq",
-                                    "title": "relation-map-family-demo.gif",
-                                    "role": "image",
-                                    "mime": "image/gif",
-                                    "position": 10,
-                                    "dataFileName": "Relation Map_relation-map-.gif"
-                                },
-                                {
-                                    "attachmentId": "OfRWMQ0nY400",
-                                    "title": "relation-map-family.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Relation Map_relation-map-.png"
-                                },
-                                {
-                                    "attachmentId": "VdiG1uzPjw3q",
-                                    "title": "relation-map-dev-process.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Relation Map_relation-map-.png"
-                                },
-                                {
-                                    "attachmentId": "x92CIQzusTuc",
-                                    "title": "relation-map-dev-process-demo.gif",
-                                    "role": "image",
-                                    "mime": "image/gif",
-                                    "position": 10,
-                                    "dataFileName": "1_Relation Map_relation-map-.gif"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "bdUJEHsAPYQR",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "bdUJEHsAPYQR"
-                            ],
-                            "title": "Note Map",
-                            "notePosition": 90,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BCkXAVs63Ttv",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-network-chart",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Note Map.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "iSjacTLiMjyr",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Note Map_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "HcABDtFCkbFN",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "HcABDtFCkbFN"
-                            ],
-                            "title": "Render Note",
-                            "notePosition": 110,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6f9hih2hXXZk",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "HcABDtFCkbFN",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "R7abl2fc6Mxi",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6tZeKvSHEUiB",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-extension",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Render Note.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "SeTpR7xEDMvQ",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Render Note_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "GTwFsgaA0lCt",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "GTwFsgaA0lCt"
-                            ],
-                            "title": "Collections",
-                            "notePosition": 130,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "8QqnMzx393bx",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0ESUbbAxVnoK",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "mULW0Q3VojwY",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "xWbu3jpNWapp",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "81SGnPGMk7Xc",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "2FvYrpmOXm29",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "OFXdgB2nNk1F",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CtBQqbwXDx1w",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BlN9DFI679QC",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "oPVyFC7WL2Lp",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "m523cpzocqaD",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "KC1HB96bqqHX",
-                                    "isInheritable": false,
-                                    "position": 120
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "2mUhVmZK8RF3",
-                                    "isInheritable": false,
-                                    "position": 130
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "book-note",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-book",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Collections.md",
-                            "attachments": [],
-                            "dirFileName": "Collections",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "xWbu3jpNWapp",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "GTwFsgaA0lCt",
-                                        "xWbu3jpNWapp"
-                                    ],
-                                    "title": "Calendar View",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "ZjLYv08Rp3qC",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-calendar",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Calendar View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "37CfbqKYcOtd",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "akAHcIEcGnWR",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "AU7dnIevWPrz",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "COiR1tnE86i1",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "fOdCNTs2BuI0",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "HfBu0m3WXtn2",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "ho00OJTNrxVI",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "6_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "irfNX8n4159U",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "7_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "KF56rdNuOwWd",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "8_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "oBWr5GL6cUAZ",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "9_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "oS6yUoQtfhpg",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "10_Calendar View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "u2c09UpZghff",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "11_Calendar View_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "81SGnPGMk7Xc",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "GTwFsgaA0lCt",
-                                        "81SGnPGMk7Xc"
-                                    ],
-                                    "title": "Geo Map View",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KSZ04uQ2D1St",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "0ESUbbAxVnoK",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "XpOYSgsLkTJy",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "IakOLONlIfGI",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "lgKX7r3aL30x",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "ZjLYv08Rp3qC",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-map-alt",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Geo Map View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "1f07O0Z25ZRr",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "3oh61qhNLu7D",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "aCSNn9QlgHFi",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "2_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "aCuXZY7WV4li",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "3_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "agH6yREFgsoU",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "4_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "AHyDUM6R5HeG",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "5_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "CcjWLhE3KKfv",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "6_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "fQy8R1vxKhwN",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "7_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "gJ4Yz80jxcbn",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "8_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "I39BinT2gsN9",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "9_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "IeXU8SLZU7Oz",
-                                            "title": "image.jpg",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Geo Map View_image.jpg"
-                                        },
-                                        {
-                                            "attachmentId": "Mb9kRm63MxjE",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "10_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Mx2xwNIk76ZS",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "11_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "oaahbsMRbqd2",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "12_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "pGf1p74KKGU4",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "13_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "tfa1TRUatWEh",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "14_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "tuNZ7Uk9WfX1",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "15_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "x6yBLIsY2LSv",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "16_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "yJMyBRYA3Kwi",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "17_Geo Map View_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "ZvTlu9WMd37z",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "18_Geo Map View_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "8QqnMzx393bx",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "GTwFsgaA0lCt",
-                                        "8QqnMzx393bx"
-                                    ],
-                                    "title": "Grid View",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "0ESUbbAxVnoK",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "W8vYD3Q1zjCR",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-grid",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Grid View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "al3KatZRq5TB",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Grid View_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "mULW0Q3VojwY",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "GTwFsgaA0lCt",
-                                        "mULW0Q3VojwY"
-                                    ],
-                                    "title": "List View",
-                                    "notePosition": 40,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "8QqnMzx393bx",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-list-ul",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "List View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "igeOEpKp4ygW",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "List View_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "2FvYrpmOXm29",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "GTwFsgaA0lCt",
-                                        "2FvYrpmOXm29"
-                                    ],
-                                    "title": "Table View",
-                                    "notePosition": 50,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "m1lbrzyKDaRB",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "eIg8jdvaoNNd",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CdNpE2pqjmI6",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "m523cpzocqaD",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-table",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Table View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "vJYUG9fLQ2Pd",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Table View_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "CtBQqbwXDx1w",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "GTwFsgaA0lCt",
-                                        "CtBQqbwXDx1w"
-                                    ],
-                                    "title": "Board View",
-                                    "notePosition": 60,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "2FvYrpmOXm29",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-columns",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Board View.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "usSSa0WI6dDK",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Board View_image.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "s1aBHPd79XYj",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "s1aBHPd79XYj"
-                            ],
-                            "title": "Mermaid Diagrams",
-                            "notePosition": 140,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "XpOYSgsLkTJy",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0Ofbk1aSuVRu",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "mermaid-diagrams",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-selection",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Mermaid Diagrams.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "EN4DhmgiSH6t",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Mermaid Diagrams_image.png"
-                                },
-                                {
-                                    "attachmentId": "if9nzuWHt5KP",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Mermaid Diagrams_image.png"
-                                },
-                                {
-                                    "attachmentId": "TpPwoCFIePXm",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_Mermaid Diagrams_image.png"
-                                }
-                            ],
-                            "dirFileName": "Mermaid Diagrams",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "RH6yLjjWJHof",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "KSZ04uQ2D1St",
-                                        "s1aBHPd79XYj",
-                                        "RH6yLjjWJHof"
-                                    ],
-                                    "title": "ELK layout",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bxs-network-chart",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "ELK layout.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "DOY5C5S4vCs7",
-                                            "title": "ELK off.svg",
-                                            "role": "image",
-                                            "mime": "image/svg+xml",
-                                            "position": 10,
-                                            "dataFileName": "ELK layout_ELK off.svg"
-                                        },
-                                        {
-                                            "attachmentId": "E1ysxcfkmGBZ",
-                                            "title": "ELK on.svg",
-                                            "role": "image",
-                                            "mime": "image/svg+xml",
-                                            "position": 10,
-                                            "dataFileName": "ELK layout_ELK on.svg"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "grjYqerjn243",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "grjYqerjn243"
-                            ],
-                            "title": "Canvas",
-                            "notePosition": 170,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-pen",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Canvas.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "DC9fvvootwwZ",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Canvas_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "1vHRoWCEjj0L",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "1vHRoWCEjj0L"
-                            ],
-                            "title": "Web View",
-                            "notePosition": 180,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-globe-alt",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Web View.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "gBbsAeiuUxI5",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "gBbsAeiuUxI5"
-                            ],
-                            "title": "Mind Map",
-                            "notePosition": 190,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "XpOYSgsLkTJy",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0Ofbk1aSuVRu",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-sitemap",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Mind Map.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "Od9jIuQHijXH",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Mind Map_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "W8vYD3Q1zjCR",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "KSZ04uQ2D1St",
-                                "W8vYD3Q1zjCR"
-                            ],
-                            "title": "File",
-                            "notePosition": 210,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "oPVyFC7WL2Lp",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ODY7qQn5m2FT",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "mHbBMPDPkVV5",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6f9hih2hXXZk",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BlN9DFI679QC",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0vhv7lsOLy82",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "8YBEPzcpUgxw",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0ESUbbAxVnoK",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iPIMuisry3hd",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0Ofbk1aSuVRu",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "nBAXQFj20hS1",
-                                    "isInheritable": false,
-                                    "position": 120
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "File.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "82as0jgkDvVH",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "File_image.png"
-                                },
-                                {
-                                    "attachmentId": "FoEnowwOhzLT",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_File_image.png"
-                                },
-                                {
-                                    "attachmentId": "fZ7VMfQJWuLQ",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_File_image.png"
-                                },
-                                {
-                                    "attachmentId": "hddkgf7kr9g4",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "3_File_image.png"
-                                },
-                                {
-                                    "attachmentId": "hIg9g5pgsjS3",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "4_File_image.png"
-                                },
-                                {
-                                    "attachmentId": "IC0j8LFCOKka",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "5_File_image.png"
-                                },
-                                {
-                                    "attachmentId": "wNHX24feZRAl",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "6_File_image.png"
-                                }
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "BgmBlOIl72jZ",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "BgmBlOIl72jZ"
-                    ],
-                    "title": "Troubleshooting",
-                    "notePosition": 250,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/markdown",
-                    "attributes": [
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "MgibgPcfeuGz",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "x59R8J8KV5Bp",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "ODY7qQn5m2FT",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "wX4HbRucYSDD",
-                            "isInheritable": false,
-                            "position": 40
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "tAassRL4RSQL",
-                            "isInheritable": false,
-                            "position": 50
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "qzNzp9LYQyPT",
-                            "isInheritable": false,
-                            "position": 60
-                        },
-                        {
-                            "type": "label",
-                            "name": "shareAlias",
-                            "value": "troubleshooting",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-bug",
-                            "isInheritable": false,
-                            "position": 30
-                        }
-                    ],
-                    "format": "markdown",
-                    "dataFileName": "Troubleshooting.md",
-                    "attachments": [],
-                    "dirFileName": "Troubleshooting",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "wy8So3yZZlH9",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "BgmBlOIl72jZ",
-                                "wy8So3yZZlH9"
-                            ],
-                            "title": "Reporting issues",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [],
-                            "format": "markdown",
-                            "dataFileName": "Reporting issues.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "x59R8J8KV5Bp",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "BgmBlOIl72jZ",
-                                "x59R8J8KV5Bp"
-                            ],
-                            "title": "Anonymized Database",
-                            "notePosition": 20,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "tAassRL4RSQL",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "anonymized-database",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Anonymized Database.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "xh9biKiOnMJv",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Anonymized Database_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "qzNzp9LYQyPT",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "BgmBlOIl72jZ",
-                                "qzNzp9LYQyPT"
-                            ],
-                            "title": "Error logs",
-                            "notePosition": 30,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bnyigUA2UK7s",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "9yEHzMyFirZR",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "x59R8J8KV5Bp",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "error-logs",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-comment-error",
-                                    "isInheritable": false,
-                                    "position": 60
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Error logs.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "ReQzLPod6UtU",
-                                    "title": "error-logs-export-subtree.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Error logs_error-logs-expo.png"
-                                }
-                            ],
-                            "dirFileName": "Error logs",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "bnyigUA2UK7s",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "BgmBlOIl72jZ",
-                                        "qzNzp9LYQyPT",
-                                        "bnyigUA2UK7s"
-                                    ],
-                                    "title": "Backend (server) logs",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "x3i7MxGccDuM",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "tAassRL4RSQL",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Gzjqa934BdH4",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-server",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Backend (server) logs.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "9yEHzMyFirZR",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "BgmBlOIl72jZ",
-                                        "qzNzp9LYQyPT",
-                                        "9yEHzMyFirZR"
-                                    ],
-                                    "title": "Frontend logs",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-window-alt",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Frontend logs.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "vRup2YTDpWPM",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Frontend logs_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Y05WqmS4uMMt",
-                                            "title": "error-logs-firefox-context-men.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Frontend logs_error-logs-f.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "vdlYGAcpXAgc",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "BgmBlOIl72jZ",
-                                "vdlYGAcpXAgc"
-                            ],
-                            "title": "Synchronization fails with 504 Gateway Timeout",
-                            "notePosition": 50,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ud6MShXL4WpO",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Synchronization fails with 504.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "s8alTXmpFR61",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "BgmBlOIl72jZ",
-                                "s8alTXmpFR61"
-                            ],
-                            "title": "Refreshing the application",
-                            "notePosition": 60,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [],
-                            "format": "markdown",
-                            "dataFileName": "Refreshing the application.md",
-                            "attachments": []
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "pKK96zzmvBGf",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "pKK96zzmvBGf"
-                    ],
-                    "title": "Theme development",
-                    "notePosition": 260,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/html",
-                    "attributes": [
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-palette",
-                            "isInheritable": false,
-                            "position": 10
-                        }
-                    ],
-                    "format": "markdown",
-                    "attachments": [],
-                    "dirFileName": "Theme development",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "7NfNr5pZpVKV",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "pKK96zzmvBGf",
-                                "7NfNr5pZpVKV"
-                            ],
-                            "title": "Creating a custom theme",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "WFGzWeUK6arS",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Creating a custom theme.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "7M6PnFYlxR2t",
-                                    "title": "3_Creating a custom theme_im.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Creating a custom theme_3_.png"
-                                },
-                                {
-                                    "attachmentId": "hJc5fBNfSLoY",
-                                    "title": "Creating a custom theme_im.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Creating a custom theme_Cr.png"
-                                },
-                                {
-                                    "attachmentId": "j3OaGihW6eg3",
-                                    "title": "1_Creating a custom theme_im.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Creating a custom theme_1_.png"
-                                },
-                                {
-                                    "attachmentId": "LCQ6zvUbvXQr",
-                                    "title": "4_Creating a custom theme_im.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Creating a custom theme_4_.png"
-                                },
-                                {
-                                    "attachmentId": "mY5EGlN7TO6I",
-                                    "title": "5_Creating a custom theme_im.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Creating a custom theme_5_.png"
-                                },
-                                {
-                                    "attachmentId": "TMHEj1M3XFGO",
-                                    "title": "2_Creating a custom theme_im.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Creating a custom theme_2_.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "WFGzWeUK6arS",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "pKK96zzmvBGf",
-                                "WFGzWeUK6arS"
-                            ],
-                            "title": "Customize the Next theme",
-                            "notePosition": 20,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [],
-                            "format": "markdown",
-                            "dataFileName": "Customize the Next theme.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "3fAj97aV2noG",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Customize the Next theme_i.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "WN5z4M8ASACJ",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "pKK96zzmvBGf",
-                                "WN5z4M8ASACJ"
-                            ],
-                            "title": "Reference",
-                            "notePosition": 30,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "d3fAXQ2diepH",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Reference.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "AlhDUqhENtH7",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "pKK96zzmvBGf",
-                                "AlhDUqhENtH7"
-                            ],
-                            "title": "Custom app-wide CSS",
-                            "notePosition": 40,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "9sRHySam5fXb",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "oPVyFC7WL2Lp",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Custom app-wide CSS.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "fkMLaf6reA6I",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Custom app-wide CSS_image.png"
-                                },
-                                {
-                                    "attachmentId": "qBzZ9Qpxwoba",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Custom app-wide CSS_image.png"
-                                },
-                                {
-                                    "attachmentId": "TIerrMjmeich",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_Custom app-wide CSS_image.png"
-                                },
-                                {
-                                    "attachmentId": "YUrNq5vsCwHe",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "3_Custom app-wide CSS_image.png"
-                                }
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "tC7s2alapj8V",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "tC7s2alapj8V"
-                    ],
-                    "title": "Advanced Usage",
-                    "notePosition": 320,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/html",
-                    "attributes": [
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-rocket",
-                            "isInheritable": false,
-                            "position": 10
-                        }
-                    ],
-                    "format": "markdown",
-                    "attachments": [],
-                    "dirFileName": "Advanced Usage",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "zEY4DaJG4YT5",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "zEY4DaJG4YT5"
-                            ],
-                            "title": "Attributes",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "HI6GBBIduIgv",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Cq5X6iKQop6R",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "BlN9DFI679QC",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "OFXdgB2nNk1F",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bwZpz2ajCEwO",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "attributes",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-list-check",
-                                    "isInheritable": false,
-                                    "position": 110
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Attributes.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "4YqnV7iugVCJ",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Attributes_image.png"
-                                }
-                            ],
-                            "dirFileName": "Attributes",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "HI6GBBIduIgv",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "zEY4DaJG4YT5",
-                                        "HI6GBBIduIgv"
-                                    ],
-                                    "title": "Labels",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R7abl2fc6Mxi",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwZpz2ajCEwO",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "l0tKav7yLHGF",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "_help_YKWqdJhzi2VY",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "vZWERwf8U3nx",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 90
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GPERMystNGTB",
-                                            "isInheritable": false,
-                                            "position": 100
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CoFPLs3dRlXc",
-                                            "isInheritable": false,
-                                            "position": 110
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "AlhDUqhENtH7",
-                                            "isInheritable": false,
-                                            "position": 120
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "pKK96zzmvBGf",
-                                            "isInheritable": false,
-                                            "position": 130
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "WFGzWeUK6arS",
-                                            "isInheritable": false,
-                                            "position": 140
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "0ESUbbAxVnoK",
-                                            "isInheritable": false,
-                                            "position": 150
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "J5Ex1ZrMbyJ6",
-                                            "isInheritable": false,
-                                            "position": 160
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "d3fAXQ2diepH",
-                                            "isInheritable": false,
-                                            "position": 170
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "MgibgPcfeuGz",
-                                            "isInheritable": false,
-                                            "position": 180
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "m523cpzocqaD",
-                                            "isInheritable": false,
-                                            "position": 190
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "9sRHySam5fXb",
-                                            "isInheritable": false,
-                                            "position": 200
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "u3YFHC9tQlpm",
-                                            "isInheritable": false,
-                                            "position": 210
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R9pX4DGra2Vt",
-                                            "isInheritable": false,
-                                            "position": 220
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iRwzGnHPzonm",
-                                            "isInheritable": false,
-                                            "position": 230
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BCkXAVs63Ttv",
-                                            "isInheritable": false,
-                                            "position": 240
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "47ZrP6FNuoG8",
-                                            "isInheritable": false,
-                                            "position": 250
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KC1HB96bqqHX",
-                                            "isInheritable": false,
-                                            "position": 260
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BFvAtE74rbP6",
-                                            "isInheritable": false,
-                                            "position": 270
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bdUJEHsAPYQR",
-                                            "isInheritable": false,
-                                            "position": 280
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "AxshuNRegLAv",
-                                            "isInheritable": false,
-                                            "position": 290
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "81SGnPGMk7Xc",
-                                            "isInheritable": false,
-                                            "position": 300
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xWbu3jpNWapp",
-                                            "isInheritable": false,
-                                            "position": 310
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-hash",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Labels.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "Cq5X6iKQop6R",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "zEY4DaJG4YT5",
-                                        "Cq5X6iKQop6R"
-                                    ],
-                                    "title": "Relations",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "HI6GBBIduIgv",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwZpz2ajCEwO",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "HcABDtFCkbFN",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R9pX4DGra2Vt",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KC1HB96bqqHX",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BlN9DFI679QC",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "oPVyFC7WL2Lp",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GPERMystNGTB",
-                                            "isInheritable": false,
-                                            "position": 90
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-transfer",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Relations.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "bwZpz2ajCEwO",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "zEY4DaJG4YT5",
-                                        "bwZpz2ajCEwO"
-                                    ],
-                                    "title": "Attribute Inheritance",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "HI6GBBIduIgv",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Cq5X6iKQop6R",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KC1HB96bqqHX",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "attribute-inheritance",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-list-plus",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Attribute Inheritance.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "OFXdgB2nNk1F",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "zEY4DaJG4YT5",
-                                        "OFXdgB2nNk1F"
-                                    ],
-                                    "title": "Promoted Attributes",
-                                    "notePosition": 40,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwZpz2ajCEwO",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "promoted-attributes",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-table",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Promoted Attributes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "4EcBRWF9iCk2",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Promoted Attributes_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "Txf5Jdm2vqt2",
-                                            "title": "promoted-attributes.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Promoted Attributes_promot.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "KC1HB96bqqHX",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "KC1HB96bqqHX"
-                            ],
-                            "title": "Templates",
-                            "notePosition": 30,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bwZpz2ajCEwO",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "OFXdgB2nNk1F",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "xYjQUYhpbUEW",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "l0tKav7yLHGF",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "47ZrP6FNuoG8",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "9sRHySam5fXb",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iRwzGnHPzonm",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "template",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-copy",
-                                    "isInheritable": false,
-                                    "position": 110
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Templates.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "65tzLidJl1uU",
-                                    "title": "template.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Templates_template.png"
-                                },
-                                {
-                                    "attachmentId": "72yQHFCV84st",
-                                    "title": "template-create-instance-note.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Templates_template-create-.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "BCkXAVs63Ttv",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "BCkXAVs63Ttv"
-                            ],
-                            "title": "Note Map (Link map, Tree map)",
-                            "notePosition": 40,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bdUJEHsAPYQR",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iRwzGnHPzonm",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "note-map",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-network-chart",
-                                    "isInheritable": false,
-                                    "position": 40
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Note Map (Link map, Tree map).md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "F48iB3BbITHb",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "Note Map (Link map, Tree m.png"
-                                },
-                                {
-                                    "attachmentId": "scmGuoLQPj8C",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/jpg",
-                                    "position": 10,
-                                    "dataFileName": "1_Note Map (Link map, Tree m.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "R9pX4DGra2Vt",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "R9pX4DGra2Vt"
-                            ],
-                            "title": "Sharing",
-                            "notePosition": 60,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iPIMuisry3hd",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "nBAXQFj20hS1",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6f9hih2hXXZk",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "m523cpzocqaD",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iRwzGnHPzonm",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bdUJEHsAPYQR",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "HcABDtFCkbFN",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "GTwFsgaA0lCt",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "s1aBHPd79XYj",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "grjYqerjn243",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "1vHRoWCEjj0L",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "gBbsAeiuUxI5",
-                                    "isInheritable": false,
-                                    "position": 120
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "81SGnPGMk7Xc",
-                                    "isInheritable": false,
-                                    "position": 130
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "W8vYD3Q1zjCR",
-                                    "isInheritable": false,
-                                    "position": 140
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "WOcw2SLH6tbX",
-                                    "isInheritable": false,
-                                    "position": 150
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "x3i7MxGccDuM",
-                                    "isInheritable": false,
-                                    "position": 160
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bwZpz2ajCEwO",
-                                    "isInheritable": false,
-                                    "position": 170
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Wy267RK4M69c",
-                                    "isInheritable": false,
-                                    "position": 180
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Qjt68inQ2bRj",
-                                    "isInheritable": false,
-                                    "position": 190
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "sharing",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-share-alt",
-                                    "isInheritable": false,
-                                    "position": 30
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Sharing.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "ibqWQUOCMhIE",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Sharing_image.png"
-                                },
-                                {
-                                    "attachmentId": "ShhsPSZVMQKx",
-                                    "title": "share-single-note.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Sharing_share-single-note.png"
-                                }
-                            ],
-                            "dirFileName": "Sharing",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "Qjt68inQ2bRj",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "R9pX4DGra2Vt",
-                                        "Qjt68inQ2bRj"
-                                    ],
-                                    "title": "Serving directly the content of a note",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "Serving directly the content o.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "eizmhhmocL6L",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Serving directly the conte.png"
-                                        },
-                                        {
-                                            "attachmentId": "ixkXFTSSkdpL",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "1_Serving directly the conte.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "5668rwcirq1t",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "5668rwcirq1t"
-                            ],
-                            "title": "Advanced Showcases",
-                            "notePosition": 80,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "OFXdgB2nNk1F",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iRwzGnHPzonm",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "l0tKav7yLHGF",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "R7abl2fc6Mxi",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "xYjQUYhpbUEW",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "advanced-showcases",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Advanced Showcases.md",
-                            "attachments": [],
-                            "dirFileName": "Advanced Showcases",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "l0tKav7yLHGF",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "5668rwcirq1t",
-                                        "l0tKav7yLHGF"
-                                    ],
-                                    "title": "Day Notes",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "IakOLONlIfGI",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYjQUYhpbUEW",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R7abl2fc6Mxi",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KC1HB96bqqHX",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "ivYnonVFBxbQ",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "day-notes",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-calendar",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Day Notes.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "9wmaElfXYjWM",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Day Notes_image.png"
-                                        },
-                                        {
-                                            "attachmentId": "FL40jUEj7xLt",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "1_Day Notes_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "R7abl2fc6Mxi",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "5668rwcirq1t",
-                                        "R7abl2fc6Mxi"
-                                    ],
-                                    "title": "Weight Tracker",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "l0tKav7yLHGF",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GLks18SNjxmC",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wX4HbRucYSDD",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "KC1HB96bqqHX",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CdNpE2pqjmI6",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "weight-tracker",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Weight Tracker.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "Ah5QpwUUEGf8",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Weight Tracker_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "xYjQUYhpbUEW",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "5668rwcirq1t",
-                                        "xYjQUYhpbUEW"
-                                    ],
-                                    "title": "Task Manager",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "l0tKav7yLHGF",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "OFXdgB2nNk1F",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "CdNpE2pqjmI6",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "wX4HbRucYSDD",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "IakOLONlIfGI",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "kBrnXNG3Hplm",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "bwZpz2ajCEwO",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GPERMystNGTB",
-                                            "isInheritable": false,
-                                            "position": 90
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 100
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "task-manager",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-calendar-check",
-                                            "isInheritable": false,
-                                            "position": 120
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Task Manager.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "D0RLhLxmO9ME",
-                                            "title": "task-manager.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Task Manager_task-manager.png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "J5Ex1ZrMbyJ6",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "J5Ex1ZrMbyJ6"
-                            ],
-                            "title": "Custom Request Handler",
-                            "notePosition": 90,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6f9hih2hXXZk",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "GLks18SNjxmC",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "d3fAXQ2diepH",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "custom-request-handler",
-                                    "isInheritable": false,
-                                    "position": 30
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Custom Request Handler.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "d3fAXQ2diepH",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "d3fAXQ2diepH"
-                            ],
-                            "title": "Custom Resource Providers",
-                            "notePosition": 100,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [],
-                            "format": "markdown",
-                            "dataFileName": "Custom Resource Providers.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "pgxEVkzLl1OP",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "pgxEVkzLl1OP"
-                            ],
-                            "title": "ETAPI (REST API)",
-                            "notePosition": 110,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "etapi",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "ETAPI (REST API).md",
-                            "attachments": [],
-                            "dirFileName": "ETAPI (REST API)",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "9qPsTWBorUhQ",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "pgxEVkzLl1OP",
-                                        "9qPsTWBorUhQ"
-                                    ],
-                                    "title": "API Reference",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "webView",
-                                    "mime": "",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "webViewSrc",
-                                            "value": "/etapi/docs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "dataFileName": "API Reference.dat",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "47ZrP6FNuoG8",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "47ZrP6FNuoG8"
-                            ],
-                            "title": "Default Note Title",
-                            "notePosition": 140,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "habiZ3HU8Kw8",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "KC1HB96bqqHX",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "default-note-title",
-                                    "isInheritable": false,
-                                    "position": 30
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Default Note Title.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "wX4HbRucYSDD",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "wX4HbRucYSDD"
-                            ],
-                            "title": "Database",
-                            "notePosition": 160,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "tAassRL4RSQL",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6tZeKvSHEUiB",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "oyIAJ9PvvwHX",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Gzjqa934BdH4",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "database",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-data",
-                                    "isInheritable": false,
-                                    "position": 50
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Database.md",
-                            "attachments": [],
-                            "dirFileName": "Database",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "oyIAJ9PvvwHX",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "wX4HbRucYSDD",
-                                        "oyIAJ9PvvwHX"
-                                    ],
-                                    "title": "Manually altering the database",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "YKWqdJhzi2VY",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "tAassRL4RSQL",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Manually altering the database.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "0740ph4lJ4rv",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/jpg",
-                                            "position": 10,
-                                            "dataFileName": "Manually altering the data.png"
-                                        }
-                                    ],
-                                    "dirFileName": "Manually altering the database",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "YKWqdJhzi2VY",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "tC7s2alapj8V",
-                                                "wX4HbRucYSDD",
-                                                "oyIAJ9PvvwHX",
-                                                "YKWqdJhzi2VY"
-                                            ],
-                                            "title": "SQL Console",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "l0tKav7yLHGF",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                },
-                                                {
-                                                    "type": "relation",
-                                                    "name": "internalLink",
-                                                    "value": "Vc8PjrjAGuOp",
-                                                    "isInheritable": false,
-                                                    "position": 20
-                                                },
-                                                {
-                                                    "type": "label",
-                                                    "name": "iconClass",
-                                                    "value": "bx bx-data",
-                                                    "isInheritable": false,
-                                                    "position": 30
-                                                }
-                                            ],
-                                            "format": "markdown",
-                                            "dataFileName": "SQL Console.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "1YS10Qg7S4YR",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/jpg",
-                                                    "position": 10,
-                                                    "dataFileName": "SQL Console_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "827EgLgWhZWF",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/jpg",
-                                                    "position": 10,
-                                                    "dataFileName": "1_SQL Console_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "gIbK7NNLu3iZ",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "2_SQL Console_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "pP87PB9ELjQn",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "3_SQL Console_image.png"
-                                                }
-                                            ]
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "6tZeKvSHEUiB",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "wX4HbRucYSDD",
-                                        "6tZeKvSHEUiB"
-                                    ],
-                                    "title": "Demo Notes",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "l0tKav7yLHGF",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "R7abl2fc6Mxi",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYjQUYhpbUEW",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iRwzGnHPzonm",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Wy267RK4M69c",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-package",
-                                            "isInheritable": false,
-                                            "position": 110
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Demo Notes.md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "Gzjqa934BdH4",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "Gzjqa934BdH4"
-                            ],
-                            "title": "Configuration (config.ini or environment variables)",
-                            "notePosition": 170,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "tAassRL4RSQL",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "configuration",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Configuration (config.ini or e.md",
-                            "attachments": [],
-                            "dirFileName": "Configuration (config.ini or environment variables)",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "c5xB8m4g2IY6",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "Gzjqa934BdH4",
-                                        "c5xB8m4g2IY6"
-                                    ],
-                                    "title": "Trilium instance",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "cbkrhQjrkKrh",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Trilium instance.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "LWtBjFej3wX3",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "Gzjqa934BdH4",
-                                        "LWtBjFej3wX3"
-                                    ],
-                                    "title": "Cross-Origin Resource Sharing (CORS)",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "Cross-Origin Resource Sharing .md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "ivYnonVFBxbQ",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "ivYnonVFBxbQ"
-                            ],
-                            "title": "Bulk Actions",
-                            "notePosition": 180,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "HI6GBBIduIgv",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Cq5X6iKQop6R",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "oPVyFC7WL2Lp",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "yTjUdsOi4CIE",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "habiZ3HU8Kw8",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "vZWERwf8U3nx",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-list-plus",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Bulk Actions.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "cJTc66E2BRTf",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Bulk Actions_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "4FahAwuGTAwC",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "4FahAwuGTAwC"
-                            ],
-                            "title": "Note source",
-                            "notePosition": 190,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "KSZ04uQ2D1St",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "iPIMuisry3hd",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "MI26XDLSAlCD",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "6f9hih2hXXZk",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "81SGnPGMk7Xc",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "grjYqerjn243",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "H0mM1lTxF9JI",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "gBbsAeiuUxI5",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "N4IDkixaDG9C",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0vhv7lsOLy82",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "8YBEPzcpUgxw",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-code",
-                                    "isInheritable": false,
-                                    "position": 120
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Note source.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "Ud3rPUVJpRWJ",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Note source_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "1YeN2MzFUluU",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "1YeN2MzFUluU"
-                            ],
-                            "title": "Technologies used",
-                            "notePosition": 200,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "KSZ04uQ2D1St",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-component",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Technologies used.md",
-                            "attachments": [],
-                            "dirFileName": "Technologies used",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "MI26XDLSAlCD",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "1YeN2MzFUluU",
-                                        "MI26XDLSAlCD"
-                                    ],
-                                    "title": "CKEditor",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "iPIMuisry3hd",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "2x0ZAX9ePtzV",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "nBAXQFj20hS1",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "Oau6X9rCuegd",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "QEAPj01N5f7w",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "NwBbFdNZ9h7O",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "CKEditor.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "N4IDkixaDG9C",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "1YeN2MzFUluU",
-                                        "N4IDkixaDG9C"
-                                    ],
-                                    "title": "MindElixir",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "gBbsAeiuUxI5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "MindElixir.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "H0mM1lTxF9JI",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "1YeN2MzFUluU",
-                                        "H0mM1lTxF9JI"
-                                    ],
-                                    "title": "Excalidraw",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "grjYqerjn243",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Excalidraw.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "MQHyy2dIFgxS",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "1YeN2MzFUluU",
-                                        "MQHyy2dIFgxS"
-                                    ],
-                                    "title": "Leaflet",
-                                    "notePosition": 40,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "81SGnPGMk7Xc",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Leaflet.md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "m1lbrzyKDaRB",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "m1lbrzyKDaRB"
-                            ],
-                            "title": "Note ID",
-                            "notePosition": 210,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "0vhv7lsOLy82",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-hash",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Note ID.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "0vTSyvhPTAOz",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "0vTSyvhPTAOz"
-                            ],
-                            "title": "Internal API",
-                            "notePosition": 220,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [],
-                            "format": "markdown",
-                            "attachments": [],
-                            "dirFileName": "Internal API",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "z8O2VG4ZZJD7",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "0vTSyvhPTAOz",
-                                        "z8O2VG4ZZJD7"
-                                    ],
-                                    "title": "API Reference",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "webView",
-                                    "mime": "",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "webViewSrc",
-                                            "value": "/api/docs",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "dataFileName": "API Reference.dat",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "2mUhVmZK8RF3",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "2mUhVmZK8RF3"
-                            ],
-                            "title": "Hidden Notes",
-                            "notePosition": 230,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Cq5X6iKQop6R",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "wX4HbRucYSDD",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_globalNoteMap",
-                                    "isInheritable": false,
-                                    "position": 40
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_sqlConsole",
-                                    "isInheritable": false,
-                                    "position": 50
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "YKWqdJhzi2VY",
-                                    "isInheritable": false,
-                                    "position": 60
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_search",
-                                    "isInheritable": false,
-                                    "position": 70
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_bulkAction",
-                                    "isInheritable": false,
-                                    "position": 80
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ivYnonVFBxbQ",
-                                    "isInheritable": false,
-                                    "position": 90
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_backendLog",
-                                    "isInheritable": false,
-                                    "position": 100
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_userHidden",
-                                    "isInheritable": false,
-                                    "position": 110
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_lbTplRoot",
-                                    "isInheritable": false,
-                                    "position": 120
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_share",
-                                    "isInheritable": false,
-                                    "position": 130
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_lbRoot",
-                                    "isInheritable": false,
-                                    "position": 140
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_options",
-                                    "isInheritable": false,
-                                    "position": 150
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_lbMobileRoot",
-                                    "isInheritable": false,
-                                    "position": 160
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "_help",
-                                    "isInheritable": false,
-                                    "position": 170
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "eIg8jdvaoNNd",
-                                    "isInheritable": false,
-                                    "position": 180
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "QEAPj01N5f7w",
-                                    "isInheritable": false,
-                                    "position": 190
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "m1lbrzyKDaRB",
-                                    "isInheritable": false,
-                                    "position": 200
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "x3i7MxGccDuM",
-                                    "isInheritable": false,
-                                    "position": 210
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bdUJEHsAPYQR",
-                                    "isInheritable": false,
-                                    "position": 220
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "xYmIYSP6wE3F",
-                                    "isInheritable": false,
-                                    "position": 230
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "u3YFHC9tQlpm",
-                                    "isInheritable": false,
-                                    "position": 240
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "qzNzp9LYQyPT",
-                                    "isInheritable": false,
-                                    "position": 250
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 260
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "R9pX4DGra2Vt",
-                                    "isInheritable": false,
-                                    "position": 270
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "4TIF1oA4VQRO",
-                                    "isInheritable": false,
-                                    "position": 280
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-hide",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Hidden Notes.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "PrFEZeM6sRl6",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Hidden Notes_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "uYF7pmepw27K",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "tC7s2alapj8V",
-                                "uYF7pmepw27K"
-                            ],
-                            "title": "Metrics",
-                            "notePosition": 240,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bOP3TB56fL1V",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bxs-data",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Metrics.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "6FcnvEg39b88",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Metrics_image.png"
-                                },
-                                {
-                                    "attachmentId": "amOIi8fzVhSM",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Metrics_image.png"
-                                },
-                                {
-                                    "attachmentId": "Ojj9cAXPbxJO",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_Metrics_image.png"
-                                }
-                            ],
-                            "dirFileName": "Metrics",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "bOP3TB56fL1V",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "tC7s2alapj8V",
-                                        "uYF7pmepw27K",
-                                        "bOP3TB56fL1V"
-                                    ],
-                                    "title": "grafana-dashboard.json",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "code",
-                                    "mime": "application/json",
-                                    "attributes": [],
-                                    "dataFileName": "grafana-dashboard.json",
-                                    "attachments": []
-                                }
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "LMAv4Uy3Wk6J",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "LMAv4Uy3Wk6J"
-                    ],
-                    "title": "AI",
-                    "notePosition": 330,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "book",
-                    "mime": "",
-                    "attributes": [
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bx-bot",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "label",
-                            "name": "viewType",
-                            "value": "list",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "label",
-                            "name": "expanded",
-                            "value": "",
-                            "isInheritable": false,
-                            "position": 30
-                        }
-                    ],
-                    "attachments": [],
-                    "dirFileName": "AI",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "GBBMSlVSOIGP",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "LMAv4Uy3Wk6J",
-                                "GBBMSlVSOIGP"
-                            ],
-                            "title": "Introduction",
-                            "notePosition": 10,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "vvUCN7FDkq7G",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Introduction.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "4UpXwA3WvbmA",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "8Bn5IsE3Bv1k",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "ABN1rFIIJ8no",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "2_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "CK3z7sYw63XT",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "3_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "E6Y09N2t7vyA",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "4_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "JlIPeTtl5wlV",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "5_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "ur4TDJeRqpUC",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "6_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "UTH83LkQEA8u",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "7_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "V68TCCTUdyl7",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "8_Introduction_image.png"
-                                },
-                                {
-                                    "attachmentId": "YbWoNq58T9kB",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "9_Introduction_image.png"
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "WkM7gsEUyCXs",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "LMAv4Uy3Wk6J",
-                                "WkM7gsEUyCXs"
-                            ],
-                            "title": "AI Provider Information",
-                            "notePosition": 20,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "7EdTxPADv95W",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "ZavFigBX9AwP",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "e0lkirXEiSNc",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "viewType",
-                                    "value": "list",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "AI Provider Information.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "BNN9Vv3JEf2X",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "AI Provider Information_im.png"
-                                },
-                                {
-                                    "attachmentId": "diIollN3KEbn",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "1_AI Provider Information_im.png"
-                                }
-                            ],
-                            "dirFileName": "AI Provider Information",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "7EdTxPADv95W",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "LMAv4Uy3Wk6J",
-                                        "WkM7gsEUyCXs",
-                                        "7EdTxPADv95W"
-                                    ],
-                                    "title": "Ollama",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "book",
-                                    "mime": "",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "viewType",
-                                            "value": "list",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "expanded",
-                                            "value": "",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "attachments": [],
-                                    "dirFileName": "Ollama",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "vvUCN7FDkq7G",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "LMAv4Uy3Wk6J",
-                                                "WkM7gsEUyCXs",
-                                                "7EdTxPADv95W",
-                                                "vvUCN7FDkq7G"
-                                            ],
-                                            "title": "Installing Ollama",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "text",
-                                            "mime": "text/html",
-                                            "attributes": [],
-                                            "format": "markdown",
-                                            "dataFileName": "Installing Ollama.md",
-                                            "attachments": [
-                                                {
-                                                    "attachmentId": "CG9q2FfKuEsr",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "Installing Ollama_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "GEcgXxUE1IDx",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "1_Installing Ollama_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "OMGDDxjScXCl",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "2_Installing Ollama_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "Qacg7ibmEBkZ",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "3_Installing Ollama_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "vSjU929VnBm4",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "4_Installing Ollama_image.png"
-                                                },
-                                                {
-                                                    "attachmentId": "xGrxARTj79Gv",
-                                                    "title": "image.png",
-                                                    "role": "image",
-                                                    "mime": "image/png",
-                                                    "position": 10,
-                                                    "dataFileName": "5_Installing Ollama_image.png"
-                                                }
-                                            ]
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "ZavFigBX9AwP",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "LMAv4Uy3Wk6J",
-                                        "WkM7gsEUyCXs",
-                                        "ZavFigBX9AwP"
-                                    ],
-                                    "title": "OpenAI",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "OpenAI.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "e0lkirXEiSNc",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "LMAv4Uy3Wk6J",
-                                        "WkM7gsEUyCXs",
-                                        "e0lkirXEiSNc"
-                                    ],
-                                    "title": "Anthropic",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "Anthropic.md",
-                                    "attachments": []
-                                }
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "isClone": false,
-                    "noteId": "CdNpE2pqjmI6",
-                    "notePath": [
-                        "pOsGYCXsbNQG",
-                        "CdNpE2pqjmI6"
-                    ],
-                    "title": "Scripting",
-                    "notePosition": 340,
-                    "prefix": null,
-                    "isExpanded": false,
-                    "type": "text",
-                    "mime": "text/markdown",
-                    "attributes": [
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "6f9hih2hXXZk",
-                            "isInheritable": false,
-                            "position": 10
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "GLks18SNjxmC",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "TjLYAo3JMO8X",
-                            "isInheritable": false,
-                            "position": 30
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "zEY4DaJG4YT5",
-                            "isInheritable": false,
-                            "position": 40
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "RDslemsQ6gCp",
-                            "isInheritable": false,
-                            "position": 50
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "5668rwcirq1t",
-                            "isInheritable": false,
-                            "position": 60
-                        },
-                        {
-                            "type": "relation",
-                            "name": "internalLink",
-                            "value": "GPERMystNGTB",
-                            "isInheritable": false,
-                            "position": 70
-                        },
-                        {
-                            "type": "label",
-                            "name": "shareAlias",
-                            "value": "scripts",
-                            "isInheritable": false,
-                            "position": 20
-                        },
-                        {
-                            "type": "label",
-                            "name": "iconClass",
-                            "value": "bx bxs-file-js",
-                            "isInheritable": false,
-                            "position": 80
-                        }
-                    ],
-                    "format": "markdown",
-                    "dataFileName": "Scripting.md",
-                    "attachments": [],
-                    "dirFileName": "Scripting",
-                    "children": [
-                        {
-                            "isClone": false,
-                            "noteId": "yIhgI5H7A2Sm",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "CdNpE2pqjmI6",
-                                "yIhgI5H7A2Sm"
-                            ],
-                            "title": "Frontend Basics",
-                            "notePosition": 20,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "SynTBQiBsdYJ",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "GLks18SNjxmC",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "frontend-basics",
-                                    "isInheritable": false,
-                                    "position": 30
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Frontend Basics.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "es8OU2GuguFU",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "CdNpE2pqjmI6",
-                                "es8OU2GuguFU"
-                            ],
-                            "title": "Examples",
-                            "notePosition": 50,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [],
-                            "format": "markdown",
-                            "attachments": [],
-                            "dirFileName": "Examples",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "TjLYAo3JMO8X",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "es8OU2GuguFU",
-                                        "TjLYAo3JMO8X"
-                                    ],
-                                    "title": "\"New Task\" launcher button",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYjQUYhpbUEW",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "xYmIYSP6wE3F",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 40
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "m1lbrzyKDaRB",
-                                            "isInheritable": false,
-                                            "position": 50
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "s8alTXmpFR61",
-                                            "isInheritable": false,
-                                            "position": 60
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "yIhgI5H7A2Sm",
-                                            "isInheritable": false,
-                                            "position": 70
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "iconClass",
-                                            "value": "bx bx-task",
-                                            "isInheritable": false,
-                                            "position": 80
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "New Task launcher button.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "9C2JA6tdtRpN",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "New Task launcher button_i.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "7kZPMD0uFwkH",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "es8OU2GuguFU",
-                                        "7kZPMD0uFwkH"
-                                    ],
-                                    "title": "Downloading responses from Google Forms",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "Downloading responses from Goo.md",
-                                    "attachments": []
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "DL92EjAaXT26",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "es8OU2GuguFU",
-                                        "DL92EjAaXT26"
-                                    ],
-                                    "title": "Using promoted attributes to configure scripts",
-                                    "notePosition": 30,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [],
-                                    "format": "markdown",
-                                    "dataFileName": "Using promoted attributes to c.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "7P3jzVEa1mk7",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Using promoted attributes .png"
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "GPERMystNGTB",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "CdNpE2pqjmI6",
-                                "GPERMystNGTB"
-                            ],
-                            "title": "Events",
-                            "notePosition": 70,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "c5xB8m4g2IY6",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "zEY4DaJG4YT5",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "events",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-rss",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Events.md",
-                            "attachments": []
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "MgibgPcfeuGz",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "CdNpE2pqjmI6",
-                                "MgibgPcfeuGz"
-                            ],
-                            "title": "Custom Widgets",
-                            "notePosition": 80,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "custom-widget",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Custom Widgets.md",
-                            "attachments": [],
-                            "dirFileName": "Custom Widgets",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "YNxAqkI5Kg1M",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "MgibgPcfeuGz",
-                                        "YNxAqkI5Kg1M"
-                                    ],
-                                    "title": "Word count widget",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/html",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6tZeKvSHEUiB",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "6f9hih2hXXZk",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "s8alTXmpFR61",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Word count widget.md",
-                                    "attachments": [
-                                        {
-                                            "attachmentId": "JhM9NWfebzPi",
-                                            "title": "image.png",
-                                            "role": "image",
-                                            "mime": "image/png",
-                                            "position": 10,
-                                            "dataFileName": "Word count widget_image.png"
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "SynTBQiBsdYJ",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "MgibgPcfeuGz",
-                                        "SynTBQiBsdYJ"
-                                    ],
-                                    "title": "Widget Basics",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "text",
-                                    "mime": "text/markdown",
-                                    "attributes": [
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "zEY4DaJG4YT5",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "BFs8mudNFgCS",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        },
-                                        {
-                                            "type": "relation",
-                                            "name": "internalLink",
-                                            "value": "GLks18SNjxmC",
-                                            "isInheritable": false,
-                                            "position": 30
-                                        },
-                                        {
-                                            "type": "label",
-                                            "name": "shareAlias",
-                                            "value": "widget-basics",
-                                            "isInheritable": false,
-                                            "position": 20
-                                        }
-                                    ],
-                                    "format": "markdown",
-                                    "dataFileName": "Widget Basics.md",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "GLks18SNjxmC",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "CdNpE2pqjmI6",
-                                "GLks18SNjxmC"
-                            ],
-                            "title": "Script API",
-                            "notePosition": 90,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/markdown",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "CdNpE2pqjmI6",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "Q2z6av6JZVWm",
-                                    "isInheritable": false,
-                                    "position": 20
-                                },
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "MEtfsqa5VwNi",
-                                    "isInheritable": false,
-                                    "position": 30
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "shareAlias",
-                                    "value": "script-api",
-                                    "isInheritable": false,
-                                    "position": 10
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Script API.md",
-                            "attachments": [],
-                            "dirFileName": "Script API",
-                            "children": [
-                                {
-                                    "isClone": false,
-                                    "noteId": "Q2z6av6JZVWm",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "GLks18SNjxmC",
-                                        "Q2z6av6JZVWm"
-                                    ],
-                                    "title": "Frontend API",
-                                    "notePosition": 10,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "webView",
-                                    "mime": "",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "webViewSrc",
-                                            "value": "https://triliumnext.github.io/Notes/Script%20API/interfaces/Frontend_Script_API.Api.html",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "attachments": [],
-                                    "dirFileName": "Frontend API",
-                                    "children": [
-                                        {
-                                            "isClone": false,
-                                            "noteId": "habiZ3HU8Kw8",
-                                            "notePath": [
-                                                "pOsGYCXsbNQG",
-                                                "CdNpE2pqjmI6",
-                                                "GLks18SNjxmC",
-                                                "Q2z6av6JZVWm",
-                                                "habiZ3HU8Kw8"
-                                            ],
-                                            "title": "FNote",
-                                            "notePosition": 10,
-                                            "prefix": null,
-                                            "isExpanded": false,
-                                            "type": "webView",
-                                            "mime": "",
-                                            "attributes": [
-                                                {
-                                                    "type": "label",
-                                                    "name": "webViewSrc",
-                                                    "value": "https://triliumnext.github.io/Notes/Script%20API/classes/Frontend_Script_API.FNote.html",
-                                                    "isInheritable": false,
-                                                    "position": 10
-                                                }
-                                            ],
-                                            "dataFileName": "FNote.dat",
-                                            "attachments": []
-                                        }
-                                    ]
-                                },
-                                {
-                                    "isClone": false,
-                                    "noteId": "MEtfsqa5VwNi",
-                                    "notePath": [
-                                        "pOsGYCXsbNQG",
-                                        "CdNpE2pqjmI6",
-                                        "GLks18SNjxmC",
-                                        "MEtfsqa5VwNi"
-                                    ],
-                                    "title": "Backend API",
-                                    "notePosition": 20,
-                                    "prefix": null,
-                                    "isExpanded": false,
-                                    "type": "webView",
-                                    "mime": "",
-                                    "attributes": [
-                                        {
-                                            "type": "label",
-                                            "name": "webViewSrc",
-                                            "value": "https://triliumnext.github.io/Notes/Script%20API/interfaces/Backend_Script_API.Api.html",
-                                            "isInheritable": false,
-                                            "position": 10
-                                        }
-                                    ],
-                                    "dataFileName": "Backend API.dat",
-                                    "attachments": []
-                                }
-                            ]
-                        },
-                        {
-                            "isClone": false,
-                            "noteId": "vElnKeDNPSVl",
-                            "notePath": [
-                                "pOsGYCXsbNQG",
-                                "CdNpE2pqjmI6",
-                                "vElnKeDNPSVl"
-                            ],
-                            "title": "Logging",
-                            "notePosition": 100,
-                            "prefix": null,
-                            "isExpanded": false,
-                            "type": "text",
-                            "mime": "text/html",
-                            "attributes": [
-                                {
-                                    "type": "relation",
-                                    "name": "internalLink",
-                                    "value": "bnyigUA2UK7s",
-                                    "isInheritable": false,
-                                    "position": 10
-                                },
-                                {
-                                    "type": "label",
-                                    "name": "iconClass",
-                                    "value": "bx bx-terminal",
-                                    "isInheritable": false,
-                                    "position": 20
-                                }
-                            ],
-                            "format": "markdown",
-                            "dataFileName": "Logging.md",
-                            "attachments": [
-                                {
-                                    "attachmentId": "OFVZwVeITJOR",
-                                    "title": "image.png",
-                                    "role": "image",
-                                    "mime": "image/png",
-                                    "position": 10,
-                                    "dataFileName": "Logging_image.png"
-                                }
-                            ]
-                        }
-                    ]
-                }
-            ]
-        }
-    ]
+	"formatVersion": 2,
+	"appVersion": "0.99.1",
+	"files": [
+		{
+			"isClone": false,
+			"noteId": "pOsGYCXsbNQG",
+			"notePath": [
+				"pOsGYCXsbNQG"
+			],
+			"title": "User Guide",
+			"notePosition": 10,
+			"prefix": null,
+			"isExpanded": true,
+			"type": "text",
+			"mime": "text/html",
+			"attributes": [],
+			"format": "markdown",
+			"dataFileName": "User Guide.md",
+			"attachments": [],
+			"dirFileName": "User Guide",
+			"children": [
+				{
+					"isClone": false,
+					"noteId": "BOCnjTMBCoxW",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"BOCnjTMBCoxW"
+					],
+					"title": "Feature Highlights",
+					"notePosition": 10,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "ZjLYv08Rp3qC",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "R9pX4DGra2Vt",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "LMAv4Uy3Wk6J",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "NRnIZmSMc5sj",
+							"isInheritable": false,
+							"position": 40
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "rC3pL2aptaRE",
+							"isInheritable": false,
+							"position": 50
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "GTwFsgaA0lCt",
+							"isInheritable": false,
+							"position": 60
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "2FvYrpmOXm29",
+							"isInheritable": false,
+							"position": 70
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "iPIMuisry3hd",
+							"isInheritable": false,
+							"position": 80
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "ZlN4nump6EbW",
+							"isInheritable": false,
+							"position": 90
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "pwc194wlRzcH",
+							"isInheritable": false,
+							"position": 100
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "7DAiwaf8Z7Rz",
+							"isInheritable": false,
+							"position": 110
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "veGu4faJErEM",
+							"isInheritable": false,
+							"position": 120
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "xWbu3jpNWapp",
+							"isInheritable": false,
+							"position": 130
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "AgjCISero73a",
+							"isInheritable": false,
+							"position": 140
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "81SGnPGMk7Xc",
+							"isInheritable": false,
+							"position": 150
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "gBbsAeiuUxI5",
+							"isInheritable": false,
+							"position": 160
+						},
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-star",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "markdown",
+					"dataFileName": "Feature Highlights.md",
+					"attachments": []
+				},
+				{
+					"isClone": false,
+					"noteId": "Otzi9La2YAUX",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"Otzi9La2YAUX"
+					],
+					"title": "Installation & Setup",
+					"notePosition": 20,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-cog",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "markdown",
+					"attachments": [],
+					"dirFileName": "Installation & Setup",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "poXkQfguuA0U",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"poXkQfguuA0U"
+							],
+							"title": "Desktop Installation",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "tAassRL4RSQL",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "l2VkvOwUNfZj",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "cbkrhQjrkKrh",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "desktop-installation",
+									"isInheritable": false,
+									"position": 30
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Desktop Installation.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "WOcw2SLH6tbX",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"WOcw2SLH6tbX"
+							],
+							"title": "Server Installation",
+							"notePosition": 20,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "cbkrhQjrkKrh",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "rWX5eY045zbE",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "3tW6mORuTHnB",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "J1Bb6lVlwU5T",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "DCmT6e7clMoP",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "moVgBcoxE3EK",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "RDslemsQ6gCp",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "l2VkvOwUNfZj",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "tAassRL4RSQL",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Gzjqa934BdH4",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0hzsNCP31IAB",
+									"isInheritable": false,
+									"position": 120
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "fDLvzOx29Pfg",
+									"isInheritable": false,
+									"position": 130
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "server-installation",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Server Installation.md",
+							"attachments": [],
+							"dirFileName": "Server Installation",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "Dgg7bR3b6K9j",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"Otzi9La2YAUX",
+										"WOcw2SLH6tbX",
+										"Dgg7bR3b6K9j"
+									],
+									"title": "1. Installing the server",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"attachments": [],
+									"dirFileName": "1. Installing the server",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "3tW6mORuTHnB",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"Dgg7bR3b6K9j",
+												"3tW6mORuTHnB"
+											],
+											"title": "Packaged version for Linux",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "WOcw2SLH6tbX",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "l2VkvOwUNfZj",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "packaged-server-installation",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxl-tux",
+													"isInheritable": false,
+													"position": 20
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Packaged version for Linux.md",
+											"attachments": []
+										},
+										{
+											"isClone": false,
+											"noteId": "rWX5eY045zbE",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"Dgg7bR3b6K9j",
+												"rWX5eY045zbE"
+											],
+											"title": "Using Docker",
+											"notePosition": 20,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "ud6MShXL4WpO",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "fDLvzOx29Pfg",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "docker-server-installation",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxl-docker",
+													"isInheritable": false,
+													"position": 40
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Using Docker.md",
+											"attachments": []
+										},
+										{
+											"isClone": false,
+											"noteId": "moVgBcoxE3EK",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"Dgg7bR3b6K9j",
+												"moVgBcoxE3EK"
+											],
+											"title": "On NixOS",
+											"notePosition": 30,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "nixos-server-installation",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxl-tux",
+													"isInheritable": false,
+													"position": 20
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "On NixOS.md",
+											"attachments": []
+										},
+										{
+											"isClone": false,
+											"noteId": "J1Bb6lVlwU5T",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"Dgg7bR3b6K9j",
+												"J1Bb6lVlwU5T"
+											],
+											"title": "Manually",
+											"notePosition": 40,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "rWX5eY045zbE",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "3tW6mORuTHnB",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "l2VkvOwUNfZj",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "manual-server-installation",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-code-alt",
+													"isInheritable": false,
+													"position": 30
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Manually.md",
+											"attachments": []
+										},
+										{
+											"isClone": false,
+											"noteId": "DCmT6e7clMoP",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"Dgg7bR3b6K9j",
+												"DCmT6e7clMoP"
+											],
+											"title": "Using Kubernetes",
+											"notePosition": 50,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "kubernetes-server-installation",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxl-kubernetes",
+													"isInheritable": false,
+													"position": 20
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Using Kubernetes.md",
+											"attachments": []
+										},
+										{
+											"isClone": false,
+											"noteId": "klCWNks3ReaQ",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"Dgg7bR3b6K9j",
+												"klCWNks3ReaQ"
+											],
+											"title": "Multiple server instances",
+											"notePosition": 60,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "J1Bb6lVlwU5T",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "cbkrhQjrkKrh",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "3tW6mORuTHnB",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "rWX5eY045zbE",
+													"isInheritable": false,
+													"position": 40
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "moVgBcoxE3EK",
+													"isInheritable": false,
+													"position": 50
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxs-user-account",
+													"isInheritable": false,
+													"position": 60
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Multiple server instances.md",
+											"attachments": []
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "vcjrb3VVYPZI",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"Otzi9La2YAUX",
+										"WOcw2SLH6tbX",
+										"vcjrb3VVYPZI"
+									],
+									"title": "2. Reverse proxy",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"attachments": [],
+									"dirFileName": "2. Reverse proxy",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "ud6MShXL4WpO",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"vcjrb3VVYPZI",
+												"ud6MShXL4WpO"
+											],
+											"title": "Nginx",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "nginx-proxy-setup",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Nginx.md",
+											"attachments": []
+										},
+										{
+											"isClone": false,
+											"noteId": "fDLvzOx29Pfg",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"Otzi9La2YAUX",
+												"WOcw2SLH6tbX",
+												"vcjrb3VVYPZI",
+												"fDLvzOx29Pfg"
+											],
+											"title": "Apache",
+											"notePosition": 20,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/markdown",
+											"attributes": [
+												{
+													"type": "label",
+													"name": "shareAlias",
+													"value": "apache-proxy-setup",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Apache.md",
+											"attachments": []
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "l2VkvOwUNfZj",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"Otzi9La2YAUX",
+										"WOcw2SLH6tbX",
+										"l2VkvOwUNfZj"
+									],
+									"title": "TLS Configuration",
+									"notePosition": 100,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "WOcw2SLH6tbX",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "tAassRL4RSQL",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Gzjqa934BdH4",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "tls-configuration",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "TLS Configuration.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "0hzsNCP31IAB",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"Otzi9La2YAUX",
+										"WOcw2SLH6tbX",
+										"0hzsNCP31IAB"
+									],
+									"title": "Authentication",
+									"notePosition": 110,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wX4HbRucYSDD",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YKWqdJhzi2VY",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "7DAiwaf8Z7Rz",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-lock-alt",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Authentication.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "7DAiwaf8Z7Rz",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"Otzi9La2YAUX",
+										"WOcw2SLH6tbX",
+										"7DAiwaf8Z7Rz"
+									],
+									"title": "Multi-Factor Authentication",
+									"notePosition": 120,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Gzjqa934BdH4",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "multi-factor-authentication",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-stopwatch",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Multi-Factor Authentication.md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "cbkrhQjrkKrh",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"cbkrhQjrkKrh"
+							],
+							"title": "Synchronization",
+							"notePosition": 30,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "l2VkvOwUNfZj",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "poXkQfguuA0U",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "vZWERwf8U3nx",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "synchronization",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-sync",
+									"isInheritable": false,
+									"position": 70
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Synchronization.md",
+							"attachments": [
+								{
+									"attachmentId": "PU4LVfX4MaMD",
+									"title": "sync-in-progress.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Synchronization_sync-in-pr.png"
+								},
+								{
+									"attachmentId": "s3fKDqHslToK",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Synchronization_image.png"
+								},
+								{
+									"attachmentId": "wlHlhXqZ0i1S",
+									"title": "sync-config.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Synchronization_sync-confi.png"
+								},
+								{
+									"attachmentId": "x0t06ATHph6b",
+									"title": "sync-init.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Synchronization_sync-init.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "RDslemsQ6gCp",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"RDslemsQ6gCp"
+							],
+							"title": "Mobile Frontend",
+							"notePosition": 40,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bwg0e8ewQMak",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "WOcw2SLH6tbX",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "mobile-frontend",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-mobile-alt",
+									"isInheritable": false,
+									"position": 60
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Mobile Frontend.md",
+							"attachments": [
+								{
+									"attachmentId": "CyswsZZ3GwtQ",
+									"title": "mobile-tablet.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Mobile Frontend_mobile-tab.png"
+								},
+								{
+									"attachmentId": "txzBbmMtgsrx",
+									"title": "mobile-smartphone.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Mobile Frontend_mobile-sma.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "MtPxeAWVAzMg",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"MtPxeAWVAzMg"
+							],
+							"title": "Web Clipper",
+							"notePosition": 50,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "l0tKav7yLHGF",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "WOcw2SLH6tbX",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "web-clipper",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Web Clipper.md",
+							"attachments": [
+								{
+									"attachmentId": "fhKf5Otv0M5Y",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Web Clipper_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "n1lujUxCwipy",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"n1lujUxCwipy"
+							],
+							"title": "Upgrading TriliumNext",
+							"notePosition": 60,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "rWX5eY045zbE",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ODY7qQn5m2FT",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "cbkrhQjrkKrh",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "upgrading-trilium",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Upgrading TriliumNext.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "ODY7qQn5m2FT",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"ODY7qQn5m2FT"
+							],
+							"title": "Backup",
+							"notePosition": 70,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Gzjqa934BdH4",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "tAassRL4RSQL",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "cbkrhQjrkKrh",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "backup",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Backup.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "tAassRL4RSQL",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"Otzi9La2YAUX",
+								"tAassRL4RSQL"
+							],
+							"title": "Data directory",
+							"notePosition": 80,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ODY7qQn5m2FT",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "data-directory",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-folder-open",
+									"isInheritable": false,
+									"position": 40
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Data directory.md",
+							"attachments": [
+								{
+									"attachmentId": "NONZTci1YkNe",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Data directory_image.png"
+								}
+							]
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "gh7bpGYxajRS",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"gh7bpGYxajRS"
+					],
+					"title": "Basic Concepts and Features",
+					"notePosition": 40,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-help-circle",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "markdown",
+					"attachments": [],
+					"dirFileName": "Basic Concepts and Features",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "Vc8PjrjAGuOp",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"Vc8PjrjAGuOp"
+							],
+							"title": "UI Elements",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-window-alt",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"attachments": [],
+							"dirFileName": "UI Elements",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "x0JgW8UqGXvq",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"x0JgW8UqGXvq"
+									],
+									"title": "Vertical and horizontal layout",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Ms1nauBra7gq",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x3i7MxGccDuM",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-layout",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Vertical and horizontal layout.md",
+									"attachments": [
+										{
+											"attachmentId": "9sCZBqokn4vf",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Vertical and horizontal la.png"
+										},
+										{
+											"attachmentId": "gw3DaUul5ccI",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Vertical and horizontal la.png"
+										},
+										{
+											"attachmentId": "jhiE5DTkLOCK",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "2_Vertical and horizontal la.png"
+										},
+										{
+											"attachmentId": "JwO3rUNb9tyU",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "3_Vertical and horizontal la.png"
+										},
+										{
+											"attachmentId": "NVjM5z6IsNZf",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Vertical and horizontal la.png"
+										},
+										{
+											"attachmentId": "Z2F8ipVjwugg",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Vertical and horizontal la.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "x3i7MxGccDuM",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"x3i7MxGccDuM"
+									],
+									"title": "Global menu",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x0JgW8UqGXvq",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-menu",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Global menu.md",
+									"attachments": [
+										{
+											"attachmentId": "rCnBqSyldhp9",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Global menu_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "oPVyFC7WL2Lp",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"oPVyFC7WL2Lp"
+									],
+									"title": "Note Tree",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "A9Oc6YKKc65v",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "IakOLONlIfGI",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YtSN43OrfzaA",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "DvdZhoQZY9Yd",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "tree-manipulation",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-tree-alt",
+											"isInheritable": false,
+											"position": 50
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note Tree.md",
+									"attachments": [
+										{
+											"attachmentId": "AF3on7rb7R59",
+											"title": "drag-and-drop.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Note Tree_drag-and-drop.gif"
+										},
+										{
+											"attachmentId": "DYf7wm3Yv6EC",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Note Tree_image.png"
+										},
+										{
+											"attachmentId": "m0KuVBZvGyzW",
+											"title": "move-note-with-keyboard.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Note Tree_move-note-with-k.gif"
+										}
+									],
+									"dirFileName": "Note Tree",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "YtSN43OrfzaA",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"gh7bpGYxajRS",
+												"Vc8PjrjAGuOp",
+												"oPVyFC7WL2Lp",
+												"YtSN43OrfzaA"
+											],
+											"title": "Note tree contextual menu",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "oPVyFC7WL2Lp",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "yTjUdsOi4CIE",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "OR8WJ7Iz9K4U",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "KC1HB96bqqHX",
+													"isInheritable": false,
+													"position": 40
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "bwg0e8ewQMak",
+													"isInheritable": false,
+													"position": 50
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "IakOLONlIfGI",
+													"isInheritable": false,
+													"position": 60
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "MKmLg5x6xkor",
+													"isInheritable": false,
+													"position": 70
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "mHbBMPDPkVV5",
+													"isInheritable": false,
+													"position": 80
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "eIg8jdvaoNNd",
+													"isInheritable": false,
+													"position": 90
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "ivYnonVFBxbQ",
+													"isInheritable": false,
+													"position": 100
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "TBwsyfadTA18",
+													"isInheritable": false,
+													"position": 110
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "0vhv7lsOLy82",
+													"isInheritable": false,
+													"position": 120
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "zEY4DaJG4YT5",
+													"isInheritable": false,
+													"position": 130
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "aGlEvb9hyDhS",
+													"isInheritable": false,
+													"position": 140
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "wArbEsdSae6g",
+													"isInheritable": false,
+													"position": 150
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "3seOhtN8uLIY",
+													"isInheritable": false,
+													"position": 160
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "KSZ04uQ2D1St",
+													"isInheritable": false,
+													"position": 170
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "r5JGHN99bVKn",
+													"isInheritable": false,
+													"position": 180
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "W8vYD3Q1zjCR",
+													"isInheritable": false,
+													"position": 190
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "QEAPj01N5f7w",
+													"isInheritable": false,
+													"position": 200
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-menu",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Note tree contextual menu.md",
+											"attachments": [
+												{
+													"attachmentId": "5mFOLdHBuKYa",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Note tree contextual menu_.png"
+												},
+												{
+													"attachmentId": "E3x5TRRe2pvx",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "1_Note tree contextual menu_.png"
+												}
+											]
+										},
+										{
+											"isClone": false,
+											"noteId": "yTjUdsOi4CIE",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"gh7bpGYxajRS",
+												"Vc8PjrjAGuOp",
+												"oPVyFC7WL2Lp",
+												"yTjUdsOi4CIE"
+											],
+											"title": "Multiple selection",
+											"notePosition": 20,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "ivYnonVFBxbQ",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-list-plus",
+													"isInheritable": false,
+													"position": 20
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Multiple selection.md",
+											"attachments": [
+												{
+													"attachmentId": "puanbWdFSfUM",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/jpg",
+													"position": 10,
+													"dataFileName": "Multiple selection_image.png"
+												}
+											]
+										},
+										{
+											"isClone": false,
+											"noteId": "DvdZhoQZY9Yd",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"gh7bpGYxajRS",
+												"Vc8PjrjAGuOp",
+												"oPVyFC7WL2Lp",
+												"DvdZhoQZY9Yd"
+											],
+											"title": "Keyboard shortcuts",
+											"notePosition": 30,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "oPVyFC7WL2Lp",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "ZjLYv08Rp3qC",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "yTjUdsOi4CIE",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxs-keyboard",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Keyboard shortcuts.md",
+											"attachments": []
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "BlN9DFI679QC",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"BlN9DFI679QC"
+									],
+									"title": "Ribbon",
+									"notePosition": 50,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4FahAwuGTAwC",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwg0e8ewQMak",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CoFPLs3dRlXc",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "u3YFHC9tQlpm",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R9pX4DGra2Vt",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KC1HB96bqqHX",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 90
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 100
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwZpz2ajCEwO",
+											"isInheritable": false,
+											"position": 110
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 120
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "IakOLONlIfGI",
+											"isInheritable": false,
+											"position": 130
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xWtq5NUHOwql",
+											"isInheritable": false,
+											"position": 140
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "m1lbrzyKDaRB",
+											"isInheritable": false,
+											"position": 150
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wX4HbRucYSDD",
+											"isInheritable": false,
+											"position": 160
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "l0tKav7yLHGF",
+											"isInheritable": false,
+											"position": 170
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_optionsAppearance",
+											"isInheritable": false,
+											"position": 180
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 190
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KSZ04uQ2D1St",
+											"isInheritable": false,
+											"position": 200
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "WOcw2SLH6tbX",
+											"isInheritable": false,
+											"position": 210
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "veGu4faJErEM",
+											"isInheritable": false,
+											"position": 220
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-dots-horizontal",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Ribbon.md",
+									"attachments": [
+										{
+											"attachmentId": "JCiJ3vRhgXY9",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Ribbon_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "3seOhtN8uLIY",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"3seOhtN8uLIY"
+									],
+									"title": "Tabs",
+									"notePosition": 70,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "luNhaphA37EO",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x0JgW8UqGXvq",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-dock-top",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Tabs.md",
+									"attachments": [
+										{
+											"attachmentId": "b4aCeUxoyA9k",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Tabs_image.png"
+										},
+										{
+											"attachmentId": "bSaBdT5sH1S7",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Tabs_image.png"
+										},
+										{
+											"attachmentId": "HffqAHhqe69i",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Tabs_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "xYmIYSP6wE3F",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"xYmIYSP6wE3F"
+									],
+									"title": "Launch Bar",
+									"notePosition": 110,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x3i7MxGccDuM",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "p9kXRFAkwN4o",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OR8WJ7Iz9K4U",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x0JgW8UqGXvq",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CdNpE2pqjmI6",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "SynTBQiBsdYJ",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-sidebar",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Launch Bar.md",
+									"attachments": [
+										{
+											"attachmentId": "YsBMjK1g3jd1",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Launch Bar_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "8YBEPzcpUgxw",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"8YBEPzcpUgxw"
+									],
+									"title": "Note buttons",
+									"notePosition": 130,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "vZWERwf8U3nx",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4FahAwuGTAwC",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "0vhv7lsOLy82",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-dots-vertical-rounded",
+											"isInheritable": false,
+											"position": 50
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note buttons.md",
+									"attachments": [
+										{
+											"attachmentId": "iln72O2Xo8zy",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Note buttons_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "4TIF1oA4VQRO",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"4TIF1oA4VQRO"
+									],
+									"title": "Options",
+									"notePosition": 140,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x3i7MxGccDuM",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_options",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "3seOhtN8uLIY",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "cbkrhQjrkKrh",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-cog",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Options.md",
+									"attachments": [
+										{
+											"attachmentId": "FZZUANQuZlhe",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Options_image.png"
+										},
+										{
+											"attachmentId": "IJPuSn5cWjTO",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Options_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "luNhaphA37EO",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"luNhaphA37EO"
+									],
+									"title": "Split View",
+									"notePosition": 150,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OR8WJ7Iz9K4U",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "3seOhtN8uLIY",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-dock-right",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Split View.md",
+									"attachments": [
+										{
+											"attachmentId": "9plNhrKyZaXM",
+											"title": "3_Split View_image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Split View_3_Split View_im.png"
+										},
+										{
+											"attachmentId": "Lk0PrljxWYRp",
+											"title": "4_Split View_image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Split View_4_Split View_im.png"
+										},
+										{
+											"attachmentId": "Lt1OZVfsht6I",
+											"title": "Split View_image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Split View_Split View_imag.png"
+										},
+										{
+											"attachmentId": "qm9Dn3TD1w4k",
+											"title": "2_Split View_image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Split View_2_Split View_im.png"
+										},
+										{
+											"attachmentId": "UFITv6o2d4QN",
+											"title": "1_Split View_image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Split View_1_Split View_im.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "XpOYSgsLkTJy",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"XpOYSgsLkTJy"
+									],
+									"title": "Floating buttons",
+									"notePosition": 160,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CoFPLs3dRlXc",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "s1aBHPd79XYj",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "grjYqerjn243",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-rectangle",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Floating buttons.md",
+									"attachments": [
+										{
+											"attachmentId": "drdKIHK5GzfU",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Floating buttons_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "RnaPdbciOfeq",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"RnaPdbciOfeq"
+									],
+									"title": "Right Sidebar",
+									"notePosition": 170,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BFvAtE74rbP6",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "AxshuNRegLAv",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "luNhaphA37EO",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "3seOhtN8uLIY",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-dock-right",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Right Sidebar.md",
+									"attachments": [
+										{
+											"attachmentId": "ze9MwXmOPhp0",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Right Sidebar_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "r5JGHN99bVKn",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"r5JGHN99bVKn"
+									],
+									"title": "Recent Changes",
+									"notePosition": 180,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OR8WJ7Iz9K4U",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "9sRHySam5fXb",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YtSN43OrfzaA",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-history",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Recent Changes.md",
+									"attachments": [
+										{
+											"attachmentId": "3HsqEVy53S2H",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Recent Changes_image.png"
+										},
+										{
+											"attachmentId": "dxoiP89lrRn6",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Recent Changes_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "ny318J39E5Z0",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"ny318J39E5Z0"
+									],
+									"title": "Zoom",
+									"notePosition": 190,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-zoom-in",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Zoom.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "ZjLYv08Rp3qC",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"ZjLYv08Rp3qC"
+									],
+									"title": "Quick edit",
+									"notePosition": 200,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "Quick edit.md",
+									"attachments": [
+										{
+											"attachmentId": "EBOLwVGrA8bv",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Quick edit_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "lgKX7r3aL30x",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Vc8PjrjAGuOp",
+										"lgKX7r3aL30x"
+									],
+									"title": "Note Tooltip",
+									"notePosition": 210,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "ZjLYv08Rp3qC",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Cq5X6iKQop6R",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "hrZ1D00cLbal",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GTwFsgaA0lCt",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "81SGnPGMk7Xc",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xWbu3jpNWapp",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "2FvYrpmOXm29",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-message-detail",
+											"isInheritable": false,
+											"position": 100
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note Tooltip.md",
+									"attachments": [
+										{
+											"attachmentId": "AHAT2uK9sy9d",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Note Tooltip_image.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "BFs8mudNFgCS",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"BFs8mudNFgCS"
+							],
+							"title": "Notes",
+							"notePosition": 40,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iPIMuisry3hd",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "grjYqerjn243",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "s1aBHPd79XYj",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "m523cpzocqaD",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "HcABDtFCkbFN",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "IakOLONlIfGI",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "r5JGHN99bVKn",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ODY7qQn5m2FT",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CoFPLs3dRlXc",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "note",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-notepad",
+									"isInheritable": false,
+									"position": 100
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Notes.md",
+							"attachments": [],
+							"dirFileName": "Notes",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "p9kXRFAkwN4o",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"p9kXRFAkwN4o"
+									],
+									"title": "Note Icons",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "note-icons",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-grid",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note Icons.md",
+									"attachments": [
+										{
+											"attachmentId": "6tSmLB1aFql6",
+											"title": "note-icon-gallery.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Note Icons_note-icon-galle.png"
+										},
+										{
+											"attachmentId": "QBMBQvrXn6G5",
+											"title": "note-icon-change.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Note Icons_note-icon-chang.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "0vhv7lsOLy82",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"0vhv7lsOLy82"
+									],
+									"title": "Attachments",
+									"notePosition": 50,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BFs8mudNFgCS",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R7abl2fc6Mxi",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CdNpE2pqjmI6",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "W8vYD3Q1zjCR",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "8YBEPzcpUgxw",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "attachments",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-paperclip",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Attachments.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "IakOLONlIfGI",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"IakOLONlIfGI"
+									],
+									"title": "Cloning Notes",
+									"notePosition": 60,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "A9Oc6YKKc65v",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "cloning-notes",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-duplicate",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Cloning Notes.md",
+									"attachments": [
+										{
+											"attachmentId": "3n837NZNUg0t",
+											"title": "create-clone.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Cloning Notes_create-clone.gif"
+										}
+									],
+									"dirFileName": "Cloning Notes",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "TBwsyfadTA18",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"gh7bpGYxajRS",
+												"BFs8mudNFgCS",
+												"IakOLONlIfGI",
+												"TBwsyfadTA18"
+											],
+											"title": "Branch prefix",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "IakOLONlIfGI",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "oPVyFC7WL2Lp",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-rename",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Branch prefix.md",
+											"attachments": []
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "bwg0e8ewQMak",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"bwg0e8ewQMak"
+									],
+									"title": "Protected Notes",
+									"notePosition": 70,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wX4HbRucYSDD",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "protected-notes",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-lock-alt",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Protected Notes.md",
+									"attachments": [
+										{
+											"attachmentId": "NISgqIUKwaxr",
+											"title": "protecting-note.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Protected Notes_protecting.gif"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "MKmLg5x6xkor",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"MKmLg5x6xkor"
+									],
+									"title": "Archived Notes",
+									"notePosition": 80,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwZpz2ajCEwO",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "eIg8jdvaoNNd",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "archived-notes",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-box",
+											"isInheritable": false,
+											"position": 50
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Archived Notes.md",
+									"attachments": [
+										{
+											"attachmentId": "ke9mcD9x5Jg4",
+											"title": "hide-archived.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Archived Notes_hide-archiv.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "vZWERwf8U3nx",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"vZWERwf8U3nx"
+									],
+									"title": "Note Revisions",
+									"notePosition": 90,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "note-revisions",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-history",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note Revisions.md",
+									"attachments": [
+										{
+											"attachmentId": "1TA1nUFZzprY",
+											"title": "note-revisions.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Note Revisions_note-revisi.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "aGlEvb9hyDhS",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"aGlEvb9hyDhS"
+									],
+									"title": "Sorting Notes",
+									"notePosition": 100,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "sorting",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-sort-up",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Sorting Notes.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "NRnIZmSMc5sj",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"NRnIZmSMc5sj"
+									],
+									"title": "Export as PDF",
+									"notePosition": 120,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wy8So3yZZlH9",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-file-pdf",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Export as PDF.md",
+									"attachments": [
+										{
+											"attachmentId": "NfSjRsArIQHy",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Export as PDF_image.png"
+										},
+										{
+											"attachmentId": "Om2EmdZr54vy",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Export as PDF_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "CoFPLs3dRlXc",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"CoFPLs3dRlXc"
+									],
+									"title": "Read-Only Notes",
+									"notePosition": 130,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_optionsTextNotes",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_optionsCodeNotes",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "XpOYSgsLkTJy",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "s1aBHPd79XYj",
+											"isInheritable": false,
+											"position": 90
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "81SGnPGMk7Xc",
+											"isInheritable": false,
+											"position": 100
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "read-only-note",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-edit-alt",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Read-Only Notes.md",
+									"attachments": [
+										{
+											"attachmentId": "dUmc6vYfoQgZ",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Read-Only Notes_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "0ESUbbAxVnoK",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"BFs8mudNFgCS",
+										"0ESUbbAxVnoK"
+									],
+									"title": "Note List",
+									"notePosition": 140,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GTwFsgaA0lCt",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-grid",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note List.md",
+									"attachments": [
+										{
+											"attachmentId": "9VbOf4HySQjH",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Note List_image.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "wArbEsdSae6g",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"wArbEsdSae6g"
+							],
+							"title": "Navigation",
+							"notePosition": 50,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-navigation",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"attachments": [],
+							"dirFileName": "Navigation",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "kBrnXNG3Hplm",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"kBrnXNG3Hplm"
+									],
+									"title": "Tree Concepts",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BFs8mudNFgCS",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "IakOLONlIfGI",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "tree-concepts",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-pyramid",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Tree Concepts.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "MMiBEQljMQh2",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"MMiBEQljMQh2"
+									],
+									"title": "Note Navigation",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "F1r9QtzQLZqm",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "note-navigation",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-navigation",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note Navigation.md",
+									"attachments": [
+										{
+											"attachmentId": "jDuwVaU8bNtG",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Note Navigation_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "Ms1nauBra7gq",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"Ms1nauBra7gq"
+									],
+									"title": "Quick search",
+									"notePosition": 40,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "F1r9QtzQLZqm",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "eIg8jdvaoNNd",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x0JgW8UqGXvq",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-search-alt-2",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Quick search.md",
+									"attachments": [
+										{
+											"attachmentId": "H0XlRahnnWbd",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Quick search_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "F1r9QtzQLZqm",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"F1r9QtzQLZqm"
+									],
+									"title": "Jump to...",
+									"notePosition": 50,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "A9Oc6YKKc65v",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-send",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Jump to.md",
+									"attachments": [
+										{
+											"attachmentId": "7IU5WrneDsfi",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Jump to_image.png"
+										},
+										{
+											"attachmentId": "P9veX5eFZdPp",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Jump to_image.png"
+										},
+										{
+											"attachmentId": "y8yxomaf1Gkz",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Jump to_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "eIg8jdvaoNNd",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"eIg8jdvaoNNd"
+									],
+									"title": "Search",
+									"notePosition": 60,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "A9Oc6YKKc65v",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OR8WJ7Iz9K4U",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wX4HbRucYSDD",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "ivYnonVFBxbQ",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YtSN43OrfzaA",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "9sRHySam5fXb",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "m523cpzocqaD",
+											"isInheritable": false,
+											"position": 90
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 100
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "MKmLg5x6xkor",
+											"isInheritable": false,
+											"position": 110
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "qzNzp9LYQyPT",
+											"isInheritable": false,
+											"position": 120
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 130
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "search",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-search-alt-2",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Search.md",
+									"attachments": [
+										{
+											"attachmentId": "WkhcA4FN7sGX",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Search_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "u3YFHC9tQlpm",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"u3YFHC9tQlpm"
+									],
+									"title": "Bookmarks",
+									"notePosition": 70,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "bookmarks",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-bookmarks",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Bookmarks.md",
+									"attachments": [
+										{
+											"attachmentId": "99dD0P74W8QJ",
+											"title": "bookmark-folder.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Bookmarks_bookmark-folder.png"
+										},
+										{
+											"attachmentId": "9dX71aLlSl9R",
+											"title": "bookmarks.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Bookmarks_bookmarks.gif"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "OR8WJ7Iz9K4U",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"OR8WJ7Iz9K4U"
+									],
+									"title": "Note Hoisting",
+									"notePosition": 80,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "MMiBEQljMQh2",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "9sRHySam5fXb",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "note-hoisting",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-chevrons-up",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Note Hoisting.md",
+									"attachments": [
+										{
+											"attachmentId": "wGJxetzAtPe0",
+											"title": "note-hoisting.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Note Hoisting_note-hoistin.gif"
+										}
+									]
+								},
+								{
+									"isClone": true,
+									"noteId": "ZjLYv08Rp3qC",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"ZjLYv08Rp3qC"
+									],
+									"title": "Quick edit",
+									"prefix": null,
+									"dataFileName": "Quick edit.clone.md",
+									"type": "text",
+									"format": "markdown"
+								},
+								{
+									"isClone": false,
+									"noteId": "9sRHySam5fXb",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"9sRHySam5fXb"
+									],
+									"title": "Workspaces",
+									"notePosition": 90,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OR8WJ7Iz9K4U",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "l0tKav7yLHGF",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "workspace",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-door-open",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Workspaces.md",
+									"attachments": [
+										{
+											"attachmentId": "V4TIsmtBh8P7",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Workspaces_image.png"
+										},
+										{
+											"attachmentId": "vZSH2mOKzWBx",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "1_Workspaces_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "xWtq5NUHOwql",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"xWtq5NUHOwql"
+									],
+									"title": "Similar Notes",
+									"notePosition": 100,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-bar-chart",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Similar Notes.md",
+									"attachments": [
+										{
+											"attachmentId": "0JOeCYHahqJS",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Similar Notes_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "McngOG2jbUWX",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"wArbEsdSae6g",
+										"McngOG2jbUWX"
+									],
+									"title": "Search in note",
+									"notePosition": 110,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "MI26XDLSAlCD",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "8YBEPzcpUgxw",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-search-alt-2",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Search in note.md",
+									"attachments": [
+										{
+											"attachmentId": "vEq0g2DHEh3O",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Search in note_image.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "A9Oc6YKKc65v",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"A9Oc6YKKc65v"
+							],
+							"title": "Keyboard Shortcuts",
+							"notePosition": 60,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "MMiBEQljMQh2",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "IakOLONlIfGI",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iPIMuisry3hd",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "oiVPnW8QfnvS",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "QrtTYPmdd1qq",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "eIg8jdvaoNNd",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "keyboard-shortcuts",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-keyboard",
+									"isInheritable": false,
+									"position": 80
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Keyboard Shortcuts.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "Wy267RK4M69c",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"Wy267RK4M69c"
+							],
+							"title": "Themes",
+							"notePosition": 80,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6f9hih2hXXZk",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "VbjZvtUek0Ln",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "themes",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-palette",
+									"isInheritable": false,
+									"position": 60
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Themes.md",
+							"attachments": [
+								{
+									"attachmentId": "0IuNvWkls2sX",
+									"title": "dark-theme.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Themes_dark-theme.png"
+								},
+								{
+									"attachmentId": "HvcI7pb2pZJQ",
+									"title": "steel-blue.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Themes_steel-blue.png"
+								},
+								{
+									"attachmentId": "rwK3vuBgh7sY",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Themes_image.png"
+								}
+							],
+							"dirFileName": "Themes",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "VbjZvtUek0Ln",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"Wy267RK4M69c",
+										"VbjZvtUek0Ln"
+									],
+									"title": "Theme Gallery",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "theme-gallery",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-book-reader",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Theme Gallery.md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "mHbBMPDPkVV5",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"mHbBMPDPkVV5"
+							],
+							"title": "Import & Export",
+							"notePosition": 90,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-import",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"attachments": [],
+							"dirFileName": "Import & Export",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "Oau6X9rCuegd",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"mHbBMPDPkVV5",
+										"Oau6X9rCuegd"
+									],
+									"title": "Markdown",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "rJ9grSgoExl9",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "markdown",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxl-markdown",
+											"isInheritable": false,
+											"position": 50
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Markdown.md",
+									"attachments": [
+										{
+											"attachmentId": "eF5PfSUArlEl",
+											"title": "markdown-file-import.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Markdown_markdown-file-imp.gif"
+										},
+										{
+											"attachmentId": "lHeoBedkdNGi",
+											"title": "markdown-export-subtree.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Markdown_markdown-export-s.gif"
+										},
+										{
+											"attachmentId": "p8I5seD7NUiV",
+											"title": "markdown-export-note.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Markdown_markdown-export-n.gif"
+										},
+										{
+											"attachmentId": "tWIrcy00loZK",
+											"title": "markdown-inline-import.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Markdown_markdown-inline-i.gif"
+										}
+									],
+									"dirFileName": "Markdown",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "rJ9grSgoExl9",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"gh7bpGYxajRS",
+												"mHbBMPDPkVV5",
+												"Oau6X9rCuegd",
+												"rJ9grSgoExl9"
+											],
+											"title": "Supported syntax",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-code-alt",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Supported syntax.md",
+											"attachments": []
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "syuSEKf2rUGr",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"mHbBMPDPkVV5",
+										"syuSEKf2rUGr"
+									],
+									"title": "Evernote",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "evernote-import",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Evernote.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "GnhlmrATVqcH",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"gh7bpGYxajRS",
+										"mHbBMPDPkVV5",
+										"GnhlmrATVqcH"
+									],
+									"title": "OneNote",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "onenote",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "OneNote.md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "rC3pL2aptaRE",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"gh7bpGYxajRS",
+								"rC3pL2aptaRE"
+							],
+							"title": "Zen mode",
+							"notePosition": 100,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-yin-yang",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Zen mode.md",
+							"attachments": [
+								{
+									"attachmentId": "Asn6uBNwt6JI",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Zen mode_image.png"
+								},
+								{
+									"attachmentId": "HGcQUOEXJ3Sp",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Zen mode_image.png"
+								},
+								{
+									"attachmentId": "lqQtSNb8loOS",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_Zen mode_image.png"
+								},
+								{
+									"attachmentId": "LX31yc6Jnksw",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "3_Zen mode_image.png"
+								}
+							]
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "s3YCWHBfmYuM",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"s3YCWHBfmYuM"
+					],
+					"title": "Quick Start",
+					"notePosition": 60,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/markdown",
+					"attributes": [
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "poXkQfguuA0U",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "WOcw2SLH6tbX",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "RDslemsQ6gCp",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "cbkrhQjrkKrh",
+							"isInheritable": false,
+							"position": 40
+						},
+						{
+							"type": "label",
+							"name": "shareAlias",
+							"value": "quick-start",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-run",
+							"isInheritable": false,
+							"position": 40
+						}
+					],
+					"format": "markdown",
+					"dataFileName": "Quick Start.md",
+					"attachments": []
+				},
+				{
+					"isClone": false,
+					"noteId": "i6dbnitykE5D",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"i6dbnitykE5D"
+					],
+					"title": "FAQ",
+					"notePosition": 70,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/markdown",
+					"attributes": [
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "wX4HbRucYSDD",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "IakOLONlIfGI",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "zEY4DaJG4YT5",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "BCkXAVs63Ttv",
+							"isInheritable": false,
+							"position": 40
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "eIg8jdvaoNNd",
+							"isInheritable": false,
+							"position": 50
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "wy8So3yZZlH9",
+							"isInheritable": false,
+							"position": 60
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "CdNpE2pqjmI6",
+							"isInheritable": false,
+							"position": 70
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "tAassRL4RSQL",
+							"isInheritable": false,
+							"position": 80
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "cbkrhQjrkKrh",
+							"isInheritable": false,
+							"position": 90
+						},
+						{
+							"type": "label",
+							"name": "shareAlias",
+							"value": "faq",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-question-mark",
+							"isInheritable": false,
+							"position": 40
+						}
+					],
+					"format": "markdown",
+					"dataFileName": "FAQ.md",
+					"attachments": []
+				},
+				{
+					"isClone": false,
+					"noteId": "KSZ04uQ2D1St",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"KSZ04uQ2D1St"
+					],
+					"title": "Note Types",
+					"notePosition": 130,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "iPIMuisry3hd",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "oPVyFC7WL2Lp",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "QEAPj01N5f7w",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "BlN9DFI679QC",
+							"isInheritable": false,
+							"position": 40
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "4FahAwuGTAwC",
+							"isInheritable": false,
+							"position": 50
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "6f9hih2hXXZk",
+							"isInheritable": false,
+							"position": 60
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "m523cpzocqaD",
+							"isInheritable": false,
+							"position": 70
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "iRwzGnHPzonm",
+							"isInheritable": false,
+							"position": 80
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "bdUJEHsAPYQR",
+							"isInheritable": false,
+							"position": 90
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "HcABDtFCkbFN",
+							"isInheritable": false,
+							"position": 100
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "CdNpE2pqjmI6",
+							"isInheritable": false,
+							"position": 110
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "GTwFsgaA0lCt",
+							"isInheritable": false,
+							"position": 120
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "s1aBHPd79XYj",
+							"isInheritable": false,
+							"position": 130
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "grjYqerjn243",
+							"isInheritable": false,
+							"position": 140
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "1vHRoWCEjj0L",
+							"isInheritable": false,
+							"position": 150
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "gBbsAeiuUxI5",
+							"isInheritable": false,
+							"position": 160
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "81SGnPGMk7Xc",
+							"isInheritable": false,
+							"position": 170
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "W8vYD3Q1zjCR",
+							"isInheritable": false,
+							"position": 180
+						},
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-edit",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "markdown",
+					"dataFileName": "Note Types.md",
+					"attachments": [
+						{
+							"attachmentId": "CRt4gLIroyZ9",
+							"title": "image.png",
+							"role": "image",
+							"mime": "image/png",
+							"position": 10,
+							"dataFileName": "Note Types_image.png"
+						}
+					],
+					"dirFileName": "Note Types",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "iPIMuisry3hd",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"iPIMuisry3hd"
+							],
+							"title": "Text",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "nRhnJkTT8cPs",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Gr6xFaF6ioJ5",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "S6Xx8QIWTV66",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "NwBbFdNZ9h7O",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "NdowYOC1GFKS",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "UYuUB1ZekNQU",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "AgjCISero73a",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "mT0HEkOsz6i1",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "QEAPj01N5f7w",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "nBAXQFj20hS1",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CohkqWQC1iBv",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "YfYAtQBcfo5V",
+									"isInheritable": false,
+									"position": 120
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "dEHYtoWWi8ct",
+									"isInheritable": false,
+									"position": 130
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "2x0ZAX9ePtzV",
+									"isInheritable": false,
+									"position": 140
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "gLt3vA97tMcp",
+									"isInheritable": false,
+									"position": 150
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ZlN4nump6EbW",
+									"isInheritable": false,
+									"position": 160
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "KC1HB96bqqHX",
+									"isInheritable": false,
+									"position": 170
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CoFPLs3dRlXc",
+									"isInheritable": false,
+									"position": 180
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "A9Oc6YKKc65v",
+									"isInheritable": false,
+									"position": 190
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "QrtTYPmdd1qq",
+									"isInheritable": false,
+									"position": 200
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "MI26XDLSAlCD",
+									"isInheritable": false,
+									"position": 210
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "text-notes",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "sorted",
+									"value": "",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-note",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "sorted",
+									"value": "",
+									"isInheritable": false,
+									"position": 40
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Text.md",
+							"attachments": [
+								{
+									"attachmentId": "o9zZbojtCsba",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Text_image.png"
+								},
+								{
+									"attachmentId": "okPQXpSZC3Ml",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Text_image.png"
+								},
+								{
+									"attachmentId": "TaEkNs5KA6Pv",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_Text_image.png"
+								}
+							],
+							"dirFileName": "Text",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "NwBbFdNZ9h7O",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"NwBbFdNZ9h7O"
+									],
+									"title": "Block quotes & admonitions",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "rJ9grSgoExl9",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-info-circle",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Block quotes & admonitions.md",
+									"attachments": [
+										{
+											"attachmentId": "Cls5AZAbPsIO",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Block quotes & admonitions.png"
+										},
+										{
+											"attachmentId": "do36b54XpmIC",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Block quotes & admonitions.png"
+										},
+										{
+											"attachmentId": "hUwfwkRSDeLJ",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Block quotes & admonitions.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "oSuaNgyyKnhu",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"oSuaNgyyKnhu"
+									],
+									"title": "Bookmarks",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "QEAPj01N5f7w",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-bookmark",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Bookmarks.md",
+									"attachments": [
+										{
+											"attachmentId": "2cn9iY3Qgyjs",
+											"title": "plus.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Bookmarks_plus.png"
+										},
+										{
+											"attachmentId": "JaiAT3dHDIyy",
+											"title": "plus.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Bookmarks_plus.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "veGu4faJErEM",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"veGu4faJErEM"
+									],
+									"title": "Content language & Right-to-left support",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-align-right",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Content language & Right-to-le.md",
+									"attachments": [
+										{
+											"attachmentId": "xIGmhxc0vBlC",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Content language & Right-t.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "2x0ZAX9ePtzV",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"2x0ZAX9ePtzV"
+									],
+									"title": "Cut to subnote",
+									"notePosition": 40,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-cut",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Cut to subnote.md",
+									"attachments": [
+										{
+											"attachmentId": "eFVU3SiVi9Bi",
+											"title": "cut-to-subnote.gif",
+											"role": "image",
+											"mime": "image/gif",
+											"position": 10,
+											"dataFileName": "Cut to subnote_cut-to-subn.gif"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "UYuUB1ZekNQU",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"UYuUB1ZekNQU"
+									],
+									"title": "Developer-specific formatting",
+									"notePosition": 50,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "QxEyIjRBizuC",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-code-alt",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Developer-specific formatting.md",
+									"attachments": [
+										{
+											"attachmentId": "7tX4ckOSF8jq",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Developer-specific formatt.png"
+										},
+										{
+											"attachmentId": "HP741oAz3ebU",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Developer-specific formatt.png"
+										},
+										{
+											"attachmentId": "r8POqVPCOgmq",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Developer-specific formatt.png"
+										},
+										{
+											"attachmentId": "UkvE6wdUVadb",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_Developer-specific formatt.png"
+										},
+										{
+											"attachmentId": "V9BY5v8WX15Q",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "4_Developer-specific formatt.png"
+										},
+										{
+											"attachmentId": "VYcvGUzbobxQ",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Developer-specific formatt.png"
+										},
+										{
+											"attachmentId": "yKVC2F773Mg7",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "6_Developer-specific formatt.png"
+										}
+									],
+									"dirFileName": "Developer-specific formatting",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "QxEyIjRBizuC",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"KSZ04uQ2D1St",
+												"iPIMuisry3hd",
+												"UYuUB1ZekNQU",
+												"QxEyIjRBizuC"
+											],
+											"title": "Code blocks",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "6f9hih2hXXZk",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "CoFPLs3dRlXc",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "4TIF1oA4VQRO",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "nRhnJkTT8cPs",
+													"isInheritable": false,
+													"position": 40
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "s8alTXmpFR61",
+													"isInheritable": false,
+													"position": 50
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-code",
+													"isInheritable": false,
+													"position": 50
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Code blocks.md",
+											"attachments": [
+												{
+													"attachmentId": "7HhhhyZ4AS0A",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Code blocks_image.png"
+												},
+												{
+													"attachmentId": "DyHSLO958cdd",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/jpg",
+													"position": 10,
+													"dataFileName": "1_Code blocks_image.png"
+												},
+												{
+													"attachmentId": "kE8PPw7iyuu9",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "2_Code blocks_image.png"
+												}
+											]
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "AgjCISero73a",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"AgjCISero73a"
+									],
+									"title": "Footnotes",
+									"notePosition": 60,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-bracket",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Footnotes.md",
+									"attachments": [
+										{
+											"attachmentId": "33O4oRqrnYWb",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Footnotes_image.png"
+										},
+										{
+											"attachmentId": "J0Rc5ZC9qozK",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Footnotes_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "nRhnJkTT8cPs",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"nRhnJkTT8cPs"
+									],
+									"title": "Formatting toolbar",
+									"notePosition": 70,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_optionsTextNotes",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-text",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Formatting toolbar.md",
+									"attachments": [
+										{
+											"attachmentId": "CZ8ENj2LsBsA",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Formatting toolbar_image.png"
+										},
+										{
+											"attachmentId": "iu9xb3VivIIl",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "1_Formatting toolbar_image.png"
+										},
+										{
+											"attachmentId": "MMeih4nJVgNk",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "2_Formatting toolbar_image.png"
+										},
+										{
+											"attachmentId": "SGaPJHzNyLLV",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "3_Formatting toolbar_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "Gr6xFaF6ioJ5",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"Gr6xFaF6ioJ5"
+									],
+									"title": "General formatting",
+									"notePosition": 80,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Wy267RK4M69c",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Oau6X9rCuegd",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YfYAtQBcfo5V",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-bold",
+											"isInheritable": false,
+											"position": 50
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "General formatting.md",
+									"attachments": [
+										{
+											"attachmentId": "4AfLRjhK3pZP",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "General formatting_image.png"
+										},
+										{
+											"attachmentId": "OkGcMBKy5b38",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_General formatting_image.png"
+										},
+										{
+											"attachmentId": "QlP03tA4G97k",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_General formatting_image.png"
+										},
+										{
+											"attachmentId": "SwE8rNYiMEBb",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_General formatting_image.png"
+										},
+										{
+											"attachmentId": "VRNPOor1LpMY",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_General formatting_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "AxshuNRegLAv",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"AxshuNRegLAv"
+									],
+									"title": "Highlights list",
+									"notePosition": 90,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "RnaPdbciOfeq",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "XpOYSgsLkTJy",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_optionsTextNotes",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BFvAtE74rbP6",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-highlight",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Highlights list.md",
+									"attachments": [
+										{
+											"attachmentId": "lDcgRFQO5hDE",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Highlights list_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "mT0HEkOsz6i1",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"mT0HEkOsz6i1"
+									],
+									"title": "Images",
+									"notePosition": 100,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "0vhv7lsOLy82",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "kBrnXNG3Hplm",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "4TIF1oA4VQRO",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "8YBEPzcpUgxw",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "NdowYOC1GFKS",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "images",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-image-alt",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Images.md",
+									"attachments": [
+										{
+											"attachmentId": "40jG4olRNAlc",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Images_image.png"
+										},
+										{
+											"attachmentId": "bDkYm34QEH5a",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "1_Images_image.png"
+										},
+										{
+											"attachmentId": "Bi9LiB0eMbcH",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "2_Images_image.png"
+										},
+										{
+											"attachmentId": "dRgFtpOcHwke",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "3_Images_image.png"
+										},
+										{
+											"attachmentId": "g7xB3E2Dva2q",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Images_image.png"
+										},
+										{
+											"attachmentId": "Ilz9SuEj39RF",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Images_image.png"
+										},
+										{
+											"attachmentId": "MTsRB4C0yvKX",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "6_Images_image.png"
+										},
+										{
+											"attachmentId": "NZJRGKS6yDeg",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "7_Images_image.png"
+										},
+										{
+											"attachmentId": "PUjxzv10IJkx",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "8_Images_image.png"
+										},
+										{
+											"attachmentId": "qJXx7vPPD4JW",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "9_Images_image.png"
+										},
+										{
+											"attachmentId": "SoDKgOmDoyc1",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "10_Images_image.png"
+										}
+									],
+									"dirFileName": "Images",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "0Ofbk1aSuVRu",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"KSZ04uQ2D1St",
+												"iPIMuisry3hd",
+												"mT0HEkOsz6i1",
+												"0Ofbk1aSuVRu"
+											],
+											"title": "Image references",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "iPIMuisry3hd",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "grjYqerjn243",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "s1aBHPd79XYj",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "gBbsAeiuUxI5",
+													"isInheritable": false,
+													"position": 40
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "XpOYSgsLkTJy",
+													"isInheritable": false,
+													"position": 50
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "s8alTXmpFR61",
+													"isInheritable": false,
+													"position": 60
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bxs-file-image",
+													"isInheritable": false,
+													"position": 80
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Image references.md",
+											"attachments": [
+												{
+													"attachmentId": "6OgYPJ60Uz76",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Image references_image.png"
+												},
+												{
+													"attachmentId": "72VNSgANtMVT",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "1_Image references_image.png"
+												}
+											]
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "nBAXQFj20hS1",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"nBAXQFj20hS1"
+									],
+									"title": "Include Note",
+									"notePosition": 110,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R9pX4DGra2Vt",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Include Note.md",
+									"attachments": [
+										{
+											"attachmentId": "GoLuBbQUYIQE",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Include Note_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "CohkqWQC1iBv",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"CohkqWQC1iBv"
+									],
+									"title": "Insert buttons",
+									"notePosition": 120,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oSuaNgyyKnhu",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "s1aBHPd79XYj",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nBAXQFj20hS1",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "NRnIZmSMc5sj",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YfYAtQBcfo5V",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-plus",
+											"isInheritable": false,
+											"position": 60
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Insert buttons.md",
+									"attachments": [
+										{
+											"attachmentId": "1yYoQCxcL89p",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "75Y6A4kigDhM",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "dZrJ32Cz13fg",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "Mj8uDOt36GM8",
+											"title": "plus.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Insert buttons_plus.png"
+										},
+										{
+											"attachmentId": "N1WMDAlCsrdy",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "Oh4esHvmpwwS",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "Pbux81ahBpld",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "r3blICK1PaXy",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "6_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "rpuASdGA28bV",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "7_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "sNeqHszPiist",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "8_Insert buttons_image.png"
+										},
+										{
+											"attachmentId": "wTs0nELuclAk",
+											"title": "plus.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Insert buttons_plus.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "oiVPnW8QfnvS",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"oiVPnW8QfnvS"
+									],
+									"title": "Keyboard shortcuts",
+									"notePosition": 130,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "UYuUB1ZekNQU",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "MI26XDLSAlCD",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "QEAPj01N5f7w",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YfYAtQBcfo5V",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-keyboard",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Keyboard shortcuts.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "QEAPj01N5f7w",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"QEAPj01N5f7w"
+									],
+									"title": "Links",
+									"notePosition": 140,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "3IDVtesTQ8ds",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "hrZ1D00cLbal",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BCkXAVs63Ttv",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "links",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-link-alt",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Links.md",
+									"attachments": [],
+									"dirFileName": "Links",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "3IDVtesTQ8ds",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"KSZ04uQ2D1St",
+												"iPIMuisry3hd",
+												"QEAPj01N5f7w",
+												"3IDVtesTQ8ds"
+											],
+											"title": "External links",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "nRhnJkTT8cPs",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-link-external",
+													"isInheritable": false,
+													"position": 20
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "External links.md",
+											"attachments": [
+												{
+													"attachmentId": "4iWGIpzSV6MV",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "External links_image.png"
+												},
+												{
+													"attachmentId": "7VIWlzGk8mAN",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "1_External links_image.png"
+												},
+												{
+													"attachmentId": "ScPPPlw9Ab9Y",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "2_External links_image.png"
+												}
+											]
+										},
+										{
+											"isClone": false,
+											"noteId": "hrZ1D00cLbal",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"KSZ04uQ2D1St",
+												"iPIMuisry3hd",
+												"QEAPj01N5f7w",
+												"hrZ1D00cLbal"
+											],
+											"title": "Internal (reference) links",
+											"notePosition": 20,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "nRhnJkTT8cPs",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-link",
+													"isInheritable": false,
+													"position": 20
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Internal (reference) links.md",
+											"attachments": [
+												{
+													"attachmentId": "ausNE2PtmeVB",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Internal (reference) links.png"
+												}
+											]
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "S6Xx8QIWTV66",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"S6Xx8QIWTV66"
+									],
+									"title": "Lists",
+									"notePosition": 150,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "dEHYtoWWi8ct",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-list-ul",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Lists.md",
+									"attachments": [
+										{
+											"attachmentId": "1d3z8mz0JANE",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Lists_image.png"
+										},
+										{
+											"attachmentId": "7YtO7boIQcSu",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Lists_image.png"
+										},
+										{
+											"attachmentId": "eCftcYsVKdAI",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Lists_image.png"
+										},
+										{
+											"attachmentId": "fB3ZhdfysYC3",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "3_Lists_image.png"
+										},
+										{
+											"attachmentId": "IZewdPx4evIx",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Lists_image.png"
+										},
+										{
+											"attachmentId": "JopMc0iA0dqA",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "5_Lists_image.png"
+										},
+										{
+											"attachmentId": "kZMYrJubac6T",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "6_Lists_image.png"
+										},
+										{
+											"attachmentId": "PGeVq8YAQBFA",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "7_Lists_image.png"
+										},
+										{
+											"attachmentId": "VgoG6BtlLYn7",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "8_Lists_image.png"
+										},
+										{
+											"attachmentId": "y0zFP6x0IRRf",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "9_Lists_image.png"
+										},
+										{
+											"attachmentId": "z8eVlXe2WKqr",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "10_Lists_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "QrtTYPmdd1qq",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"QrtTYPmdd1qq"
+									],
+									"title": "Markdown-like formatting",
+									"notePosition": 160,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Oau6X9rCuegd",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Gr6xFaF6ioJ5",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "S6Xx8QIWTV66",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "NwBbFdNZ9h7O",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "QxEyIjRBizuC",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CohkqWQC1iBv",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "dEHYtoWWi8ct",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxl-markdown",
+											"isInheritable": false,
+											"position": 70
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Markdown-like formatting.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "YfYAtQBcfo5V",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"YfYAtQBcfo5V"
+									],
+									"title": "Math Equations",
+									"notePosition": 170,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CohkqWQC1iBv",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wy8So3yZZlH9",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-math",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Math Equations.md",
+									"attachments": [
+										{
+											"attachmentId": "8eaDWXBew9Q8",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Math Equations_image.png"
+										},
+										{
+											"attachmentId": "B7EEd3MJTg7C",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Math Equations_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "dEHYtoWWi8ct",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"dEHYtoWWi8ct"
+									],
+									"title": "Other features",
+									"notePosition": 180,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nRhnJkTT8cPs",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "S6Xx8QIWTV66",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Oau6X9rCuegd",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "2x0ZAX9ePtzV",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-grid",
+											"isInheritable": false,
+											"position": 50
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Other features.md",
+									"attachments": [
+										{
+											"attachmentId": "4ik2A185UZ8W",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Other features_image.png"
+										},
+										{
+											"attachmentId": "o7PD1tyys94h",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Other features_image.png"
+										},
+										{
+											"attachmentId": "po6eICABPAsk",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Other features_image.png"
+										},
+										{
+											"attachmentId": "qCefsqgbbdjp",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_Other features_image.png"
+										},
+										{
+											"attachmentId": "QTaczw8qoYL2",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Other features_image.png"
+										},
+										{
+											"attachmentId": "Roz4NVWVufdl",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Other features_image.png"
+										},
+										{
+											"attachmentId": "x3lcgBCJOVzB",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "6_Other features_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "gLt3vA97tMcp",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"gLt3vA97tMcp"
+									],
+									"title": "Premium features",
+									"notePosition": 190,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wy8So3yZZlH9",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-star",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Premium features.md",
+									"attachments": [],
+									"dirFileName": "Premium features",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "ZlN4nump6EbW",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"KSZ04uQ2D1St",
+												"iPIMuisry3hd",
+												"gLt3vA97tMcp",
+												"ZlN4nump6EbW"
+											],
+											"title": "Slash Commands",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "gLt3vA97tMcp",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "iPIMuisry3hd",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "A9Oc6YKKc65v",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "NwBbFdNZ9h7O",
+													"isInheritable": false,
+													"position": 40
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "pwc194wlRzcH",
+													"isInheritable": false,
+													"position": 50
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-menu",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Slash Commands.md",
+											"attachments": [
+												{
+													"attachmentId": "WUCwfWz4wTwf",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Slash Commands_image.png"
+												}
+											]
+										},
+										{
+											"isClone": false,
+											"noteId": "pwc194wlRzcH",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"KSZ04uQ2D1St",
+												"iPIMuisry3hd",
+												"gLt3vA97tMcp",
+												"pwc194wlRzcH"
+											],
+											"title": "Text Snippets",
+											"notePosition": 20,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "gLt3vA97tMcp",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "KC1HB96bqqHX",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "oPVyFC7WL2Lp",
+													"isInheritable": false,
+													"position": 30
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "OFXdgB2nNk1F",
+													"isInheritable": false,
+													"position": 40
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "nRhnJkTT8cPs",
+													"isInheritable": false,
+													"position": 50
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "ZlN4nump6EbW",
+													"isInheritable": false,
+													"position": 60
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "9sRHySam5fXb",
+													"isInheritable": false,
+													"position": 70
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "s8alTXmpFR61",
+													"isInheritable": false,
+													"position": 80
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "wy8So3yZZlH9",
+													"isInheritable": false,
+													"position": 90
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-align-left",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "Text Snippets.md",
+											"attachments": [
+												{
+													"attachmentId": "1hG8Yw0DTTxr",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Text Snippets_image.png"
+												},
+												{
+													"attachmentId": "DlisV0iJLVec",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "1_Text Snippets_image.png"
+												}
+											]
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "BFvAtE74rbP6",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"BFvAtE74rbP6"
+									],
+									"title": "Table of contents",
+									"notePosition": 200,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "RnaPdbciOfeq",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "XpOYSgsLkTJy",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_optionsTextNotes",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-heading",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Table of contents.md",
+									"attachments": [
+										{
+											"attachmentId": "DL6PJX71Fk3S",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Table of contents_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "NdowYOC1GFKS",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"iPIMuisry3hd",
+										"NdowYOC1GFKS"
+									],
+									"title": "Tables",
+									"notePosition": 210,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "mT0HEkOsz6i1",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-table",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Tables.md",
+									"attachments": [
+										{
+											"attachmentId": "60aP3UCfhfth",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Tables_image.png"
+										},
+										{
+											"attachmentId": "6v5g6D1BpJQD",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Tables_image.png"
+										},
+										{
+											"attachmentId": "75Kw8b8KOtBo",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Tables_image.png"
+										},
+										{
+											"attachmentId": "8mu4ZDtWl2wL",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_Tables_image.png"
+										},
+										{
+											"attachmentId": "cFoSdHv9ada4",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Tables_image.png"
+										},
+										{
+											"attachmentId": "db1nOmkrTQSe",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Tables_image.png"
+										},
+										{
+											"attachmentId": "faKP7Qh4osof",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "6_Tables_image.png"
+										},
+										{
+											"attachmentId": "LaeDASzm6aJg",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "7_Tables_image.png"
+										},
+										{
+											"attachmentId": "pYIg6LGvQANx",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "8_Tables_image.png"
+										},
+										{
+											"attachmentId": "UdhsypjV4pzZ",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "9_Tables_image.png"
+										},
+										{
+											"attachmentId": "VerzwlO9y6Na",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "10_Tables_image.png"
+										},
+										{
+											"attachmentId": "wYkQvargZlNF",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "11_Tables_image.png"
+										},
+										{
+											"attachmentId": "YFGeAN41kvZY",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "12_Tables_image.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "6f9hih2hXXZk",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"6f9hih2hXXZk"
+							],
+							"title": "Code",
+							"notePosition": 40,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BlN9DFI679QC",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "4TIF1oA4VQRO",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iPIMuisry3hd",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "QxEyIjRBizuC",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "s8alTXmpFR61",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "code-notes",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-code",
+									"isInheritable": false,
+									"position": 90
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Code.md",
+							"attachments": [
+								{
+									"attachmentId": "hajUVeLs3EOM",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Code_image.png"
+								},
+								{
+									"attachmentId": "iKJbcEUkME1a",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "1_Code_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "m523cpzocqaD",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"m523cpzocqaD"
+							],
+							"title": "Saved Search",
+							"notePosition": 60,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "9sRHySam5fXb",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "saved-search",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-file-find",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Saved Search.md",
+							"attachments": [
+								{
+									"attachmentId": "FHgW8mO3DAPR",
+									"title": "saved-search.gif",
+									"role": "image",
+									"mime": "image/gif",
+									"position": 10,
+									"dataFileName": "Saved Search_saved-search.gif"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "iRwzGnHPzonm",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"iRwzGnHPzonm"
+							],
+							"title": "Relation Map",
+							"notePosition": 70,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BFs8mudNFgCS",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "OFXdgB2nNk1F",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BCkXAVs63Ttv",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "relation-map",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-network-chart",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Relation Map.md",
+							"attachments": [
+								{
+									"attachmentId": "14cTNGCN2eRq",
+									"title": "relation-map-family-demo.gif",
+									"role": "image",
+									"mime": "image/gif",
+									"position": 10,
+									"dataFileName": "Relation Map_relation-map-.gif"
+								},
+								{
+									"attachmentId": "OfRWMQ0nY400",
+									"title": "relation-map-family.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Relation Map_relation-map-.png"
+								},
+								{
+									"attachmentId": "VdiG1uzPjw3q",
+									"title": "relation-map-dev-process.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Relation Map_relation-map-.png"
+								},
+								{
+									"attachmentId": "x92CIQzusTuc",
+									"title": "relation-map-dev-process-demo.gif",
+									"role": "image",
+									"mime": "image/gif",
+									"position": 10,
+									"dataFileName": "1_Relation Map_relation-map-.gif"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "bdUJEHsAPYQR",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"bdUJEHsAPYQR"
+							],
+							"title": "Note Map",
+							"notePosition": 90,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BCkXAVs63Ttv",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-network-chart",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Note Map.md",
+							"attachments": [
+								{
+									"attachmentId": "iSjacTLiMjyr",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Note Map_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "HcABDtFCkbFN",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"HcABDtFCkbFN"
+							],
+							"title": "Render Note",
+							"notePosition": 110,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6f9hih2hXXZk",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "HcABDtFCkbFN",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "R7abl2fc6Mxi",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6tZeKvSHEUiB",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-extension",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Render Note.md",
+							"attachments": [
+								{
+									"attachmentId": "SeTpR7xEDMvQ",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Render Note_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "GTwFsgaA0lCt",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"GTwFsgaA0lCt"
+							],
+							"title": "Collections",
+							"notePosition": 130,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "8QqnMzx393bx",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0ESUbbAxVnoK",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "mULW0Q3VojwY",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "xWbu3jpNWapp",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "81SGnPGMk7Xc",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "2FvYrpmOXm29",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "OFXdgB2nNk1F",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CtBQqbwXDx1w",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BlN9DFI679QC",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "oPVyFC7WL2Lp",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "m523cpzocqaD",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "KC1HB96bqqHX",
+									"isInheritable": false,
+									"position": 120
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "2mUhVmZK8RF3",
+									"isInheritable": false,
+									"position": 130
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "book-note",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-book",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Collections.md",
+							"attachments": [],
+							"dirFileName": "Collections",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "xWbu3jpNWapp",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"GTwFsgaA0lCt",
+										"xWbu3jpNWapp"
+									],
+									"title": "Calendar View",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "ZjLYv08Rp3qC",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-calendar",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Calendar View.md",
+									"attachments": [
+										{
+											"attachmentId": "37CfbqKYcOtd",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Calendar View_image.png"
+										},
+										{
+											"attachmentId": "akAHcIEcGnWR",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "AU7dnIevWPrz",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "COiR1tnE86i1",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "fOdCNTs2BuI0",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "HfBu0m3WXtn2",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "ho00OJTNrxVI",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "6_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "irfNX8n4159U",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "7_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "KF56rdNuOwWd",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "8_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "oBWr5GL6cUAZ",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "9_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "oS6yUoQtfhpg",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "10_Calendar View_image.png"
+										},
+										{
+											"attachmentId": "u2c09UpZghff",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "11_Calendar View_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "81SGnPGMk7Xc",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"GTwFsgaA0lCt",
+										"81SGnPGMk7Xc"
+									],
+									"title": "Geo Map View",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KSZ04uQ2D1St",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "0ESUbbAxVnoK",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "XpOYSgsLkTJy",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "IakOLONlIfGI",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "lgKX7r3aL30x",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "ZjLYv08Rp3qC",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-map-alt",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Geo Map View.md",
+									"attachments": [
+										{
+											"attachmentId": "1f07O0Z25ZRr",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "3oh61qhNLu7D",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "aCSNn9QlgHFi",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "2_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "aCuXZY7WV4li",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "3_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "agH6yREFgsoU",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "4_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "AHyDUM6R5HeG",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "5_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "CcjWLhE3KKfv",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "6_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "fQy8R1vxKhwN",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "7_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "gJ4Yz80jxcbn",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "8_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "I39BinT2gsN9",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "9_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "IeXU8SLZU7Oz",
+											"title": "image.jpg",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Geo Map View_image.jpg"
+										},
+										{
+											"attachmentId": "Mb9kRm63MxjE",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "10_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "Mx2xwNIk76ZS",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "11_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "oaahbsMRbqd2",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "12_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "pGf1p74KKGU4",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "13_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "tfa1TRUatWEh",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "14_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "tuNZ7Uk9WfX1",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "15_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "x6yBLIsY2LSv",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "16_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "yJMyBRYA3Kwi",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "17_Geo Map View_image.png"
+										},
+										{
+											"attachmentId": "ZvTlu9WMd37z",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "18_Geo Map View_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "8QqnMzx393bx",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"GTwFsgaA0lCt",
+										"8QqnMzx393bx"
+									],
+									"title": "Grid View",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "0ESUbbAxVnoK",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "W8vYD3Q1zjCR",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-grid",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Grid View.md",
+									"attachments": [
+										{
+											"attachmentId": "al3KatZRq5TB",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Grid View_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "mULW0Q3VojwY",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"GTwFsgaA0lCt",
+										"mULW0Q3VojwY"
+									],
+									"title": "List View",
+									"notePosition": 40,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "8QqnMzx393bx",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-list-ul",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "List View.md",
+									"attachments": [
+										{
+											"attachmentId": "igeOEpKp4ygW",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "List View_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "2FvYrpmOXm29",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"GTwFsgaA0lCt",
+										"2FvYrpmOXm29"
+									],
+									"title": "Table View",
+									"notePosition": 50,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "m1lbrzyKDaRB",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "eIg8jdvaoNNd",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CdNpE2pqjmI6",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "m523cpzocqaD",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-table",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Table View.md",
+									"attachments": [
+										{
+											"attachmentId": "vJYUG9fLQ2Pd",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Table View_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "CtBQqbwXDx1w",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"GTwFsgaA0lCt",
+										"CtBQqbwXDx1w"
+									],
+									"title": "Board View",
+									"notePosition": 60,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "2FvYrpmOXm29",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-columns",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Board View.md",
+									"attachments": [
+										{
+											"attachmentId": "usSSa0WI6dDK",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Board View_image.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "s1aBHPd79XYj",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"s1aBHPd79XYj"
+							],
+							"title": "Mermaid Diagrams",
+							"notePosition": 140,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "XpOYSgsLkTJy",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0Ofbk1aSuVRu",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "mermaid-diagrams",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-selection",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Mermaid Diagrams.md",
+							"attachments": [
+								{
+									"attachmentId": "EN4DhmgiSH6t",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Mermaid Diagrams_image.png"
+								},
+								{
+									"attachmentId": "if9nzuWHt5KP",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Mermaid Diagrams_image.png"
+								},
+								{
+									"attachmentId": "TpPwoCFIePXm",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_Mermaid Diagrams_image.png"
+								}
+							],
+							"dirFileName": "Mermaid Diagrams",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "RH6yLjjWJHof",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"KSZ04uQ2D1St",
+										"s1aBHPd79XYj",
+										"RH6yLjjWJHof"
+									],
+									"title": "ELK layout",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bxs-network-chart",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "ELK layout.md",
+									"attachments": [
+										{
+											"attachmentId": "DOY5C5S4vCs7",
+											"title": "ELK off.svg",
+											"role": "image",
+											"mime": "image/svg+xml",
+											"position": 10,
+											"dataFileName": "ELK layout_ELK off.svg"
+										},
+										{
+											"attachmentId": "E1ysxcfkmGBZ",
+											"title": "ELK on.svg",
+											"role": "image",
+											"mime": "image/svg+xml",
+											"position": 10,
+											"dataFileName": "ELK layout_ELK on.svg"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "grjYqerjn243",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"grjYqerjn243"
+							],
+							"title": "Canvas",
+							"notePosition": 170,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-pen",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Canvas.md",
+							"attachments": [
+								{
+									"attachmentId": "DC9fvvootwwZ",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Canvas_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "1vHRoWCEjj0L",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"1vHRoWCEjj0L"
+							],
+							"title": "Web View",
+							"notePosition": 180,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-globe-alt",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Web View.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "gBbsAeiuUxI5",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"gBbsAeiuUxI5"
+							],
+							"title": "Mind Map",
+							"notePosition": 190,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "XpOYSgsLkTJy",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0Ofbk1aSuVRu",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-sitemap",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Mind Map.md",
+							"attachments": [
+								{
+									"attachmentId": "Od9jIuQHijXH",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Mind Map_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "W8vYD3Q1zjCR",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"KSZ04uQ2D1St",
+								"W8vYD3Q1zjCR"
+							],
+							"title": "File",
+							"notePosition": 210,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "oPVyFC7WL2Lp",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ODY7qQn5m2FT",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "mHbBMPDPkVV5",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6f9hih2hXXZk",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BlN9DFI679QC",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0vhv7lsOLy82",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "8YBEPzcpUgxw",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0ESUbbAxVnoK",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iPIMuisry3hd",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0Ofbk1aSuVRu",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "nBAXQFj20hS1",
+									"isInheritable": false,
+									"position": 120
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "File.md",
+							"attachments": [
+								{
+									"attachmentId": "82as0jgkDvVH",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "File_image.png"
+								},
+								{
+									"attachmentId": "FoEnowwOhzLT",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_File_image.png"
+								},
+								{
+									"attachmentId": "fZ7VMfQJWuLQ",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_File_image.png"
+								},
+								{
+									"attachmentId": "hddkgf7kr9g4",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "3_File_image.png"
+								},
+								{
+									"attachmentId": "hIg9g5pgsjS3",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "4_File_image.png"
+								},
+								{
+									"attachmentId": "IC0j8LFCOKka",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "5_File_image.png"
+								},
+								{
+									"attachmentId": "wNHX24feZRAl",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "6_File_image.png"
+								}
+							]
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "BgmBlOIl72jZ",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"BgmBlOIl72jZ"
+					],
+					"title": "Troubleshooting",
+					"notePosition": 250,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/markdown",
+					"attributes": [
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "MgibgPcfeuGz",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "x59R8J8KV5Bp",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "ODY7qQn5m2FT",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "wX4HbRucYSDD",
+							"isInheritable": false,
+							"position": 40
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "tAassRL4RSQL",
+							"isInheritable": false,
+							"position": 50
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "qzNzp9LYQyPT",
+							"isInheritable": false,
+							"position": 60
+						},
+						{
+							"type": "label",
+							"name": "shareAlias",
+							"value": "troubleshooting",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-bug",
+							"isInheritable": false,
+							"position": 30
+						}
+					],
+					"format": "markdown",
+					"dataFileName": "Troubleshooting.md",
+					"attachments": [],
+					"dirFileName": "Troubleshooting",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "wy8So3yZZlH9",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"BgmBlOIl72jZ",
+								"wy8So3yZZlH9"
+							],
+							"title": "Reporting issues",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [],
+							"format": "markdown",
+							"dataFileName": "Reporting issues.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "x59R8J8KV5Bp",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"BgmBlOIl72jZ",
+								"x59R8J8KV5Bp"
+							],
+							"title": "Anonymized Database",
+							"notePosition": 20,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "tAassRL4RSQL",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "anonymized-database",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Anonymized Database.md",
+							"attachments": [
+								{
+									"attachmentId": "xh9biKiOnMJv",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Anonymized Database_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "qzNzp9LYQyPT",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"BgmBlOIl72jZ",
+								"qzNzp9LYQyPT"
+							],
+							"title": "Error logs",
+							"notePosition": 30,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bnyigUA2UK7s",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "9yEHzMyFirZR",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "x59R8J8KV5Bp",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "error-logs",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-comment-error",
+									"isInheritable": false,
+									"position": 60
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Error logs.md",
+							"attachments": [
+								{
+									"attachmentId": "ReQzLPod6UtU",
+									"title": "error-logs-export-subtree.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Error logs_error-logs-expo.png"
+								}
+							],
+							"dirFileName": "Error logs",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "bnyigUA2UK7s",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"BgmBlOIl72jZ",
+										"qzNzp9LYQyPT",
+										"bnyigUA2UK7s"
+									],
+									"title": "Backend (server) logs",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "x3i7MxGccDuM",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "tAassRL4RSQL",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Gzjqa934BdH4",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-server",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Backend (server) logs.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "9yEHzMyFirZR",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"BgmBlOIl72jZ",
+										"qzNzp9LYQyPT",
+										"9yEHzMyFirZR"
+									],
+									"title": "Frontend logs",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-window-alt",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Frontend logs.md",
+									"attachments": [
+										{
+											"attachmentId": "vRup2YTDpWPM",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Frontend logs_image.png"
+										},
+										{
+											"attachmentId": "Y05WqmS4uMMt",
+											"title": "error-logs-firefox-context-men.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Frontend logs_error-logs-f.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "vdlYGAcpXAgc",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"BgmBlOIl72jZ",
+								"vdlYGAcpXAgc"
+							],
+							"title": "Synchronization fails with 504 Gateway Timeout",
+							"notePosition": 50,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ud6MShXL4WpO",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Synchronization fails with 504.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "s8alTXmpFR61",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"BgmBlOIl72jZ",
+								"s8alTXmpFR61"
+							],
+							"title": "Refreshing the application",
+							"notePosition": 60,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [],
+							"format": "markdown",
+							"dataFileName": "Refreshing the application.md",
+							"attachments": []
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "pKK96zzmvBGf",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"pKK96zzmvBGf"
+					],
+					"title": "Theme development",
+					"notePosition": 260,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-palette",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "markdown",
+					"attachments": [],
+					"dirFileName": "Theme development",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "7NfNr5pZpVKV",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"pKK96zzmvBGf",
+								"7NfNr5pZpVKV"
+							],
+							"title": "Creating a custom theme",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "WFGzWeUK6arS",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Creating a custom theme.md",
+							"attachments": [
+								{
+									"attachmentId": "7M6PnFYlxR2t",
+									"title": "3_Creating a custom theme_im.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Creating a custom theme_3_.png"
+								},
+								{
+									"attachmentId": "hJc5fBNfSLoY",
+									"title": "Creating a custom theme_im.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Creating a custom theme_Cr.png"
+								},
+								{
+									"attachmentId": "j3OaGihW6eg3",
+									"title": "1_Creating a custom theme_im.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Creating a custom theme_1_.png"
+								},
+								{
+									"attachmentId": "LCQ6zvUbvXQr",
+									"title": "4_Creating a custom theme_im.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Creating a custom theme_4_.png"
+								},
+								{
+									"attachmentId": "mY5EGlN7TO6I",
+									"title": "5_Creating a custom theme_im.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Creating a custom theme_5_.png"
+								},
+								{
+									"attachmentId": "TMHEj1M3XFGO",
+									"title": "2_Creating a custom theme_im.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Creating a custom theme_2_.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "WFGzWeUK6arS",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"pKK96zzmvBGf",
+								"WFGzWeUK6arS"
+							],
+							"title": "Customize the Next theme",
+							"notePosition": 20,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [],
+							"format": "markdown",
+							"dataFileName": "Customize the Next theme.md",
+							"attachments": [
+								{
+									"attachmentId": "3fAj97aV2noG",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Customize the Next theme_i.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "WN5z4M8ASACJ",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"pKK96zzmvBGf",
+								"WN5z4M8ASACJ"
+							],
+							"title": "Reference",
+							"notePosition": 30,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "d3fAXQ2diepH",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Reference.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "AlhDUqhENtH7",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"pKK96zzmvBGf",
+								"AlhDUqhENtH7"
+							],
+							"title": "Custom app-wide CSS",
+							"notePosition": 40,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "9sRHySam5fXb",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "oPVyFC7WL2Lp",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Custom app-wide CSS.md",
+							"attachments": [
+								{
+									"attachmentId": "fkMLaf6reA6I",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Custom app-wide CSS_image.png"
+								},
+								{
+									"attachmentId": "qBzZ9Qpxwoba",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Custom app-wide CSS_image.png"
+								},
+								{
+									"attachmentId": "TIerrMjmeich",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_Custom app-wide CSS_image.png"
+								},
+								{
+									"attachmentId": "YUrNq5vsCwHe",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "3_Custom app-wide CSS_image.png"
+								}
+							]
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "tC7s2alapj8V",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"tC7s2alapj8V"
+					],
+					"title": "Advanced Usage",
+					"notePosition": 320,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-rocket",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "markdown",
+					"attachments": [],
+					"dirFileName": "Advanced Usage",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "zEY4DaJG4YT5",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"zEY4DaJG4YT5"
+							],
+							"title": "Attributes",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "HI6GBBIduIgv",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Cq5X6iKQop6R",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "BlN9DFI679QC",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "OFXdgB2nNk1F",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bwZpz2ajCEwO",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "attributes",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-list-check",
+									"isInheritable": false,
+									"position": 110
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Attributes.md",
+							"attachments": [
+								{
+									"attachmentId": "4YqnV7iugVCJ",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Attributes_image.png"
+								}
+							],
+							"dirFileName": "Attributes",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "HI6GBBIduIgv",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"zEY4DaJG4YT5",
+										"HI6GBBIduIgv"
+									],
+									"title": "Labels",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R7abl2fc6Mxi",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwZpz2ajCEwO",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "l0tKav7yLHGF",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "_help_YKWqdJhzi2VY",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "vZWERwf8U3nx",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 90
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GPERMystNGTB",
+											"isInheritable": false,
+											"position": 100
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CoFPLs3dRlXc",
+											"isInheritable": false,
+											"position": 110
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "AlhDUqhENtH7",
+											"isInheritable": false,
+											"position": 120
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "pKK96zzmvBGf",
+											"isInheritable": false,
+											"position": 130
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "WFGzWeUK6arS",
+											"isInheritable": false,
+											"position": 140
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "0ESUbbAxVnoK",
+											"isInheritable": false,
+											"position": 150
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "J5Ex1ZrMbyJ6",
+											"isInheritable": false,
+											"position": 160
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "d3fAXQ2diepH",
+											"isInheritable": false,
+											"position": 170
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "MgibgPcfeuGz",
+											"isInheritable": false,
+											"position": 180
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "m523cpzocqaD",
+											"isInheritable": false,
+											"position": 190
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "9sRHySam5fXb",
+											"isInheritable": false,
+											"position": 200
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "u3YFHC9tQlpm",
+											"isInheritable": false,
+											"position": 210
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R9pX4DGra2Vt",
+											"isInheritable": false,
+											"position": 220
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iRwzGnHPzonm",
+											"isInheritable": false,
+											"position": 230
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BCkXAVs63Ttv",
+											"isInheritable": false,
+											"position": 240
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "47ZrP6FNuoG8",
+											"isInheritable": false,
+											"position": 250
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KC1HB96bqqHX",
+											"isInheritable": false,
+											"position": 260
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BFvAtE74rbP6",
+											"isInheritable": false,
+											"position": 270
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bdUJEHsAPYQR",
+											"isInheritable": false,
+											"position": 280
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "AxshuNRegLAv",
+											"isInheritable": false,
+											"position": 290
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "81SGnPGMk7Xc",
+											"isInheritable": false,
+											"position": 300
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xWbu3jpNWapp",
+											"isInheritable": false,
+											"position": 310
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-hash",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Labels.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "Cq5X6iKQop6R",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"zEY4DaJG4YT5",
+										"Cq5X6iKQop6R"
+									],
+									"title": "Relations",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "HI6GBBIduIgv",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwZpz2ajCEwO",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "HcABDtFCkbFN",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R9pX4DGra2Vt",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KC1HB96bqqHX",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BlN9DFI679QC",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "oPVyFC7WL2Lp",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GPERMystNGTB",
+											"isInheritable": false,
+											"position": 90
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-transfer",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Relations.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "bwZpz2ajCEwO",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"zEY4DaJG4YT5",
+										"bwZpz2ajCEwO"
+									],
+									"title": "Attribute Inheritance",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "HI6GBBIduIgv",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Cq5X6iKQop6R",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KC1HB96bqqHX",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "attribute-inheritance",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-list-plus",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Attribute Inheritance.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "OFXdgB2nNk1F",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"zEY4DaJG4YT5",
+										"OFXdgB2nNk1F"
+									],
+									"title": "Promoted Attributes",
+									"notePosition": 40,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwZpz2ajCEwO",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "promoted-attributes",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-table",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Promoted Attributes.md",
+									"attachments": [
+										{
+											"attachmentId": "4EcBRWF9iCk2",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Promoted Attributes_image.png"
+										},
+										{
+											"attachmentId": "Txf5Jdm2vqt2",
+											"title": "promoted-attributes.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Promoted Attributes_promot.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "KC1HB96bqqHX",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"KC1HB96bqqHX"
+							],
+							"title": "Templates",
+							"notePosition": 30,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bwZpz2ajCEwO",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "OFXdgB2nNk1F",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "xYjQUYhpbUEW",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "l0tKav7yLHGF",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "47ZrP6FNuoG8",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "9sRHySam5fXb",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iRwzGnHPzonm",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "template",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-copy",
+									"isInheritable": false,
+									"position": 110
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Templates.md",
+							"attachments": [
+								{
+									"attachmentId": "65tzLidJl1uU",
+									"title": "template.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Templates_template.png"
+								},
+								{
+									"attachmentId": "72yQHFCV84st",
+									"title": "template-create-instance-note.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Templates_template-create-.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "BCkXAVs63Ttv",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"BCkXAVs63Ttv"
+							],
+							"title": "Note Map (Link map, Tree map)",
+							"notePosition": 40,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bdUJEHsAPYQR",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iRwzGnHPzonm",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "note-map",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-network-chart",
+									"isInheritable": false,
+									"position": 40
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Note Map (Link map, Tree map).md",
+							"attachments": [
+								{
+									"attachmentId": "F48iB3BbITHb",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "Note Map (Link map, Tree m.png"
+								},
+								{
+									"attachmentId": "scmGuoLQPj8C",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/jpg",
+									"position": 10,
+									"dataFileName": "1_Note Map (Link map, Tree m.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "R9pX4DGra2Vt",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"R9pX4DGra2Vt"
+							],
+							"title": "Sharing",
+							"notePosition": 60,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iPIMuisry3hd",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "nBAXQFj20hS1",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6f9hih2hXXZk",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "m523cpzocqaD",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iRwzGnHPzonm",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bdUJEHsAPYQR",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "HcABDtFCkbFN",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "GTwFsgaA0lCt",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "s1aBHPd79XYj",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "grjYqerjn243",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "1vHRoWCEjj0L",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "gBbsAeiuUxI5",
+									"isInheritable": false,
+									"position": 120
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "81SGnPGMk7Xc",
+									"isInheritable": false,
+									"position": 130
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "W8vYD3Q1zjCR",
+									"isInheritable": false,
+									"position": 140
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "WOcw2SLH6tbX",
+									"isInheritable": false,
+									"position": 150
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "x3i7MxGccDuM",
+									"isInheritable": false,
+									"position": 160
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bwZpz2ajCEwO",
+									"isInheritable": false,
+									"position": 170
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Wy267RK4M69c",
+									"isInheritable": false,
+									"position": 180
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Qjt68inQ2bRj",
+									"isInheritable": false,
+									"position": 190
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "sharing",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-share-alt",
+									"isInheritable": false,
+									"position": 30
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Sharing.md",
+							"attachments": [
+								{
+									"attachmentId": "ibqWQUOCMhIE",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Sharing_image.png"
+								},
+								{
+									"attachmentId": "ShhsPSZVMQKx",
+									"title": "share-single-note.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Sharing_share-single-note.png"
+								}
+							],
+							"dirFileName": "Sharing",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "Qjt68inQ2bRj",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"R9pX4DGra2Vt",
+										"Qjt68inQ2bRj"
+									],
+									"title": "Serving directly the content of a note",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "Serving directly the content o.md",
+									"attachments": [
+										{
+											"attachmentId": "eizmhhmocL6L",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Serving directly the conte.png"
+										},
+										{
+											"attachmentId": "ixkXFTSSkdpL",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "1_Serving directly the conte.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "5668rwcirq1t",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"5668rwcirq1t"
+							],
+							"title": "Advanced Showcases",
+							"notePosition": 80,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "OFXdgB2nNk1F",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iRwzGnHPzonm",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "l0tKav7yLHGF",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "R7abl2fc6Mxi",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "xYjQUYhpbUEW",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "advanced-showcases",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Advanced Showcases.md",
+							"attachments": [],
+							"dirFileName": "Advanced Showcases",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "l0tKav7yLHGF",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"5668rwcirq1t",
+										"l0tKav7yLHGF"
+									],
+									"title": "Day Notes",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "IakOLONlIfGI",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYjQUYhpbUEW",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R7abl2fc6Mxi",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KC1HB96bqqHX",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "ivYnonVFBxbQ",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "day-notes",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-calendar",
+											"isInheritable": false,
+											"position": 40
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Day Notes.md",
+									"attachments": [
+										{
+											"attachmentId": "9wmaElfXYjWM",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Day Notes_image.png"
+										},
+										{
+											"attachmentId": "FL40jUEj7xLt",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "1_Day Notes_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "R7abl2fc6Mxi",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"5668rwcirq1t",
+										"R7abl2fc6Mxi"
+									],
+									"title": "Weight Tracker",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "l0tKav7yLHGF",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GLks18SNjxmC",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wX4HbRucYSDD",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "KC1HB96bqqHX",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CdNpE2pqjmI6",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "weight-tracker",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Weight Tracker.md",
+									"attachments": [
+										{
+											"attachmentId": "Ah5QpwUUEGf8",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Weight Tracker_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "xYjQUYhpbUEW",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"5668rwcirq1t",
+										"xYjQUYhpbUEW"
+									],
+									"title": "Task Manager",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "l0tKav7yLHGF",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "OFXdgB2nNk1F",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "CdNpE2pqjmI6",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "wX4HbRucYSDD",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "IakOLONlIfGI",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "kBrnXNG3Hplm",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "bwZpz2ajCEwO",
+											"isInheritable": false,
+											"position": 80
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GPERMystNGTB",
+											"isInheritable": false,
+											"position": 90
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 100
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "task-manager",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-calendar-check",
+											"isInheritable": false,
+											"position": 120
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Task Manager.md",
+									"attachments": [
+										{
+											"attachmentId": "D0RLhLxmO9ME",
+											"title": "task-manager.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Task Manager_task-manager.png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "J5Ex1ZrMbyJ6",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"J5Ex1ZrMbyJ6"
+							],
+							"title": "Custom Request Handler",
+							"notePosition": 90,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6f9hih2hXXZk",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "GLks18SNjxmC",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "d3fAXQ2diepH",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "custom-request-handler",
+									"isInheritable": false,
+									"position": 30
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Custom Request Handler.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "d3fAXQ2diepH",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"d3fAXQ2diepH"
+							],
+							"title": "Custom Resource Providers",
+							"notePosition": 100,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [],
+							"format": "markdown",
+							"dataFileName": "Custom Resource Providers.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "pgxEVkzLl1OP",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"pgxEVkzLl1OP"
+							],
+							"title": "ETAPI (REST API)",
+							"notePosition": 110,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "etapi",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "ETAPI (REST API).md",
+							"attachments": [],
+							"dirFileName": "ETAPI (REST API)",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "9qPsTWBorUhQ",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"pgxEVkzLl1OP",
+										"9qPsTWBorUhQ"
+									],
+									"title": "API Reference",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "webView",
+									"mime": "",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "webViewSrc",
+											"value": "/etapi/docs",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"dataFileName": "API Reference.dat",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "47ZrP6FNuoG8",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"47ZrP6FNuoG8"
+							],
+							"title": "Default Note Title",
+							"notePosition": 140,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "habiZ3HU8Kw8",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "KC1HB96bqqHX",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "default-note-title",
+									"isInheritable": false,
+									"position": 30
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Default Note Title.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "wX4HbRucYSDD",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"wX4HbRucYSDD"
+							],
+							"title": "Database",
+							"notePosition": 160,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "tAassRL4RSQL",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6tZeKvSHEUiB",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "oyIAJ9PvvwHX",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Gzjqa934BdH4",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "database",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-data",
+									"isInheritable": false,
+									"position": 50
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Database.md",
+							"attachments": [],
+							"dirFileName": "Database",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "oyIAJ9PvvwHX",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"wX4HbRucYSDD",
+										"oyIAJ9PvvwHX"
+									],
+									"title": "Manually altering the database",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "YKWqdJhzi2VY",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "tAassRL4RSQL",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Manually altering the database.md",
+									"attachments": [
+										{
+											"attachmentId": "0740ph4lJ4rv",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/jpg",
+											"position": 10,
+											"dataFileName": "Manually altering the data.png"
+										}
+									],
+									"dirFileName": "Manually altering the database",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "YKWqdJhzi2VY",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"tC7s2alapj8V",
+												"wX4HbRucYSDD",
+												"oyIAJ9PvvwHX",
+												"YKWqdJhzi2VY"
+											],
+											"title": "SQL Console",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "l0tKav7yLHGF",
+													"isInheritable": false,
+													"position": 10
+												},
+												{
+													"type": "relation",
+													"name": "internalLink",
+													"value": "Vc8PjrjAGuOp",
+													"isInheritable": false,
+													"position": 20
+												},
+												{
+													"type": "label",
+													"name": "iconClass",
+													"value": "bx bx-data",
+													"isInheritable": false,
+													"position": 30
+												}
+											],
+											"format": "markdown",
+											"dataFileName": "SQL Console.md",
+											"attachments": [
+												{
+													"attachmentId": "1YS10Qg7S4YR",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/jpg",
+													"position": 10,
+													"dataFileName": "SQL Console_image.png"
+												},
+												{
+													"attachmentId": "827EgLgWhZWF",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/jpg",
+													"position": 10,
+													"dataFileName": "1_SQL Console_image.png"
+												},
+												{
+													"attachmentId": "gIbK7NNLu3iZ",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "2_SQL Console_image.png"
+												},
+												{
+													"attachmentId": "pP87PB9ELjQn",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "3_SQL Console_image.png"
+												}
+											]
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "6tZeKvSHEUiB",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"wX4HbRucYSDD",
+										"6tZeKvSHEUiB"
+									],
+									"title": "Demo Notes",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "l0tKav7yLHGF",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "R7abl2fc6Mxi",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYjQUYhpbUEW",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iRwzGnHPzonm",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Wy267RK4M69c",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-package",
+											"isInheritable": false,
+											"position": 110
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Demo Notes.md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "Gzjqa934BdH4",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"Gzjqa934BdH4"
+							],
+							"title": "Configuration (config.ini or environment variables)",
+							"notePosition": 170,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "tAassRL4RSQL",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "configuration",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Configuration (config.ini or e.md",
+							"attachments": [],
+							"dirFileName": "Configuration (config.ini or environment variables)",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "c5xB8m4g2IY6",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"Gzjqa934BdH4",
+										"c5xB8m4g2IY6"
+									],
+									"title": "Trilium instance",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "cbkrhQjrkKrh",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Trilium instance.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "LWtBjFej3wX3",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"Gzjqa934BdH4",
+										"LWtBjFej3wX3"
+									],
+									"title": "Cross-Origin Resource Sharing (CORS)",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "Cross-Origin Resource Sharing .md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "ivYnonVFBxbQ",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"ivYnonVFBxbQ"
+							],
+							"title": "Bulk Actions",
+							"notePosition": 180,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "HI6GBBIduIgv",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Cq5X6iKQop6R",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "oPVyFC7WL2Lp",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "yTjUdsOi4CIE",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "habiZ3HU8Kw8",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "vZWERwf8U3nx",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-list-plus",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Bulk Actions.md",
+							"attachments": [
+								{
+									"attachmentId": "cJTc66E2BRTf",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Bulk Actions_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "4FahAwuGTAwC",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"4FahAwuGTAwC"
+							],
+							"title": "Note source",
+							"notePosition": 190,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "KSZ04uQ2D1St",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "iPIMuisry3hd",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "MI26XDLSAlCD",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "6f9hih2hXXZk",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "81SGnPGMk7Xc",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "grjYqerjn243",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "H0mM1lTxF9JI",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "gBbsAeiuUxI5",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "N4IDkixaDG9C",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0vhv7lsOLy82",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "8YBEPzcpUgxw",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-code",
+									"isInheritable": false,
+									"position": 120
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Note source.md",
+							"attachments": [
+								{
+									"attachmentId": "Ud3rPUVJpRWJ",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Note source_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "1YeN2MzFUluU",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"1YeN2MzFUluU"
+							],
+							"title": "Technologies used",
+							"notePosition": 200,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "KSZ04uQ2D1St",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-component",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Technologies used.md",
+							"attachments": [],
+							"dirFileName": "Technologies used",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "MI26XDLSAlCD",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"1YeN2MzFUluU",
+										"MI26XDLSAlCD"
+									],
+									"title": "CKEditor",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "iPIMuisry3hd",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "2x0ZAX9ePtzV",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "nBAXQFj20hS1",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "Oau6X9rCuegd",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "QEAPj01N5f7w",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "NwBbFdNZ9h7O",
+											"isInheritable": false,
+											"position": 60
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "CKEditor.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "N4IDkixaDG9C",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"1YeN2MzFUluU",
+										"N4IDkixaDG9C"
+									],
+									"title": "MindElixir",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "gBbsAeiuUxI5",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "MindElixir.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "H0mM1lTxF9JI",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"1YeN2MzFUluU",
+										"H0mM1lTxF9JI"
+									],
+									"title": "Excalidraw",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "grjYqerjn243",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Excalidraw.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "MQHyy2dIFgxS",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"1YeN2MzFUluU",
+										"MQHyy2dIFgxS"
+									],
+									"title": "Leaflet",
+									"notePosition": 40,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "81SGnPGMk7Xc",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Leaflet.md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "m1lbrzyKDaRB",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"m1lbrzyKDaRB"
+							],
+							"title": "Note ID",
+							"notePosition": 210,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "0vhv7lsOLy82",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-hash",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Note ID.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "0vTSyvhPTAOz",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"0vTSyvhPTAOz"
+							],
+							"title": "Internal API",
+							"notePosition": 220,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [],
+							"format": "markdown",
+							"attachments": [],
+							"dirFileName": "Internal API",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "z8O2VG4ZZJD7",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"0vTSyvhPTAOz",
+										"z8O2VG4ZZJD7"
+									],
+									"title": "API Reference",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "webView",
+									"mime": "",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "webViewSrc",
+											"value": "/api/docs",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"dataFileName": "API Reference.dat",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "2mUhVmZK8RF3",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"2mUhVmZK8RF3"
+							],
+							"title": "Hidden Notes",
+							"notePosition": 230,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Cq5X6iKQop6R",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "wX4HbRucYSDD",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_globalNoteMap",
+									"isInheritable": false,
+									"position": 40
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_sqlConsole",
+									"isInheritable": false,
+									"position": 50
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "YKWqdJhzi2VY",
+									"isInheritable": false,
+									"position": 60
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_search",
+									"isInheritable": false,
+									"position": 70
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_bulkAction",
+									"isInheritable": false,
+									"position": 80
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ivYnonVFBxbQ",
+									"isInheritable": false,
+									"position": 90
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_backendLog",
+									"isInheritable": false,
+									"position": 100
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_userHidden",
+									"isInheritable": false,
+									"position": 110
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_lbTplRoot",
+									"isInheritable": false,
+									"position": 120
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_share",
+									"isInheritable": false,
+									"position": 130
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_lbRoot",
+									"isInheritable": false,
+									"position": 140
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_options",
+									"isInheritable": false,
+									"position": 150
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_lbMobileRoot",
+									"isInheritable": false,
+									"position": 160
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "_help",
+									"isInheritable": false,
+									"position": 170
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "eIg8jdvaoNNd",
+									"isInheritable": false,
+									"position": 180
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "QEAPj01N5f7w",
+									"isInheritable": false,
+									"position": 190
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "m1lbrzyKDaRB",
+									"isInheritable": false,
+									"position": 200
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "x3i7MxGccDuM",
+									"isInheritable": false,
+									"position": 210
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bdUJEHsAPYQR",
+									"isInheritable": false,
+									"position": 220
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "xYmIYSP6wE3F",
+									"isInheritable": false,
+									"position": 230
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "u3YFHC9tQlpm",
+									"isInheritable": false,
+									"position": 240
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "qzNzp9LYQyPT",
+									"isInheritable": false,
+									"position": 250
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 260
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "R9pX4DGra2Vt",
+									"isInheritable": false,
+									"position": 270
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "4TIF1oA4VQRO",
+									"isInheritable": false,
+									"position": 280
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-hide",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Hidden Notes.md",
+							"attachments": [
+								{
+									"attachmentId": "PrFEZeM6sRl6",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Hidden Notes_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "uYF7pmepw27K",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"tC7s2alapj8V",
+								"uYF7pmepw27K"
+							],
+							"title": "Metrics",
+							"notePosition": 240,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bOP3TB56fL1V",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bxs-data",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Metrics.md",
+							"attachments": [
+								{
+									"attachmentId": "6FcnvEg39b88",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Metrics_image.png"
+								},
+								{
+									"attachmentId": "amOIi8fzVhSM",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Metrics_image.png"
+								},
+								{
+									"attachmentId": "Ojj9cAXPbxJO",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_Metrics_image.png"
+								}
+							],
+							"dirFileName": "Metrics",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "bOP3TB56fL1V",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"tC7s2alapj8V",
+										"uYF7pmepw27K",
+										"bOP3TB56fL1V"
+									],
+									"title": "grafana-dashboard.json",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "code",
+									"mime": "application/json",
+									"attributes": [],
+									"dataFileName": "grafana-dashboard.json",
+									"attachments": []
+								}
+							]
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "LMAv4Uy3Wk6J",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"LMAv4Uy3Wk6J"
+					],
+					"title": "AI",
+					"notePosition": 330,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "book",
+					"mime": "",
+					"attributes": [
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-bot",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "label",
+							"name": "viewType",
+							"value": "list",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "label",
+							"name": "expanded",
+							"value": "",
+							"isInheritable": false,
+							"position": 30
+						}
+					],
+					"attachments": [],
+					"dirFileName": "AI",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "GBBMSlVSOIGP",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"LMAv4Uy3Wk6J",
+								"GBBMSlVSOIGP"
+							],
+							"title": "Introduction",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "vvUCN7FDkq7G",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Introduction.md",
+							"attachments": [
+								{
+									"attachmentId": "4UpXwA3WvbmA",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Introduction_image.png"
+								},
+								{
+									"attachmentId": "8Bn5IsE3Bv1k",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_Introduction_image.png"
+								},
+								{
+									"attachmentId": "ABN1rFIIJ8no",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "2_Introduction_image.png"
+								},
+								{
+									"attachmentId": "CK3z7sYw63XT",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "3_Introduction_image.png"
+								},
+								{
+									"attachmentId": "E6Y09N2t7vyA",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "4_Introduction_image.png"
+								},
+								{
+									"attachmentId": "JlIPeTtl5wlV",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "5_Introduction_image.png"
+								},
+								{
+									"attachmentId": "ur4TDJeRqpUC",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "6_Introduction_image.png"
+								},
+								{
+									"attachmentId": "UTH83LkQEA8u",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "7_Introduction_image.png"
+								},
+								{
+									"attachmentId": "V68TCCTUdyl7",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "8_Introduction_image.png"
+								},
+								{
+									"attachmentId": "YbWoNq58T9kB",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "9_Introduction_image.png"
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "WkM7gsEUyCXs",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"LMAv4Uy3Wk6J",
+								"WkM7gsEUyCXs"
+							],
+							"title": "AI Provider Information",
+							"notePosition": 20,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "7EdTxPADv95W",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "ZavFigBX9AwP",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "e0lkirXEiSNc",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "viewType",
+									"value": "list",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "AI Provider Information.md",
+							"attachments": [
+								{
+									"attachmentId": "BNN9Vv3JEf2X",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "AI Provider Information_im.png"
+								},
+								{
+									"attachmentId": "diIollN3KEbn",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "1_AI Provider Information_im.png"
+								}
+							],
+							"dirFileName": "AI Provider Information",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "7EdTxPADv95W",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"LMAv4Uy3Wk6J",
+										"WkM7gsEUyCXs",
+										"7EdTxPADv95W"
+									],
+									"title": "Ollama",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "book",
+									"mime": "",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "viewType",
+											"value": "list",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "label",
+											"name": "expanded",
+											"value": "",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"attachments": [],
+									"dirFileName": "Ollama",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "vvUCN7FDkq7G",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"LMAv4Uy3Wk6J",
+												"WkM7gsEUyCXs",
+												"7EdTxPADv95W",
+												"vvUCN7FDkq7G"
+											],
+											"title": "Installing Ollama",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "text",
+											"mime": "text/html",
+											"attributes": [],
+											"format": "markdown",
+											"dataFileName": "Installing Ollama.md",
+											"attachments": [
+												{
+													"attachmentId": "CG9q2FfKuEsr",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "Installing Ollama_image.png"
+												},
+												{
+													"attachmentId": "GEcgXxUE1IDx",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "1_Installing Ollama_image.png"
+												},
+												{
+													"attachmentId": "OMGDDxjScXCl",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "2_Installing Ollama_image.png"
+												},
+												{
+													"attachmentId": "Qacg7ibmEBkZ",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "3_Installing Ollama_image.png"
+												},
+												{
+													"attachmentId": "vSjU929VnBm4",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "4_Installing Ollama_image.png"
+												},
+												{
+													"attachmentId": "xGrxARTj79Gv",
+													"title": "image.png",
+													"role": "image",
+													"mime": "image/png",
+													"position": 10,
+													"dataFileName": "5_Installing Ollama_image.png"
+												}
+											]
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "ZavFigBX9AwP",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"LMAv4Uy3Wk6J",
+										"WkM7gsEUyCXs",
+										"ZavFigBX9AwP"
+									],
+									"title": "OpenAI",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "OpenAI.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "e0lkirXEiSNc",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"LMAv4Uy3Wk6J",
+										"WkM7gsEUyCXs",
+										"e0lkirXEiSNc"
+									],
+									"title": "Anthropic",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "Anthropic.md",
+									"attachments": []
+								}
+							]
+						}
+					]
+				},
+				{
+					"isClone": false,
+					"noteId": "CdNpE2pqjmI6",
+					"notePath": [
+						"pOsGYCXsbNQG",
+						"CdNpE2pqjmI6"
+					],
+					"title": "Scripting",
+					"notePosition": 340,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/markdown",
+					"attributes": [
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "6f9hih2hXXZk",
+							"isInheritable": false,
+							"position": 10
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "GLks18SNjxmC",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "TjLYAo3JMO8X",
+							"isInheritable": false,
+							"position": 30
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "zEY4DaJG4YT5",
+							"isInheritable": false,
+							"position": 40
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "RDslemsQ6gCp",
+							"isInheritable": false,
+							"position": 50
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "5668rwcirq1t",
+							"isInheritable": false,
+							"position": 60
+						},
+						{
+							"type": "relation",
+							"name": "internalLink",
+							"value": "GPERMystNGTB",
+							"isInheritable": false,
+							"position": 70
+						},
+						{
+							"type": "label",
+							"name": "shareAlias",
+							"value": "scripts",
+							"isInheritable": false,
+							"position": 20
+						},
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bxs-file-js",
+							"isInheritable": false,
+							"position": 80
+						}
+					],
+					"format": "markdown",
+					"dataFileName": "Scripting.md",
+					"attachments": [],
+					"dirFileName": "Scripting",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "yIhgI5H7A2Sm",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"CdNpE2pqjmI6",
+								"yIhgI5H7A2Sm"
+							],
+							"title": "Frontend Basics",
+							"notePosition": 20,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "SynTBQiBsdYJ",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "GLks18SNjxmC",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "frontend-basics",
+									"isInheritable": false,
+									"position": 30
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Frontend Basics.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "es8OU2GuguFU",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"CdNpE2pqjmI6",
+								"es8OU2GuguFU"
+							],
+							"title": "Examples",
+							"notePosition": 50,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [],
+							"format": "markdown",
+							"attachments": [],
+							"dirFileName": "Examples",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "TjLYAo3JMO8X",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"es8OU2GuguFU",
+										"TjLYAo3JMO8X"
+									],
+									"title": "\"New Task\" launcher button",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYjQUYhpbUEW",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "xYmIYSP6wE3F",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 40
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "m1lbrzyKDaRB",
+											"isInheritable": false,
+											"position": 50
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "s8alTXmpFR61",
+											"isInheritable": false,
+											"position": 60
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "yIhgI5H7A2Sm",
+											"isInheritable": false,
+											"position": 70
+										},
+										{
+											"type": "label",
+											"name": "iconClass",
+											"value": "bx bx-task",
+											"isInheritable": false,
+											"position": 80
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "New Task launcher button.md",
+									"attachments": [
+										{
+											"attachmentId": "9C2JA6tdtRpN",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "New Task launcher button_i.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "7kZPMD0uFwkH",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"es8OU2GuguFU",
+										"7kZPMD0uFwkH"
+									],
+									"title": "Downloading responses from Google Forms",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "Downloading responses from Goo.md",
+									"attachments": []
+								},
+								{
+									"isClone": false,
+									"noteId": "DL92EjAaXT26",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"es8OU2GuguFU",
+										"DL92EjAaXT26"
+									],
+									"title": "Using promoted attributes to configure scripts",
+									"notePosition": 30,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [],
+									"format": "markdown",
+									"dataFileName": "Using promoted attributes to c.md",
+									"attachments": [
+										{
+											"attachmentId": "7P3jzVEa1mk7",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Using promoted attributes .png"
+										}
+									]
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "GPERMystNGTB",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"CdNpE2pqjmI6",
+								"GPERMystNGTB"
+							],
+							"title": "Events",
+							"notePosition": 70,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "c5xB8m4g2IY6",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "zEY4DaJG4YT5",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "events",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-rss",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Events.md",
+							"attachments": []
+						},
+						{
+							"isClone": false,
+							"noteId": "MgibgPcfeuGz",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"CdNpE2pqjmI6",
+								"MgibgPcfeuGz"
+							],
+							"title": "Custom Widgets",
+							"notePosition": 80,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "custom-widget",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Custom Widgets.md",
+							"attachments": [],
+							"dirFileName": "Custom Widgets",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "YNxAqkI5Kg1M",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"MgibgPcfeuGz",
+										"YNxAqkI5Kg1M"
+									],
+									"title": "Word count widget",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/html",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6tZeKvSHEUiB",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "6f9hih2hXXZk",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "s8alTXmpFR61",
+											"isInheritable": false,
+											"position": 30
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Word count widget.md",
+									"attachments": [
+										{
+											"attachmentId": "JhM9NWfebzPi",
+											"title": "image.png",
+											"role": "image",
+											"mime": "image/png",
+											"position": 10,
+											"dataFileName": "Word count widget_image.png"
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "SynTBQiBsdYJ",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"MgibgPcfeuGz",
+										"SynTBQiBsdYJ"
+									],
+									"title": "Widget Basics",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "text",
+									"mime": "text/markdown",
+									"attributes": [
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "zEY4DaJG4YT5",
+											"isInheritable": false,
+											"position": 10
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "BFs8mudNFgCS",
+											"isInheritable": false,
+											"position": 20
+										},
+										{
+											"type": "relation",
+											"name": "internalLink",
+											"value": "GLks18SNjxmC",
+											"isInheritable": false,
+											"position": 30
+										},
+										{
+											"type": "label",
+											"name": "shareAlias",
+											"value": "widget-basics",
+											"isInheritable": false,
+											"position": 20
+										}
+									],
+									"format": "markdown",
+									"dataFileName": "Widget Basics.md",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "GLks18SNjxmC",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"CdNpE2pqjmI6",
+								"GLks18SNjxmC"
+							],
+							"title": "Script API",
+							"notePosition": 90,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/markdown",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "CdNpE2pqjmI6",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "Q2z6av6JZVWm",
+									"isInheritable": false,
+									"position": 20
+								},
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "MEtfsqa5VwNi",
+									"isInheritable": false,
+									"position": 30
+								},
+								{
+									"type": "label",
+									"name": "shareAlias",
+									"value": "script-api",
+									"isInheritable": false,
+									"position": 10
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Script API.md",
+							"attachments": [],
+							"dirFileName": "Script API",
+							"children": [
+								{
+									"isClone": false,
+									"noteId": "Q2z6av6JZVWm",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"GLks18SNjxmC",
+										"Q2z6av6JZVWm"
+									],
+									"title": "Frontend API",
+									"notePosition": 10,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "webView",
+									"mime": "",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "webViewSrc",
+											"value": "https://triliumnext.github.io/Notes/Script%20API/interfaces/Frontend_Script_API.Api.html",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"attachments": [],
+									"dirFileName": "Frontend API",
+									"children": [
+										{
+											"isClone": false,
+											"noteId": "habiZ3HU8Kw8",
+											"notePath": [
+												"pOsGYCXsbNQG",
+												"CdNpE2pqjmI6",
+												"GLks18SNjxmC",
+												"Q2z6av6JZVWm",
+												"habiZ3HU8Kw8"
+											],
+											"title": "FNote",
+											"notePosition": 10,
+											"prefix": null,
+											"isExpanded": false,
+											"type": "webView",
+											"mime": "",
+											"attributes": [
+												{
+													"type": "label",
+													"name": "webViewSrc",
+													"value": "https://triliumnext.github.io/Notes/Script%20API/classes/Frontend_Script_API.FNote.html",
+													"isInheritable": false,
+													"position": 10
+												}
+											],
+											"dataFileName": "FNote.dat",
+											"attachments": []
+										}
+									]
+								},
+								{
+									"isClone": false,
+									"noteId": "MEtfsqa5VwNi",
+									"notePath": [
+										"pOsGYCXsbNQG",
+										"CdNpE2pqjmI6",
+										"GLks18SNjxmC",
+										"MEtfsqa5VwNi"
+									],
+									"title": "Backend API",
+									"notePosition": 20,
+									"prefix": null,
+									"isExpanded": false,
+									"type": "webView",
+									"mime": "",
+									"attributes": [
+										{
+											"type": "label",
+											"name": "webViewSrc",
+											"value": "https://triliumnext.github.io/Notes/Script%20API/interfaces/Backend_Script_API.Api.html",
+											"isInheritable": false,
+											"position": 10
+										}
+									],
+									"dataFileName": "Backend API.dat",
+									"attachments": []
+								}
+							]
+						},
+						{
+							"isClone": false,
+							"noteId": "vElnKeDNPSVl",
+							"notePath": [
+								"pOsGYCXsbNQG",
+								"CdNpE2pqjmI6",
+								"vElnKeDNPSVl"
+							],
+							"title": "Logging",
+							"notePosition": 100,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "relation",
+									"name": "internalLink",
+									"value": "bnyigUA2UK7s",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-terminal",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "markdown",
+							"dataFileName": "Logging.md",
+							"attachments": [
+								{
+									"attachmentId": "OFVZwVeITJOR",
+									"title": "image.png",
+									"role": "image",
+									"mime": "image/png",
+									"position": 10,
+									"dataFileName": "Logging_image.png"
+								}
+							]
+						}
+					]
+				}
+			]
+		}
+	]
 }
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Advanced Usage/Sharing.md b/docs/User Guide/User Guide/Advanced Usage/Sharing.md
index 00daf45373..5395f959c4 100644
--- a/docs/User Guide/User Guide/Advanced Usage/Sharing.md	
+++ b/docs/User Guide/User Guide/Advanced Usage/Sharing.md	
@@ -72,15 +72,17 @@ You can inject custom JavaScript into the shared note using the `~shareJs` relat
 You can inject custom HTML snippets into specific locations of the shared page using the `~shareHtml` relation. The HTML note should contain the raw HTML content you want to inject, and you can control where it appears by adding the `#shareHtmlLocation` label to the HTML snippet note itself.
 
 The `#shareHtmlLocation` label accepts values in the format `location:position`:
-- **Locations**: `head`, `body`, `content`
-- **Positions**: `start`, `end`
+
+*   **Locations**: `head`, `body`, `content`
+*   **Positions**: `start`, `end`
 
 For example:
-- `#shareHtmlLocation=head:start` - Injects HTML at the beginning of the `` section
-- `#shareHtmlLocation=head:end` - Injects HTML at the end of the `` section (default)
-- `#shareHtmlLocation=body:start` - Injects HTML at the beginning of the `` section
-- `#shareHtmlLocation=content:start` - Injects HTML at the beginning of the content area
-- `#shareHtmlLocation=content:end` - Injects HTML at the end of the content area
+
+*   `#shareHtmlLocation=head:start` - Injects HTML at the beginning of the `` section
+*   `#shareHtmlLocation=head:end` - Injects HTML at the end of the `` section (default)
+*   `#shareHtmlLocation=body:start` - Injects HTML at the beginning of the `` section
+*   `#shareHtmlLocation=content:start` - Injects HTML at the beginning of the content area
+*   `#shareHtmlLocation=content:end` - Injects HTML at the end of the content area
 
 If no location is specified, the HTML will be injected at `content:end` by default.
 

From bebd3d430bbe0c6f9cac27664e16209d22eaac5d Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Mon, 6 Oct 2025 20:04:07 +0300
Subject: [PATCH 051/201] refactor(commons): deduplicate allowed protocols

---
 apps/client/src/services/link.ts             |  11 +-
 apps/server/src/services/html_sanitizer.ts   |  12 +-
 packages/commons/src/lib/shared_constants.ts | 112 +++----------------
 3 files changed, 20 insertions(+), 115 deletions(-)

diff --git a/apps/client/src/services/link.ts b/apps/client/src/services/link.ts
index f31400fc16..16ca48bd76 100644
--- a/apps/client/src/services/link.ts
+++ b/apps/client/src/services/link.ts
@@ -3,16 +3,7 @@ import linkContextMenuService from "../menus/link_context_menu.js";
 import appContext, { type NoteCommandData } from "../components/app_context.js";
 import froca from "./froca.js";
 import utils from "./utils.js";
-
-// Be consistent with `allowedSchemes` in `src\services\html_sanitizer.ts`
-// TODO: Deduplicate with server once we can.
-export const ALLOWED_PROTOCOLS = [
-    'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'gemini', 'git',
-    'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message',
-    'mumble', 'nfs', 'onenote', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp',
-    'view-source', 'vlc', 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack', 'tel', 'smb', 'zotero', 'geo',
-    'mid'
-];
+import { ALLOWED_PROTOCOLS } from "@triliumnext/commons";
 
 function getNotePathFromUrl(url: string) {
     const notePathMatch = /#(root[A-Za-z0-9_/]*)$/.exec(url);
diff --git a/apps/server/src/services/html_sanitizer.ts b/apps/server/src/services/html_sanitizer.ts
index 79d80033f1..52e24a691f 100644
--- a/apps/server/src/services/html_sanitizer.ts
+++ b/apps/server/src/services/html_sanitizer.ts
@@ -1,17 +1,7 @@
 import sanitizeHtml from "sanitize-html";
 import { sanitizeUrl } from "@braintree/sanitize-url";
 import optionService from "./options.js";
-import { SANITIZER_DEFAULT_ALLOWED_TAGS } from "@triliumnext/commons";
-
-// Be consistent with `ALLOWED_PROTOCOLS` in `src\public\app\services\link.js`
-// TODO: Deduplicate with client once we can.
-export const ALLOWED_PROTOCOLS = [
-    'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'gemini', 'git',
-    'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message',
-    'mumble', 'nfs', 'onenote', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp',
-    'view-source', 'vlc', 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack', 'tel', 'smb', 'zotero', 'geo',
-    'mid'
-];
+import { ALLOWED_PROTOCOLS, SANITIZER_DEFAULT_ALLOWED_TAGS } from "@triliumnext/commons";
 
 // intended mainly as protection against XSS via import
 // secondarily, it (partly) protects against "CSS takeover"
diff --git a/packages/commons/src/lib/shared_constants.ts b/packages/commons/src/lib/shared_constants.ts
index 00b179d338..52c4d163be 100644
--- a/packages/commons/src/lib/shared_constants.ts
+++ b/packages/commons/src/lib/shared_constants.ts
@@ -1,98 +1,22 @@
 // Default list of allowed HTML tags
 export const SANITIZER_DEFAULT_ALLOWED_TAGS = [
-    "h1",
-    "h2",
-    "h3",
-    "h4",
-    "h5",
-    "h6",
-    "blockquote",
-    "p",
-    "a",
-    "ul",
-    "ol",
-    "li",
-    "b",
-    "i",
-    "strong",
-    "em",
-    "strike",
-    "s",
-    "del",
-    "abbr",
-    "code",
-    "hr",
-    "br",
-    "div",
-    "table",
-    "thead",
-    "caption",
-    "tbody",
-    "tfoot",
-    "tr",
-    "th",
-    "td",
-    "pre",
-    "section",
-    "img",
-    "figure",
-    "figcaption",
-    "span",
-    "label",
-    "input",
-    "details",
-    "summary",
-    "address",
-    "aside",
-    "footer",
-    "header",
-    "hgroup",
-    "main",
-    "nav",
-    "dl",
-    "dt",
-    "menu",
-    "bdi",
-    "bdo",
-    "dfn",
-    "kbd",
-    "mark",
-    "q",
-    "time",
-    "var",
-    "wbr",
-    "area",
-    "map",
-    "track",
-    "video",
-    "audio",
-    "picture",
-    "del",
-    "ins",
-    "en-media", // for ENEX import
+    "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "p", "a", "ul", "ol", "li", "b", "i", "strong", "em",
+    "strike", "s", "del", "abbr", "code", "hr", "br", "div", "table", "thead", "caption", "tbody", "tfoot",
+    "tr", "th", "td", "pre", "section", "img", "figure", "figcaption", "span", "label", "input", "details",
+    "summary", "address", "aside", "footer", "header", "hgroup", "main", "nav", "dl", "dt", "menu", "bdi",
+    "bdo", "dfn", "kbd", "mark", "q", "time", "var", "wbr", "area", "map", "track", "video", "audio", "picture",
+    "del", "ins",
+    // for ENEX import
+    "en-media",
     // Additional tags (https://github.com/TriliumNext/Trilium/issues/567)
-    "acronym",
-    "article",
-    "big",
-    "button",
-    "cite",
-    "col",
-    "colgroup",
-    "data",
-    "dd",
-    "fieldset",
-    "form",
-    "legend",
-    "meter",
-    "noscript",
-    "option",
-    "progress",
-    "rp",
-    "samp",
-    "small",
-    "sub",
-    "sup",
-    "template",
-    "textarea",
-    "tt"
+    "acronym", "article", "big", "button", "cite", "col", "colgroup", "data", "dd", "fieldset", "form", "legend",
+    "meter", "noscript", "option", "progress", "rp", "samp", "small", "sub", "sup", "template", "textarea", "tt"
 ] as const;
+
+export const ALLOWED_PROTOCOLS = [
+    'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'gemini', 'git',
+    'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message',
+    'mumble', 'nfs', 'onenote', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp',
+    'view-source', 'vlc', 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack', 'tel', 'smb', 'zotero', 'geo',
+    'mid'
+];

From d662718a4a52484c111919400b3fc64d409bbcc7 Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Mon, 6 Oct 2025 20:05:42 +0300
Subject: [PATCH 052/201] feat(client): allow opening obsidian: links (closes
 #7207)

---
 packages/commons/src/lib/shared_constants.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/commons/src/lib/shared_constants.ts b/packages/commons/src/lib/shared_constants.ts
index 52c4d163be..bf13c92d3c 100644
--- a/packages/commons/src/lib/shared_constants.ts
+++ b/packages/commons/src/lib/shared_constants.ts
@@ -18,5 +18,5 @@ export const ALLOWED_PROTOCOLS = [
     'gopher', 'imap', 'irc', 'irc6', 'jabber', 'jar', 'lastfm', 'ldap', 'ldaps', 'magnet', 'message',
     'mumble', 'nfs', 'onenote', 'pop', 'rmi', 's3', 'sftp', 'skype', 'sms', 'spotify', 'steam', 'svn', 'udp',
     'view-source', 'vlc', 'vnc', 'ws', 'wss', 'xmpp', 'jdbc', 'slack', 'tel', 'smb', 'zotero', 'geo',
-    'mid'
+    'mid', 'obsidian'
 ];

From b58aac1298de103933f8640962c7e4ff1ada9f38 Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Tue, 7 Oct 2025 09:59:33 +0300
Subject: [PATCH 053/201] fix(client): invalid import after moving protocol
 config

---
 apps/client/src/widgets/type_widgets/ckeditor/config.ts | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/apps/client/src/widgets/type_widgets/ckeditor/config.ts b/apps/client/src/widgets/type_widgets/ckeditor/config.ts
index a923ad92f3..38d8ee0334 100644
--- a/apps/client/src/widgets/type_widgets/ckeditor/config.ts
+++ b/apps/client/src/widgets/type_widgets/ckeditor/config.ts
@@ -1,5 +1,4 @@
-import { ALLOWED_PROTOCOLS } from "../../../services/link.js";
-import { MIME_TYPE_AUTO } from "@triliumnext/commons";
+import { ALLOWED_PROTOCOLS, MIME_TYPE_AUTO } from "@triliumnext/commons";
 import { buildExtraCommands, type EditorConfig, PREMIUM_PLUGINS } from "@triliumnext/ckeditor5";
 import { getHighlightJsNameForMime } from "../../../services/mime_types.js";
 import options from "../../../services/options.js";

From d93c5dfeeac2cc906dda1d60dc3e294aca3e76bf Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 7 Oct 2025 07:02:08 +0000
Subject: [PATCH 054/201] chore(deps): update pnpm to v10.18.1

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index fe9a3511cd..bdd5bbae47 100644
--- a/package.json
+++ b/package.json
@@ -79,7 +79,7 @@
     "url": "https://github.com/TriliumNext/Trilium/issues"
   },
   "homepage": "https://triliumnotes.org",
-  "packageManager": "pnpm@10.18.0",
+  "packageManager": "pnpm@10.18.1",
   "pnpm": {
     "patchedDependencies": {
       "@ckeditor/ckeditor5-mention": "patches/@ckeditor__ckeditor5-mention.patch",

From 10cd5bf130da5f546192b26354dcd1db140fd466 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 7 Oct 2025 07:02:53 +0000
Subject: [PATCH 055/201] chore(deps): update dependency @playwright/test to
 v1.56.0

---
 _regroup/package.json |  2 +-
 package.json          |  2 +-
 pnpm-lock.yaml        | 54 ++++++++++++++++++++++++-------------------
 3 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/_regroup/package.json b/_regroup/package.json
index b8cc7ce85f..8ad1dd51f9 100644
--- a/_regroup/package.json
+++ b/_regroup/package.json
@@ -35,7 +35,7 @@
     "chore:generate-openapi": "tsx bin/generate-openapi.js"
   },
   "devDependencies": {    
-    "@playwright/test": "1.55.1",
+    "@playwright/test": "1.56.0",
     "@stylistic/eslint-plugin": "5.4.0",        
     "@types/express": "5.0.3",    
     "@types/node": "22.18.8",    
diff --git a/package.json b/package.json
index fe9a3511cd..a4a8e02f38 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
   "private": true,
   "devDependencies": {
     "@electron/rebuild": "4.0.1",
-    "@playwright/test": "1.55.1",
+    "@playwright/test": "1.56.0",
     "@triliumnext/server": "workspace:*",
     "@types/express": "5.0.3",
     "@types/node": "22.18.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9a7c53b5ec..145bacb492 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -41,8 +41,8 @@ importers:
         specifier: 4.0.1
         version: 4.0.1
       '@playwright/test':
-        specifier: 1.55.1
-        version: 1.55.1
+        specifier: 1.56.0
+        version: 1.56.0
       '@triliumnext/server':
         specifier: workspace:*
         version: link:apps/server
@@ -844,7 +844,7 @@ importers:
         version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
-        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
       '@vitest/coverage-istanbul':
         specifier: 3.2.4
         version: 3.2.4(vitest@3.2.4)
@@ -904,7 +904,7 @@ importers:
         version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
-        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
       '@vitest/coverage-istanbul':
         specifier: 3.2.4
         version: 3.2.4(vitest@3.2.4)
@@ -964,7 +964,7 @@ importers:
         version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
-        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
       '@vitest/coverage-istanbul':
         specifier: 3.2.4
         version: 3.2.4(vitest@3.2.4)
@@ -1031,7 +1031,7 @@ importers:
         version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
-        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
       '@vitest/coverage-istanbul':
         specifier: 3.2.4
         version: 3.2.4(vitest@3.2.4)
@@ -1098,7 +1098,7 @@ importers:
         version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
-        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+        version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
       '@vitest/coverage-istanbul':
         specifier: 3.2.4
         version: 3.2.4(vitest@3.2.4)
@@ -3372,8 +3372,8 @@ packages:
     resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
     engines: {node: '>=14'}
 
-  '@playwright/test@1.55.1':
-    resolution: {integrity: sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==}
+  '@playwright/test@1.56.0':
+    resolution: {integrity: sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==}
     engines: {node: '>=18'}
     hasBin: true
 
@@ -10428,13 +10428,13 @@ packages:
   pkg-types@2.1.0:
     resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
 
-  playwright-core@1.55.1:
-    resolution: {integrity: sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==}
+  playwright-core@1.56.0:
+    resolution: {integrity: sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==}
     engines: {node: '>=18'}
     hasBin: true
 
-  playwright@1.55.1:
-    resolution: {integrity: sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==}
+  playwright@1.56.0:
+    resolution: {integrity: sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==}
     engines: {node: '>=18'}
     hasBin: true
 
@@ -14714,6 +14714,8 @@ snapshots:
       '@ckeditor/ckeditor5-utils': 47.0.0
       '@ckeditor/ckeditor5-watchdog': 47.0.0
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-dev-build-tools@43.1.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)':
     dependencies:
@@ -14905,6 +14907,8 @@ snapshots:
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-editor-multi-root@47.0.0':
     dependencies:
@@ -14927,6 +14931,8 @@ snapshots:
       '@ckeditor/ckeditor5-table': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-emoji@47.0.0':
     dependencies:
@@ -15098,6 +15104,8 @@ snapshots:
       '@ckeditor/ckeditor5-widget': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-icons@47.0.0': {}
 
@@ -15484,8 +15492,6 @@ snapshots:
       '@ckeditor/ckeditor5-ui': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
-    transitivePeerDependencies:
-      - supports-color
 
   '@ckeditor/ckeditor5-special-characters@47.0.0':
     dependencies:
@@ -17551,9 +17557,9 @@ snapshots:
   '@pkgjs/parseargs@0.11.0':
     optional: true
 
-  '@playwright/test@1.55.1':
+  '@playwright/test@1.56.0':
     dependencies:
-      playwright: 1.55.1
+      playwright: 1.56.0
 
   '@polka/url@1.0.0-next.29': {}
 
@@ -19524,7 +19530,7 @@ snapshots:
       - bufferutil
       - utf-8-validate
 
-  '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))':
+  '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))':
     dependencies:
       '@testing-library/dom': 10.4.0
       '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0)
@@ -19536,7 +19542,7 @@ snapshots:
       vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
       ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
     optionalDependencies:
-      playwright: 1.55.1
+      playwright: 1.56.0
       webdriverio: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
     transitivePeerDependencies:
       - bufferutil
@@ -19577,7 +19583,7 @@ snapshots:
       tinyrainbow: 2.0.0
       vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
     optionalDependencies:
-      '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+      '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
     transitivePeerDependencies:
       - supports-color
 
@@ -26251,11 +26257,11 @@ snapshots:
       exsolve: 1.0.5
       pathe: 2.0.3
 
-  playwright-core@1.55.1: {}
+  playwright-core@1.56.0: {}
 
-  playwright@1.55.1:
+  playwright@1.56.0:
     dependencies:
-      playwright-core: 1.55.1
+      playwright-core: 1.56.0
     optionalDependencies:
       fsevents: 2.3.2
 
@@ -29806,7 +29812,7 @@ snapshots:
     optionalDependencies:
       '@types/debug': 4.1.12
       '@types/node': 22.18.8
-      '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
+      '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
       '@vitest/ui': 3.2.4(vitest@3.2.4)
       happy-dom: 19.0.2
       jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)

From f765441f1eadc8141e80425ee16d89293e123ce9 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 7 Oct 2025 07:03:35 +0000
Subject: [PATCH 056/201] chore(deps): update dependency
 @types/express-serve-static-core to v5.1.0

---
 package.json   |  2 +-
 pnpm-lock.yaml | 24 ++++++++++++++----------
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/package.json b/package.json
index fe9a3511cd..ce58596f7e 100644
--- a/package.json
+++ b/package.json
@@ -90,7 +90,7 @@
       "mermaid": "11.12.0",
       "preact": "10.27.2",
       "roughjs": "4.6.6",
-      "@types/express-serve-static-core": "5.0.7",
+      "@types/express-serve-static-core": "5.1.0",
       "flat@<5.0.1": ">=5.0.1",
       "debug@>=3.2.0 <3.2.7": ">=3.2.7",
       "nanoid@<3.3.8": ">=3.3.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9a7c53b5ec..914c8b5a5b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,7 +8,7 @@ overrides:
   mermaid: 11.12.0
   preact: 10.27.2
   roughjs: 4.6.6
-  '@types/express-serve-static-core': 5.0.7
+  '@types/express-serve-static-core': 5.1.0
   flat@<5.0.1: '>=5.0.1'
   debug@>=3.2.0 <3.2.7: '>=3.2.7'
   nanoid@<3.3.8: '>=3.3.8'
@@ -4715,8 +4715,8 @@ packages:
   '@types/express-http-proxy@1.6.7':
     resolution: {integrity: sha512-CEp9pbnwVI1RzN9PXc+KESMxwUW5r1O7tkWb5h7Wg/YAIf+KulD/zKev8fbbn+Ljt0Yvs8MXwV2W6Id+cKxe2Q==}
 
-  '@types/express-serve-static-core@5.0.7':
-    resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==}
+  '@types/express-serve-static-core@5.1.0':
+    resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==}
 
   '@types/express-session@1.18.2':
     resolution: {integrity: sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==}
@@ -14905,6 +14905,8 @@ snapshots:
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-editor-multi-root@47.0.0':
     dependencies:
@@ -14927,6 +14929,8 @@ snapshots:
       '@ckeditor/ckeditor5-table': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-emoji@47.0.0':
     dependencies:
@@ -15098,6 +15102,8 @@ snapshots:
       '@ckeditor/ckeditor5-widget': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-icons@47.0.0': {}
 
@@ -15484,8 +15490,6 @@ snapshots:
       '@ckeditor/ckeditor5-ui': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
-    transitivePeerDependencies:
-      - supports-color
 
   '@ckeditor/ckeditor5-special-characters@47.0.0':
     dependencies:
@@ -18777,7 +18781,7 @@ snapshots:
 
   '@types/connect-history-api-fallback@1.5.4':
     dependencies:
-      '@types/express-serve-static-core': 5.0.7
+      '@types/express-serve-static-core': 5.1.0
       '@types/node': 22.18.8
 
   '@types/connect@3.4.38':
@@ -18948,7 +18952,7 @@ snapshots:
     dependencies:
       '@types/express': 5.0.3
 
-  '@types/express-serve-static-core@5.0.7':
+  '@types/express-serve-static-core@5.1.0':
     dependencies:
       '@types/node': 22.18.8
       '@types/qs': 6.14.0
@@ -18962,14 +18966,14 @@ snapshots:
   '@types/express@4.17.23':
     dependencies:
       '@types/body-parser': 1.19.6
-      '@types/express-serve-static-core': 5.0.7
+      '@types/express-serve-static-core': 5.1.0
       '@types/qs': 6.14.0
       '@types/serve-static': 1.15.9
 
   '@types/express@5.0.3':
     dependencies:
       '@types/body-parser': 1.19.6
-      '@types/express-serve-static-core': 5.0.7
+      '@types/express-serve-static-core': 5.1.0
       '@types/serve-static': 1.15.9
 
   '@types/fs-extra@11.0.4':
@@ -29972,7 +29976,7 @@ snapshots:
       '@types/bonjour': 3.5.13
       '@types/connect-history-api-fallback': 1.5.4
       '@types/express': 4.17.23
-      '@types/express-serve-static-core': 5.0.7
+      '@types/express-serve-static-core': 5.1.0
       '@types/serve-index': 1.9.4
       '@types/serve-static': 1.15.9
       '@types/sockjs': 0.3.36

From a7a0d3584ad94ce60e17d724b3226bd77ab894f9 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 7 Oct 2025 07:04:10 +0000
Subject: [PATCH 057/201] chore(deps): update dependency openai to v6.2.0

---
 apps/server/package.json |  2 +-
 pnpm-lock.yaml           | 18 +++++++++++-------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/apps/server/package.json b/apps/server/package.json
index 9852f1a4ff..3acd2702ab 100644
--- a/apps/server/package.json
+++ b/apps/server/package.json
@@ -110,7 +110,7 @@
     "multer": "2.0.2",
     "normalize-strings": "1.1.1",
     "ollama": "0.6.0",
-    "openai": "6.1.0",
+    "openai": "6.2.0",
     "rand-token": "1.0.1",
     "safe-compare": "1.1.4",
     "sanitize-filename": "1.6.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9a7c53b5ec..798fd5e6dd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -694,8 +694,8 @@ importers:
         specifier: 0.6.0
         version: 0.6.0
       openai:
-        specifier: 6.1.0
-        version: 6.1.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4)
+        specifier: 6.2.0
+        version: 6.2.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4)
       rand-token:
         specifier: 1.0.1
         version: 1.0.1
@@ -10096,8 +10096,8 @@ packages:
     resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
     engines: {node: '>=18'}
 
-  openai@6.1.0:
-    resolution: {integrity: sha512-5sqb1wK67HoVgGlsPwcH2bUbkg66nnoIYKoyV9zi5pZPqh7EWlmSrSDjAh4O5jaIg/0rIlcDKBtWvZBuacmGZg==}
+  openai@6.2.0:
+    resolution: {integrity: sha512-qqjzHls7F5xkXNGy9P1Ei1rorI5LWupUUFWP66zPU8FlZbiITX8SFcHMKNZg/NATJ0LpIZcMUFxSwQmdeQPwSw==}
     hasBin: true
     peerDependencies:
       ws: ^8.18.0
@@ -14905,6 +14905,8 @@ snapshots:
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-editor-multi-root@47.0.0':
     dependencies:
@@ -14927,6 +14929,8 @@ snapshots:
       '@ckeditor/ckeditor5-table': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-emoji@47.0.0':
     dependencies:
@@ -15098,6 +15102,8 @@ snapshots:
       '@ckeditor/ckeditor5-widget': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-icons@47.0.0': {}
 
@@ -15484,8 +15490,6 @@ snapshots:
       '@ckeditor/ckeditor5-ui': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
-    transitivePeerDependencies:
-      - supports-color
 
   '@ckeditor/ckeditor5-special-characters@47.0.0':
     dependencies:
@@ -25917,7 +25921,7 @@ snapshots:
       is-inside-container: 1.0.0
       wsl-utils: 0.1.0
 
-  openai@6.1.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4):
+  openai@6.2.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4):
     optionalDependencies:
       ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
       zod: 3.24.4

From 639651329a31222656081a946cb08cfe0888d6f4 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 7 Oct 2025 07:04:54 +0000
Subject: [PATCH 058/201] chore(deps): update typescript-eslint monorepo to
 v8.46.0

---
 package.json                                  |   2 +-
 packages/ckeditor5-admonition/package.json    |   4 +-
 packages/ckeditor5-footnotes/package.json     |   4 +-
 .../ckeditor5-keyboard-marker/package.json    |   4 +-
 packages/ckeditor5-math/package.json          |   4 +-
 packages/ckeditor5-mermaid/package.json       |   4 +-
 packages/share-theme/package.json             |   4 +-
 pnpm-lock.yaml                                | 188 ++++++++++--------
 8 files changed, 117 insertions(+), 97 deletions(-)

diff --git a/package.json b/package.json
index fe9a3511cd..20807a12bc 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
     "tslib": "2.8.1",
     "tsx": "4.20.6",
     "typescript": "~5.9.0",
-    "typescript-eslint": "8.45.0",
+    "typescript-eslint": "8.46.0",
     "upath": "2.0.1",
     "vite": "7.1.9",
     "vite-plugin-dts": "~4.5.0",
diff --git a/packages/ckeditor5-admonition/package.json b/packages/ckeditor5-admonition/package.json
index 29799cc625..5c9fb466b4 100644
--- a/packages/ckeditor5-admonition/package.json
+++ b/packages/ckeditor5-admonition/package.json
@@ -24,8 +24,8 @@
     "@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
     "@ckeditor/ckeditor5-inspector": ">=4.1.0",
     "@ckeditor/ckeditor5-package-tools": "4.1.0",
-    "@typescript-eslint/eslint-plugin": "~8.45.0",
-    "@typescript-eslint/parser": "8.45.0",
+    "@typescript-eslint/eslint-plugin": "~8.46.0",
+    "@typescript-eslint/parser": "8.46.0",
     "@vitest/browser": "3.2.4",
     "@vitest/coverage-istanbul": "3.2.4",
     "ckeditor5": "47.0.0",
diff --git a/packages/ckeditor5-footnotes/package.json b/packages/ckeditor5-footnotes/package.json
index 8456386434..d0245139da 100644
--- a/packages/ckeditor5-footnotes/package.json
+++ b/packages/ckeditor5-footnotes/package.json
@@ -25,8 +25,8 @@
     "@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
     "@ckeditor/ckeditor5-inspector": ">=4.1.0",
     "@ckeditor/ckeditor5-package-tools": "4.1.0",
-    "@typescript-eslint/eslint-plugin": "~8.45.0",
-    "@typescript-eslint/parser": "8.45.0",
+    "@typescript-eslint/eslint-plugin": "~8.46.0",
+    "@typescript-eslint/parser": "8.46.0",
     "@vitest/browser": "3.2.4",
     "@vitest/coverage-istanbul": "3.2.4",
     "ckeditor5": "47.0.0",
diff --git a/packages/ckeditor5-keyboard-marker/package.json b/packages/ckeditor5-keyboard-marker/package.json
index fec43d3bd5..59670a0f9b 100644
--- a/packages/ckeditor5-keyboard-marker/package.json
+++ b/packages/ckeditor5-keyboard-marker/package.json
@@ -27,8 +27,8 @@
     "@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
     "@ckeditor/ckeditor5-inspector": ">=4.1.0",
     "@ckeditor/ckeditor5-package-tools": "4.1.0",
-    "@typescript-eslint/eslint-plugin": "~8.45.0",
-    "@typescript-eslint/parser": "8.45.0",
+    "@typescript-eslint/eslint-plugin": "~8.46.0",
+    "@typescript-eslint/parser": "8.46.0",
     "@vitest/browser": "3.2.4",
     "@vitest/coverage-istanbul": "3.2.4",
     "ckeditor5": "47.0.0",
diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json
index b9fc2fd691..6588ce5455 100644
--- a/packages/ckeditor5-math/package.json
+++ b/packages/ckeditor5-math/package.json
@@ -28,8 +28,8 @@
     "@ckeditor/ckeditor5-dev-utils": "43.1.0",
     "@ckeditor/ckeditor5-inspector": ">=4.1.0",
     "@ckeditor/ckeditor5-package-tools": "4.1.0",
-    "@typescript-eslint/eslint-plugin": "~8.45.0",
-    "@typescript-eslint/parser": "8.45.0",
+    "@typescript-eslint/eslint-plugin": "~8.46.0",
+    "@typescript-eslint/parser": "8.46.0",
     "@vitest/browser": "3.2.4",
     "@vitest/coverage-istanbul": "3.2.4",
     "ckeditor5": "47.0.0",
diff --git a/packages/ckeditor5-mermaid/package.json b/packages/ckeditor5-mermaid/package.json
index ab4e097aa8..9a976413b3 100644
--- a/packages/ckeditor5-mermaid/package.json
+++ b/packages/ckeditor5-mermaid/package.json
@@ -27,8 +27,8 @@
     "@ckeditor/ckeditor5-dev-build-tools": "43.1.0",
     "@ckeditor/ckeditor5-inspector": ">=4.1.0",
     "@ckeditor/ckeditor5-package-tools": "4.1.0",
-    "@typescript-eslint/eslint-plugin": "~8.45.0",
-    "@typescript-eslint/parser": "8.45.0",
+    "@typescript-eslint/eslint-plugin": "~8.46.0",
+    "@typescript-eslint/parser": "8.46.0",
     "@vitest/browser": "3.2.4",
     "@vitest/coverage-istanbul": "3.2.4",
     "ckeditor5": "47.0.0",
diff --git a/packages/share-theme/package.json b/packages/share-theme/package.json
index d76faaaf7e..0a700348cd 100644
--- a/packages/share-theme/package.json
+++ b/packages/share-theme/package.json
@@ -24,8 +24,8 @@
   "devDependencies": {
     "@digitak/esrun": "3.2.26",
     "@types/swagger-ui": "5.21.1",
-    "@typescript-eslint/eslint-plugin": "8.45.0",
-    "@typescript-eslint/parser": "8.45.0",
+    "@typescript-eslint/eslint-plugin": "8.46.0",
+    "@typescript-eslint/parser": "8.46.0",
     "dotenv": "17.2.3",
     "esbuild": "0.25.10",
     "eslint": "9.37.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9a7c53b5ec..4aad7fbc63 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -107,8 +107,8 @@ importers:
         specifier: ~5.9.0
         version: 5.9.3
       typescript-eslint:
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       upath:
         specifier: 2.0.1
         version: 2.0.1
@@ -837,11 +837,11 @@ importers:
         specifier: 4.1.0
         version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)
       '@typescript-eslint/eslint-plugin':
-        specifier: ~8.45.0
-        version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: ~8.46.0
+        version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@typescript-eslint/parser':
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
         version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
@@ -897,11 +897,11 @@ importers:
         specifier: 4.1.0
         version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)
       '@typescript-eslint/eslint-plugin':
-        specifier: ~8.45.0
-        version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: ~8.46.0
+        version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@typescript-eslint/parser':
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
         version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
@@ -957,11 +957,11 @@ importers:
         specifier: 4.1.0
         version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)
       '@typescript-eslint/eslint-plugin':
-        specifier: ~8.45.0
-        version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: ~8.46.0
+        version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@typescript-eslint/parser':
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
         version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
@@ -1024,11 +1024,11 @@ importers:
         specifier: 4.1.0
         version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)
       '@typescript-eslint/eslint-plugin':
-        specifier: ~8.45.0
-        version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: ~8.46.0
+        version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@typescript-eslint/parser':
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
         version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
@@ -1091,11 +1091,11 @@ importers:
         specifier: 4.1.0
         version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)
       '@typescript-eslint/eslint-plugin':
-        specifier: ~8.45.0
-        version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: ~8.46.0
+        version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@typescript-eslint/parser':
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@vitest/browser':
         specifier: 3.2.4
         version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))
@@ -1315,11 +1315,11 @@ importers:
         specifier: 5.21.1
         version: 5.21.1
       '@typescript-eslint/eslint-plugin':
-        specifier: 8.45.0
-        version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       '@typescript-eslint/parser':
-        specifier: 8.45.0
-        version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+        specifier: 8.46.0
+        version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       dotenv:
         specifier: 17.2.3
         version: 17.2.3
@@ -4989,11 +4989,11 @@ packages:
       eslint: ^8.57.0 || ^9.0.0
       typescript: '>=4.8.4 <6.0.0'
 
-  '@typescript-eslint/eslint-plugin@8.45.0':
-    resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==}
+  '@typescript-eslint/eslint-plugin@8.46.0':
+    resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
-      '@typescript-eslint/parser': ^8.45.0
+      '@typescript-eslint/parser': ^8.46.0
       eslint: ^8.57.0 || ^9.0.0
       typescript: '>=4.8.4 <6.0.0'
 
@@ -5004,8 +5004,8 @@ packages:
       eslint: ^8.57.0 || ^9.0.0
       typescript: '>=4.8.4 <6.0.0'
 
-  '@typescript-eslint/parser@8.45.0':
-    resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==}
+  '@typescript-eslint/parser@8.46.0':
+    resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       eslint: ^8.57.0 || ^9.0.0
@@ -5023,8 +5023,8 @@ packages:
     peerDependencies:
       typescript: '>=4.8.4 <6.0.0'
 
-  '@typescript-eslint/project-service@8.45.0':
-    resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==}
+  '@typescript-eslint/project-service@8.46.0':
+    resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       typescript: '>=4.8.4 <6.0.0'
@@ -5037,8 +5037,8 @@ packages:
     resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@typescript-eslint/scope-manager@8.45.0':
-    resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==}
+  '@typescript-eslint/scope-manager@8.46.0':
+    resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
   '@typescript-eslint/tsconfig-utils@8.40.0':
@@ -5059,6 +5059,12 @@ packages:
     peerDependencies:
       typescript: '>=4.8.4 <6.0.0'
 
+  '@typescript-eslint/tsconfig-utils@8.46.0':
+    resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+    peerDependencies:
+      typescript: '>=4.8.4 <6.0.0'
+
   '@typescript-eslint/type-utils@8.40.0':
     resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -5066,8 +5072,8 @@ packages:
       eslint: ^8.57.0 || ^9.0.0
       typescript: '>=4.8.4 <6.0.0'
 
-  '@typescript-eslint/type-utils@8.45.0':
-    resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==}
+  '@typescript-eslint/type-utils@8.46.0':
+    resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       eslint: ^8.57.0 || ^9.0.0
@@ -5085,6 +5091,10 @@ packages:
     resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
+  '@typescript-eslint/types@8.46.0':
+    resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
   '@typescript-eslint/typescript-estree@8.40.0':
     resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -5097,8 +5107,8 @@ packages:
     peerDependencies:
       typescript: '>=4.8.4 <6.0.0'
 
-  '@typescript-eslint/typescript-estree@8.45.0':
-    resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==}
+  '@typescript-eslint/typescript-estree@8.46.0':
+    resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       typescript: '>=4.8.4 <6.0.0'
@@ -5117,8 +5127,8 @@ packages:
       eslint: ^8.57.0 || ^9.0.0
       typescript: '>=4.8.4 <6.0.0'
 
-  '@typescript-eslint/utils@8.45.0':
-    resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==}
+  '@typescript-eslint/utils@8.46.0':
+    resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       eslint: ^8.57.0 || ^9.0.0
@@ -5132,8 +5142,8 @@ packages:
     resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@typescript-eslint/visitor-keys@8.45.0':
-    resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==}
+  '@typescript-eslint/visitor-keys@8.46.0':
+    resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
   '@ungap/structured-clone@1.3.0':
@@ -13012,8 +13022,8 @@ packages:
       eslint: ^8.57.0 || ^9.0.0
       typescript: '>=4.8.4 <6.0.0'
 
-  typescript-eslint@8.45.0:
-    resolution: {integrity: sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==}
+  typescript-eslint@8.46.0:
+    resolution: {integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       eslint: ^8.57.0 || ^9.0.0
@@ -14905,6 +14915,8 @@ snapshots:
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-editor-multi-root@47.0.0':
     dependencies:
@@ -14927,6 +14939,8 @@ snapshots:
       '@ckeditor/ckeditor5-table': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-emoji@47.0.0':
     dependencies:
@@ -15098,6 +15112,8 @@ snapshots:
       '@ckeditor/ckeditor5-widget': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-icons@47.0.0': {}
 
@@ -15484,8 +15500,6 @@ snapshots:
       '@ckeditor/ckeditor5-ui': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
-    transitivePeerDependencies:
-      - supports-color
 
   '@ckeditor/ckeditor5-special-characters@47.0.0':
     dependencies:
@@ -19270,14 +19284,14 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
+  '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
     dependencies:
       '@eslint-community/regexpp': 4.12.1
-      '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
-      '@typescript-eslint/scope-manager': 8.45.0
-      '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
-      '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
-      '@typescript-eslint/visitor-keys': 8.45.0
+      '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/scope-manager': 8.46.0
+      '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/visitor-keys': 8.46.0
       eslint: 9.37.0(jiti@2.6.1)
       graphemer: 1.4.0
       ignore: 7.0.5
@@ -19299,12 +19313,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
+  '@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
     dependencies:
-      '@typescript-eslint/scope-manager': 8.45.0
-      '@typescript-eslint/types': 8.45.0
-      '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
-      '@typescript-eslint/visitor-keys': 8.45.0
+      '@typescript-eslint/scope-manager': 8.46.0
+      '@typescript-eslint/types': 8.46.0
+      '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3)
+      '@typescript-eslint/visitor-keys': 8.46.0
       debug: 4.4.3(supports-color@6.0.0)
       eslint: 9.37.0(jiti@2.6.1)
       typescript: 5.9.3
@@ -19329,10 +19343,10 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)':
+  '@typescript-eslint/project-service@8.46.0(typescript@5.9.3)':
     dependencies:
-      '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3)
-      '@typescript-eslint/types': 8.45.0
+      '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3)
+      '@typescript-eslint/types': 8.46.0
       debug: 4.4.3(supports-color@6.0.0)
       typescript: 5.9.3
     transitivePeerDependencies:
@@ -19348,10 +19362,10 @@ snapshots:
       '@typescript-eslint/types': 8.44.1
       '@typescript-eslint/visitor-keys': 8.44.1
 
-  '@typescript-eslint/scope-manager@8.45.0':
+  '@typescript-eslint/scope-manager@8.46.0':
     dependencies:
-      '@typescript-eslint/types': 8.45.0
-      '@typescript-eslint/visitor-keys': 8.45.0
+      '@typescript-eslint/types': 8.46.0
+      '@typescript-eslint/visitor-keys': 8.46.0
 
   '@typescript-eslint/tsconfig-utils@8.40.0(typescript@5.9.3)':
     dependencies:
@@ -19365,6 +19379,10 @@ snapshots:
     dependencies:
       typescript: 5.9.3
 
+  '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)':
+    dependencies:
+      typescript: 5.9.3
+
   '@typescript-eslint/type-utils@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
     dependencies:
       '@typescript-eslint/types': 8.40.0
@@ -19377,11 +19395,11 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
+  '@typescript-eslint/type-utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
     dependencies:
-      '@typescript-eslint/types': 8.45.0
-      '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
-      '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/types': 8.46.0
+      '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3)
+      '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       debug: 4.4.3(supports-color@6.0.0)
       eslint: 9.37.0(jiti@2.6.1)
       ts-api-utils: 2.1.0(typescript@5.9.3)
@@ -19395,6 +19413,8 @@ snapshots:
 
   '@typescript-eslint/types@8.45.0': {}
 
+  '@typescript-eslint/types@8.46.0': {}
+
   '@typescript-eslint/typescript-estree@8.40.0(typescript@5.9.3)':
     dependencies:
       '@typescript-eslint/project-service': 8.40.0(typescript@5.9.3)
@@ -19427,12 +19447,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)':
+  '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)':
     dependencies:
-      '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3)
-      '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3)
-      '@typescript-eslint/types': 8.45.0
-      '@typescript-eslint/visitor-keys': 8.45.0
+      '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3)
+      '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3)
+      '@typescript-eslint/types': 8.46.0
+      '@typescript-eslint/visitor-keys': 8.46.0
       debug: 4.4.3(supports-color@6.0.0)
       fast-glob: 3.3.3
       is-glob: 4.0.3
@@ -19465,12 +19485,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
+  '@typescript-eslint/utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)':
     dependencies:
       '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1))
-      '@typescript-eslint/scope-manager': 8.45.0
-      '@typescript-eslint/types': 8.45.0
-      '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
+      '@typescript-eslint/scope-manager': 8.46.0
+      '@typescript-eslint/types': 8.46.0
+      '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3)
       eslint: 9.37.0(jiti@2.6.1)
       typescript: 5.9.3
     transitivePeerDependencies:
@@ -19486,9 +19506,9 @@ snapshots:
       '@typescript-eslint/types': 8.44.1
       eslint-visitor-keys: 4.2.1
 
-  '@typescript-eslint/visitor-keys@8.45.0':
+  '@typescript-eslint/visitor-keys@8.46.0':
     dependencies:
-      '@typescript-eslint/types': 8.45.0
+      '@typescript-eslint/types': 8.46.0
       eslint-visitor-keys: 4.2.1
 
   '@ungap/structured-clone@1.3.0': {}
@@ -29434,12 +29454,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  typescript-eslint@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3):
+  typescript-eslint@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3):
     dependencies:
-      '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
-      '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
-      '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
-      '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/eslint-plugin': 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
+      '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3)
+      '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)
       eslint: 9.37.0(jiti@2.6.1)
       typescript: 5.9.3
     transitivePeerDependencies:

From 71e64be44cc99a59329a7f4c5c81398b015ec054 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 7 Oct 2025 07:05:43 +0000
Subject: [PATCH 059/201] fix(deps): update dependency mind-elixir to v5.3.1

---
 apps/client/package.json |  2 +-
 pnpm-lock.yaml           | 24 ++++++++++++++----------
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/apps/client/package.json b/apps/client/package.json
index 0abafc87a5..c03e621bfe 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -53,7 +53,7 @@
     "mark.js": "8.11.1",
     "marked": "16.3.0",
     "mermaid": "11.12.0",
-    "mind-elixir": "5.1.1",
+    "mind-elixir": "5.3.1",
     "normalize.css": "8.0.1",
     "panzoom": "9.4.3",
     "preact": "10.27.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9a7c53b5ec..5eb933dbea 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -156,7 +156,7 @@ importers:
         version: 0.2.0(mermaid@11.12.0)
       '@mind-elixir/node-menu':
         specifier: 5.0.0
-        version: 5.0.0(mind-elixir@5.1.1)
+        version: 5.0.0(mind-elixir@5.3.1)
       '@popperjs/core':
         specifier: 2.11.8
         version: 2.11.8
@@ -239,8 +239,8 @@ importers:
         specifier: 11.12.0
         version: 11.12.0
       mind-elixir:
-        specifier: 5.1.1
-        version: 5.1.1
+        specifier: 5.3.1
+        version: 5.3.1
       normalize.css:
         specifier: 8.0.1
         version: 8.0.1
@@ -9611,8 +9611,8 @@ packages:
     resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
     engines: {node: '>=10'}
 
-  mind-elixir@5.1.1:
-    resolution: {integrity: sha512-Ao5VCby3iqyd80ReErCbb5uZLL7Zs/Nh+GpmmtUCH4WnmRvmlrdz0l3KNha+iHFeTlkxG27MbN9iPyxkTWWrRA==}
+  mind-elixir@5.3.1:
+    resolution: {integrity: sha512-o40b9MWMP1WCntVKu7OTcxMLtDoUALtCfbwsjo16Jc6sgVgYd+q21HMo2DTeGoN3bnd5HDb8sgXJPqwD+kumpA==}
 
   mini-css-extract-plugin@2.4.7:
     resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==}
@@ -14905,6 +14905,8 @@ snapshots:
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-editor-multi-root@47.0.0':
     dependencies:
@@ -14927,6 +14929,8 @@ snapshots:
       '@ckeditor/ckeditor5-table': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-emoji@47.0.0':
     dependencies:
@@ -15098,6 +15102,8 @@ snapshots:
       '@ckeditor/ckeditor5-widget': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
       es-toolkit: 1.39.5
+    transitivePeerDependencies:
+      - supports-color
 
   '@ckeditor/ckeditor5-icons@47.0.0': {}
 
@@ -15484,8 +15490,6 @@ snapshots:
       '@ckeditor/ckeditor5-ui': 47.0.0
       '@ckeditor/ckeditor5-utils': 47.0.0
       ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
-    transitivePeerDependencies:
-      - supports-color
 
   '@ckeditor/ckeditor5-special-characters@47.0.0':
     dependencies:
@@ -17335,9 +17339,9 @@ snapshots:
 
   '@microsoft/tsdoc@0.15.1': {}
 
-  '@mind-elixir/node-menu@5.0.0(mind-elixir@5.1.1)':
+  '@mind-elixir/node-menu@5.0.0(mind-elixir@5.3.1)':
     dependencies:
-      mind-elixir: 5.1.1
+      mind-elixir: 5.3.1
 
   '@mixmark-io/domino@2.2.0': {}
 
@@ -25330,7 +25334,7 @@ snapshots:
 
   mimic-response@3.1.0: {}
 
-  mind-elixir@5.1.1: {}
+  mind-elixir@5.3.1: {}
 
   mini-css-extract-plugin@2.4.7(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)):
     dependencies:

From e48724662e94acd80af519dbaee36e4a8ab1d99f Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Tue, 7 Oct 2025 10:16:42 +0300
Subject: [PATCH 060/201] Revert "fix(deps): update dependency mind-elixir to
 v5.3.1"

---
 apps/client/package.json |  2 +-
 pnpm-lock.yaml           | 16 ++++++++--------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/apps/client/package.json b/apps/client/package.json
index c03e621bfe..0abafc87a5 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -53,7 +53,7 @@
     "mark.js": "8.11.1",
     "marked": "16.3.0",
     "mermaid": "11.12.0",
-    "mind-elixir": "5.3.1",
+    "mind-elixir": "5.1.1",
     "normalize.css": "8.0.1",
     "panzoom": "9.4.3",
     "preact": "10.27.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index de458db080..947cfadd48 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -156,7 +156,7 @@ importers:
         version: 0.2.0(mermaid@11.12.0)
       '@mind-elixir/node-menu':
         specifier: 5.0.0
-        version: 5.0.0(mind-elixir@5.3.1)
+        version: 5.0.0(mind-elixir@5.1.1)
       '@popperjs/core':
         specifier: 2.11.8
         version: 2.11.8
@@ -239,8 +239,8 @@ importers:
         specifier: 11.12.0
         version: 11.12.0
       mind-elixir:
-        specifier: 5.3.1
-        version: 5.3.1
+        specifier: 5.1.1
+        version: 5.1.1
       normalize.css:
         specifier: 8.0.1
         version: 8.0.1
@@ -9621,8 +9621,8 @@ packages:
     resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
     engines: {node: '>=10'}
 
-  mind-elixir@5.3.1:
-    resolution: {integrity: sha512-o40b9MWMP1WCntVKu7OTcxMLtDoUALtCfbwsjo16Jc6sgVgYd+q21HMo2DTeGoN3bnd5HDb8sgXJPqwD+kumpA==}
+  mind-elixir@5.1.1:
+    resolution: {integrity: sha512-Ao5VCby3iqyd80ReErCbb5uZLL7Zs/Nh+GpmmtUCH4WnmRvmlrdz0l3KNha+iHFeTlkxG27MbN9iPyxkTWWrRA==}
 
   mini-css-extract-plugin@2.4.7:
     resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==}
@@ -17351,9 +17351,9 @@ snapshots:
 
   '@microsoft/tsdoc@0.15.1': {}
 
-  '@mind-elixir/node-menu@5.0.0(mind-elixir@5.3.1)':
+  '@mind-elixir/node-menu@5.0.0(mind-elixir@5.1.1)':
     dependencies:
-      mind-elixir: 5.3.1
+      mind-elixir: 5.1.1
 
   '@mixmark-io/domino@2.2.0': {}
 
@@ -25352,7 +25352,7 @@ snapshots:
 
   mimic-response@3.1.0: {}
 
-  mind-elixir@5.3.1: {}
+  mind-elixir@5.1.1: {}
 
   mini-css-extract-plugin@2.4.7(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)):
     dependencies:

From 5becf60a636f57848944c028aa9bdd555618b869 Mon Sep 17 00:00:00 2001
From: Hosted Weblate 
Date: Tue, 7 Oct 2025 08:59:52 +0200
Subject: [PATCH 061/201] Update translation files

Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
---
 docs/README-pt.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/README-pt.md b/docs/README-pt.md
index 4e87408087..c2bfada8d9 100644
--- a/docs/README-pt.md
+++ b/docs/README-pt.md
@@ -1,4 +1,4 @@
-# Trilium Notes
+# Trillium Notes
 
 ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)
 ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\

From f3877a52ab1e696b0229a8db4acfb989cc5b5e78 Mon Sep 17 00:00:00 2001
From: green 
Date: Tue, 7 Oct 2025 08:40:13 +0200
Subject: [PATCH 062/201] Translated using Weblate (Japanese)

Currently translated at 100.0% (1605 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
---
 apps/client/src/translations/ja/translation.json | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json
index a5cc74b501..d7401af9c6 100644
--- a/apps/client/src/translations/ja/translation.json
+++ b/apps/client/src/translations/ja/translation.json
@@ -251,12 +251,12 @@
   "help": {
     "title": "チートシート",
     "noteNavigation": "ノートナビゲーション",
-    "collapseExpand": "ノードの格納/展開",
+    "collapseExpand": "ノードを折りたたむ / 展開",
     "goBackForwards": "履歴を戻る/進む",
     "scrollToActiveNote": "アクティブノートまでスクロール",
     "jumpToParentNote": "親ノートへ移動",
-    "collapseWholeTree": "すべてのノートツリーを格納",
-    "collapseSubTree": "サブツリーを格納",
+    "collapseWholeTree": "すべてのノートツリーを折りたたむ",
+    "collapseSubTree": "サブツリーを折りたたむ",
     "tabShortcuts": "タブショートカット",
     "newTabNoteLink": "ノートのリンクをクリックすると、新しいタブで開く",
     "newTabWithActivationNoteLink": "ノートのリンクをクリックすると、新しいタブで開き、アクティブにします",
@@ -515,9 +515,9 @@
   "book_properties": {
     "grid": "グリッド",
     "list": "リスト",
-    "collapse_all_notes": "すべてのノートを格納",
+    "collapse_all_notes": "すべてのノートを折りたたむ",
     "expand_all_children": "すべての子を展開",
-    "collapse": "格納",
+    "collapse": "折りたたむ",
     "expand": "展開",
     "book_properties": "コレクションプロパティ",
     "invalid_view_type": "無効なビュータイプ '{{type}}'",

From f106cbf6c028156954be2992452032904846aa45 Mon Sep 17 00:00:00 2001
From: Miguel Dias 
Date: Tue, 7 Oct 2025 00:36:53 +0200
Subject: [PATCH 063/201] Translated using Weblate (Portuguese)

Currently translated at 99.7% (380 of 381 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/pt/
---
 .../src/assets/translations/pt/server.json    | 70 +++++++++----------
 1 file changed, 35 insertions(+), 35 deletions(-)

diff --git a/apps/server/src/assets/translations/pt/server.json b/apps/server/src/assets/translations/pt/server.json
index dbebf00b6d..d2c3d0db38 100644
--- a/apps/server/src/assets/translations/pt/server.json
+++ b/apps/server/src/assets/translations/pt/server.json
@@ -1,26 +1,26 @@
 {
   "keyboard_actions": {
     "back-in-note-history": "Navegar para a nota anterior no histórico",
-    "forward-in-note-history": "Navegar para a próxima nota no histórico",
+    "forward-in-note-history": "Navegar para a nota seguinte no histórico",
     "open-jump-to-note-dialog": "Abrir diálogo \"Ir para nota\"",
     "open-command-palette": "Abrir paleta de comandos",
     "scroll-to-active-note": "Rolar a árvore de notas até a nota atual",
     "quick-search": "Ativar barra de pesquisa rápida",
-    "search-in-subtree": "Pesquisar notas na subárvore da nota atual",
-    "expand-subtree": "Expandir subárvore da nota atual",
-    "collapse-tree": "Colapsar a árvore completa de notas",
-    "collapse-subtree": "Colapsar subárvore da nota atual",
+    "search-in-subtree": "Pesquisar notas na sub-árvore da nota atual",
+    "expand-subtree": "Expandir sub-árvore da nota atual",
+    "collapse-tree": "Colapsar a árvore de notas completa",
+    "collapse-subtree": "Colapsar sub-árvore da nota atual",
     "sort-child-notes": "Ordenar notas filhas",
     "creating-and-moving-notes": "A criar e mover notas",
     "create-note-after": "Criar nota após nota atual",
-    "create-note-into": "Criar nota como subnota da nota atual",
-    "create-note-into-inbox": "Crie uma nota na caixa de entrada (se definida) ou na nota do dia",
+    "create-note-into": "Criar nota como sub-nota da nota atual",
+    "create-note-into-inbox": "Criar uma nota na caixa de entrada (se definida) ou na nota do dia",
     "delete-note": "Apagar nota",
     "move-note-up": "Mover nota para cima",
     "move-note-down": "Mover nota para baixo",
     "move-note-up-in-hierarchy": "Mover nota para cima na hierarquia",
     "move-note-down-in-hierarchy": "Mover nota para baixo na hierarquia",
-    "edit-note-title": "Pular da árvore para os pormenores da nota e editar o título",
+    "edit-note-title": "Saltar da árvore para os pormenores da nota e editar o título",
     "edit-branch-prefix": "Exibir o diálogo \"Editar prefixo da ramificação\"",
     "clone-notes-to": "Clonar notas selecionadas",
     "move-notes-to": "Mover notas selecionadas",
@@ -31,36 +31,36 @@
     "select-all-notes-in-parent": "Selecionar todas as notas do nível atual da nota",
     "add-note-above-to-the-selection": "Adicionar nota acima à seleção",
     "add-note-below-to-selection": "Adicionar nota abaixo à seleção",
-    "duplicate-subtree": "Duplicar subárvores",
-    "tabs-and-windows": "Guias & Janelas",
-    "open-new-tab": "Abre nova guia",
-    "close-active-tab": "Fecha guia ativa",
-    "reopen-last-tab": "Reabre a última guia fechada",
-    "activate-next-tab": "Ativa guia à direita",
-    "activate-previous-tab": "Ativa guia à esquerda",
+    "duplicate-subtree": "Duplicar subárvore",
+    "tabs-and-windows": "Separadores & Janelas",
+    "open-new-tab": "Abre novo separador",
+    "close-active-tab": "Fechar separador ativo",
+    "reopen-last-tab": "Reabre o último separador fechado",
+    "activate-next-tab": "Ativa separador à direita",
+    "activate-previous-tab": "Ativa separador à esquerda",
     "open-new-window": "Abre nova janela vazia",
-    "toggle-tray": "Mostrar/ocultar a aplicação da bandeja do sistema",
-    "first-tab": "Ativa a primeira guia na lista",
-    "second-tab": "Ativa a segunda guia na lista",
-    "third-tab": "Ativa a terceira guia na lista",
-    "fourth-tab": "Ativa a quarta guia na lista",
-    "fifth-tab": "Ativa a quinta guia na lista",
-    "sixth-tab": "Ativa a sexta guia na lista",
-    "seventh-tab": "Ativa a sétima guia na lista",
-    "eight-tab": "Ativa a oitava guia na lista",
-    "ninth-tab": "Ativa a nona guia na lista",
-    "last-tab": "Ativa a última guia na lista",
+    "toggle-tray": "Mostrar/ocultar a aplicação na bandeja do sistema",
+    "first-tab": "Ativar o primeiro separador na lista",
+    "second-tab": "Ativa o segundo separador na lista",
+    "third-tab": "Ativar o terceiro separador na lista",
+    "fourth-tab": "Ativar o quarto separador na lista",
+    "fifth-tab": "Ativar o quinto separador na lista",
+    "sixth-tab": "Ativar o sexto separador na lista",
+    "seventh-tab": "Ativar o sétimo separador na lista",
+    "eight-tab": "Ativar o oitavo separador na lista",
+    "ninth-tab": "Ativar o novo separador na lista",
+    "last-tab": "Ativar o último separador na lista",
     "dialogs": "Diálogos",
-    "show-note-source": "Exibe o diálogo de origem da nota",
-    "show-options": "Mostrar página de configurações",
-    "show-revisions": "Exibe diálogo de revisões de nota",
-    "show-recent-changes": "Exibe o diálogo de alterações recentes",
-    "show-sql-console": "Exibe a página do console SQL",
-    "show-backend-log": "Exibe a página do backend",
-    "show-help": "Exibir Ajuda integrada / colinha",
-    "show-cheatsheet": "Exibir um modal com operações comuns de teclado",
+    "show-note-source": "Exibe o diálogo \"origem da nota\"",
+    "show-options": "Abrir página de configurações",
+    "show-revisions": "Exibe diálogo \"revisões de nota\"",
+    "show-recent-changes": "Exibe o diálogo \"alterações recentes\"",
+    "show-sql-console": "Exibe a página \"consola SQL\"",
+    "show-backend-log": "Exibe a página \"registo do backend\"",
+    "show-help": "Exibir o guia de utilizador integrado",
+    "show-cheatsheet": "Exibir um modal com atalhos de teclado",
     "text-note-operations": "Operações de nota de texto",
-    "add-link-to-text": "Abrir diálogo e adicionar ligação ao texto",
+    "add-link-to-text": "Abrir diálogo para adicionar ligação ao texto",
     "follow-link-under-cursor": "Seguir a ligação sob o cursor",
     "insert-date-and-time-to-text": "Inserir data e hora atual no texto",
     "paste-markdown-into-text": "Colar Markdown da área de transferência na nota de texto",

From 26081ffd3694a6a5286c86c7cddd583531d825cf Mon Sep 17 00:00:00 2001
From: Miguel Dias 
Date: Tue, 7 Oct 2025 00:39:47 +0200
Subject: [PATCH 064/201] Translated using Weblate (Portuguese)

Currently translated at 0.1% (2 of 1605 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/pt/
---
 apps/client/src/translations/pt/translation.json | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/apps/client/src/translations/pt/translation.json b/apps/client/src/translations/pt/translation.json
index 0967ef424b..7266d8416e 100644
--- a/apps/client/src/translations/pt/translation.json
+++ b/apps/client/src/translations/pt/translation.json
@@ -1 +1,6 @@
-{}
+{
+  "about": {
+    "title": "Acerca de \"Trillium Notes\"",
+    "app_version": "Versão da aplicação:"
+  }
+}

From 280ec5b4063a7d574e978645f5e965071b52faa5 Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Tue, 7 Oct 2025 09:10:05 +0200
Subject: [PATCH 065/201] Translated using Weblate (Portuguese)

Currently translated at 0.8% (1 of 115 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/pt/
---
 docs/README-pt.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/README-pt.md b/docs/README-pt.md
index c2bfada8d9..4e87408087 100644
--- a/docs/README-pt.md
+++ b/docs/README-pt.md
@@ -1,4 +1,4 @@
-# Trillium Notes
+# Trilium Notes
 
 ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)
 ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\

From d6e9acc149d44bfc17edd1b5522789f4d4ddf6ea Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Tue, 7 Oct 2025 11:14:56 +0300
Subject: [PATCH 066/201] fix(ckeditor5-math): equation not maintaining styles
 (closes #7211)

---
 packages/ckeditor5-math/src/mathcommand.ts | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/packages/ckeditor5-math/src/mathcommand.ts b/packages/ckeditor5-math/src/mathcommand.ts
index b6126f42f3..e91350e1f2 100644
--- a/packages/ckeditor5-math/src/mathcommand.ts
+++ b/packages/ckeditor5-math/src/mathcommand.ts
@@ -30,7 +30,12 @@ export default class MathCommand extends Command {
 
 				mathtex = writer.createElement(
 					display ? 'mathtex-display' : 'mathtex-inline',
-					{ equation, type, display }
+					{
+						...Object.fromEntries(selection.getAttributes()),
+						equation,
+						type,
+						display
+					}
 				);
 			} else {
 				const selection = this.editor.model.document.selection;
@@ -40,7 +45,7 @@ export default class MathCommand extends Command {
 					display ? 'mathtex-display' : 'mathtex-inline',
 					{
 						// Inherit all attributes from selection (e.g. color, background color, size).
-						...Object.fromEntries( selection.getAttributes() ),
+						...Object.fromEntries(selection.getAttributes()),
 						equation,
 						type: outputType,
 						display,

From 545c8648b7db5d685c9aadb07644ae39304e95af Mon Sep 17 00:00:00 2001
From: Elian Doran 
Date: Tue, 7 Oct 2025 11:49:36 +0300
Subject: [PATCH 067/201] feat(demo): add a template with `#excludeFromNoteMap`
 (closes #3547)

---
 apps/edit-docs/demo/!!!meta.json              |  73 +++++++++++++++++-
 apps/edit-docs/demo/navigation.html           |   6 ++
 .../root/Miscellaneous/Day Note Template.html |  24 ++++++
 .../Formatting examples/Code blocks.html      |   8 ++
 .../Tech/Linux/Bash scripting/While loop.html |  36 +++++++++
 apps/server/src/assets/db/demo.zip            | Bin 915002 -> 915913 bytes
 6 files changed, 145 insertions(+), 2 deletions(-)
 create mode 100644 apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html

diff --git a/apps/edit-docs/demo/!!!meta.json b/apps/edit-docs/demo/!!!meta.json
index f5f319d92a..57b5377063 100644
--- a/apps/edit-docs/demo/!!!meta.json
+++ b/apps/edit-docs/demo/!!!meta.json
@@ -1,6 +1,6 @@
 {
 	"formatVersion": 2,
-	"appVersion": "0.98.1",
+	"appVersion": "0.99.1",
 	"files": [
 		{
 			"isClone": false,
@@ -60,6 +60,13 @@
 							"value": "dayGridMonth",
 							"isInheritable": false,
 							"position": 40
+						},
+						{
+							"type": "relation",
+							"name": "dateTemplate",
+							"value": "bRQvb9VCkc3t",
+							"isInheritable": false,
+							"position": 50
 						}
 					],
 					"dataFileName": "Journal.dat",
@@ -75,7 +82,7 @@
 					"title": "Trilium Demo",
 					"notePosition": 20,
 					"prefix": null,
-					"isExpanded": true,
+					"isExpanded": false,
 					"type": "text",
 					"mime": "text/html",
 					"attributes": [
@@ -6033,6 +6040,68 @@
 							]
 						}
 					]
+				},
+				{
+					"isClone": false,
+					"noteId": "fhNlr1V1o3d8",
+					"notePath": [
+						"root",
+						"fhNlr1V1o3d8"
+					],
+					"title": "Miscellaneous",
+					"notePosition": 30,
+					"prefix": null,
+					"isExpanded": false,
+					"type": "text",
+					"mime": "text/html",
+					"attributes": [
+						{
+							"type": "label",
+							"name": "iconClass",
+							"value": "bx bx-dots-horizontal-rounded",
+							"isInheritable": false,
+							"position": 10
+						}
+					],
+					"format": "html",
+					"attachments": [],
+					"dirFileName": "Miscellaneous",
+					"children": [
+						{
+							"isClone": false,
+							"noteId": "bRQvb9VCkc3t",
+							"notePath": [
+								"root",
+								"fhNlr1V1o3d8",
+								"bRQvb9VCkc3t"
+							],
+							"title": "Day Note Template",
+							"notePosition": 10,
+							"prefix": null,
+							"isExpanded": false,
+							"type": "text",
+							"mime": "text/html",
+							"attributes": [
+								{
+									"type": "label",
+									"name": "iconClass",
+									"value": "bx bx-notepad",
+									"isInheritable": false,
+									"position": 10
+								},
+								{
+									"type": "label",
+									"name": "excludeFromNoteMap",
+									"value": "",
+									"isInheritable": false,
+									"position": 20
+								}
+							],
+							"format": "html",
+							"dataFileName": "Day Note Template.html",
+							"attachments": []
+						}
+					]
 				}
 			]
 		},
diff --git a/apps/edit-docs/demo/navigation.html b/apps/edit-docs/demo/navigation.html
index 62e56a007c..1d4d5d57b8 100644
--- a/apps/edit-docs/demo/navigation.html
+++ b/apps/edit-docs/demo/navigation.html
@@ -637,6 +637,12 @@
               
             
           
+          
  • Miscellaneous + +
  • diff --git a/apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html b/apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html new file mode 100644 index 0000000000..8f2333bf02 --- /dev/null +++ b/apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html @@ -0,0 +1,24 @@ + + + + + + + + Day Note Template + + + +
    +

    Day Note Template

    + +
    +

    ☑️ Tasks

    +
      +
    • […]
    • +
    +
    +
    + + + \ No newline at end of file diff --git a/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html index 214ef212e7..e562046eff 100644 --- a/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html +++ b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html @@ -23,10 +23,18 @@ + + + + alert("Hello world"); + + + + }

    For larger pieces of code it is better to use a code note, which uses a fully-fledged code editor (CodeMirror). For an example of a code note, diff --git a/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html index 5edac5b2a0..1704941afc 100644 --- a/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html +++ b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html @@ -18,6 +18,10 @@ + + + + # This script opens 4 terminal windows. @@ -26,18 +30,38 @@ + + + + + + + + i="0" + + + + while [ $i -lt 4 ] + + + + do + + + + xterm & @@ -46,10 +70,22 @@ do + + + + + + + + i=$[$i+1] + + + + done

    diff --git a/apps/server/src/assets/db/demo.zip b/apps/server/src/assets/db/demo.zip index d042dd83e161392de9701e15e67fc2ba45491516..5ddc6a7681d642ceacecdf5b0765fea54d62d1b7 100644 GIT binary patch delta 30218 zcmZs?1z42Z_Bc$#zzp5pEg>x(64Kq>DJjiJilpQyB_T*l4jx-dcH)NHhu&}TWpiXazA3oK|F}0Lb`yUs zjoBG?8+v^3{geE7*)F&Q8Sj20NXCC{`X)JMuSd228rtOC`f3&IhGckqxziceF8%xN z?BbfLdV3%L;**+^&nj83RnHC<@s4>uQN`S6uj=D|0$r2Y=$;F;)| z$yI9SqEFJds(wm;2Uo)n7EJsPJJK#|OZ_ndKNUSkF{Y92JqLG|JN;=X>80Ys)?ui~ zs-By=EDW8HK)J@pNTTD7|5){HX0x}^XBV7MbDH)}>HR(4mE$k)&F$5v&bbi#BzM%^ z-N~4M#4X{JRjDL@b)U=g#rG2Te^Eycll{Oo{TED6c6&aN1i9W=RRevU*tNCa=2_p5X8u7pE!)N4SSxFq zUSn8_uZX`bu4-WSihddzcFFtPuQ`Lm>V>uIvt>auzp_~sU`2fa?)IlwWTi-CFV=>> zgvW20L1%M(RWC9MxLZ}LcrO||UdC{Cp@%VFX?;yVG3&eo)8qTDF{M+O9|8i#Djf66 zl4Ef4aZV?dcfZsMnNuY<>xw>B!Dr$|;>QA5>#=P<5uekFk`*x9J(5)yh!M5kEuDYS zC=f8i+5c^!#xeT*Bwr*<$H!n&!nG0vHZWRkG4;AyXmo(`Ra=K=3E{R>DCj)?Ux<~BUe{0Z;qNOIso_)I$WSug zU0;biJS$!})BU;PtX82;$6?vL!@p@H>^CzZn%40Pw0IL>jrR8rb&IHJ8+;ED*t@^* z{jpOQ%|Fb@enVu0wwEIdGT^p(rDiDo{1_AH-6tUi?w`T5|Asp0{R=;o!E*>L`Q4iA z=C$}~(R=V+;(UT?k*h}J`~EW`f0XG7`W_Ai@mI=hDapll?nMWt%9}a1pkhg#Wt74{ z=R06N;D9TQBIgd(8-M`Aq0~C_DFECB#}Bkth{ z3S#viV8H48FU-zcu1mrtoW=A4$xYvJua-P#pX#!g#sQ71RGCkO3Ax66y;!jY%|8H= ze4_HL6wo!jF)kWww&HWlREMHYPrbiQ<1}_(g<3~G4i6E2#yV0W_QNdgEJ-_y`M8V> zUAmZx@MYTPklE@dBgQ)xbNNX0?-L1MCSkWwdV*mXiGs#L?1EmoVfjw~=1 z$t2J2O0}SOlC3u9jue3%{CwgDBy8CSSZ?B)@Qt>9zJ8`du z6fy9y(K9?H*1PoLQvGzBtEkoZGR%&vGPABaU-i6-fzBQ-CQf6kPtL3?g^ndv=R&Bv zmW8AtC#s8PBzM!{n|Fa%RzKcvN@ooYO26z*I;7m>tEMtJVRo5pxN%unVqDU*uBo=>AsYg{#Ua0}9KUpW#z<_-=qR*%^vvGy$zX70WO zM|Cf-kYBl_qZu}Kl)Hw`iYJG~Ry4KVJQ*Yvv{TniMY|Spkw1;sWUn$0gYjdmDU+$L z$Uc38-MOLhl#*J1#POF^+hd9L*y&W!g`sI{&SUc3pU)0RZKNbSqTS@nUrlCIo1ed# zR4lWgxs12ydBS#-IgIKXSc&?*A7ujF2tYu@fa@+9Xrt?nIN$Yg;-(J^P98E;9QXLm;27*~I8J^_o*-8t@2$a$R^t#p%x zlIkaep@FoVyUGevVM!W;m;gpKbFaCu)<^c)$CX6a$kBs%4}L5~eKv%BgL?`7VQogw z&}(qiNrCn!aZm1xTx45g^E7nLh6#Aol6P}{*U5vyXGCvnP1#2x?~h}*E4M)4sG||w zI@)yo_b3YT*Hv|dz?u<@INWh)!zk5TVv@#3WE(B1b*hAI_42a*xvbsmo=m?V%bw)& zitp?nI~xmTyddr^RI)G*BlnH~=lhJEaq(Ijxm*RHVO!(VhRz*30!;e2eGJkP6nwd{ ziwM;FvAT%2xj;Gi0p1Da)sC(;LB`FZeeE&m>=FvovT?Y&zWLa4`nw!*7=Mrb-;_VE zC>^5l$>sM&=??-rDfZVpDHPe52$oNKJz@rF^AQ{aJVnE0<7^9J1LL29`%44JB7l@) z%yY-u3K2kqDWf=61_j+HwJ&R^n>bf2BJ!ztkAGOH(PweuYhyx%e1FKQ1`o1SgcxT0 zoTL(Ybx8);mG61ajuzLG&rTfIQ$SB>oyVkrNq3LyvyM|mS?(;Ofzdhb#c+n! zJJTIE|1fny*);{Yun4GVmC;vVq6b0V_mx4{C%o?@&8pUpuQ?)Um}f}Qd=KJMcSL2KCVho-Uv z@(I`~2ERGB#Rot8NoH@CVz5PtbZR;t+BTg5C8z5O2JiXYJo~`>#8R>3=;7Y1>n&8p zEwMj^>$a{->|ZB+b)rqRU~%C!1{Vp5n!GA%6g5dM5)vyNofE+qj<&o^++2bTI9`o) zMT9;Mc4jmFkXP^As(FCYTfw(~CpF+=wGN>!I5sM<)BcOTFc;aXxqgg7E^}bcmXm$* z=3pGp$@O`P-RTwBCM7vT8Ci+BC|9KZ zv$Y%1+uFp{$VKlp)gMo9}rP#FxZ9PW?B27K;JVwJ!!$g+8=rBOmqU5Bk*D`}M9PNk4kx1N;VU8gREzI)(q@0 zpgj-jLN`2KnwCXnH@qSC(CY`J7B4`EPyyFR~2=6mA>ziw84t9E()z4B72a8hK8Jg0J|E2o2-or-i?^Tz~=oD@1auTQD14(7ftfn z%u(e%@>zqpD-@J+#ZRtAi{{2IEfMMMzg8h(39fSDWS@7irsJDgKTdfH4Q{=(f0wl$ zWZJgS)zmw)m|fp4kc#2hhaUPwh!d@~0(>W**>qleP#6dJ?D~LM{!RCB%i3i{q9l|J&@ zo)jo-)Lzsqi*51frDb%>IvqDsCOf|D z{*`m{ou&aR;+;Q=UPJ7pu)jLCVAQ>4y^)XL6Y_rIPz#8P8!@eKn-qt6Tk#^DE$L5EKj<6K*=QPWeEx0hH%B2wlMhzb9tvO#h)8J#5hw_`K zUAehPBG2pPK~|SRvlMxEVEoGK>S52-aG9t>bGKKt$mXje49xiehH}dvu9dQ_3k5|( zjE>YchvIV{gRyTC6Px8Wo+zSm2yet?ACWUqrzEUDXDtEWXZur?NInL8T#lxFK6~7| zlKne0Y_tTW9pv@+gNjm9+2CXT;kef5tlZGEMvveijbfqZ`o_EQ&9vz`3ULC4AZ>B4 z4|}~NL^jtPVkd8-Rcf)#cZW{K%?ZHUZ*nB{UF!hXO&s#3k^EV$($ilaF;7e-PLhs2 z_kBCP!}0b3BdpP~w;S^5X)`wW#1fHQqCj>|3QbQZxn4rb)G1Fi^Ce_2`40Y# zu`hO*N*G@0Na$pRTHz4@?O2&d{Dsd9m7BJi9gpAB@AyZ|(@<~5f>m<1l6g-soT_~c zokw~V=q&B3-U5gMQQM*r3R4>*fC%QPSwhtEpA*u16tOU7e8jZIOk>%o5r02OQZc)2it@gy@ zeEIFaSh_?;Kl`u|pn$`KempPtk4($)nxCgYhV6e&g;G95Z;vCVJ{ju`F2kv z$wasLr;v%uT}{;T>dfyDGVD$l(h|S8p$Zdzw6JrU=n`7B9@FQQP;4gT)9w5~V zFz)F3%Di!psr+vFf=!@~jpPSy>JaPOmtWZ$1{FHC-d910R9eC5lQV~0e}}EkNu;ZK z*$q?fr#m*-$ZSAwX{_!JiHzSj>nO~wzEs7kN>vc#&a<0lj%WEhk6NjGrKlB2@d}4X zSJS(YeY!uEUC#G}0dweH$_mH`c7(P&g4bQzI#Gu*-ILVFIF$whzDEB^DWV9ap*0px z7g7>P1Y?$WP(*-7`o3s9dy^SWtu72wL%Gb({F#2Bk=)+i@UrepT{Jla^s!FLV6DYH z>9bQ9jnRkmPYrg=L??K%L_=LfJZ`6Z&oJ1E1E#M2p6s(3 zwfg)!-ZYt<5upMhVN$+y5dKE;CrR27m*a}L^)xiMdoa_g126shysjlp`*zW9Xmp2wfVLpm+z*xkEY{$5L+fj&hqDHMstq zfp~we5dEmv-Z7;bu{D(+%+Xda{+;KZ@G9J6q}MjTji1&gUY@Hz5VvK#nTA<(?1P}= zkjfvG+J|lxjA&QgjWr4dF}K8yfyUITnf12GG-RAP6^Z$q5!#|_GNUdre3)mh3Uq0i zXUx|bwWiBtpyL}s2`&g-{WgX+;L44db5_t+Vj0;d8^M69mL*y9qZNU2qaSC;*V3-U|Lm;y{QnIW2?F@RpCLq+bIJg)O2 zg(pS!9Z>S=kX7QiRB0Bj*s@?%F3*oEhh9>)8VOv*#-F~-B-N&d9GUV_Km)N5!$7jR zpWwL-#S)a<OP|`9D82;d23wPCv(}zPh%Z&MhCsEh6y}=BkY+({ct? zSaC-9b#~X_!j6758ok2T!sLl4FN7Px<7XQlV!r`=b1cBB-qgQOPXgTH}q%S&m``c*o;%6RC-Nz-$hbxxBn z_6O6PStxx}RVMVygt0fw64PI*Uwo_%n)kr{cniuK8geYs_(7!`{w`czJh505thrh3 zjGLD0!moyon{!S#fRoeQtR8pPa3m##i+Nnl^3_Mv6qzcuWb8f{?8R;60)~g4ymBC}{j>s{m<{>U zRKGO^e0mo_NFD?$W|UdoCGq}XZf1E6y62o;Upj{4@HQ=sd;6Ajn8RVdB%GTHKX50< zbTghcV{fyi`uXA~+Gy&dxSe|Ks#TFu;Y!^1I^20M#En2_cH6;5#~gts?wJ=w%(|D; zsT4mH>%4==KJkE=RtwM?r!PCKm54#sJr?-IOet%~iCY!(HdcGMX8OhoAlJ8I zlAbKM5|4Mr=g+k?70E#bk}XP3GnFKY_93rIYOm#Wy0(>Z>z|ePe?NssHtp+7aY%65 z-n|C?WW!1uxM!95I{4!N9CCH@S257Tz%)Z1WvVmH5BTwnX!adi(R_N@MtI=H#E1LU z8GJXBK6aA4ztZdIRYIdj#iO6(z;Og~^LH+sTsIHc@wpR+BC$>ilddaPiBGBiV zJmR_@Z{j&vXP-_^WF%RNfki{5N$>5B@zLK-M&DPOwLd=-k=J8zT#%8R z6z=v|pD~0|{+>v6-v_5G1RUzsO?{#LF3KEWEGb7iSg7QF`8Y=LnD8^GPfWPz>H8o3 zmGUz$#%sL|o9~+6wo=&!yNK={c?T)J-y=0E$eAUOkGEki;Yw$S8{5hdsw%LOLHX)u|jPX=Y9cMZKG@&?r-{QOV!Nj-ozEinR|7~WP)fVC^ zFQw0=jA9V{Nf=pir_hd;`tE(gmtt-5l@O;nMIkP5-spa^%;T)MccSC4mHKwz;Zuk0 zCQ?2{Uj^=tqjg62d)-zohB>a(7-HE$xeOIC`koLXTvts& zl%8bkOIj8I{y_2U*vAWU41QW@%e6sw9&pS~^2w47?5W1NaluZ7%mvWDSxwnF&iZCD z^uCQY{Zz#KDUYCt@zAe(xAZPcnHgKq#d{hOZ+Fpfj0-DD>;{^NL$7M=7R;G%8TSi! zzq9nQZ;tTJvb8po+d{@HH|}@NqNPKf?kJ+Y4Hnx%4sLmBr3C$m{8{L><@obmyRI(! zFFG$jgH3@mTjU?OB-CBi?aH!HsOY$)u2%N_%%)hlr@gy@>5&6fB^NHwg1?3`Biqwu ziF*EF_#pDT$c9p~O7o@4f=VsE4&n4#Xdo~LTQHv+o!3jaL~p<6_4K&E+gtEb(y)do z+Gp6!;9HMx+6;#LeluQc0ls~WV+0Z#Jm&e6U%(=|Y%%Mv6qe44BKsWUiYw^>5|(2p zIu@cE0SrtTXbij#@rCImKE+ETkp$6)jA^VJxkmxqu1%G_8P53M1(#B|8>#3@SwvRT z*@nxO4eE>gx{>Qd4Mdx37(81r^ABhX4fMv5_Nd;}@N*A2FsJa^<6NQezDAc#O%lzU zbOd`xSH2};sqNcAlX~yLNAFw63dG~HY4hS6YNW%yX$*DA6YT2?e_+YC`x4m@lXEJ$ zSyg_zYap0jClXDLp_j}%L^l1>t%+VGdWpc0-JveEEBQ{?OvgMocA2|Is+CvWQ_{f$+bY6q~HmnfdxGSB!$*m8J?^VUI-ZG5} z=C8BPF?YQ_+O7(pnb3RjA+6_kSq@mjwX0LKB#dEqVJ)`pu{%0B)i3I2Ahg)|1a`Z4 z*sakx*`A0&-gmf{PRw3aSUTl9<@M=_h#09fF_<4FB)yH(mn!<6<^FY zWW}je#J4nk%=j)xoC| z*6X}6d((UEO@2vwd8IPq)+GMml|sQHumgJvxjC_mRXKd7j#H-+4X&VXs+$=V_)?4;wj z6g%d#LDRjy%LAY8>$M%UaDs{_vfI?G+A*{gW{~H1>`#KyLV_hdsK}xe7uuKqy^2s- z#(tctHyj+poz&=7@y}Jn)~_Q)up`sOi$Nk?E}SmnNwtccY{@=SUHPzdQr%#_BLy?CF4#F?xLupGM*bu!!oqT8Wnnq3zU|E9rYbPtb>8aW?!DVrXCwF9 zU3RU;#sVa*GVh+YE60=aNDIf$+wF={RE^(3u-A7)%}buShOgZ1M>|WGrY4}3T(w!B zWRyDF7S|@2-rLVzA*U~=lecpn-sFrt6_%ns18*3UEjawSQ`{A{uo2*WLs$Hc%$-aw zmn(ROXMQMluj$#m9{uppo7)l@31N(y$|P*1D7V~Ag0Q8hSe8?D`BbFqdt>i&CZb~P z1q5q?Ns?PmJpIhY-%kYnt>7BKRR{oFSze5X;Wd@Sdm?Tf@ zy3bz_T{O(2w4 zZC8n9DlJzAs2x>&A58P84OqpuNSsTS{#-gKP!HCyJB3^kOVBwxLwJZlE{rlYr22KoxA|x72 zxySg$>S%(^{N}NN=c=`QYPNcuStjVjIQ6cATRl0IxAW}sHVkEqoP@b=8~0P5o4wpC zVl)Ht=vL~(P6j6DadtEBaA(^s*5@GO0H+Yj6(uTfnRLc^VydGlL|F^Pg%pQc290@&|kW7!+k zM~0UrhO?ND)M~R=s#*VzNdZ5pF~;{-sp|v1VG+mub|5?KJ-&u6!S#maR;|vPihk7e z*!e>ez&KobJKDB`oXRT@=mp$CTgL60mDid~15%U?|M8zQF^&(k$XSwbmu5l2}BJNR>0KGiUa)6P@!f z#-lV6X;$NKrTNf0oA;G-3Gyc-i*n)?88vZwHExvrmkNcMWVf5A+2Cmms|GND+#O9ZJ6u*C{~DvG zTsL?X~q;oi-gd#p=n=!ka-1%`GMIwQ~Cb=JOFdg~!%DAhTviQ$_5rQR0lyHI$QXDDBU zkM6d@ce`fZ))F)sr*C(UYe(|csq4;$(cVPT0vYhWy&NPI1aM6eH*)--AEZPX-k=09 zT;H!ou`>Y8Qt_P=qpWU~S;1g{ocAJA)FCdftWsF6FTO39)-{f z-wZ5{{NOv@o99Nq7wXZCwr=l)bruV!C|gdS{`spPs8Kr|`=;APFi)=coJR&D)7~XU zyvKa3xs9a@9PG+({mrH?rCKh(ZGS~?>1|o_OZy%O;d4G7n|FN*8e!v^0E|`W+-+FF zHwz1W&kV^5EDkAWg2zUh3pl&pFApXam#|=OyI<&yFVHn!7YUDtziUE zdqYW>M`xI9t#Lz6*0F?s@j*9lZ$a>zPuN!Q&&@@&FT={849wmlIfKvwicOfT@FvwI z1s{nSsEoMt@BE@ReZsd^ixYD^cX)2V=0Ft)1}gKWT;PGm?L1gD(=An`z)TChd(L1p zSJ7pCW^hw}3eT^2Z`xt9%SZT9`M(}lJ>h%WrndK@;Fq^u%KnBaZFRZ&@!d>JYq8Tk zhwZ}9b?0tuQ@;Yk{`c=pBnLh|D=V#Jlh6MOfgP7vCdOfh*^O6vwF-Za6CsocUcj+74`zBm1;4i+s98kUN^I-%gVP7*8?^%ukpktCX(%;{&G&wH+P0R-Y(;mjzEp+bIdQM390pf{;lfeXmR8viO~;jQJBOZ?F-cGoS0-?z5Rjhl zpucbg4CgxdB$XdyKU2gGd$-gp+3xx>HsxSB$6f$@N2Z#$ST~-sC$}|Zx(UDWWt9q_ zOuZaPW>Pl7xDS2L`0Re_5oMyEp=yZYJvfpt=JOqyAGW7;4$50o@j&jtyT%mgL=(_P zEn+LE#d7#ybWWMXz^h%~=+9iUkcL!p{K(SnhiQe2Dx0#$@z6dru|cTOurbfV)0Te2 zztH3i;zb=;?P*GPlV9thx?Jei=bu8YTg0P2cboCFjiqKVvwBVG&UyJBocnfu5WH?) z6lSbqc1&kXt(!=+tF$El?z&q@BmX{9>4}l8sX_QANx*O2cb~e39Bz!`hDVuReqyn3 zlgwrL`+;F|BIMVtT}__gWmw5_dt4prUu}6uTQ_9Wv#065xRwh+7dM%~$e!3{7me9A z<8nh*v)npo_qfT5)>_p@N~~`F_ERiC@wiT3b>84tm5Bt z=sEbPH&C+$h0PCB${6hro0NF!jEvnYjT`l~^O?X-5JvRP{OhpyHlG!TtZ>1#X)$9* z$Bp8^0GeNJ9Y-5N#%SN7zDs{OEeRi5IbB&u2bwUMg#@FN$!j6j|@ z72&n8%g3-Kdb^#?NyBKL0#!rc^IHG@Y2rEbKbZ@EirQAooPY6}lx84jJOB9j3o}P9 z@UZ7}&X50V*tBfMUexas@EdP1_G+<7(e#YA(5ql@a`5W2SExC6vb2trITdmmuOuO7 zXekFM*}?ik##?q)p5{Y|G^L)^!|e$|fu)mDVNs|#$d+P?p#lH+@2hP&{sm&q*_~3%iC3LLktzRnNsp4froZRY>`i3?=iT+I~@$y-3=rf z!h)?DFEPGPOgAk(*M}U;t*pDxL>a{CI=MTcVI)rFc8f;q z&Jr749S3@_P31Wq`=J(sgBrdRO0zYfwcXp8l#_4j05D9NV+{?)34G=M9NBO|NX^7n zc&@7ha&a6)`HtKF5@`pBwo8hk8eaW<#zkiICShX>Q!*rulgR9**z6JZZMIjVa?KO) zwx!upFOu-SQ!NRG;#)6vzjx_EU)y+Zwv0DRnBKR0wCN=>`pA~yfZ_M`a~6$aZcn{? z7I!zxWA5msV}1q_GJT&Fc>#+wuVhVqzFxvz31)2+wCYxdy+Yx4ziG< z&{IkESK5#SaC{K8`U&xf;eG_$fYIikk&ji|0XI+39H3^a`Tmh1!Xs_Y!E70uE_L!} zZl_*B!g&Qr=dR#yTN43vA;RO@APu=+A)0sQos;b^i=WM9idKD%9~5svcRm07Wo5$7 zA~k3XbLECk@1i7z3M)Il#sO zXCK|Z$dL+$GJWSuiyKHE&zd5R#wu3`V9j_B+@=5}Y*I9VMW&((elUE|v8W6b>M>%i zb8{yu`E3Ho%l*)-yTE%f|Y_&k1hUaQHxhW^FfPj8SDjyEwEvWkXO1-t{(!yHtWSVNkQqeEXY){F`@{`4-i( z>fmv3j~Nz~Ic_}2LwgHArGt|uL&k}b&`UDI!_q}Cq_lDqTfT@MIaP_I{7Oa`-!4*C znBFc@PMFUwQeIdFD93p6$mMMg>%JRX9*wwp{NbobGeXJvcgygo?Tk7-vQM+0p zAfIW-L+}{crA@n6xI;+-!p~j@kW-*Q2})@wUUfvoDul zC5;BECX*+#9y+|(+t}N``g6En8}g!`O&Hv!usCq(qpFw5%mG#SHhZPA$;R|^iLg_X z$DOxDFVm7Idp{a0+gw0sn5Dc1qo3rAnjz@DnTe%02SbeVI3?6#<-^BCm7*+Bc{F3{ zcm^F28c1Z^wp?^SIf4HSxwEnR)=~N84-37oeUwbvrWBpBa`vjJK*G9-iN*d~yF+li zd03Lwy z4!^Al^?H_%1GEJrE?OoJKQX)bGn5R5Dy?+QGJo`KSa)wr6AgYaLUJRwH-`<6J5i=( zxk0f~%b zi{h-1b?%o?id|V`Y@5Xr3~hIJiVHCZKY{8P7m_gCPM^|!MY?%%<7VRX`Wv`I&h<5R z)zbqq&crNsbm#L)0iK*T-M+;P5tpA)$dzy+?!f|ad6V2m|KEo z^(0-?;MpMLYjdvNLr%j^nBd5Oz_%b!mKV`wMMX7#)b(ECM@Kv(;~Y5Npz<8{{Jv^O9aMZfAT(xxYaaBH;+q$^cjwl!~SK2Byi61{XWwB=l z6sc3;X;2!feHSxOHw_j5k?jsPiRFE|zNVXs#;G8`M|&IJSru=G6wU2(m}FI%*NInH zv%)67Y~b_d(XwGo-7YP-kT=RxD)!U}`S)GY&91ESr;g%7;<4tytO}yKeRlW9XuBoI zA`Iy=^?oWtHy6mLP19`4n8lM!vnabQ_~;I3?5sI|r*Wcnjp?|KmxPs8lD>vVTb_K0 z|Gj=BP5zGF+@36A?ai27&vlHvC9w;h)Sb`7C$W#Xpfhi~cTER)axyU;9xq>iyGVRy zxxpqVA3jrj-?%y9`!{jY>=N?r{6%)%sqEV)w9|_5@90lp&D-vv^hyUUg zl+rNx=}{A4|8nq)qb4dS)jRS>puq=+Le}s>n%0v?4;b|?pO_)TQCGzU9{z<)#sHWg zR&PKU^->Z~;8XR%lDa5xZPYi;LOqp4j%v{^~p0`aCs1EcWea8>)9GqI1zXg&V>c6 z*X{8`7%1ug@($ISei<$Hi1{P>Hv!0_IEx^caB7^Sr>1Il!z_F6fN^)h49V>WvaXjh zd)moAi24T>@o~jp(#UKA%$tz2!hr?n?9ZBbSr0}g`$^+Or#eLWa|f9XWU>pj8$!Jt z9K(L?_C3lt+aM6F!UZV_x{qeD{<&FrIB~wV&qFY0?_0P}W7nJLpYtm=~ zfW?!qZ^a6=8b}11WY(r?1lPM}v?feneHtd9mUmfgEc;~IvKCY&%9}K7PD(q-=7d`Q zGrqWnMGoWk%pL7MMD^Euyte+UnBDdpJTk$}Kiv8FYR{I5y9o1r@}*vfE7B@G21kFD zZ9Ca1J;X|oI;3KeQBySOo)pyar4Cjm;Bh7-kA6ZJ_ec_Dku93P?37-dz}uxX5Ze^nl?J6He!flkK zq{F+9Yh4nQzC#Q?XH`B1Ka2ZVm)6p6=CxZg=K#h#CYB3Q zCtSKky=gb?pyPWp7kc8Vcy^0nC=p^j4bFO^1bd}5u`zhmc$bPM7Z!@bq^r6be9AeW zGNxQ-mG&hlqlJlX{jlXc&{V{m!B-axQit;+$lDO??WVFO)tR_z#5^pIF7{Y4ACG!q zsdO21{RbnKl*ViJr|BjnaM!{uX6#q}3+n4O$j4~ogHLHDls_%*TU46*nxr`@VLV>af&0!}chcv=@*!`rzt*9&qaY!Lp(DZb7V-7h zLpEA2`Juq`^!rLA^1~p_d`$?R0hHyiw2@f{!9N#6B>F>w-|X?HX{>|N@YfO9#it73 zuh&?QMI;g|*B+)RaC!gxk=cV7{>^Aa(lhL+LNYQz6!kP)$cPkY*qK9Q<;|WlT(FZq zKq?LYCrx3LH@T4qgZ_Pd1u8{`f=W?lDgOmQpZ21F%KrP<=!S}B@b4qUG6#h5im?|J z%GisxEc`DVYV#NEyYGJ=VZYVI&whA>!W8N2_|JqTbaoh{y!_us$Wa~$^VO~|CUn;q zi-Y68aL@N3OlVLZmRQ9DERBDYAF_sxLDBRK@Ca@!6z1?|gxN4>>pvht<<$W$h{+la zKs#dOsRd|7pvg4AHcBlW0DQNF#^?Zi5%8`jASNii9^fg00Oocmd<5Gbr65*@08+S8 z>y{v4#g{|5Gd<0Rm1=zz4X|M&*z_~)d+5>i|9^w(&5e{%dpuy;+Aai9PLP(bu z01p})34m3ShmZ}HghwjmWhDq5N*xVwN8l&K0A%1SU=_v$foZw)FD5?3Ef#?NFb^@? zfo=A%P=8>65BXF9B7}~{0yq&|2vT9S;onKxN)QQDJr012n3Vm1NRkIiDxClMtPYOF3X;N&OaeKs1fW67-T){O z!t!Wwm>yv0ke?|C&C?Er7$H_Q01QY=H3$d7lM28>g?-ZrfqCj5Ow3OpcIfL=fE9wp zVH!a6KQ2SC(y9YtK=soB4e)IM3WNY)75Bj@C+`4C@Buu2;9?(eA#_;)JV-zm03WO) z`J9R$xQw?8wjyCttw=MsQ`XImp_hT+(qQ{yVarSLlM>|mzS&K_xt5!tvH55V05QM6 z98yvVrj2k$qC`5HZrw-SMV^=Y<<2vdJ9m=ynPf++0riEAW&pXa19E6wLW;N-{a}Yr z^GDh(j!Pi%>tPJzAgUVEafR>=0Xr}-m;HvYCP0C7O+d=8(0%qw%-rc(XL}*>5tiFo zQxcTcePBpnpbxp*xG7ZteF1cu{TJ?hPu(plG%a)bIqO1ISDcTUtt1$a&A8fyC` z7$mEp1ZXv00_Yf>Pn8ONTnH%dIk*J%L1^bDz-~2KkxHG=`{_@1EAecCI#CrVTFc z$0Mnp2pNnRs!IVTo^cDB-$u^L>kGJ>(2Ed~5|5MSe9emb{a6!yZN&;s&oJRFC+XX$ z`Pu#RV8Oo){AXkjMZm}9(Qp|u5|Sk9{}ut*QbV8R04y=!Yb{j+V28k#83HNEZ}<1@WkX{Q)oSL-Q?keyU(x<4MtA_;cWzg zpu;r)WdyzC9zs(Rs9HTh2mym_YY1fM=SILhLJ?SKvqNEW&=4rFq=1!`0BoH9`7-(; z17OZTz@dDtfF%H2wic|rgyTYBFbt@CA3)CyZqu|h98Udzcs%rx5BSuOHGXU~2nRp5 z-vc_dfFD~L!4c-4|HWVx$L@kl(zbmlcK@M-a!X(<62d1Q`q_sG8i-aa2ov&I1A7<_ zkB`8XhG@2esGu8~*cc>m7_70ChH%M zAyk4>DFk3U{FiF^GmHu?5L*%p4*QP|)X>OqY;*)YO#TfneD*(1qK5Ewz%-mn!G=c$ z6ti&25jRxfn&hx%RjCJH( &uBzgz>OQ`X_W?DS$wM z#&%*O)4)}NojKMJY4NblKe!wS$?pYGLYp_S+lb(tVIp`SGD9E=Nc#o03mgP8 zxHzBT*#I>q!~vqgTZC0{CP>W)2;+Yu@1ZGxrELMCLc`Ba4;WB)3Y;874TqhQWZ@+j z=52dK*@xAV%wgDa(b3>w{SPl#4nG{29z?J~WoU3r5jg}aMvoutP5ZvW1ThJc2IBmG z1waY5ag-56utoqLaL~3L97LA_f$b^g4>F*+dpO4bVyQ!9Wi17iEPL3rSoc8qh6Ab~ZC@Oc(U$5#+7^!gOX1K#>TU?Sxq zQ!qi$23#Pl`FijMtREAGXfXgm@CiuAEQkWiiw|T#%)&*%t;=y|Xc<{qPIp09! zkSkUoE0lu}2r$4|UFgO9^fD(uUcgPhba1Eg);^_XcHgq(=sE5h_L)fwa zYx1yZfmd)s3_9TF|7#wY9f%GAF#r)O3tJ?42;LH`d2?p~{)YPr)(QWk3K$0e*Ygk2 z{I8O*8C=Nq5{L*2^U4!sh!rys175S7nSsLyi4yEUWr*hr2>X9x=Ao*kvjU6%#V~^t z!SZzk0fGgTJfwmX_!Dm0L-MR`fQX?pT);v^sKYB548{m)=S7$R9pMEc_E89YD}qh( zLwLyku@83e5zgcT(m?PxL0Hfve&9cm1FI4L!U2#&0R%eSKo|qrSLT91sJS4h9}$PJ z-VUaTHHa2&3*t!k5K?egR3L2!%;yMi?aS2$F^5i-9Qq4~C@}$O3@@+k_qA zeuwQ}Ob{3|WoU*t$O9o5mL0+nD{+v}{~ik;B!HzrWyEkYE?p1=?!|sx&`(6;(4-F< zLoknVhKcWzg1Ia46odsiHUwS3iC%iba)I6$!~}nWIYSmgX9^;P;Qxl@W}z|YD;y5< zEF6mh^2ihx=T){KM9{!gmW9Ibzao@uw+1Ofq>uh@hXbLpLBL56Y?~}Vo&OOB$0vt; zvIW8G5)_u3|8y8IW{6z_M$L~f0;V3Kp2Dyco9sYk2r%6FYsVlS$gTZ9ioyIY3%NUn zC9ACiXcjIEwg7hU0nFp@ISS~FBM4ErArFQ;;8Q>-#X+D4G$_ntu(R_+g2U<#Y|)QF zA`mMn5CMed3|1mTT|ue{>2RYxJwPA`t@}UH;r7Bn|JWPv4$Aqjy)ZaE{OQ362<(Xz z`pW~91ZM_?Ee8`S7!g+`|K~(Q1UuPyKY#AatM2S$YwzY}?P34i&*y(`37DS#zegaB z|9=7n>p*&q=f3vzdiL&~Zq~l`JWjsuZtgm=8ohk@pD#$b!0)}xUX?eb<`Ow-v@=AR z1;}NFJjR}6`(2IMW*#dp&?>%BI(6|K;5a{fDH;CvKDRPfdi60BSp=M zAV8&F()}{RTqlD=yIy$B+EApg>l=yn(=3_@rcX3Y-HgAwK~bDqd?{?Mj4oo>{aWq? z-KEBbwtYVcUW3D*dlngIzUC&nm8$1RWOGf!9}?tUuE_H*>5fxOLV1ejIOORf2fR+b zsMuJcUN2ycBFSuX!paaOGI!vQ`PtR_Vo-KGn$%5@!&%slD&)zRQCB+Ndx4X>w?H;S zZ__&^g7nGwnZfIe?^Km)3#=?5VckDBd3UqLuLs}6V)huOVt%BU_;w{R`O(9}tI3Gx zm$1%AOZ^uWXtUpok+{K`gPk-&elw?dOD`5Pr&lNg+OK`Mh*l?&H(iTw{c-#w!+A8wmLp$XqHUTw3EzW9`?<}C#=AyL$#P+`#S+* zxH8%s0eZ?>oiqwAU&Dg&$*#CRv!UFq;(o~bOD~D!CnJGebg2R!Ows8KabtihnWP=Y(qPJvluRiaR8**_Jo#!+ zM2RDmDWQncphTpSh(toBN)(a?l?ML%+;@Atw0{5Bx@*1m@Y(z9v(I?ZwBQ9^>uf?_KrSy?@rqioWCdn;M<(Gn{p`Q?iO@ znZLTP#%1*I2t9?v{!u~JaDq(Y&cK|-TN|A@>MUzSik1k=e}A-#Yx*9rl$crn;?B&- zqaW3>^Y$3_Tb{g)WNf>?DJeehPFF6_yBEQjBj=|pwA(lGsa9j<5x#Vj*O5ZyoI^p| zGnHziBjn~d2Y7_9^v($oivGqpaV$vT{$2G0-deHWr4+@itQwRH;*%Wrm%VQGZghUP zr+tY*hlt&I6;n_9me5u7eVqq<7Iw6)J0|7xFy8K&yGT6cELf8kufSapx< zTfjNXqWHe@gk()9!&ayKb~xDKO28`8_vKRSLv6Wo0ze+u|-`hStFKiH?^*Wk8xZ|q{iAZ%|P&kU3<#wGS0}OJW&I)7}+1z z6+hIsle<^zgtkuT@yxlH8Gh2TsY5)$SyWDMXo+c_z3QOnDt)C5Q30ExEZ&P+Je_4+ zKgCerl}9N|Sa^oNI)A8*g1GNIiB(P~PqcH`NC?U`xTo%!u62{xChD-GX3qR|vkOg( z7@^r-IX?3ad^F<8jJYPZsw(MOR$Pnr-U7b8d)pc%qum%+KlHjHx8Z=c#$nq-zg2%$ z4L#TBWwh-6>isB}k@umuEyitlS6ky9#nPdcvw0u<%yT0YKdArID01;`+h6E1-8JV1 zx2t!p=q_{Vpm1Grr$pB>s~>{vWP=V0SR6=TykDcEd)7v4*7p5@mQ7sArhHkuuOv7` zx*H#in=55ueZaFVnqT5;>oZaP=4Iu&cZNQ>eYMS~?3;DQVm^H(&8@~OI9K;+igdYn z`?0svcg+jjN%vYkKet(Ko5r|?B$Tabw(i(C)ya!_-R>>SYzt{EGVzqwQd(dzXVQ%Q z6Y27Xi~+8Lnz=<1;j#a%$h`iTdr&lTntSW}j`F1?6L;+in-$*_{(ZA>8OO7F%kd7^~nMS7Z`iw@wkS!r4l_vXIml}lkD<7Ss zkTB87IearMFYQ^VYn7`(`1z2@gr(qW)$HZ_It^D;ZkrqaSlKxI0cU3$a@>*PDfnh_ zzQod&Ppw~V<`vv1EF=bc*L+uVJ8ofW`P5^Jj@>P}ocO&vBWy$BqCd3SEf9M0L%?rS z!jbN$n`_>G;bI(=TB6MJMkmL=^yL*bE}N!>+G?Tk^Np*PgNOy6v|t=ehK* z8{am#byh`l3|#qbT#KUAqt`7u`AW3cr|4I|cyIN`{_Qd)byq*tPS7*`sCc?*)i%|im3QAdz6rP&;klWysb}}BDbs3C z>{zskPh(L-)afrv`Y$ILF(NzX$6WXIAyy~89cQWc#Ypn4#F|^43m;7DGwxdM)wSqe zd%Z^nm(>Dvfvc^1w~(JAac%K3r+HEteoIQnE9mV$d00`#`BrXmNx7mRhlh&JMq&BXZslIi!};1u z$6n+a{P=Y_wJ5V!Q8MeYvU$SdrkIxB?@GHEzY|=#Rer5N`Z2)2l zD^7f-C)g%`SaYG;{!Tros#wQ!J;#R5$l>z-?5`a2R_FWKI?>AFI^-+kx=Y7}bi^adpMc}O#~|37jJe@Gk?CU_DaD%Ej|0S?nghTSLIiyafKL^ zp17}`Id1rtU0q@)acQsNhM>b-CH$d0O{S}q(~i(Ngm(*iKlYgX)Lqy+qYrkotZ;Fe%?8JFG$OQcU}^gcG$ulFQ2N(uXi4fjJ-wB zRbI+57|-rUYsG0dY`@&TR&V#jxCc=c#Pcqx*aG6Yy!0s_LwmElQwN-t3T~~j`lz_p zdbO9%-sJ8tzwT}x^b5P=00J=?;-8%ar?6aoZfx)>JPL%Euohf?S0Yj_R6i6 zuW#j_-I`LwX?Xa1T}0)|Ld92WXa*&p%v6)kcsB&Q?PXYS6MNoXmu$VZV?g3McbHzp zKCLTx&e5@lCJow&BwV=D$H{H9f6uwvuZyZ(Ht7i*)C!aN)b&pKw|m#EAA4;!KKYC+ z_%rT>$|Xt9$gvD}z7l2E8kN7MCiH{myv$=exBR>}eZHgSoUD&pvvUvVoaLFa^^U5Ix+?cW8xyQu00%*(2#oi|0u8eNo!<>}c*Kc;ghHaGpQri{v~N-{)mI=NCzd zhDp^ebZyQI($G=t(hpf9ZzWvZw8#B~&SH%-6D3zFo#{Ju+P{X*u#BnF=qS4HzFSxGv2vjz9N#Pd)IH*+pUqp%3Yb-EO|v;M=p643>zDHiWu#Vk>A zIg;yNkZN#<|NOY(X?yNH-x<+&uxUU?&ezFXpO3p(^2q0?#KiJ6lNFbPi=^|!j}A}r z8#H(|qu{jOgCAv|MIK7-_mcl{RwsMm-Tgnsf)%pAX)bu*ooEtfTsH3Vu2&3~o!5M~ zovhoo#HH7)>4wwc2jUV3f0X6L>hVNB@_W~-H%+C+FErC(Eq!3B+RP9>F2BANf$o`v8ISfyAu@8=+Rjw{{+aBY;I){Ja<5KtLa}`74+cEK5*&PVu078RO-?bD89wBFHoQ&d;o}uMxVs-;3d-`#?(K5DAo6(} zL-$MaxtFyf3vGou4PI=li?WmLnCQOE%Uo%3MW3gROIYp62U{+xm`4@7n1YT5RrEh9 z2`CUZ3tqe?X4>awByf525o^rIMOZRWuk#Xtmy$S`#3<=l4 zM5nym!A^!xyvL7>N9LQ0zGTY!2W%y7>g^xyes=kwOyTfC{K_Pp@i4xQk48(3VxES0 zS^sS6jo2VUi+N8`eSnCi^TQFzaily3`GpfoQcxJf_F50#zEdAT+Iyp6byN~g2)V#z zEt{0!A0e6)?c4zw4eH=*=IyuB%WbQQyPL1IIR~fmIMz!T$L0J{p+;OZnmCCbJ;0o2GgoEsPqlBzCoB zd8+UfI3do46QVdv61(cpl!Q_qZZsnTEP^;vj{u7e`XmM}@+D{*I-0kAd;9t+EtANyN?Y2aAuRlW0;t; z=nrw4GF(86gc7%IV6g<pD{Dc&!lHc9KHdcM{Od>w%#&25EF% z$6Pif?IzNvSy6;I8NK7VFW@sPzPm;bi<*bP^m}NG6UzmhFta--9aW?pLxovC z2EcOPPz(YWsmPJNS%?`TZ%Kx07yPCeQ5vMjpSz=8zE?#@{}4~(W*GDUQ5W?iViFmA zmT~wp(&0E56W$}~SYjz@XiF@py1oZhJzU=+HAZzg3kR!~_kpCX0$Z#cJF3D4?k=Fw zJ{r+zD_P>W&DtN(q#s;1xH4w4G|u#_#zv0x02-}k@86;U${a{Kk+4FxafA>l>tee= z>Y6AA%}k8rFW7S#lZ33 z=V6lh={)06-x;bWe`DUZMH{+A+jjrGs*)FJw4toO ztbR3fpSl!}<}GqWFh;PII3%QizC$%I;zbuT@}jCUqA5?Cc!ND!yByag80V^4OD zS24-Nf-$o|e6nj~Cz#3uQx0sMuDcwgY-FZaGQg%=A@y^F8v3xDcQSgEOtrrevo_i= zSvl6clm6#$)?=B#X(+pbrN)O6Q{es?&-ytjfVh7&YeFg^OR`i`f%V01l-7|{LV{#v zVwS5tX6eS9`+o<|^wn6BIe7M-1J&&$K@ZiQgNtbF#vrEFIbbn8ROQIak6hFK0Xs6$ z;}-38V#!ZJ&1rBgj-lSA0o2P8mH@Io59xtfUhsu8Z7tSPLr~u|300nl$ilLUUSQUS zbxhVJH(n{UEd3uVt{GcM7rC?K#n7E}Dx}rv0CjORi{G7B7CB~6o#>eX{E7{uR8=e8hW+vUR5ue?f~HAs^Wn_6MYf8tMm}G24!jWeNAf%uo!zfb_xbB3Ro_64Y^d z7SppQnEK%;7E?!1mnA(0aXwpESB5b~BcXUAkBLxhEm!AECU={B%L@nm^%M3fiT zZjogxNIx449ym@m8U<`s1aoZwO?AKi$T|c z_4?E(7Fo#^kV9o@Xb$itqW|XK&mlxe{dUYB7yCCKD#7@XLhc{ub3y2B+&_dSp<}tk zM6!2A*C36|BRJ$5@&C{y3(W-n&SAuH8BCd+`KN-#Wnw02YFD9g>2C;nJp_L?Tky}P zvTO1oD0bpTH!uHVWXiHMaZ(PRW7i}Q9crb>7>Qm1pY+n$`O3`jV-|nLC>B&l@r`L! z4HmQdOKb`f&jSni1&m@I@Ix~Hf(OKl2jyvlrIiQZwvz|kxy z?qZHG^J~E3zdA|_%Dco+)-@{h1(+XreH0%`y{3+7<379M*Uums4nh5!63acDdnfZ* zx&(T7gO?aH?#K~Ta*HVjg+O$4`#NR40uQcVqghZHMjz9=(lmZTtJ4_-ykH$ zbesyyI~=c5>L~dJq0bzNfWpy^*5(u1YAU{a#+(GFMeob2o#DtftXS*$f0*v*hK;7WqTL8s{4iCiTHBn9T4z*NUmN8<SRF5>Xkr0%iV1RYy{W-VqZt~|XiL~c9lTkh+=%x!AxRok zybT72_b^#|Zc}bVVrsfSlL{qpOgD~rt9Z8o<_T~^mkrw>7)cir%Sgnng`j)zKTMd9 zo(4}8A|pq(V|bi^6P{QU;n8LT2sw#uscUTZ_*d_mC{B`2gzU9~bG`|i9zBZGL#K+U zWzb>pzysJj)2iSZIdb4c5J$}B7@&#c5#Jp`kn~pa4tP5_!V(?vR=Y>K2hY_h@UVNE zm&Am6bqBWXRI`_c=`Vb3n4mx|En9cMJv-IG6 z_mEhIR2~p=WT%wUY35R}dIZ9eo_#ar4(BQ?TJV5SA_2M|0DuUcNwq4Y*6a4$(=Vlf zhuR0`#_$h`(FKv~d4h*`SXDKy~ZHvRWvjio!jMsh25g&^!7>Gzcs*RPalgjg1hXNC?$m({C3Og_L*cq)$Lw zswupLR=~4=JBt6TnsVS>HL$LYW=(iYpN+OYp;U)@fIqLBr8*h4KB0=VdY%9aQLOfN z^cl#ZX0*Z2JuIz>%u>~dz$aVLKI5}5T;EOJ%>Rg4?6;dZFAk(US`rAJO2W9a zX9Ei-HQdSev^@TyX(tBPG4QZoc}0B2xOS+qju0Sox2FzH>>C95kaQYC~?`2%OKO zIJX4%#{G=Co3P| z%g7c5ul+mKu$nPBBHFk;C&3FVS^+#uSt@u+zeh^VMFMJkLP!r%hHQ!1OR!t1jsZv( zKe`A%`y^Qfn5C>SiiInXC#!h+jK06eol@Ngl1H`JC3#WOE6PaDE8u_ri%SOgSWH7ut0gtv26P(c7 zPJ$q#J+b5WE^avMoPpoP`?Kl#Q=)2iP|6$H1sBmcP>EfDB4@`$0hSEXeG3lb6gGVe ztUDttZKRwH9s#e-JaK}9>MgwuuZ%B1-%AdFAFYuJ<+ ztFe+DuBYawb{g0>g>G=5!vQ7t5QZrBGr=c`VK!|zE_Msl@qXK!4aN{9^$@1GFq-*# zQ2?)4K8{%56dnIUMK?gt-t;W^y{VwRhd%^^{;%yZ6$g3B6 z%Nhl}hc0B9A#-i#S}bZgVn*dfcee|;m4draAI{VfM+&pG<9q>R8mwFFj$CDli=huaqZ9r7 z24vGu7>`*{^$DxM>)?zN;90Uc#kCP@IFgMb^Iv-tD)~g^KiQz-d-BQn1(*l~WI3B| z0xA0UpqPq^KT)HCL>2!8u@Az;l{is^$wWjgzrEGL8Jvjh2MLa?*uKw5l<#jtMqi*a zS&6i`Lg!d8I8p--dxYhX;g>NzEbEQ+9Z0}4Um&x>NrEMUl5=hxKOX9RJWdp`0T2k- zfzw(ZxegGL|DzC{84EmZp7$mGU6wxbS`8PbkFJWI!xqWs{|10E_3>1lI=a(Dh&bah zJi3}dfDL8GE`sLewrlf7H{Z?PUSvu8=$FP=`P^*-(P2;ug4i<`1dMAP;3b-^%mnlS6vY}%|g>?$vtLWG{j%xXnmv1l}()GB~^_7yiFn9#Yl=-9 zEi%~c6Wm&Ax)s?;{DV=AJN!;yOynY#Pz`e9g2b`A#m%y#MVGd!UXL!R8a&vOHh*_< z)-km}G9_9XB8og})k@ElA2En+w;mFIw7WJh#&)x2ZFc00x#{Xb z**04jKM6E~kg@+1Bz1F_&XrsxVY|KFmCk+6trV-8S%}=#Qj{aUQ9D*qB3SZM$TYlC zRp9UB@5L4lha&keb{xNU+aMnc+KN;VD?*Cc+{c_JzG}00mkj12Vmh~Eom(H5 zaoxzCcE?OYPDxo~nT2ZQ+}44~%MbdRQ^MtqIU>F@t=l`8<7uz;j4dk^L*GxP&fu{+ z3(^inr$Y#=ZcXsq@WWnyve#)JLHI2_Bu%TyK5mrCkE>>;=fD+p4EChvA2in#-jCzo z;jTALPU8-H0{NYFy3zU~=+f^n>~|X9?OV&0!|upWHy03LOa9`pV$m}Q$&mUy;<~h-m)5Ep z-K^+Su`eV#&nAUx8&L%YMaMK|VGYKX_eZ z;r;E-@@2#t&kgVe<4jZ?daIeve3n+#=;%slGY?K|;ZBk|f!5MD8SSJ~B^n1@vkq|A zrpQ4H$h>jXTDp(RnV)hif9`y)hYd4Bf*cU7`7W5Ij}eDo`QV<(o3kxii@(08d)7PWX^r`#&@{nfS>3aIINg(;tb_IHWB zq_G;gZN|2hnIP;wYU9b+6>IrN3wfN%JW{5mE+7Rd3g(tqMJ2!VjL!x$C0!;ap%CM( ze!rl?9haEpj_}!->s7*M6j0;!itiZq>`}YFawM`^OFT59(GM0paxESqQJi+DJFeTIoRSD!H{~lS#V$E8~GwN zCqwxN3eMty?X5C}9qH75a5oZqHzaZt3B55!;+JVuR@@J>SuU-ki}8uKc{@DyAu zZ1eiA+4LvRTv)cx-w-di;!x^}In#Y=kQ3K$VE@{wUIZKIEg&8pVa#pn{iUs{j{cP{ z2}AQWWmVcC<_>fH_R~*KR(`kL+jGx{U=#_0AoT%{RH?gE^U4X$*W0c(3i4Cq&XLpU zl(S|UPtLQL1@h^-Boq;wq+2Hm&1GPCfq<;m=iSr9xUtm3vHiwR!YkRgoiVOY6ONDr z56Q|!;T)lcMz^)pg7AYdWoOh2%daYW7)A~b*1++7iF@}lg zV+H;;|CJ4mNv7{XCv)Xt##1H!oaaABE_R%r-LU5OsyH<1wZnxk-S@Pq&@3$o$XlPSu&`D7bh(LNz`jd#j>3=^_}^pCRB zLh;*mOv3d1d$Y(NZKU%-*yWAT@=HJC$HwDb?;0^Zeity>VD=hE;Rrtiiho^hYZoDo zgflhukt>%CPh{nIu!QX>Ks7A8eNBW2OGfwvT3=-Mtf6R$CM=!dDL2D5mFHfy#)^Rh z3KeM>hcOe9oMdY%mRN*b0cPzGeWu4p`xb#t4~;skR6#*+u86~6NLeU4U8q?II%uBk zJ&r|?N0f6IIukcFBjuWmcqIA@EsjeMjeKVJ4^fRx{Zlz*5$Mq_pMmez@ zaI`tJ6XxCjF7-Q$p4ib}njkQaXpkQ|ekQHPAfv?lHUZKR$bv%c>F`gEk!bP(!qI}K z`%Jq|)o8)H&ebHryDrttSMFq2XstQRSWPY|SCfAQ(#Um6)h)UA8L=kb3aJ_oi!B|o zht)#D%E)#8G6l0rXtV0ZeflEwuIWHiq#gxr_~R64%Ti$d;|cQYtS4)tmr&Xk1Jlc9 z{2tb&Ph$bhn-ID`81WT$W^T{xu^eUln~T=iX}cb)WsV9(EGwW02dF;xPwvKcY{j3~Mi%}}+sw&gjzZVC%-o4R zPc)bE>Jqk7tSPPMXznaG{ZpV?xqq3Ny2U}zITiA%HT5f_FtVGnq#p(TJf09I*iqEdxeu;F9~DGF zmW~tSjaLgNDZg_?AxyVGP~#vZQvE+{hp-)M;A}725MZ*1!ZvhV%khz9)eTZp=DEky z2qGMF4&SmY-WYyqQ?!J!6o^@`u}u*#1_ zNSwtK`(#bT1vUMeuLRgRJ$NM7Fh(GKr(v+~-<^|qM+~-|CC4_`4`)7+lrGF9oh++~ zz2ADz!kZX_=Yn2?l|t9xB2nJxBGvF?pjj=#u{U5wB9!q%g(?HX^LZrQ@->r#sN>j; zq!2PP-O*1mUuTeX7yX9H#?o}Un2MAP-c^oZ_o>I#i#M$eiXiPdnpdsc2*l1pxcIoC z@*{$A#S%(KSwaEWo5~KTe|m0OU9{$8!fYS!wdGZ*JbTueS0&p{il-s?QL}CK;Q7lw z;;d7-yYHpK#h`tIqf{XEtRf3FgLWPEKO)bm4IVmjM+_Wnln{kZ~aT0zfJ70B;k4vz1l8UTDVP(8tBkEvjfAOL&MSyTG zl-8VQi9UXFuv#(ik;>v{k5dJl77F~)tCet!FGmU*#O5c8LVo_Z4Q>|K+T3DE$?FN& zvS|D`AJ4Vljh77|`H%h<>p(C+>e?k*1NqOG`z&YN%D-h}e3dCo5?4dW1tEWbL?xtJ zDl9`b+rop}%R$gEyWtUGt7k79L^b#-O6H*bP1vUcZIT0K|HPC5TXcq1jFG<2e+^4= zd!j0@SE3HQ4c1js+K`isR>f=jy#u**KtiGTdzna}@GEADm=IwBzl+O! z%?;Qq(;*{|I*7a%>h%p3_=PRh4+X4>17tKuDq zzrx5JS4UHOMPyH3zLqbDDv;Af4Pr*Vu_k6<^2Tt|2^2pi$km8<`g56c>F@kDvB1Bu z4E8!Dz&g~}xYUW(Uatz0_v7rZxuBpFf`)+(1(6ojYSM03JhcR zgN1cEv1dUG)c2-jAScR+7W|%s2kGA!PKcK2NBRQ9pRJLhR~Liq19$!LQ()V~?y5mu zI4JbyG;hRDF}5$uKy+xT7^XM$OJ?Ah2^=Z~645n0)1?+iafJXk^Y)E5Q@r#_(fH6M z$1aSO&*s<=e%_m{C9i3o{b-jyW8#XzU2IRM(V+{@WXw|`NV{@0Gu2EEbx%9v<2@4F zcYg+^YIk=;Hzt=CCof^@Lkepqdrt$lE%w`^b8x3rK2zncKQ$xi>|l5M&Y&p#UVeUv zPE_%SkU8NW2hE@=GzJ0p^O4bkj=|yZL6Uw)_k@utwntkrCZcN+u#icM9bSHA=UzlQ zf58pf9O!mjAB5&Dc5*-OXWky(&m#iZq1TrFC!e>AW6G}OpO6IXWAx=Gl>4xDoOs<) z*8A9roU*Z#sXJTCwh@rW3_GJ3&U3E@U7NHAX7}JkV6ULlfr2y^u~B!^U%U+OXqOJ6-#|me-}!3G z1O+Ji`H(M{{i-Id)L4H;_qm9wibl5mzESyNzAuR(7MI;wEPMQA?=1-b)cM6ZmiTSB zyb$Ny*0H~>chQz>5)#P$ku(`E@NmOJssm&r)iuso{ueijuP#kJ$6TGgTaxj+Dvwlt zq)p@(udXJY5_#p?81C4;$6PTjzaD?m4K^*NZ<>NMu9A|{gA;CAuRq9`leT}Q{}BqV z4j5)ve(JxfOrlz@laY24NSq&tKW@^w(%L>Ao5K3cjh8+I&(NzI@wf@Xixv$jpIfYu zcBx#DMl|meQp~~ns%a+iOZIAfB&-ofos*(BDKoLN$@|q3wv5Fa8x|&|KG_K7WHe^P zYq{r;_r319R*Ob@Pju~OWCQwwG<9hnAB_qr8VNMvaEx9~>G8#U`5T-LGG7Lf2yt#d z!(_?!7{0hYo=R)1IUf+EPvuBgKF=1Q49l{wS}IOU=SC@Qk7Q(|l!2VS_L0Wg|E-~Y zW88t0#%O{JCc~(HB8N)Ae0>utL$LE}?KL$jL`-h#DWiZE4(Re0H>i#A0xKuudtr{B zLGu-@uePV#Rq1W#=$3vT<;>88(MXZIUUZt1hs!x|p9YIB&1z5s{qbg)Ej!b>y_p2I znd;T6un9?jidS*vQna_(? zZwfIgEPe zSv|`4pCyKkauyb+?h;e0TI>;TU)Bim2vH|zcQY8$-|&%n+_%EX-dciGuC+FL=!V@V zZ9!COCLhSdY!`NvdKZ2c6LJJ&kQKWA{eH|`;Q04l zT8-^s|Ma(o?p2+^gR6sS=dM$J{pkw+EC0>PAzO~!4C%~@*ZwVrC$rsP{v91N23_9z zT!87chm-X|KgGCR-SM>KUWh&o_nU7j0}<4HA0Jz>`<<0`l;RxEl$NTs30(<23io;^ zR5@UBxHhnu<;U2OtepJFBEbrh4RtA@gkmT1S zKk>|Hfweu$_IlCq&LpV0aa)c*WcsxeI@DIkduqnTI*1r&FkYkZaZ=toGf>6)}Fh7kI4a zdi#dlO6p@PlN2%u$r7b?gsKHy?FkFxKVluvP|fKh&sHox4&HVQ1$A8ZHYXsk{8GR* zCc4s(Szn%NG$+!DFZMpoy|r6TFRCSS!;I)nfY1kCfm*YEH-YfZL@&hjYwK%X86{0< zUj!hW(wKj1f$UsAb!Wb{7P9zJ?UY*0zjJpkfRIeW`z$c`wq)5)D9K`ze?~hOIUIdz zAtQw$4IFzS_EYhRX7yXJ$CqbTcHSuM%YP#H`*FsG#|Hr&_pmoPMY?a*iR*d~4kOtyLRoh5{5Nv3+hv4if!u zas`3NsSLUr3Y{H*1a9M`nJiq;^1K1Rq-M7$i+R6NdXXRjzBK9KI#Y6xaPPITwo#{` zB&h#EO&1C=8_5*%qLOQafEGzsDd$EqxR2>4zuVMVPJdJ*_S9q16+7*SGPK3(Cf%Jl zs2NRMXzWt+2U3N#2I`|*%eUh46i{WWFJ zE6Wt+(HA$0XKzB2r}OXqwz8$B=BI4sdfq@vIpp(%r3dtJ<$UO_C)?}i@w4zHJ5BR> z$UDDRXB;KF)EuHZcxUV!mp>9V&6>yL3%%{7*G}H-I2n6-(7IwKoyH?Ru-3^np-?zu zSX9z>((f(w&eoqJLf+w5(s$>UGS77tqw@I_?&A#Yw64%uc{vWl#Ib<mK>JoJJ%kGcjS8G!D@{kMv8T~FSXFa&23cW=60e_j6T`aM?7=< zAi~kEW(sH~2ud=W^P#IqKkm^=QlF*QPH7oycO9$MT%$qnd6}aAY47C+^3JE#UR2QH zj~|)e^#ZD~<>dqhjAMep`8JRj=;K`6&pU(>k9q~TnK;sO_61UM>OXf_I7xcuQ8AlX#-MB;=%y~y=ZSP^%hb5an9j3T>El<6eDgeeNBV>c85L6=^Igh?VL0j)csNrRY>YJ#Nc}7m#V=qQ{k{{ z3wE4;=eL}5+h?BR-t>qTG)W@PMo*NSwiRatKI)|*#QuzZ!77G7_FmqHG{4#OiJUqW8>qY7|ptZ9IP^bWOJ87XN@vC=NiTIUFwYZR|5z=6j7yu z97?&2(cD>YXDGS9h|0vMiKY(a@YVcGz-KCJwnC9gw&$UB%jkq)}(&f-dFbM{dnN1<1tPx$|GYTbt}k;(d`pqJyr!C6i)#<|XzmHp^f$u5Uxr zMtND@sCV#=o|yup-c+}&6QSv+BNf8m(3A6z9o}Bm4aw~|2tb&0oV?P1J71$Y;fEQ( zV4dd5L{V>dIhia5A@E1G@{3|O|0^rQVSbY6CdIv}R>QBX0`k&}$tr9=$%u+2IH1W} z6EQ=ScZT7BO3zpOlU~`SP;b6L2LYD0-SaJss0m{3`}H@@?ulppnbg;HT14)gzlGhT z$2DFNL)l|B*KF_O315=2F|2o}#1ARUN~KvdIuDvJSM%aPh*41A?P56J&UZ@-yqyiS z^qrIgRd=fixcL70rztMO%bSJs-%lSvo=A@@%%o=Hy=8S<<8tJGF_tWOB^4xh{ zskC16lQ&gS8~kK!Lsl_3NSob!VC!mLA&~Q%I&Zt>dj79e`3cEV&{Zoi2UkSCF-EPB z$VRcMK4Rx2L_C-P8S#x66Xs5RTwhj&Xk!$ zd1enxUHf8F!qffzCuuzTWUtU`R)=GU9)aMv@38tuTluhRf-t9+Z&qG+?O#o=l@1I| zFC|zT+jMiCNqes6#)xxI8xyNu3UzJod?``DC`hM8fVB2LHzTLrdo`VsNFt!UnbGXz z5mIVAnn^}$|CpGH+~4xbAW7aRGB7ykqDlAKUPn^9Yuz4$NU!FVz2kv-!(TqUtDAIQ z;*WBcjITVN&QI?Z1F2xnU42oM<653aQmkgGYB0K&kl4DbaCJ~W&hnHSo9XBBK}Ee9 zXp)pm5fV_%MnCIV8f*F193wgwv9s8Awh)CUPIMI1{Z#3R&dQD+)_}sGjUj(fp%?Ys zrCtGavfe>-_{mRd#%!JA{+_MvmZPo~`$* zsmmX`l#?3}X*b2yj$%`^8SXdv(GGts!6svcrphxf~%NBn({g2GeStKJ+WWrd)6Ys{x+W(a-1 z@|>S`Pl{5nSQ!Q!F>zwmn&PJnUU%$h`REAAA=kYgNuY?F60YpqDa>uEd9(f`0P1`Q z0^R`8`YlvQm9}&X#8oJ-^q&}p^Hcok5-ZhovMgb-@1q3GJBRGP6|x|$wTgh)$??o; zCAI#nY_vqU(SL@acIjF;XLH%Q=AiG%5<|aUzT;(&bbUPSGVlURY;!uk;R^yGX9Cux zk>`+r!IrVHI6mT z)lFZ)CAWz;F{n4~v@2E?==VB+v=?gxF=9Obt|CD4XP~bwGe4q4wHYQt^!2LXI8GxCvPu zpKmz0>C1`RRRw;k`KW;S56ERODfSCqT1wPy5xgj09tZmLmZBZm{(_~DKvVL}mm}l7 zxjG4knQWw+=KDhmYy?=!#4o;Yw->%r_sT@dQ4i4|Ghoswz~j@Y`~~jG;ivkc*w9+R zi4!6(3G-tieRuw)izK4PjY%$dw}1R#`30Yweybz0?ugP4k{o-}UnGzmXH)jA*JAx| z1FY}XmSniD+j-Of^EkL}zd1RC4++N#aqe5Rh|-HWybg;O3wRqAFP3;vJC$^+39iN; zT_KGq8Oge{;V}PE!DK);ChQ$2#_KN4K}Xi4Kz?2u!;q<=liYd)W^gyDpgjmN|DsR( z{2gWClz+@d666-kW0Lmyta>@0K5d`=(TBVUkd3eOS|Gm^4VjBBwhQ(a$^uUFgq+4u zED>3L&!6|hdNZFtq^8YFOCIyj zs!v(AuiCfAK)*bxkgL$XZKs4j(%8t$v9M8)=F4z(d7FU3CKhZXemgp~Lv1z0%1=h2 zm;Y%de=`8ZQvtXYr;cE3e@rlAq^4qMl3ksSf6|0eca`iKI;&CJz;!m1cDWVa;1X&* zy&|dj*$6Vp>DrIKUT>p%qNLfg7j&hhNV=0yIGt>cN^KF@6Jl2WMjWT(y*(t;CS;+S zXhc+b$J_1ZcxV4Y(bp_>Lbvt0-YJJX6JLh+;z*y=@(*3m(uTz$lXN$mAr%Ho*6S}h zG&6s(gzs9x&CY~8^BCB|$TvZ>f4~8%Eu^2;L|_nSrh!7Nni!mQx~Wgdop;RqNtPTz zNul;=W_dl`mI6WjVP@l^d)}<9u$Mm%$5shNv~<`5euo}e-#jNty?k$}hCUjK`DBlr z6u6TJaHV(>(X65trrNFHH+6xr$}u-q5>Ld?gjCG8kQ78Ro%C4eeuD5i~)OhcX$~nJkIj6SzrRcGlsex8P!pl zuvaEAX*){YJq}Tn>Y#+4XnHypJV@T>>fA7|Q@+Zi!16y^H@N(Y`#w+^cUtWZG@O+t zRU{{l$BKHVnhTaVZ_w7fnY^rXzMk@g`r-uj-T>LS^mNd%vCzBp=6^ zWa88LPgqL?2kjdAU~}}1W4{lmOZe^l+$VDKO@CoW6oX;lllK#u`PG7&E+9x>0C)SM zi9sjdm(MACL7arxjfbUI4H=V0OIps~8d=cDH^DY7dkQf*#;ju)ut{px-zMo#jpO=pcw z_glmLgDa0q&hIJj9b9PGA$3XTVT&nSV@^d&>5DnGud&CMU(hdKe7bK9ae*MT(|_!vj&wus)+-{~bP zVfD3fQ_esW>qwB1bATzf0{0ufL^+#RCFtkcI~hh3gxG6<9y~@6N7(y#xorCPN1I~< zIU2qeUw1@{mH1fum^H4GUOB=vQHt#wFMY`4RU1!C@^BB+*5e^m0(X|3-r^rph1Ocq^gxrR%z{8 zIf{b~$rH?FqUr;E;g+PpsFokPS(|sr)Zwk^2GJ2J)B9Rh83=_5$?b7mOm~eGKUObZ zIXypL2!JqByk@n>PFqlUZ1x7zw6sr|9^I$pF$)C^LZja>hbDPV6^a9c`aIv?^I*NV zlLaAXC^YB5yC%}w*aKJ5Mp z&A5#+saNPW!6}Ok>ZdxY6vy_U+P809SQXSo5ek4zdD?s!d$Ml*;n4BOV|VqU{IO8d z!2FHKJ7spjzmx<(VjU)AVk%uwD`N&zN*1jRx+LZ(!%@>q?855Q^ zF|zTIq1#s11N3qlRs9w7xAxWZ$vLOrDGXTYAndXz_F@KvEgvT`i1}XL-GsjQ+DOdS zjpX_j(O-vfzM7$m11ZS4^MlTT>f*W!taaT8zo%iFsh4HhpB8^ zqQsNuhRbZSXm;&?Y6nao$CxcD(7X~nWx0UhyA8!Ys>x6N@I2WjGv{(L)+%v2Kr(-o zg1Pwy~%-Umz& zj#sT!Pi?ZbQx7&s3MVR_c?!pVQ2xbB|9)KgmmjGU>&@_hmefaa!R=x~6wgW@ zh;?Dg`d7M!;7SFUG4MEWS%UOKe_FZnbKT+7@cCvHc5=-sJ6TPl))Io2M6FPBo*`=! z%AwLaUuJA3-0$(nt^);hoqW+26v;fuP0`hU@MVxVh1{lSYS-BHtl4-8QK7k_81clH5XyTiDWiUhr zQpzwxA{sEkOyZ4cON6|ee;GKz!%QW2m`;f>FrM!6diSSVH@D_#SdI-xZD)o9$7N@R z3x`-&hWn=mhI)S<((_&?iLQ~nq2}Z+=>xmYM3$7dxKqmE0{*mN_F{eMm4zQE$f@+W zWQmLhpW)vfjcTX0na}DO^ZVQuC1pV%r5d}ny{SB;twGSXH~#usA6kRP{TPP>LlD=T zJAOU}Ib$403rlDHde=iM@EBo~E((k?V-f|%m`RTUW6vx{f$?sll)OU8nRCC0>364) zA+W7j+dA-Q2J&cr<58XAgA+p#lr1k0VK>Gp@l@oF-L{~&*Bj{D>mQ&-BaM|-p?NzeY3iN;LP}}AMxvq`+?BFm(LLB}&tq+Z#YU-*#u^Sqklnro= zRPkQU6MSWI>E(=ecmFiX5rYqLcl;vF41EVRVDBk;ty)RnYB{B%;`)WX@RLgi;Qdm} zP$8&6$QQbo6`e&>?{_X7NAo%d@nnEU`JcyCyEf7@YBWrF724Yb6!f(9KQs+W*L^J~ z*EeIdf1D|-lxP1XRz`Mm=0n|Ida|xJ(3>*FoQ^rJpQ(MX-!!B?@(f^y6nwJjxVfbt zQS>xF+{Z8bEk-~tzwv9{zGILY5Mm#>oy2Qip_tY7Q!ylPwPRs8&n@*wjmI2ATv6B} z_4jfnwLciTR$Hd0@_Z40x^Jf$O2U7zxo-?QR4}o0Qh)CS-1+`}b>yG!#W{w<<&QBh z#Ac6*7ruOx^y7%=p#BXRG#!jZk5@?VH`Qa%W|8DP6*#Zqb2GCG9~S2Os2|W9Co)5C z?)~i$cuB6PZw|4?x8mb53fQgHA&4cU_z(Z8Zc{-d)ujXSB>JWCH149O@z#M#km~Cz zL4>9Vc_D}Dr@K1eD`f*G%O^qu%ICdpqvs+l?Q7*Bzz06%l6tq9s=lLEecz}oD+2fD zOt^~8*`*r4TQb{nr4Kd3@f|vkVM9rkRLQL{{W@5{q}Y(RS@0XjSF?)mBP_NzUZm!m z`M0xFdUMK!!5bIx;Bc4Uo5wFaYP~+HhRrE|ebw~y4e${inuWpY;O0!~`OUnSLf*J@ z8!I0yLLvThQA0ss$H$RWQS0* z_PXA>mae}O-`Y$GWeNHqSgtZ>cp8FSz}NhAms_m=&~SxCK+bpU>s{sApj$!=mDOz| z#V2%}0wY4*ccj6GxWw<*snx z^Fz5GK<{Ee^iZE@Fm45dFb^CQt1ZrXPg@ZrZh&|{fVz-kF~rA$(PD8VG2s{rNi#U6 z!dFTY2~P5z7ZXlWE>i;s#MaBn!x5hiKyXBi41R^w(=Xxoz}Vgq894G#6~qwhGfo8E zi31Z==#C=7*H##g|9udQ{Q(n>uZWy1MTW1~2jl=Nh@sT+U|fhpT#Mtn5O&ZIRr=wR zM@qtoZ^V0Se9!tVLNlPLdbC}BW+Nnox~|F}nf)^kjk?VaKMo^Fbzg2ou5%}a!{{jA zA&C2Q64utES)=gEOBk|isLna|iYmhs# zIXav-ZuU+3%?Tz1lX6Lhbq}lZIqlg~Z6DHKf8<|HOj*VM(00H1_4%0ztGC+T5Po1r zQBoNyQgBc<2t75(by3VqHDdYE%d28l?}c8}DZ7q~jf8oN6%i>J3JrH-jzCWQ^6fMy zhQC|-^$@AO_%`A6^J8fa>&|_ck1P+HyC%YOpF!VCMl|vd5Xv5+m+1SO5{edzCa0!L zQ3$+bHmK5LN+T|Nbn?|%$|gj=lvt}yG3?WbIzugCNwBy$lTdbr z?Z)_gcsaZIQt-?}bL#O1Qn#;B#tOQ}f%o#FzJg9|J~Htjkt}LSD*dv;9AgV6RVevS zS?hHl@E|2p0>r?wj`=wlO~s zu^HbPUnhO_g0&Fi8kZldYi@lG&KVqm%o}ZSE7PtwshODD?s#$=6^X@=DGS-Y)GOh6 zzsisz36pZ#?PLyc#9Vp#&euTw;A1MKK0)=+UAq%U%=&jfN-~CFbR09s;e((?_f+fO zxUYvA1-(oYg9j|DucbUY%bGkt=ymHszKxGMpC2=xPCd1K&#g|KiN!dPOcGpx9f}b; zKJGCs1kn_i;(TjvD0Jpty_fVc6?TVoAGeDc2W3r22ng>`5#VwA@U5r&(Bt{?5Fr&w z3sMikF}LIo4~|&V6+w7N&=r6fV%EX%uS-1yJg_ikmlx`j0Dge}!>)pEwdNtRfXIUr zP(mftKp1d7wa*?v6j0AYaW}UUdc{?0FkJ(j%ueH|( zNyYjcVpYWLetOW(aGU`e^$pA#YqAf5li*u{;Sd&RZ88w-z5AdCP4cZD;1d7!eXskS zm*pXvRAd~kO2Sv)&tO}eh+QA=r@_D!R+fh(NbwI6s*wstgQ>S8q38btgVi`7qiFv# z4W?~JhS9d8tO@-Cf>~anOu7AMn(mB>m;BEZx|9y^B*R8CYWz3M7&g<3_T$Gt)8Gwv zbl8SF1`pdmAlUmfj3)*6Qy5^<_YdZvTjhn)s)5L$#+hJLn7<0h=3)21IlO|CDyo5O zA3$~t*bLBg9S|k71b93IL)8G;KOi^*KvGaAO%NE?^aAAc0OQpJ!8ZsC(FD1{K`_Ku zAnS(_a4InPDE9s|0G2FJXB`kcg+p7+!3;0}B=tbLq6^A`pC}Ya*k*8z4h%po4@vi4 zFzm<#uGU%!l? zzHdM(P~$={F%)GN>jd!SWxK$?kEl< za*vC>-$Qc+7z@01l6I85c>AQsG|c77vDWUS2818STIWqbG^b_=EPcNobtuK@>*}&=S}*Vg z&FZ`S1N*aMocBZw@$5~9J>PBFe}phNX&Va{40)dfUX;8mD*SN%?4?EKTbazRb>~Eu z>FT*Ts%M>qeX)f`2?gi2&tEt=oEc8Jzdq{I3=|{j#bz@rbVd%d$goDHWUF;6^cJQe zZ+|AR=CQbmY(UuE?2HW28_)hDB%6zds6ew9*TmVtsnT}VCg^Q2G=X1f8xXD?eog2Z)`2!|`G5 zWgx8wCUo@wg&=^2RD;Q2jz2-<4_F}W{MRz*MKzchHd6&^gKG!_)aQ7}G(eOvK=Jr6 zv7pzr4_OHYSOxPTKSjr2azSrvfc*Qc1EghtAK6f#$y7#`1O`ACSbaZ$cNCC6-i7^0%TcW6_9@6SW4((Js2C> zrHI`(OP1XKv^0AZo*cW*ywQm;Ix5` zn2Ye)zsc~SSB>CDum&eg6%bq~K$Z<3{D;D+35*JzX#%)meZ-W+_&>UpHiI#s8qHu7 zXuKch1sn+|C=CVR6tF#i%nTej3@}*$d;rgRz@90gAuV7Mm_saP4Knf*z$xy_z;X+i z1^O0>8Fdf2&-QQ-1570W(**+#1NcZo@6s_1;4?Tg+BPsBtl~SS+C!^wZ+5720VW|- z`v>Oq{cd5r!0h4V;7JQEJ-HnWhQ?L`yS+a>pgR1^)&Lv?1$O|ujjzJAf3V$yuXTXw zVb2;dksllch!((+I>6M><$L0+X3Rax`waq@3pgiisB|ZgRtFa_v(exihbMMGG#r5r zP3;6$HLYXT5k4HqeKt-1iy86n<1vK~aO?pO0l|b=3{W`ShY|}1`iv6mpV)bT z!vMI%L(OZV!g{DuH&j^J54i%UU<^=adVuX94HgKVHRhJ!5L6fvEf&z9-Pa(X=E7kZ zFi|=z{D&9@bOdVTJr=k=GQfryuu>i}2|T2MDJC?T1q%yK0e1&DXln>e13P2Ey0-g2 z2#sMdP41I8EDiV}J_sbjCj39e@c!xtbtb~5fpxEAJ(Odp<0h6WoEbd)c}BtPP^>M$ z3iql3jw=V%7zGnR9k#Ge?m<9npb9PB#=^x1CjZlrm_uE*v7SPoi~&uN@D3K{!{&fA z2j_qZ9T)>+VEy}lBe-X7XbcvD(oTX&p_1cZ!uuxX;$IRB?*GD!_ps6*m;h}Q(D#mm zxuIMWK+d)~c(4oX{Q*|rL%!^%1H_b00U03t_k-@Rq~BO~56gj07g#<8mV+UkVmVU4 zcLopC`alQtb3#x!j0zuH>;VQaehTHD0i*q+I?$#(#35iuHfYKW7&o33 zn;FJKh)s?N?}P5Og#pNK@F@%kfnhi=z;tp@+Bq;jl$#G5UYhP3bf9IT#^#2m&Vh+w zd5^Hy;rjvZ2yjin&?9PW+9~0&q;&DI2!OgHC{V@xn*&qzYJ! z5H`bso%s+3Kr&N@t2x4hjryP_JeS>*L7n-qsiB;F*biO`T#JNY0EqFy7l3jlbWg$b ze@qr6h+QQJWIKAS;;BLP>2v!;MHZv!@Ht%iZ(Xo1d;nNR2I{;I#(@s$0|XE=FgmnA4?GG-0(OS$i1iNzAsi0hn6n;O z0J?ktv=Xug;OYlE1O5XzsS_9vT5<#wDGg&_+xM;pgci-ifdTRq?vW(WaHj|4{hbL8 zqJSxzf*UBVh$PP?{Ws=XjeS5VkKjLSo-j49qh0Hwo zyZcLsN*&c{0y>nmI#6yd1Qys%Ab8#G1ch>7;t7GEAqlHI0I9rZ= zd(Zk1#hvNevM}djsx4;xJsO(5(F?Ee??`k}5@i;v^Q(|tg;zhB6Lwh;qNiEmxtGmE zoc21TKp3F<=ZSH>4z#8P3m6~ezs8!hm$Js<>27W+yjXknsli|udQmhsvzOE$0b#D5 zVsJPPl=cxuinit!_A&o%pB|@BGR0T7A3qabC)h7M5^IX!dh+I*z|Vf+EY*xn3T$_F zu~!;=j+6&$S!H>l%yAJOKA}?#q}vE8s7=VvvuPV6>N}Y~s|aw(Xc3q?PITsM6vzgi zQnh3q=h-JNfG9Hg62MxU<1LgCw2((58mie+M7~-knQL7VQ6V442ACn4hXj7n@_8>m zv(#|y;0aYOj=!W}iv8Ims#7QM%jz@V8gX}fJ$j2RC zX^p7&oAM%zvTQD+3nB(C%AJ0mPeq@^nT!>!W)GVa&thA2sOBzz{(ee=$|MA-Z5Ui2 zVn%1n(wq2yg?tG(RqOZvaf}Ds6p}d=DRZMCQtF0`6@^GMiAqH`l1jr>5#>!0QlS)) zNNJu#ibf)eP-Z1b@>}oT+hOy4{{M3yPsbWQYrX58_x`xPuV;oiz4G4vuKBrI^Yh?! zA&d9*mEO)a)4BgQu)4h8X!o;_qO~?CkB@asT1yCxI-XdO8@BgAL2izKc&?*CNyeR93C^8M z0`o0X7L^2j2~7w%shWQD+WG}qtY2#L_m>|zQ@N+5K};*a@^mrJ^~UpC=5O}d+{mY< zJNEFeCoQM-Dx4Q+hwVTAAcg;IvYqEAxzsa>A)AEXzN^*G-lX~Fx}iq3L>+%@z?5B` z=9zK4%E^VEP4h*&*UT|{ydvbWVR3aHyC}&t`*ZfoX5XW{b)4}hYV(pC+o#{RTi556 z+^S&rcMWfReFgEvp?Sq3nS*f`YK00KQ-iBE^lvWKxT|gPUPulLO#iR>MfG=_;Kt7JAI!1ys$-~H!pFzR@}}p+7{kZwC>(v`?EJ= z|GQz6ay86meX4%MjqXR=<5J}{=c6*njV=I(=~+TfRR@_K1|jMx&ygamvXO4?|KPC7Lwkte@#q->WLzn=*Fc zp=N<&4_u>pm+r`a^*b(C>}!|N!{(pvx|b_s4HDh2d&nLA5@v#4ksJ*ccSD+HteKbzrZ9mrj0p-OS{&QY6oJ+VuR#jF0z{%Eo@TI+1U#uy2a5 zQvGMA$6ta@Jy3b`oHPB(zs5HYS^SypkhDj$)g&)|QvaqtYmVnZ0j~=Y1&N2v{t3<4 zv(H>sw$*!6SizW(-wU7LZ%np#O6FHyFqPvzTT5Z zg_9+e*GxBDCp|j3Q@dH}Kjkkh~@Z8zu`$P6wiE)%`w8^rRoiHbf0i(3YZL1t1CqrDweRxaCvD9j7KGca}Kk>;ajz^SqYnSsdt!$KDhlnj&m9!u zk+zfYdk|sS=pB5ZXX*j5sj}wd6$Rzb_Xx|C8CShe@}0^KI{n4d>|B7w14SvKbalwL zPdsgZzB*^}m`EhCOZfUqDi6yGNp{sml!{p%e7$;}n?n)DWo`HVWxvJiLU`4lK6QT( zDNz@xIy<}CG&|0zKXu#hx9`;3ZvIUfU3O=WU-9Qy53}sJJN*sO)?IyV{mM}i=L)Uz zcqXiW`fJqa>0MI{-nNKazQ68yZ^ECa9y>ONOgOSuG&gAJrlrqk@INT2jZp9{F&DbC zG0%{bbdopA>C_3)=AiO7U;h2igJ#M5iwp_ENImq38N!za_SBdzh&;Mo}5)fu7eV#Hy$n4Ec^(*`}Qd+uQyw}2& z6!g69QbQ7zyIX!f_%OZoW8d}NmJP=uo~+Hco1pH=rz11gw%jk^(4Iscld@&KN$YgF z;=|@h%~$TpJ{)Ntv}O6<0EdQ`;VQ9;j)z3T{|PoKKPi86rAFE<4TtPoBGv1ZFX%jb zR&r?3rs?&La?!D8pV7GM@MJ22k7sR9s-v@>~Fe?^1Q+CVn%})O(9--F) zAGk-v6iy84IlnpA-Q-(7v1rd00ROmE)7fY53C-#I{-{cLVpR5)lHk;B9Tq%?FFVV|p3r!u z*}de^{jauZu?>BRA%)MD?=SYyFIRdZVqf|pzBn@{rMv34g`RP#i2c5(!s2mudO2%? zJ{7#!pLfPk_IsR2kF9`hq4l~kMfFE_pe7U4Jkxo`c^wDs^|!Cdd&j#Kot0axd2fEG zSnaAnKlb(p+qH{&757>Q8Q;it6!CHeO(SKLGf}RAh1!xx8yQ{?f9b zLrG)gT0c}v zEcPtu?#j9pBBkH1E%@+p*v^ngZ^|xPR$d>oMct0*?~1pDlb<4zDlI#-2JQxwfpK-0-n>_uINJSEU0L4p}}*cT00fu^THG7xL$( zQmfrrg_Lkf{^JiPW<@N_4NKp2EoJ4}$}b|3m4&|}+RLP-@~wFMjo7>En^%G9#A`y) zosl{@V%x7Ac=@!d@aJnnz1Z)=Vh40Iu~y$K=ctrT&7>=n$JM<)Rg_w=R$Fv}wp6)z zP`2WqdUM}1|5@An{mXxD$p$a8e#gggDrF(ZMEHq>$G>7vWwuwCCZ9Q{X6mfE!QWL) z(`Bu5QOC--nDOo>^0jP~eVyGVv8O+<6MJi1XD_8ymUSyHG&i;?V%8tG`sx{LeuZV- zdi@FAZ9Sm0>-Ps+@9CF~tt6I5TUffg#jO~XJ6cNf{hX_%e>=m)j{lK!6(~69qSJjk z>)`%X;5Kh+Xq9;0!Pa_KrpkizAzPhlG@5=)-jwQhQ^D56+17X(-yzn5*SGe3IQU|N z_PeE8!IKUpoRJ&n`{HB4zuQ*USnTKy!H@Dk2=V>M5M{B7qlP}p$M>m-y~I@NX7zX< zaZ*GKWUhn!3*-|?Xz>E`0-cT|6y$ns;tVvjK!Cb6G8_0o)hUj7J2MxPB6>7W1?@gMO0eSu{bA z!7HL6c*js(w5f#(T^KGd+FT4~xi0}?A{~?aQqk4!d`@)(ypWkE$YL3BW8z$UU!r@* z3F;-b=m|iudIboY(I;L@jX-HLHwg%XS30tQGJ}CK?+p$c9r0EY6`mkO$@&a^r$3!x zty>P(Gm&--U3QZgi0fF1Ay8-xAw#x077L$!jCN>K(AQbNb)(P!tB&$qd|XHS8t_s? z%816-MgVmX3&)}j1Hyl?@KFsajU{v^4;^H^msBqNht6XqYgxvprT~D*U~`99$$;`O`><#sg02;(R zIvh((AWOMD)iTBfQgMf&#x#{~z^2r5e6mGtU!j@0j9G){LgXn((Fi%5BJ?m#0X3YW zbMFNOo39z1OeS-urVyT*u38Isu-YK8myo0lBSBYeZ;W{iB&iBjoyN6n0iivzileK( zEDnVFtsrzp&j*B+AmrVy#e?pp@_=nTAw_n!M?8oVQ%JFs_VC`g@U&-VODc;MbCJbb z!bs%(eKv&zk0fYo4;+VAdYE=>XHcR70>S^NJa3B5G7uB zmKFz}1#y}s2aAo+o3n&28Nc-6q(Zy@In2jdqsU~!7_&8~H4~3<_Q!=-N-Y*2l3_$m zM-j=yEHw2TF_}zNy~|a>5dfdTV4cnAsbpIYGGD~e#heahvd>?hgPc~`lVW28j1GRJ zbDl2rtn;8#btHABlLvMTYFM^s^?vLI?6(ldkr87DVR0h2uFI%lO3N~CSe(dc)cU|SEiwhY^qp0q8{ShUFGY%fAMvsJV>Vl_v3Sn=mw z-my9iz|>&T+Q8Z;g1ztBPHM;^YXd5mMbUs$89OSBG$vl#xmnKW#Qb1kJ8HxK0nhK)=VDO;4 zEA*zg>Q!Cl4={cOjus53rbAqOVFXki88j(_PS`L5;yZ*7(YItkevw$e6BhRbtWO!H zpGzj0G0)er6XHCCcm|Ak!ACIOY|_g8&BRn2u(%6Nnar?yaTH}{5{BdHyr|Gf(0RuF@y9Ll^($f!Wxu2Ki&c;-V` zw-KXQ3prdRc4rf!Dmcba#)~o6 z7RS&*4%zVTGw3u&9DN0IG9{zUO$HsXnTt!ZSaTWXv*Ji-3*>T*Zn4)jXmP?>s>SI1 zHDWYbh&x!^nM{jqatOf@)sV~qld0zhO*F{h+<5S19QPO8F2NMC=f{5I@<0UR~kp3m0 zVi#YhUpAFr2eB0;Rz*PI5gyS%y<9N4n@)PFlB6EAJr^b|9t!_qoqpz^PFQTn`376m zV2gku796CJM~|6B^RB;SLGHzTEY=)G{({+qkh)|&(-$^xPlL8v!&EWijLg^sP(p#3J6Pbq_hW1ciK_X z5_@3<$^mDzsQ^?TS5qoXV$##u8n|`n`4YEt_L|v`I$?2;oxozvXQWZQhU+Rvp+Z+6 z%iDlzu#r;5+@>!qSFqI4my!bGX}l_aA^b#q>}@>5x4;kc&h#sQG6m|B3~Bmip^nlx zxEIH33{N95kZVe^q*Tau_uhekGeRlV07XiIgqrI1_vk?}7V8%*VwQ{+?b^e&*C0_U z?gC2iF-rO}N>~u-43vA;Jy7vQQ7T|ksgZoB3@nw2p`?HA5u;UsN9F1?bAhG>Bp(J> z;RTF{owVt^lfv>;4KeTP@O?l@PoPkMYbA(k?n5tQRU1}WB~q&RB%qm*0{~av^8u*Z zQ?Y99h_1x5L~}}|e;mw`S+H2aprSu`-BG%TyE)s^8^{FuV0OTy^<1OvUVLt%i$ zCq*7vhF-d$l=KJpOeDhrxP2;vIW>Qy!7^V1G)|%ff3a>F6pLe$pZbVnCO$<_A6$&q z=3x#psQ3-t@0D)=aaGF*gO9BuvW#hu!`puZWBv94W6U5deoL43!&}hpAEHx53*QkE zWZE9@KzFcn&`*~fT`dZ#nO`8yOqeLls(6SY{Td)qkt9Xn9Lgd4_jDYO_b^cJiPQS` z^f?b_#-1;UrPDA2Q9^Ymj1SwS(hhtomV@cd++j}BrlJ)Isa`ULFKnIBlyrcTNb;}HJ*?U(&s0fj z>kd64;gNl4p+%!LWPS;zv-dz>!lXVI+C1DDWmgj8$ud_|;%pR$fE!iOYm9vrsA844 zsZzar7A@O?p zz|Acld>MQ&fLAEF8R%*^VZc~$@C5{q81`C9iTR}xjNymR`|!W*U6T%Y+R!v+vmOq* z$sv~pII>|x-v$_iO(?0J0H(DO{GpV@59nu%WLVW0j#s1AfW&-m=V(Y~N0L~PT_Yh* zB6&6fQa0jgBy3SpBP^#F{sRcvO2%A!l42@`Wa-u>JCI*9oxkXtb$u?ph%Jcv>FV2x%M)0KJ*?>aZ2pgo^NpG>P?I3(j34s+X zMOupZu5`S}ic zGCJsd?v|;1KRE4%7~~@L8j?%HQAKnjfye SEY^4UuW&t!<$8pG-~JD@vb#+H From d10b0fa823cc32e46be860990219eb4e671b2636 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 12:20:29 +0300 Subject: [PATCH 068/201] fix(hidden_subtree): builtin templates have #excludeFromNoteMap (closes #7187) --- apps/server/src/services/hidden_subtree.spec.ts | 17 +++++++++++++++++ apps/server/src/services/hidden_subtree.ts | 11 ++++++++++- apps/server/src/test/becca_easy_mocking.ts | 14 ++++++++++++++ packages/commons/src/lib/hidden_subtree.ts | 5 +++++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/apps/server/src/services/hidden_subtree.spec.ts b/apps/server/src/services/hidden_subtree.spec.ts index 811aebe9b4..7d9cb5a12c 100644 --- a/apps/server/src/services/hidden_subtree.spec.ts +++ b/apps/server/src/services/hidden_subtree.spec.ts @@ -7,6 +7,7 @@ import becca from "../becca/becca.js"; import { LOCALES } from "@triliumnext/commons"; import { changeLanguage } from "./i18n.js"; import { deferred } from "./utils.js"; +import { buildNote } from "../test/becca_easy_mocking.js"; describe("Hidden Subtree", () => { describe("Launcher movement persistence", () => { @@ -119,4 +120,20 @@ describe("Hidden Subtree", () => { await done; }); }); + + describe("Hidden subtree", () => { + beforeAll(async () => { + sql_init.initializeDb(); + await sql_init.dbReady; + cls.init(() => hiddenSubtreeService.checkHiddenSubtree()); + }); + + it("cleans up exclude from note map at the root", async () => { + const hiddenSubtree = becca.getNoteOrThrow("_hidden"); + cls.init(() => hiddenSubtree.addLabel("excludeFromNoteMap")); + expect(hiddenSubtree.hasLabel("excludeFromNoteMap")).toBeTruthy(); + cls.init(() => hiddenSubtreeService.checkHiddenSubtree()); + expect(hiddenSubtree.hasLabel("excludeFromNoteMap")).toBeFalsy(); + }); + }); }); diff --git a/apps/server/src/services/hidden_subtree.ts b/apps/server/src/services/hidden_subtree.ts index 0fbe764971..5d8854aaa5 100644 --- a/apps/server/src/services/hidden_subtree.ts +++ b/apps/server/src/services/hidden_subtree.ts @@ -40,8 +40,8 @@ function buildHiddenSubtreeDefinition(helpSubtree: HiddenSubtreeItem[]): HiddenS // we want to keep the hidden subtree always last, otherwise there will be problems with e.g., keyboard navigation // over tree when it's in the middle notePosition: 999_999_999, + enforceAttributes: true, attributes: [ - { type: "label", name: "excludeFromNoteMap", isInheritable: true }, { type: "label", name: "docName", value: "hidden" } ], children: [ @@ -441,6 +441,15 @@ function checkHiddenSubtreeRecursively(parentNoteId: string, item: HiddenSubtree } } + // Enforce attribute structure if needed. + if (item.enforceAttributes) { + for (const attribute of note.getAttributes()) { + if (!attrs.some(a => a.name === attribute.name)) { + attribute.markAsDeleted(); + } + } + } + for (const attr of attrs) { const attrId = note.noteId + "_" + attr.type.charAt(0) + attr.name; diff --git a/apps/server/src/test/becca_easy_mocking.ts b/apps/server/src/test/becca_easy_mocking.ts index 6df198a5a4..c3d6b62933 100644 --- a/apps/server/src/test/becca_easy_mocking.ts +++ b/apps/server/src/test/becca_easy_mocking.ts @@ -1,6 +1,7 @@ import utils from "../services/utils.js"; import BNote from "../becca/entities/bnote.js"; import BAttribute from "../becca/entities/battribute.js"; +import BBranch from "../becca/entities/bbranch.js"; type AttributeDefinitions = { [key in `#${string}`]: string; }; type RelationDefinitions = { [key in `~${string}`]: string; }; @@ -9,6 +10,7 @@ interface NoteDefinition extends AttributeDefinitions, RelationDefinitions { id?: string | undefined; title?: string; content?: string; + children?: NoteDefinition[]; } /** @@ -51,6 +53,18 @@ export function buildNote(noteDef: NoteDefinition) { note.getContent = () => noteDef.content!; } + // Handle children + if (noteDef.children) { + for (const childDef of noteDef.children) { + const childNote = buildNote(childDef); + new BBranch({ + noteId: childNote.noteId, + parentNoteId: note.noteId, + branchId: `${note.noteId}_${childNote.noteId}` + }); + } + } + // Handle labels and relations. let position = 0; for (const [ key, value ] of Object.entries(noteDef)) { diff --git a/packages/commons/src/lib/hidden_subtree.ts b/packages/commons/src/lib/hidden_subtree.ts index e33276da97..c86dd6b899 100644 --- a/packages/commons/src/lib/hidden_subtree.ts +++ b/packages/commons/src/lib/hidden_subtree.ts @@ -49,4 +49,9 @@ export interface HiddenSubtreeItem { * the user moves it around. */ enforceBranches?: boolean; + /** + * If set to true, then the attributes of this note will be checked. Any owned attribute that does not match the + * definitions will be removed. + */ + enforceAttributes?: boolean; } From d1367286c9233bbc2667301a61499ebfcc42ba4e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 14:20:06 +0300 Subject: [PATCH 069/201] test(server): fix unrejected failure in test --- .../src/services/hidden_subtree.spec.ts | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/apps/server/src/services/hidden_subtree.spec.ts b/apps/server/src/services/hidden_subtree.spec.ts index 7d9cb5a12c..86b5fc344b 100644 --- a/apps/server/src/services/hidden_subtree.spec.ts +++ b/apps/server/src/services/hidden_subtree.spec.ts @@ -7,16 +7,15 @@ import becca from "../becca/becca.js"; import { LOCALES } from "@triliumnext/commons"; import { changeLanguage } from "./i18n.js"; import { deferred } from "./utils.js"; -import { buildNote } from "../test/becca_easy_mocking.js"; describe("Hidden Subtree", () => { - describe("Launcher movement persistence", () => { - beforeAll(async () => { - sql_init.initializeDb(); - await sql_init.dbReady; - cls.init(() => hiddenSubtreeService.checkHiddenSubtree()); - }); + beforeAll(async () => { + sql_init.initializeDb(); + await sql_init.dbReady; + cls.init(() => hiddenSubtreeService.checkHiddenSubtree()); + }); + describe("Launcher movement persistence", () => { it("should persist launcher movement between visible and available after integrity check", () => { // Move backend log to visible launchers. const backendLogBranch = becca.getBranchFromChildAndParent("_lbBackendLog", "_lbAvailableLaunchers"); @@ -122,12 +121,6 @@ describe("Hidden Subtree", () => { }); describe("Hidden subtree", () => { - beforeAll(async () => { - sql_init.initializeDb(); - await sql_init.dbReady; - cls.init(() => hiddenSubtreeService.checkHiddenSubtree()); - }); - it("cleans up exclude from note map at the root", async () => { const hiddenSubtree = becca.getNoteOrThrow("_hidden"); cls.init(() => hiddenSubtree.addLabel("excludeFromNoteMap")); From fa436c7ce67e20afaad26a8b87a2ac9175ca618e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 14:25:58 +0300 Subject: [PATCH 070/201] test(server): switch to vmForks due to better error reporting --- apps/server/vite.config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server/vite.config.mts b/apps/server/vite.config.mts index e9d88fcfa7..991d370bc5 100644 --- a/apps/server/vite.config.mts +++ b/apps/server/vite.config.mts @@ -27,6 +27,6 @@ export default defineConfig(() => ({ provider: 'v8' as const, reporter: [ "text", "html" ] }, - pool: "threads" + pool: "vmForks" }, })); From c671f91bcacdc2a98435406f373b8817a7528446 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 14:27:05 +0300 Subject: [PATCH 071/201] test(server): fix test failures --- apps/server/src/routes/api/llm.spec.ts | 113 +++++++++--------- .../llm/providers/stream_handler.spec.ts | 18 +-- 2 files changed, 66 insertions(+), 65 deletions(-) diff --git a/apps/server/src/routes/api/llm.spec.ts b/apps/server/src/routes/api/llm.spec.ts index 69ea34ab0f..81bd9e039f 100644 --- a/apps/server/src/routes/api/llm.spec.ts +++ b/apps/server/src/routes/api/llm.spec.ts @@ -16,7 +16,8 @@ vi.mock("../../services/ws.js", () => ({ default: { sendMessageToAllClients: vi.fn(), sendTransactionEntityChangesToAllClients: vi.fn(), - setLastSyncedPush: vi.fn() + setLastSyncedPush: vi.fn(), + syncFailed() {} } })); @@ -81,7 +82,7 @@ async function loginWithSession(app: Application) { .post("/login") .send({ password: "demo1234" }) .expect(302); - + const setCookieHeader = response.headers["set-cookie"][0]; expect(setCookieHeader).toBeTruthy(); return setCookieHeader; @@ -91,14 +92,14 @@ async function loginWithSession(app: Application) { async function getCsrfToken(app: Application, sessionCookie: string) { const response = await supertest(app) .get("/") - + .expect(200); - + const csrfTokenMatch = response.text.match(/csrfToken: '([^']+)'/); if (csrfTokenMatch) { return csrfTokenMatch[1]; } - + throw new Error("CSRF token not found in response"); } @@ -154,7 +155,7 @@ describe("LLM API Tests", () => { expect(response.body).toHaveProperty('sessions'); expect(Array.isArray(response.body.sessions)).toBe(true); - + if (response.body.sessions.length > 0) { expect(response.body.sessions[0]).toMatchObject({ id: expect.any(String), @@ -171,18 +172,18 @@ describe("LLM API Tests", () => { // Create a chat first if we don't have one const createResponse = await supertest(app) .post("/api/llm/chat") - + .send({ title: "Test Retrieval Chat" }) .expect(200); - + createdChatId = createResponse.body.id; } const response = await supertest(app) .get(`/api/llm/chat/${createdChatId}`) - + .expect(200); expect(response.body).toMatchObject({ @@ -202,7 +203,7 @@ describe("LLM API Tests", () => { title: "Test Update Chat" }) .expect(200); - + createdChatId = createResponse.body.id; } @@ -224,7 +225,7 @@ describe("LLM API Tests", () => { it("should return 404 for non-existent chat session", async () => { await supertest(app) .get("/api/llm/chat/nonexistent-chat-id") - + .expect(404); }); }); @@ -240,7 +241,7 @@ describe("LLM API Tests", () => { title: "Message Test Chat" }) .expect(200); - + testChatId = createResponse.body.id; }); @@ -260,10 +261,10 @@ describe("LLM API Tests", () => { // The response depends on whether AI is actually configured // We should get either a successful response or an error about AI not being configured expect([200, 400, 500]).toContain(response.status); - + // All responses should have some body expect(response.body).toBeDefined(); - + // Either success with response or error if (response.body.response) { expect(response.body).toMatchObject({ @@ -310,10 +311,10 @@ describe("LLM API Tests", () => { beforeEach(async () => { // Reset all mocks vi.clearAllMocks(); - + // Import options service to access mock const options = (await import("../../services/options.js")).default; - + // Setup default mock behaviors (options.getOptionBool as any).mockReturnValue(true); // AI enabled mockAiServiceManager.getOrCreateAnyService.mockResolvedValue({}); @@ -321,7 +322,7 @@ describe("LLM API Tests", () => { model: 'test-model', provider: 'test-provider' }); - + // Create a fresh chat for each test const mockChat = { id: 'streaming-test-chat', @@ -331,15 +332,15 @@ describe("LLM API Tests", () => { }; mockChatStorage.createChat.mockResolvedValue(mockChat); mockChatStorage.getChat.mockResolvedValue(mockChat); - + const createResponse = await supertest(app) .post("/api/llm/chat") - + .send({ title: "Streaming Test Chat" }) .expect(200); - + testChatId = createResponse.body.id; }); @@ -358,7 +359,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "Tell me a short story", useAdvancedContext: false, @@ -372,17 +373,17 @@ describe("LLM API Tests", () => { success: true, message: "Streaming initiated successfully" }); - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify WebSocket messages were sent expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', chatNoteId: testChatId, thinking: undefined }); - + // Verify streaming chunks were sent expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', @@ -390,7 +391,7 @@ describe("LLM API Tests", () => { content: 'Hello', done: false }); - + expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', chatNoteId: testChatId, @@ -402,7 +403,7 @@ describe("LLM API Tests", () => { it("should handle empty content for streaming", async () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "", useAdvancedContext: false, @@ -419,7 +420,7 @@ describe("LLM API Tests", () => { it("should handle whitespace-only content for streaming", async () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: " \n\t ", useAdvancedContext: false, @@ -436,7 +437,7 @@ describe("LLM API Tests", () => { it("should handle invalid chat ID for streaming", async () => { const response = await supertest(app) .post("/api/llm/chat/invalid-chat-id/messages/stream") - + .send({ content: "Hello", useAdvancedContext: false, @@ -467,7 +468,7 @@ describe("LLM API Tests", () => { // Verify mention content is included expect(input.query).toContain('Tell me about this note'); expect(input.query).toContain('Root note content for testing'); - + const callback = input.streamCallback; await callback('The root note contains', false, {}); await callback(' important information.', true, {}); @@ -475,7 +476,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "Tell me about this note", useAdvancedContext: true, @@ -493,10 +494,10 @@ describe("LLM API Tests", () => { success: true, message: "Streaming initiated successfully" }); - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify thinking message was sent expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', @@ -517,7 +518,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "What is the meaning of life?", useAdvancedContext: false, @@ -525,10 +526,10 @@ describe("LLM API Tests", () => { }); expect(response.status).toBe(200); - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify thinking messages expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', @@ -536,7 +537,7 @@ describe("LLM API Tests", () => { thinking: 'Analyzing the question...', done: false }); - + expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', chatNoteId: testChatId, @@ -564,7 +565,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "What is 2 + 2?", useAdvancedContext: false, @@ -572,10 +573,10 @@ describe("LLM API Tests", () => { }); expect(response.status).toBe(200); - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify tool execution message expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', @@ -597,7 +598,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "This will fail", useAdvancedContext: false, @@ -605,10 +606,10 @@ describe("LLM API Tests", () => { }); expect(response.status).toBe(200); // Still returns 200 - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify error message was sent via WebSocket expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', @@ -625,7 +626,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "Hello AI", useAdvancedContext: false, @@ -633,10 +634,10 @@ describe("LLM API Tests", () => { }); expect(response.status).toBe(200); - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify error message about AI being disabled expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({ type: 'llm-stream', @@ -655,7 +656,7 @@ describe("LLM API Tests", () => { await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "Save this response", useAdvancedContext: false, @@ -680,10 +681,10 @@ describe("LLM API Tests", () => { }); // Send multiple requests rapidly - const promises = Array.from({ length: 3 }, (_, i) => + const promises = Array.from({ length: 3 }, (_, i) => supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: `Request ${i + 1}`, useAdvancedContext: false, @@ -692,7 +693,7 @@ describe("LLM API Tests", () => { ); const responses = await Promise.all(promises); - + // All should succeed responses.forEach(response => { expect(response.status).toBe(200); @@ -716,7 +717,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post(`/api/llm/chat/${testChatId}/messages/stream`) - + .send({ content: "Generate large response", useAdvancedContext: false, @@ -724,10 +725,10 @@ describe("LLM API Tests", () => { }); expect(response.status).toBe(200); - + // Import ws service to access mock const ws = (await import("../../services/ws.js")).default; - + // Verify multiple chunks were sent const streamCalls = (ws.sendMessageToAllClients as any).mock.calls.filter( call => call[0].type === 'llm-stream' && call[0].content @@ -741,7 +742,7 @@ describe("LLM API Tests", () => { const response = await supertest(app) .post("/api/llm/chat") .set('Content-Type', 'application/json') - + .send('{ invalid json }'); expect([400, 500]).toContain(response.status); @@ -750,7 +751,7 @@ describe("LLM API Tests", () => { it("should handle missing required fields", async () => { const response = await supertest(app) .post("/api/llm/chat") - + .send({ // Missing required fields }); @@ -762,7 +763,7 @@ describe("LLM API Tests", () => { it("should handle invalid parameter types", async () => { const response = await supertest(app) .post("/api/llm/chat") - + .send({ title: "Test Chat", temperature: "invalid", // Should be number @@ -786,4 +787,4 @@ describe("LLM API Tests", () => { } } }); -}); \ No newline at end of file +}); diff --git a/apps/server/src/services/llm/providers/stream_handler.spec.ts b/apps/server/src/services/llm/providers/stream_handler.spec.ts index a3ed2da15b..550a69ab2a 100644 --- a/apps/server/src/services/llm/providers/stream_handler.spec.ts +++ b/apps/server/src/services/llm/providers/stream_handler.spec.ts @@ -1,6 +1,6 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; import { StreamProcessor, createStreamHandler, processProviderStream, extractStreamStats, performProviderHealthCheck } from './stream_handler.js'; -import type { StreamProcessingOptions, StreamChunk, ProviderStreamOptions } from './stream_handler.js'; +import type { StreamProcessingOptions, StreamChunk } from './stream_handler.js'; // Mock the log module vi.mock('../../log.js', () => ({ @@ -86,7 +86,7 @@ describe('StreamProcessor', () => { it('should handle callback errors gracefully', async () => { const errorCallback = vi.fn().mockRejectedValue(new Error('Callback error')); - + // Should not throw await expect(StreamProcessor.sendChunkToCallback(errorCallback, 'test', false, {}, 1)) .resolves.toBeUndefined(); @@ -127,7 +127,7 @@ describe('StreamProcessor', () => { it('should handle final callback errors gracefully', async () => { const errorCallback = vi.fn().mockRejectedValue(new Error('Final callback error')); - + await expect(StreamProcessor.sendFinalCallback(errorCallback, 'test')) .resolves.toBeUndefined(); }); @@ -297,8 +297,8 @@ describe('processProviderStream', () => { it('should handle tool calls in stream', async () => { const chunks = [ { message: { content: 'Using tool...' } }, - { - message: { + { + message: { tool_calls: [ { id: 'call_1', function: { name: 'calculator', arguments: '{"x": 5}' } } ] @@ -573,8 +573,8 @@ describe('Streaming edge cases and concurrency', () => { it('should handle mixed content and tool calls', async () => { const chunks = [ { message: { content: 'Let me calculate that...' } }, - { - message: { + { + message: { content: '', tool_calls: [{ id: '1', function: { name: 'calc' } }] } @@ -599,4 +599,4 @@ describe('Streaming edge cases and concurrency', () => { expect(result.completeText).toBe('Let me calculate that...The answer is 42.'); expect(result.toolCalls).toHaveLength(1); }); -}); \ No newline at end of file +}); From 831a184c2a547e8ad26d326bac812356c063eac3 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 15:34:58 +0300 Subject: [PATCH 072/201] test(server): try to use fake timers to avoid flaky test in the CI --- apps/server/src/share/routes.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/server/src/share/routes.spec.ts b/apps/server/src/share/routes.spec.ts index 987d1b12ab..e99ecdf701 100644 --- a/apps/server/src/share/routes.spec.ts +++ b/apps/server/src/share/routes.spec.ts @@ -9,6 +9,7 @@ describe("Share API test", () => { let cannotSetHeadersCount = 0; beforeAll(async () => { + vi.useFakeTimers(); const buildApp = (await import("../app.js")).default; app = await buildApp(); app.use((err: unknown, req: Request, res: Response, next: NextFunction) => { From 11914213887f94a0ff5e55fa3668af1e03266ece Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 18:27:13 +0300 Subject: [PATCH 073/201] fix(flake): bettersqlite3 dependency not build properly --- flake.nix | 2 +- scripts/electron-rebuild.mts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index 7920ec528a..00488214fc 100644 --- a/flake.nix +++ b/flake.nix @@ -200,7 +200,7 @@ # '/build/source/apps/desktop/node_modules/better-sqlite3/build/node_gyp_bins' preBuildCommands = '' export npm_config_nodedir=${electron.headers} - pnpm postinstall || true + pnpm postinstall ''; buildTask = "desktop:build"; mainProgram = "trilium"; diff --git a/scripts/electron-rebuild.mts b/scripts/electron-rebuild.mts index b2d41aa88a..5e343a97c0 100644 --- a/scripts/electron-rebuild.mts +++ b/scripts/electron-rebuild.mts @@ -23,7 +23,7 @@ function copyNativeDependencies(projectRoot: string) { cpSync(sourcePath, destPath, { recursive: true, dereference: true }); } -function rebuildNativeDependencies(projectRoot: string) { +async function rebuildNativeDependencies(projectRoot: string) { const electronVersion = determineElectronVersion(projectRoot); if (!electronVersion) { @@ -35,7 +35,7 @@ function rebuildNativeDependencies(projectRoot: string) { console.log(`Rebuilding ${projectRoot} with ${electronVersion} for ${targetArch}...`); const resolvedPath = resolve(projectRoot); - rebuild({ + await rebuild({ projectRootPath: resolvedPath, buildPath: resolvedPath, electronVersion, @@ -64,5 +64,5 @@ function determineElectronVersion(projectRoot: string) { for (const projectRoot of [ "apps/desktop", "apps/edit-docs" ]) { copyNativeDependencies(projectRoot); - rebuildNativeDependencies(projectRoot); + await rebuildNativeDependencies(projectRoot); } From 31c8e96d7076d310809bb11e2aca641567c68329 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 7 Oct 2025 18:38:13 +0300 Subject: [PATCH 074/201] chore(forge): set wayland socket for flatpak build --- apps/desktop/electron-forge/forge.config.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/desktop/electron-forge/forge.config.ts b/apps/desktop/electron-forge/forge.config.ts index 4b5dcde754..0b78b3e1f8 100644 --- a/apps/desktop/electron-forge/forge.config.ts +++ b/apps/desktop/electron-forge/forge.config.ts @@ -90,6 +90,10 @@ const config: ForgeConfig = { base: "org.electronjs.Electron2.BaseApp", baseVersion: "24.08", baseFlatpakref: "https://flathub.org/repo/flathub.flatpakrepo", + finishArgs: [ + "--socket=fallback-x11", + "--socket=wayland" + ], modules: [ { name: "zypak", From d662882c0344cd9899bfe6976a9d16cb5ce67933 Mon Sep 17 00:00:00 2001 From: Sarah Hussein Date: Tue, 7 Oct 2025 23:44:05 +0200 Subject: [PATCH 075/201] Translated using Weblate (Arabic) Currently translated at 1.0% (17 of 1605 strings) Translation: Trilium Notes/Client Translate-URL: https://hosted.weblate.org/projects/trilium/client/ar/ --- .../src/translations/ar/translation.json | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/apps/client/src/translations/ar/translation.json b/apps/client/src/translations/ar/translation.json index c1f2d658f3..647fd66979 100644 --- a/apps/client/src/translations/ar/translation.json +++ b/apps/client/src/translations/ar/translation.json @@ -1,5 +1,31 @@ { "about": { - "title": "حول تريليوم للملاحظات" + "title": "حول تريليوم للملاحظات", + "homepage": "الصفحة الرئيسية:", + "app_version": "نسخة التطبيق:", + "sync_version": "اصدار المزامنه:", + "build_date": "تاريخ الانشاء:", + "build_revision": "مراجعة الاصدار:", + "data_directory": "مجلد البيانات:" + }, + "toast": { + "critical-error": { + "title": "خطأ فادح" + } + }, + "add_link": { + "add_link": "أضافة رابط", + "note": "ملاحظة", + "search_note": "البحث عن الملاحظة بالاسم", + "link_title": "عنوان الرابط", + "button_add_link": "اضافة رابط" + }, + "branch_prefix": { + "edit_branch_prefix": "تعديل بادئة الفرع", + "prefix": "البادئة: ", + "save": "حفظ" + }, + "bulk_actions": { + "bulk_actions": "اجراءات جماعية" } } From 800c4dc012fa7e7b12cfc29643b5184565726bf8 Mon Sep 17 00:00:00 2001 From: Sarah Hussein Date: Tue, 7 Oct 2025 23:46:59 +0200 Subject: [PATCH 076/201] Translated using Weblate (Arabic) Currently translated at 4.9% (19 of 381 strings) Translation: Trilium Notes/Server Translate-URL: https://hosted.weblate.org/projects/trilium/server/ar/ --- .../src/assets/translations/ar/server.json | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/server/src/assets/translations/ar/server.json b/apps/server/src/assets/translations/ar/server.json index 0967ef424b..c7080eb216 100644 --- a/apps/server/src/assets/translations/ar/server.json +++ b/apps/server/src/assets/translations/ar/server.json @@ -1 +1,23 @@ -{} +{ + "keyboard_actions": { + "open-jump-to-note-dialog": "فتح مربع الحوار \"الانتقال الى الملاحظة\"", + "open-command-palette": "فتح لوحة الاوامر", + "quick-search": "تفعيل شريط البحث السريع", + "collapse-tree": "طي جميع الملاحظات", + "collapse-subtree": "طي الفروع التابعة للملاحظة الحالية", + "sort-child-notes": "فرز الملاحظات الفرعية", + "creating-and-moving-notes": "انشاء الملاحظات ونقلها", + "create-note-after": "انشاء ملاحظة بعد الملاحظة الحالية", + "create-note-into": "انشاء ملاحظة فرعية تابعة للملاحظة الحالية", + "delete-note": "حذف ملاحظة", + "move-note-up": "نقل الملاحظة للاعلى", + "move-note-down": "نثل الملاحظة للاسفل", + "clone-notes-to": "استنساخ الملاحظات المحددة", + "move-notes-to": "نقل الملاحظات للمحددة", + "note-clipboard": "حافظة الملاحظات", + "copy-notes-to-clipboard": "نسخ الملاحظات المحددة الى الحافظة", + "paste-notes-from-clipboard": "لصق الملاحظا من الحافظة الى الملاحظة الحالية", + "cut-notes-to-clipboard": "قص الملاحظات المحددة الى الحافظة", + "select-all-notes-in-parent": "تحديد جميع الملاحظات من مستوى الملاحظة الحالي" + } +} From 3225f4c8f5b6a142dda4bcd776a8cb1bc8179971 Mon Sep 17 00:00:00 2001 From: ssantos Date: Tue, 7 Oct 2025 18:09:17 +0200 Subject: [PATCH 077/201] Translated using Weblate (Portuguese) Currently translated at 97.3% (1563 of 1605 strings) Translation: Trilium Notes/Client Translate-URL: https://hosted.weblate.org/projects/trilium/client/pt/ --- .../src/translations/pt/translation.json | 2025 ++++++++++++++++- 1 file changed, 2023 insertions(+), 2 deletions(-) diff --git a/apps/client/src/translations/pt/translation.json b/apps/client/src/translations/pt/translation.json index 7266d8416e..b4b1366bb3 100644 --- a/apps/client/src/translations/pt/translation.json +++ b/apps/client/src/translations/pt/translation.json @@ -1,6 +1,2027 @@ { "about": { - "title": "Acerca de \"Trillium Notes\"", - "app_version": "Versão da aplicação:" + "title": "Sobre o Trilium Notes", + "app_version": "Versão da App:", + "homepage": "Página inicial:", + "db_version": "Versão da base de dados:", + "sync_version": "Versão de sincronização:", + "build_date": "Data de compilação:", + "build_revision": "Revisão da compilação:", + "data_directory": "Diretório de dados:" + }, + "toast": { + "critical-error": { + "title": "Erro crítico", + "message": "Ocorreu um erro crítico que impede a inicialização da aplicação cliente:\n\n{{message}}\n\nProvavelmente foi causado por um script que falhou de maneira inesperada. Tente iniciar a aplicação no modo seguro e resolva o problema." + }, + "widget-error": { + "title": "Falha ao inicializar um widget", + "message-custom": "O widget personalizado da nota com ID \"{{id}}\", intitulada \"{{title}}\", não pôde ser inicializado devido a:\n\n{{message}}", + "message-unknown": "Widget desconhecido não pôde ser inicializado devido a:\n\n{{message}}" + }, + "bundle-error": { + "title": "Falha para carregar o script customizado", + "message": "O script da nota com ID \"{{id}}\", intitulada \"{{title}}\", não pôde ser executado devido a:\n\n{{message}}" + } + }, + "add_link": { + "add_link": "Adicionar ligação", + "help_on_links": "Ajuda sobre ligações", + "note": "Nota", + "search_note": "pesquisar nota pelo nome", + "link_title_mirrors": "o título da ligação reflete o título atual da nota", + "link_title_arbitrary": "o título da ligação pode ser alterado livremente", + "link_title": "Titulo da ligação", + "button_add_link": "Adicionar ligação" + }, + "branch_prefix": { + "edit_branch_prefix": "Editar Prefixo do Branch", + "help_on_tree_prefix": "Ajuda sobre o prefixo da árvore de notas", + "prefix": "Prefixo: ", + "save": "Gravar", + "branch_prefix_saved": "O prefixo de ramificação foi gravado." + }, + "bulk_actions": { + "bulk_actions": "Ações em massa", + "affected_notes": "Notas Afetadas", + "include_descendants": "Incluir notas filhas das notas selecionadas", + "available_actions": "Ações disponíveis", + "chosen_actions": "Ações selecionadas", + "execute_bulk_actions": "Executar ações em massa", + "bulk_actions_executed": "As ações em massa foram concluídas com sucesso.", + "none_yet": "Nenhuma até agora... adicione uma ação a clicar numa das disponíveis acima.", + "labels": "Etiquetas", + "relations": "Relações", + "notes": "Notas", + "other": "Outros" + }, + "clone_to": { + "clone_notes_to": "Clonar notas para...", + "help_on_links": "Ajuda sobre ligações", + "notes_to_clone": "Notas para clonar", + "target_parent_note": "Nota pai-alvo", + "search_for_note_by_its_name": "pesquisar nota pelo nome", + "cloned_note_prefix_title": "A nota clonada aparecerá na árvore de notas com o prefixo fornecido", + "prefix_optional": "Prefixo (opcional)", + "clone_to_selected_note": "Clonar para a nota selecionada", + "no_path_to_clone_to": "Nenhum caminho para clonar.", + "note_cloned": "A nota \"{{clonedTitle}}\" foi clonada para \"{{targetTitle}}\"" + }, + "confirm": { + "confirmation": "Confirmação", + "cancel": "Cancelar", + "ok": "OK", + "are_you_sure_remove_note": "Tem certeza que deseja remover a nota '{{title}}' do mapa de relações? ", + "if_you_dont_check": "Se não marcar isto, a nota será removida apenas do mapa de relações.", + "also_delete_note": "Também apagar a nota" + }, + "delete_notes": { + "delete_notes_preview": "Apagar pré-visualização de notas", + "close": "Fechar", + "delete_all_clones_description": "Apagar também todos os clones (pode ser desfeito em alterações recentes)", + "erase_notes_description": "Apagar normal (suave) apenas marca as notas como apagadas, permitindo que sejam recuperadas (no diálogo de alterações recentes) num período. Se esta opção for marcada, as notas serão apagadas imediatamente e não será possível restaurá-las.", + "erase_notes_warning": "Apagar notas permanentemente (não pode ser desfeito), incluindo todos os clones. Isto forçará o recarregamento da aplicação.", + "notes_to_be_deleted": "As seguintes notas serão apagadas ({{notesCount}})", + "no_note_to_delete": "Nenhuma nota será apagada (apenas os clones).", + "broken_relations_to_be_deleted": "As seguintes relações serão quebradas e apagadas ({{ relationCount}})", + "cancel": "Cancelar", + "ok": "OK", + "deleted_relation_text": "A nota {{- note}} (a ser apagada) está referenciada pela relação {{- relation}} originada de {{- source}}." + }, + "export": { + "export_note_title": "Exportar nota", + "close": "Fechar", + "export_type_subtree": "Esta nota e todos os seus descendentes", + "format_html": "HTML – recomendado, pois mantém toda a formatação", + "format_html_zip": "HTML num ficheiro ZIP – recomendado, pois preserva toda a formatação.", + "format_markdown": "Markdown – isto preserva a maior parte da formatação.", + "format_opml": "OPML - formato de intercâmbio de outliners apenas para texto. Formatação, imagens e ficheiros não estão incluídos.", + "opml_version_1": "OPML v1.0 – apenas texto simples", + "opml_version_2": "OPML v2.0 – permite também HTML", + "export_type_single": "Apenas esta nota, sem os seus descendentes", + "export": "Exportar", + "choose_export_type": "Por favor, escolha primeiro o tipo de exportação", + "export_status": "Estado da exportação", + "export_in_progress": "Exportação em andamento: {{progressCount}}", + "export_finished_successfully": "Exportação concluída com sucesso.", + "format_pdf": "PDF – para impressão ou compartilhamento." + }, + "help": { + "title": "Folha de Dicas", + "noteNavigation": "Navegação de notas", + "goUpDown": "subir/descer na lista de notas", + "collapseExpand": "recolher/expandir nó", + "notSet": "não definido", + "goBackForwards": "voltar / avançar no histórico", + "showJumpToNoteDialog": "mostrar diálogo \"Ir para\"", + "scrollToActiveNote": "rolar até a nota atual", + "jumpToParentNote": "ir à nota pai", + "collapseWholeTree": "recolher toda a árvore de notas", + "collapseSubTree": "recolher subárvore", + "tabShortcuts": "Atalhos de guias", + "newTabNoteLink": "a ligação na nota abre essa nota numa guia nova", + "newTabWithActivationNoteLink": "a ligação na nota abre e ativa a nota numa guia nova", + "onlyInDesktop": "Apenas na versão para desktop (compilação Electron)", + "openEmptyTab": "abrir guia vazia", + "closeActiveTab": "fechar guia ativa", + "activateNextTab": "ativar próxima guia", + "activatePreviousTab": "ativar guia anterior", + "creatingNotes": "Criar notas", + "createNoteAfter": "criar nota após a nota atual", + "createNoteInto": "criar subnota dentro da nota atual", + "editBranchPrefix": "editar prefixo do clone da nota ativa", + "movingCloningNotes": "A mover / clonar notas", + "moveNoteUpDown": "mover nota para cima/baixo na lista de notas", + "moveNoteUpHierarchy": "mover nota para cima na hierarquia", + "multiSelectNote": "selecionar múltiplas notas acima/abaixo", + "selectAllNotes": "selecionar todas as notas no nível atual", + "selectNote": "selecionar nota", + "copyNotes": "copiar nota ativa (ou seleção atual) para a área de transferência (usado para clonar)", + "cutNotes": "recortar nota atual (ou seleção atual) para a área de transferência (usado para mover notas)", + "pasteNotes": "colar nota(s) como subnota dentro da nota ativa (o que pode ser mover ou clonar dependendo se foi copiado ou recortado para a área de transferência)", + "deleteNotes": "apagar nota / subárvore", + "editingNotes": "Edição de notas", + "editNoteTitle": "no painel de árvore, a navegação mudará do painel de árvore para o título da nota. Pressionar Enter no título da nota mudará o foco para o editor de texto. Ctrl+. mudará o foco de volta do editor para o painel de árvore.", + "createEditLink": "criar / editar ligação externa", + "createInternalLink": "criar ligação interna", + "followLink": "seguir ligação sob o cursor", + "insertDateTime": "inserir data e hora atual na posição do cursor", + "jumpToTreePane": "ir à árvore de notas e rolar até a nota ativa", + "markdownAutoformat": "Autoformatação estilo Markdown", + "headings": "##, ###, #### etc. seguidos de espaço para títulos", + "bulletList": "* ou - seguidos de espaço para lista com marcadores", + "numberedList": "1. ou 1) seguidos de espaço para lista numerada", + "blockQuote": "comece uma linha com > seguido de espaço para citação em bloco", + "troubleshooting": "Solução de problemas", + "reloadFrontend": "recarregar o frontend do Trilium", + "showDevTools": "mostrar ferramentas de programador", + "showSQLConsole": "mostrar console SQL", + "other": "Outros", + "quickSearch": "focar no campo de pesquisa rápida", + "inPageSearch": "pesquisa na página" + }, + "import": { + "importIntoNote": "Importar para a nota", + "chooseImportFile": "Escolher ficheiro para importar", + "importDescription": "O conteúdo do(s) ficheiro(s) selecionado(s) será importado como nota(s) filha(s) em", + "options": "Opções", + "safeImportTooltip": "Ficheiros de exportação Trilium .zip podem conter scripts executáveis que podem apresentar comportamentos prejudiciais. A importação segura desativará a execução automática de todos os scripts importados. Desmarque “Importação segura” apenas se o ficheiro de importação contiver scripts executáveis e você confiar totalmente no conteúdo do ficheiro importado.", + "safeImport": "Importação segura", + "explodeArchivesTooltip": "Se esta opção estiver marcada, o Trilium irá ler ficheiros .zip, .enex e .opml e criar notas a partir dos ficheiros contidos nesses ficheiros compactados. Se estiver desmarcada, o Trilium irá anexar os próprios ficheiros compactados à nota.", + "explodeArchives": "Ler conteúdos de arquivos .zip, .enex e .opml.", + "shrinkImagesTooltip": "

    Se marcar esta opção, o Trilium tentará reduzir o tamanho das imagens importadas por meio de escala e otimização, o que pode afetar a qualidade visual das imagens. Se desmarcada, as imagens serão importadas sem alterações.

    Isto não se aplica a importações de ficheiros .zip com metadados, pois presume-se que estes ficheiros já estejam otimizados.

    ", + "shrinkImages": "Reduzir imagens", + "textImportedAsText": "Importar ficheiros de HTML, Markdown e TXT como notas de texto caso não esteja claro pelos metadados", + "codeImportedAsCode": "Importar ficheiros de código reconhecidos (por exemplo, .json) como notas de código caso não esteja claro pelos metadados", + "replaceUnderscoresWithSpaces": "Substituir sublinhados por espaços nos nomes das notas importadas", + "import": "Importar", + "failed": "Falha na importação: {{message}}.", + "html_import_tags": { + "title": "Tags de importação HTML", + "description": "Configurar quais tags HTML devem ser preservadas ao importar notas. As tags que não estiverem nesta lista serão removidas durante a importação. Algumas tags (como 'script') são sempre removidas por motivos de segurança.", + "placeholder": "Digite as tags HTML, uma por linha", + "reset_button": "Redefinir para lista padrão" + }, + "import-status": "Estado da importação", + "in-progress": "Importação em andamento: {{progress}}", + "successful": "Importação concluída com sucesso." + }, + "include_note": { + "dialog_title": "Incluir nota", + "label_note": "Nota", + "placeholder_search": "pesquisar nota pelo nome", + "box_size_prompt": "Dimensão da caixa da nota incluída:", + "box_size_small": "pequeno (~ 10 linhas)", + "box_size_medium": "médio (~ 30 linhas)", + "box_size_full": "completo (a caixa exibe o texto completo)", + "button_include": "Incluir nota" + }, + "info": { + "modalTitle": "Mensagem informativa", + "closeButton": "Fechar", + "okButton": "OK" + }, + "jump_to_note": { + "search_placeholder": "Pesquise uma nota pelo nome ou digite > para comandos...", + "search_button": "Pesquisar no texto completo" + }, + "markdown_import": { + "dialog_title": "Importar Markdown", + "modal_body_text": "Por motivos de segurança (sandbox do navegador), o JavaScript não pode aceder diretamente a área de transferência. Por favor, cole o conteúdo Markdown na área de texto abaixo e clique em Importar", + "import_button": "Importar", + "import_success": "O conteúdo Markdown foi importado para o documento." + }, + "move_to": { + "dialog_title": "Mover notas para...", + "notes_to_move": "Notas para mover", + "target_parent_note": "Nota pai-alvo", + "search_placeholder": "pesquisar nota pelo nome", + "move_button": "Mover para a nota selecionada", + "error_no_path": "Nenhum caminho para mover.", + "move_success_message": "As notas selecionadas foram movidas para " + }, + "note_type_chooser": { + "change_path_prompt": "Alterar onde criar a nova nota:", + "search_placeholder": "pesquisar caminho pelo nome (valor predefinido se não for preenchido)", + "modal_title": "Escolher tipo de nota", + "modal_body": "Escolha o tipo/modelo da nova nota:", + "templates": "Modelos", + "builtin_templates": "Modelos Incorporados" + }, + "password_not_set": { + "title": "A palavra-passe não está definida", + "body1": "Notas protegidas são criptografadas usando uma palavra-passe do utilizador, mas a palavra-passe ainda não foi definida.", + "body2": "Para poder proteger notas, clique no botão abaixo para abrir a caixa de diálogo de Opções e definir a sua palavra-passe.", + "go_to_password_options": "Ir para opções de Palavra-passe" + }, + "prompt": { + "title": "Prompt", + "ok": "OK", + "defaultTitle": "Prompt" + }, + "protected_session_password": { + "modal_title": "Sessão protegida", + "help_title": "Ajuda sobre notas protegidas", + "close_label": "Fechar", + "form_label": "Para prosseguir com a ação solicitada, deve iniciar uma sessão protegida digitando a palavra-passe:", + "start_button": "Iniciar sessão protegida" + }, + "recent_changes": { + "title": "Alterações recentes", + "erase_notes_button": "Remover permanentemente as notas apagadas agora", + "deleted_notes_message": "As notas apagadas foram removidas permanentemente.", + "no_changes_message": "Nenhuma alteração ainda...", + "undelete_link": "Restaurar", + "confirm_undelete": "Deseja restaurar esta nota e as suas subnotas?" + }, + "revisions": { + "note_revisions": "Versões da nota", + "delete_all_revisions": "Apagar todas as versões desta nota", + "delete_all_button": "Apagar todas as versões", + "help_title": "Ajuda sobre as versões da nota", + "revision_last_edited": "Esta versão foi editada pela última vez em {{date}}", + "confirm_delete_all": "Quer apagar todas as versões desta nota?", + "no_revisions": "Ainda não há versões para esta nota...", + "restore_button": "Recuperar", + "confirm_restore": "Deseja restaurar esta versão? Isto irá substituir o título e o conteúdo atuais da nota por esta versão.", + "delete_button": "Apagar", + "confirm_delete": "Deseja apagar esta versão?", + "revisions_deleted": "As versões da nota foram removidas.", + "revision_restored": "A versão da nota foi restaurada.", + "revision_deleted": "A versão da nota foi apagada.", + "snapshot_interval": "Intervalo de captura das versões da nota: {{seconds}}s.", + "maximum_revisions": "Limite de capturas das versões da nota: {{number}}.", + "settings": "Configurações de versões da nota", + "download_button": "Descarregar", + "mime": "MIME: ", + "file_size": "Tamanho do ficheiro:", + "preview": "Visualizar:", + "preview_not_available": "A visualização não está disponível para este tipo de nota." + }, + "sort_child_notes": { + "sort_children_by": "Ordenar notas filhas por...", + "sorting_criteria": "Critérios de ordenação", + "title": "título", + "date_created": "data de criação", + "date_modified": "data de modificação", + "sorting_direction": "Direção de ordenação", + "ascending": "crescente", + "descending": "decrescente", + "folders": "Pastas", + "sort_folders_at_top": "posicionar pastas no topo", + "natural_sort": "Ordenação Natural", + "sort_with_respect_to_different_character_sorting": "classificar de acordo com diferentes regras de ordenação de caracteres e colação em diferentes idiomas ou regiões.", + "natural_sort_language": "Linguagem da ordenação natural", + "the_language_code_for_natural_sort": "O código do idioma para ordenação natural, por exemplo, \"zh-CN\" para chinês.", + "sort": "Ordenar" + }, + "upload_attachments": { + "upload_attachments_to_note": "Enviar anexos para a nota", + "choose_files": "Escolher ficheiros", + "files_will_be_uploaded": "Os ficheiros serão enviados como anexos para {{noteTitle}}", + "options": "Opções", + "shrink_images": "Reduzir imagens", + "upload": "Enviar", + "tooltip": "Se marcar esta opção, o Trilium tentará reduzir as imagens enviadas a redimensionar e otimizar, o que pode afetar a qualidade visual percebida. Se desmarcada, as imagens serão enviadas sem alterações." + }, + "attribute_detail": { + "attr_detail_title": "Título Detalhado do Atributo", + "close_button_title": "Cancelar alterações e fechar", + "attr_is_owned_by": "O atributo pertence a", + "attr_name_title": "O nome do atributo pode ser composto apenas por caracteres alfanuméricos, dois-pontos e sublinhado", + "name": "Nome", + "value": "Valor", + "target_note_title": "Relação é uma conexão nomeada entre a nota de origem e a nota de destino.", + "target_note": "Nota de destino", + "promoted_title": "O atributo promovido é exibido de forma destacada na nota.", + "promoted": "Promovido", + "promoted_alias_title": "O nome a ser exibido na interface de atributos promovidos.", + "promoted_alias": "Alias", + "multiplicity_title": "Multiplicidade define quantos atributos com o mesmo nome podem ser criados — no máximo 1 ou mais que 1.", + "multiplicity": "Multiplicidade", + "single_value": "Valor único", + "multi_value": "Valor múltiplo", + "label_type_title": "O tipo do rótulo ajudará o Trilium a escolher a interface adequada para inserir o valor do rótulo.", + "label_type": "Tipo", + "text": "Texto", + "number": "Número", + "boolean": "Booleano", + "date": "Data", + "date_time": "Data e Hora", + "time": "Hora", + "url": "URL", + "precision_title": "Qual número de dígitos após o ponto decimal deve estar disponível na interface de configuração de valor.", + "precision": "Precisão", + "digits": "dígitos", + "inverse_relation_title": "Configuração opcional para definir a qual relação esta é oposta. Exemplo: Pai - Filho são relações inversas entre si.", + "inverse_relation": "Relação inversa", + "inheritable_title": "O atributo herdável será transmitido para todos os descendentes deste ramo.", + "inheritable": "Herdável", + "save_and_close": "Gravar e fechar Ctrl+Enter", + "delete": "Apagar", + "related_notes_title": "Outras notas com este rótulo", + "more_notes": "Mais notas", + "label": "Pormenor do rótulo", + "label_definition": "Pormenor da definição do rótulo", + "relation": "Pormenor da relação", + "relation_definition": "Pormenor da definição da relação", + "disable_versioning": "desativa a versão automática. Útil, por exemplo, para notas grandes, mas sem importância – como grandes bibliotecas JS usadas para scripts", + "calendar_root": "marca a nota que deve ser usada como raiz para notas diárias. Apenas uma deve ser marcada assim.", + "archived": "notas com este rótulo não serão exibidas por padrão nos resultados de pesquisa (também nos diálogos Ir para, Adicionar ligações, etc).", + "exclude_from_export": "notas (com as suas subárvores) não serão incluídas em nenhuma exportação de notas", + "run": "define em quais eventos o script deve ser executado. Os valores possíveis são:\n
      \n
    • frontendStartup - quando o frontend do Trilium inicia (ou é atualizado), mas não no telemóvel.
    • \n
    • mobileStartup - quando o frontend do Trilium inicia (ou é atualizado), no telemóvel.
    • \n
    • backendStartup - quando o backend do Trilium inicia
    • \n
    • hourly - executa uma vez por hora. Pode usar o rótulo adicional runAtHour para especificar em qual hora.
    • \n
    • daily - executa uma vez por dia
    • \n
    ", + "run_on_instance": "Define em qual instância do Trilium isto deve ser executado. Por padrão, todas as instâncias.", + "run_at_hour": "Em qual hora isto deve ser executado. Deve ser usado junto com #run=hourly. Pode ser definido várias vezes para executar mais que uma vez ao dia.", + "disable_inclusion": "scripts com este rótulo não serão incluídos na execução do script pai.", + "sorted": "mantém as notas filhas ordenadas alfabeticamente pelo título", + "sort_direction": "ASC (padrão) ou DESC", + "sort_folders_first": "Pastas (notas com filhos) devem ser ordenadas no topo", + "top": "mantenha a nota fornecida no topo no seu pai (aplica-se apenas a pais ordenados)", + "hide_promoted_attributes": "Ocultar atributos promovidos nesta nota", + "read_only": "o editor está em modo somente leitura. Funciona apenas para notas de texto e código.", + "auto_read_only_disabled": "notas de texto/código podem ser automaticamente configuradas para modo de leitura quando são muito grandes. Pode desativar este comportamento por nota a adicionar este rótulo à nota", + "app_css": "marca notas CSS que são carregadas na aplicação Trilium e, portanto, podem ser usadas para modificar a aparência do Trilium.", + "app_theme": "marca notas CSS que são temas completos do Trilium e, portanto, estão disponíveis nas opções do Trilium.", + "app_theme_base": "defina como \"next\", \"next-light\" ou \"next-dark\" para usar o tema TriliumNext correspondente (auto, claro ou escuro) como base para um tema personalizado em vez do tema legado.", + "css_class": "o valor deste rótulo é depois adicionado como classe CSS ao nó que representa a nota específica na árvore. Isto pode ser útil para temas avançados. Pode ser usado em notas de modelo.", + "icon_class": "o valor deste rótulo é adicionado como uma classe CSS ao ícone na árvore, o que pode ajudar a distinguir visualmente as notas na árvore. Um exemplo pode ser bx bx-home – os ícones são retirados do boxicons. Pode ser usado em notas de modelo.", + "page_size": "número de elementos por página na listagem de notas", + "custom_request_handler": "veja Manipulador de requisição personalizada", + "custom_resource_provider": "veja Manipulador de requisição personalizada", + "widget": "marca esta nota como um widget personalizado que será adicionado à árvore de componentes do Trilium", + "workspace": "marca esta nota como um espaço de trabalho, o que permite fácil hoisting", + "workspace_icon_class": "define a classe CSS do ícone box que será usada na guia quando esta nota for hoisted", + "workspace_tab_background_color": "cor CSS usada na guia da nota quando esta nota é hoisted", + "workspace_calendar_root": "Define a raiz do calendário por espaço de trabalho", + "workspace_template": "Esta nota aparecerá na seleção de modelos disponíveis ao criar uma nova nota, mas apenas quando estiver destacada num espaço de trabalho que contenha este modelo", + "search_home": "novas notas de pesquisa serão criadas como filhas desta nota", + "workspace_search_home": "novas notas de pesquisa serão criadas como filhas desta nota quando ela for destacada para algum ancestral desta nota de área de trabalho", + "inbox": "localização padrão da caixa de entrada para novas notas – quando cria uma nota através do botão \"nova nota\" na barra lateral, as notas serão criadas como notas filhas na nota marcada com o rótulo #inbox.", + "workspace_inbox": "local padrão da caixa de entrada para novas notas quando esta nota for destacada para algum ancestral desta nota de área de trabalho", + "sql_console_home": "localização padrão das notas do console SQL", + "bookmark_folder": "nota com este rótulo aparecerá nos favoritos como uma pasta (permitindo acesso aos seus filhos)", + "share_hidden_from_tree": "esta nota está oculta na árvore de navegação à esquerda, mas ainda pode ser aceidda pela sua URL", + "share_external_link": "a nota funcionará como uma ligação para um site externo na árvore de compartilhamento", + "share_alias": "defina um alias por meio do qual a nota ficará disponível em https://your_trilium_host/share/[your_alias]", + "share_omit_default_css": "o CSS padrão da página de compartilhamento será omitido. Use quando fizer alterações extensas de estilo.", + "share_root": "marca a nota que é servida na raiz de /share.", + "share_description": "defina o texto a ser adicionado à meta tag HTML \"description\"", + "share_raw": "a nota será servida no seu formato bruto, sem o wrapper HTML", + "share_disallow_robot_indexing": "impedirá que robôs indexem esta nota por meio do cabeçalho X-Robots-Tag: noindex", + "share_credentials": "exigir credenciais para aceder esta nota partilhada. O valor deve estar no formato 'utilizador:palavra-passe'. Não se esqueça de fazer esta configuração herdável para que seja aplicada às notas-filhas/imagens.", + "share_index": "notas com este rótulo irão listar todas as raízes das notas partilhadas", + "display_relations": "nomes das relações separados por vírgula que devem ser exibidos. Todas as outras serão ocultadas.", + "hide_relations": "nomes das relações separados por vírgula que devem ser ocultados. Todas as outras serão exibidas.", + "title_template": "título padrão das notas criadas como filhas desta nota. O valor é avaliado como uma cadeia JavaScript \n e pode ser enriquecido com conteúdo dinâmico usando as variáveis injetadas now e parentNote. Exemplos:\n \n
      \n
    • ${parentNote.getLabelValue('authorName')}'s literary works
    • \n
    • Log for ${now.format('YYYY-MM-DD HH:mm:ss')}
    • \n
    \n \n Veja a wiki com pormenores, a documentação da API para parentNote e para now para mais informações.", + "template": "Esta nota aparecerá na seleção de modelos disponíveis ao criar uma nova nota", + "toc": "#toc ou #toc=show irá forçar a exibição do Sumário, #toc=hide irá forçar que ele fique oculto. Se o rótulo não existir, será considerado o ajuste global", + "color": "define a cor da nota na árvore de notas, ligações etc. Use qualquer valor de cor CSS válido, como 'red' ou #a13d5f", + "keyboard_shortcut": "Define um atalho de teclado que irá pular imediatamente para esta nota. Exemplo: 'ctrl+alt+e'. É necessário recarregar o frontend para que a alteração tenha efeito.", + "keep_current_hoisting": "Abrir este ligação não alterará o destaque, mesmo que a nota não seja exibível na subárvore destacada atual.", + "execute_button": "Titulo do botão que executará a nota de código atual", + "execute_description": "Descrição longa da nota de código atualmente exibida junto ao botão executar", + "exclude_from_note_map": "Notas com este rótulo ficarão ocultas no Mapa de Notas", + "new_notes_on_top": "Novas notas serão criadas no topo da nota raiz, não na parte inferior.", + "hide_highlight_widget": "Ocultar o widget da lista de destaques", + "run_on_note_creation": "executa quando a nota é criada no backend. Use esta relação se quiser executar o script para todas as notas criadas numa subárvore específica. Neste caso, crie-a na nota raiz da subárvore e fazê-la herdável. Uma nova nota criada dentro da subárvore (qualquer profundidade) irá acionar o script.", + "run_on_child_note_creation": "executa quando uma nova nota é criada sob a nota onde esta relação está definida", + "run_on_note_title_change": "executa quando o título da nota é alterado (inclusive na criação de nota)", + "run_on_note_content_change": "executa quando o conteúdo da nota é alterado (inclusive na criação de nota).", + "run_on_note_change": "executa quando a nota é alterada (inclusive na criação de nota). Não incluí alterações no conteúdo", + "run_on_note_deletion": "executa quando a nota está a ser apagada", + "run_on_branch_creation": "executa quando uma ramificação é criada. Ramificação é uma ligação entre nota pai e nota filha e é criado, por exemplo, ao clonar ou mover uma nota.", + "run_on_branch_change": "executa quando uma remificação é atualizada.", + "run_on_branch_deletion": "executa quando uma ramificação é apagada. Ramificação é uma ligação entre a nota pai e a nota filha e é apagada, por exemplo, ao mover a nota (a ramificação/ligação antiga é apagada).", + "run_on_attribute_creation": "executa quando um novo atributo é criado para a nota que define esta relação", + "run_on_attribute_change": " executa quando o atributo é alterado na nota que define esta relação. Também é disparado quando o atributo é apagado", + "relation_template": "os atributos da nota serão herdados mesmo sem um relacionamento pai-filho, o conteúdo e subárvore da nota serão adicionados às notas da instância se estarem vazias. Veja a documentação para pormenores.", + "inherit": "os atributos da nota serão herdados mesmo sem um relacionamento pai-filho. Veja relação de modelos para um conceito semelhante. Veja a herança de atributos na documentação.", + "render_note": "notas do tipo \"nota de renderização HTML\" serão renderizadas através de uma nota de código (HTML ou script) e é necessário apontar por esta relação qual nota deve ser renderizada", + "widget_relation": "o destino desta relação será executado e renderizado como um widget na barra lateral", + "share_css": "Nota CSS que será injetada na página de partilhamento. A nota CSS também deve estar na subárvore partilhada. Considere usar também 'share_hidden_from_tree' e 'share_omit_default_css'.", + "share_js": "Nota JavaScript que será injetada na página de partilhamento. A nota JS também deve estar na subárvore partilhada. Considere usar 'share_hidden_from_tree'.", + "share_template": "Nota JavaScript incorporada que será usada como modelo para exibir a nota partilhada. Retorna ao modelo padrão. Considere usar 'share_hidden_from_tree'.", + "share_favicon": "Nota Favicon que será usada na página partilhada. Tipicamente vai defini-la na raiz do partilhamento e fazê-la herdável. A nota de Favicon também deve estar na subárvore partilhada. Considere usar 'share_hidden_from_tree'.", + "is_owned_by_note": "é propriedade da nota", + "other_notes_with_name": "Outras notas com {{attributeType}} igual a \"{{attributeName}}\"", + "and_more": "... e {{count}} mais.", + "print_landscape": "Ao exportar para PDF, muda a orientação da página para paisagem em vez de retrato.", + "print_page_size": "Quando exportar para PDF, altera o tamanho da página. Valores suportados: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.", + "color_type": "Cor" + }, + "attribute_editor": { + "help_text_body1": "Para adicionar uma etiqueta, digite por exemplo #rock ou se também quer adicionar um valor depois por exemplo #year = 2020", + "help_text_body2": "Para relação, digite ~author = @, que deve ser exibido um autocompletar onde pode encontrar a nota desejada.", + "help_text_body3": "Alternativamente, pode adicionar etiqueta e relação pelo botão + no lado direito.", + "save_attributes": "Gravar atributos ", + "add_a_new_attribute": "Adicionar um novo atributo", + "add_new_label": "Adicionar nova etiqueta ", + "add_new_relation": "Adicionar nova relação ", + "add_new_label_definition": "Adicionar nova definição de etiqueta", + "add_new_relation_definition": "Adicionar nova definição de relação", + "placeholder": "Digite as etiquetas e relações aqui" + }, + "abstract_bulk_action": { + "remove_this_search_action": "Remover esta ação de pesquisa" + }, + "execute_script": { + "execute_script": "Executar script", + "help_text": "Pode executar scripts simples nas notas correspondentes.", + "example_1": "Por exemplo para anexar uma cadeia ao título de uma nota, use este pequeno script:", + "example_2": "Um exemplo mais complexo seria apagar todos os atributos das notas correspondentes:" + }, + "add_label": { + "add_label": "Adicionar etiqueta", + "label_name_placeholder": "nome da etiqueta", + "label_name_title": "Caracteres alfanuméricos, underscore e vírgula são permitidos.", + "to_value": "para o valor", + "new_value_placeholder": "novo valor", + "help_text": "Em todas as notas correspondentes:", + "help_text_item1": "criar a etiqueta indicada se a nota ainda não tiver uma", + "help_text_item2": "ou altere o valor da etiqueta existente", + "help_text_note": "Também pode chamar este método sem valor, neste caso a etiqueta será atribuída à nota sem valor." + }, + "delete_label": { + "delete_label": "Apagar etiqueta", + "label_name_placeholder": "nome da etiqueta", + "label_name_title": "Caracteres alfanuméricos, underscore e vírgula são permitidos." + }, + "rename_label": { + "rename_label": "Renomear etiqueta", + "rename_label_from": "Renomear etiqueta de", + "old_name_placeholder": "nome antigo", + "to": "Para", + "new_name_placeholder": "novo nome", + "name_title": "Caracteres alfanuméricos, underscore e vírgula são permitidos." + }, + "update_label_value": { + "update_label_value": "Atualizar valor da etiqueta", + "label_name_placeholder": "nome da etiqueta", + "label_name_title": "Caracteres alfanuméricos, underscore e vírgula são permitidos.", + "to_value": "para o valor", + "new_value_placeholder": "novo valor", + "help_text": "Em todas as notas correspondentes, altera o valor da etiqueta existente.", + "help_text_note": "Também pode chamar este método sem um valor, neste caso a etiqueta será à nota sem um valor." + }, + "delete_note": { + "delete_note": "Apagar nota", + "delete_matched_notes": "Apagar notas correspondentes", + "delete_matched_notes_description": "Isto irá apagar as notas correspondentes.", + "undelete_notes_instruction": "Depois de apagar, é possível desapagá-las através da janela de Alterações Recentes.", + "erase_notes_instruction": "Para apagar notas permanentemente, pode fazê-lo depois de apagar em Opções -> Outros e clicar no botão \"Apagar notas apagadas agora\"." + }, + "delete_revisions": { + "delete_note_revisions": "Apagar revisões da nota", + "all_past_note_revisions": "Todas as revisões anteriores das notas correspondentes serão apagadas. A nota em si será perservada. Ou seja, o histórico da nota será removido." + }, + "move_note": { + "move_note": "Mover nota", + "to": "para", + "target_parent_note": "nota pai destino", + "on_all_matched_notes": "Em todas as notas correspondentes", + "move_note_new_parent": "move a nota para o novo pai se a nota tem apenas um pai (ou seja, a antiga ramificação é removida e uma nova ramificação é criada para o novo pai)", + "clone_note_new_parent": "clona a nota para o novo pai se a nota tem vários clones / ramificações (não é claro qual ramificação deve ser removida)", + "nothing_will_happen": "nada acontecerá se a nota não puder ser movida para a nota de destino (por exemplo, criaria um ciclo de árvore)" + }, + "rename_note": { + "rename_note": "Renomear nota", + "rename_note_title_to": "Renomear título da nota para", + "new_note_title": "novo título da nota", + "click_help_icon": "Clique no ícone de ajuda a direita para ver todas as opções", + "evaluated_as_js_string": "O valor digitado é avaliado como cadeia JavaScript e, portanto, pode ser enriquecido com conteúdo dinâmico através da variável injetada note (nota a ser renomeada). Exemplos:", + "example_note": "Nota - todas as notas correspondentes serão renomeadas para 'Nota'", + "example_new_title": "NOVO: ${note.title} - o título das notas correspondentes receberá o prefixo 'NOVO: '", + "example_date_prefix": "${note.dateCreatedObj.format('MM-DD:')}: ${note.title} - notas correspondentes receberão um prefixo com o mês-dia da data de criação da nota", + "api_docs": "Veja da documentação da API para nota e as suas propriedades dateCreatedObj / utcDateCreatedObj para pormenores." + }, + "add_relation": { + "add_relation": "Adicionar relação", + "relation_name": "nome da relação", + "allowed_characters": "Caracteres alfanuméricos, underscore e vírgula são permitidos.", + "to": "para", + "target_note": "nota destino", + "create_relation_on_all_matched_notes": "Crie a relação informada em todas as notas correspondentes." + }, + "delete_relation": { + "delete_relation": "Apagar relação", + "relation_name": "nome da relação", + "allowed_characters": "Caracteres alfanuméricos, underscore e vírgula são permitidos." + }, + "rename_relation": { + "rename_relation": "Renomar relação", + "rename_relation_from": "Renomear relação de", + "old_name": "nome antigo", + "to": "Para", + "new_name": "novo nome", + "allowed_characters": "Caracteres alfanuméricos, underscore e vírgula são permitidos." + }, + "update_relation_target": { + "update_relation": "Atualizar relação", + "relation_name": "nome da relação", + "allowed_characters": "Caracteres alfanuméricos, underscore e vírgula são permitidos.", + "to": "para", + "target_note": "nota destino", + "on_all_matched_notes": "Em todas as notas correspondentes", + "change_target_note": "alterar nota destino da relação existente", + "update_relation_target": "Atualizar destino da relação" + }, + "attachments_actions": { + "open_externally": "Abrir externamente", + "open_externally_title": "O ficheiro será aberto numa aplicação externa e monitorado por alterações. Depois poderá enviar a versão modificada de volta para o Trilium.", + "open_custom": "Abrir customizado", + "open_custom_title": "O ficheiro será aberto numa aplicação externa e monitorado por alterações. Depois poderá enviar a versão modificada de volta para o Trilium.", + "download": "Descarregar", + "rename_attachment": "Renomear anexo", + "upload_new_revision": "Enviar nova revisão", + "copy_link_to_clipboard": "Copiar ligação para a área de transferência", + "convert_attachment_into_note": "Converter anexo para nota", + "delete_attachment": "Apagar anexo", + "upload_success": "Uma nova revisão de anexo foi enviada.", + "upload_failed": "O envio de uma nova revisão de anexo falhou.", + "open_externally_detail_page": "A abertura de anexo externamente só está disponível através da página de pormenores. Por favor, primeiro clique nos pormenores do anexo e repita a ação.", + "open_custom_client_only": "A abertura customizada de anexos só pode ser feita no cliente de desktop.", + "delete_confirm": "Tem certeza que deseja apagar o anexo '{{title}}'?", + "delete_success": "O anexo '{{title}}' foi apagado.", + "convert_confirm": "Tem certeza que deseja converter o anexo '{{title}}' numa nota separada?", + "convert_success": "O anexo '{{title}}' foi convertido para uma nota.", + "enter_new_name": "Por favor, digite o novo nome do anexo" + }, + "calendar": { + "mon": "Seg", + "tue": "Ter", + "wed": "Qua", + "thu": "Qui", + "fri": "Sex", + "sat": "Sáb", + "sun": "Dom", + "cannot_find_day_note": "Nota do dia não encontrada", + "cannot_find_week_note": "Nota semanal não encontrada", + "january": "Janeiro", + "february": "Fevereiro", + "march": "Março", + "april": "Abril", + "may": "Maio", + "june": "Junho", + "july": "Julho", + "august": "Agosto", + "september": "Setembro", + "october": "Outubro", + "november": "Novembro", + "december": "Dezembro" + }, + "close_pane_button": { + "close_this_pane": "Fechar este painel" + }, + "create_pane_button": { + "create_new_split": "Criar divisão" + }, + "edit_button": { + "edit_this_note": "Editar esta nota" + }, + "show_toc_widget_button": { + "show_toc": "Mostrar Tabela de Conteúdo" + }, + "show_highlights_list_widget_button": { + "show_highlights_list": "Mostrar Lista de Destaques" + }, + "global_menu": { + "menu": "Menu", + "options": "Opções", + "open_new_window": "Abrir Nova Janela", + "switch_to_mobile_version": "Alternar para Versão Mobile", + "switch_to_desktop_version": "Alternar para Versão Desktop", + "zoom": "Zoom", + "toggle_fullscreen": "Alternar Ecrã Cheio", + "zoom_out": "Reduzir", + "reset_zoom_level": "Redefinir Zoom", + "zoom_in": "Aumentar", + "configure_launchbar": "Configurar Barra de Lançamento", + "show_shared_notes_subtree": "Exibir Subárvore de Notas Partilhadas", + "advanced": "Avançado", + "open_dev_tools": "Abrir Ferramentas de Programador", + "open_sql_console": "Abrir Console SQL", + "open_sql_console_history": "Abrir Histórico de Console SQL", + "open_search_history": "Abrir Histórico de Pesquisa", + "show_backend_log": "Abrir Log do Servidor", + "reload_hint": "Recarregar pode ajudar em alguns problemas visuais sem reiniciar toda a app.", + "reload_frontend": "Recarregar Frontend", + "show_hidden_subtree": "Exibir Subárvore Oculta", + "show_help": "Exibir Ajuda", + "about": "Sobre o Trilium Notes", + "logout": "Sair", + "show-cheatsheet": "Exibir Cheatsheet", + "toggle-zen-mode": "Modo Zen" + }, + "zen_mode": { + "button_exit": "Sair do Modo Zen" + }, + "sync_status": { + "unknown": "

    O estado da sincronização será conhecido assim que a próxima tentativa começar.

    Clique para iniciar a sincronização agora.

    ", + "connected_with_changes": "

    Conectado ao servidor de sincronização.
    Existem algumas alterações a serem sincronizadas.

    Clique para sincronizar.

    ", + "connected_no_changes": "

    Conectado ao servidor de sincronização.
    Todas as alterações já foram sincronizadas.

    Clique para sincronizar.

    ", + "disconnected_with_changes": "

    A conexão ao servidor de sincronização falhou.
    Existem algumas alterações a serem sincronizadas.

    Clique para sincronizar.

    ", + "disconnected_no_changes": "

    A conexão ao servidor de sincronização falhou.
    Todas as alterações já foram sincronizadas.

    Clique para sincronizar.

    ", + "in_progress": "Sincronização com o servidor em andamento." + }, + "left_pane_toggle": { + "show_panel": "Exibir painel", + "hide_panel": "Esconder painel" + }, + "move_pane_button": { + "move_left": "Mover para a esquerda", + "move_right": "Mover para a direita" + }, + "note_actions": { + "convert_into_attachment": "Converter no anexo", + "re_render_note": "Renderizar nota novamente", + "search_in_note": "Pesquisar na nota", + "note_source": "Código Fonte da nota", + "note_attachments": "Anexos da nota", + "open_note_externally": "Abrir nota externamente", + "open_note_externally_title": "O ficheiro será aberto numa aplicação externa e monitorado por alterações. Depois poderá enviar a versão modificada de volta para o Trilium.", + "open_note_custom": "Abrir nota de forma customizada", + "import_files": "Importar ficheiros", + "export_note": "Exportar nota", + "delete_note": "Apagar nota", + "print_note": "Imprimir nota", + "save_revision": "Gravar revisão", + "convert_into_attachment_failed": "A conversão da nota '{{title}}' falhou.", + "convert_into_attachment_successful": "A nota '{{title}}' foi convertida para anexo.", + "convert_into_attachment_prompt": "Tem certeza que quer converter a nota '{{title}}' num anexo da nota pai?", + "print_pdf": "Exportar como PDF…" + }, + "onclick_button": { + "no_click_handler": "Componente de botão '{{componentId}}' não possui manipulador de clique definido" + }, + "protected_session_status": { + "active": "Sessão protegida está ativada. Clique para deixar a sessão protegida.", + "inactive": "Clique para entrar na sessão protegida" + }, + "revisions_button": { + "note_revisions": "Revisões da Nota" + }, + "update_available": { + "update_available": "Atualização disponível" + }, + "note_launcher": { + "this_launcher_doesnt_define_target_note": "Este lançador não define uma nota destino." + }, + "code_buttons": { + "execute_button_title": "Executar script", + "trilium_api_docs_button_title": "Abrir documentação da Trilium API", + "save_to_note_button_title": "Gravar para uma nota", + "opening_api_docs_message": "A abrir documentação da API…", + "sql_console_saved_message": "Nota do Console SQL foi gravada no caminho {{note_path}}" + }, + "copy_image_reference_button": { + "button_title": "Copiar referência da imagem para a área de transferência, pode ser colado numa nota de texto." + }, + "hide_floating_buttons_button": { + "button_title": "Esconder botões" + }, + "show_floating_buttons_button": { + "button_title": "Exibir botões" + }, + "svg_export_button": { + "button_title": "Exportar diagrama como SVG" + }, + "relation_map_buttons": { + "create_child_note_title": "Criar nota filha e adicione neste mapa de relação", + "reset_pan_zoom_title": "Redefinir pan & zoom para coordenadas e ampliação iniciais", + "zoom_in_title": "Aumentar", + "zoom_out_title": "Reduzir" + }, + "zpetne_odkazy": { + "backlink": "{{count}} Ligação Reversa", + "backlinks": "{{count}} Ligações Reversas", + "relation": "relação" + }, + "mobile_detail_menu": { + "insert_child_note": "Inserir nota filha", + "delete_this_note": "Apagar esta nota", + "error_cannot_get_branch_id": "Não foi possível obter o branchId para o notePath '{{notePath}} '", + "error_unrecognized_command": "Comando não reconhecido {{command}}" + }, + "note_icon": { + "change_note_icon": "Alterar ícone da nota", + "category": "Categoria:", + "search": "Pesquisa:", + "reset-default": "Redefinir para o ícone padrão" + }, + "basic_properties": { + "note_type": "Tipo da nota", + "editable": "Editável", + "basic_properties": "Propriedades Básicas", + "language": "Idioma", + "configure_code_notes": "Configurar notas de código..." + }, + "book_properties": { + "view_type": "Tipo de visualização", + "grid": "Grade", + "list": "Lista", + "collapse_all_notes": "Recolher todas as notas", + "expand_all_children": "Expandir todos os filhos", + "collapse": "Recolher", + "expand": "Expandir", + "book_properties": "Propriedades da Coleção", + "invalid_view_type": "Tipo de visualização inválido '{{type}}'", + "calendar": "Calendário", + "table": "Tabela", + "geo-map": "Mapa geográfico", + "board": "Quadro" + }, + "edited_notes": { + "no_edited_notes_found": "Ainda não há nenhuma nota editada neste dia…", + "title": "Notas Editadas", + "deleted": "(apagado)" + }, + "file_properties": { + "note_id": "ID da Nota", + "original_file_name": "Nome original do ficheiro", + "file_type": "Tipo do ficheiro", + "file_size": "Tamanho do ficheiro", + "download": "Descarregar", + "open": "Abrir", + "upload_new_revision": "Enviar nova revisão", + "upload_success": "Uma nova revisão de ficheiro foi enviada.", + "upload_failed": "O envio de uma nova revisão de ficheiro falhou.", + "title": "Ficheiro" + }, + "image_properties": { + "original_file_name": "Nome original do ficheiro", + "file_type": "Tipo do ficheiro", + "file_size": "Tamanho do ficheiro", + "download": "Descarregar", + "open": "Abrir", + "copy_reference_to_clipboard": "Copiar referência para a área de transferência", + "upload_new_revision": "Enviar nova revisão", + "upload_success": "Uma nova revisão de imagem foi enviado.", + "upload_failed": "O envio de uma nova revisão de imagem falhou: {{message}}", + "title": "Imagem" + }, + "inherited_attribute_list": { + "title": "Atributos Herdados", + "no_inherited_attributes": "Nenhum atributo herdado." + }, + "note_info_widget": { + "note_id": "ID da Nota", + "created": "Criado", + "modified": "Editado", + "type": "Tipo", + "note_size": "Tamanho da nota", + "note_size_info": "O tamanho da nota fornece uma estimativa aproximada dos requisitos de armazenamento para esta nota. Leva em conta o conteúdo e o conteúdo das suas revisões de nota.", + "calculate": "calcular", + "subtree_size": "(tamanho da subárvore: {{size}} em {{count}} notas)", + "title": "Informações da nota" + }, + "note_map": { + "open_full": "Expandir completamente", + "collapse": "Recolher para tamanho normal", + "title": "Mapa de Notas", + "fix-nodes": "Fixar nós", + "link-distance": "Distância da Ligação" + }, + "note_paths": { + "title": "Caminho das Notas", + "clone_button": "Clonar nota para novo local…", + "intro_placed": "Esta nova está localizada nos caminhos:", + "intro_not_placed": "Esta nota ainda não está em nenhuma árvore de notas.", + "outside_hoisted": "Este caminho está fora de uma nota fixada e teria que desafixar.", + "archived": "Arquivado", + "search": "Pesquisar" + }, + "note_properties": { + "this_note_was_originally_taken_from": "Esta nota foi originalmente obtida de:", + "info": "Informações" + }, + "owned_attribute_list": { + "owned_attributes": "Atributos próprios" + }, + "promoted_attributes": { + "promoted_attributes": "Atributos Promovidos", + "unset-field-placeholder": "não atribuído", + "url_placeholder": "http://website...", + "open_external_link": "Abrir ligação externa", + "unknown_label_type": "Tipo de etiqueta desconhecido '{{type}}'", + "unknown_attribute_type": "Tipo de atributo desconhecido '{{type}}'", + "add_new_attribute": "Adicionar novo atributo", + "remove_this_attribute": "Remover este atributo", + "remove_color": "Remover a etiqueta de cor" + }, + "script_executor": { + "query": "Consulta", + "script": "Script", + "execute_query": "Executar Consulta", + "execute_script": "Executar Script" + }, + "search_definition": { + "add_search_option": "Adicionar opção de pesquisa:", + "search_string": "pesquisar cadeia", + "search_script": "pesquisa de script", + "ancestor": "ancestral", + "fast_search": "pesquisa rápida", + "fast_search_description": "A opção de pesquisa rápida desativa a pesquisa de texto completo do conteúdo de nota, o que pode acelerar a pesquisa em grandes bases de dados.", + "include_archived": "incluir arquivados", + "include_archived_notes_description": "As notas arquivadas são por padrão excluídas dos resultados da pesquisa, com esta opção elas serão incluídas.", + "order_by": "ordenar por", + "limit": "limite", + "limit_description": "Limitar quantidade de resultados", + "debug": "depurar", + "debug_description": "A depuração irá imprimir informações adicionais no console para ajudar na depuração de consultas complexas", + "action": "ação", + "search_button": "Pesquisar", + "search_execute": "Pesquisar & Executar ações", + "save_to_note": "Gravar para nota", + "search_parameters": "Parâmetros de Pesquisa", + "unknown_search_option": "Opção de pesquisa desconhecida {{searchOptionName}}", + "search_note_saved": "Nota de pesquisa foi gravada em {{- notePathTitle}}", + "actions_executed": "As ações foram executadas." + }, + "similar_notes": { + "title": "Notas Similares", + "no_similar_notes_found": "Nenhum nota similar encontrada." + }, + "abstract_search_option": { + "remove_this_search_option": "Remover esta opção de pesquisa", + "failed_rendering": "A renderização da opção de pesquisa falhou: {{dto}} com o erro: {{error}} {{stack}}" + }, + "ancestor": { + "label": "Ancestral", + "placeholder": "pesquisar notas pelo nome", + "depth_label": "profundidade", + "depth_doesnt_matter": "não importa", + "depth_eq": "é exatamente {{count}}", + "direct_children": "filho direto", + "depth_gt": "é maior que {{count}}", + "depth_lt": "é menor que {{count}}" + }, + "debug": { + "debug": "Depurar", + "debug_info": "A depuração irá imprimir informações adicionais no console para ajudar em depuração de consultas complexas.", + "access_info": "Para aceder as informações de depuração, execute a consulta e clique em \"Exibir log do servidor\" no canto superior esquerdo." + }, + "fast_search": { + "fast_search": "Pesquisa rápida", + "description": "A opção de pesquisa rápida desativa a pesquisa de texto completo do conteúdo de nota, o que pode acelerar a pesquisa em grandes bases de dados." + }, + "include_archived_notes": { + "include_archived_notes": "Incluir notas arquivadas" + }, + "limit": { + "limit": "Limite", + "take_first_x_results": "Escolher apenas os X primeiros resultados." + }, + "order_by": { + "order_by": "Ordenar por", + "relevancy": "Relevância (padrão)", + "title": "Título", + "date_created": "Data de criação", + "date_modified": "Data da última modificação", + "content_size": "Tamaho do conteúdo da nota", + "content_and_attachments_size": "Tamanho do conteúdo da nota incluindo anexos", + "content_and_attachments_and_revisions_size": "Tamanho do conteúdo da nota incluindo anexos e revisões", + "revision_count": "Quantidade de revisões", + "children_count": "Quantidade de notas filhas", + "parent_count": "Quantidade de clones", + "owned_label_count": "Quantidade de etiquetas", + "owned_relation_count": "Quantidade de relações", + "target_relation_count": "Quantidade de relações para esta nota", + "random": "Ordem aleatória", + "asc": "Crescente (padrão)", + "desc": "Decrescente" + }, + "search_script": { + "title": "Pesquisar script:", + "placeholder": "pesquisar notas pelo nome", + "description1": "O script de pesquisa permite definir os resultados da pesquisa por executar um script. Isto proporciona flexibilidade máxima quando a pesquisa padrão não é suficiente.", + "description2": "O script de pesquisa deve ser do tipo \"código\" e subtipo \"JavaScript no servidor\". O script precisa retornar um array de noteIds ou de notas.", + "example_title": "Veja este exemplo:", + "example_code": "// 1. pré-filtro usando uma pesquisa predefinida\nconst candidateNotes = api.searchForNotes(\"#journal\"); \n\n// 2. aplicar critérios de pesquisa customizados\nconst matchedNotes = candidateNotes\n .filter(note => note.title.match(/[0-9]{1,2}\\. ?[0-9]{1,2}\\. ?[0-9]{4}/));\n\nreturn matchedNotes;", + "note": "Note que o script de pesquisa e a pesquisa de cadeia não podem ser combinados entre si." + }, + "search_string": { + "title_column": "Pesquisar cadeia:", + "placeholder": "palavras-chave fulltext, #tag = valor...", + "search_syntax": "Sintaxe de pesquisa", + "also_see": "veja também", + "complete_help": "ajuda completa da sintaxe de pesquisa", + "full_text_search": "Digite qualquer texto para pesquisa no texto completo", + "label_abc": "retorna notas com a etiqueta abc", + "label_year": "corresponde notas com a etiqueta de ano 2019", + "label_rock_pop": "corresponde notas que tenham tanto a etiqueta rock quando pop", + "label_rock_or_pop": "apenas uma das etiquetas deve estar presente", + "label_year_comparison": "comparação numérica (também >, >=, <).", + "label_date_created": "notas criadas no último mês", + "error": "Erro na pesquisa: {{error}}", + "search_prefix": "Pesquisa:" + }, + "attachment_detail": { + "open_help_page": "Abrir página de ajuda nos anexos", + "owning_note": "Nota proprietária: ", + "you_can_also_open": ", também pode abrir o(a) ", + "list_of_all_attachments": "Lista de todos os anexos", + "attachment_deleted": "Este anexo foi apagado." + }, + "attachment_list": { + "open_help_page": "Abrir página de ajuda nos anexos", + "owning_note": "Nota proprietária: ", + "upload_attachments": "Enviar anexos", + "no_attachments": "Esta nota não possuí anexos." + }, + "book": { + "no_children_help": "Esta coleção não possui nenhum nota filha, então não há nada para exibir. Veja wiki para pormenores." + }, + "editable_code": { + "placeholder": "Digite o conteúdo da sua nota de código aqui…" + }, + "editable_text": { + "placeholder": "Digite o conteúdo da sua nota aqui…" + }, + "empty": { + "open_note_instruction": "Abra uma nota a digitar o título da nota no campo abaixo ou escolha uma nota na árvore.", + "search_placeholder": "pesquisar uma nota pelo nome", + "enter_workspace": "Entrar no workspace {{title}}" + }, + "file": { + "file_preview_not_available": "Prévia não disponível para este formato de ficheiro.", + "too_big": "A prévia mostra apenas os primeiros {{maxNumChars}} caracteres do ficheiro por razões de desempenho. Descarregue o ficheiro e abra-o externamente para ver todo o conteúdo." + }, + "protected_session": { + "enter_password_instruction": "É necessário digitar a sua palavra-passe para mostar notas protegidas:", + "start_session_button": "Iniciar sessão protegida enter", + "started": "A sessão protegida foi iniciada.", + "wrong_password": "Palavra-passe incorreta.", + "protecting-finished-successfully": "A proteção foi finalizada com sucesso.", + "unprotecting-finished-successfully": "A remoção da proteção foi finalizada com sucesso.", + "protecting-in-progress": "Proteções em andamento: {{count}}", + "unprotecting-in-progress-count": "Remoções de proteção em andamento: {{count}}", + "protecting-title": "Estado da proteção", + "unprotecting-title": "Estado da remoção de proteção" + }, + "relation_map": { + "open_in_new_tab": "Abrir em nova guia", + "remove_note": "Remover nota", + "edit_title": "Editar título", + "rename_note": "Renomear nota", + "enter_new_title": "Digite o novo título da nota:", + "remove_relation": "Remover relação", + "confirm_remove_relation": "Tem certeza que deseja remover esta relação?", + "specify_new_relation_name": "Especifique o novo nome da relação (caracteres disponíveis: alfanuméricos, vírgula e underscore):", + "connection_exists": "A conexão '{{name}}' já existe entre estas notas.", + "start_dragging_relations": "Comece a arrastar as relações daqui e solte-as noutra nota.", + "note_not_found": "Nota {{noteId}} não encontrada!", + "cannot_match_transform": "Não foi possível combinar a transformação: {{transform}}", + "note_already_in_diagram": "A nota \"{{title}}\" já está no diagrama.", + "enter_title_of_new_note": "Digite o título da nova nota", + "default_new_note_title": "nova nota", + "click_on_canvas_to_place_new_note": "Clique no quadro para incluir uma nova nota" + }, + "render": { + "note_detail_render_help_1": "Esta nota de ajuda é mostrada porque esta nota do tipo Renderizar HTML não possui a relação necessária para funcionar corretamente.", + "note_detail_render_help_2": "O tipo de nota Renderizar HTML é usado para automação. Em suma, tem uma nota de código HTML (opcionalmente com algum JavaScript) e esta nota irá renderizá-la. Para fazê-lo funcionar, deve definir uma relação chamada \"renderNote\" que aponta para a nota HTML a ser renderizada." + }, + "web_view": { + "web_view": "Web View", + "embed_websites": "Nota do tipo Visualização Web permite que incorpore sites no Trilium.", + "create_label": "Para começar, crie uma etiqueta com um endereço URL que deseja incorporar, por exemplo, #webViewSrc=\"https://www.google.com\"" + }, + "backend_log": { + "refresh": "Recarregar" + }, + "consistency_checks": { + "title": "Verificações de Consistência", + "find_and_fix_button": "Encontrar e corrigir problemas de consistência", + "finding_and_fixing_message": "A procurar e corrigir problemas de consistência…", + "issues_fixed_message": "Qualquer problema de consistência encontrado foi corrigido." + }, + "database_anonymization": { + "title": "Anonimização do Banco de Dados", + "full_anonymization": "Anonimização Completa", + "full_anonymization_description": "Esta ação ira gerar uma cópia anônima da base de dados (sem conteúdo das notas, apenas estrutura e alguns metadados não sensíveis) para partilhar online e depurar, sem expor os seus dados pessoais.", + "save_fully_anonymized_database": "Gravar base de dados totalmente anonimizada", + "light_anonymization": "Anonimização Leve", + "light_anonymization_description": "Esta ação criará uma nova cópia da base de dados e aplicará uma anonimização leve — especificamente, apenas o conteúdo de todas as notas será removido, mas títulos e atributos permanecerão. Além disso, notas personalizadas de scripts JS frontend/servidor e widgets personalizados serão mantidos. Isto fornece mais contexto para depurar os problemas.", + "choose_anonymization": "Pode decidir se deseja fornecer uma base de dados totalmente ou levemente anonimizada. Mesmo a base de dados totalmente anonimizada é muito útil; no entanto, em alguns casos, uma base de dados levemente anonimizada pode acelera o processo de identificação e correção de bugs.", + "save_lightly_anonymized_database": "Gravar base de dados levemente anonimizada", + "existing_anonymized_databases": "Bases de dados anonimizada existentes", + "creating_fully_anonymized_database": "A criar base de dados totalmente anonimizada...", + "creating_lightly_anonymized_database": "A criar base de dados levemente anonimizada...", + "error_creating_anonymized_database": "Não foi possível criar a base de dados anonimizada, verifique os logs do servidor para mais pormenores", + "successfully_created_fully_anonymized_database": "Base de dados totalmente anonimizada criada em {{anonymizedFilePath}}", + "successfully_created_lightly_anonymized_database": "Base de dados levemente anonimizada criada em {{anonymizedFilePath}}", + "no_anonymized_database_yet": "Nenhuma base de dados anonimizada no momento." + }, + "database_integrity_check": { + "title": "Verificação de Integridade da Base de Dados", + "description": "Isto verificará se a base de dados não está corrompida no nível SQLite. Pode levar algum tempo, dependendo do tamanho da base de dados.", + "check_button": "Verificar integridade da base de dados", + "checking_integrity": "A verificar integridade da base de dados…", + "integrity_check_succeeded": "Verificação de integridade bem sucedida - nenhum problema encontrado.", + "integrity_check_failed": "Verificação de integridade falhou: {{results}}" + }, + "sync": { + "title": "Sincronizar", + "force_full_sync_button": "Forçar sincronização completa", + "fill_entity_changes_button": "Preencher registos de alterações da entidade", + "full_sync_triggered": "Sincronização completa iniciada", + "filling_entity_changes": "A preencher linhas de alterações da entidade...", + "sync_rows_filled_successfully": "Linhas de sincronização preenchidas com sucesso", + "finished-successfully": "Sincronização finalizada com sucesso.", + "failed": "Sincronização falhou: {{message}}" + }, + "vacuum_database": { + "title": "Executar Vacuum no Banco de Dados", + "description": "Isto irá reconstruir a base de dados, o que normalmente irá resultar numa redução do ficheiro da base de dados. Nenhum dado será alterado.", + "button_text": "Executar Vacuum", + "vacuuming_database": "A executar vacuum na base de dados...", + "database_vacuumed": "Vacuum executado na base de dados" + }, + "fonts": { + "theme_defined": "Tema definido", + "fonts": "Fontes", + "main_font": "Fonte Principal", + "font_family": "Família da fonte", + "size": "Tamanho", + "note_tree_font": "Fonte da Árvore de Notas", + "note_detail_font": "Fonte Padrão da Nota", + "monospace_font": "Fonte Monospace (código)", + "note_tree_and_detail_font_sizing": "Note que o tamanho da fonte da árvore e dos pormenores é relativo à configuração principal do tamanho de fonte.", + "not_all_fonts_available": "Nem todas as fontes listadas podem estar disponíveis no seu sistema.", + "apply_font_changes": "Para aplicar as alterações de fonte, clique em", + "reload_frontend": "recarregar frontend", + "generic-fonts": "Fontes genéricas", + "sans-serif-system-fonts": "Fontes sem serifa de sistema", + "serif-system-fonts": "Fontes serifadas de sistema", + "monospace-system-fonts": "Fontes monospace de sistema", + "handwriting-system-fonts": "Fontes de escrita à mão de sistema", + "serif": "Serifa", + "sans-serif": "Sem Serifa", + "monospace": "Monoespaçado", + "system-default": "Padrão do Sistema" + }, + "max_content_width": { + "title": "Largura do Conteúdo", + "default_description": "Por padrão, o Trilium limita a largura máxima do conteúdo para melhorar a legibilidade em janelas maximizadas em ecrãs largos.", + "max_width_label": "Largura máxima do conteúdo", + "max_width_unit": "pixels", + "apply_changes_description": "Para aplicar as alterações de largura do conteúdo, clique em", + "reload_button": "recarregar frontend", + "reload_description": "alterações de opções de aparência" + }, + "native_title_bar": { + "title": "Barra de Título Nativa (requer recarregar a app)", + "enabled": "ativada", + "disabled": "desativada" + }, + "ribbon": { + "widgets": "Widgets de fita", + "promoted_attributes_message": "A guia de Atributos Promovidos irá abrir automaticamente se existirem atributos promovidos na nota", + "edited_notes_message": "A guia de Notas Editadas será aberta automaticamente nas notas do dia" + }, + "theme": { + "title": "Tema da Aplicação", + "theme_label": "Tema", + "override_theme_fonts_label": "Sobrepor fontes do tema", + "auto_theme": "Legado (Seguir esquema de cor do sistema)", + "light_theme": "Legado (Claro)", + "dark_theme": "Legado (Escuro)", + "triliumnext": "Trilium (Seguir esquema de cor do sistema)", + "triliumnext-light": "Trilium (Claro)", + "triliumnext-dark": "Trilium (Escuro)", + "layout": "Layout", + "layout-vertical-title": "Vertical", + "layout-horizontal-title": "Horizontal", + "layout-vertical-description": "barra de lançamento está a esquerda (padrão)", + "layout-horizontal-description": "barra de lançamento está abaixo da barra de guias, a barra de guias agora tem a largura total." + }, + "ui-performance": { + "title": "Desempenho", + "enable-motion": "Ativar transições e animações", + "enable-shadows": "Ativar sombras", + "enable-backdrop-effects": "Ativar efeitos de fundo para menus, popups e painéis" + }, + "ai_llm": { + "not_started": "Não iniciado", + "title": "Configurações de IA", + "processed_notes": "Notas Processadas", + "total_notes": "Total de Notas", + "progress": "Andamento", + "queued_notes": "Notas Enfileiradas", + "failed_notes": "Notas com Falha", + "last_processed": "Últimas Processadas", + "refresh_stats": "Atualizar Estatísticas", + "enable_ai_features": "Ativar recurso IA/LLM", + "enable_ai_description": "Ativar recursos IA como sumarização de notas, geração de conteúdo e outras capacidades de LLM", + "openai_tab": "OpenAI", + "anthropic_tab": "Anthropic", + "voyage_tab": "Voyage AI", + "ollama_tab": "Ollama", + "enable_ai": "Ativar recursos IA/LLM", + "enable_ai_desc": "Ativar recursos de IA como sumarização de notas, geração de conteúdo e outras capacidades de LLM", + "provider_configuration": "Configuração de Provedor de IA", + "provider_precedence": "Prioridade de provedor", + "provider_precedence_description": "Lista de provedores em ordem de prioridade, separados por vírgula (por exemplo, 'openai, anthropic, ollama')", + "temperature": "Temperatura", + "temperature_description": "Controla a aleatoriedade em respostas (0 = determinística, 2 = aleatoriedade máxima)", + "system_prompt": "Prompt de Sistema", + "system_prompt_description": "Prompt padrão de sistema usado para todas as interações de IA", + "openai_configuration": "Configuração OpenAI", + "openai_settings": "Opções OpenAI", + "api_key": "Chave de API", + "url": "URL Base", + "model": "Modelo", + "openai_api_key_description": "A sua API Key da OpenAI para aceder os serviços de IA", + "anthropic_api_key_description": "A sua API Key da Anthropic para aceder os modelos Claude", + "default_model": "Modelo Padrão", + "openai_model_description": "Exemplos: gpt-4o, gpt-4-turbo, gpt-3.5-turbo", + "base_url": "URL Base", + "openai_url_description": "Padrão: https://api.openai.com/v1", + "anthropic_settings": "Configurações Anthropic", + "anthropic_url_description": "URL Base da API Anthropic (padrão: https://api.anthropic.com)", + "anthropic_model_description": "Modelos Claude da Anthropic para completar conversas", + "voyage_settings": "Configurações Voyage AI", + "ollama_settings": "Configurações do Ollama", + "ollama_url_description": "URL para a API Ollama (padrão: http://localhost:11434)", + "ollama_model_description": "Modelo Ollama usado para complementação de chat", + "anthropic_configuration": "Configuração da Anthropic", + "voyage_configuration": "Configuração da Voyage IA", + "voyage_url_description": "Padrão: https://api.voyageai.com/v1", + "ollama_configuration": "Configuração da Ollama", + "enable_ollama": "Ativar Ollama", + "enable_ollama_description": "Ativar Ollama para uso do modelo local de IA", + "ollama_url": "URL da Ollama", + "ollama_model": "Modelo do Ollama", + "refresh_models": "Atualizar Modelos", + "refreshing_models": "A atualizar…", + "enable_automatic_indexing": "Ativar indexação automática", + "rebuild_index": "Reconstruir Índice", + "rebuild_index_error": "Ocorreu um erro ao iniciar a reconstrução do índice. Verifique os logs para obter pormenores.", + "note_title": "Título da nota", + "error": "Erro", + "last_attempt": "Última Tentativa", + "actions": "Ações", + "retry": "Tentar novamente", + "partial": "{{ percentage }}% concluído", + "retry_queued": "Nota enfileirada para nova tentativa", + "retry_failed": "Falha ao enfileirar nota para nova tentativa", + "max_notes_per_llm_query": "Máximo de Notas por Consulta", + "max_notes_per_llm_query_description": "Quantidade máxima de notas similares para incluir no contexto da IA", + "active_providers": "Provedores Ativos", + "disabled_providers": "Provedores Desativados", + "remove_provider": "Remover provedor da pesquisa", + "restore_provider": "Restaurar provedor na pesquisa", + "similarity_threshold": "Tolerância de Similaridade", + "similarity_threshold_description": "Pontuação máxima de similaridade (0-1) para notas a serem incluídas no contexto das consultas de LLM", + "reprocess_index": "Reconstruir Índice de Pesquisa", + "reprocessing_index": "A reconstruir…", + "reprocess_index_started": "Otimiação do índice de pesquisa iniciado em plano de fundo", + "reprocess_index_error": "Erro ao reconstruir índice de pesquisa", + "index_rebuild_progress": "Andamento da Reconstrução do Índice", + "index_rebuilding": "A otimizar índice ({{percentage}}%)", + "index_rebuild_complete": "Otimização de índice finalizada", + "index_rebuild_status_error": "Erro ao verificar o estado da reconstrução do índice", + "never": "Nunca", + "processing": "A processar ({{percentage}}%)", + "incomplete": "Incompleto ({{percentage}}%)", + "complete": "Completo (100%)", + "refreshing": "A atualizar…", + "auto_refresh_notice": "A atualizar automaticamente a cada {{seconds}} segundos", + "note_queued_for_retry": "Nota enfileirada para nova tentativa", + "failed_to_retry_note": "Falha ao retentar nota", + "all_notes_queued_for_retry": "Todas as notas com falha enfileiradas para nova tentativa", + "failed_to_retry_all": "Falha ao retentar notas", + "ai_settings": "Configurações IA", + "api_key_tooltip": "Chave de API para aceder o serviço", + "empty_key_warning": { + "anthropic": "A chave de API Anthropic está vazia. Por favor, digite uma chave de API válida.", + "openai": "A chave de API OpenAI está vazia. Por favor, digite uma chave de API válida.", + "voyage": "A chave de API da Voyage API está vazia. Por favor, digite uma chave de API válida.", + "ollama": "A chave de API da Ollama API está vazia. Por favor, digite uma chave de API válida." + }, + "agent": { + "processing": "A processar…", + "thinking": "A pensar…", + "loading": "A carregar…", + "generating": "A gerir…" + }, + "name": "IA", + "openai": "OpenAI", + "use_enhanced_context": "Usar contexto aprimorado", + "enhanced_context_description": "Alimentar IA com mais contexto sobre a nota e as suas notas relacionadas para melhores respostas", + "show_thinking": "Exibir pensamento", + "show_thinking_description": "Exibir o processo de linha de raciocínio da AI", + "enter_message": "Digite a sua mensagem…", + "error_contacting_provider": "Erro ao contactar o provedor de IA. Por favor, verifique as suas configurações e a sua conexão à internet.", + "error_generating_response": "Erro ao gerar resposta da IA", + "index_all_notes": "Indexar Todas as Notas", + "index_status": "Estado do Índice", + "indexed_notes": "Notas Indexadas", + "indexing_stopped": "Indexação interrompida", + "indexing_in_progress": "Indexação em andamento…", + "last_indexed": "Última Indexada", + "n_notes_queued_0": "{{ count }} nota enfileirada para indexação", + "n_notes_queued_1": "{{ count }} notas enfileiradas para indexação", + "n_notes_queued_2": "{{ count }} notas enfileiradas para indexação", + "note_chat": "Conversa de Nota", + "notes_indexed_0": "{{ count }} nota indexada", + "notes_indexed_1": "{{ count }} notas indexadas", + "notes_indexed_2": "{{ count }} notas indexadas", + "sources": "Origens", + "start_indexing": "Iniciar Indexação", + "use_advanced_context": "Usar Contexto Avançado", + "ollama_no_url": "Ollama não está configurado. Por favor, digite uma URL válida.", + "chat": { + "root_note_title": "Conversas IA", + "root_note_content": "Esta nota contém as suas conversas com IA gravdas.", + "new_chat_title": "Nova Conversa", + "create_new_ai_chat": "Criar Conversa IA" + }, + "create_new_ai_chat": "Criar Conversa IA", + "configuration_warnings": "Há problemas com a sua configuração de IA. Por favor, verifique as suas configurações.", + "experimental_warning": "O recurso de LLM atualmente é experimental - você foi avisado.", + "selected_provider": "Provedor Selecionado", + "selected_provider_description": "Escolha o provedor de IA para conversas e recursos de completar", + "select_model": "Selecionar modelo…", + "select_provider": "Selecionar provedor…", + "ai_enabled": "Recursos de IA ativados", + "ai_disabled": "Recursos de IA desativados", + "no_models_found_online": "Nenhum modelo encontrado. Por favor, verifique a sua chave de API e as configurações.", + "no_models_found_ollama": "Nenhum modelo Ollama encontrado. Por favor, verifique se o Ollama está em execução.", + "error_fetching": "Erro ao obter modelos: {{error}}" + }, + "zoom_factor": { + "title": "Fator do Zoom (apenas versão de área de trabalho)", + "description": "O zoom também pode ser controlado com atalhos CTRL+- e CTRL+=." + }, + "code_auto_read_only_size": { + "title": "Tamanho para Somente Leitura Automático", + "description": "O tamanho para nota somente leitura automático é o tamanho após o qual as notas serão exibidas num modo somente leitura (por razões de desempenho).", + "label": "Tamanho para somente leitura automático (notas de código)", + "unit": "caracteres" + }, + "code-editor-options": { + "title": "Editor" + }, + "code_mime_types": { + "title": "Tipos MIME disponíveis no dropdown" + }, + "vim_key_bindings": { + "use_vim_keybindings_in_code_notes": "Atribuições de teclas do Vim", + "enable_vim_keybindings": "Ative as atribuições de teclas do Vim em notas de código (sem modo ex)" + }, + "wrap_lines": { + "wrap_lines_in_code_notes": "Quebrar linhas em notas de código", + "enable_line_wrap": "Ativar Quebra de Linha (pode ser necessário recarregar o frontend para entrar em vigor)" + }, + "images": { + "images_section_title": "Imagens", + "download_images_automatically": "Descarregar imagens automaticamente para uso offline.", + "download_images_description": "HTML colado pode conter referências a imagens on-line, Trilium vai procurar estas referências e descarregar as imagens para que estejam disponíveis off-line.", + "enable_image_compression": "Ativar compressão de imagem", + "max_image_dimensions": "Largura/altura máxima de uma imagem (a imagem será redimensionada se exceder este valor).", + "max_image_dimensions_unit": "pixels", + "jpeg_quality_description": "Qualidade JPEG (10 - pior qualidade, 100 - melhor qualidade, 50 - 85 é recomendado)" + }, + "attachment_erasure_timeout": { + "attachment_erasure_timeout": "Tempo Limite para Apagar um Anexo", + "attachment_auto_deletion_description": "Os anexos são automaticamente apagados (e apagados) se já não forem referenciados pela sua nota após um tempo definido.", + "erase_attachments_after": "Apagar anexos não utilizados após:", + "manual_erasing_description": "Também pode ativar a apagar manualmente (sem considerar o timeout definido acima):", + "erase_unused_attachments_now": "Apagar anexos não utilizados agora", + "unused_attachments_erased": "Os anexos não utilizados foram apagados." + }, + "network_connections": { + "network_connections_title": "Conexões de Rede", + "check_for_updates": "Verificar atualizações automaticamente" + }, + "note_erasure_timeout": { + "note_erasure_timeout_title": "Tempo Limite para Apagar uma Nota", + "note_erasure_description": "Notas apagadas (e atributos, revisões...) inicialmente são apenas marcadas como apagadas e é possível recuperá-las a partir do diálogo de Notas Recentes. Depois de um tempo, as notas apagadas são \"apagadas\", o que significa que o seu conteúdo já não é recuperável. Esta configuração permite configurar o período entre apagar e apagar a nota.", + "erase_notes_after": "Apagar notas após:", + "manual_erasing_description": "Também pode ativar a apagar manualmente (sem considerar o timeout definido acima):", + "erase_deleted_notes_now": "Apagar as notas apagadas agora", + "deleted_notes_erased": "As notas apagadas foram removidas permanentemente." + }, + "revisions_snapshot_interval": { + "note_revisions_snapshot_interval_title": "Intervalo de Captura de Versão da Nota", + "note_revisions_snapshot_description": "O intervalo de captura de versão da nota é o tempo após o qual uma nova revisão será criada para a nota. Veja wiki para mais informações.", + "snapshot_time_interval_label": "Intervalo de Captura de Versão da Nota:" + }, + "revisions_snapshot_limit": { + "note_revisions_snapshot_limit_title": "Limite de Capturas das Versões da Nota", + "note_revisions_snapshot_limit_description": "O limite de número de captura de versões das notas refere-se ao número máximo de revisões que podem ser gravadas para cada nota. Onde -1 significa nenhum limite, 0 significa apagar todas as revisões. Pode definir as revisões máximas para uma única nota através da etiqueta #versioningLimit.", + "snapshot_number_limit_label": "Quantidade limite de capturas de versão:", + "snapshot_number_limit_unit": "capturas", + "erase_excess_revision_snapshots": "Apagar capturas de versão excedentes agora", + "erase_excess_revision_snapshots_prompt": "As capturas de versão excedentes foram apagadas." + }, + "search_engine": { + "title": "Motor de Pesquisa", + "custom_search_engine_info": "O motor de pesquisa personalizado requer que sejam definidos um nome e uma URL. Se um destes não estiver definido, o DuckDuckGo será usado como o motor de pesquisa padrão.", + "predefined_templates_label": "Modelos de motor de pesquisa predefinidos", + "bing": "Bing", + "baidu": "Baidu", + "duckduckgo": "DuckDuckGo", + "google": "Google", + "custom_name_label": "Nome do motor de pesquisa personalizado", + "custom_name_placeholder": "Nome personalizado do motor de pesquisa", + "custom_url_label": "A URL do motor de pesquisa personalizado deve incluir {keyword} como um substituto para o termo pesquisado.", + "custom_url_placeholder": "URL personalizada do motor de pesquisa", + "save_button": "Gravar" + }, + "tray": { + "title": "Bandeja do Sistema", + "enable_tray": "Ativar bandeja (O Trilium precisar ser reiniciado para esta mudança entrar em vigor)" + }, + "heading_style": { + "title": "Estilo de Título", + "plain": "Plano", + "underline": "Sublinhado", + "markdown": "Estilo Markdown" + }, + "highlights_list": { + "title": "Lista de Destaques", + "description": "Pode personalizar a lista de destaques exibida no painel da direita:", + "bold": "Texto em negrito", + "italic": "Texto em itálico", + "underline": "Texto sublinhado", + "color": "Texto colorido", + "bg_color": "Texto com cor de fundo", + "visibility_title": "Visibilidade da Lista de Destaques", + "visibility_description": "Pode esconder o componente de destaques por nota adicionado a etiqueta #hideHighlightWidget.", + "shortcut_info": "Pode configurar um atalhe de teclado para alternar rapidamente o painel da direita (incluindo os Destaques) em Opções -> Atalhos (nome 'toggleRightPane')." + }, + "table_of_contents": { + "title": "Tabela de Conteúdos", + "description": "A tabela de conteúdos irá aparecer em notas de texto que possuam mais que um número definido de títulos. Pode personalizar este número:", + "unit": "títulos", + "disable_info": "Também pode usar esta opção para desativar a Tabela de Conteúdos por configurar um número muito alto.", + "shortcut_info": "Pode configurar um atalhe de teclado para alternar rapidamente o painel da direita (incluindo a Tabela de Conteúdos) em Opções -> Atalhos (nome 'toggleRightPane')." + }, + "text_auto_read_only_size": { + "title": "Tamanho para Somente Leitura Automático", + "description": "O tamanho para nota somente leitura automático é o tamanho a partir do qual as notas serão exibidas em modo somente leitura (por razões de desempenho).", + "label": "Tamanho automático para somente leitura (notas de texto)", + "unit": "caracteres" + }, + "custom_date_time_format": { + "title": "Formato Personalizado de Data/Hora", + "description": "Personaliza o formato de data e hora inseridos via ou barra de ferramentas. Veja a documentação do Day.js para os tokens de formatos disponíveis.", + "format_string": "Cadeia de formato:", + "formatted_time": "Data/hora formatada:" + }, + "i18n": { + "title": "Localização", + "language": "Idioma", + "first-day-of-the-week": "Primeiro dia da semana", + "sunday": "Domingo", + "monday": "Segunda-feira", + "first-week-of-the-year": "Primeiro dia do ano", + "first-week-contains-first-day": "Primeira semana que contenha o primeiro dia do ano", + "first-week-contains-first-thursday": "Primeira semana que contenha a primeira quinta-feira do ano", + "first-week-has-minimum-days": "Primeira semana que contenha um mínimo de dias", + "min-days-in-first-week": "Mínimo de dias da primeira semana", + "first-week-info": "Primeira semana que contenha a primeira Quinta-feira do ano é baseado na ISO 8601.", + "first-week-warning": "Alterar as opções de primeira semana pode causar duplicidade nas Notas Semanais existentes e estas Notas não serão atualizadas de acordo.", + "formatting-locale": "Formato de data e número" + }, + "backup": { + "automatic_backup": "Backup automático", + "automatic_backup_description": "O Trilium pode fazer o backup da base de dados automaticamente:", + "enable_daily_backup": "Ativar backup diário", + "enable_weekly_backup": "Ativar backup semanal", + "enable_monthly_backup": "Ativar backup mensal", + "backup_recommendation": "É recomendado manter o backup ativado, mas isto pode fazer com que a inicialização da aplicação seja lenta com grandes bases de dados e/ou dispositivos de armazenamento lentos.", + "backup_now": "Realizar backup agora", + "backup_database_now": "Realizar backup da base de dados agora", + "existing_backups": "Backups existentes", + "date-and-time": "Data & hora", + "path": "Caminho", + "database_backed_up_to": "Backup da base de dados criado em {{backupFilePath}}", + "no_backup_yet": "ainda não existe nenhum backup" + }, + "etapi": { + "title": "ETAPI", + "description": "ETAPI é uma API REST usada para aceder a instância do Trilium programaticamente, sem interface gráfica.", + "see_more": "Veja mais pormenores no {{- link_to_wiki}}, na {{- link_to_openapi_spec}} ou na {{- link_to_swagger_ui}}.", + "wiki": "wiki", + "openapi_spec": "Especificação OpenAPI do ETAPI", + "swagger_ui": "ETAPI Swagger UI", + "create_token": "Criar token ETAPI", + "existing_tokens": "Tokens existentes", + "no_tokens_yet": "Ainda não existem tokens. Clique no botão acima para criar um.", + "token_name": "Nome do token", + "created": "Criado", + "actions": "Ações", + "new_token_title": "Novo token ETAPI", + "new_token_message": "Por favor, insira o nome do novo token", + "default_token_name": "novo token", + "error_empty_name": "O nome do token não pode ser vazio", + "token_created_title": "Token ETAPI criado", + "token_created_message": "Copie o token criado para a área de transferência. O Trilium armazena o token em hash e esta é a última vez que poderá visualizá-lo.", + "rename_token": "Renomear este token", + "delete_token": "Apagar / desativar este token", + "rename_token_title": "Renomear token", + "rename_token_message": "Por favor, insira o nome do novo token", + "delete_token_confirmation": "Tem certeza que deseja apagar o token ETAPI \"{{name}}\"?" + }, + "options_widget": { + "options_status": "Estado das opções", + "options_change_saved": "As alterações nas opções foram gravadas." + }, + "password": { + "heading": "Palavra-passe", + "alert_message": "Por favor, certifique-se de se lembrar da sua palavra-passe nova. A palavra-passe é usada para aceder a interface web e para criptografar notas protegidas. Sese esquecer da sua palavra-passe, todas as suas notas protegidas serão permanentemente perdidas.", + "reset_link": "Clique aqui para redefiní-la.", + "old_password": "Palavra-passe antiga", + "new_password": "Nova palavra-passe", + "new_password_confirmation": "Confirmação da nova palavra-passe", + "change_password": "Alterar palavra-passe", + "protected_session_timeout": "Tempo Limite da Sessão Protegida", + "protected_session_timeout_description": "O tempo limite da sessão protegida é o período após o qual a sessão protegida é apagada da memória do navegador. Este tempo é contado a partir da última interação com notas protegidas. Veja", + "wiki": "wiki", + "for_more_info": "para mais informações.", + "protected_session_timeout_label": "Tempo limite da sessão protegida:", + "reset_confirmation": "Ao redefinir a palavra-passe, perderá o acesso a todas as suas notas protegidas existentes para sempre. Tem certeza que deseja redefinir a palavra-passe?", + "reset_success_message": "A palavra-passe foi redefinida. Por favor, defina uma nova palavra-passe", + "change_password_heading": "Alterar Palavra-passe", + "set_password_heading": "Definir Palavra-passe", + "set_password": "Definir Palavra-passe", + "password_mismatch": "As novas palavras-passe não são iguais.", + "password_changed_success": "A palavra-passe foi alterada. O Trilium será recarregado após pressionar OK." + }, + "multi_factor_authentication": { + "title": "Autenticação Multifator", + "description": "A Autenticação Multifator (MFA) adiciona uma camada extra de segurança à sua conta. Em vez de apenas digitar uma palavra-passe para fazer login, a MFA exige que forneça uma ou mais evidências adicionais para verificar a sua identidade. Dessa forma, mesmo que alguém obtenha a sua palavra-passe, ainda não poderá aceder a sua conta sem a segunda informação. É como adicionar uma fechadura extra à sua porta, a fazer invadir muito mais difícil para qualquer outra pessoa.

    Siga as instruções abaixo para ativar a MFA. Se a configuração não for feita corretamente, o login voltará a usar apenas a palavra-passe.", + "mfa_enabled": "Ativar a Autenticação Multifator", + "mfa_method": "Método MFA", + "electron_disabled": "A Autenticação Multifator não é suportada na versão desktop atualmente.", + "totp_title": "Palavra-passe Única Temporária baseada em Tempo (TOTP)", + "totp_description": "\"TOTP (Palavra-passe Única Temporária baseada em Tempo) é um recurso de segurança que gera um código único e temporário, que muda a cada 30 segundos. Utiliza este código junto com a sua palavra-passe para fazer login na conta, fazer acessar-la muito mais difícil para qualquer outra pessoa.", + "totp_secret_title": "Gerar segredo TOTP", + "totp_secret_generate": "Gerar segredo TOTP", + "totp_secret_regenerate": "Regenerar segredo TOTP", + "no_totp_secret_warning": "Para ativar o TOTP, primeiro deve gerar um segredo TOTP.", + "totp_secret_description_warning": "Após gerar um novo segredo TOTP, será necessário fazer login novamente com o novo segredo TOTP.", + "totp_secret_generated": "Segredo TOTP gerado", + "totp_secret_warning": "Por favor, grave o segredo gerado num local seguro. Ele não será exibido novamente.", + "totp_secret_regenerate_confirm": "Tem certeza que deseja regenerar o segredo TOTP? Isto invalidará o segredo TOTP anterior e todos os códigos de recuperação existentes.", + "recovery_keys_title": "Chaves de Recuperação do Single Sign-On", + "recovery_keys_description": "As chaves de recuperação do Single Sign-On são usadas para fazer login caso você não consiga aceder os seus códigos do Authenticator.", + "recovery_keys_description_warning": "As chaves de recuperação não serão exibidas novamente após sair da página. Mantenha-as num local seguro.
    Após o uso, uma chave de recuperação não poderá ser usada novamente.", + "recovery_keys_error": "Erro ao gerar códigos de recuperação", + "recovery_keys_no_key_set": "Nenhum código de recuperação definido", + "recovery_keys_generate": "Gerar Códigos de Recuperação", + "recovery_keys_regenerate": "Regenerar Códigos de Recuperação", + "recovery_keys_used": "Usado: {{date}}", + "recovery_keys_unused": "Código de recuperação {{index}} não utilizado", + "oauth_title": "OAuth/OpenID", + "oauth_description": "OpenID é uma forma padronizada de permitir que faça login em sites usando uma conta de outro serviço, como o Google, para verificar a sua identidade. O emissor padrão é o Google, mas pode alterá-lo para qualquer outro provedor OpenID. Consulte aqui para mais informações. Siga estas instruções para configurar um serviço OpenID através do Google.", + "oauth_description_warning": "Para ativar o OAuth/OpenID, precisa definir a URL base do OAuth/OpenID, o client ID e o client secret no ficheiro config.ini e reiniciar a aplicação. Se quiser configurar via variáveis de ambiente, defina TRILIUM_OAUTH_BASE_URL, TRILIUM_OAUTH_CLIENT_ID e TRILIUM_OAUTH_CLIENT_SECRET.", + "oauth_user_account": "Conta do Utilizador: ", + "oauth_user_email": "E-mail do Utilizador: ", + "oauth_user_not_logged_in": "Não está logado!" + }, + "shortcuts": { + "keyboard_shortcuts": "Atalhos de Teclado", + "multiple_shortcuts": "Atalhos múltiplos para a mesma ação podem ser separados por vírgula.", + "electron_documentation": "Consulte a documentação do Electron para ver os modificadores e códigos de teclas disponíveis.", + "type_text_to_filter": "Digite para filtrar atalhos...", + "action_name": "Nome da ação", + "shortcuts": "Atalhos", + "default_shortcuts": "Atalhos padrão", + "description": "Descrição", + "reload_app": "Recarregar aplicação para aplicar alterações", + "set_all_to_default": "Redefinir todos os atalhos para o padrão", + "confirm_reset": "Tem certeza que deseja redefinir todos os atalhos de teclado para o padrão?" + }, + "spellcheck": { + "title": "Verificação Ortográfica", + "description": "Estas opções aplicam-se apenas às versões desktop; os navegadores usarão a sua própria verificação ortográfica nativa.", + "enable": "Ativar verificação ortográfica", + "language_code_label": "Código(s) de idioma", + "language_code_placeholder": "por exemplo \"en-US\", \"de-AT\", \"pt-BR\"", + "multiple_languages_info": "Múltiplos idiomas podem ser separados por vírgula, por exemplo: \"en-US, de-DE, pt-BR, cs\". ", + "available_language_codes_label": "Códigos de idioma disponíveis:", + "restart-required": "As alterações nas opções de verificação ortográfica terão efeito após reiniciar a aplicação." + }, + "sync_2": { + "config_title": "Configuração da Sincronização", + "server_address": "Endereço da instância do Servidor", + "timeout": "Tempo limite da sincronização", + "timeout_unit": "milisegundos", + "proxy_label": "Servidor proxy para sincronização (opcional)", + "note": "Nota", + "note_description": "Se deixar a configuração de proxy em branco, o proxy do sistema será usado (aplica-se apenas à versão desktop/Electron).", + "special_value_description": "Outro valor especial é noproxy, que força a ignorar até mesmo o proxy do sistema e respeita NODE_TLS_REJECT_UNAUTHORIZED.", + "save": "Gravar", + "help": "Ajuda", + "test_title": "Teste de Sincronização", + "test_description": "Isto testará a conexão e o handshake com o servidor de sincronização. Se o servidor de sincronização não estiver inicializado, isto irá configurá-lo para sincronizar com o documento local.", + "test_button": "Testar sincronização", + "handshake_failed": "Falha no handshake com o servidor de sincronização, erro: {{message}}" + }, + "api_log": { + "close": "Fechar" + }, + "attachment_detail_2": { + "will_be_deleted_in": "Este anexo será apagado automaticamente em {{time}}", + "will_be_deleted_soon": "Este anexo será apagado automaticamente em breve", + "deletion_reason": ", porque o anexo não está associado ao conteúdo da nota. Para evitar de apagar, adicione o anexo novamente ao conteúdo ou converta o anexo numa nota.", + "role_and_size": "Regra: {{role}}, Tamanho: {{size}}", + "link_copied": "Ligação do anexo copiada para a área de transferência.", + "unrecognized_role": "Regra desconhecida de anexo '{{role}}'." + }, + "bookmark_switch": { + "bookmark": "Favorito", + "bookmark_this_note": "Favoritar esta nota no painel da esquerda", + "remove_bookmark": "Remover favorito" + }, + "editability_select": { + "auto": "Auto", + "read_only": "Somente leitura", + "always_editable": "Sempre Editável", + "note_is_editable": "A nota é editável se não for muito longa.", + "note_is_read_only": "A nota é somente leitura, mas pode ser editada com um clique no botão.", + "note_is_always_editable": "A nota é sempre editável, independentemente do seu tamanho." + }, + "note-map": { + "button-link-map": "Mapa de Ligações", + "button-tree-map": "Mapa em Árvore" + }, + "tree-context-menu": { + "open-in-a-new-tab": "Abrir numa nova guia", + "open-in-a-new-split": "Abrir num novo painel dividido", + "insert-note-after": "Inserir nota após", + "insert-child-note": "Inserir nota filha", + "delete": "Apagar", + "search-in-subtree": "Pesquisar na subárvore", + "hoist-note": "Fixar nota", + "unhoist-note": "Desafixar nota", + "edit-branch-prefix": "Editar prefixo da ramificação", + "advanced": "Avançado", + "expand-subtree": "Expandir subárvore", + "collapse-subtree": "Recolher subárvore", + "sort-by": "Ordenar por...", + "recent-changes-in-subtree": "Alterações recentes na subárvore", + "convert-to-attachment": "Converter para anexo", + "copy-note-path-to-clipboard": "Copiar caminho da nota para a área de transferência", + "protect-subtree": "Proteger subárvore", + "unprotect-subtree": "Desproteger subárvore", + "copy-clone": "Copiar / clonar", + "clone-to": "Clonar para...", + "cut": "Recortar", + "move-to": "Mover para...", + "paste-into": "Colar em", + "paste-after": "Colar depois", + "duplicate": "Duplicar", + "export": "Exportar", + "import-into-note": "Importar na nota", + "apply-bulk-actions": "Aplicar ações em massa", + "converted-to-attachments": "{{count}} notas foram convertidas em anexos.", + "convert-to-attachment-confirm": "Tem certeza que deseja converter as notas selecionadas em anexos das suas notas-pai?", + "open-in-popup": "Edição rápida" + }, + "shared_info": { + "shared_publicly": "Esta nota é partilhada publicamente em {{- link}}.", + "shared_locally": "Esta nota é partilhada localmente em {{- link}}.", + "help_link": "Para ajuda, visite a wiki." + }, + "note_types": { + "text": "Texto", + "code": "Código", + "saved-search": "Pesquisa Gravada", + "relation-map": "Map de Relação", + "note-map": "Map de Notas", + "render-note": "Nota de Renderização", + "book": "Coleção", + "mermaid-diagram": "Diagrama Mermaid", + "canvas": "Quadros", + "web-view": "Visualização Web", + "mind-map": "Mapa Mental", + "file": "Ficheiro", + "image": "Imagem", + "launcher": "Lançador", + "doc": "Documento", + "widget": "Widget", + "confirm-change": "Não é recomentado alterar o tipo da nota quando o conteúdo da nota não está vazio. Quer continuar assim mesmo?", + "geo-map": "Mapa geográfico", + "beta-feature": "Beta", + "ai-chat": "Chat IA", + "task-list": "Lista de Tarefas", + "new-feature": "Novo", + "collections": "Coleções" + }, + "protect_note": { + "toggle-on": "Proteger a nota", + "toggle-off": "Desproteger a nota", + "toggle-on-hint": "A nota não está protegida, clique para protegê-la", + "toggle-off-hint": "A nota está protegida, clique para desprotegê-la" + }, + "shared_switch": { + "shared": "Partilhado", + "toggle-on-title": "Partilhar a nota", + "toggle-off-title": "Parar de partilhar a nota", + "shared-branch": "Esta nota só existe como uma nota partilhada, depois parar de partilhar irá apagá-la. Deseja continuar e apagar esta nota?", + "inherited": "Não foi possível deixar de partilhar a nota porque ela é partilhada através da herança de uma nota superior." + }, + "template_switch": { + "template": "Modelo", + "toggle-on-hint": "Transformar a nota num modelo", + "toggle-off-hint": "Deixar de usar a nota como um modelo" + }, + "open-help-page": "Abrir página de ajuda", + "find": { + "case_sensitive": "Diferencia maiúsculas de minúsculas", + "match_words": "Corresponder palavras", + "find_placeholder": "Procurar no texto...", + "replace_placeholder": "Substituir por...", + "replace": "Substituir", + "replace_all": "Substituir tudo" + }, + "highlights_list_2": { + "title": "Lista de Destaques", + "options": "Opções" + }, + "quick-search": { + "placeholder": "Pesquisa rápida", + "searching": "A pesquisar...", + "no-results": "Nenhum resultado encontrado", + "more-results": "... e mais {{number}} resultados.", + "show-in-full-search": "Exibir na pesquisa completa" + }, + "note_tree": { + "collapse-title": "Recolher árvore de notas", + "scroll-active-title": "Ir até a nota ativa", + "tree-settings-title": "Configurações da árvore", + "hide-archived-notes": "Ocultar notas arquivadas", + "automatically-collapse-notes": "Recolher notas automaticamente", + "automatically-collapse-notes-title": "As notas serão recolhidas após um tempo de inatividade para simplificar a árvore.", + "save-changes": "Gravar e aplicar alterações", + "auto-collapsing-notes-after-inactivity": "A recolher notas automaticamente após inatividade...", + "saved-search-note-refreshed": "A nota de pesquisa gravada foi atualizada.", + "hoist-this-note-workspace": "Fixar esta nota (workspace)", + "refresh-saved-search-results": "Atualizar resultados de pesquisa gravados", + "create-child-note": "Criar nota filha", + "unhoist": "Desafixar", + "toggle-sidebar": "Alternar barra lateral" + }, + "title_bar_buttons": { + "window-on-top": "Manter Janela no Topo" + }, + "note_detail": { + "could_not_find_typewidget": "Não foi possível encontrar typeWidget para o tipo '{{type}}'" + }, + "note_title": { + "placeholder": "digite o título da nota aqui..." + }, + "search_result": { + "no_notes_found": "Nenhuma nota encontrada para os parâmetros de pesquisa digitados.", + "search_not_executed": "A pesquisa ainda não foi executada. Clique no botão \"Pesquisar\" acima para ver os resultados." + }, + "spacer": { + "configure_launchbar": "Configurar Barra de Lançamento" + }, + "sql_result": { + "no_rows": "Esta consulta não retornou nenhuma linha" + }, + "sql_table_schemas": { + "tables": "Tabelas" + }, + "tab_row": { + "close_tab": "Fechar guia", + "add_new_tab": "Adicionar nova guia", + "close": "Fechar", + "close_other_tabs": "Fechar as outras guias", + "close_right_tabs": "Fechar as guias à direita", + "close_all_tabs": "Fechar todas as guias", + "reopen_last_tab": "Reabrir a última guia fechada", + "move_tab_to_new_window": "Mover esta guia para uma nova janela", + "copy_tab_to_new_window": "Copiar esta guia para uma nova janela", + "new_tab": "Nova guia" + }, + "toc": { + "table_of_contents": "Tabela de Conteúdos", + "options": "Opções" + }, + "watched_file_update_status": { + "file_last_modified": "O ficheiro foi modificado pela última vez em .", + "upload_modified_file": "Enviar ficheiro modificado", + "ignore_this_change": "Ignorar esta alteração" + }, + "app_context": { + "please_wait_for_save": "Por favor aguarde alguns segundos para finalizar a gravação e depois tente novamente." + }, + "note_create": { + "duplicated": "A nota \"{{title}}\" foi duplicada." + }, + "image": { + "copied-to-clipboard": "Uma referência para esta imagem foi copiada para a área de transferência. Isto pode ser colado em qualquer nota de texto.", + "cannot-copy": "Não foi possível copiar a referência da imagem para a área de transferência." + }, + "clipboard": { + "cut": "Nota(s) recortadas(s) para a área de transferência.", + "copied": "Not(s) copiada(s) para a área de transferência.", + "copy_failed": "Não foi possível copiar para a área de transferência por problemas de permissão.", + "copy_success": "Copiado para a área de transferência." + }, + "entrypoints": { + "note-revision-created": "A revisão da nota foi criada.", + "note-executed": "Nota executada.", + "sql-error": "Ocorreu um erro durante a execução da consulta SQL: {{message}}" + }, + "branches": { + "cannot-move-notes-here": "Não é possível mover notas para cá.", + "delete-status": "Apagar estado", + "delete-notes-in-progress": "Apagar notas em andamento: {{count}}", + "delete-finished-successfully": "Apagar concluído com sucesso.", + "undeleting-notes-in-progress": "Restauração de notas em andamento: {{count}}", + "undeleting-notes-finished-successfully": "Restauração de notas concluída com sucesso." + }, + "frontend_script_api": { + "async_warning": "Está a passar uma função assíncrona para `api.runOnBackend()`, o que provavelmente não irá funcionar como esperado.\\nTorne a função síncrona (a remover a palavra-chave `async`), ou use `api.runAsyncOnBackendWithManualTransactionHandling()`.", + "sync_warning": "Está a passar uma função síncrona para `api.runAsyncOnBackendWithManualTransactionHandling()`,\\nquando deveria usar `api.runOnBackend()` no lugar." + }, + "ws": { + "sync-check-failed": "A verificação de sincronização falhou!", + "consistency-checks-failed": "A verificação de consistência falhou! Veja os logs para pormenores.", + "encountered-error": "Encontrado o erro \"{{message}}\", verifique o console." + }, + "hoisted_note": { + "confirm_unhoisting": "A nota solicitada '{{requestedNote}}' está fora da árvore da nota fixada '{{hoistedNote}}' e precisa desafixar para aceder a nota. Quer prosseguir e desafixar?" + }, + "launcher_context_menu": { + "reset_launcher_confirm": "Deseja realmente reiniciar \"{{title}}\"? Todos os dados / configurações desta nota (e as suas filhas) serão perdidos o lançador irá retornar para a sua localização original.", + "add-note-launcher": "Adicionar um lançador de nota", + "add-script-launcher": "Adicionar um lançador de script", + "add-custom-widget": "Adicionar um componente personalizado", + "add-spacer": "Adicionar um espaçador", + "delete": "Apagar ", + "reset": "Reiniciar", + "move-to-visible-launchers": "Mover para lançadores visíveis", + "move-to-available-launchers": "Mover para lançadores disponíveis", + "duplicate-launcher": "Duplicar o lançador " + }, + "editable-text": { + "auto-detect-language": "Detetado automaticamente" + }, + "highlighting": { + "title": "Blocos de Código", + "description": "Controla o destaque de sintaxe para blocos de código dentro de notas de texto, notas de código não serão afetadas.", + "color-scheme": "Esquema de Cor" + }, + "code_block": { + "word_wrapping": "Quebra automática de linhas", + "theme_none": "Sem destaque de sintaxe", + "theme_group_light": "Temas claros", + "theme_group_dark": "Temas escuros", + "copy_title": "Copiar para a área de transferência" + }, + "classic_editor_toolbar": { + "title": "Formatação" + }, + "editor": { + "title": "Editor" + }, + "editing": { + "editor_type": { + "label": "Barra de formatação", + "floating": { + "title": "A flutuar", + "description": "ferramentas de edição aparecem perto do cursor;" + }, + "fixed": { + "title": "Fixado", + "description": "ferramentas de edição aparecem na guia de faixa \"Formatação\"." + }, + "multiline-toolbar": "Exibir a barra de ferramentas em múltiplas linhas se não couber." + } + }, + "electron_context_menu": { + "add-term-to-dictionary": "Adicionar \"{{term}}\" ao dicionário", + "cut": "Cortar", + "copy": "Copiar", + "copy-link": "Copiar ligação", + "paste": "Colar", + "paste-as-plain-text": "Colar como texto sem formatação", + "search_online": "Pesquisar por \"{{term}}\" com {{searchEngine}}" + }, + "image_context_menu": { + "copy_reference_to_clipboard": "Copiar referência para a área de transferência", + "copy_image_to_clipboard": "Copiar imagem para a área de transferência" + }, + "link_context_menu": { + "open_note_in_new_tab": "Abrir nota em nova guia", + "open_note_in_new_split": "Abrir nota em nova divisão", + "open_note_in_new_window": "Abrir nota em nova janela", + "open_note_in_popup": "Edição rápida" + }, + "electron_integration": { + "desktop-application": "Aplicação Desktop", + "native-title-bar": "Barra de título nativa", + "native-title-bar-description": "Para Windows e macOS, manter a barra de título nativa desativada faz a aplicação parecer mais compacta. No Linux, manter a barra de título nativa ativada faz a aplicação se integrar melhor com o restante do sistema.", + "background-effects": "Ativar efeitos de fundo (apenas Windows 11)", + "restart-app-button": "Reiniciar a aplicação para ver as alterações", + "zoom-factor": "Fator de Zoom" + }, + "note_autocomplete": { + "search-for": "Pesquisar por \"{{term}}\"", + "create-note": "Criar conectar nota filha \"{{term}}\"", + "insert-external-link": "Inserir ligação externa para \"{{term}}\"", + "clear-text-field": "Limpar campo de texto", + "show-recent-notes": "Exibir notas recentes", + "full-text-search": "Pesquisa por texto completo" + }, + "note_tooltip": { + "note-has-been-deleted": "A nota foi apagada.", + "quick-edit": "Edição rápida" + }, + "geo-map": { + "create-child-note-title": "Criar uma nova nota filha e adicioná-la ao mapa", + "create-child-note-instruction": "Clique no mapa para criar uma nova nota naquele local ou tecle Esc para dispensar.", + "unable-to-load-map": "Não foi possível carregar o mapa." + }, + "geo-map-context": { + "open-location": "Abrir local", + "remove-from-map": "Remover do mapa", + "add-note": "Adicionar um marcador neste local" + }, + "help-button": { + "title": "Abrir a página de ajuda relevante" + }, + "duration": { + "seconds": "Segundos", + "minutes": "Minutos", + "hours": "Horas", + "days": "Dias" + }, + "share": { + "title": "Configurações de Compartilhamento", + "redirect_bare_domain": "Redirecionar domínio puro para página Partilhar", + "redirect_bare_domain_description": "Redirecionar utilizadores anônimos para a página Partilhar ao invés de exibir o Login", + "show_login_link": "Exibir ligação para o Login no tema de Partilhar", + "show_login_link_description": "Adicionar uma ligação de login no rodapé da página Partilhar", + "check_share_root": "Verificar Estado da Raiz do Partilhar", + "share_root_found": "Partilhar nota raiz '{{noteTitle}}' está pronto", + "share_root_not_found": "Nenhuma nota encontrada com a etiqueta #shareRoot", + "share_root_not_shared": "A nota '{{noteTitle}}' possui a etiqueta #shareRoot mas não é partilhada" + }, + "time_selector": { + "invalid_input": "O valor de tempo digitado não é um número válido.", + "minimum_input": "O valor de tempo digitado deve ser de pelo menos {{minimumSeconds}} segundos." + }, + "tasks": { + "due": { + "today": "Hoje", + "tomorrow": "Amanhã", + "yesterday": "Ontem" + } + }, + "content_widget": { + "unknown_widget": "Componente desconhecido para \"{{id}}\"." + }, + "note_language": { + "not_set": "Não atribuído", + "configure-languages": "Configurar idiomas..." + }, + "content_language": { + "title": "Idiomas do conteúdo", + "description": "Escolha um ou mais idiomas que devem aparecer na seleção de idioma na sessão de Propriedades Básicas de uma nota de texto somente leitura ou editável. Isto irá permitir recursos como verificação ortográfica ou apoio direta-para-esquerda." + }, + "switch_layout_button": { + "title_vertical": "Mover painel de edição para baixo", + "title_horizontal": "Mover painel de edição para a esquerda" + }, + "toggle_read_only_button": { + "unlock-editing": "Desbloquear edição", + "lock-editing": "Bloquear edição" + }, + "png_export_button": { + "button_title": "Exportar diagrama como PNG" + }, + "svg": { + "export_to_png": "O diagrama não pôde ser exportado como PNG." + }, + "code_theme": { + "title": "Aparência", + "word_wrapping": "Quebra automática de linha", + "color-scheme": "Esquema de cor" + }, + "cpu_arch_warning": { + "title": "Por favor, descarregue a versão ARM64", + "message_macos": "O TriliumNext está a executar através de uma tradução Rosetta 2, o que significa que usa a versão Intel (x64) no Apple Silicon Mac. Isto afetará significativamente o desempenho e a duração da pilha.", + "message_windows": "O TriliumNext está a executar através de emulação, o que significa que usa a versão Intel (x64) no Windows num dispositivo ARM. Isto afetará significativamente o desempenho e a duração da pilha.", + "recommendation": "Para uma melhor experiência, por favor, descarregue a versão nativa ARM64 do TriliumNext na nossa página de releases.", + "download_link": "Descarregar Versão Nativa", + "continue_anyway": "Continuar Assim Mesmo", + "dont_show_again": "Não exibir este alerta novamente" + }, + "editorfeatures": { + "title": "Recursos", + "emoji_completion_enabled": "Ativar auto-completar de Emoji", + "note_completion_enabled": "Ativar auto-completar de notas" + }, + "table_view": { + "new-row": "Nova linha", + "new-column": "Nova coluna", + "sort-column-by": "Ordenar por \"{{title}}\"", + "sort-column-ascending": "Crescente", + "sort-column-descending": "Decrescente", + "sort-column-clear": "Limpar ordenação", + "hide-column": "Ocultar coluna \"{{title}}\"", + "show-hide-columns": "Exibir/ocultar colunas", + "row-insert-above": "Inserir linha acima", + "row-insert-below": "Inserir linha abaixo", + "row-insert-child": "Inserir nota filha", + "add-column-to-the-left": "Adicionar coluna à esquerda", + "add-column-to-the-right": "Adicionar coluna à direita", + "edit-column": "Editar coluna", + "delete_column_confirmation": "Tem certeza que deseja apagar esta coluna? O atributo correspondente será removido de todas as notas.", + "delete-column": "Apagar coluna", + "new-column-label": "Etiqueta", + "new-column-relation": "Relação" + }, + "book_properties_config": { + "hide-weekends": "Ocultar fins de semana", + "display-week-numbers": "Exibir números de semana", + "map-style": "Estilo do mapa:", + "max-nesting-depth": "Profundidade máxima de aninhamento:", + "raster": "Raster", + "vector_light": "Vetor (Claro)", + "vector_dark": "Vetor (Escuro)", + "show-scale": "Exibir escala" + }, + "table_context_menu": { + "delete_row": "Apagar linha" + }, + "board_view": { + "move-to": "Mover para", + "insert-above": "Inserir acima", + "insert-below": "Inserir abaixo", + "delete-column": "Apagar coluna", + "delete-column-confirmation": "Tem certeza que deseja apagar esta coluna? O atributo correspondente também será apagado de todas as notas abaixo desta coluna.", + "new-item": "Novo elemento", + "add-column": "Adicionar Coluna" + }, + "command_palette": { + "tree-action-name": "Árvore: {{name}}", + "export_note_title": "Exportar Nota", + "export_note_description": "Exportar a nota atual", + "show_attachments_title": "Exibir Anexos", + "show_attachments_description": "Exibir anexos da nota", + "search_notes_title": "Pesquisar Notas", + "search_notes_description": "Abrir pesquisa avançada", + "search_subtree_title": "Pesquisar na Subárvore", + "search_subtree_description": "Pesquisar dentro da subárvore atual", + "search_history_title": "Exibir Histórico de Pesquisa", + "search_history_description": "Visualizar pesquisas anteriores", + "configure_launch_bar_title": "Configurar Barra de Execução", + "configure_launch_bar_description": "Abrir a configuração da barra de lançamento, para adicionar ou remover elementos." + }, + "content_renderer": { + "open_externally": "Abrir externamente" + }, + "modal": { + "close": "Fechar", + "help_title": "Exibir mais informações sobre este ecrã" + }, + "call_to_action": { + "next_theme_title": "Testar no novo tema do Trilium", + "next_theme_message": "Está a usar o tema legado, deseja experimentar o novo tema?", + "next_theme_button": "Experimentar o novo tema", + "background_effects_title": "Efeitos de fundo estão estáveis agora", + "background_effects_message": "Em dispositivos Windows, efeitos de fundo estão estáveis agora. Os efeitos de fundo adicionam um toque de cor à interface do utilizador borrando o plano de fundo atrás dela. Esta técnica também é usada noutras aplicações como o Windows Explorer.", + "background_effects_button": "Ativar os efeitos de fundo", + "dismiss": "Dispensar" + }, + "settings": { + "related_settings": "Configurações relacionadas" + }, + "settings_appearance": { + "related_code_blocks": "Esquema de cores para blocos de código em notas de texto", + "related_code_notes": "Esquema de cores para notas de código" + }, + "units": { + "percentage": "%" } } From 1d4d1935522caf1ee72a3b9baf6612d263cb8379 Mon Sep 17 00:00:00 2001 From: Sarah Hussein Date: Tue, 7 Oct 2025 23:58:29 +0200 Subject: [PATCH 078/201] Translated using Weblate (Arabic) Currently translated at 6.0% (7 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ar/ --- docs/README-ar.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/README-ar.md b/docs/README-ar.md index 4e87408087..8371f2ddd4 100644 --- a/docs/README-ar.md +++ b/docs/README-ar.md @@ -1,4 +1,4 @@ -# Trilium Notes +# ملاحظات تريليوم ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ @@ -22,12 +22,12 @@ quick overview: Trilium Screenshot -## 📚 Documentation +## 📚توثيق **Visit our comprehensive documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/)** -Our documentation is available in multiple formats: +يتوفر التوثيق لدينا بصيغ متعددة: - **Online Documentation**: Browse the full documentation at [docs.triliumnotes.org](https://docs.triliumnotes.org/) - **In-App Help**: Press `F1` within Trilium to access the same documentation @@ -35,8 +35,8 @@ Our documentation is available in multiple formats: - **GitHub**: Navigate through the [User Guide](./docs/User%20Guide/User%20Guide/) in this repository -### Quick Links -- [Getting Started Guide](https://docs.triliumnotes.org/) +### روابط سريعة +- [دليل البدء السريع](https://docs.triliumnotes.org/) - [Installation Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md) - [Docker @@ -48,7 +48,7 @@ Our documentation is available in multiple formats: - [Patterns of Personal Knowledge Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge) -## 🎁 Features +## 🎁الميزات * Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see @@ -135,7 +135,7 @@ compatible with the latest zadam/trilium version of versions of TriliumNext/Trilium have their sync versions incremented which prevents direct migration. -## 💬 Discuss with us +## تحدث معنا Feel free to join our official conversations. We would love to hear what features, suggestions, or issues you may have! From f196140210fecdd28e809725e92e3bb44b82b130 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 10:46:19 +0300 Subject: [PATCH 079/201] chore(i18n): update available not translated --- apps/client/src/translations/en/translation.json | 3 ++- apps/client/src/widgets/buttons/global_menu.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 2f60eb8c3e..c6565fdfc6 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -646,7 +646,8 @@ "about": "About Trilium Notes", "logout": "Logout", "show-cheatsheet": "Show Cheatsheet", - "toggle-zen-mode": "Zen Mode" + "toggle-zen-mode": "Zen Mode", + "update_available": "Version {{latestVersion}} is available, click to download." }, "zen_mode": { "button_exit": "Exit Zen Mode" diff --git a/apps/client/src/widgets/buttons/global_menu.tsx b/apps/client/src/widgets/buttons/global_menu.tsx index 5c442cb76d..aaf6a785f6 100644 --- a/apps/client/src/widgets/buttons/global_menu.tsx +++ b/apps/client/src/widgets/buttons/global_menu.tsx @@ -58,7 +58,7 @@ export default function GlobalMenu({ isHorizontalLayout }: { isHorizontalLayout: - {isUpdateAvailable && window.open("https://github.com/TriliumNext/Trilium/releases/latest")} icon="bx bx-sync" text={`Version ${latestVersion} is available, click to download.`} /> } + {isUpdateAvailable && window.open("https://github.com/TriliumNext/Trilium/releases/latest")} icon="bx bx-sync" text={t("global_menu.update_available", { latestVersion })} /> } {!isElectron() && } ) From cd75ff9a8a973444efbb2923a2e4a87efb262cd5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 11:00:36 +0300 Subject: [PATCH 080/201] chore(ci): deploy website on release --- .github/workflows/website.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 377c7544e7..bfb2c47214 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -11,6 +11,9 @@ on: paths: - "apps/website/**" + release: + types: [ released ] + jobs: build-and-deploy: runs-on: ubuntu-latest From f0fc3e96ce48bd5c7ebc73f682964335e200b808 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 11:01:53 +0300 Subject: [PATCH 081/201] docs(readme): use formal GitHub account --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b84fd1003a..1fb4e0b95c 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ Please view the [documentation guide](https://github.com/TriliumNext/Trilium/blo ## 👏 Shoutouts * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight widget. From ee1a11975c1a068c8cd163d8fcc8bb3eb383e795 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 11:12:25 +0300 Subject: [PATCH 082/201] fix(board): keyboard overlay appears cut --- apps/client/src/widgets/collections/board/index.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index a6e0e6d284..cf59069305 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -23,8 +23,6 @@ flex-shrink: 0; border: 2px solid transparent; border-radius: 8px; - padding: 0.5em; - padding-bottom: 0; background-color: var(--accented-background-color); transition: border-color 0.2s ease; overflow-y: auto; @@ -104,7 +102,7 @@ .board-view-container .board-column > .board-column-content { flex-grow: 1; overflow: scroll; - padding-bottom: 0.5em; + padding: 0.5em; } .board-view-container .board-column h3:hover .edit-icon, @@ -130,6 +128,10 @@ font-size: var(--card-font-size); } +.board-view-container .board-note:first-of-type { + margin-top: 0; +} + .board-view-container :focus { outline: 3px solid var(--input-focus-outline-color); outline-offset: 0; From 3e30870c877cb4537a21f265263dbc0bb4c38b4b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 11:39:06 +0300 Subject: [PATCH 083/201] feat(i18n): add Portuguese (Portugal) --- apps/client/src/widgets/collections/calendar/index.tsx | 1 + apps/server/src/services/i18n.spec.ts | 10 ++++++++++ apps/server/src/services/i18n.ts | 3 ++- packages/commons/src/lib/i18n.ts | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/collections/calendar/index.tsx b/apps/client/src/widgets/collections/calendar/index.tsx index 3173825931..3aa9fc1d60 100644 --- a/apps/client/src/widgets/collections/calendar/index.tsx +++ b/apps/client/src/widgets/collections/calendar/index.tsx @@ -71,6 +71,7 @@ export const LOCALE_MAPPINGS: Record Promise<{ default: Local ro: () => import("@fullcalendar/core/locales/ro"), ru: () => import("@fullcalendar/core/locales/ru"), ja: () => import("@fullcalendar/core/locales/ja"), + pt: () => import("@fullcalendar/core/locales/pt"), "pt_br": () => import("@fullcalendar/core/locales/pt-br"), uk: () => import("@fullcalendar/core/locales/uk"), en: null diff --git a/apps/server/src/services/i18n.spec.ts b/apps/server/src/services/i18n.spec.ts index 050cc2cd1f..a773682496 100644 --- a/apps/server/src/services/i18n.spec.ts +++ b/apps/server/src/services/i18n.spec.ts @@ -1,6 +1,7 @@ import { LOCALES } from "@triliumnext/commons"; import { readFileSync } from "fs"; import { join } from "path"; +import { DAYJS_LOADER } from "./i18n"; describe("i18n", () => { it("translations are valid JSON", () => { @@ -15,4 +16,13 @@ describe("i18n", () => { .not.toThrow(); } }); + + it("all dayjs locales are valid", async () => { + for (const locale of LOCALES) { + const dayjsLoader = DAYJS_LOADER[locale.id]; + expect(dayjsLoader, `Locale ${locale.id} missing.`).toBeDefined(); + + await dayjsLoader(); + } + }); }); diff --git a/apps/server/src/services/i18n.ts b/apps/server/src/services/i18n.ts index edc2115b89..1f1db1ac60 100644 --- a/apps/server/src/services/i18n.ts +++ b/apps/server/src/services/i18n.ts @@ -7,7 +7,7 @@ import hidden_subtree from "./hidden_subtree.js"; import { LOCALES, type Locale, type LOCALE_IDS } from "@triliumnext/commons"; import dayjs, { Dayjs } from "dayjs"; -const DAYJS_LOADER: Record Promise> = { +export const DAYJS_LOADER: Record Promise> = { "ar": () => import("dayjs/locale/ar.js"), "cn": () => import("dayjs/locale/zh-cn.js"), "de": () => import("dayjs/locale/de.js"), @@ -19,6 +19,7 @@ const DAYJS_LOADER: Record Promise import("dayjs/locale/ja.js"), "ku": () => import("dayjs/locale/ku.js"), "pt_br": () => import("dayjs/locale/pt-br.js"), + "pt": () => import("dayjs/locale/pt.js"), "ro": () => import("dayjs/locale/ro.js"), "ru": () => import("dayjs/locale/ru.js"), "tw": () => import("dayjs/locale/zh-tw.js"), diff --git a/packages/commons/src/lib/i18n.ts b/packages/commons/src/lib/i18n.ts index d40f5ecc5d..5970d2ab82 100644 --- a/packages/commons/src/lib/i18n.ts +++ b/packages/commons/src/lib/i18n.ts @@ -17,6 +17,7 @@ const UNSORTED_LOCALES: Locale[] = [ { id: "fr", name: "Français", electronLocale: "fr" }, { id: "ja", name: "日本語", electronLocale: "ja" }, { id: "pt_br", name: "Português (Brasil)", electronLocale: "pt_BR" }, + { id: "pt", name: "Português (Portugal)", electronLocale: "pt_PT" }, { id: "ro", name: "Română", electronLocale: "ro" }, { id: "ru", name: "Русский", electronLocale: "ru" }, { id: "tw", name: "繁體中文", electronLocale: "zh_TW" }, From 29dbfa6fc45f590f4df9620340e8df626f901ba8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 8 Oct 2025 06:46:37 +0200 Subject: [PATCH 084/201] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-ar.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/README-ar.md b/docs/README-ar.md index 8371f2ddd4..a6da4949d8 100644 --- a/docs/README-ar.md +++ b/docs/README-ar.md @@ -135,7 +135,7 @@ compatible with the latest zadam/trilium version of versions of TriliumNext/Trilium have their sync versions incremented which prevents direct migration. -## تحدث معنا +## 💬تحدث معنا Feel free to join our official conversations. We would love to hear what features, suggestions, or issues you may have! @@ -157,7 +157,7 @@ Download the binary release for your platform from the [latest release page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package and run the `trilium` executable. -### Linux +### لينكس If your distribution is listed in the table below, use your distribution's package. @@ -194,7 +194,7 @@ repository](https://github.com/FliegendeWurst/TriliumDroid). Note: It is best to disable automatic updates on your server installation (see below) when using TriliumDroid since the sync version must match between Trilium and TriliumDroid. -### Server +### الخادم To install TriliumNext on your own server (including via Docker from [Dockerhub](https://hub.docker.com/r/triliumnext/trilium)) follow [the server @@ -301,7 +301,7 @@ Consider supporting the main developer - [GitHub Sponsors](https://github.com/sponsors/eliandoran) - [PayPal](https://paypal.me/eliandoran) -- [Buy Me a Coffee](https://buymeacoffee.com/eliandoran) +- ][Buy Me a Coffee](https://buymeacoffee.com/eliandoran) ## 🔑 License From 39ca136c5d02134cfe85f4b580fcb862ea4ca354 Mon Sep 17 00:00:00 2001 From: Kuzma Simonov Date: Wed, 8 Oct 2025 07:55:49 +0200 Subject: [PATCH 085/201] Translated using Weblate (Russian) Currently translated at 22.6% (26 of 115 strings) Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ru/ --- docs/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README-ru.md b/docs/README-ru.md index 02f324930b..aacc2b9bcf 100644 --- a/docs/README-ru.md +++ b/docs/README-ru.md @@ -307,7 +307,7 @@ Consider supporting the main developer ## 🔑 Лицензия -Copyright 2017-2025 zadam, Elian Doran, and other contributors +Copyright 2017-2025 zadam, Elian Doran и другие авторы Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General From 80d805a807bef1270c560c9e10c19cc08e24a161 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 8 Oct 2025 10:02:23 +0200 Subject: [PATCH 086/201] Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translation: Trilium Notes/README Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ --- docs/README-ZH_CN.md | 3 ++- docs/README-ZH_TW.md | 3 ++- docs/README-ar.md | 3 ++- docs/README-ca.md | 3 ++- docs/README-cs.md | 3 ++- docs/README-de.md | 3 ++- docs/README-el.md | 3 ++- docs/README-es.md | 3 ++- docs/README-fa.md | 3 ++- docs/README-fi.md | 3 ++- docs/README-fr.md | 3 ++- docs/README-hr.md | 3 ++- docs/README-hu.md | 3 ++- docs/README-it.md | 3 ++- docs/README-ja.md | 3 ++- docs/README-ko.md | 3 ++- docs/README-md.md | 3 ++- docs/README-nb_NO.md | 3 ++- docs/README-nl.md | 3 ++- docs/README-pl.md | 3 ++- docs/README-pt.md | 3 ++- docs/README-pt_BR.md | 3 ++- docs/README-ro.md | 3 ++- docs/README-ru.md | 3 ++- docs/README-sl.md | 3 ++- docs/README-sr.md | 3 ++- docs/README-tr.md | 3 ++- docs/README-uk.md | 3 ++- docs/README-vi.md | 3 ++- 29 files changed, 58 insertions(+), 29 deletions(-) diff --git a/docs/README-ZH_CN.md b/docs/README-ZH_CN.md index 2d1099d10a..2efbd4f83d 100644 --- a/docs/README-ZH_CN.md +++ b/docs/README-ZH_CN.md @@ -211,7 +211,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-ZH_TW.md b/docs/README-ZH_TW.md index 6b85e83966..7fa895a16a 100644 --- a/docs/README-ZH_TW.md +++ b/docs/README-ZH_TW.md @@ -202,7 +202,8 @@ pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-ar.md b/docs/README-ar.md index a6da4949d8..25b415bd8c 100644 --- a/docs/README-ar.md +++ b/docs/README-ar.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-ca.md b/docs/README-ca.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-ca.md +++ b/docs/README-ca.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-cs.md b/docs/README-cs.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-cs.md +++ b/docs/README-cs.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-de.md b/docs/README-de.md index 55baa915ca..459469fe91 100644 --- a/docs/README-de.md +++ b/docs/README-de.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-el.md b/docs/README-el.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-el.md +++ b/docs/README-el.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-es.md b/docs/README-es.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-es.md +++ b/docs/README-es.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-fa.md b/docs/README-fa.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-fa.md +++ b/docs/README-fa.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-fi.md b/docs/README-fi.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-fi.md +++ b/docs/README-fi.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-fr.md b/docs/README-fr.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-fr.md +++ b/docs/README-fr.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-hr.md b/docs/README-hr.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-hr.md +++ b/docs/README-hr.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-hu.md b/docs/README-hu.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-hu.md +++ b/docs/README-hu.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-it.md b/docs/README-it.md index 056de7e0db..c24005f3e4 100644 --- a/docs/README-it.md +++ b/docs/README-it.md @@ -260,7 +260,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-ja.md b/docs/README-ja.md index c3a7de6957..abedea5041 100644 --- a/docs/README-ja.md +++ b/docs/README-ja.md @@ -215,7 +215,8 @@ pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32 ## 👏 シャウトアウト * [zadam](https://github.com/zadam) アプリケーションのオリジナルのコンセプトと実装に対して感謝します。 -* [Larsa](https://github.com/LarsaSara) アプリケーションアイコンをデザイン。 +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) 国際化への取り組み。 * [Thomas Frei](https://github.com/thfrei) Canvasへのオリジナルな取り組み。 * [antoniotejada](https://github.com/nriver) オリジナルの構文ハイライトウィジェット。 diff --git a/docs/README-ko.md b/docs/README-ko.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-ko.md +++ b/docs/README-ko.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-md.md b/docs/README-md.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-md.md +++ b/docs/README-md.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-nb_NO.md b/docs/README-nb_NO.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-nb_NO.md +++ b/docs/README-nb_NO.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-nl.md b/docs/README-nl.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-nl.md +++ b/docs/README-nl.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-pl.md b/docs/README-pl.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-pl.md +++ b/docs/README-pl.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-pt.md b/docs/README-pt.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-pt.md +++ b/docs/README-pt.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-pt_BR.md b/docs/README-pt_BR.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-pt_BR.md +++ b/docs/README-pt_BR.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-ro.md b/docs/README-ro.md index fcbfbf68f1..37a4f56833 100644 --- a/docs/README-ro.md +++ b/docs/README-ro.md @@ -263,7 +263,8 @@ legăturile descrise în secțiunea „Discutați cu noi” de mai sus. * [zadam](https://github.com/zadam) pentru conceptul și implementarea originală a aplicației. -* [Larsa](https://github.com/LarsaSara) pentru pictograma aplicației. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) pentru sistemul de internaționalizare. * [Thomas Frei](https://github.com/thfrei) pentru munca sa originală pentru notițele de tip schiță. diff --git a/docs/README-ru.md b/docs/README-ru.md index aacc2b9bcf..40e79d56a8 100644 --- a/docs/README-ru.md +++ b/docs/README-ru.md @@ -261,7 +261,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-sl.md b/docs/README-sl.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-sl.md +++ b/docs/README-sl.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-sr.md b/docs/README-sr.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-sr.md +++ b/docs/README-sr.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-tr.md b/docs/README-tr.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-tr.md +++ b/docs/README-tr.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-uk.md b/docs/README-uk.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-uk.md +++ b/docs/README-uk.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight diff --git a/docs/README-vi.md b/docs/README-vi.md index 4e87408087..348eb9d3e8 100644 --- a/docs/README-vi.md +++ b/docs/README-vi.md @@ -259,7 +259,8 @@ described in the "Discuss with us" section above. * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the + application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight From 034ac59c9aa5a213d0748716862d513301c13df7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 11:51:14 +0300 Subject: [PATCH 087/201] feat(i18n/rtl): add an English with RTL enabled for testing --- apps/client/src/widgets/collections/calendar/index.tsx | 3 ++- apps/server/src/services/i18n.ts | 1 + packages/commons/src/lib/i18n.ts | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/collections/calendar/index.tsx b/apps/client/src/widgets/collections/calendar/index.tsx index 3aa9fc1d60..c221555856 100644 --- a/apps/client/src/widgets/collections/calendar/index.tsx +++ b/apps/client/src/widgets/collections/calendar/index.tsx @@ -74,7 +74,8 @@ export const LOCALE_MAPPINGS: Record Promise<{ default: Local pt: () => import("@fullcalendar/core/locales/pt"), "pt_br": () => import("@fullcalendar/core/locales/pt-br"), uk: () => import("@fullcalendar/core/locales/uk"), - en: null + en: null, + "en_rtl": null, }; export default function CalendarView({ note, noteIds }: ViewModeProps) { diff --git a/apps/server/src/services/i18n.ts b/apps/server/src/services/i18n.ts index 1f1db1ac60..1199bd7960 100644 --- a/apps/server/src/services/i18n.ts +++ b/apps/server/src/services/i18n.ts @@ -12,6 +12,7 @@ export const DAYJS_LOADER: Record Promise import("dayjs/locale/zh-cn.js"), "de": () => import("dayjs/locale/de.js"), "en": () => import("dayjs/locale/en.js"), + "en_rtl": () => import("dayjs/locale/en.js"), "es": () => import("dayjs/locale/es.js"), "fa": () => import("dayjs/locale/fa.js"), "fr": () => import("dayjs/locale/fr.js"), diff --git a/packages/commons/src/lib/i18n.ts b/packages/commons/src/lib/i18n.ts index 5970d2ab82..a6679f5427 100644 --- a/packages/commons/src/lib/i18n.ts +++ b/packages/commons/src/lib/i18n.ts @@ -23,6 +23,13 @@ const UNSORTED_LOCALES: Locale[] = [ { id: "tw", name: "繁體中文", electronLocale: "zh_TW" }, { id: "uk", name: "Українська", electronLocale: "uk" }, + /** + * Development-only languages. + * + * These are only displayed while in dev mode, to test some language particularities (such as RTL) more easily. + */ + { id: "en_rtl", name: "English (right-to-left) [dev]", electronLocale: "en", rtl: true }, + /* * Right to left languages * From adff36cf2214e5130c65c81bd2381eae788d9efc Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 12:08:39 +0300 Subject: [PATCH 088/201] feat(i18n/rtl): apply right to left direction at root level --- apps/client/src/widgets/containers/root_container.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/client/src/widgets/containers/root_container.ts b/apps/client/src/widgets/containers/root_container.ts index 6c2d87521d..511a98b146 100644 --- a/apps/client/src/widgets/containers/root_container.ts +++ b/apps/client/src/widgets/containers/root_container.ts @@ -3,6 +3,7 @@ import FlexContainer from "./flex_container.js"; import options from "../../services/options.js"; import type BasicWidget from "../basic_widget.js"; import utils from "../../services/utils.js"; +import { LOCALES } from "@triliumnext/commons"; /** * The root container is the top-most widget/container, from which the entire layout derives. @@ -32,6 +33,7 @@ export default class RootContainer extends FlexContainer { this.#setMotion(options.is("motionEnabled")); this.#setShadows(options.is("shadowsEnabled")); this.#setBackdropEffects(options.is("backdropEffectsEnabled")); + this.#setRightToLeft(options.get("locale")); return super.render(); } @@ -68,6 +70,11 @@ export default class RootContainer extends FlexContainer { #setBackdropEffects(enabled: boolean) { document.body.classList.toggle("backdrop-effects-disabled", !enabled); } + + #setRightToLeft(locale: string) { + const correspondingLocale = LOCALES.find(l => l.id === locale); + document.body.dir = correspondingLocale?.rtl ? "rtl" : "ltr"; + } } function getViewportHeight() { From 247ab1aec3dd565fbfc0682b27d66209beb509a2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 17:44:17 +0300 Subject: [PATCH 089/201] feat(client/rtl): handle margin-left --- apps/client/src/layouts/mobile_layout.tsx | 2 +- apps/client/src/stylesheets/style.css | 20 ++++++++-------- apps/client/src/stylesheets/table.css | 2 +- .../src/stylesheets/theme-next/base.css | 2 +- .../src/stylesheets/theme-next/dialogs.css | 4 ++-- .../src/stylesheets/theme-next/forms.css | 4 ++-- .../src/stylesheets/theme-next/llm-chat.css | 2 +- .../src/stylesheets/theme-next/notes/text.css | 2 +- .../src/stylesheets/theme-next/pages.css | 4 ++-- .../src/stylesheets/theme-next/ribbon.css | 4 ++-- .../src/stylesheets/theme-next/shell.css | 12 +++++----- apps/client/src/stylesheets/tree.css | 8 +++---- apps/client/src/widgets/FloatingButtons.css | 4 ++-- apps/client/src/widgets/attachment_detail.ts | 2 +- .../src/widgets/bulk_actions/BulkAction.tsx | 6 ++--- .../src/widgets/buttons/global_menu.css | 6 ++--- .../src/widgets/collections/board/index.css | 2 +- apps/client/src/widgets/dialogs/revisions.tsx | 24 +++++++++---------- apps/client/src/widgets/note_map.ts | 2 +- .../client/src/widgets/promoted_attributes.ts | 2 +- apps/client/src/widgets/react/FormToggle.css | 4 ++-- .../src/widgets/ribbon/BasicPropertiesTab.tsx | 2 +- .../ribbon/SearchDefinitionOptions.tsx | 2 +- apps/client/src/widgets/ribbon/style.css | 8 +++---- apps/client/src/widgets/tab_row.ts | 6 ++--- apps/client/src/widgets/toc.ts | 4 ++-- .../type_widgets/options/text_notes.tsx | 2 +- 27 files changed, 71 insertions(+), 71 deletions(-) diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index 1bc9444185..8d8dae6c26 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -68,7 +68,7 @@ const FANCYTREE_CSS = ` .fancytree-title { font-size: 1.5em; - margin-left: 0.6em !important; + margin-inline-start: 0.6em !important; } .fancytree-node { diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index eb9449aef4..574c0684bf 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -174,7 +174,7 @@ textarea, /* Add a gap between consecutive radios / check boxes */ label.tn-radio + label.tn-radio, label.tn-checkbox + label.tn-checkbox { - margin-left: 12px; + margin-inline-start: 12px; } label.tn-radio input[type="radio"], @@ -226,7 +226,7 @@ samp { .badge { --bs-badge-color: var(--muted-text-color); - margin-left: 8px; + margin-inline-start: 8px; background: var(--accented-background-color); } @@ -338,7 +338,7 @@ button kbd { } .ui-menu kbd { - margin-left: 30px; + margin-inline-start: 30px; float: right; } @@ -392,7 +392,7 @@ body.desktop .tabulator-popup-container { } .dropend .dropdown-toggle::after { - margin-left: 0.5em; + margin-inline-start: 0.5em; color: var(--muted-text-color); } @@ -403,7 +403,7 @@ body.desktop .tabulator-popup-container { .dropdown-menu .disabled .disabled-tooltip { pointer-events: all; - margin-left: 8px; + margin-inline-start: 8px; font-size: 0.5em; color: var(--disabled-tooltip-icon-color); cursor: help; @@ -1033,7 +1033,7 @@ svg.ck-icon .note-icon { counter-increment: footnote-counter; display: flex; list-style: none; - margin-left: 0.5em; + margin-inline-start: 0.5em; } .ck-content .footnote-item > * { @@ -1414,7 +1414,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { .ck.ck-slash-command-button__text-part, .ck.ck-template-form__text-part { - margin-left: 0.5em; + margin-inline-start: 0.5em; line-height: 1.2em !important; } @@ -1748,7 +1748,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { display: flex; flex-shrink: 0; flex-direction: column; - margin-left: 10px; + margin-inline-start: 10px; margin-right: 5px; } @@ -1800,7 +1800,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { } .note-split { - margin-left: auto; + margin-inline-start: auto; margin-right: auto; } @@ -1858,7 +1858,7 @@ textarea { .attachment-help-button { display: inline-block; - margin-left: 10px; + margin-inline-start: 10px; vertical-align: middle; font-size: 1em; } diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index 211f5d7c65..8f187dd881 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -67,7 +67,7 @@ } .tabulator div.tabulator-header .tabulator-frozen.tabulator-frozen-left { - margin-left: var(--cell-editing-border-width); + margin-inline-start: var(--cell-editing-border-width); } .tabulator div.tabulator-header .tabulator-col, diff --git a/apps/client/src/stylesheets/theme-next/base.css b/apps/client/src/stylesheets/theme-next/base.css index 7bf49a02d9..1549c9f863 100644 --- a/apps/client/src/stylesheets/theme-next/base.css +++ b/apps/client/src/stylesheets/theme-next/base.css @@ -211,7 +211,7 @@ html body .dropdown-item[disabled] { .dropdown-item span.keyboard-shortcut { color: var(--menu-item-keyboard-shortcut-color) !important; - margin-left: 16px; + margin-inline-start: 16px; } .dropdown-divider { diff --git a/apps/client/src/stylesheets/theme-next/dialogs.css b/apps/client/src/stylesheets/theme-next/dialogs.css index 357a541ff0..967689599e 100644 --- a/apps/client/src/stylesheets/theme-next/dialogs.css +++ b/apps/client/src/stylesheets/theme-next/dialogs.css @@ -29,7 +29,7 @@ display: flex; justify-content: center; align-items: center; - margin-left: 8px; + margin-inline-start: 8px; border: 0; border-radius: 50%; padding: 0; @@ -374,7 +374,7 @@ div.tn-tool-dialog { } .help-dialog .help-cards kbd:first-child { - margin-left: 0; + margin-inline-start: 0; } /* Inline code - used for Markdown samples */ diff --git a/apps/client/src/stylesheets/theme-next/forms.css b/apps/client/src/stylesheets/theme-next/forms.css index b5cf734283..b548e97d11 100644 --- a/apps/client/src/stylesheets/theme-next/forms.css +++ b/apps/client/src/stylesheets/theme-next/forms.css @@ -71,7 +71,7 @@ button.btn.btn-primary kbd, button.btn.btn-secondary kbd, button.btn.btn-sm kbd, button.btn.btn-success kbd { - margin-left: 0.5em; + margin-inline-start: 0.5em; background: var(--cmd-button-keyboard-shortcut-background); color: var(--cmd-button-keyboard-shortcut-color); font-size: 0.6em; @@ -102,7 +102,7 @@ button.btn.btn-success kbd { } .btn-group .tn-tool-button + .tn-tool-button { - margin-left: 4px !important; + margin-inline-start: 4px !important; } /* The "x" icon button */ diff --git a/apps/client/src/stylesheets/theme-next/llm-chat.css b/apps/client/src/stylesheets/theme-next/llm-chat.css index dc3342485d..a56ad217ec 100644 --- a/apps/client/src/stylesheets/theme-next/llm-chat.css +++ b/apps/client/src/stylesheets/theme-next/llm-chat.css @@ -19,7 +19,7 @@ } .chat-message.user-message { - margin-left: auto; + margin-inline-start: auto; } .chat-message.assistant-message { diff --git a/apps/client/src/stylesheets/theme-next/notes/text.css b/apps/client/src/stylesheets/theme-next/notes/text.css index 6499fa0b4b..4c4e6cec23 100644 --- a/apps/client/src/stylesheets/theme-next/notes/text.css +++ b/apps/client/src/stylesheets/theme-next/notes/text.css @@ -210,7 +210,7 @@ /* Separator */ :root .ck .ck-list__separator { margin: .5em 0; - margin-left: calc(0px - var(--ck-editor-popup-padding)); + margin-inline-start: calc(0px - var(--ck-editor-popup-padding)); width: calc(100% + (var(--ck-editor-popup-padding) * 2)); background: var(--menu-item-delimiter-color); } diff --git a/apps/client/src/stylesheets/theme-next/pages.css b/apps/client/src/stylesheets/theme-next/pages.css index b15801f719..7efc741f5b 100644 --- a/apps/client/src/stylesheets/theme-next/pages.css +++ b/apps/client/src/stylesheets/theme-next/pages.css @@ -199,7 +199,7 @@ body.desktop .option-section:not(.tn-no-card) { color: var(--launcher-pane-text-color); margin-top: calc(-1 * var(--options-card-padding) - var(--options-title-font-size) - var(--options-title-offset)) !important; margin-bottom: calc(var(--options-title-offset) + var(--options-card-padding)) !important; - margin-left: calc(-1 * var(--options-card-padding)); + margin-inline-start: calc(-1 * var(--options-card-padding)); } .options-section:not(.tn-no-card) h5 { @@ -216,7 +216,7 @@ body.desktop .option-section:not(.tn-no-card) { .options-section hr { --bs-border-width: 2px; - margin-left: calc(var(--options-card-padding) * -1); + margin-inline-start: calc(var(--options-card-padding) * -1); margin-right: calc(var(--options-card-padding) * -1); opacity: 1; color: var(--root-background); diff --git a/apps/client/src/stylesheets/theme-next/ribbon.css b/apps/client/src/stylesheets/theme-next/ribbon.css index c20ecb488a..3957bb1e28 100644 --- a/apps/client/src/stylesheets/theme-next/ribbon.css +++ b/apps/client/src/stylesheets/theme-next/ribbon.css @@ -105,7 +105,7 @@ ul.note-type-dropdown li.dropdown-item { /* Editability dropdown */ ul.editability-dropdown li.dropdown-item > div { - margin-left: 4px; + margin-inline-start: 4px; } .editability-dropdown .dropdown-item .description { @@ -147,7 +147,7 @@ ul.editability-dropdown li.dropdown-item > div { /* Note path in attribute detail dialog */ .attr-detail .note-path { - margin-left: 8px; + margin-inline-start: 8px; } /* diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index 28679abc7f..ce4a3e4eb8 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -1101,7 +1101,7 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab.note-tab-is-dragging . .tab-row-widget .note-new-tab { position: relative; - margin-left: 3px; + margin-inline-start: 3px; color: transparent; /* Prevent the original "+" from being displayed */ } @@ -1225,7 +1225,7 @@ body.mobile .note-title { } .title-row > *:nth-child(2) { - margin-left: 0; + margin-inline-start: 0; } .title-row { @@ -1407,7 +1407,7 @@ div.promoted-attribute-cell.promoted-attribute-label-boolean > div:first-of-type div.promoted-attribute-cell .multiplicity:has(span) { --icon-button-size: 24px; - margin-left: 8px; + margin-inline-start: 8px; margin-right: calc(var(--pa-card-padding-left) - var(--pa-card-padding-right)); font-size: 0; /* Prevent whitespaces creating a gap between buttons */ display: flex; @@ -1547,7 +1547,7 @@ div.floating-buttons-children .close-floating-buttons { } div.floating-buttons-children .close-floating-buttons { - margin-left: 0 !important; + margin-inline-start: 0 !important; background: var(--floating-button-hide-button-background); color: var(--floating-button-hide-button-color); } @@ -1642,7 +1642,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span { } .find-replace-widget .form-check .form-check-input { - margin-left: 0; + margin-inline-start: 0; } /* Narrow version */ @@ -1806,7 +1806,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span { } .excalidraw .dropdown-menu .dropdown-menu-container > div:not([class]):not(:last-child) { - margin-left: calc(var(--padding) * var(--space-factor) * -1) !important; + margin-inline-start: calc(var(--padding) * var(--space-factor) * -1) !important; margin-right: calc(var(--padding) * var(--space-factor) * -1) !important; } diff --git a/apps/client/src/stylesheets/tree.css b/apps/client/src/stylesheets/tree.css index 385e596ddc..29854e8618 100644 --- a/apps/client/src/stylesheets/tree.css +++ b/apps/client/src/stylesheets/tree.css @@ -15,7 +15,7 @@ span.fancytree-node.fancytree-hide { flex-shrink: 1; flex-grow: 1; overflow: hidden; - margin-left: 7px; + margin-inline-start: 7px; outline: none; position: relative; top: 2px; @@ -80,7 +80,7 @@ span.fancytree-node.fancytree-hide { width: 12px; height: 12px; margin-top: 2px; - margin-left: 1px; + margin-inline-start: 1px; border-width: 1px; border-style: solid; } @@ -229,14 +229,14 @@ span.fancytree-node.archived { display: none; font-size: 120%; cursor: pointer; - margin-left: 8px; + margin-inline-start: 8px; padding: 1px; border: 1px solid transparent; border-radius: 5px; } .unhoist-button.bx.tree-item-button { - margin-left: 0; /* unhoist button is on the left and doesn't need more margin */ + margin-inline-start: 0; /* unhoist button is on the left and doesn't need more margin */ display: block; /* keep always visible */ } diff --git a/apps/client/src/widgets/FloatingButtons.css b/apps/client/src/widgets/FloatingButtons.css index f4fc8a092a..56a6c20b0c 100644 --- a/apps/client/src/widgets/FloatingButtons.css +++ b/apps/client/src/widgets/FloatingButtons.css @@ -74,7 +74,7 @@ .show-floating-buttons { /* display: none;*/ - margin-left: 5px !important; + margin-inline-start: 5px !important; } .show-floating-buttons-button { @@ -97,7 +97,7 @@ /* #region Close floating buttons */ .close-floating-buttons { - margin-left: 5px !important; + margin-inline-start: 5px !important; } .close-floating-buttons:first-child { diff --git a/apps/client/src/widgets/attachment_detail.ts b/apps/client/src/widgets/attachment_detail.ts index 1d2eab9029..31be615369 100644 --- a/apps/client/src/widgets/attachment_detail.ts +++ b/apps/client/src/widgets/attachment_detail.ts @@ -30,7 +30,7 @@ const TPL = /*html*/` } .attachment-details { - margin-left: 10px; + margin-inline-start: 10px; } .attachment-content-wrapper { diff --git a/apps/client/src/widgets/bulk_actions/BulkAction.tsx b/apps/client/src/widgets/bulk_actions/BulkAction.tsx index 8b562d0f05..0f629b4bc1 100644 --- a/apps/client/src/widgets/bulk_actions/BulkAction.tsx +++ b/apps/client/src/widgets/bulk_actions/BulkAction.tsx @@ -4,7 +4,7 @@ import AbstractBulkAction from "./abstract_bulk_action"; import HelpRemoveButtons from "../react/HelpRemoveButtons"; interface BulkActionProps { - label: string | ComponentChildren; + label: string | ComponentChildren; children?: ComponentChildren; helpText?: ComponentChildren; bulkAction: AbstractBulkAction; @@ -13,7 +13,7 @@ interface BulkActionProps { // Define styles as constants to prevent recreation const flexContainerStyle = { display: "flex", alignItems: "center" } as const; const labelStyle = { marginRight: "10px" } as const; -const textStyle = { marginRight: "10px", marginLeft: "10px" } as const; +const textStyle = { marginRight: "10px", marginInlineStart: "10px" } as const; const BulkAction = memo(({ label, children, helpText, bulkAction }: BulkActionProps) => { return ( @@ -44,4 +44,4 @@ export const BulkActionText = memo(({ text }: { text: string }) => { {text} ); -}); \ No newline at end of file +}); diff --git a/apps/client/src/widgets/buttons/global_menu.css b/apps/client/src/widgets/buttons/global_menu.css index 2145b76f9f..0fd1c69888 100644 --- a/apps/client/src/widgets/buttons/global_menu.css +++ b/apps/client/src/widgets/buttons/global_menu.css @@ -69,7 +69,7 @@ button.global-menu-button { } .global-menu .zoom-buttons { - margin-left: 2em; + margin-inline-start: 2em; } .global-menu .zoom-buttons a { @@ -79,7 +79,7 @@ button.global-menu-button { color: var(--button-text-color); background-color: var(--button-background-color); padding: 3px; - margin-left: 3px; + margin-inline-start: 3px; text-decoration: none; } @@ -88,7 +88,7 @@ button.global-menu-button { } .global-menu .zoom-state { - margin-left: 5px; + margin-inline-start: 5px; margin-right: 5px; } diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index cf59069305..9f16b45579 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -93,7 +93,7 @@ .board-view-container .board-column .edit-icon { opacity: 0; - margin-left: 0.5em; + margin-inline-start: 0.5em; transition: opacity 0.2s ease; color: var(--muted-text-color); cursor: pointer; diff --git a/apps/client/src/widgets/dialogs/revisions.tsx b/apps/client/src/widgets/dialogs/revisions.tsx index 65c7dfd2c6..b21a36fafc 100644 --- a/apps/client/src/widgets/dialogs/revisions.tsx +++ b/apps/client/src/widgets/dialogs/revisions.tsx @@ -91,7 +91,7 @@ export default function RevisionsDialog() { ) } - footer={} + footer={} footerStyle={{ paddingTop: 0, paddingBottom: 0 }} onHidden={() => { setShown(false); @@ -115,16 +115,16 @@ export default function RevisionsDialog() {
    - { setRefreshCounter(c => c + 1); @@ -138,7 +138,7 @@ export default function RevisionsDialog() { function RevisionsList({ revisions, onSelect, currentRevision }: { revisions: RevisionItem[], onSelect: (val: string) => void, currentRevision?: RevisionItem }) { return ( - {revisions.map((item) => + {revisions.map((item) => >, onRevisionDeleted?: () => void @@ -163,7 +163,7 @@ function RevisionPreview({noteContent, revisionItem, showDiff, setShown, onRevis if (revisionItem) { server.get(`revisions/${revisionItem.revisionId}`).then(setFullRevision); } else { - setFullRevision(undefined); + setFullRevision(undefined); } }, [revisionItem]); @@ -242,11 +242,11 @@ function RevisionContent({ noteContent, revisionItem, fullRevision, showDiff }: return case "code": return
    {content}
    ; - case "image": + case "image": switch (revisionItem.mime) { case "image/svg+xml": { //Base64 of other format images may be embedded in svg - const encodedSVG = encodeURIComponent(content as string); + const encodedSVG = encodeURIComponent(content as string); return ; @@ -355,7 +355,7 @@ function RevisionFooter({ note }: { note?: FNote }) { if (revisionsNumberLimit === -1) { revisionsNumberLimit = "∞"; } - + return <> {t("revisions.snapshot_interval", { seconds: options.getInt("revisionSnapshotTimeInterval") })} @@ -376,4 +376,4 @@ async function getNote(noteId?: string | null) { } else { return appContext.tabManager.getActiveContextNote(); } -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/note_map.ts b/apps/client/src/widgets/note_map.ts index d0274fc862..ef36d7b7e2 100644 --- a/apps/client/src/widgets/note_map.ts +++ b/apps/client/src/widgets/note_map.ts @@ -38,7 +38,7 @@ const TPL = /*html*/`
    /* removing default appearance */ -webkit-appearance: none; appearance: none; - margin-left: 15px; + margin-inline-start: 15px; width: 150px; } diff --git a/apps/client/src/widgets/promoted_attributes.ts b/apps/client/src/widgets/promoted_attributes.ts index 1b67ecec16..db1937264d 100644 --- a/apps/client/src/widgets/promoted_attributes.ts +++ b/apps/client/src/widgets/promoted_attributes.ts @@ -45,7 +45,7 @@ const TPL = /*html*/` } .promoted-attribute-cell div.input-group { - margin-left: 10px; + margin-inline-start: 10px; display: flex; min-height: 40px; } diff --git a/apps/client/src/widgets/react/FormToggle.css b/apps/client/src/widgets/react/FormToggle.css index f727bc5ff6..f012f80560 100644 --- a/apps/client/src/widgets/react/FormToggle.css +++ b/apps/client/src/widgets/react/FormToggle.css @@ -18,7 +18,7 @@ .switch-widget .switch-button { display: block; position: relative; - margin-left: 8px; + margin-inline-start: 8px; width: var(--switch-track-width); height: var(--switch-track-height); border-radius: 24px; @@ -86,7 +86,7 @@ .switch-widget .switch-help-button { border: 0; - margin-left: 4px; + margin-inline-start: 4px; background: none; cursor: pointer; font-size: 1.1em; diff --git a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx index 6039053b50..b7ef4fa0ed 100644 --- a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx +++ b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx @@ -353,7 +353,7 @@ function NoteLanguageSwitch({ note }: { note?: FNote | null }) { >{t("note_language.configure-languages")} - + -
    {t("ancestor.depth_label")}:
    +
    {t("ancestor.depth_label")}:
    * { position: relative; top: -3px; - margin-left: 10px; + margin-inline-start: 10px; } .ribbon-body { border-bottom: 1px solid var(--main-border-color); - margin-left: 10px; + margin-inline-start: 10px; margin-right: 5px; /* needs to have this value so that the bottom border is the same width as the top one */ } @@ -308,7 +308,7 @@ /* #region Owned Attributes */ .attribute-list { - margin-left: 7px; + margin-inline-start: 7px; margin-right: 7px; margin-top: 5px; margin-bottom: 2px; diff --git a/apps/client/src/widgets/tab_row.ts b/apps/client/src/widgets/tab_row.ts index c13aa4969b..0d248fa5af 100644 --- a/apps/client/src/widgets/tab_row.ts +++ b/apps/client/src/widgets/tab_row.ts @@ -172,7 +172,7 @@ const TAB_ROW_TPL = ` } .tab-row-widget .note-tab[is-small] .note-tab-title { - margin-left: 0; + margin-inline-start: 0; } .tab-row-widget .note-tab .note-tab-drag-handle { @@ -240,13 +240,13 @@ const TAB_ROW_TPL = ` } .tab-row-widget .note-tab[is-smaller] .note-tab-close { - margin-left: auto; + margin-inline-start: auto; } .tab-row-widget .note-tab[is-mini]:not([active]) .note-tab-close { display: none; } .tab-row-widget .note-tab[is-mini][active] .note-tab-close { - margin-left: auto; + margin-inline-start: auto; margin-right: auto; } @-moz-keyframes note-tab-was-just-added { diff --git a/apps/client/src/widgets/toc.ts b/apps/client/src/widgets/toc.ts index e49368283e..b2858cf714 100644 --- a/apps/client/src/widgets/toc.ts +++ b/apps/client/src/widgets/toc.ts @@ -103,12 +103,12 @@ const TPL = /*html*/`
    } .toc li .item-content { - margin-left: 25px; + margin-inline-start: 25px; flex: 1; } .toc li .collapse-button + .item-content { - margin-left: 4px; + margin-inline-start: 4px; } .toc li:hover { diff --git a/apps/client/src/widgets/type_widgets/options/text_notes.tsx b/apps/client/src/widgets/type_widgets/options/text_notes.tsx index 5c8ed90af1..4e24759227 100644 --- a/apps/client/src/widgets/type_widgets/options/text_notes.tsx +++ b/apps/client/src/widgets/type_widgets/options/text_notes.tsx @@ -62,7 +62,7 @@ function FormattingToolbar() { name="multiline-toolbar" label={t("editing.editor_type.multiline-toolbar")} currentValue={textNoteEditorMultilineToolbar} onChange={setTextNoteEditorMultilineToolbar} - containerStyle={{ marginLeft: "1em" }} + containerStyle={{ marginInlineStart: "1em" }} /> ) From 6b930136747764e5459b16cdc478f7e8c7baf03a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 8 Oct 2025 17:45:31 +0300 Subject: [PATCH 090/201] feat(client/rtl): handle margin-right --- apps/client/src/layouts/mobile_layout.tsx | 4 ++-- apps/client/src/stylesheets/style.css | 16 ++++++++-------- apps/client/src/stylesheets/table.css | 2 +- apps/client/src/stylesheets/theme-next/base.css | 4 ++-- .../src/stylesheets/theme-next/dialogs.css | 6 +++--- .../src/stylesheets/theme-next/llm-chat.css | 4 ++-- apps/client/src/stylesheets/theme-next/pages.css | 4 ++-- .../client/src/stylesheets/theme-next/ribbon.css | 2 +- apps/client/src/stylesheets/theme-next/shell.css | 16 ++++++++-------- apps/client/src/stylesheets/tree.css | 2 +- .../attribute_widgets/attribute_detail.ts | 2 +- .../src/widgets/bulk_actions/BulkAction.tsx | 4 ++-- .../src/widgets/buttons/attachments_actions.ts | 2 +- apps/client/src/widgets/buttons/global_menu.css | 4 ++-- .../src/widgets/collections/board/index.css | 6 +++--- apps/client/src/widgets/dialogs/bulk_actions.css | 2 +- apps/client/src/widgets/find.ts | 4 ++-- apps/client/src/widgets/note_icon.css | 2 +- .../widgets/ribbon/SearchDefinitionOptions.tsx | 2 +- apps/client/src/widgets/ribbon/style.css | 12 ++++++------ apps/client/src/widgets/tab_row.ts | 2 +- 21 files changed, 51 insertions(+), 51 deletions(-) diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index 8d8dae6c26..91953b1a32 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -81,7 +81,7 @@ const FANCYTREE_CSS = ` span.fancytree-expander { width: 24px !important; - margin-right: 5px; + margin-inline-end: 5px; } .fancytree-loading span.fancytree-expander { @@ -101,7 +101,7 @@ span.fancytree-expander { .tree-wrapper .scroll-to-active-note-button, .tree-wrapper .tree-settings-button { position: fixed; - margin-right: 16px; + margin-inline-end: 16px; display: none; } diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 574c0684bf..5e9b3daf38 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -179,7 +179,7 @@ label.tn-checkbox + label.tn-checkbox { label.tn-radio input[type="radio"], label.tn-checkbox input[type="checkbox"] { - margin-right: .5em; + margin-inline-end: .5em; } #left-pane input, @@ -1041,13 +1041,13 @@ svg.ck-icon .note-icon { } .ck-content .footnote-back-link { - margin-right: 0.1em; + margin-inline-end: 0.1em; position: relative; top: -0.2em; } .ck-content .footnotes .footnote-back-link > sup { - margin-right: 0; + margin-inline-end: 0; } .ck-content .footnote-item:before { @@ -1749,7 +1749,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { flex-shrink: 0; flex-direction: column; margin-inline-start: 10px; - margin-right: 5px; + margin-inline-end: 5px; } #right-pane .card-header { @@ -1801,7 +1801,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu { .note-split { margin-inline-start: auto; - margin-right: auto; + margin-inline-end: auto; } .note-split.full-content-width { @@ -1820,7 +1820,7 @@ button.close:hover { .reference-link .bx { position: relative; top: 1px; - margin-right: 3px; + margin-inline-end: 3px; } .options-section:first-of-type h4 { @@ -2319,12 +2319,12 @@ footer.webview-footer button { display: flex; align-items: center; font-size: 0.9em; - margin-right: 15px; + margin-inline-end: 15px; cursor: pointer; } .chat-option input[type="checkbox"] { - margin-right: 5px; + margin-inline-end: 5px; } /* Style for thinking process in chat responses */ diff --git a/apps/client/src/stylesheets/table.css b/apps/client/src/stylesheets/table.css index 8f187dd881..1579a68538 100644 --- a/apps/client/src/stylesheets/table.css +++ b/apps/client/src/stylesheets/table.css @@ -117,7 +117,7 @@ /* Cell */ .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - margin-right: var(--cell-editing-border-width); + margin-inline-end: var(--cell-editing-border-width); } .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left, diff --git a/apps/client/src/stylesheets/theme-next/base.css b/apps/client/src/stylesheets/theme-next/base.css index 1549c9f863..bcadc35178 100644 --- a/apps/client/src/stylesheets/theme-next/base.css +++ b/apps/client/src/stylesheets/theme-next/base.css @@ -357,13 +357,13 @@ li.dropdown-item a.dropdown-item-button:focus-visible { } #toast-container .toast:not(.no-title) .bx { - margin-right: 0.5em; + margin-inline-end: 0.5em; font-size: 1.1em; opacity: 0.85; } #toast-container .toast.no-title .bx { - margin-right: 0; + margin-inline-end: 0; font-size: 1.3em; } diff --git a/apps/client/src/stylesheets/theme-next/dialogs.css b/apps/client/src/stylesheets/theme-next/dialogs.css index 967689599e..882e0b9429 100644 --- a/apps/client/src/stylesheets/theme-next/dialogs.css +++ b/apps/client/src/stylesheets/theme-next/dialogs.css @@ -56,7 +56,7 @@ } .modal .modal-header .help-button { - margin-right: 0; + margin-inline-end: 0; font-size: calc(var(--modal-control-button-size) * .75); font-family: unset; font-weight: bold; @@ -141,7 +141,7 @@ div.tn-tool-dialog { /* Search box wrapper */ .jump-to-note-dialog .input-group { - margin-right: 16px; + margin-inline-end: 16px; } .jump-to-note-dialog .input-group:hover { @@ -419,5 +419,5 @@ div.tn-tool-dialog { } .note-type-chooser-dialog div.note-type-dropdown .dropdown-item span.bx { - margin-right: .25em; + margin-inline-end: .25em; } \ No newline at end of file diff --git a/apps/client/src/stylesheets/theme-next/llm-chat.css b/apps/client/src/stylesheets/theme-next/llm-chat.css index a56ad217ec..da5b478953 100644 --- a/apps/client/src/stylesheets/theme-next/llm-chat.css +++ b/apps/client/src/stylesheets/theme-next/llm-chat.css @@ -23,7 +23,7 @@ } .chat-message.assistant-message { - margin-right: auto; + margin-inline-end: auto; } .message-avatar { @@ -33,7 +33,7 @@ display: flex; align-items: center; justify-content: center; - margin-right: 8px; + margin-inline-end: 8px; } .user-message .message-avatar { diff --git a/apps/client/src/stylesheets/theme-next/pages.css b/apps/client/src/stylesheets/theme-next/pages.css index 7efc741f5b..d0c092321d 100644 --- a/apps/client/src/stylesheets/theme-next/pages.css +++ b/apps/client/src/stylesheets/theme-next/pages.css @@ -52,7 +52,7 @@ background-color: #f5f5f5; } .google-login-btn img { - margin-right: 10px; + margin-inline-end: 10px; width: 18px; height: 18px; } @@ -217,7 +217,7 @@ body.desktop .option-section:not(.tn-no-card) { --bs-border-width: 2px; margin-inline-start: calc(var(--options-card-padding) * -1); - margin-right: calc(var(--options-card-padding) * -1); + margin-inline-end: calc(var(--options-card-padding) * -1); opacity: 1; color: var(--root-background); } diff --git a/apps/client/src/stylesheets/theme-next/ribbon.css b/apps/client/src/stylesheets/theme-next/ribbon.css index 3957bb1e28..e9af8df885 100644 --- a/apps/client/src/stylesheets/theme-next/ribbon.css +++ b/apps/client/src/stylesheets/theme-next/ribbon.css @@ -95,7 +95,7 @@ div.promoted-attributes-container { /* Note type dropdown */ ul.note-type-dropdown .check { - margin-right: 6px; + margin-inline-end: 6px; } ul.note-type-dropdown li.dropdown-item { diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index ce4a3e4eb8..cdb9bae098 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -539,7 +539,7 @@ div.quick-search .search-button { justify-content: center; width: 25px; height: 25px; - margin-right: 8px; + margin-inline-end: 8px; border-radius: 50%; padding: 0; color: var(--quick-search-color) !important; @@ -734,7 +734,7 @@ body.mobile .fancytree-node > span { } #left-pane .tree-item-button { - margin-right: 6px; + margin-inline-end: 6px; border: unset; border-radius: 50%; background: var(--left-pane-item-action-button-background); @@ -1221,7 +1221,7 @@ body.mobile .note-title { } .title-row > *:first-child { - margin-right: 0; + margin-inline-end: 0; } .title-row > *:nth-child(2) { @@ -1312,7 +1312,7 @@ body.mobile .note-title { /* The promoted attributes section */ div.promoted-attributes-container { display: flex; - margin-right: 10%; + margin-inline-end: 10%; padding: 6px 0; gap: 8px; align-items: stretch; @@ -1400,7 +1400,7 @@ div.promoted-attribute-cell .tn-checkbox { /* Relocate the checkbox before the label */ div.promoted-attribute-cell.promoted-attribute-label-boolean > div:first-of-type { order: -1; - margin-right: 1.5em; + margin-inline-end: 1.5em; } /* The element containing the "new attribute" and "remove this attribute button" */ @@ -1408,7 +1408,7 @@ div.promoted-attribute-cell .multiplicity:has(span) { --icon-button-size: 24px; margin-inline-start: 8px; - margin-right: calc(var(--pa-card-padding-left) - var(--pa-card-padding-right)); + margin-inline-end: calc(var(--pa-card-padding-left) - var(--pa-card-padding-right)); font-size: 0; /* Prevent whitespaces creating a gap between buttons */ display: flex; } @@ -1700,7 +1700,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span { } .replace-widget-box > * { - margin-right: unset !important; + margin-inline-end: unset !important; } div.replace-widget-box button.btn.btn-sm { @@ -1807,7 +1807,7 @@ div.find-replace-widget div.find-widget-found-wrapper > span { .excalidraw .dropdown-menu .dropdown-menu-container > div:not([class]):not(:last-child) { margin-inline-start: calc(var(--padding) * var(--space-factor) * -1) !important; - margin-right: calc(var(--padding) * var(--space-factor) * -1) !important; + margin-inline-end: calc(var(--padding) * var(--space-factor) * -1) !important; } .excalidraw .dropdown-menu:before { diff --git a/apps/client/src/stylesheets/tree.css b/apps/client/src/stylesheets/tree.css index 29854e8618..00e1319364 100644 --- a/apps/client/src/stylesheets/tree.css +++ b/apps/client/src/stylesheets/tree.css @@ -59,7 +59,7 @@ span.fancytree-node.fancytree-hide { line-height: 1; position: relative; top: 2px; - margin-right: 5px; + margin-inline-end: 5px; } .fancytree-loading span.fancytree-expander { diff --git a/apps/client/src/widgets/attribute_widgets/attribute_detail.ts b/apps/client/src/widgets/attribute_widgets/attribute_detail.ts index cdb7c7b438..7ce3372b9b 100644 --- a/apps/client/src/widgets/attribute_widgets/attribute_detail.ts +++ b/apps/client/src/widgets/attribute_widgets/attribute_detail.ts @@ -176,7 +176,7 @@ const TPL = /*html*/`