Labels can
be used for a variety of purposes, such as storing metadata or configuring
the behavior of notes. Labels are also searchable, enhancing note retrieval.
For more information, including predefined labels, see Labels.
-
+
Relations define
connections between notes, similar to links. These can be used for metadata
and scripting purposes.
@@ -27,25 +27,24 @@
Conceptually there are two types of attributes (applying to both labels
and relations):
-
System attributes
+
System attributes As the name suggest, these attributes have a special meaning since they
are interpreted by Trilium. For example the color attribute
will change the color of the note as displayed in the Note Tree and
- links, and iconClass will change the icon of a note.
-
-
User-defined attributes
+ href="#root/_help_oPVyFC7WL2Lp">Note Tree
and links, and iconClass will
+ change the icon of a note.
+
User-defined attributes These are free-form labels or relations that can be used by the user.
They can be used purely for categorization purposes (especially if combined
- with Search),
+ with Search),
or they can be given meaning through the use of Scripting.
+ href="#root/_help_CdNpE2pqjmI6">Scripting.
In practice, Trilium makes no direct distinction of whether an attribute
is a system one or a user-defined one. A label or relation is considered
a system attribute if it matches one of the built-in names (e.g. like the
aforementioned iconClass). Keep this in mind when creating
- Promoted Attributes in
+ Promoted Attributes in
order not to accidentally alter a system attribute (unless intended).
Viewing the list of attributes
Both the labels and relations for the current note are displayed in the Owned Attributes section
@@ -56,14 +55,13 @@
In the list of attributes, labels are prefixed with the # character
whereas relations are prefixed with the ~ character.
Promoted Attributes create
a form-like editing experience for attributes, which makes it easy to enhancing
the organization and management of attributes
Multiplicity
Attributes in Trilium can be "multi-valued", meaning multiple attributes
with the same name can co-exist. This can be combined with Promoted Attributes to
- easily add them.
+ href="#root/_help_OFXdgB2nNk1F">Promoted Attributes to easily add them.
Attribute Inheritance
Trilium supports attribute inheritance, allowing child notes to inherit
attributes from their parents. For more information, see
Select either Add new label definition or Add new relation definition.
-
Select the name which will be name of the label or relation that will
- be created when the promoted attribute is edited.
-
Ensure Promoted is checked in order to display it at the top of
- notes.
-
Optionally, choose an Alias which will be displayed next to the
- promoted attribute instead of the attribute name. Generally it's best to
- choose a “user-friendly” name since it can contain spaces and other characters
- which are not supported as attribute names.
-
Check Inheritable to apply it to this note and all its descendants.
- To keep it only for the current note, un-check it.
Select either Add new label definition or Add new relation definition.
+
Select the name which will be name of the label or relation that will
+ be created when the promoted attribute is edited.
+
Ensure Promoted is checked in order to display it at the top of
+ notes.
+
Optionally, choose an Alias which will be displayed next to the
+ promoted attribute instead of the attribute name. Generally it's best to
+ choose a “user-friendly” name since it can contain spaces and other characters
+ which are not supported as attribute names.
+
Check Inheritable to apply it to this note and all its descendants.
+ To keep it only for the current note, un-check it.
+
Press “Save & Close” to apply the changes.
How attribute definitions actually work
When a new promoted attribute definition is created, it creates a corresponding
@@ -54,37 +52,37 @@
The only purpose of the attribute definition is to set up a template.
If the attribute was marked as promoted, then it's also displayed to the
user for easy editing.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Notice how the promoted attribute definition only creates a “Due date”
- box above the text content.
-
-
-
-
-
-
-
-
Once a value is set by the user, a new label (or relation, depending on
- the type) is created. The name of the attribute matches one set when creating
- the promoted attribute.
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Notice how the promoted attribute definition only creates a “Due date”
+ box above the text content.
+
+
+
+
+
+
+
+
Once a value is set by the user, a new label (or relation, depending on
+ the type) is created. The name of the attribute matches one set when creating
+ the promoted attribute.
+
+
+
So there's one attribute for value and one for definition. But notice
how an definition attribute can be made Inheritable,
meaning that it's also applied to all descendant notes. In this case, the
@@ -95,22 +93,22 @@
to be able to easily alter them.
Collections already
make use of this practice, for example:
-
Calendars add “Start Date”, “End Date”, “Start Time” and “End Time” as
+
Calendars add “Start Date”, “End Date”, “Start Time” and “End Time” as
promoted attributes. These map to system attributes such as startDate which
are then interpreted by the calendar view.
Presentation adds
a “Background” promoted attribute for each of the slide to easily be able
to customize.
-
The Trilium documentation (which is edited in Trilium) uses a promoted
+
The Trilium documentation (which is edited in Trilium) uses a promoted
attribute to be able to easily edit the #shareAlias (see
Sharing) in order to form clean URLs.
-
If you always edit a particular system attribute such as #color,
+ class="reference-link" href="#root/_help_R9pX4DGra2Vt">Sharing) in order to form clean URLs.
+
If you always edit a particular system attribute such as #color,
simply create a promoted attribute for it to make it easier.
Right click on any note on the note tree and select Insert child note → Geo Map (beta).
-
-
-
2
-
-
-
-
-
-
By default the map will be empty and will show the entire world.
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
1
+
+
+
+
+
+
Right click on any note on the note tree and select Insert child note → Geo Map (beta).
+
+
+
2
+
+
+
+
+
+
By default the map will be empty and will show the entire world.
+
+
+
+
Repositioning the map
-
Click and drag the map in order to move across the map.
-
Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons
+
Click and drag the map in order to move across the map.
+
Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons
on the top-left to adjust the zoom.
The position on the map and the zoom are saved inside the map note and
restored when visiting again the note.
Adding a marker using the map
Adding a new note using the plus button
-
-
-
-
-
-
-
-
-
-
-
-
1
-
To create a marker, first navigate to the desired point on the map. Then
- press the
- button in the Floating buttons (top-right)
- area.
-
- If the button is not visible, make sure the button section is visible
- by pressing the chevron button (
- ) in the top-right of the map.
-
-
-
-
2
-
-
-
-
Once pressed, the map will enter in the insert mode, as illustrated by
- the notification.
-
- Simply click the point on the map where to place the marker, or the Escape
- key to cancel.
-
-
-
3
-
-
-
-
Enter the name of the marker/note to be created.
-
-
-
4
-
-
-
-
Once confirmed, the marker will show up on the map and it will also be
- displayed as a child note of the map.
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
1
+
To create a marker, first navigate to the desired point on the map. Then
+ press the
+ button in the Floating buttons (top-right)
+ area.
+
+ If the button is not visible, make sure the button section is visible
+ by pressing the chevron button (
+ ) in the top-right of the map.
+
+
+
+
2
+
+
+
+
Once pressed, the map will enter in the insert mode, as illustrated by
+ the notification.
+
+ Simply click the point on the map where to place the marker, or the Escape
+ key to cancel.
+
+
+
3
+
+
+
+
Enter the name of the marker/note to be created.
+
+
+
4
+
+
+
+
Once confirmed, the marker will show up on the map and it will also be
+ displayed as a child note of the map.
+
+
+
+
Adding a new note using the contextual menu
-
Right click anywhere on the map, where to place the newly created marker
+
Right click anywhere on the map, where to place the newly created marker
(and corresponding note).
\ No newline at end of file
diff --git a/docs/Developer Guide/!!!meta.json b/docs/Developer Guide/!!!meta.json
index cdf47264f..9e479b0cc 100644
--- a/docs/Developer Guide/!!!meta.json
+++ b/docs/Developer Guide/!!!meta.json
@@ -1974,6 +1974,13 @@
"value": "i18n",
"isInheritable": false,
"position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "lXjOyKpUSKgE",
+ "isInheritable": false,
+ "position": 30
}
],
"format": "markdown",
@@ -2071,6 +2078,34 @@
"format": "markdown",
"dataFileName": "Server translations.md",
"attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "lXjOyKpUSKgE",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "yeqU0zo0ZQ83",
+ "TLXJwBDo8Rdv",
+ "lXjOyKpUSKgE"
+ ],
+ "title": "Adding a new locale",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "new-locale",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Adding a new locale.md",
+ "attachments": []
}
]
},
diff --git a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md
index 7ae59016f..2449b6c72 100644
--- a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md
+++ b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md
@@ -15,7 +15,7 @@ One important aspect is the fact that we are using a key-based approach. This me
The key-based approach allows a hierarchical structure. For example, a key of `about.title` would be added in `translation.json` as follows:
-```json
+```
{
"about": {
"title": "About Trilium Notes"
@@ -27,11 +27,7 @@ Follow the Adding a new locale.
### Changing the language
diff --git a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md
new file mode 100644
index 000000000..e36815b90
--- /dev/null
+++ b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md
@@ -0,0 +1,11 @@
+# Adding a new locale
+Once the Weblate translations for a single language have reached ~50% in coverage, it's time to add it to the application.
+
+To do so:
+
+1. In `packages/commons` look for `i18n.ts` and add a new entry to `UNSORTED_LOCALES` for the language.
+2. In `apps/server` look for `services/i18n.ts` and add a mapping for the new language in `DAYJS_LOADER`. Sort the entire list.
+3. In `apps/client`, look for `collections/calendar/index.tsx` and modify `LOCALE_MAPPINGS` to add support to the new language.
+4. In `apps/client`, look for `widgets/type_widgets/canvas/i18n.ts` and modify `LANGUAGE_MAPPINGS`. A unit test ensures that the language is actually loadable.
+5. In `apps/client`, look for `widgets/type_widgets/MindMap.tsx` and modify `LOCALE_MAPPINGS`. The type definitions should already validate if the new value is supported by Mind Elixir.
+6. In `packages/ckeditor5`, look for `i18n.ts` and modify `LOCALE_MAPPINGS`. The import validation should already check if the new value is supported by CKEditor, and there's also a test to ensure it.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md
index 5f9f17e5f..617684bfd 100644
--- a/docs/Developer Guide/Developer Guide/Documentation.md
+++ b/docs/Developer Guide/Developer Guide/Documentation.md
@@ -1,5 +1,5 @@
# Documentation
-There are multiple types of documentation for Trilium:
+There are multiple types of documentation for Trilium:
* The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1.
* The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers.
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index f859cd689..40a40e9fc 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -9872,23 +9872,16 @@
"position": 10
},
{
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-columns",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "kanban-board",
+ "type": "relation",
+ "name": "internalLink",
+ "value": "oPVyFC7WL2Lp",
"isInheritable": false,
"position": 20
},
{
"type": "relation",
"name": "internalLink",
- "value": "Cq5X6iKQop6R",
+ "value": "IakOLONlIfGI",
"isInheritable": false,
"position": 30
},
@@ -9902,23 +9895,30 @@
{
"type": "relation",
"name": "internalLink",
- "value": "bdUJEHsAPYQR",
+ "value": "Cq5X6iKQop6R",
"isInheritable": false,
"position": 50
},
{
"type": "relation",
"name": "internalLink",
- "value": "oPVyFC7WL2Lp",
+ "value": "bdUJEHsAPYQR",
"isInheritable": false,
"position": 60
},
{
- "type": "relation",
- "name": "internalLink",
- "value": "IakOLONlIfGI",
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-columns",
"isInheritable": false,
- "position": 70
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "kanban-board",
+ "isInheritable": false,
+ "position": 20
}
],
"format": "markdown",
@@ -9968,59 +9968,73 @@
{
"type": "relation",
"name": "internalLink",
- "value": "KSZ04uQ2D1St",
+ "value": "zEY4DaJG4YT5",
"isInheritable": false,
"position": 10
},
{
"type": "relation",
"name": "internalLink",
- "value": "0ESUbbAxVnoK",
+ "value": "OFXdgB2nNk1F",
"isInheritable": false,
"position": 20
},
{
"type": "relation",
"name": "internalLink",
- "value": "XpOYSgsLkTJy",
+ "value": "KSZ04uQ2D1St",
"isInheritable": false,
"position": 30
},
{
"type": "relation",
"name": "internalLink",
- "value": "oPVyFC7WL2Lp",
+ "value": "0ESUbbAxVnoK",
"isInheritable": false,
"position": 40
},
{
"type": "relation",
"name": "internalLink",
- "value": "IakOLONlIfGI",
+ "value": "XpOYSgsLkTJy",
"isInheritable": false,
"position": 50
},
{
"type": "relation",
"name": "internalLink",
- "value": "lgKX7r3aL30x",
+ "value": "oPVyFC7WL2Lp",
"isInheritable": false,
"position": 60
},
{
"type": "relation",
"name": "internalLink",
- "value": "ZjLYv08Rp3qC",
+ "value": "IakOLONlIfGI",
"isInheritable": false,
"position": 70
},
{
"type": "relation",
"name": "internalLink",
- "value": "BlN9DFI679QC",
+ "value": "lgKX7r3aL30x",
"isInheritable": false,
"position": 80
},
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "ZjLYv08Rp3qC",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "BlN9DFI679QC",
+ "isInheritable": false,
+ "position": 100
+ },
{
"type": "label",
"name": "iconClass",
@@ -10034,20 +10048,6 @@
"value": "geomap",
"isInheritable": false,
"position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 110
}
],
"format": "markdown",
@@ -11240,24 +11240,45 @@
{
"type": "relation",
"name": "internalLink",
- "value": "BlN9DFI679QC",
+ "value": "oPVyFC7WL2Lp",
"isInheritable": false,
"position": 30
},
{
"type": "relation",
"name": "internalLink",
- "value": "OFXdgB2nNk1F",
+ "value": "eIg8jdvaoNNd",
"isInheritable": false,
"position": 40
},
{
"type": "relation",
"name": "internalLink",
- "value": "bwZpz2ajCEwO",
+ "value": "CdNpE2pqjmI6",
"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": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 80
+ },
{
"type": "label",
"name": "shareAlias",
@@ -11271,27 +11292,6 @@
"value": "bx bx-list-check",
"isInheritable": false,
"position": 110
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "oPVyFC7WL2Lp",
- "isInheritable": false,
- "position": 120
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "eIg8jdvaoNNd",
- "isInheritable": false,
- "position": 130
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 140
}
],
"format": "markdown",
@@ -11740,10 +11740,38 @@
{
"type": "relation",
"name": "internalLink",
- "value": "bwZpz2ajCEwO",
+ "value": "BlN9DFI679QC",
"isInheritable": false,
"position": 20
},
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GTwFsgaA0lCt",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zP3PMqaG71Ct",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R9pX4DGra2Vt",
+ "isInheritable": false,
+ "position": 60
+ },
{
"type": "label",
"name": "shareAlias",
@@ -11757,34 +11785,6 @@
"value": "bx bx-table",
"isInheritable": false,
"position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "BlN9DFI679QC",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GTwFsgaA0lCt",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zP3PMqaG71Ct",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R9pX4DGra2Vt",
- "isInheritable": false,
- "position": 80
}
],
"format": "markdown",
From 17298edfcc316ce31bd158f993ca09b47d954147 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 21:32:08 +0200
Subject: [PATCH 11/26] chore: handle requested changes
---
apps/client/src/widgets/type_widgets/MindMap.tsx | 2 +-
apps/client/src/widgets/type_widgets/canvas/Canvas.tsx | 3 ++-
.../Developer Guide/Concepts/Internationalisation Translat.md | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/apps/client/src/widgets/type_widgets/MindMap.tsx b/apps/client/src/widgets/type_widgets/MindMap.tsx
index 715612947..b4ccdf371 100644
--- a/apps/client/src/widgets/type_widgets/MindMap.tsx
+++ b/apps/client/src/widgets/type_widgets/MindMap.tsx
@@ -136,7 +136,7 @@ function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef
const mind = new VanillaMindElixir({
el: containerRef.current,
- locale: LOCALE_MAPPINGS[locale],
+ locale: LOCALE_MAPPINGS[locale as DISPLAYABLE_LOCALE_IDS] ?? undefined,
editable
});
diff --git a/apps/client/src/widgets/type_widgets/canvas/Canvas.tsx b/apps/client/src/widgets/type_widgets/canvas/Canvas.tsx
index fb5cc1df5..6a5ea9377 100644
--- a/apps/client/src/widgets/type_widgets/canvas/Canvas.tsx
+++ b/apps/client/src/widgets/type_widgets/canvas/Canvas.tsx
@@ -10,6 +10,7 @@ import { NonDeletedExcalidrawElement } from "@excalidraw/excalidraw/element/type
import { goToLinkExt } from "../../../services/link";
import useCanvasPersistence from "./persistence";
import { LANGUAGE_MAPPINGS } from "./i18n";
+import { DISPLAYABLE_LOCALE_IDS } from "@triliumnext/commons";
// currently required by excalidraw, in order to allows self-hosting fonts locally.
// this avoids making excalidraw load the fonts from an external CDN.
@@ -60,7 +61,7 @@ export default function Canvas({ note, noteContext }: TypeWidgetProps) {
detectScroll={false}
handleKeyboardGlobally={false}
autoFocus={false}
- langCode={LANGUAGE_MAPPINGS[locale]}
+ langCode={LANGUAGE_MAPPINGS[locale as DISPLAYABLE_LOCALE_IDS] ?? undefined}
UIOptions={{
canvasActions: {
saveToActiveFile: false,
diff --git a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md
index 2449b6c72..f420ff7ad 100644
--- a/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md
+++ b/docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translat.md
@@ -15,7 +15,7 @@ One important aspect is the fact that we are using a key-based approach. This me
The key-based approach allows a hierarchical structure. For example, a key of `about.title` would be added in `translation.json` as follows:
-```
+```json
{
"about": {
"title": "About Trilium Notes"
From 021c655a1a889fd24d36aa7dd73f75d5a23c9942 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 11:53:26 +0100
Subject: [PATCH 12/26] Translated using Weblate (Romanian)
Currently translated at 100.0% (1625 of 1625 strings)
Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
---
.../src/translations/ro/translation.json | 41 ++++++++++++++-----
1 file changed, 30 insertions(+), 11 deletions(-)
diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json
index 0f443bc53..556139973 100644
--- a/apps/client/src/translations/ro/translation.json
+++ b/apps/client/src/translations/ro/translation.json
@@ -302,7 +302,10 @@
"edit_branch_prefix": "Editează prefixul ramurii",
"help_on_tree_prefix": "Informații despre prefixe de ierarhie",
"prefix": "Prefix: ",
- "save": "Salvează"
+ "save": "Salvează",
+ "edit_branch_prefix_multiple": "Editează prefixul pentru {{count}} ramuri",
+ "branch_prefix_saved_multiple": "Prefixul a fost modificat pentru {{count}} ramuri.",
+ "affected_branches": "Ramuri afectate ({{count}}):"
},
"bulk_actions": {
"affected_notes": "Notițe afectate",
@@ -537,7 +540,8 @@
"opml_version_1": "OPML v1.0 - text simplu",
"opml_version_2": "OPML v2.0 - permite și HTML",
"format_html": "HTML - recomandat deoarece păstrează toata formatarea",
- "format_pdf": "PDF - cu scopul de printare sau partajare."
+ "format_pdf": "PDF - cu scopul de printare sau partajare.",
+ "share-format": "HTML pentru publicare web - folosește aceeași temă pentru notițele partajare, dar se pot publica într-un website static."
},
"fast_search": {
"description": "Căutarea rapidă dezactivează căutarea la nivel de conținut al notițelor cu scopul de a îmbunătăți performanța de căutare pentru baze de date mari.",
@@ -753,7 +757,8 @@
"placeholder": "Introduceți etichetele HTML, câte unul pe linie",
"reset_button": "Resetează la lista implicită",
"title": "Etichete HTML la importare"
- }
+ },
+ "importZipRecommendation": "Când importați un fișier ZIP, ierarhia notițelor va reflecta structura subdirectoarelor din arhivă."
},
"include_archived_notes": {
"include_archived_notes": "Include notițele arhivate"
@@ -799,7 +804,8 @@
"default_description": "În mod implicit Trilium limitează lățimea conținutului pentru a îmbunătăți lizibilitatea pentru ferestrele maximizate pe ecrane late.",
"max_width_label": "Lungimea maximă a conținutului",
"max_width_unit": "pixeli",
- "title": "Lățime conținut"
+ "title": "Lățime conținut",
+ "centerContent": "Centrează conținutul"
},
"mobile_detail_menu": {
"delete_this_note": "Șterge această notiță",
@@ -856,7 +862,8 @@
"convert_into_attachment_failed": "Nu s-a putut converti notița „{{title}}”.",
"convert_into_attachment_successful": "Notița „{{title}}” a fost convertită în atașament.",
"convert_into_attachment_prompt": "Doriți convertirea notiței „{{title}}” într-un atașament al notiței părinte?",
- "print_pdf": "Exportare ca PDF..."
+ "print_pdf": "Exportare ca PDF...",
+ "open_note_on_server": "Deschide notița pe server"
},
"note_erasure_timeout": {
"deleted_notes_erased": "Notițele șterse au fost eliminate permanent.",
@@ -1246,11 +1253,11 @@
"timeout_unit": "milisecunde"
},
"table_of_contents": {
- "description": "Tabela de conținut va apărea în notițele de tip text atunci când notița are un număr de titluri mai mare decât cel definit. Acest număr se poate personaliza:",
+ "description": "Cuprinsul va apărea în notițele de tip text atunci când notița are un număr de titluri mai mare decât cel definit. Acest număr se poate personaliza:",
"unit": "titluri",
- "disable_info": "De asemenea se poate dezactiva tabela de conținut setând o valoare foarte mare.",
- "shortcut_info": "Se poate configura și o scurtatură pentru a comuta rapid vizibilitatea panoului din dreapta (inclusiv tabela de conținut) în Opțiuni -> Scurtături (denumirea „toggleRightPane”).",
- "title": "Tabelă de conținut"
+ "disable_info": "De asemenea se poate dezactiva cuprinsul setând o valoare foarte mare.",
+ "shortcut_info": "Se poate configura și o scurtatură pentru a comuta rapid vizibilitatea panoului din dreapta (inclusiv cuprinsul) în Opțiuni -> Scurtături (denumirea „toggleRightPane”).",
+ "title": "Cuprins"
},
"text_auto_read_only_size": {
"description": "Marchează pragul în care o notiță de o anumită dimensiune va fi afișată în mod de citire (pentru motive de performanță).",
@@ -1503,7 +1510,9 @@
"window-on-top": "Menține fereastra mereu vizibilă"
},
"note_detail": {
- "could_not_find_typewidget": "Nu s-a putut găsi widget-ul corespunzător tipului „{{type}}”"
+ "could_not_find_typewidget": "Nu s-a putut găsi widget-ul corespunzător tipului „{{type}}”",
+ "printing": "Imprimare în curs...",
+ "printing_pdf": "Exportare ca PDF în curs..."
},
"note_title": {
"placeholder": "introduceți titlul notiței aici..."
@@ -2014,7 +2023,8 @@
"new-item-placeholder": "Introduceți titlul notiței...",
"add-column-placeholder": "Introduceți denumirea coloanei...",
"edit-note-title": "Clic pentru a edita titlul notiței",
- "edit-column-title": "Clic pentru a edita titlul coloanei"
+ "edit-column-title": "Clic pentru a edita titlul coloanei",
+ "column-already-exists": "Această coloană deja există."
},
"command_palette": {
"tree-action-name": "Listă de notițe: {{name}}",
@@ -2076,5 +2086,14 @@
"edit-slide": "Editați acest slide",
"start-presentation": "Începeți prezentarea",
"slide-overview": "Afișați o imagine de ansamblu a slide-urilor"
+ },
+ "read-only-info": {
+ "read-only-note": "Vizualizați o notiță în modul doar în citire.",
+ "auto-read-only-note": "Această notiță este afișată în modul doar în citire din motive de performanță.",
+ "auto-read-only-learn-more": "Mai multe detalii",
+ "edit-note": "Editează notița"
+ },
+ "calendar_view": {
+ "delete_note": "Șterge notița..."
}
}
From 8b6b1ee315ee8fb8b15b853720ea279ff24b2370 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 11:47:37 +0100
Subject: [PATCH 13/26] Translated using Weblate (Romanian)
Currently translated at 100.0% (389 of 389 strings)
Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ro/
---
apps/server/src/assets/translations/ro/server.json | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/apps/server/src/assets/translations/ro/server.json b/apps/server/src/assets/translations/ro/server.json
index 5ed87626d..248e44725 100644
--- a/apps/server/src/assets/translations/ro/server.json
+++ b/apps/server/src/assets/translations/ro/server.json
@@ -256,7 +256,9 @@
"multi-factor-authentication-title": "Autentificare multi-factor",
"ai-llm-title": "AI/LLM",
"localization": "Limbă și regiune",
- "inbox-title": "Inbox"
+ "inbox-title": "Inbox",
+ "command-palette": "Deschide paleta de comenzi",
+ "zen-mode": "Mod zen"
},
"notes": {
"new-note": "Notiță nouă",
@@ -274,7 +276,8 @@
"export_filter": "Document PDF (*.pdf)",
"unable-to-export-message": "Notița curentă nu a putut fi exportată ca PDF.",
"unable-to-export-title": "Nu s-a putut exporta ca PDF",
- "unable-to-save-message": "Nu s-a putut scrie fișierul selectat. Încercați din nou sau selectați altă destinație."
+ "unable-to-save-message": "Nu s-a putut scrie fișierul selectat. Încercați din nou sau selectați altă destinație.",
+ "unable-to-print": "Nu s-a putut imprima notița"
},
"tray": {
"bookmarks": "Semne de carte",
@@ -427,7 +430,8 @@
"presentation": "Prezentare",
"presentation_slide": "Slide de prezentare",
"presentation_slide_first": "Primul slide",
- "presentation_slide_second": "Al doilea slide"
+ "presentation_slide_second": "Al doilea slide",
+ "background": "Fundal"
},
"sql_init": {
"db_not_initialized_desktop": "Baza de date nu este inițializată, urmați instrucțiunile de pe ecran.",
From a85b37985af1365ef0424fb0d9ec366953daa388 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 11:37:02 +0100
Subject: [PATCH 14/26] Translated using Weblate (Romanian)
Currently translated at 100.0% (118 of 118 strings)
Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ro/
---
docs/README-ro.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/docs/README-ro.md b/docs/README-ro.md
index 9842cb319..b2bcf8720 100644
--- a/docs/README-ro.md
+++ b/docs/README-ro.md
@@ -34,12 +34,13 @@ ecran](https://triliumnext.github.io/Docs/Wiki/screenshot-tour):
-## ⏬ Download
+## ⏬ Descarcă
- [Latest release](https://github.com/TriliumNext/Trilium/releases/latest) –
- stable version, recommended for most users.
-- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) –
- unstable development version, updated daily with the latest features and
- fixes.
+ versiune stabilă, recomandată pentru majoritatea utilizatorilor.
+- [Versiune
+ periodică](https://github.com/TriliumNext/Trilium/releases/tag/nightly) –
+ versiune pentru dezvoltare și testare, actualizată zilnic și cu ultimele
+ funcționalități și buguri reparate.
## 📚 Documentație
From 1cccbcfabee3f430052d1be76131dff92f304da7 Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 11:53:37 +0100
Subject: [PATCH 15/26] Translated using Weblate (Romanian)
Currently translated at 100.0% (152 of 152 strings)
Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
---
apps/website/src/translations/ro/translation.json | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/apps/website/src/translations/ro/translation.json b/apps/website/src/translations/ro/translation.json
index 5cb462254..84facec37 100644
--- a/apps/website/src/translations/ro/translation.json
+++ b/apps/website/src/translations/ro/translation.json
@@ -51,7 +51,8 @@
"mermaid_description": "Creați diagrame precum flowchart-uri, diagrame de secvență sau de clase, Gantt și multe altele, folosind sintaxa Mermaid.",
"mindmap_title": "Hartă mentală",
"mindmap_description": "Organizați-vă gândurile vizual sau organizați o sesiune de brainstorming.",
- "others_list": "și altele: <0>hartă a notițelor0>, <1>hartă a relațiilor1>, <2>căutări salvate2>, <3>randare a notițelor3>, și <4>vizualizări web4>."
+ "others_list": "și altele: <0>hartă a notițelor0>, <1>hartă a relațiilor1>, <2>căutări salvate2>, <3>randare a notițelor3>, și <4>vizualizări web4>.",
+ "title": "Multiple modalități de a reprezenta informația"
},
"extensibility_benefits": {
"title": "Partajare și extensibilitate",
@@ -72,7 +73,10 @@
"board_title": "Tabelă Kanban",
"board_description": "Organizați-vă sarcinile sau proiectele într-o tabelă Kanban cu o modalitate ușoară de a adăuga elemente și coloane noi și schimbarea stării acestora prin glisare cu mouse-ul.",
"geomap_title": "Hartă geografică",
- "geomap_description": "Planificați-vă vacanțele sau marcați-vă punctele de interes direct pe o hartă geografică. Afișați traseele GPX înregistrate pentru a putea urmări itinerarii."
+ "geomap_description": "Planificați-vă vacanțele sau marcați-vă punctele de interes direct pe o hartă geografică. Afișați traseele GPX înregistrate pentru a putea urmări itinerarii.",
+ "title": "Colecții",
+ "presentation_title": "Prezentare",
+ "presentation_description": "Organizați informația în diapozitive și prezentați-le pe tot ecranul, cu tranziții fine. Dispozitivele pot fi ulterior exportate ca PDF pentru o partajare ușoară."
},
"faq": {
"title": "Întrebări frecvente",
From 192cf9bc26673fe601d51b8d3577923b9e8ceb1c Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 21:06:40 +0100
Subject: [PATCH 16/26] Translated using Weblate (Romanian)
Currently translated at 100.0% (1625 of 1625 strings)
Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ro/
---
apps/client/src/translations/ro/translation.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json
index 556139973..b0e412b35 100644
--- a/apps/client/src/translations/ro/translation.json
+++ b/apps/client/src/translations/ro/translation.json
@@ -541,7 +541,7 @@
"opml_version_2": "OPML v2.0 - permite și HTML",
"format_html": "HTML - recomandat deoarece păstrează toata formatarea",
"format_pdf": "PDF - cu scopul de printare sau partajare.",
- "share-format": "HTML pentru publicare web - folosește aceeași temă pentru notițele partajare, dar se pot publica într-un website static."
+ "share-format": "HTML pentru publicare web - folosește aceeași temă pentru notițele partajate, dar se pot publica într-un website static."
},
"fast_search": {
"description": "Căutarea rapidă dezactivează căutarea la nivel de conținut al notițelor cu scopul de a îmbunătăți performanța de căutare pentru baze de date mari.",
From 7b7058c77b2476b7d806cf6bae5a68ceba3bcccc Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sun, 16 Nov 2025 21:08:23 +0100
Subject: [PATCH 17/26] Translated using Weblate (Romanian)
Currently translated at 100.0% (152 of 152 strings)
Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ro/
---
apps/website/src/translations/ro/translation.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/website/src/translations/ro/translation.json b/apps/website/src/translations/ro/translation.json
index 84facec37..538ca10b6 100644
--- a/apps/website/src/translations/ro/translation.json
+++ b/apps/website/src/translations/ro/translation.json
@@ -76,7 +76,7 @@
"geomap_description": "Planificați-vă vacanțele sau marcați-vă punctele de interes direct pe o hartă geografică. Afișați traseele GPX înregistrate pentru a putea urmări itinerarii.",
"title": "Colecții",
"presentation_title": "Prezentare",
- "presentation_description": "Organizați informația în diapozitive și prezentați-le pe tot ecranul, cu tranziții fine. Dispozitivele pot fi ulterior exportate ca PDF pentru o partajare ușoară."
+ "presentation_description": "Organizați informația în diapozitive și prezentați-le pe tot ecranul, cu tranziții fine. Diapozitivele pot fi ulterior exportate ca PDF pentru o partajare ușoară."
},
"faq": {
"title": "Întrebări frecvente",
From c864863be40c98eeee1513aed67a7e9b23c168f7 Mon Sep 17 00:00:00 2001
From: Andrea Santoro
Date: Sun, 16 Nov 2025 22:19:46 +0100
Subject: [PATCH 18/26] Add Traefik configuration documentation
Added documentation for configuring Traefik as a reverse proxy with HTTPS support, including example docker-compose configuration.
---
.../2. Reverse proxy/Traefik.md | 59 +++++++++++++++++++
1 file changed, 59 insertions(+)
create mode 100644 docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
new file mode 100644
index 000000000..f8c62a0f1
--- /dev/null
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -0,0 +1,59 @@
+# Traefik
+Configure Traefik proxy and HTTPS. See [#7768](https://github.com/TriliumNext/Trilium/issues/7768#issuecomment-3539165814) for reference
+
+### Build the docker-compose file
+
+Setting up Traefik as reverse proxy requires setting the following labels:
+
+```yaml
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.trilium.entrypoints=https
+ - traefik.http.routers.trilium.rule=Host(`trilium.mydomain.tld`)
+ - traefik.http.routers.trilium.tls=true
+ - traefik.http.routers.trilium.service=trilium
+ - traefik.http.services.trilium.loadbalancer.server.port=8080
+ # scheme must be HTTP instead of the usual HTTPS because Trilium listens on HTTP internally
+ - traefik.http.services.trilium.loadbalancer.server.scheme=http
+ - traefik.docker.network=proxy
+ # forward HTTP to HTTPS
+ - traefik.http.routers.trilium.middlewares=trilium-headers@docker
+ - traefik.http.middlewares.trilium-headers.headers.customrequestheaders.X-Forwarded-Proto=https
+```
+
+### Setup needed environment variables
+After setting up a reverse proxy, make sure to configure the Trusted proxy.
+
+### Example `docker-compose.yaml`
+
+```yaml
+services:
+ trilium:
+ image: triliumnext/trilium
+ container_name: trilium
+ networks:
+ - traefik-proxy
+ environment:
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ - TRILIUM_NETWORK_TRUSTEDREVERSEPROXY=my-traefik-host-ip
+ volumes:
+ - /path/to/data=/home/node/trilium-data
+ labels:
+ - traefik.enable=true
+ - traefik.http.routers.trilium.entrypoints=https
+ - traefik.http.routers.trilium.rule=Host(`trilium.mydomain.tld`)
+ - traefik.http.routers.trilium.tls=true
+ - traefik.http.routers.trilium.service=trilium
+ - traefik.http.services.trilium.loadbalancer.server.port=8080
+ # scheme must be HTTP instead of the usual HTTPS because of how trilium works
+ - traefik.http.services.trilium.loadbalancer.server.scheme=http
+ - traefik.docker.network=proxy
+ # forward to HTTPS
+ - traefik.http.routers.trilium.middlewares=trilium-headers@docker
+ - traefik.http.middlewares.trilium-headers.headers.customrequestheaders.X-Forwarded-Proto=https
+
+networks:
+ traefik-proxy:
+ external: true
+```
From 335f34b8241ed457c7f74db01b910bb28948bf11 Mon Sep 17 00:00:00 2001
From: Andrea Santoro
Date: Sun, 16 Nov 2025 22:23:15 +0100
Subject: [PATCH 19/26] Update docs/User Guide/User Guide/Installation &
Setup/Server Installation/2. Reverse proxy/Traefik.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---
.../Server Installation/2. Reverse proxy/Traefik.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
index f8c62a0f1..dee5af80a 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -34,11 +34,11 @@ services:
networks:
- traefik-proxy
environment:
- - /etc/timezone:/etc/timezone:ro
- - /etc/localtime:/etc/localtime:ro
- TRILIUM_NETWORK_TRUSTEDREVERSEPROXY=my-traefik-host-ip
volumes:
- /path/to/data=/home/node/trilium-data
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
labels:
- traefik.enable=true
- traefik.http.routers.trilium.entrypoints=https
From 341ef79b49353da6770341a8388956ed8ce56008 Mon Sep 17 00:00:00 2001
From: Andrea Santoro
Date: Sun, 16 Nov 2025 22:23:39 +0100
Subject: [PATCH 20/26] Update docs/User Guide/User Guide/Installation &
Setup/Server Installation/2. Reverse proxy/Traefik.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---
.../Server Installation/2. Reverse proxy/Traefik.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
index dee5af80a..f00ee69a5 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -48,7 +48,7 @@ services:
- traefik.http.services.trilium.loadbalancer.server.port=8080
# scheme must be HTTP instead of the usual HTTPS because of how trilium works
- traefik.http.services.trilium.loadbalancer.server.scheme=http
- - traefik.docker.network=proxy
+ - traefik.docker.network=traefik-proxy
# forward to HTTPS
- traefik.http.routers.trilium.middlewares=trilium-headers@docker
- traefik.http.middlewares.trilium-headers.headers.customrequestheaders.X-Forwarded-Proto=https
From 3863e657ef6d02653ad12e7e4ab6418e0ec1764c Mon Sep 17 00:00:00 2001
From: Andrea Santoro
Date: Sun, 16 Nov 2025 22:25:06 +0100
Subject: [PATCH 21/26] Update docs/User Guide/User Guide/Installation &
Setup/Server Installation/2. Reverse proxy/Traefik.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---
.../Server Installation/2. Reverse proxy/Traefik.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
index f00ee69a5..025de2c2d 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -49,7 +49,7 @@ services:
# scheme must be HTTP instead of the usual HTTPS because of how trilium works
- traefik.http.services.trilium.loadbalancer.server.scheme=http
- traefik.docker.network=traefik-proxy
- # forward to HTTPS
+ # Tell Trilium the original request was HTTPS
- traefik.http.routers.trilium.middlewares=trilium-headers@docker
- traefik.http.middlewares.trilium-headers.headers.customrequestheaders.X-Forwarded-Proto=https
From e54822f3b08bb3126370fe5dc590c38ea35ffbff Mon Sep 17 00:00:00 2001
From: Andrea Santoro
Date: Sun, 16 Nov 2025 22:27:14 +0100
Subject: [PATCH 22/26] Clarify TRILIUM_NETWORK_TRUSTEDREVERSEPROXY config
Added example IP address for TRILIUM_NETWORK_TRUSTEDREVERSEPROXY.
---
.../Server Installation/2. Reverse proxy/Traefik.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
index 025de2c2d..ab1641a8d 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -34,7 +34,7 @@ services:
networks:
- traefik-proxy
environment:
- - TRILIUM_NETWORK_TRUSTEDREVERSEPROXY=my-traefik-host-ip
+ - TRILIUM_NETWORK_TRUSTEDREVERSEPROXY=my-traefik-host-ip # e.g., 172.18.0.0/16
volumes:
- /path/to/data=/home/node/trilium-data
- /etc/timezone:/etc/timezone:ro
From ca08a52998b8cb1645eab6e13beba8ee6cfa3654 Mon Sep 17 00:00:00 2001
From: Andrea Santoro
Date: Sun, 16 Nov 2025 22:39:50 +0100
Subject: [PATCH 23/26] Fix volume path syntax in Traefik documentation
---
.../Server Installation/2. Reverse proxy/Traefik.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
index ab1641a8d..ab6b01c6f 100644
--- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
+++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.md
@@ -36,7 +36,7 @@ services:
environment:
- TRILIUM_NETWORK_TRUSTEDREVERSEPROXY=my-traefik-host-ip # e.g., 172.18.0.0/16
volumes:
- - /path/to/data=/home/node/trilium-data
+ - /path/to/data:/home/node/trilium-data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
From d92431ad659a42e409aaa5fd12c225f03e84dc21 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 17 Nov 2025 02:06:54 +0000
Subject: [PATCH 24/26] fix(deps): update dependency mind-elixir to v5.3.6
---
apps/client/package.json | 2 +-
pnpm-lock.yaml | 42 ++++++++++++++++++++++++++++++++--------
2 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/apps/client/package.json b/apps/client/package.json
index f3341ba5c..cd1317e2b 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -55,7 +55,7 @@
"mark.js": "8.11.1",
"marked": "16.4.2",
"mermaid": "11.12.1",
- "mind-elixir": "5.3.5",
+ "mind-elixir": "5.3.6",
"normalize.css": "8.0.1",
"panzoom": "9.4.3",
"preact": "10.27.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 89e346f04..ad305250f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -186,7 +186,7 @@ importers:
version: 0.2.0(mermaid@11.12.1)
'@mind-elixir/node-menu':
specifier: 5.0.1
- version: 5.0.1(mind-elixir@5.3.5)
+ version: 5.0.1(mind-elixir@5.3.6)
'@popperjs/core':
specifier: 2.11.8
version: 2.11.8
@@ -275,8 +275,8 @@ importers:
specifier: 11.12.1
version: 11.12.1
mind-elixir:
- specifier: 5.3.5
- version: 5.3.5
+ specifier: 5.3.6
+ version: 5.3.6
normalize.css:
specifier: 8.0.1
version: 8.0.1
@@ -10377,8 +10377,8 @@ packages:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
- mind-elixir@5.3.5:
- resolution: {integrity: sha512-GKYTqU7qsbmPmdTvJlM0g/chrHIkikV7sYhQIz4GTa7Xp8H7hqL5y8gMeJLeR2gdJi3sLUyoVUzBwF7tmKIffw==}
+ mind-elixir@5.3.6:
+ resolution: {integrity: sha512-LU5HuRrtq/Fq/YkgZHUu4gb1Vg6tNQq0Ob7bQKNDTP3A8prcohHF5D7ca5blvqVkyf9+xUdBWsdFMNffMNPnkA==}
mini-css-extract-plugin@2.4.7:
resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==}
@@ -15616,6 +15616,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-block-quote@47.2.0':
dependencies:
@@ -15626,6 +15628,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-bookmark@47.2.0':
dependencies:
@@ -15636,6 +15640,8 @@ snapshots:
'@ckeditor/ckeditor5-utils': 47.2.0
'@ckeditor/ckeditor5-widget': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-case-change@47.2.0':
dependencies:
@@ -15946,6 +15952,8 @@ snapshots:
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.39.5
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-editor-multi-root@47.2.0':
dependencies:
@@ -15968,6 +15976,8 @@ snapshots:
'@ckeditor/ckeditor5-table': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-emoji@47.2.0':
dependencies:
@@ -15980,6 +15990,8 @@ snapshots:
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.39.5
fuzzysort: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-engine@47.2.0':
dependencies:
@@ -16022,6 +16034,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-export-word@47.2.0':
dependencies:
@@ -16087,6 +16101,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-heading@47.2.0':
dependencies:
@@ -16097,6 +16113,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-highlight@47.2.0':
dependencies:
@@ -16142,6 +16160,8 @@ snapshots:
'@ckeditor/ckeditor5-widget': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.39.5
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-icons@47.2.0': {}
@@ -16173,6 +16193,8 @@ snapshots:
'@ckeditor/ckeditor5-ui': 47.2.0
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-indent@47.2.0':
dependencies:
@@ -16309,6 +16331,8 @@ snapshots:
'@ckeditor/ckeditor5-widget': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.39.5
+ transitivePeerDependencies:
+ - supports-color
'@ckeditor/ckeditor5-minimap@47.2.0':
dependencies:
@@ -16692,6 +16716,8 @@ snapshots:
'@ckeditor/ckeditor5-utils': 47.2.0
ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41)
es-toolkit: 1.39.5
+ transitivePeerDependencies:
+ - supports-color
'@codemirror/autocomplete@6.18.6':
dependencies:
@@ -18575,9 +18601,9 @@ snapshots:
'@microsoft/tsdoc@0.15.1': {}
- '@mind-elixir/node-menu@5.0.1(mind-elixir@5.3.5)':
+ '@mind-elixir/node-menu@5.0.1(mind-elixir@5.3.6)':
dependencies:
- mind-elixir: 5.3.5
+ mind-elixir: 5.3.6
'@mixmark-io/domino@2.2.0': {}
@@ -27043,7 +27069,7 @@ snapshots:
mimic-response@3.1.0: {}
- mind-elixir@5.3.5: {}
+ mind-elixir@5.3.6: {}
mini-css-extract-plugin@2.4.7(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.0)):
dependencies:
From 620e53c2557d0c543cd21236fdaad9496003737a Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Mon, 17 Nov 2025 08:19:23 +0200
Subject: [PATCH 25/26] docs(user): fix broken reference link (see #7766)
---
.../User Guide/Collections/Calendar.html | 6 ++
.../Using Docker.html | 56 ++++++++++---------
docs/Developer Guide/!!!meta.json | 14 ++---
.../Developer Guide/Documentation.md | 2 +-
docs/User Guide/!!!meta.json | 7 +++
.../1. Installing the server/Using Docker.md | 2 +-
6 files changed, 52 insertions(+), 35 deletions(-)
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html
index 160cee491..701aaedb3 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Collections/Calendar.html
@@ -112,6 +112,12 @@
When present (regardless of value), it will show the number of the week
on the calendar.
+
+
#calendar:initialDate
+
+
Change the date the calendar opens on. When not present, the calendar
+ opens on the current date.
+
#calendar:view
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html
index a4c7191eb..06829a014 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html
@@ -39,8 +39,8 @@
setup is suitable for testing or when using a proxy server like Nginx or
Apache.
sudo docker run -t -i -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/trilium:[VERSION]
-
Verify the container is running using docker ps.
-
Access Trilium via a web browser at 127.0.0.1:8080.
+
Verify the container is running using docker ps.
+
Access Trilium via a web browser at 127.0.0.1:8080.
Local Network Access
To make the container accessible only on your local network, first create
@@ -65,9 +65,9 @@ docker inspect [container_name]
is the container's path. More details can be found in the Docker Volumes Documentation.
If you encounter permission issues with the data volume, ensure that:
-
The host directory has appropriate permissions for the UID/GID you're
+
The host directory has appropriate permissions for the UID/GID you're
using
-
You're setting both TRILIUM_UID and TRILIUM_GID to
+
You're setting both TRILIUM_UID and TRILIUM_GID to
match the owner of the host directory
# For example, if your data directory is owned by UID 1001 and GID 1001:
TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d
Considerations
-
The container starts with a specific UID/GID which can be customized at
+
The container starts with a specific UID/GID which can be customized at
runtime
-
Unlike the traditional setup, this approach does not use a separate entrypoint
+
Unlike the traditional setup, this approach does not use a separate entrypoint
script with usermod/groupmod commands
-
The container cannot modify its own UID/GID at runtime, which is a security
+
The container cannot modify its own UID/GID at runtime, which is a security
feature of rootless containers
Available Rootless Images
Two rootless variants are provided:
-
Debian-based (default): Uses the Debian Bullseye Slim
+
Debian-based (default): Uses the Debian Bullseye Slim
base image
-
Dockerfile: apps/server/Dockerfile.rootless
+
Dockerfile: apps/server/Dockerfile.rootless
-
Recommended for most users
+
Recommended for most users
-
Alpine-based: Uses the Alpine base image for smaller
+
Alpine-based: Uses the Alpine base image for smaller
size
sudo docker run -t -i -p 127.0.0.1:8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/trilium:[VERSION]
-
Verify the container is running using docker ps.
-
Access Trilium via a web browser at 127.0.0.1:8080.
+
Verify the container is running using docker ps.
+
Access Trilium via a web browser at 127.0.0.1:8080.
Local Network Access
To make the container accessible only on your local network, first create
@@ -65,9 +65,9 @@ docker inspect [container_name]
is the container's path. More details can be found in the Docker Volumes Documentation.
If you encounter permission issues with the data volume, ensure that:
-
The host directory has appropriate permissions for the UID/GID you're
+
The host directory has appropriate permissions for the UID/GID you're
using
-
You're setting both TRILIUM_UID and TRILIUM_GID to
+
You're setting both TRILIUM_UID and TRILIUM_GID to
match the owner of the host directory
# For example, if your data directory is owned by UID 1001 and GID 1001:
TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d
Considerations
-
The container starts with a specific UID/GID which can be customized at
+
The container starts with a specific UID/GID which can be customized at
runtime
-
Unlike the traditional setup, this approach does not use a separate entrypoint
+
Unlike the traditional setup, this approach does not use a separate entrypoint
script with usermod/groupmod commands
-
The container cannot modify its own UID/GID at runtime, which is a security
+
The container cannot modify its own UID/GID at runtime, which is a security
feature of rootless containers
Available Rootless Images
Two rootless variants are provided:
-
Debian-based (default): Uses the Debian Bullseye Slim
+
Debian-based (default): Uses the Debian Bullseye Slim
base image
-
Dockerfile: apps/server/Dockerfile.rootless
+
Dockerfile: apps/server/Dockerfile.rootless
-
Recommended for most users
+
Recommended for most users
-
Alpine-based: Uses the Alpine base image for smaller
+
Alpine-based: Uses the Alpine base image for smaller
size