diff --git a/docs/Developer Guide/!!!meta.json b/docs/Developer Guide/!!!meta.json
index 244b6be5f..f384978f2 100644
--- a/docs/Developer Guide/!!!meta.json
+++ b/docs/Developer Guide/!!!meta.json
@@ -82,136 +82,6 @@
"dataFileName": "Environment Setup.md",
"attachments": []
},
- {
- "isClone": false,
- "noteId": "a0mkxxB4Uvbf",
- "notePath": [
- "jdjRLhLV3TtI",
- "a0mkxxB4Uvbf"
- ],
- "title": "Building",
- "notePosition": 270,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "building",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-terminal",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "attachments": [],
- "dirFileName": "Building",
- "children": [
- {
- "isClone": false,
- "noteId": "mXFYlhuEr1mZ",
- "notePath": [
- "jdjRLhLV3TtI",
- "a0mkxxB4Uvbf",
- "mXFYlhuEr1mZ"
- ],
- "title": "Docker",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "docker",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bxl-docker",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Docker.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "aGlhNBEA9wwo",
- "notePath": [
- "jdjRLhLV3TtI",
- "a0mkxxB4Uvbf",
- "aGlhNBEA9wwo"
- ],
- "title": "Build information",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "build-info",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-info-circle",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Build information.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "fI16A7NrT713",
- "notePath": [
- "jdjRLhLV3TtI",
- "a0mkxxB4Uvbf",
- "fI16A7NrT713"
- ],
- "title": "Live reload (HMR)",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "live-reload",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Live reload (HMR).md",
- "attachments": []
- }
- ]
- },
{
"isClone": false,
"noteId": "cxfTSHIUQtt2",
@@ -220,7 +90,7 @@
"cxfTSHIUQtt2"
],
"title": "Project Structure",
- "notePosition": 280,
+ "notePosition": 270,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -243,7 +113,7 @@
{
"type": "relation",
"name": "internalLink",
- "value": "mXFYlhuEr1mZ",
+ "value": "a0mkxxB4Uvbf",
"isInheritable": false,
"position": 30
}
@@ -327,6 +197,245 @@
}
]
},
+ {
+ "isClone": false,
+ "noteId": "a0mkxxB4Uvbf",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf"
+ ],
+ "title": "Building",
+ "notePosition": 280,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "building",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-terminal",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "attachments": [],
+ "dirFileName": "Building",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "czgXkoEYwclZ",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf",
+ "czgXkoEYwclZ"
+ ],
+ "title": "Running a development build",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "dev-build",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "T2W7WCZrYZBU",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "mXFYlhuEr1mZ",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Running a development build.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "mXFYlhuEr1mZ",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf",
+ "mXFYlhuEr1mZ"
+ ],
+ "title": "Docker",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "docker",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxl-docker",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Docker.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "aGlhNBEA9wwo",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf",
+ "aGlhNBEA9wwo"
+ ],
+ "title": "Build information",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "build-info",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-info-circle",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Build information.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "fI16A7NrT713",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf",
+ "fI16A7NrT713"
+ ],
+ "title": "Live reload (HMR)",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "live-reload",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Live reload (HMR).md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "PXzm2t3sCdsP",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf",
+ "PXzm2t3sCdsP"
+ ],
+ "title": "Build deliveries locally",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "build-deliveries",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-package",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Build deliveries locally.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "zdQzavvHDl1k",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "a0mkxxB4Uvbf",
+ "zdQzavvHDl1k"
+ ],
+ "title": "Documentation",
+ "notePosition": 60,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "documentation",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-book-open",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Documentation.md",
+ "attachments": []
+ }
+ ]
+ },
{
"isClone": false,
"noteId": "yeqU0zo0ZQ83",
@@ -335,7 +444,7 @@
"yeqU0zo0ZQ83"
],
"title": "Architecture",
- "notePosition": 290,
+ "notePosition": 300,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -428,6 +537,87 @@
"dataFileName": "Branch prefixes.md",
"attachments": []
},
+ {
+ "isClone": false,
+ "noteId": "oqg9OpK8xfcm",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "yeqU0zo0ZQ83",
+ "oqg9OpK8xfcm"
+ ],
+ "title": "CI",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "ci",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "attachments": [],
+ "dirFileName": "CI",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "IxkDdjTogO18",
+ "notePath": [
+ "jdjRLhLV3TtI",
+ "yeqU0zo0ZQ83",
+ "oqg9OpK8xfcm",
+ "IxkDdjTogO18"
+ ],
+ "title": "Main",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "PXzm2t3sCdsP",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "main",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Main.md",
+ "attachments": [
+ {
+ "attachmentId": "c3aGEk60ZR2Q",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "Main_image.png"
+ },
+ {
+ "attachmentId": "q9OGTAguCyWf",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "1_Main_image.png"
+ }
+ ]
+ }
+ ]
+ },
{
"isClone": false,
"noteId": "vNMojjUN76jc",
@@ -437,7 +627,7 @@
"vNMojjUN76jc"
],
"title": "Database structure",
- "notePosition": 30,
+ "notePosition": 40,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -942,7 +1132,7 @@
"tM3rIZQzlum4"
],
"title": "Deleted notes",
- "notePosition": 40,
+ "notePosition": 50,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -976,7 +1166,7 @@
"oLhKpfi2kGON"
],
"title": "Demo document",
- "notePosition": 50,
+ "notePosition": 60,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1010,7 +1200,7 @@
"UzRirf46Xi46"
],
"title": "Hidden notes",
- "notePosition": 60,
+ "notePosition": 70,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1044,7 +1234,7 @@
"m2W35hwSDUeh"
],
"title": "Icons",
- "notePosition": 70,
+ "notePosition": 80,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1085,7 +1275,7 @@
"TLXJwBDo8Rdv"
],
"title": "Internationalisation / Translations",
- "notePosition": 80,
+ "notePosition": 90,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1220,7 +1410,7 @@
"Usiyzn9C4WFv"
],
"title": "Launchers",
- "notePosition": 90,
+ "notePosition": 100,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1247,7 +1437,7 @@
"qjQNyaYXSNWu"
],
"title": "Note Revisions",
- "notePosition": 100,
+ "notePosition": 110,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1281,7 +1471,7 @@
"7RBJMqVz2EsJ"
],
"title": "Note Types",
- "notePosition": 110,
+ "notePosition": 120,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1615,7 +1805,7 @@
"6dC7ha5vjqqS"
],
"title": "Options",
- "notePosition": 120,
+ "notePosition": 130,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1680,7 +1870,7 @@
"W0msUwLxm40d"
],
"title": "Printing and exporting to PDF",
- "notePosition": 130,
+ "notePosition": 140,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1721,7 +1911,7 @@
"UvXpeSqfYc6d"
],
"title": "Protected entities",
- "notePosition": 140,
+ "notePosition": 150,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1776,7 +1966,7 @@
"vphziLmQeQHY"
],
"title": "Share",
- "notePosition": 150,
+ "notePosition": 160,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1810,7 +2000,7 @@
"n9wYW9nUTynV"
],
"title": "Synchronisation",
- "notePosition": 160,
+ "notePosition": 170,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1874,7 +2064,7 @@
"k7RavjuXQt8z"
],
"title": "Syntax highlighting",
- "notePosition": 170,
+ "notePosition": 180,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1908,7 +2098,7 @@
"7BCukQTCm7fv"
],
"title": "Themes",
- "notePosition": 180,
+ "notePosition": 190,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -1943,7 +2133,7 @@
"YjerxU7Aii8X"
],
"title": "Troubleshooting",
- "notePosition": 330,
+ "notePosition": 340,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -2005,7 +2195,7 @@
"ibAPHul7Efvr"
],
"title": "Old documentation",
- "notePosition": 340,
+ "notePosition": 350,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -2023,33 +2213,6 @@
"attachments": [],
"dirFileName": "Old documentation",
"children": [
- {
- "isClone": false,
- "noteId": "PXzm2t3sCdsP",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "PXzm2t3sCdsP"
- ],
- "title": "Build deliveries locally",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "build-deliveries",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Build deliveries locally.md",
- "attachments": []
- },
{
"isClone": false,
"noteId": "rLWcPPQi7Eso",
@@ -2077,313 +2240,6 @@
"dataFileName": "Releasing a version.md",
"attachments": []
},
- {
- "isClone": false,
- "noteId": "czgXkoEYwclZ",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "czgXkoEYwclZ"
- ],
- "title": "Running a development build",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "dev-build",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Running a development build.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "sUqOpnrQyEC7",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7"
- ],
- "title": "Building and deployment",
- "notePosition": 40,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "building",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "attachments": [],
- "dirFileName": "Building and deployment",
- "children": [
- {
- "isClone": true,
- "noteId": "PXzm2t3sCdsP",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7",
- "PXzm2t3sCdsP"
- ],
- "title": "Build deliveries locally",
- "prefix": null,
- "dataFileName": "Build deliveries locally.clone.md",
- "type": "text",
- "format": "markdown",
- "isExpanded": false
- },
- {
- "isClone": false,
- "noteId": "zdQzavvHDl1k",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7",
- "zdQzavvHDl1k"
- ],
- "title": "Documentation",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "documentation",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Documentation.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "oqg9OpK8xfcm",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7",
- "oqg9OpK8xfcm"
- ],
- "title": "CI",
- "notePosition": 50,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "ci",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "attachments": [],
- "dirFileName": "CI",
- "children": [
- {
- "isClone": false,
- "noteId": "IxkDdjTogO18",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7",
- "oqg9OpK8xfcm",
- "IxkDdjTogO18"
- ],
- "title": "Main",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "PXzm2t3sCdsP",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "main",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Main.md",
- "attachments": [
- {
- "attachmentId": "c3aGEk60ZR2Q",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "Main_image.png"
- },
- {
- "attachmentId": "q9OGTAguCyWf",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "1_Main_image.png"
- }
- ]
- }
- ]
- },
- {
- "isClone": true,
- "noteId": "rLWcPPQi7Eso",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7",
- "rLWcPPQi7Eso"
- ],
- "title": "Releasing a version",
- "prefix": null,
- "dataFileName": "Releasing a version.clone.md",
- "type": "text",
- "format": "markdown",
- "isExpanded": false
- },
- {
- "isClone": true,
- "noteId": "czgXkoEYwclZ",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "sUqOpnrQyEC7",
- "czgXkoEYwclZ"
- ],
- "title": "Running a development build",
- "prefix": null,
- "dataFileName": "Running a development build.clone.md",
- "type": "text",
- "format": "markdown",
- "isExpanded": false
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "Kqzuchw6MmPm",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "Kqzuchw6MmPm"
- ],
- "title": "Dependency Management",
- "notePosition": 50,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-package",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "deps",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "attachments": [],
- "dirFileName": "Dependency Management",
- "children": [
- {
- "isClone": false,
- "noteId": "YH5JPX12BYFk",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "Kqzuchw6MmPm",
- "YH5JPX12BYFk"
- ],
- "title": "Adding a new client library",
- "notePosition": 0,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "new-client-library",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Adding a new client library.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "C5CNXGgti17i",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "Kqzuchw6MmPm",
- "C5CNXGgti17i"
- ],
- "title": "Having a simpler packaging system",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "packaging-system",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Having a simpler packaging sys.md",
- "attachments": []
- }
- ]
- },
{
"isClone": false,
"noteId": "6BWwXzPCph4G",
@@ -2482,64 +2338,6 @@
"format": "markdown",
"dataFileName": "bettersqlite binaries.md",
"attachments": []
- },
- {
- "isClone": false,
- "noteId": "v5zBZNLR358v",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "6BWwXzPCph4G",
- "fa6hAJ9Ith3A",
- "v5zBZNLR358v"
- ],
- "title": "Node.js, Electron and `better-sqlite3`",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "nodejs-electron-bettersqlite3",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Node.js, Electron and `better-.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "aPQ1fSuoBCTC",
- "notePath": [
- "jdjRLhLV3TtI",
- "ibAPHul7Efvr",
- "6BWwXzPCph4G",
- "fa6hAJ9Ith3A",
- "aPQ1fSuoBCTC"
- ],
- "title": "Testing compatibility",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "compatibility-matrix",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Testing compatibility.md",
- "attachments": []
}
]
}
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/1_Main_image.png b/docs/Developer Guide/Developer Guide/Architecture/CI/1_Main_image.png
similarity index 100%
rename from docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/1_Main_image.png
rename to docs/Developer Guide/Developer Guide/Architecture/CI/1_Main_image.png
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/Main.md b/docs/Developer Guide/Developer Guide/Architecture/CI/Main.md
similarity index 87%
rename from docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/Main.md
rename to docs/Developer Guide/Developer Guide/Architecture/CI/Main.md
index f7e96aa61..cae0613af 100644
--- a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/Main.md
+++ b/docs/Developer Guide/Developer Guide/Architecture/CI/Main.md
@@ -2,7 +2,7 @@
The main workflow of the CI:
* Builds the Docker image and publishes in the GitHub Docker registry.
-* Builds using a portion of the [delivery script](../../Build%20deliveries%20locally.md) artifacts for the following platforms:
+* Builds using a portion of the [delivery script](../../Building/Build%20deliveries%20locally.md) artifacts for the following platforms:
* Windows `x86_64` as .zip file
* Windows `x86_64` installer (using Squirrel)
* macOS `x86_64` and `aarch64`.
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/Main_image.png b/docs/Developer Guide/Developer Guide/Architecture/CI/Main_image.png
similarity index 100%
rename from docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/CI/Main_image.png
rename to docs/Developer Guide/Developer Guide/Architecture/CI/Main_image.png
diff --git a/docs/Developer Guide/Developer Guide/Architecture/Icons.md b/docs/Developer Guide/Developer Guide/Architecture/Icons.md
index 791e26f6c..826ebc9bb 100644
--- a/docs/Developer Guide/Developer Guide/Architecture/Icons.md
+++ b/docs/Developer Guide/Developer Guide/Architecture/Icons.md
@@ -21,7 +21,7 @@ These are stored in `images`:
## App icons
-
| Name | Resolution | Description |
|---|
ios/apple-touch-icon.png | 180x180 | Used as apple-touch-icon, but only in login.ejs and set_password.ejs for some reason. |
mac/icon.icns | 512x512 | Provided as --icon to electron-packager for mac-arm64 and mac-x64 builds. |
png/128x128.png | 128x128 | Used in linux-x64 build, to provide an icon.png. |
png/256x256-dev.png | 256x256 | Used by the Electron window icon, if in dev mode. |
png/256x256.png | Used by the Electron window icon, if not in dev mode. |
win/icon.ico | - ICO 16x16
- ICO 32x32
- ICO 48x48
- ICO 64x64
- ICO 128x128
- PNG 256x256
| - Used by the
win-x64 build. - Used by Squirrel Windows installer for: setup icon, app icon, control panel icon
- Used as the favicon.
|
win/setup-banner.gif | 640x480 | Used by the Squirrel Windows installer during the installation process. Has only one frame. |
+| Name | Resolution | Description |
|---|
ios/apple-touch-icon.png | 180x180 | Used as apple-touch-icon, but only in login.ejs and set_password.ejs for some reason. |
mac/icon.icns | 512x512 | Provided as --icon to electron-packager for mac-arm64 and mac-x64 builds. |
png/128x128.png | 128x128 | Used in linux-x64 build, to provide an icon.png. |
png/256x256-dev.png | 256x256 | Used by the Electron window icon, if in dev mode. |
png/256x256.png | Used by the Electron window icon, if not in dev mode. |
win/icon.ico | - ICO 16x16
- ICO 32x32
- ICO 48x48
- ICO 64x64
- ICO 128x128
- PNG 256x256
| - Used by the
win-x64 build. - Used by Squirrel Windows installer for: setup icon, app icon, control panel icon
- Used as the favicon.
|
win/setup-banner.gif | 640x480 | Used by the Squirrel Windows installer during the installation process. Has only one frame. |
## Additional locations where the branding is used
diff --git a/docs/Developer Guide/Developer Guide/Building/Build deliveries locally.md b/docs/Developer Guide/Developer Guide/Building/Build deliveries locally.md
new file mode 100644
index 000000000..3c78ae4aa
--- /dev/null
+++ b/docs/Developer Guide/Developer Guide/Building/Build deliveries locally.md
@@ -0,0 +1,34 @@
+# Build deliveries locally
+## Building the desktop
+
+Go to `apps/desktop`, and:
+
+* To generate the packages, run `pnpm electron-forge:make`.
+* To only build the Flatpak, run `pnpm electron-forge:make-flatpak`.
+* To only build without packaging it, run `pnpm electron-forge:package`.
+
+## Building the server
+
+Go to `apps/server` and run `pnpm package` to run the build script. The built artifacts will appear in `apps/server/dist`, whereas the packaged build will be available in `apps/server/out`.
+
+## On NixOS
+
+Under NixOS the following `nix-shell` is needed:
+
+```
+nix-shell -p jq
+```
+
+For Linux builds:
+
+```
+nix-shell -p jq fakeroot dpkg
+```
+
+To test the Linux builds, use `steam-run`:
+
+```javascript
+$ NIXPKGS_ALLOW_UNFREE=1 nix-shell -p steam-run
+[nix-shell] cd dist/trilium-linux-x64
+[nix-shell] steam-run ./trilium
+```
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Building/Documentation.md b/docs/Developer Guide/Developer Guide/Building/Documentation.md
new file mode 100644
index 000000000..bd3124b55
--- /dev/null
+++ b/docs/Developer Guide/Developer Guide/Building/Documentation.md
@@ -0,0 +1,17 @@
+# Documentation
+## Automation
+
+The documentation is built via `apps/build-docs`:
+
+1. The output directory is cleared.
+2. The User Guide and the Developer Guide are built.
+ 1. The documentation from the repo is archived and imported into an in-memory instance.
+ 2. The documentation is exported using the shared theme.
+3. The API docs (internal and ETAPI) are statically rendered via Redocly.
+4. The script API is generated via `typedoc`
+
+The `deploy-docs` workflow triggers the documentation build and uploads it to CloudFlare Pages.
+
+## Building locally
+
+In the Git root, run `pnpm docs:build`. The built documentation will be available in `site` at Git root.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Building/Running a development build.md b/docs/Developer Guide/Developer Guide/Building/Running a development build.md
new file mode 100644
index 000000000..c69e19d50
--- /dev/null
+++ b/docs/Developer Guide/Developer Guide/Building/Running a development build.md
@@ -0,0 +1,33 @@
+# Running a development build
+First, follow the Environment Setup.
+
+## Client
+
+The client is not meant to be run by itself, despite being described as an app. See the documentation on the server instead.
+
+## Server
+
+* To run the server in development mode, run `server:start`. The dev port is `8080`.
+* To run the server in production mode (with its own copy of the assets), run `server:start-prod`.
+* To build for Docker, see Docker.
+
+To run with a custom port, change the `TRILIUM_PORT` environment variable from the `package.json`.
+
+## Desktop
+
+* To run in development mode, use `pnpm desktop:start`.
+* To run in production mode, use `pnpm desktop:start-prod`.
+
+## Safe mode
+
+Safe mode is off by default, to enable it temporarily on a Unix shell, prepend the environment variable setting:
+
+```
+pnpm cross-env TRILIUM_SAFE_MODE=1 pnpm server:start
+```
+
+## Running on NixOS
+
+When doing development, the Electron binary retrieved from NPM is not going to be compatible with NixOS, resulting in errors when trying to run it. However Trilium handles it automatically when running `pnpm desktop:start`.
+
+If there's no `electron` the system path it will attempt to use `nix-shell` to obtain it.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Build deliveries locally.md b/docs/Developer Guide/Developer Guide/Old documentation/Build deliveries locally.md
deleted file mode 100644
index 31a6ee0e2..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Build deliveries locally.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Build deliveries locally
-In the project root:
-
-| Platform | Architecture | Application | Build command |
-| --- | --- | --- | --- |
-| macOS | x86\_64 | Desktop / Electron app | `./bin/build-mac-x64.sh` |
-| ARM 64 | Desktop / Electron app | `./bin/build-mac-arm64.sh` | |
-| Linux | x86\_64 | Desktop / Electron app | `./bin/build-linux-x64.sh` |
-| Server | `./bin/build-server.sh` | | |
-| Windows | x86\_64 | Desktop / Electron app | `./bin/build-win-x64.sh` |
-
-Under NixOS the following `nix-shell` is needed:
-
-```
-nix-shell -p jq
-```
-
-For Linux builds:
-
-```
-nix-shell -p jq fakeroot dpkg
-```
-
-The resulting build will be in the `dist` directory under the project root.
-
-### Testing the Linux builds under NixOS
-
-| Desktop client | Server |
|---|
$ NIXPKGS_ALLOW_UNFREE=1 nix-shell -p steam-run
-[nix-shell] cd dist/trilium-linux-x64
-[nix-shell] steam-run ./trilium
| $ NIXPKGS_ALLOW_UNFREE=1 nix-shell -p steam-run
-[nix-shell] cd dist/trilium-linux-x64-server
-[nix-shell] steam-run ./trilium.sh
|
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Build deliveries locally.clone.md b/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Build deliveries locally.clone.md
deleted file mode 100644
index 3ee7c825b..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Build deliveries locally.clone.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Build deliveries locally
-This is a clone of a note. Go to its [primary location](../Build%20deliveries%20locally.md).
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Documentation.md b/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Documentation.md
deleted file mode 100644
index 672b64f7c..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Documentation.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Documentation
-Development notes are published on [triliumnext.github.io/Notes](https://triliumnext.github.io/Notes) by the CI using GitHub Pages.
-
-The GitHub Pages deployment works by taking the files from the Notes repository, in the `docs` directory.
-
-## How it works
-
-There is a script that uses `wget` to download all the files from a share, that means:
-
-1. You must have a local instance of Trilium Notes server.
-2. You must have the documentation imported, up to date and shared.
-
-Note that currently the documentation source file is not distributed (the note export), until a way is found to automate this process. Contact `eliandoran` should you require to obtain a copy of the documentation.
-
-## Setting up `.env` file
-
-Go to `bin/docs` and copy `.env.example` to `.env` and edit it:
-
-1. Change the `SHARE_PROTOCOL` to either `http` or `https` depending on your setup.
-2. Change `SHARE_HOST` to match the domain name or the URL to the host (without the protocol or any slashes).
-
-Generally `ROOT_NOTE_ID` should not be changed since the note ID must match if the files were imported correctly.
-
-## Triggering a build
-
-Run:
-
-```
-./bin/docs/prepare.sh
-```
-
-This will attempt to download all the notes from the share URL and put them in `docs`, rewritten for GitHub Pages.
-
-Commit the results and follow the normal development process to push them.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Releasing a version.clone.md b/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Releasing a version.clone.md
deleted file mode 100644
index 3e2019da0..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Releasing a version.clone.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Releasing a version
-This is a clone of a note. Go to its [primary location](../Releasing%20a%20version.md).
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Running a development build.clone.md b/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Running a development build.clone.md
deleted file mode 100644
index d56a46aea..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Building and deployment/Running a development build.clone.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# Running a development build
-This is a clone of a note. Go to its [primary location](../Running%20a%20development%20build.md).
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Dependency Management/Adding a new client library.md b/docs/Developer Guide/Developer Guide/Old documentation/Dependency Management/Adding a new client library.md
deleted file mode 100644
index 64ffcf528..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Dependency Management/Adding a new client library.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# Adding a new client library
-In the past some libraries have been copy-pasted (and adapted if needed) to the repository. However, new libraries must be obtained exclusively through npm.
-
-The first step is to install the desired library. As an example we are going to install `i18next`:
-
-```
-npm i i18next
-```
-
-### Step 1. Understanding the structure of the import
-
-After installing the dependency, it's important to know how it's structured. You can do this by looking at the directory structure of the newly imported dependency:
-
-```
-$ tree node_modules/i18next
-node_modules/i18next
-├── dist
-│ ├── cjs
-│ │ └── i18next.js
-│ ├── esm
-│ │ ├── i18next.bundled.js
-│ │ ├── i18next.js
-│ │ └── package.json
-│ └── umd
-│ ├── i18next.js
-│ └── i18next.min.js
-├── i18next.js
-├── i18next.min.js
-├── index.d.mts
-├── index.d.ts
-├── index.js
-├── index.v4.d.ts
-├── LICENSE
-├── package.json
-├── README.md
-└── typescript
- ├── helpers.d.ts
- ├── options.d.ts
- ├── t.d.ts
- └── t.v4.d.ts
-```
-
-Generally you should be looking for a `.min.js` file. Note that the `esm` and `cjs` variants generally don't work, we are looking for the classic, no module dependency.
-
-### Step 2. Exposing the library from the server
-
-The library must be delivered by the server and this is done via `src/routes/assets.ts`. In the `register` function, add a new entry near the bottom of the function:
-
-```javascript
-app.use(`/${assetPath}/node_modules/i18next/`, persistentCacheStatic(path.join(srcRoot, "..", 'node_modules/i18next/')));
-```
-
-### Step 3. Adding it to the library loader
-
-The library loader is a client module which is in charge of downloading the library from the server and importing it. The loader is located in `src/public/app/services/library_loader.js`.
-
-To add a new library, start by creating a constant for it, with the value pointing to the minified JS identified at the first step:
-
-```javascript
-const I18NEXT = {
- js: [
- "node_modules/i18next/i18next.min.js"
- ]
-};
-```
-
-Then add it to the `export default` section:
-
-```diff
- export default {
- requireCss,
- requireLibrary,
- CKEDITOR,
- CODE_MIRROR,
- ESLINT,
- RELATION_MAP,
- PRINT_THIS,
- CALENDAR_WIDGET,
- KATEX,
- WHEEL_ZOOM,
- FORCE_GRAPH,
- MERMAID,
- EXCALIDRAW,
-- MARKJS
-+ MARKJS,
-+ I18NEXT
- }
-```
-
-### Step 4. Using the library
-
-To import the library, simply use the following mechanism:
-
-```diff
-import library_loader from "./library_loader.js";
-
-await library_loader.requireLibrary(library_loader.I18NEXT);
-```
-
-Make sure to replace `I18NEXT` with the library that was created at the previous steps.
-
-Note that because we are not using a module management mechanism such as ES Modules or Common.js modules, the `requireLibrary` method does not actually return anything.
-
-To benefit from the library, it must export on its own an object in `window`.
-
-In the case of `i18next`, it sets `window.i18next` and that can be used directly:
-
-```diff
-i18next.init({});
-```
-
-### Step 5. Adding Electron support
-
-For Electron, the `node_modules` are copied as a separate step by `bin/copy-dist.ts`.
-
-Scroll all the way down to the `nodeModulesFolder` and append an entry for the newly added libraries.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Dependency Management/Having a simpler packaging sys.md b/docs/Developer Guide/Developer Guide/Old documentation/Dependency Management/Having a simpler packaging sys.md
deleted file mode 100644
index 05271e390..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Dependency Management/Having a simpler packaging sys.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Having a simpler packaging system
-The current build scripts are a bit complicated and maintaining them is not easy.
-
-[Electron Forge](https://www.electronforge.io/) seems more mature and has a boatload of features, including Flatpak, snaps, Windows installers & more.
-
-Have a look also at the [Plugins](https://www.electronforge.io/config/plugins) section since there are quite a few interesting things there as well.
-
-Afterwards consider running a new round of Reducing binary size, especially taking into consideration removing of the unnecessary locales.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/Node.js, Electron and `better-.md b/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/Node.js, Electron and `better-.md
deleted file mode 100644
index 93b94ab72..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/Node.js, Electron and `better-.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Node.js, Electron and `better-sqlite3`
-## Node.js, Electron and `better-sqlite3`
-
-`better-sqlite3` requires a native module in order to work. In order to ease the installation process, prebuilt binaries are provided by the library developers.
-
-Trilium Next started with version [8.4.0](https://github.com/WiseLibs/better-sqlite3/releases/tag/v8.4.0) for `better-sqlite3`
-
-| | | | |
-| --- | --- | --- | --- |
-| `better-sqlite3` version | SQLite version | Node.js prebuilds | Electron.js prebuilds |
-| 8.4.0 | <3.43.0 | v20 | ??? |
-| 8.5.0 | v20 | v25 | |
-| 8.5.1 | | v26 | |
-| 8.5.2 | v20 (macOS + arm64) | | |
-| 8.6.0 | 3.43.0 | | |
-| 8.7.0 | 3.43.1 | | |
-| 9.0.0 | 3.43.2 | | v27 |
-| 9.1.0 | 3.44.0 | | |
-| 9.1.1 | macOS + Alpine | | |
-| 9.2.0 | 3.44.2 | | |
-| 9.2.1 / 9.2.2 | | v28 | |
-| 9.3.0 | 3.45.0 | | |
-| 9.4.0 | 3.45.1 | | |
-| 9.4.1 | Windows arm, arm64 | | |
-| 9.4.2 | | 21 | | |
-| 11.1.0 (prerelease) | | | v31 |
-| 11.1.1 | | | |
-| 11.1.2 | | | |
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/Testing compatibility.md b/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/Testing compatibility.md
deleted file mode 100644
index 381326055..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/Testing compatibility.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Testing compatibility
-| `better-sqlite3` version
[Change log](https://github.com/WiseLibs/better-sqlite3/releases) | SQLite version
[Change log](https://www.sqlite.org/changes.html) | Compatibility with upstream Trilium |
-| --- | --- | --- |
-| 8.4.0 | <3.43.0 | Compatible, same version. |
-| 8.6.0 | 3.43.0 | |
-| 8.7.0 | 3.43.1 | |
-| 9.0.0 | 3.43.2 | |
-| 9.1.0 + 9.1.1 | 3.44.0 | |
-| 9.2.0 + 9.2.1 + 9.2.2 | 3.44.2 | |
-| 9.3.0 | 3.45.0 | |
-| 9.4.0, 9.4.1, 9.4.2, 9.4.3, 9.4.4, 9.4.5 | 3.45.1 | |
-| 9.5.0 | 3.45.2 | |
-| 9.6.0 / 10.0.0 | 3.45.3 | |
-| 10.1.0 / 11.0.0 / 11.1.1 / 11.1.2 / 11.2.0 / 11.2.1 | 3.46.0 | |
-| 11.3.0 | 3.46.1 | |
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/bettersqlite binaries.md b/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/bettersqlite binaries.md
index 12fdd7e70..5538646ca 100644
--- a/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/bettersqlite binaries.md
+++ b/docs/Developer Guide/Developer Guide/Old documentation/Project maintenance/Updating dependencies/bettersqlite binaries.md
@@ -20,7 +20,7 @@ the module (for instance, using `npm rebuild` or `npm install`).
Locally, this can be fixed by rebuilding the binaries, which is what `npm run switch-electron` does, which uses `electron-rebuild` under the hood.
-When the deliveries are built (see Build deliveries locally), it is not feasible to rebuild the dependencies since we are building for multiple platforms. Luckily, `better-sqlite3` provides these prebuilt binaries from us, available as artifacts on [their GitHub releases page](https://github.com/WiseLibs/better-sqlite3/releases/).
+When the deliveries are built (see Build deliveries locally), it is not feasible to rebuild the dependencies since we are building for multiple platforms. Luckily, `better-sqlite3` provides these prebuilt binaries from us, available as artifacts on [their GitHub releases page](https://github.com/WiseLibs/better-sqlite3/releases/).
The build script manages the natives for `better-sqlite3` by keeping a copy of the `.node` file for every platform in `bin/better-sqlite3`.
@@ -35,7 +35,7 @@ If you get errors during download, check on the [releases page](https://github.c
To determine the `NODE_MODULE_VERSION` that is required, look for `This version of Node.js requires`
`NODE_MODULE_VERSION` in the error when starting Trilium via:
-* `npm run start-electron` (or run any Electron [delivery](../../Build%20deliveries%20locally.md)), case in which the `ELECTRON_VERSION` variable needs to be changed.
+* `npm run start-electron` (or run any Electron [delivery](../../../Building/Build%20deliveries%20locally.md)), case in which the `ELECTRON_VERSION` variable needs to be changed.
* `npm run start-server` (or run the Linux server delivery), case in which the `NODE_VERSION` variable needs to be changed.
-Check which files got changed after running the update script and for each platform that got changed, test it locally via Build deliveries locally or via the CI.
\ No newline at end of file
+Check which files got changed after running the update script and for each platform that got changed, test it locally via Build deliveries locally or via the CI.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Releasing a version.md b/docs/Developer Guide/Developer Guide/Old documentation/Releasing a version.md
index 63b75ddec..ed3706f7e 100644
--- a/docs/Developer Guide/Developer Guide/Old documentation/Releasing a version.md
+++ b/docs/Developer Guide/Developer Guide/Old documentation/Releasing a version.md
@@ -17,6 +17,6 @@ If a version ends with `-beta`, it will automatically be marked as pre-release i
This will automatically generate a release in GitHub if everything goes according to plan.
-Note that the Windows installer is not automatically uploaded yet, it has to be taken from the [main workflow of the CI from the `develop` branch](Building%20and%20deployment/CI/Main.md).
+Note that the Windows installer is not automatically uploaded yet, it has to be taken from the [main workflow of the CI from the `develop` branch](../Architecture/CI/Main.md).
Make sure to check test the artifacts of the release.
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Old documentation/Running a development build.md b/docs/Developer Guide/Developer Guide/Old documentation/Running a development build.md
deleted file mode 100644
index 539dc3d03..000000000
--- a/docs/Developer Guide/Developer Guide/Old documentation/Running a development build.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Running a development build
-As always, install the dependencies for the first time (and re-run whenever there are errors about missing dependencies):
-
-```
-npm install
-```
-
-## Run server
-
-Run with default settings:
-
-```
-npm run start-server
-```
-
-Run with custom port:
-
-```
-TRILIUM_PORT=8082 npm run start-server
-```
-
-## Run Electron
-
-Rebuild `better-sqlite3` dependency:
-
-```
-npm run switch-electron
-```
-
-Then run Electron:
-
-```
-npm run start-electron
-```
-
-To run Electron using the same data directory as the production version:
-
-```
-npm run start-electron-no-dir
-```
-
-When done, switch back the `better-sqlite3` dependency:
-
-```
-npm run switch-server
-```
-
-## Quick switch
-
-To start Electron without running `switch-electron` first:
-
-```
-npm run qstart-electron
-```
-
-Similarly, to start the server without running `switch-server` first:
-
-```
-npm run qstart-server
-```
-
-## Safe mode
-
-Safe mode is off by default, to enable it temporarily on a Unix shell, prepend the environment variable setting:
-
-```
-TRILIUM_SAFE_MODE=1 npm run start-server
-```
-
-To have the same behaviour on Windows, we would need to alter `package.json`:
-
-```diff
--"start-electron": "npm run prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron-main.js --inspect=5858 .",
-+"start-electron": "npm run prepare-dist && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron-main.js --inspect=5858 .",
-```
-
-## Running on NixOS
-
-When doing development, the Electron binary retrieved from NPM is not going to be compatible with NixOS, resulting in errors when trying to run it. To bypass this, there is a special command to run electron using `nix-shell`:
-
-```
-npm run start-electron-nix
-```
-
-Similarly to the original command, to use the same data directory as the production version:
-
-```
-npm run start-electron-no-dir-nix
-```
\ No newline at end of file
diff --git a/docs/Developer Guide/Developer Guide/Project Structure.md b/docs/Developer Guide/Developer Guide/Project Structure.md
index 465f1a572..82688cf2a 100644
--- a/docs/Developer Guide/Developer Guide/Project Structure.md
+++ b/docs/Developer Guide/Developer Guide/Project Structure.md
@@ -20,25 +20,9 @@ For example to run the server instance:
pnpm server:start
```
-## Important tasks
+## Running and building
-Each application has a number of tasks. Here's a non-exhaustive list of the tasks that are useful during development.
-
-To run any of the tasks, use `pnpm project:task`:
-
-* `client`:
- * The client is not meant to be run by itself, despite being described as an app. See the documentation on the server instead.
-* `server`:
- * To run the server in development mode, run `server:start`. The dev port is `8080`.
- * To run the server in production mode (with its own copy of the assets), run `server:start-prod`.
- * To build for Docker, see Docker.
-* `desktop`:
- * To run the desktop in development mode with watch, run `desktop:start`.
- * To run the desktop in production mode, run `desktop:start-prod`.
-
-## Building packages
-
-Generally, the building process of a project generates a `dist` folder containing everything needed for production.
+Each application has a number of tasks. Here's a non-exhaustive list of the tasks that are useful during development. See Building.
## Managing dependencies across the mono-repo