diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note source.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note source.html
index 2292a7cec..a306420d7 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note source.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Note source.html
@@ -3,20 +3,20 @@
on the Note Types .
Depending on the changes made, there is a risk that the note will not
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html
index a5dfa45b1..5be4d8ca0 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Canvas.html
@@ -7,6 +7,7 @@
text and graphics input.
Interaction
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/File.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/File.html
index 80dad6f45..3a18e1e23 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/File.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/File.html
@@ -4,9 +4,8 @@
Since these files come from an external source, it is not possible to
create a File note type directly:
- Drag a file into the Note Tree .
- Right click a note and select Import into note and point it to
+ Drag a file into the Note Tree .
+ Right click a note and select Import into note and point it to
one of the supported files.
Supported file types
@@ -18,20 +17,18 @@
PDFs can be browsed directly from Trilium.
Interaction:
- Press the menu icon at the top-left to see a preview (thumbnail) of all
+ Press the menu icon at the top-left to see a preview (thumbnail) of all
the pages, as well as a table of contents (if the PDF has this information).
- See or edit the page number at the top.
- Adjust the zoom using the buttons at the top or manually editing the value.
- Rotate the document if it's in the wrong orientation.
- In the contextual menu:
-
- View two pages at once (great for books).
- Toggle annotations (if present in the document).
- View document properties.
-
-
+ See or edit the page number at the top.
+ Adjust the zoom using the buttons at the top or manually editing the value.
+ Rotate the document if it's in the wrong orientation.
+ In the contextual menu:
+
+ View two pages at once (great for books).
+ Toggle annotations (if present in the document).
+ View document properties.
+
+
Images
@@ -40,14 +37,14 @@
Interaction:
- Copy reference to clipboard , for embedding the image within
+ Copy reference to clipboard , for embedding the image within
Text notes.
@@ -77,11 +74,11 @@
be used to play it.
Interactions:
- The audio can be played/paused using the dedicated button.
- Dragging the mouse across, or clicking the progress bar will seek through
+ The audio can be played/paused using the dedicated button.
+ Dragging the mouse across, or clicking the progress bar will seek through
the song.
- The volume can be set.
- The playback speed can be adjusted via the contextual menu next to the
+ The volume can be set.
+ The playback speed can be adjusted via the contextual menu next to the
volume.
Text files
@@ -114,35 +111,33 @@
file externally, but there will be no preview of the content.
Interaction
- Regardless of the file type, a series of buttons will be displayed in
+ Regardless of the file type, a series of buttons will be displayed in
the Image or File tab in the Ribbon .
- Download , which will download the file for local use.
- Open , will will open the file with the system-default application.
- Upload new revision to replace the file with a new one.
+ Download , which will download the file for local use.
+ Open , will will open the file with the system-default application.
+ Upload new revision to replace the file with a new one.
-
- It is not possible to change the note type of a File note.
- Convert into an attachment from the note menu .
+
+ It is not possible to change the note type of a File note.
+ Convert into an attachment from the note menu .
Relation with other notes
-
+
Files are also displayed in the Note List based
on their type:
-
-
-
+
+
+
+ Non-image files can be embedded into text notes as read-only widgets via
+ the Include Note functionality.
+
+
+ Image files can be embedded into text notes like normal images via
+ Image references .
- Non-image files can be embedded into text notes as read-only widgets via
- the Include Note functionality.
- Image files can be embedded into text notes like normal images via
- Image references .
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html
index b310466e9..988f1bcac 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Mind Map.html
@@ -6,42 +6,35 @@
a hierarchical fashion.
Terminology
- A node is a single idea, represented differently based
+ A node is a single idea, represented differently based
on depth (filled rounded rectangle for the root note, unfilled rectangles
for sub-ideas, lines only for sub-sub-ideas).
- The root node is the top-most node from which all other
+ The root node is the top-most node from which all other
nodes derive, displayed as a filled rectangle. There can only be a single
root node.
Interaction
- To create a new node at the same level as the current one, press Enter ,
+ To create a new node at the same level as the current one, press Enter ,
enter the desired text and then press Enter once again to confirm.
- Similarly, to create a sub-node, press Tab , enter the desired
+ Similarly, to create a sub-node, press Tab , enter the desired
text and then press Enter .
- To create a parent, use Ctrl +Enter instead.
- To remove a node, press Delete .
- To move a node up or down, press Page Up or Page Down .
- To adjust the font size, color of the text or background or to add a link,
- click on a node and use the floating panel that appears to the right.
- To select one or more notes, drag and drop across the map.
- Right click the node to bring a contextual menu with options such as creating
- new nodes, focusing on a particular notes or creating links between them.
- Use the buttons at the top-left to change the positioning of the nodes
- relative to the root node (to the left, to the right, or to both sides).
- In the Floating buttons area:
-
- An image reference can be copied, to paste
- the mind map in a text note.
- The diagram can be exported either as SVG (vectorial) or PNG (raster).
- The note can be togged read-only .
-
-
+ To create a parent, use Ctrl +Enter instead.
+ To remove a node, press Delete .
+ To move a node up or down, press Page Up or Page Down .
+ To adjust the font size, color of the text or background or to add a link,
+ click on a node and use the floating panel that appears to the right.
+ To select one or more notes, drag and drop across the map.
+ Right click the node to bring a contextual menu with options such as creating
+ new nodes, focusing on a particular notes or creating links between them.
+ Use the buttons at the top-left to change the positioning of the nodes
+ relative to the root node (to the left, to the right, or to both sides).
+ In the Floating buttons area:
+
+ An image reference can be copied, to paste
+ the mind map in a text note.
+ The diagram can be exported either as SVG (vectorial) or PNG (raster).
+ The note can be togged read-only .
+
+
\ No newline at end of file
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html
index 14a6cf28c..5e5895b8d 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html
@@ -7,13 +7,11 @@
via an attribute.
Creating a render note
- Create a Code note
+ Create a Code note
with the HTML language, with what needs to be displayed (for example <p>Hello world.</p>).
- Create a Render Note .
- Assign the renderNote relation to
- point at the previously created code note.
+ Create a Render Note .
+ Assign the renderNote relation to
+ point at the previously created code note.
Dynamic content
A static HTML is generally not enough for
Refreshing the note
It's possible to refresh the note via:
Examples
\ No newline at end of file
diff --git a/docs/Developer Guide/!!!meta.json b/docs/Developer Guide/!!!meta.json
index b1dc64a44..5d95a894c 100644
--- a/docs/Developer Guide/!!!meta.json
+++ b/docs/Developer Guide/!!!meta.json
@@ -96,6 +96,46 @@
"dataFileName": "Environment Setup.md",
"attachments": []
},
+ {
+ "isClone": false,
+ "noteId": "ccIoz7nqgDRK",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "ccIoz7nqgDRK"
+ ],
+ "title": "Branching strategy",
+ "notePosition": 270,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-git-merge",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "4nwtTJyjNDKd",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "branching-strategy",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Branching strategy.md",
+ "attachments": []
+ },
{
"isClone": false,
"noteId": "cxfTSHIUQtt2",
@@ -104,7 +144,7 @@
"cxfTSHIUQtt2"
],
"title": "Project Structure",
- "notePosition": 270,
+ "notePosition": 280,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -144,7 +184,7 @@
"MhwWMgxwDTZL"
],
"title": "Architecture",
- "notePosition": 280,
+ "notePosition": 290,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -940,7 +980,7 @@
"zdQzavvHDl1k"
],
"title": "Documentation",
- "notePosition": 290,
+ "notePosition": 300,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1010,7 +1050,7 @@
"a0mkxxB4Uvbf"
],
"title": "Building",
- "notePosition": 300,
+ "notePosition": 310,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1240,6 +1280,13 @@
"value": "releasing",
"isInheritable": false,
"position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "ccIoz7nqgDRK",
+ "isInheritable": false,
+ "position": 50
}
],
"format": "markdown",
@@ -1256,7 +1303,7 @@
"qalhAaJoQ7AN"
],
"title": "Dependencies",
- "notePosition": 320,
+ "notePosition": 330,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1507,7 +1554,7 @@
"yeqU0zo0ZQ83"
],
"title": "Concepts",
- "notePosition": 330,
+ "notePosition": 340,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -2768,7 +2815,7 @@
"YjerxU7Aii8X"
],
"title": "Troubleshooting",
- "notePosition": 370,
+ "notePosition": 380,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -2857,7 +2904,7 @@
"dtKC3FmoWOrv"
],
"title": "Testing",
- "notePosition": 390,
+ "notePosition": 400,
"prefix": null,
"isExpanded": false,
"type": "text",
diff --git a/docs/Developer Guide/Developer Guide/Branching strategy.md b/docs/Developer Guide/Developer Guide/Branching strategy.md
new file mode 100644
index 000000000..e302f4ee1
--- /dev/null
+++ b/docs/Developer Guide/Developer Guide/Branching strategy.md
@@ -0,0 +1,30 @@
+# Branching strategy
+## Main branch
+
+The main development branch is conveniently called `main`. This branch contains all the merged features and is considered semi-stable.
+
+## Development
+
+Every new development must be done in a separate branch (usually prefixed with `feature/`). The PR must then be reviewed.
+
+## Reviewing
+
+Each PR must be tested manually and reviewed by a maintainer. For PRs that are made by the maintainers themselves, an LLM review from Copilot or Gemini are also accepted.
+
+After a PR is approved, it is merged into the `main` branch and the change log draft is updated.
+
+## Releasing
+
+[Releasing a new version](Building/Releasing%20a%20new%20version.md) is done straight from the `main` branch once it's deemed stable enough for production.
+
+## Hot-fixing
+
+After releasing a new version, it's sometimes desirable to create a hotfix in order to fix some issues with the production version without introducing many changes that might have already been merged in `main`.
+
+To do so, the procedure is as follows:
+
+1. A `hotfix` branch is created, from the tag of the release.
+2. If fixes/features from the `main` branch are needed, they are cherry-picked directly onto the branch.
+3. New fixes/features are either developed directly on the `hotfix` branch or an a PR that targets this branch, depending on the complexity.
+4. A new version is released from the `hotfix` version.
+5. The `hotfix` version is merged back into `main`, via a PR.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Building/Releasing a new version.md b/docs/Developer Guide/Developer Guide/Building/Releasing a new version.md
index 19e3427ec..dc6793a02 100644
--- a/docs/Developer Guide/Developer Guide/Building/Releasing a new version.md
+++ b/docs/Developer Guide/Developer Guide/Building/Releasing a new version.md
@@ -4,7 +4,7 @@ Releasing is mostly handled by the CI:
* The version on GitHub is published automatically, including the description with the change log which is taken from the documentation.
* A PR is created automatically on the Winget repository to update to the new version.
-Releases are usually made directly from the `main` branch.
+Releases are usually made directly from the `main` branch. For hot-fixes the process is the same but with a different branch, consult the Branching strategy for more information.
The process is as follows:
diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md
index 70c715368..63cfdc33e 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 b05f2ed21..bb262ac18 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -8864,17 +8864,31 @@
{
"type": "relation",
"name": "internalLink",
- "value": "R7abl2fc6Mxi",
+ "value": "XpOYSgsLkTJy",
"isInheritable": false,
"position": 50
},
{
"type": "relation",
"name": "internalLink",
- "value": "6tZeKvSHEUiB",
+ "value": "A9Oc6YKKc65v",
"isInheritable": false,
"position": 60
},
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6tZeKvSHEUiB",
+ "isInheritable": false,
+ "position": 80
+ },
{
"type": "label",
"name": "iconClass",
@@ -8888,20 +8902,6 @@
"value": "render-note",
"isInheritable": false,
"position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "XpOYSgsLkTJy",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "A9Oc6YKKc65v",
- "isInheritable": false,
- "position": 90
}
],
"format": "markdown",
@@ -9094,6 +9094,20 @@
"type": "text",
"mime": "text/html",
"attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CoFPLs3dRlXc",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "XpOYSgsLkTJy",
+ "isInheritable": false,
+ "position": 20
+ },
{
"type": "label",
"name": "iconClass",
@@ -9107,20 +9121,6 @@
"value": "canvas",
"isInheritable": false,
"position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CoFPLs3dRlXc",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "XpOYSgsLkTJy",
- "isInheritable": false,
- "position": 40
}
],
"format": "markdown",
@@ -9206,6 +9206,13 @@
"isInheritable": false,
"position": 20
},
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CoFPLs3dRlXc",
+ "isInheritable": false,
+ "position": 30
+ },
{
"type": "label",
"name": "iconClass",
@@ -9219,13 +9226,6 @@
"value": "mindmap",
"isInheritable": false,
"position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CoFPLs3dRlXc",
- "isInheritable": false,
- "position": 40
}
],
"format": "markdown",
@@ -9280,66 +9280,73 @@
{
"type": "relation",
"name": "internalLink",
- "value": "wX4HbRucYSDD",
+ "value": "XpOYSgsLkTJy",
"isInheritable": false,
"position": 40
},
{
"type": "relation",
"name": "internalLink",
- "value": "ODY7qQn5m2FT",
+ "value": "wX4HbRucYSDD",
"isInheritable": false,
"position": 50
},
{
"type": "relation",
"name": "internalLink",
- "value": "mHbBMPDPkVV5",
+ "value": "ODY7qQn5m2FT",
"isInheritable": false,
"position": 60
},
{
"type": "relation",
"name": "internalLink",
- "value": "6f9hih2hXXZk",
+ "value": "mHbBMPDPkVV5",
"isInheritable": false,
"position": 70
},
{
"type": "relation",
"name": "internalLink",
- "value": "BlN9DFI679QC",
+ "value": "6f9hih2hXXZk",
"isInheritable": false,
"position": 80
},
{
"type": "relation",
"name": "internalLink",
- "value": "0vhv7lsOLy82",
+ "value": "BlN9DFI679QC",
"isInheritable": false,
"position": 90
},
{
"type": "relation",
"name": "internalLink",
- "value": "8YBEPzcpUgxw",
+ "value": "0vhv7lsOLy82",
"isInheritable": false,
"position": 100
},
{
"type": "relation",
"name": "internalLink",
- "value": "0ESUbbAxVnoK",
+ "value": "8YBEPzcpUgxw",
"isInheritable": false,
"position": 110
},
{
"type": "relation",
"name": "internalLink",
- "value": "nBAXQFj20hS1",
+ "value": "0ESUbbAxVnoK",
"isInheritable": false,
"position": 120
},
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "nBAXQFj20hS1",
+ "isInheritable": false,
+ "position": 130
+ },
{
"type": "label",
"name": "shareAlias",
@@ -9353,13 +9360,6 @@
"value": "bx bx-file-blank",
"isInheritable": false,
"position": 140
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "XpOYSgsLkTJy",
- "isInheritable": false,
- "position": 150
}
],
"format": "markdown",